gameplay: compose filter removal and file effects
Browse files- crates/urt-gameplay/src/bin/urt-filter-policy.rs +37 -15
- crates/urt-gameplay/src/filter_lifecycle.rs +116 -0
- docs/FINDINGS.md +2 -0
- docs/PROVISIONAL_TODO.md +5 -1
- docs/RESEARCH_LEDGER.md +6 -0
- docs/REVERSE_ENGINEERING_TODO.md +5 -1
- docs/TESTING.md +2 -0
- docs/research/QVM_BOT_ANNOUNCEMENT_FILTER_BATCH.md +3 -1
- docs/research/QVM_FILTER_PERSISTENCE_BATCH.md +39 -0
- docs/research/README.md +4 -0
- docs/research/RUST_FILTER_REMOVE_EXPORT.md +5 -0
- docs/research/rust-filter-remove-export.json +1583 -0
- docs/research/rust-health-impulse.json +1 -1
- scripts/analyze_rust_filter_remove_export.py +18 -0
- scripts/test_rust_filter_remove_export.py +9 -0
- xtask/checks.tsv +19 -0
- xtask/src/lib.rs +18 -0
crates/urt-gameplay/src/bin/urt-filter-policy.rs
CHANGED
|
@@ -4,21 +4,38 @@ fn hex(s: &[u8]) -> String {
|
|
| 4 |
s.iter().map(|v| format!("{v:02x}")).collect()
|
| 5 |
}
|
| 6 |
fn export_json(p: Option<FilterExport>) -> String {
|
| 7 |
-
|
| 8 |
-
|
| 9 |
-
|
| 10 |
-
|
| 11 |
-
|
| 12 |
-
|
| 13 |
-
|
| 14 |
-
|
| 15 |
-
|
| 16 |
-
|
| 17 |
-
|
| 18 |
-
|
| 19 |
-
|
| 20 |
-
|
| 21 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 22 |
}
|
| 23 |
fn rows(w: &[u32]) -> Vec<FilterRecord> {
|
| 24 |
w.chunks_exact(3)
|
|
@@ -84,6 +101,11 @@ fn main() {
|
|
| 84 |
assert_eq!(w.len(), 5 + l + 3 * n);
|
| 85 |
let mut records = rows(&w[5 + l..]);
|
| 86 |
match kind.as_str() {
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 87 |
"metadata" => {
|
| 88 |
let p = update_filter_metadata(&mut records, &text, w[1], w[2] as i32).unwrap();
|
| 89 |
println!("{}", mutation_json(p, &records, vec![]));
|
|
|
|
| 4 |
s.iter().map(|v| format!("{v:02x}")).collect()
|
| 5 |
}
|
| 6 |
fn export_json(p: Option<FilterExport>) -> String {
|
| 7 |
+
let Some(p) = p else {
|
| 8 |
+
return "{\"events\":[],\"formats\":[],\"buffer\":\"7374616c65\"}".into();
|
| 9 |
+
};
|
| 10 |
+
let events = p
|
| 11 |
+
.effects()
|
| 12 |
+
.iter()
|
| 13 |
+
.map(|e| match e {
|
| 14 |
+
FilterFileEffect::Print(t) => format!(r#"{{"op":"print","text":"{}"}}"#, hex(t)),
|
| 15 |
+
FilterFileEffect::Open { path, mode } => {
|
| 16 |
+
format!(r#"{{"op":"open","path":"{}","mode":{}}}"#, hex(path), mode)
|
| 17 |
+
}
|
| 18 |
+
FilterFileEffect::Write { handle, bytes } => format!(
|
| 19 |
+
r#"{{"op":"write","handle":{},"text":"{}"}}"#,
|
| 20 |
+
handle,
|
| 21 |
+
hex(bytes)
|
| 22 |
+
),
|
| 23 |
+
FilterFileEffect::Close(handle) => format!(r#"{{"op":"close","handle":{}}}"#, handle),
|
| 24 |
+
})
|
| 25 |
+
.collect::<Vec<_>>()
|
| 26 |
+
.join(",");
|
| 27 |
+
let lines = p
|
| 28 |
+
.lines
|
| 29 |
+
.iter()
|
| 30 |
+
.map(|l| format!("\"{}\"", hex(l)))
|
| 31 |
+
.collect::<Vec<_>>()
|
| 32 |
+
.join(",");
|
| 33 |
+
format!(
|
| 34 |
+
r#"{{"events":[{}],"formats":[{}],"buffer":"{}"}}"#,
|
| 35 |
+
events,
|
| 36 |
+
lines,
|
| 37 |
+
hex(&p.text)
|
| 38 |
+
)
|
| 39 |
}
|
| 40 |
fn rows(w: &[u32]) -> Vec<FilterRecord> {
|
| 41 |
w.chunks_exact(3)
|
|
|
|
| 101 |
assert_eq!(w.len(), 5 + l + 3 * n);
|
| 102 |
let mut records = rows(&w[5 + l..]);
|
| 103 |
match kind.as_str() {
|
| 104 |
+
"remove-export" => {
|
| 105 |
+
let p = remove_filter_export(&mut records, &text, w[3]).unwrap();
|
| 106 |
+
let exported = p.export.map(|p| export_json(Some(p))).into_iter().collect();
|
| 107 |
+
println!("{}", mutation_json(p.mutation, &records, exported));
|
| 108 |
+
}
|
| 109 |
"metadata" => {
|
| 110 |
let p = update_filter_metadata(&mut records, &text, w[1], w[2] as i32).unwrap();
|
| 111 |
println!("{}", mutation_json(p, &records, vec![]));
|
crates/urt-gameplay/src/filter_lifecycle.rs
CHANGED
|
@@ -290,3 +290,119 @@ mod insertion_export_tests {
|
|
| 290 |
assert_eq!(rows, vec![row; 4096]);
|
| 291 |
}
|
| 292 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 290 |
assert_eq!(rows, vec![row; 4096]);
|
| 291 |
}
|
| 292 |
}
|
| 293 |
+
|
| 294 |
+
/// Ordered native-boundary effects of original252500. The open reply is supplied
|
| 295 |
+
/// when constructing the plan; write/close deliberately retain that raw handle.
|
| 296 |
+
#[derive(Clone, Debug, PartialEq, Eq)]
|
| 297 |
+
pub enum FilterFileEffect {
|
| 298 |
+
Print(Vec<u8>),
|
| 299 |
+
Open { path: &'static [u8], mode: i32 },
|
| 300 |
+
Write { handle: u32, bytes: Vec<u8> },
|
| 301 |
+
Close(u32),
|
| 302 |
+
}
|
| 303 |
+
impl FilterExport {
|
| 304 |
+
pub fn effects(&self) -> [FilterFileEffect; 4] {
|
| 305 |
+
[
|
| 306 |
+
FilterFileEffect::Print(b"Writing: banlist.txt\n".to_vec()),
|
| 307 |
+
FilterFileEffect::Open {
|
| 308 |
+
path: b"banlist.txt",
|
| 309 |
+
mode: 1,
|
| 310 |
+
},
|
| 311 |
+
FilterFileEffect::Write {
|
| 312 |
+
handle: self.handle,
|
| 313 |
+
bytes: self.text.clone(),
|
| 314 |
+
},
|
| 315 |
+
FilterFileEffect::Close(self.handle),
|
| 316 |
+
]
|
| 317 |
+
}
|
| 318 |
+
}
|
| 319 |
+
#[derive(Clone, Debug, PartialEq, Eq)]
|
| 320 |
+
pub struct PersistedMutation {
|
| 321 |
+
pub mutation: FilterMutation,
|
| 322 |
+
pub export: Option<FilterExport>,
|
| 323 |
+
}
|
| 324 |
+
/// Compose253296 with252500. Failed lookup/parse skips export; successful
|
| 325 |
+
/// first-match removal retains count and exports all surviving comparison words.
|
| 326 |
+
pub fn remove_filter_export(
|
| 327 |
+
records: &mut [FilterRecord],
|
| 328 |
+
text: &[u8],
|
| 329 |
+
handle: u32,
|
| 330 |
+
) -> Result<PersistedMutation, Error> {
|
| 331 |
+
let mut staged = records.to_vec();
|
| 332 |
+
let mutation = remove_filter(&mut staged, text)?;
|
| 333 |
+
let export = if mutation.export {
|
| 334 |
+
export_filters(&staged, handle)?
|
| 335 |
+
} else {
|
| 336 |
+
None
|
| 337 |
+
};
|
| 338 |
+
records.copy_from_slice(&staged);
|
| 339 |
+
Ok(PersistedMutation { mutation, export })
|
| 340 |
+
}
|
| 341 |
+
#[cfg(test)]
|
| 342 |
+
mod removal_export_tests {
|
| 343 |
+
use super::*;
|
| 344 |
+
#[test]
|
| 345 |
+
fn sole_removal_still_prints_opens_writes_and_closes_zero_handle() {
|
| 346 |
+
let mut rows = [FilterRecord {
|
| 347 |
+
mask: u32::MAX,
|
| 348 |
+
comparison: 0x04030201,
|
| 349 |
+
metadata: 9,
|
| 350 |
+
}];
|
| 351 |
+
let p = remove_filter_export(&mut rows, b"1.2.3.4", 0).unwrap();
|
| 352 |
+
assert!(p.mutation.result);
|
| 353 |
+
let export = p.export.unwrap();
|
| 354 |
+
assert_eq!(export.text, b"");
|
| 355 |
+
assert_eq!(
|
| 356 |
+
export.effects(),
|
| 357 |
+
[
|
| 358 |
+
FilterFileEffect::Print(b"Writing: banlist.txt\n".to_vec()),
|
| 359 |
+
FilterFileEffect::Open {
|
| 360 |
+
path: b"banlist.txt",
|
| 361 |
+
mode: 1
|
| 362 |
+
},
|
| 363 |
+
FilterFileEffect::Write {
|
| 364 |
+
handle: 0,
|
| 365 |
+
bytes: vec![]
|
| 366 |
+
},
|
| 367 |
+
FilterFileEffect::Close(0)
|
| 368 |
+
]
|
| 369 |
+
);
|
| 370 |
+
}
|
| 371 |
+
#[test]
|
| 372 |
+
fn duplicate_survivor_is_exported_with_its_own_metadata() {
|
| 373 |
+
let row = FilterRecord {
|
| 374 |
+
mask: u32::MAX,
|
| 375 |
+
comparison: 0x04030201,
|
| 376 |
+
metadata: 9,
|
| 377 |
+
};
|
| 378 |
+
let mut rows = [
|
| 379 |
+
row,
|
| 380 |
+
FilterRecord {
|
| 381 |
+
metadata: 10,
|
| 382 |
+
..row
|
| 383 |
+
},
|
| 384 |
+
];
|
| 385 |
+
let p = remove_filter_export(&mut rows, b"1.2.3.4", u32::MAX).unwrap();
|
| 386 |
+
assert_eq!(p.export.unwrap().text, b"1.2.3.4:10\n");
|
| 387 |
+
assert_eq!(rows[0].metadata, 9);
|
| 388 |
+
assert_eq!(rows.len(), 2);
|
| 389 |
+
}
|
| 390 |
+
#[test]
|
| 391 |
+
fn misses_skip_io_and_unsupported_domains_are_atomic() {
|
| 392 |
+
let row = FilterRecord {
|
| 393 |
+
mask: u32::MAX,
|
| 394 |
+
comparison: 0x04030201,
|
| 395 |
+
metadata: 9,
|
| 396 |
+
};
|
| 397 |
+
let mut rows = [row];
|
| 398 |
+
assert!(
|
| 399 |
+
remove_filter_export(&mut rows, b"2.3.4.5", 7)
|
| 400 |
+
.unwrap()
|
| 401 |
+
.export
|
| 402 |
+
.is_none()
|
| 403 |
+
);
|
| 404 |
+
assert_eq!(rows, [row]);
|
| 405 |
+
assert!(remove_filter_export(&mut rows, &[b'1'; 128], 7).is_err());
|
| 406 |
+
assert_eq!(rows, [row]);
|
| 407 |
+
}
|
| 408 |
+
}
|
docs/FINDINGS.md
CHANGED
|
@@ -1817,3 +1817,5 @@ RE-940: Twenty-four original252829/252304/252500 compositions verify table check
|
|
| 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).
|
| 1818 |
|
| 1819 |
RE-942: Thirty original253296/252304/252500 compositions verify first-match removal, retained row metadata/masks/count, diagnostics and exact survivor export bytes. A sole removed record leaves a nonzero count and therefore causes an empty file write. Duplicate survivors remain serialized in original order. Parse failures and misses never invoke export. Native console/file operations are captured; actual filesystem errors and reload semantics remain open. [Evidence](research/QVM_FILTER_REMOVE_EXPORT.md).
|
|
|
|
|
|
|
|
|
| 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).
|
| 1818 |
|
| 1819 |
RE-942: Thirty original253296/252304/252500 compositions verify first-match removal, retained row metadata/masks/count, diagnostics and exact survivor export bytes. A sole removed record leaves a nonzero count and therefore causes an empty file write. Duplicate survivors remain serialized in original order. Parse failures and misses never invoke export. Native console/file operations are captured; actual filesystem errors and reload semantics remain open. [Evidence](research/QVM_FILTER_REMOVE_EXPORT.md).
|
| 1820 |
+
|
| 1821 |
+
RE-943: Rust matches30 original removal/export compositions, retaining first-match mutation, duplicate survivor order, unchanged count and metadata, diagnostics, sentinel omission and empty writes after sole removal. A typed four-effect sequence exposes print/open/write/close in source order and retains raw supplied handles. Unit tests cover zero handles, duplicate survivor bytes, misses without IO and atomic unsupported-domain rejection. Native execution, reload and time/expiry semantics remain open. [Evidence](research/RUST_FILTER_REMOVE_EXPORT.md).
|
docs/PROVISIONAL_TODO.md
CHANGED
|
@@ -1844,7 +1844,7 @@ RE-932: 132 actual252829/252304/37159 cases recover first-hole reuse, append/cou
|
|
| 1844 |
RE-933: Rust matches132 original252829/252304 table cases including4096-capacity scans, first-hole reuse, wildcard/numeric masks and comparison-1 sentinel behavior. Parser failure retains count growth and requests optional export, matching the source. Typed malformed counts/token-overflow domains reject atomically. Export body252500, live table writers and native network acceptance remain open. Full runtime completion remains open. [Evidence](research/RUST_FILTER_INSERT.md).
|
| 1845 |
|
| 1846 |
|
| 1847 |
-
RE-924–933 completed bounded bot settings, announcement, connect-child composition and filter insertion contracts.
|
| 1848 |
|
| 1849 |
- [x] RE-934 Original filter export and native file-operation order ([evidence](research/QVM_FILTER_EXPORT.md)).
|
| 1850 |
|
|
@@ -1863,3 +1863,7 @@ RE-924–933 completed bounded bot settings, announcement, connect-child composi
|
|
| 1863 |
- [x] RE-941 Rust insertion with recovered export composition ([evidence](research/RUST_FILTER_INSERT_EXPORT.md)).
|
| 1864 |
|
| 1865 |
- [x] RE-942 Original removal composed with export and survivor serialization ([evidence](research/QVM_FILTER_REMOVE_EXPORT.md)).
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1844 |
RE-933: Rust matches132 original252829/252304 table cases including4096-capacity scans, first-hole reuse, wildcard/numeric masks and comparison-1 sentinel behavior. Parser failure retains count growth and requests optional export, matching the source. Typed malformed counts/token-overflow domains reject atomically. Export body252500, live table writers and native network acceptance remain open. Full runtime completion remains open. [Evidence](research/RUST_FILTER_INSERT.md).
|
| 1845 |
|
| 1846 |
|
| 1847 |
+
RE-924–933 completed bounded bot settings, announcement, connect-child composition and filter insertion contracts. The following batch recovers filter persistence; bot setup/userinfo, native resource/network acceptance and complete runtime integration remain open. [Batch and next work](research/QVM_BOT_ANNOUNCEMENT_FILTER_BATCH.md).
|
| 1848 |
|
| 1849 |
- [x] RE-934 Original filter export and native file-operation order ([evidence](research/QVM_FILTER_EXPORT.md)).
|
| 1850 |
|
|
|
|
| 1863 |
- [x] RE-941 Rust insertion with recovered export composition ([evidence](research/RUST_FILTER_INSERT_EXPORT.md)).
|
| 1864 |
|
| 1865 |
- [x] RE-942 Original removal composed with export and survivor serialization ([evidence](research/QVM_FILTER_REMOVE_EXPORT.md)).
|
| 1866 |
+
|
| 1867 |
+
- [x] RE-943 Rust removal with survivor export and typed file effects ([evidence](research/RUST_FILTER_REMOVE_EXPORT.md)).
|
| 1868 |
+
|
| 1869 |
+
RE-934–943 completed bounded filter export/removal/metadata and insertion/removal persistence compositions. RE-944 tracks loading/time/command callers, live adapters and runtime integration. [Batch and next work](research/QVM_FILTER_PERSISTENCE_BATCH.md).
|
docs/RESEARCH_LEDGER.md
CHANGED
|
@@ -2433,3 +2433,9 @@ Rust matches24 source insertion/export compositions, including all table checksu
|
|
| 2433 |
## 2026-10-28 — RE-942 Original removal composed with export and survivor serialization
|
| 2434 |
|
| 2435 |
Thirty original253296/252304/252500 compositions verify first-match removal, retained row metadata/masks/count, diagnostics and exact survivor export bytes. A sole removed record leaves a nonzero count and therefore causes an empty file write. Duplicate survivors remain serialized in original order. Parse failures and misses never invoke export. Native console/file operations are captured; actual filesystem errors and reload semantics remain open. Focused `cargo xtask test-group qvm-filter-remove-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.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 2433 |
## 2026-10-28 — RE-942 Original removal composed with export and survivor serialization
|
| 2434 |
|
| 2435 |
Thirty original253296/252304/252500 compositions verify first-match removal, retained row metadata/masks/count, diagnostics and exact survivor export bytes. A sole removed record leaves a nonzero count and therefore causes an empty file write. Duplicate survivors remain serialized in original order. Parse failures and misses never invoke export. Native console/file operations are captured; actual filesystem errors and reload semantics remain open. Focused `cargo xtask test-group qvm-filter-remove-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.
|
| 2436 |
+
|
| 2437 |
+
## 2026-10-28 — RE-943 Rust removal with survivor export and typed file effects
|
| 2438 |
+
|
| 2439 |
+
Rust matches30 original removal/export compositions, retaining first-match mutation, duplicate survivor order, unchanged count and metadata, diagnostics, sentinel omission and empty writes after sole removal. A typed four-effect sequence exposes print/open/write/close in source order and retains raw supplied handles. Unit tests cover zero handles, duplicate survivor bytes, misses without IO and atomic unsupported-domain rejection. Native execution, reload and time/expiry semantics remain open. Focused `cargo xtask test-group rust-filter-remove-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.
|
| 2440 |
+
|
| 2441 |
+
Batch RE-934–943 boundary: the single `cargo xtask test-full --since 7bb397d4` run after commit ten passed with the flake-declared Nix Python: 1,818 Python tests, 236 Rust tests (assets10, gameplay196, xtask30), 92 deterministic report producers, storage policy, 513 documentation files and whitespace guards. No generated report drift. The focused dependency-selection regression also passed after adding the shared module/adapter edges for gameplay test-count metadata. Validation notes were amended into task ten; original assets unchanged. See [batch findings and next work](research/QVM_FILTER_PERSISTENCE_BATCH.md).
|
docs/REVERSE_ENGINEERING_TODO.md
CHANGED
|
@@ -1881,7 +1881,7 @@ Purpose: turn the supplied installation into an evidence-backed specification of
|
|
| 1881 |
- [x] RE-933 Rust filter insertion and non-rollback semantics ([evidence](research/RUST_FILTER_INSERT.md)).
|
| 1882 |
|
| 1883 |
|
| 1884 |
-
-
|
| 1885 |
|
| 1886 |
- [x] RE-934 Original filter export and native file-operation order ([evidence](research/QVM_FILTER_EXPORT.md)).
|
| 1887 |
|
|
@@ -1900,3 +1900,7 @@ Purpose: turn the supplied installation into an evidence-backed specification of
|
|
| 1900 |
- [x] RE-941 Rust insertion with recovered export composition ([evidence](research/RUST_FILTER_INSERT_EXPORT.md)).
|
| 1901 |
|
| 1902 |
- [x] RE-942 Original removal composed with export and survivor serialization ([evidence](research/QVM_FILTER_REMOVE_EXPORT.md)).
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1881 |
- [x] RE-933 Rust filter insertion and non-rollback semantics ([evidence](research/RUST_FILTER_INSERT.md)).
|
| 1882 |
|
| 1883 |
|
| 1884 |
+
RE-934–943 continue the prior batch with filter export/removal/metadata and composed persistence. Bot setup/userinfo and native acceptance remain open.
|
| 1885 |
|
| 1886 |
- [x] RE-934 Original filter export and native file-operation order ([evidence](research/QVM_FILTER_EXPORT.md)).
|
| 1887 |
|
|
|
|
| 1900 |
- [x] RE-941 Rust insertion with recovered export composition ([evidence](research/RUST_FILTER_INSERT_EXPORT.md)).
|
| 1901 |
|
| 1902 |
- [x] RE-942 Original removal composed with export and survivor serialization ([evidence](research/QVM_FILTER_REMOVE_EXPORT.md)).
|
| 1903 |
+
|
| 1904 |
+
- [x] RE-943 Rust removal with survivor export and typed file effects ([evidence](research/RUST_FILTER_REMOVE_EXPORT.md)).
|
| 1905 |
+
|
| 1906 |
+
- [ ] RE-944 Recover filter loading/time/commands, live file/network adapters, bot setup/userinfo and remaining Rust/Bevy/Solari integration ([next work](research/QVM_FILTER_PERSISTENCE_BATCH.md)).
|
docs/TESTING.md
CHANGED
|
@@ -175,3 +175,5 @@ RE-914–923 adds `qvm-byte-compare`, `rust-byte-compare`, `qvm-address-filter`,
|
|
| 175 |
|
| 176 |
|
| 177 |
RE-924–933 adds `qvm-bot-settings`, `rust-bot-settings`, `qvm-team-announcement`, `rust-team-announcement`, `qvm-resolved-connect-tail`, `rust-resolved-connect-tail`, `qvm-resolved-connect-complete`, `rust-resolved-connect-complete`, `qvm-filter-insert` and `rust-filter-insert`. Use one group per invocation. Full validation after task ten uses `cargo xtask test-full --since bc3e7621` with explicit flake-declared Nix PYTHON. [Callback/filter evidence](research/QVM_BOT_ANNOUNCEMENT_FILTER_BATCH.md).
|
|
|
|
|
|
|
|
|
| 175 |
|
| 176 |
|
| 177 |
RE-924–933 adds `qvm-bot-settings`, `rust-bot-settings`, `qvm-team-announcement`, `rust-team-announcement`, `qvm-resolved-connect-tail`, `rust-resolved-connect-tail`, `qvm-resolved-connect-complete`, `rust-resolved-connect-complete`, `qvm-filter-insert` and `rust-filter-insert`. Use one group per invocation. Full validation after task ten uses `cargo xtask test-full --since bc3e7621` with explicit flake-declared Nix PYTHON. [Callback/filter evidence](research/QVM_BOT_ANNOUNCEMENT_FILTER_BATCH.md).
|
| 178 |
+
|
| 179 |
+
Filter persistence focused groups: `qvm-filter-export`, `rust-filter-export`, `qvm-filter-remove`, `rust-filter-remove`, `qvm-filter-metadata`, `rust-filter-metadata`, `qvm-filter-insert-export`, `rust-filter-insert-export`, `qvm-filter-remove-export` and `rust-filter-remove-export`. The shared Rust filter lifecycle module and adapter select all affected parity reports and scoped gameplay test metadata; formatter edits also select these consumers. Run one group per invocation. Native file effects are captured plans in these checks.
|
docs/research/QVM_BOT_ANNOUNCEMENT_FILTER_BATCH.md
CHANGED
|
@@ -39,7 +39,7 @@ Dependency-selection regression coverage includes all five new source/Rust repor
|
|
| 39 |
|
| 40 |
After task ten, the single `cargo xtask test-full --since bc3e7621` run passed: 1,798 Python tests, 225 Rust tests (assets 10, gameplay 185, xtask 30), 42 deterministic report producers, storage policy, documentation links across 502 files and whitespace guards. Report regeneration left no drift. These validation notes are amended into task ten, preserving ten task commits for the batch.
|
| 41 |
|
| 42 |
-
##
|
| 43 |
|
| 44 |
- [ ] Recover125185 bot setup internals and native botlib resource/failure ownership, then compose them with161744 and whole connect.
|
| 45 |
- [ ] Recover171668 userinfo parsing/sanitization/state mutation and all related callbacks; compose actual5864 ranking/publication and native network effects.
|
|
@@ -49,3 +49,5 @@ After task ten, the single `cargo xtask test-full --since bc3e7621` run passed:
|
|
| 49 |
- [ ] Compose series6939/readiness, native commands, bot rotation/genetics and221662 map-list parsing.
|
| 50 |
- [ ] Replace supplied spatial-query answers with native broadphase/world collision, and complete respawn/intermission/event/scoreboard integration.
|
| 51 |
- [ ] Validate actual Linux/macOS Rust/Bevy/Solari gameplay/rendering. Full-game completion remains open.
|
|
|
|
|
|
|
|
|
| 39 |
|
| 40 |
After task ten, the single `cargo xtask test-full --since bc3e7621` run passed: 1,798 Python tests, 225 Rust tests (assets 10, gameplay 185, xtask 30), 42 deterministic report producers, storage policy, documentation links across 502 files and whitespace guards. Report regeneration left no drift. These validation notes are amended into task ten, preserving ten task commits for the batch.
|
| 41 |
|
| 42 |
+
## Historical next work after RE-933
|
| 43 |
|
| 44 |
- [ ] Recover125185 bot setup internals and native botlib resource/failure ownership, then compose them with161744 and whole connect.
|
| 45 |
- [ ] Recover171668 userinfo parsing/sanitization/state mutation and all related callbacks; compose actual5864 ranking/publication and native network effects.
|
|
|
|
| 49 |
- [ ] Compose series6939/readiness, native commands, bot rotation/genetics and221662 map-list parsing.
|
| 50 |
- [ ] Replace supplied spatial-query answers with native broadphase/world collision, and complete respawn/intermission/event/scoreboard integration.
|
| 51 |
- [ ] Validate actual Linux/macOS Rust/Bevy/Solari gameplay/rendering. Full-game completion remains open.
|
| 52 |
+
|
| 53 |
+
Filter persistence follow-up: [RE-934–943 findings and current next work](QVM_FILTER_PERSISTENCE_BATCH.md).
|
docs/research/QVM_FILTER_PERSISTENCE_BATCH.md
ADDED
|
@@ -0,0 +1,39 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
# Filter persistence and mutation: RE-934–943
|
| 2 |
+
|
| 3 |
+
Ten tasks recover three original QVM routines, port each to Rust, then compose export with insertion and removal. The five source/Rust pairs cover **282 paired fixtures**. Every task has its own commit and focused `cargo xtask` validation. Native file operations remain captured effects; this evidence does not establish live filesystem, network or full-game acceptance.
|
| 4 |
+
|
| 5 |
+
| Tasks | Recovered contract | Paired fixtures |
|
| 6 |
+
| --- | --- | ---: |
|
| 7 |
+
| RE-934 / RE-935 | [Original export](QVM_FILTER_EXPORT.md) / [Rust export](RUST_FILTER_EXPORT.md) | 18 |
|
| 8 |
+
| RE-936 / RE-937 | [Original removal](QVM_FILTER_REMOVE.md) / [Rust removal](RUST_FILTER_REMOVE.md) | 30 |
|
| 9 |
+
| RE-938 / RE-939 | [Original metadata update](QVM_FILTER_METADATA.md) / [Rust metadata update](RUST_FILTER_METADATA.md) | 180 |
|
| 10 |
+
| RE-940 / RE-941 | [Original insertion/export](QVM_FILTER_INSERT_EXPORT.md) / [Rust insertion/export](RUST_FILTER_INSERT_EXPORT.md) | 24 |
|
| 11 |
+
| RE-942 / RE-943 | [Original removal/export](QVM_FILTER_REMOVE_EXPORT.md) / [Rust removal/export](RUST_FILTER_REMOVE_EXPORT.md) | 30 |
|
| 12 |
+
|
| 13 |
+
## Recovered behavior
|
| 14 |
+
|
| 15 |
+
Actual252500 performs no file operations when the table count is zero. For a nonempty table it clears a 131072-byte buffer, visits rows in order, skips comparison words equal to -1, and formats each survivor as address bytes followed by signed metadata and LF. It ignores masks. It then prints the writing message, opens `banlist.txt` in mode1, writes the accumulated bytes and closes the supplied handle. A nonempty table containing only holes still opens and writes an empty file. Zero and negative handle replies are used without an intervening success check.
|
| 16 |
+
|
| 17 |
+
The source harness executes actual70386,37914 and69338 for formatting and bounded copies, including the original formatter's unusual wrapping-negation output for INT_MIN. Native memset/strncpy are explicitly modeled. Native console/open/write/close operations are captured. Rust reuses the recovered decimal formatter and exposes a typed sequence of file effects for a future adapter. For valid counts through4096, each line is at most28 bytes, so the complete payload fits below131072 bytes. The Rust test covers the maximum row count and rejects4097; malformed original counts and arbitrary pointer provenance remain outside the verified contract.
|
| 18 |
+
|
| 19 |
+
Actual253296 parses through252304/37159 and matches the exact mask/comparison pair. It removes only the first duplicate by setting its comparison to-1, retains mask/metadata/count, prints a removal diagnostic and exports. Missing pairs and invalid parses return0 without export. The broadcast comparison equals the hole sentinel, so a hole can match `255.255.255.255` and report successful removal again.
|
| 20 |
+
|
| 21 |
+
Actual252127 performs the same exact first-match scan, writes only the metadata word, and requests export only after a successful match with nonzero saving enabled. Metadata remains a raw word in the port; this routine alone does not establish time or expiry semantics. It can update metadata on a matching hole without activating it.
|
| 22 |
+
|
| 23 |
+
The compositions execute recovered export from the actual insertion/removal callbacks. They preserve table checksums, first-match ordering and native effect records. Insertion parse failure can retain count growth and still export an empty table. Sole-record removal also exports an empty table because it retains the nonzero count. Duplicate survivors keep their own metadata and original order. Serialized output loses wildcard masks; reload behavior needs to be recovered before assuming a faithful round trip.
|
| 24 |
+
|
| 25 |
+
## Validation
|
| 26 |
+
|
| 27 |
+
Each task ran its own `cargo xtask test-group` before its commit: qvm/rust-filter-export, qvm/rust-filter-remove, qvm/rust-filter-metadata, qvm/rust-filter-insert-export and qvm/rust-filter-remove-export. Each selected report regenerated twice identically. Original-source checks use independent parsing/mutation/serialization expectations; Rust reports compare every projected field with its original fixture. Rust unit tests also cover4096-row bounds, duplicate preservation, ordinary parse-failure mutation, invalid handles, ordered file effects, misses without IO and atomic rejection of unsupported token domains.
|
| 28 |
+
|
| 29 |
+
The dependency registry maps both the new Rust module/adapter and formatter dependencies to the affected reports. Its focused regression includes all five source/Rust pairs. All Python processes use the flake-declared Nix runtime, including Git hooks. Original assets are unchanged. The single `cargo xtask test-full --since 7bb397d4` run after task ten passed: **1,818 Python tests**, **236 Rust tests** (assets10, gameplay196, xtask30), **92 deterministic report producers**, storage policy, links across **513 documentation files** and whitespace guards. Regeneration left no changes. Validation notes are amended into task ten, preserving ten commits for the batch.
|
| 30 |
+
|
| 31 |
+
## Next work: RE-944
|
| 32 |
+
|
| 33 |
+
- [ ] Recover file loading at actual252933, including newline bounds, colon metadata parsing,252829/252127 interactions, missing files, short reads and native handle failures. Check exact caller addresses before extending the trace.
|
| 34 |
+
- [ ] Recover duration command252213, actual251995 time conversion and native time-structure provenance; establish metadata/expiry semantics from callers rather than names.
|
| 35 |
+
- [ ] Recover253100 add-filter command, client-number/userinfo lookup, native drop/command effects and console/client diagnostic paths.
|
| 36 |
+
- [ ] Compose write/reload with wildcard masks, holes, duplicates, INT_MIN metadata and repeated removal; document any lossy round trips.
|
| 37 |
+
- [ ] Implement and validate native file-effect adapters, preserving source ordering and actual engine error behavior on macOS/Linux.
|
| 38 |
+
- [ ] Recover125185 bot setup/resource ownership,171668 userinfo mutation and5864 ranking/publication; compose them with connect and native network effects.
|
| 39 |
+
- [ ] Continue native collision, spatial queries, respawn/intermission/event/scoreboard integration, asset conversion and Rust/Bevy/Solari runtime acceptance on macOS/Linux.
|
docs/research/README.md
CHANGED
|
@@ -1435,3 +1435,7 @@ The extension collector adds five focused tests for native tail calls, command-r
|
|
| 1435 |
- [RE-941: Rust insertion with recovered export composition](RUST_FILTER_INSERT_EXPORT.md).
|
| 1436 |
|
| 1437 |
- [RE-942: Original removal composed with export and survivor serialization](QVM_FILTER_REMOVE_EXPORT.md).
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1435 |
- [RE-941: Rust insertion with recovered export composition](RUST_FILTER_INSERT_EXPORT.md).
|
| 1436 |
|
| 1437 |
- [RE-942: Original removal composed with export and survivor serialization](QVM_FILTER_REMOVE_EXPORT.md).
|
| 1438 |
+
|
| 1439 |
+
- [RE-943: Rust removal with survivor export and typed file effects](RUST_FILTER_REMOVE_EXPORT.md).
|
| 1440 |
+
|
| 1441 |
+
- [RE-934–943 filter persistence batch and RE-944 next work](QVM_FILTER_PERSISTENCE_BATCH.md).
|
docs/research/RUST_FILTER_REMOVE_EXPORT.md
ADDED
|
@@ -0,0 +1,5 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
# Rust removal with survivor export and typed file effects
|
| 2 |
+
|
| 3 |
+
RE-943. Focused validation: `cargo xtask test-group rust-filter-remove-export`. [Machine report](rust-filter-remove-export.json).
|
| 4 |
+
|
| 5 |
+
Rust matches30 original removal/export compositions, retaining first-match mutation, duplicate survivor order, unchanged count and metadata, diagnostics, sentinel omission and empty writes after sole removal. A typed four-effect sequence exposes print/open/write/close in source order and retains raw supplied handles. Unit tests cover zero handles, duplicate survivor bytes, misses without IO and atomic unsupported-domain rejection. Native execution, reload and time/expiry semantics remain open.
|
docs/research/rust-filter-remove-export.json
ADDED
|
@@ -0,0 +1,1583 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
{
|
| 2 |
+
"limits": "Finite recovered policy parity; native filesystem/network effects are not executed.",
|
| 3 |
+
"probes": [
|
| 4 |
+
{
|
| 5 |
+
"rust": {
|
| 6 |
+
"diagnostics": [
|
| 7 |
+
{
|
| 8 |
+
"op": "not-found",
|
| 9 |
+
"text": "312e322e332e34"
|
| 10 |
+
}
|
| 11 |
+
],
|
| 12 |
+
"exported": [],
|
| 13 |
+
"exports": [],
|
| 14 |
+
"result": 0,
|
| 15 |
+
"rows": []
|
| 16 |
+
},
|
| 17 |
+
"source": {
|
| 18 |
+
"diagnostics": [
|
| 19 |
+
{
|
| 20 |
+
"op": "not-found",
|
| 21 |
+
"text": "312e322e332e34"
|
| 22 |
+
}
|
| 23 |
+
],
|
| 24 |
+
"exported": [],
|
| 25 |
+
"exports": [],
|
| 26 |
+
"result": 0,
|
| 27 |
+
"rows": []
|
| 28 |
+
}
|
| 29 |
+
},
|
| 30 |
+
{
|
| 31 |
+
"rust": {
|
| 32 |
+
"diagnostics": [
|
| 33 |
+
{
|
| 34 |
+
"op": "not-found",
|
| 35 |
+
"text": "312e2a"
|
| 36 |
+
}
|
| 37 |
+
],
|
| 38 |
+
"exported": [],
|
| 39 |
+
"exports": [],
|
| 40 |
+
"result": 0,
|
| 41 |
+
"rows": []
|
| 42 |
+
},
|
| 43 |
+
"source": {
|
| 44 |
+
"diagnostics": [
|
| 45 |
+
{
|
| 46 |
+
"op": "not-found",
|
| 47 |
+
"text": "312e2a"
|
| 48 |
+
}
|
| 49 |
+
],
|
| 50 |
+
"exported": [],
|
| 51 |
+
"exports": [],
|
| 52 |
+
"result": 0,
|
| 53 |
+
"rows": []
|
| 54 |
+
}
|
| 55 |
+
},
|
| 56 |
+
{
|
| 57 |
+
"rust": {
|
| 58 |
+
"diagnostics": [
|
| 59 |
+
{
|
| 60 |
+
"op": "not-found",
|
| 61 |
+
"text": "2a"
|
| 62 |
+
}
|
| 63 |
+
],
|
| 64 |
+
"exported": [],
|
| 65 |
+
"exports": [],
|
| 66 |
+
"result": 0,
|
| 67 |
+
"rows": []
|
| 68 |
+
},
|
| 69 |
+
"source": {
|
| 70 |
+
"diagnostics": [
|
| 71 |
+
{
|
| 72 |
+
"op": "not-found",
|
| 73 |
+
"text": "2a"
|
| 74 |
+
}
|
| 75 |
+
],
|
| 76 |
+
"exported": [],
|
| 77 |
+
"exports": [],
|
| 78 |
+
"result": 0,
|
| 79 |
+
"rows": []
|
| 80 |
+
}
|
| 81 |
+
},
|
| 82 |
+
{
|
| 83 |
+
"rust": {
|
| 84 |
+
"diagnostics": [
|
| 85 |
+
{
|
| 86 |
+
"op": "bad-address",
|
| 87 |
+
"text": "626164"
|
| 88 |
+
}
|
| 89 |
+
],
|
| 90 |
+
"exported": [],
|
| 91 |
+
"exports": [],
|
| 92 |
+
"result": 0,
|
| 93 |
+
"rows": []
|
| 94 |
+
},
|
| 95 |
+
"source": {
|
| 96 |
+
"diagnostics": [
|
| 97 |
+
{
|
| 98 |
+
"op": "bad-address",
|
| 99 |
+
"text": "626164"
|
| 100 |
+
}
|
| 101 |
+
],
|
| 102 |
+
"exported": [],
|
| 103 |
+
"exports": [],
|
| 104 |
+
"result": 0,
|
| 105 |
+
"rows": []
|
| 106 |
+
}
|
| 107 |
+
},
|
| 108 |
+
{
|
| 109 |
+
"rust": {
|
| 110 |
+
"diagnostics": [
|
| 111 |
+
{
|
| 112 |
+
"op": "not-found",
|
| 113 |
+
"text": "3235352e3235352e3235352e323535"
|
| 114 |
+
}
|
| 115 |
+
],
|
| 116 |
+
"exported": [],
|
| 117 |
+
"exports": [],
|
| 118 |
+
"result": 0,
|
| 119 |
+
"rows": []
|
| 120 |
+
},
|
| 121 |
+
"source": {
|
| 122 |
+
"diagnostics": [
|
| 123 |
+
{
|
| 124 |
+
"op": "not-found",
|
| 125 |
+
"text": "3235352e3235352e3235352e323535"
|
| 126 |
+
}
|
| 127 |
+
],
|
| 128 |
+
"exported": [],
|
| 129 |
+
"exports": [],
|
| 130 |
+
"result": 0,
|
| 131 |
+
"rows": []
|
| 132 |
+
}
|
| 133 |
+
},
|
| 134 |
+
{
|
| 135 |
+
"rust": {
|
| 136 |
+
"diagnostics": [
|
| 137 |
+
{
|
| 138 |
+
"op": "bad-address",
|
| 139 |
+
"text": ""
|
| 140 |
+
}
|
| 141 |
+
],
|
| 142 |
+
"exported": [],
|
| 143 |
+
"exports": [],
|
| 144 |
+
"result": 0,
|
| 145 |
+
"rows": []
|
| 146 |
+
},
|
| 147 |
+
"source": {
|
| 148 |
+
"diagnostics": [
|
| 149 |
+
{
|
| 150 |
+
"op": "bad-address",
|
| 151 |
+
"text": ""
|
| 152 |
+
}
|
| 153 |
+
],
|
| 154 |
+
"exported": [],
|
| 155 |
+
"exports": [],
|
| 156 |
+
"result": 0,
|
| 157 |
+
"rows": []
|
| 158 |
+
}
|
| 159 |
+
},
|
| 160 |
+
{
|
| 161 |
+
"rust": {
|
| 162 |
+
"diagnostics": [
|
| 163 |
+
{
|
| 164 |
+
"op": "removed"
|
| 165 |
+
}
|
| 166 |
+
],
|
| 167 |
+
"exported": [
|
| 168 |
+
{
|
| 169 |
+
"buffer": "",
|
| 170 |
+
"events": [
|
| 171 |
+
{
|
| 172 |
+
"op": "print",
|
| 173 |
+
"text": "57726974696e673a2062616e6c6973742e7478740a"
|
| 174 |
+
},
|
| 175 |
+
{
|
| 176 |
+
"mode": 1,
|
| 177 |
+
"op": "open",
|
| 178 |
+
"path": "62616e6c6973742e747874"
|
| 179 |
+
},
|
| 180 |
+
{
|
| 181 |
+
"handle": 7,
|
| 182 |
+
"op": "write",
|
| 183 |
+
"text": ""
|
| 184 |
+
},
|
| 185 |
+
{
|
| 186 |
+
"handle": 7,
|
| 187 |
+
"op": "close"
|
| 188 |
+
}
|
| 189 |
+
],
|
| 190 |
+
"formats": []
|
| 191 |
+
}
|
| 192 |
+
],
|
| 193 |
+
"exports": [
|
| 194 |
+
252500
|
| 195 |
+
],
|
| 196 |
+
"result": 1,
|
| 197 |
+
"rows": [
|
| 198 |
+
[
|
| 199 |
+
4294967295,
|
| 200 |
+
4294967295,
|
| 201 |
+
9
|
| 202 |
+
]
|
| 203 |
+
]
|
| 204 |
+
},
|
| 205 |
+
"source": {
|
| 206 |
+
"diagnostics": [
|
| 207 |
+
{
|
| 208 |
+
"op": "removed"
|
| 209 |
+
}
|
| 210 |
+
],
|
| 211 |
+
"exported": [
|
| 212 |
+
{
|
| 213 |
+
"buffer": "",
|
| 214 |
+
"events": [
|
| 215 |
+
{
|
| 216 |
+
"op": "print",
|
| 217 |
+
"text": "57726974696e673a2062616e6c6973742e7478740a"
|
| 218 |
+
},
|
| 219 |
+
{
|
| 220 |
+
"mode": 1,
|
| 221 |
+
"op": "open",
|
| 222 |
+
"path": "62616e6c6973742e747874"
|
| 223 |
+
},
|
| 224 |
+
{
|
| 225 |
+
"handle": 7,
|
| 226 |
+
"op": "write",
|
| 227 |
+
"text": ""
|
| 228 |
+
},
|
| 229 |
+
{
|
| 230 |
+
"handle": 7,
|
| 231 |
+
"op": "close"
|
| 232 |
+
}
|
| 233 |
+
],
|
| 234 |
+
"formats": []
|
| 235 |
+
}
|
| 236 |
+
],
|
| 237 |
+
"exports": [
|
| 238 |
+
252500
|
| 239 |
+
],
|
| 240 |
+
"result": 1,
|
| 241 |
+
"rows": [
|
| 242 |
+
[
|
| 243 |
+
4294967295,
|
| 244 |
+
4294967295,
|
| 245 |
+
9
|
| 246 |
+
]
|
| 247 |
+
]
|
| 248 |
+
}
|
| 249 |
+
},
|
| 250 |
+
{
|
| 251 |
+
"rust": {
|
| 252 |
+
"diagnostics": [
|
| 253 |
+
{
|
| 254 |
+
"op": "not-found",
|
| 255 |
+
"text": "312e2a"
|
| 256 |
+
}
|
| 257 |
+
],
|
| 258 |
+
"exported": [],
|
| 259 |
+
"exports": [],
|
| 260 |
+
"result": 0,
|
| 261 |
+
"rows": [
|
| 262 |
+
[
|
| 263 |
+
4294967295,
|
| 264 |
+
67305985,
|
| 265 |
+
9
|
| 266 |
+
]
|
| 267 |
+
]
|
| 268 |
+
},
|
| 269 |
+
"source": {
|
| 270 |
+
"diagnostics": [
|
| 271 |
+
{
|
| 272 |
+
"op": "not-found",
|
| 273 |
+
"text": "312e2a"
|
| 274 |
+
}
|
| 275 |
+
],
|
| 276 |
+
"exported": [],
|
| 277 |
+
"exports": [],
|
| 278 |
+
"result": 0,
|
| 279 |
+
"rows": [
|
| 280 |
+
[
|
| 281 |
+
4294967295,
|
| 282 |
+
67305985,
|
| 283 |
+
9
|
| 284 |
+
]
|
| 285 |
+
]
|
| 286 |
+
}
|
| 287 |
+
},
|
| 288 |
+
{
|
| 289 |
+
"rust": {
|
| 290 |
+
"diagnostics": [
|
| 291 |
+
{
|
| 292 |
+
"op": "not-found",
|
| 293 |
+
"text": "2a"
|
| 294 |
+
}
|
| 295 |
+
],
|
| 296 |
+
"exported": [],
|
| 297 |
+
"exports": [],
|
| 298 |
+
"result": 0,
|
| 299 |
+
"rows": [
|
| 300 |
+
[
|
| 301 |
+
4294967295,
|
| 302 |
+
67305985,
|
| 303 |
+
9
|
| 304 |
+
]
|
| 305 |
+
]
|
| 306 |
+
},
|
| 307 |
+
"source": {
|
| 308 |
+
"diagnostics": [
|
| 309 |
+
{
|
| 310 |
+
"op": "not-found",
|
| 311 |
+
"text": "2a"
|
| 312 |
+
}
|
| 313 |
+
],
|
| 314 |
+
"exported": [],
|
| 315 |
+
"exports": [],
|
| 316 |
+
"result": 0,
|
| 317 |
+
"rows": [
|
| 318 |
+
[
|
| 319 |
+
4294967295,
|
| 320 |
+
67305985,
|
| 321 |
+
9
|
| 322 |
+
]
|
| 323 |
+
]
|
| 324 |
+
}
|
| 325 |
+
},
|
| 326 |
+
{
|
| 327 |
+
"rust": {
|
| 328 |
+
"diagnostics": [
|
| 329 |
+
{
|
| 330 |
+
"op": "bad-address",
|
| 331 |
+
"text": "626164"
|
| 332 |
+
}
|
| 333 |
+
],
|
| 334 |
+
"exported": [],
|
| 335 |
+
"exports": [],
|
| 336 |
+
"result": 0,
|
| 337 |
+
"rows": [
|
| 338 |
+
[
|
| 339 |
+
4294967295,
|
| 340 |
+
67305985,
|
| 341 |
+
9
|
| 342 |
+
]
|
| 343 |
+
]
|
| 344 |
+
},
|
| 345 |
+
"source": {
|
| 346 |
+
"diagnostics": [
|
| 347 |
+
{
|
| 348 |
+
"op": "bad-address",
|
| 349 |
+
"text": "626164"
|
| 350 |
+
}
|
| 351 |
+
],
|
| 352 |
+
"exported": [],
|
| 353 |
+
"exports": [],
|
| 354 |
+
"result": 0,
|
| 355 |
+
"rows": [
|
| 356 |
+
[
|
| 357 |
+
4294967295,
|
| 358 |
+
67305985,
|
| 359 |
+
9
|
| 360 |
+
]
|
| 361 |
+
]
|
| 362 |
+
}
|
| 363 |
+
},
|
| 364 |
+
{
|
| 365 |
+
"rust": {
|
| 366 |
+
"diagnostics": [
|
| 367 |
+
{
|
| 368 |
+
"op": "not-found",
|
| 369 |
+
"text": "3235352e3235352e3235352e323535"
|
| 370 |
+
}
|
| 371 |
+
],
|
| 372 |
+
"exported": [],
|
| 373 |
+
"exports": [],
|
| 374 |
+
"result": 0,
|
| 375 |
+
"rows": [
|
| 376 |
+
[
|
| 377 |
+
4294967295,
|
| 378 |
+
67305985,
|
| 379 |
+
9
|
| 380 |
+
]
|
| 381 |
+
]
|
| 382 |
+
},
|
| 383 |
+
"source": {
|
| 384 |
+
"diagnostics": [
|
| 385 |
+
{
|
| 386 |
+
"op": "not-found",
|
| 387 |
+
"text": "3235352e3235352e3235352e323535"
|
| 388 |
+
}
|
| 389 |
+
],
|
| 390 |
+
"exported": [],
|
| 391 |
+
"exports": [],
|
| 392 |
+
"result": 0,
|
| 393 |
+
"rows": [
|
| 394 |
+
[
|
| 395 |
+
4294967295,
|
| 396 |
+
67305985,
|
| 397 |
+
9
|
| 398 |
+
]
|
| 399 |
+
]
|
| 400 |
+
}
|
| 401 |
+
},
|
| 402 |
+
{
|
| 403 |
+
"rust": {
|
| 404 |
+
"diagnostics": [
|
| 405 |
+
{
|
| 406 |
+
"op": "bad-address",
|
| 407 |
+
"text": ""
|
| 408 |
+
}
|
| 409 |
+
],
|
| 410 |
+
"exported": [],
|
| 411 |
+
"exports": [],
|
| 412 |
+
"result": 0,
|
| 413 |
+
"rows": [
|
| 414 |
+
[
|
| 415 |
+
4294967295,
|
| 416 |
+
67305985,
|
| 417 |
+
9
|
| 418 |
+
]
|
| 419 |
+
]
|
| 420 |
+
},
|
| 421 |
+
"source": {
|
| 422 |
+
"diagnostics": [
|
| 423 |
+
{
|
| 424 |
+
"op": "bad-address",
|
| 425 |
+
"text": ""
|
| 426 |
+
}
|
| 427 |
+
],
|
| 428 |
+
"exported": [],
|
| 429 |
+
"exports": [],
|
| 430 |
+
"result": 0,
|
| 431 |
+
"rows": [
|
| 432 |
+
[
|
| 433 |
+
4294967295,
|
| 434 |
+
67305985,
|
| 435 |
+
9
|
| 436 |
+
]
|
| 437 |
+
]
|
| 438 |
+
}
|
| 439 |
+
},
|
| 440 |
+
{
|
| 441 |
+
"rust": {
|
| 442 |
+
"diagnostics": [
|
| 443 |
+
{
|
| 444 |
+
"op": "removed"
|
| 445 |
+
}
|
| 446 |
+
],
|
| 447 |
+
"exported": [
|
| 448 |
+
{
|
| 449 |
+
"buffer": "312e322e332e343a31300a",
|
| 450 |
+
"events": [
|
| 451 |
+
{
|
| 452 |
+
"op": "print",
|
| 453 |
+
"text": "57726974696e673a2062616e6c6973742e7478740a"
|
| 454 |
+
},
|
| 455 |
+
{
|
| 456 |
+
"mode": 1,
|
| 457 |
+
"op": "open",
|
| 458 |
+
"path": "62616e6c6973742e747874"
|
| 459 |
+
},
|
| 460 |
+
{
|
| 461 |
+
"handle": 7,
|
| 462 |
+
"op": "write",
|
| 463 |
+
"text": "312e322e332e343a31300a"
|
| 464 |
+
},
|
| 465 |
+
{
|
| 466 |
+
"handle": 7,
|
| 467 |
+
"op": "close"
|
| 468 |
+
}
|
| 469 |
+
],
|
| 470 |
+
"formats": [
|
| 471 |
+
"312e322e332e343a31300a"
|
| 472 |
+
]
|
| 473 |
+
}
|
| 474 |
+
],
|
| 475 |
+
"exports": [
|
| 476 |
+
252500
|
| 477 |
+
],
|
| 478 |
+
"result": 1,
|
| 479 |
+
"rows": [
|
| 480 |
+
[
|
| 481 |
+
4294967295,
|
| 482 |
+
4294967295,
|
| 483 |
+
9
|
| 484 |
+
],
|
| 485 |
+
[
|
| 486 |
+
4294967295,
|
| 487 |
+
67305985,
|
| 488 |
+
10
|
| 489 |
+
]
|
| 490 |
+
]
|
| 491 |
+
},
|
| 492 |
+
"source": {
|
| 493 |
+
"diagnostics": [
|
| 494 |
+
{
|
| 495 |
+
"op": "removed"
|
| 496 |
+
}
|
| 497 |
+
],
|
| 498 |
+
"exported": [
|
| 499 |
+
{
|
| 500 |
+
"buffer": "312e322e332e343a31300a",
|
| 501 |
+
"events": [
|
| 502 |
+
{
|
| 503 |
+
"op": "print",
|
| 504 |
+
"text": "57726974696e673a2062616e6c6973742e7478740a"
|
| 505 |
+
},
|
| 506 |
+
{
|
| 507 |
+
"mode": 1,
|
| 508 |
+
"op": "open",
|
| 509 |
+
"path": "62616e6c6973742e747874"
|
| 510 |
+
},
|
| 511 |
+
{
|
| 512 |
+
"handle": 7,
|
| 513 |
+
"op": "write",
|
| 514 |
+
"text": "312e322e332e343a31300a"
|
| 515 |
+
},
|
| 516 |
+
{
|
| 517 |
+
"handle": 7,
|
| 518 |
+
"op": "close"
|
| 519 |
+
}
|
| 520 |
+
],
|
| 521 |
+
"formats": [
|
| 522 |
+
"312e322e332e343a31300a"
|
| 523 |
+
]
|
| 524 |
+
}
|
| 525 |
+
],
|
| 526 |
+
"exports": [
|
| 527 |
+
252500
|
| 528 |
+
],
|
| 529 |
+
"result": 1,
|
| 530 |
+
"rows": [
|
| 531 |
+
[
|
| 532 |
+
4294967295,
|
| 533 |
+
4294967295,
|
| 534 |
+
9
|
| 535 |
+
],
|
| 536 |
+
[
|
| 537 |
+
4294967295,
|
| 538 |
+
67305985,
|
| 539 |
+
10
|
| 540 |
+
]
|
| 541 |
+
]
|
| 542 |
+
}
|
| 543 |
+
},
|
| 544 |
+
{
|
| 545 |
+
"rust": {
|
| 546 |
+
"diagnostics": [
|
| 547 |
+
{
|
| 548 |
+
"op": "not-found",
|
| 549 |
+
"text": "312e2a"
|
| 550 |
+
}
|
| 551 |
+
],
|
| 552 |
+
"exported": [],
|
| 553 |
+
"exports": [],
|
| 554 |
+
"result": 0,
|
| 555 |
+
"rows": [
|
| 556 |
+
[
|
| 557 |
+
4294967295,
|
| 558 |
+
67305985,
|
| 559 |
+
9
|
| 560 |
+
],
|
| 561 |
+
[
|
| 562 |
+
4294967295,
|
| 563 |
+
67305985,
|
| 564 |
+
10
|
| 565 |
+
]
|
| 566 |
+
]
|
| 567 |
+
},
|
| 568 |
+
"source": {
|
| 569 |
+
"diagnostics": [
|
| 570 |
+
{
|
| 571 |
+
"op": "not-found",
|
| 572 |
+
"text": "312e2a"
|
| 573 |
+
}
|
| 574 |
+
],
|
| 575 |
+
"exported": [],
|
| 576 |
+
"exports": [],
|
| 577 |
+
"result": 0,
|
| 578 |
+
"rows": [
|
| 579 |
+
[
|
| 580 |
+
4294967295,
|
| 581 |
+
67305985,
|
| 582 |
+
9
|
| 583 |
+
],
|
| 584 |
+
[
|
| 585 |
+
4294967295,
|
| 586 |
+
67305985,
|
| 587 |
+
10
|
| 588 |
+
]
|
| 589 |
+
]
|
| 590 |
+
}
|
| 591 |
+
},
|
| 592 |
+
{
|
| 593 |
+
"rust": {
|
| 594 |
+
"diagnostics": [
|
| 595 |
+
{
|
| 596 |
+
"op": "not-found",
|
| 597 |
+
"text": "2a"
|
| 598 |
+
}
|
| 599 |
+
],
|
| 600 |
+
"exported": [],
|
| 601 |
+
"exports": [],
|
| 602 |
+
"result": 0,
|
| 603 |
+
"rows": [
|
| 604 |
+
[
|
| 605 |
+
4294967295,
|
| 606 |
+
67305985,
|
| 607 |
+
9
|
| 608 |
+
],
|
| 609 |
+
[
|
| 610 |
+
4294967295,
|
| 611 |
+
67305985,
|
| 612 |
+
10
|
| 613 |
+
]
|
| 614 |
+
]
|
| 615 |
+
},
|
| 616 |
+
"source": {
|
| 617 |
+
"diagnostics": [
|
| 618 |
+
{
|
| 619 |
+
"op": "not-found",
|
| 620 |
+
"text": "2a"
|
| 621 |
+
}
|
| 622 |
+
],
|
| 623 |
+
"exported": [],
|
| 624 |
+
"exports": [],
|
| 625 |
+
"result": 0,
|
| 626 |
+
"rows": [
|
| 627 |
+
[
|
| 628 |
+
4294967295,
|
| 629 |
+
67305985,
|
| 630 |
+
9
|
| 631 |
+
],
|
| 632 |
+
[
|
| 633 |
+
4294967295,
|
| 634 |
+
67305985,
|
| 635 |
+
10
|
| 636 |
+
]
|
| 637 |
+
]
|
| 638 |
+
}
|
| 639 |
+
},
|
| 640 |
+
{
|
| 641 |
+
"rust": {
|
| 642 |
+
"diagnostics": [
|
| 643 |
+
{
|
| 644 |
+
"op": "bad-address",
|
| 645 |
+
"text": "626164"
|
| 646 |
+
}
|
| 647 |
+
],
|
| 648 |
+
"exported": [],
|
| 649 |
+
"exports": [],
|
| 650 |
+
"result": 0,
|
| 651 |
+
"rows": [
|
| 652 |
+
[
|
| 653 |
+
4294967295,
|
| 654 |
+
67305985,
|
| 655 |
+
9
|
| 656 |
+
],
|
| 657 |
+
[
|
| 658 |
+
4294967295,
|
| 659 |
+
67305985,
|
| 660 |
+
10
|
| 661 |
+
]
|
| 662 |
+
]
|
| 663 |
+
},
|
| 664 |
+
"source": {
|
| 665 |
+
"diagnostics": [
|
| 666 |
+
{
|
| 667 |
+
"op": "bad-address",
|
| 668 |
+
"text": "626164"
|
| 669 |
+
}
|
| 670 |
+
],
|
| 671 |
+
"exported": [],
|
| 672 |
+
"exports": [],
|
| 673 |
+
"result": 0,
|
| 674 |
+
"rows": [
|
| 675 |
+
[
|
| 676 |
+
4294967295,
|
| 677 |
+
67305985,
|
| 678 |
+
9
|
| 679 |
+
],
|
| 680 |
+
[
|
| 681 |
+
4294967295,
|
| 682 |
+
67305985,
|
| 683 |
+
10
|
| 684 |
+
]
|
| 685 |
+
]
|
| 686 |
+
}
|
| 687 |
+
},
|
| 688 |
+
{
|
| 689 |
+
"rust": {
|
| 690 |
+
"diagnostics": [
|
| 691 |
+
{
|
| 692 |
+
"op": "not-found",
|
| 693 |
+
"text": "3235352e3235352e3235352e323535"
|
| 694 |
+
}
|
| 695 |
+
],
|
| 696 |
+
"exported": [],
|
| 697 |
+
"exports": [],
|
| 698 |
+
"result": 0,
|
| 699 |
+
"rows": [
|
| 700 |
+
[
|
| 701 |
+
4294967295,
|
| 702 |
+
67305985,
|
| 703 |
+
9
|
| 704 |
+
],
|
| 705 |
+
[
|
| 706 |
+
4294967295,
|
| 707 |
+
67305985,
|
| 708 |
+
10
|
| 709 |
+
]
|
| 710 |
+
]
|
| 711 |
+
},
|
| 712 |
+
"source": {
|
| 713 |
+
"diagnostics": [
|
| 714 |
+
{
|
| 715 |
+
"op": "not-found",
|
| 716 |
+
"text": "3235352e3235352e3235352e323535"
|
| 717 |
+
}
|
| 718 |
+
],
|
| 719 |
+
"exported": [],
|
| 720 |
+
"exports": [],
|
| 721 |
+
"result": 0,
|
| 722 |
+
"rows": [
|
| 723 |
+
[
|
| 724 |
+
4294967295,
|
| 725 |
+
67305985,
|
| 726 |
+
9
|
| 727 |
+
],
|
| 728 |
+
[
|
| 729 |
+
4294967295,
|
| 730 |
+
67305985,
|
| 731 |
+
10
|
| 732 |
+
]
|
| 733 |
+
]
|
| 734 |
+
}
|
| 735 |
+
},
|
| 736 |
+
{
|
| 737 |
+
"rust": {
|
| 738 |
+
"diagnostics": [
|
| 739 |
+
{
|
| 740 |
+
"op": "bad-address",
|
| 741 |
+
"text": ""
|
| 742 |
+
}
|
| 743 |
+
],
|
| 744 |
+
"exported": [],
|
| 745 |
+
"exports": [],
|
| 746 |
+
"result": 0,
|
| 747 |
+
"rows": [
|
| 748 |
+
[
|
| 749 |
+
4294967295,
|
| 750 |
+
67305985,
|
| 751 |
+
9
|
| 752 |
+
],
|
| 753 |
+
[
|
| 754 |
+
4294967295,
|
| 755 |
+
67305985,
|
| 756 |
+
10
|
| 757 |
+
]
|
| 758 |
+
]
|
| 759 |
+
},
|
| 760 |
+
"source": {
|
| 761 |
+
"diagnostics": [
|
| 762 |
+
{
|
| 763 |
+
"op": "bad-address",
|
| 764 |
+
"text": ""
|
| 765 |
+
}
|
| 766 |
+
],
|
| 767 |
+
"exported": [],
|
| 768 |
+
"exports": [],
|
| 769 |
+
"result": 0,
|
| 770 |
+
"rows": [
|
| 771 |
+
[
|
| 772 |
+
4294967295,
|
| 773 |
+
67305985,
|
| 774 |
+
9
|
| 775 |
+
],
|
| 776 |
+
[
|
| 777 |
+
4294967295,
|
| 778 |
+
67305985,
|
| 779 |
+
10
|
| 780 |
+
]
|
| 781 |
+
]
|
| 782 |
+
}
|
| 783 |
+
},
|
| 784 |
+
{
|
| 785 |
+
"rust": {
|
| 786 |
+
"diagnostics": [
|
| 787 |
+
{
|
| 788 |
+
"op": "removed"
|
| 789 |
+
}
|
| 790 |
+
],
|
| 791 |
+
"exported": [
|
| 792 |
+
{
|
| 793 |
+
"buffer": "312e302e302e303a31310a",
|
| 794 |
+
"events": [
|
| 795 |
+
{
|
| 796 |
+
"op": "print",
|
| 797 |
+
"text": "57726974696e673a2062616e6c6973742e7478740a"
|
| 798 |
+
},
|
| 799 |
+
{
|
| 800 |
+
"mode": 1,
|
| 801 |
+
"op": "open",
|
| 802 |
+
"path": "62616e6c6973742e747874"
|
| 803 |
+
},
|
| 804 |
+
{
|
| 805 |
+
"handle": 7,
|
| 806 |
+
"op": "write",
|
| 807 |
+
"text": "312e302e302e303a31310a"
|
| 808 |
+
},
|
| 809 |
+
{
|
| 810 |
+
"handle": 7,
|
| 811 |
+
"op": "close"
|
| 812 |
+
}
|
| 813 |
+
],
|
| 814 |
+
"formats": [
|
| 815 |
+
"312e302e302e303a31310a"
|
| 816 |
+
]
|
| 817 |
+
}
|
| 818 |
+
],
|
| 819 |
+
"exports": [
|
| 820 |
+
252500
|
| 821 |
+
],
|
| 822 |
+
"result": 1,
|
| 823 |
+
"rows": [
|
| 824 |
+
[
|
| 825 |
+
255,
|
| 826 |
+
1,
|
| 827 |
+
11
|
| 828 |
+
],
|
| 829 |
+
[
|
| 830 |
+
4294967295,
|
| 831 |
+
4294967295,
|
| 832 |
+
9
|
| 833 |
+
]
|
| 834 |
+
]
|
| 835 |
+
},
|
| 836 |
+
"source": {
|
| 837 |
+
"diagnostics": [
|
| 838 |
+
{
|
| 839 |
+
"op": "removed"
|
| 840 |
+
}
|
| 841 |
+
],
|
| 842 |
+
"exported": [
|
| 843 |
+
{
|
| 844 |
+
"buffer": "312e302e302e303a31310a",
|
| 845 |
+
"events": [
|
| 846 |
+
{
|
| 847 |
+
"op": "print",
|
| 848 |
+
"text": "57726974696e673a2062616e6c6973742e7478740a"
|
| 849 |
+
},
|
| 850 |
+
{
|
| 851 |
+
"mode": 1,
|
| 852 |
+
"op": "open",
|
| 853 |
+
"path": "62616e6c6973742e747874"
|
| 854 |
+
},
|
| 855 |
+
{
|
| 856 |
+
"handle": 7,
|
| 857 |
+
"op": "write",
|
| 858 |
+
"text": "312e302e302e303a31310a"
|
| 859 |
+
},
|
| 860 |
+
{
|
| 861 |
+
"handle": 7,
|
| 862 |
+
"op": "close"
|
| 863 |
+
}
|
| 864 |
+
],
|
| 865 |
+
"formats": [
|
| 866 |
+
"312e302e302e303a31310a"
|
| 867 |
+
]
|
| 868 |
+
}
|
| 869 |
+
],
|
| 870 |
+
"exports": [
|
| 871 |
+
252500
|
| 872 |
+
],
|
| 873 |
+
"result": 1,
|
| 874 |
+
"rows": [
|
| 875 |
+
[
|
| 876 |
+
255,
|
| 877 |
+
1,
|
| 878 |
+
11
|
| 879 |
+
],
|
| 880 |
+
[
|
| 881 |
+
4294967295,
|
| 882 |
+
4294967295,
|
| 883 |
+
9
|
| 884 |
+
]
|
| 885 |
+
]
|
| 886 |
+
}
|
| 887 |
+
},
|
| 888 |
+
{
|
| 889 |
+
"rust": {
|
| 890 |
+
"diagnostics": [
|
| 891 |
+
{
|
| 892 |
+
"op": "removed"
|
| 893 |
+
}
|
| 894 |
+
],
|
| 895 |
+
"exported": [
|
| 896 |
+
{
|
| 897 |
+
"buffer": "312e322e332e343a390a",
|
| 898 |
+
"events": [
|
| 899 |
+
{
|
| 900 |
+
"op": "print",
|
| 901 |
+
"text": "57726974696e673a2062616e6c6973742e7478740a"
|
| 902 |
+
},
|
| 903 |
+
{
|
| 904 |
+
"mode": 1,
|
| 905 |
+
"op": "open",
|
| 906 |
+
"path": "62616e6c6973742e747874"
|
| 907 |
+
},
|
| 908 |
+
{
|
| 909 |
+
"handle": 7,
|
| 910 |
+
"op": "write",
|
| 911 |
+
"text": "312e322e332e343a390a"
|
| 912 |
+
},
|
| 913 |
+
{
|
| 914 |
+
"handle": 7,
|
| 915 |
+
"op": "close"
|
| 916 |
+
}
|
| 917 |
+
],
|
| 918 |
+
"formats": [
|
| 919 |
+
"312e322e332e343a390a"
|
| 920 |
+
]
|
| 921 |
+
}
|
| 922 |
+
],
|
| 923 |
+
"exports": [
|
| 924 |
+
252500
|
| 925 |
+
],
|
| 926 |
+
"result": 1,
|
| 927 |
+
"rows": [
|
| 928 |
+
[
|
| 929 |
+
255,
|
| 930 |
+
4294967295,
|
| 931 |
+
11
|
| 932 |
+
],
|
| 933 |
+
[
|
| 934 |
+
4294967295,
|
| 935 |
+
67305985,
|
| 936 |
+
9
|
| 937 |
+
]
|
| 938 |
+
]
|
| 939 |
+
},
|
| 940 |
+
"source": {
|
| 941 |
+
"diagnostics": [
|
| 942 |
+
{
|
| 943 |
+
"op": "removed"
|
| 944 |
+
}
|
| 945 |
+
],
|
| 946 |
+
"exported": [
|
| 947 |
+
{
|
| 948 |
+
"buffer": "312e322e332e343a390a",
|
| 949 |
+
"events": [
|
| 950 |
+
{
|
| 951 |
+
"op": "print",
|
| 952 |
+
"text": "57726974696e673a2062616e6c6973742e7478740a"
|
| 953 |
+
},
|
| 954 |
+
{
|
| 955 |
+
"mode": 1,
|
| 956 |
+
"op": "open",
|
| 957 |
+
"path": "62616e6c6973742e747874"
|
| 958 |
+
},
|
| 959 |
+
{
|
| 960 |
+
"handle": 7,
|
| 961 |
+
"op": "write",
|
| 962 |
+
"text": "312e322e332e343a390a"
|
| 963 |
+
},
|
| 964 |
+
{
|
| 965 |
+
"handle": 7,
|
| 966 |
+
"op": "close"
|
| 967 |
+
}
|
| 968 |
+
],
|
| 969 |
+
"formats": [
|
| 970 |
+
"312e322e332e343a390a"
|
| 971 |
+
]
|
| 972 |
+
}
|
| 973 |
+
],
|
| 974 |
+
"exports": [
|
| 975 |
+
252500
|
| 976 |
+
],
|
| 977 |
+
"result": 1,
|
| 978 |
+
"rows": [
|
| 979 |
+
[
|
| 980 |
+
255,
|
| 981 |
+
4294967295,
|
| 982 |
+
11
|
| 983 |
+
],
|
| 984 |
+
[
|
| 985 |
+
4294967295,
|
| 986 |
+
67305985,
|
| 987 |
+
9
|
| 988 |
+
]
|
| 989 |
+
]
|
| 990 |
+
}
|
| 991 |
+
},
|
| 992 |
+
{
|
| 993 |
+
"rust": {
|
| 994 |
+
"diagnostics": [
|
| 995 |
+
{
|
| 996 |
+
"op": "not-found",
|
| 997 |
+
"text": "2a"
|
| 998 |
+
}
|
| 999 |
+
],
|
| 1000 |
+
"exported": [],
|
| 1001 |
+
"exports": [],
|
| 1002 |
+
"result": 0,
|
| 1003 |
+
"rows": [
|
| 1004 |
+
[
|
| 1005 |
+
255,
|
| 1006 |
+
1,
|
| 1007 |
+
11
|
| 1008 |
+
],
|
| 1009 |
+
[
|
| 1010 |
+
4294967295,
|
| 1011 |
+
67305985,
|
| 1012 |
+
9
|
| 1013 |
+
]
|
| 1014 |
+
]
|
| 1015 |
+
},
|
| 1016 |
+
"source": {
|
| 1017 |
+
"diagnostics": [
|
| 1018 |
+
{
|
| 1019 |
+
"op": "not-found",
|
| 1020 |
+
"text": "2a"
|
| 1021 |
+
}
|
| 1022 |
+
],
|
| 1023 |
+
"exported": [],
|
| 1024 |
+
"exports": [],
|
| 1025 |
+
"result": 0,
|
| 1026 |
+
"rows": [
|
| 1027 |
+
[
|
| 1028 |
+
255,
|
| 1029 |
+
1,
|
| 1030 |
+
11
|
| 1031 |
+
],
|
| 1032 |
+
[
|
| 1033 |
+
4294967295,
|
| 1034 |
+
67305985,
|
| 1035 |
+
9
|
| 1036 |
+
]
|
| 1037 |
+
]
|
| 1038 |
+
}
|
| 1039 |
+
},
|
| 1040 |
+
{
|
| 1041 |
+
"rust": {
|
| 1042 |
+
"diagnostics": [
|
| 1043 |
+
{
|
| 1044 |
+
"op": "bad-address",
|
| 1045 |
+
"text": "626164"
|
| 1046 |
+
}
|
| 1047 |
+
],
|
| 1048 |
+
"exported": [],
|
| 1049 |
+
"exports": [],
|
| 1050 |
+
"result": 0,
|
| 1051 |
+
"rows": [
|
| 1052 |
+
[
|
| 1053 |
+
255,
|
| 1054 |
+
1,
|
| 1055 |
+
11
|
| 1056 |
+
],
|
| 1057 |
+
[
|
| 1058 |
+
4294967295,
|
| 1059 |
+
67305985,
|
| 1060 |
+
9
|
| 1061 |
+
]
|
| 1062 |
+
]
|
| 1063 |
+
},
|
| 1064 |
+
"source": {
|
| 1065 |
+
"diagnostics": [
|
| 1066 |
+
{
|
| 1067 |
+
"op": "bad-address",
|
| 1068 |
+
"text": "626164"
|
| 1069 |
+
}
|
| 1070 |
+
],
|
| 1071 |
+
"exported": [],
|
| 1072 |
+
"exports": [],
|
| 1073 |
+
"result": 0,
|
| 1074 |
+
"rows": [
|
| 1075 |
+
[
|
| 1076 |
+
255,
|
| 1077 |
+
1,
|
| 1078 |
+
11
|
| 1079 |
+
],
|
| 1080 |
+
[
|
| 1081 |
+
4294967295,
|
| 1082 |
+
67305985,
|
| 1083 |
+
9
|
| 1084 |
+
]
|
| 1085 |
+
]
|
| 1086 |
+
}
|
| 1087 |
+
},
|
| 1088 |
+
{
|
| 1089 |
+
"rust": {
|
| 1090 |
+
"diagnostics": [
|
| 1091 |
+
{
|
| 1092 |
+
"op": "not-found",
|
| 1093 |
+
"text": "3235352e3235352e3235352e323535"
|
| 1094 |
+
}
|
| 1095 |
+
],
|
| 1096 |
+
"exported": [],
|
| 1097 |
+
"exports": [],
|
| 1098 |
+
"result": 0,
|
| 1099 |
+
"rows": [
|
| 1100 |
+
[
|
| 1101 |
+
255,
|
| 1102 |
+
1,
|
| 1103 |
+
11
|
| 1104 |
+
],
|
| 1105 |
+
[
|
| 1106 |
+
4294967295,
|
| 1107 |
+
67305985,
|
| 1108 |
+
9
|
| 1109 |
+
]
|
| 1110 |
+
]
|
| 1111 |
+
},
|
| 1112 |
+
"source": {
|
| 1113 |
+
"diagnostics": [
|
| 1114 |
+
{
|
| 1115 |
+
"op": "not-found",
|
| 1116 |
+
"text": "3235352e3235352e3235352e323535"
|
| 1117 |
+
}
|
| 1118 |
+
],
|
| 1119 |
+
"exported": [],
|
| 1120 |
+
"exports": [],
|
| 1121 |
+
"result": 0,
|
| 1122 |
+
"rows": [
|
| 1123 |
+
[
|
| 1124 |
+
255,
|
| 1125 |
+
1,
|
| 1126 |
+
11
|
| 1127 |
+
],
|
| 1128 |
+
[
|
| 1129 |
+
4294967295,
|
| 1130 |
+
67305985,
|
| 1131 |
+
9
|
| 1132 |
+
]
|
| 1133 |
+
]
|
| 1134 |
+
}
|
| 1135 |
+
},
|
| 1136 |
+
{
|
| 1137 |
+
"rust": {
|
| 1138 |
+
"diagnostics": [
|
| 1139 |
+
{
|
| 1140 |
+
"op": "bad-address",
|
| 1141 |
+
"text": ""
|
| 1142 |
+
}
|
| 1143 |
+
],
|
| 1144 |
+
"exported": [],
|
| 1145 |
+
"exports": [],
|
| 1146 |
+
"result": 0,
|
| 1147 |
+
"rows": [
|
| 1148 |
+
[
|
| 1149 |
+
255,
|
| 1150 |
+
1,
|
| 1151 |
+
11
|
| 1152 |
+
],
|
| 1153 |
+
[
|
| 1154 |
+
4294967295,
|
| 1155 |
+
67305985,
|
| 1156 |
+
9
|
| 1157 |
+
]
|
| 1158 |
+
]
|
| 1159 |
+
},
|
| 1160 |
+
"source": {
|
| 1161 |
+
"diagnostics": [
|
| 1162 |
+
{
|
| 1163 |
+
"op": "bad-address",
|
| 1164 |
+
"text": ""
|
| 1165 |
+
}
|
| 1166 |
+
],
|
| 1167 |
+
"exported": [],
|
| 1168 |
+
"exports": [],
|
| 1169 |
+
"result": 0,
|
| 1170 |
+
"rows": [
|
| 1171 |
+
[
|
| 1172 |
+
255,
|
| 1173 |
+
1,
|
| 1174 |
+
11
|
| 1175 |
+
],
|
| 1176 |
+
[
|
| 1177 |
+
4294967295,
|
| 1178 |
+
67305985,
|
| 1179 |
+
9
|
| 1180 |
+
]
|
| 1181 |
+
]
|
| 1182 |
+
}
|
| 1183 |
+
},
|
| 1184 |
+
{
|
| 1185 |
+
"rust": {
|
| 1186 |
+
"diagnostics": [
|
| 1187 |
+
{
|
| 1188 |
+
"op": "not-found",
|
| 1189 |
+
"text": "312e322e332e34"
|
| 1190 |
+
}
|
| 1191 |
+
],
|
| 1192 |
+
"exported": [],
|
| 1193 |
+
"exports": [],
|
| 1194 |
+
"result": 0,
|
| 1195 |
+
"rows": [
|
| 1196 |
+
[
|
| 1197 |
+
4294967295,
|
| 1198 |
+
4294967295,
|
| 1199 |
+
12
|
| 1200 |
+
],
|
| 1201 |
+
[
|
| 1202 |
+
0,
|
| 1203 |
+
0,
|
| 1204 |
+
13
|
| 1205 |
+
]
|
| 1206 |
+
]
|
| 1207 |
+
},
|
| 1208 |
+
"source": {
|
| 1209 |
+
"diagnostics": [
|
| 1210 |
+
{
|
| 1211 |
+
"op": "not-found",
|
| 1212 |
+
"text": "312e322e332e34"
|
| 1213 |
+
}
|
| 1214 |
+
],
|
| 1215 |
+
"exported": [],
|
| 1216 |
+
"exports": [],
|
| 1217 |
+
"result": 0,
|
| 1218 |
+
"rows": [
|
| 1219 |
+
[
|
| 1220 |
+
4294967295,
|
| 1221 |
+
4294967295,
|
| 1222 |
+
12
|
| 1223 |
+
],
|
| 1224 |
+
[
|
| 1225 |
+
0,
|
| 1226 |
+
0,
|
| 1227 |
+
13
|
| 1228 |
+
]
|
| 1229 |
+
]
|
| 1230 |
+
}
|
| 1231 |
+
},
|
| 1232 |
+
{
|
| 1233 |
+
"rust": {
|
| 1234 |
+
"diagnostics": [
|
| 1235 |
+
{
|
| 1236 |
+
"op": "not-found",
|
| 1237 |
+
"text": "312e2a"
|
| 1238 |
+
}
|
| 1239 |
+
],
|
| 1240 |
+
"exported": [],
|
| 1241 |
+
"exports": [],
|
| 1242 |
+
"result": 0,
|
| 1243 |
+
"rows": [
|
| 1244 |
+
[
|
| 1245 |
+
4294967295,
|
| 1246 |
+
4294967295,
|
| 1247 |
+
12
|
| 1248 |
+
],
|
| 1249 |
+
[
|
| 1250 |
+
0,
|
| 1251 |
+
0,
|
| 1252 |
+
13
|
| 1253 |
+
]
|
| 1254 |
+
]
|
| 1255 |
+
},
|
| 1256 |
+
"source": {
|
| 1257 |
+
"diagnostics": [
|
| 1258 |
+
{
|
| 1259 |
+
"op": "not-found",
|
| 1260 |
+
"text": "312e2a"
|
| 1261 |
+
}
|
| 1262 |
+
],
|
| 1263 |
+
"exported": [],
|
| 1264 |
+
"exports": [],
|
| 1265 |
+
"result": 0,
|
| 1266 |
+
"rows": [
|
| 1267 |
+
[
|
| 1268 |
+
4294967295,
|
| 1269 |
+
4294967295,
|
| 1270 |
+
12
|
| 1271 |
+
],
|
| 1272 |
+
[
|
| 1273 |
+
0,
|
| 1274 |
+
0,
|
| 1275 |
+
13
|
| 1276 |
+
]
|
| 1277 |
+
]
|
| 1278 |
+
}
|
| 1279 |
+
},
|
| 1280 |
+
{
|
| 1281 |
+
"rust": {
|
| 1282 |
+
"diagnostics": [
|
| 1283 |
+
{
|
| 1284 |
+
"op": "removed"
|
| 1285 |
+
}
|
| 1286 |
+
],
|
| 1287 |
+
"exported": [
|
| 1288 |
+
{
|
| 1289 |
+
"buffer": "",
|
| 1290 |
+
"events": [
|
| 1291 |
+
{
|
| 1292 |
+
"op": "print",
|
| 1293 |
+
"text": "57726974696e673a2062616e6c6973742e7478740a"
|
| 1294 |
+
},
|
| 1295 |
+
{
|
| 1296 |
+
"mode": 1,
|
| 1297 |
+
"op": "open",
|
| 1298 |
+
"path": "62616e6c6973742e747874"
|
| 1299 |
+
},
|
| 1300 |
+
{
|
| 1301 |
+
"handle": 7,
|
| 1302 |
+
"op": "write",
|
| 1303 |
+
"text": ""
|
| 1304 |
+
},
|
| 1305 |
+
{
|
| 1306 |
+
"handle": 7,
|
| 1307 |
+
"op": "close"
|
| 1308 |
+
}
|
| 1309 |
+
],
|
| 1310 |
+
"formats": []
|
| 1311 |
+
}
|
| 1312 |
+
],
|
| 1313 |
+
"exports": [
|
| 1314 |
+
252500
|
| 1315 |
+
],
|
| 1316 |
+
"result": 1,
|
| 1317 |
+
"rows": [
|
| 1318 |
+
[
|
| 1319 |
+
4294967295,
|
| 1320 |
+
4294967295,
|
| 1321 |
+
12
|
| 1322 |
+
],
|
| 1323 |
+
[
|
| 1324 |
+
0,
|
| 1325 |
+
4294967295,
|
| 1326 |
+
13
|
| 1327 |
+
]
|
| 1328 |
+
]
|
| 1329 |
+
},
|
| 1330 |
+
"source": {
|
| 1331 |
+
"diagnostics": [
|
| 1332 |
+
{
|
| 1333 |
+
"op": "removed"
|
| 1334 |
+
}
|
| 1335 |
+
],
|
| 1336 |
+
"exported": [
|
| 1337 |
+
{
|
| 1338 |
+
"buffer": "",
|
| 1339 |
+
"events": [
|
| 1340 |
+
{
|
| 1341 |
+
"op": "print",
|
| 1342 |
+
"text": "57726974696e673a2062616e6c6973742e7478740a"
|
| 1343 |
+
},
|
| 1344 |
+
{
|
| 1345 |
+
"mode": 1,
|
| 1346 |
+
"op": "open",
|
| 1347 |
+
"path": "62616e6c6973742e747874"
|
| 1348 |
+
},
|
| 1349 |
+
{
|
| 1350 |
+
"handle": 7,
|
| 1351 |
+
"op": "write",
|
| 1352 |
+
"text": ""
|
| 1353 |
+
},
|
| 1354 |
+
{
|
| 1355 |
+
"handle": 7,
|
| 1356 |
+
"op": "close"
|
| 1357 |
+
}
|
| 1358 |
+
],
|
| 1359 |
+
"formats": []
|
| 1360 |
+
}
|
| 1361 |
+
],
|
| 1362 |
+
"exports": [
|
| 1363 |
+
252500
|
| 1364 |
+
],
|
| 1365 |
+
"result": 1,
|
| 1366 |
+
"rows": [
|
| 1367 |
+
[
|
| 1368 |
+
4294967295,
|
| 1369 |
+
4294967295,
|
| 1370 |
+
12
|
| 1371 |
+
],
|
| 1372 |
+
[
|
| 1373 |
+
0,
|
| 1374 |
+
4294967295,
|
| 1375 |
+
13
|
| 1376 |
+
]
|
| 1377 |
+
]
|
| 1378 |
+
}
|
| 1379 |
+
},
|
| 1380 |
+
{
|
| 1381 |
+
"rust": {
|
| 1382 |
+
"diagnostics": [
|
| 1383 |
+
{
|
| 1384 |
+
"op": "bad-address",
|
| 1385 |
+
"text": "626164"
|
| 1386 |
+
}
|
| 1387 |
+
],
|
| 1388 |
+
"exported": [],
|
| 1389 |
+
"exports": [],
|
| 1390 |
+
"result": 0,
|
| 1391 |
+
"rows": [
|
| 1392 |
+
[
|
| 1393 |
+
4294967295,
|
| 1394 |
+
4294967295,
|
| 1395 |
+
12
|
| 1396 |
+
],
|
| 1397 |
+
[
|
| 1398 |
+
0,
|
| 1399 |
+
0,
|
| 1400 |
+
13
|
| 1401 |
+
]
|
| 1402 |
+
]
|
| 1403 |
+
},
|
| 1404 |
+
"source": {
|
| 1405 |
+
"diagnostics": [
|
| 1406 |
+
{
|
| 1407 |
+
"op": "bad-address",
|
| 1408 |
+
"text": "626164"
|
| 1409 |
+
}
|
| 1410 |
+
],
|
| 1411 |
+
"exported": [],
|
| 1412 |
+
"exports": [],
|
| 1413 |
+
"result": 0,
|
| 1414 |
+
"rows": [
|
| 1415 |
+
[
|
| 1416 |
+
4294967295,
|
| 1417 |
+
4294967295,
|
| 1418 |
+
12
|
| 1419 |
+
],
|
| 1420 |
+
[
|
| 1421 |
+
0,
|
| 1422 |
+
0,
|
| 1423 |
+
13
|
| 1424 |
+
]
|
| 1425 |
+
]
|
| 1426 |
+
}
|
| 1427 |
+
},
|
| 1428 |
+
{
|
| 1429 |
+
"rust": {
|
| 1430 |
+
"diagnostics": [
|
| 1431 |
+
{
|
| 1432 |
+
"op": "removed"
|
| 1433 |
+
}
|
| 1434 |
+
],
|
| 1435 |
+
"exported": [
|
| 1436 |
+
{
|
| 1437 |
+
"buffer": "302e302e302e303a31330a",
|
| 1438 |
+
"events": [
|
| 1439 |
+
{
|
| 1440 |
+
"op": "print",
|
| 1441 |
+
"text": "57726974696e673a2062616e6c6973742e7478740a"
|
| 1442 |
+
},
|
| 1443 |
+
{
|
| 1444 |
+
"mode": 1,
|
| 1445 |
+
"op": "open",
|
| 1446 |
+
"path": "62616e6c6973742e747874"
|
| 1447 |
+
},
|
| 1448 |
+
{
|
| 1449 |
+
"handle": 7,
|
| 1450 |
+
"op": "write",
|
| 1451 |
+
"text": "302e302e302e303a31330a"
|
| 1452 |
+
},
|
| 1453 |
+
{
|
| 1454 |
+
"handle": 7,
|
| 1455 |
+
"op": "close"
|
| 1456 |
+
}
|
| 1457 |
+
],
|
| 1458 |
+
"formats": [
|
| 1459 |
+
"302e302e302e303a31330a"
|
| 1460 |
+
]
|
| 1461 |
+
}
|
| 1462 |
+
],
|
| 1463 |
+
"exports": [
|
| 1464 |
+
252500
|
| 1465 |
+
],
|
| 1466 |
+
"result": 1,
|
| 1467 |
+
"rows": [
|
| 1468 |
+
[
|
| 1469 |
+
4294967295,
|
| 1470 |
+
4294967295,
|
| 1471 |
+
12
|
| 1472 |
+
],
|
| 1473 |
+
[
|
| 1474 |
+
0,
|
| 1475 |
+
0,
|
| 1476 |
+
13
|
| 1477 |
+
]
|
| 1478 |
+
]
|
| 1479 |
+
},
|
| 1480 |
+
"source": {
|
| 1481 |
+
"diagnostics": [
|
| 1482 |
+
{
|
| 1483 |
+
"op": "removed"
|
| 1484 |
+
}
|
| 1485 |
+
],
|
| 1486 |
+
"exported": [
|
| 1487 |
+
{
|
| 1488 |
+
"buffer": "302e302e302e303a31330a",
|
| 1489 |
+
"events": [
|
| 1490 |
+
{
|
| 1491 |
+
"op": "print",
|
| 1492 |
+
"text": "57726974696e673a2062616e6c6973742e7478740a"
|
| 1493 |
+
},
|
| 1494 |
+
{
|
| 1495 |
+
"mode": 1,
|
| 1496 |
+
"op": "open",
|
| 1497 |
+
"path": "62616e6c6973742e747874"
|
| 1498 |
+
},
|
| 1499 |
+
{
|
| 1500 |
+
"handle": 7,
|
| 1501 |
+
"op": "write",
|
| 1502 |
+
"text": "302e302e302e303a31330a"
|
| 1503 |
+
},
|
| 1504 |
+
{
|
| 1505 |
+
"handle": 7,
|
| 1506 |
+
"op": "close"
|
| 1507 |
+
}
|
| 1508 |
+
],
|
| 1509 |
+
"formats": [
|
| 1510 |
+
"302e302e302e303a31330a"
|
| 1511 |
+
]
|
| 1512 |
+
}
|
| 1513 |
+
],
|
| 1514 |
+
"exports": [
|
| 1515 |
+
252500
|
| 1516 |
+
],
|
| 1517 |
+
"result": 1,
|
| 1518 |
+
"rows": [
|
| 1519 |
+
[
|
| 1520 |
+
4294967295,
|
| 1521 |
+
4294967295,
|
| 1522 |
+
12
|
| 1523 |
+
],
|
| 1524 |
+
[
|
| 1525 |
+
0,
|
| 1526 |
+
0,
|
| 1527 |
+
13
|
| 1528 |
+
]
|
| 1529 |
+
]
|
| 1530 |
+
}
|
| 1531 |
+
},
|
| 1532 |
+
{
|
| 1533 |
+
"rust": {
|
| 1534 |
+
"diagnostics": [
|
| 1535 |
+
{
|
| 1536 |
+
"op": "bad-address",
|
| 1537 |
+
"text": ""
|
| 1538 |
+
}
|
| 1539 |
+
],
|
| 1540 |
+
"exported": [],
|
| 1541 |
+
"exports": [],
|
| 1542 |
+
"result": 0,
|
| 1543 |
+
"rows": [
|
| 1544 |
+
[
|
| 1545 |
+
4294967295,
|
| 1546 |
+
4294967295,
|
| 1547 |
+
12
|
| 1548 |
+
],
|
| 1549 |
+
[
|
| 1550 |
+
0,
|
| 1551 |
+
0,
|
| 1552 |
+
13
|
| 1553 |
+
]
|
| 1554 |
+
]
|
| 1555 |
+
},
|
| 1556 |
+
"source": {
|
| 1557 |
+
"diagnostics": [
|
| 1558 |
+
{
|
| 1559 |
+
"op": "bad-address",
|
| 1560 |
+
"text": ""
|
| 1561 |
+
}
|
| 1562 |
+
],
|
| 1563 |
+
"exported": [],
|
| 1564 |
+
"exports": [],
|
| 1565 |
+
"result": 0,
|
| 1566 |
+
"rows": [
|
| 1567 |
+
[
|
| 1568 |
+
4294967295,
|
| 1569 |
+
4294967295,
|
| 1570 |
+
12
|
| 1571 |
+
],
|
| 1572 |
+
[
|
| 1573 |
+
0,
|
| 1574 |
+
0,
|
| 1575 |
+
13
|
| 1576 |
+
]
|
| 1577 |
+
]
|
| 1578 |
+
}
|
| 1579 |
+
}
|
| 1580 |
+
],
|
| 1581 |
+
"source_report": "docs/research/qvm-filter-remove-export.json",
|
| 1582 |
+
"source_report_sha256": "ebb5de37482c3b62dd2c2fe6432ec782cc143cd6ee0d5a0493e3c4117afa805a"
|
| 1583 |
+
}
|
docs/research/rust-health-impulse.json
CHANGED
|
@@ -2985,7 +2985,7 @@
|
|
| 2985 |
"exit_code": 2
|
| 2986 |
}
|
| 2987 |
],
|
| 2988 |
-
"rust_unit_tests":
|
| 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": 196,
|
| 2989 |
"source_report": "docs/research/qvm-health-impulse.json",
|
| 2990 |
"source_report_sha256": "625fd8064004ea6dbdf398d51d0af844d9c635ff04c0a0790886dddb6ab81e71"
|
| 2991 |
}
|
scripts/analyze_rust_filter_remove_export.py
ADDED
|
@@ -0,0 +1,18 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 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-remove-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', 'diagnostics', 'exports', 'exported', 'rows']},rust=result(binary,'remove-export',words)))
|
| 14 |
+
write_json(Path('docs/research/rust-filter-remove-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 |
+
text=bytes.fromhex(a['text']);return [len(a['rows']),a['metadata'],a['save'],a['handle'],len(text),*text,*[v for r in a['rows'] for v in r]]
|
| 18 |
+
if __name__=='__main__':main()
|
scripts/test_rust_filter_remove_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-remove-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-remove-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
|
@@ -3183,3 +3183,22 @@ report scripts/analyze_qvm_filter_remove_export.py docs/research/qvm-filter-remo
|
|
| 3183 |
edge docs/research/qvm-filter-remove-export.json scripts/test_qvm_filter_remove_export.py
|
| 3184 |
group qvm-filter-remove-export scripts/analyze_qvm_filter_remove_export.py
|
| 3185 |
edge scripts/analyze_qvm_filter_remove_export.py scripts/analyze_qvm_resumer_audit.py
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 3183 |
edge docs/research/qvm-filter-remove-export.json scripts/test_qvm_filter_remove_export.py
|
| 3184 |
group qvm-filter-remove-export scripts/analyze_qvm_filter_remove_export.py
|
| 3185 |
edge scripts/analyze_qvm_filter_remove_export.py scripts/analyze_qvm_resumer_audit.py
|
| 3186 |
+
report scripts/analyze_rust_filter_remove_export.py docs/research/rust-filter-remove-export.json
|
| 3187 |
+
edge docs/research/rust-filter-remove-export.json scripts/test_rust_filter_remove_export.py
|
| 3188 |
+
group rust-filter-remove-export scripts/analyze_rust_filter_remove_export.py
|
| 3189 |
+
edge scripts/analyze_rust_filter_remove_export.py scripts/analyze_qvm_resumer_audit.py
|
| 3190 |
+
edge Cargo.toml scripts/analyze_rust_filter_remove_export.py
|
| 3191 |
+
edge Cargo.lock scripts/analyze_rust_filter_remove_export.py
|
| 3192 |
+
edge crates/urt-gameplay/Cargo.toml scripts/analyze_rust_filter_remove_export.py
|
| 3193 |
+
edge crates/urt-gameplay/src/lib.rs scripts/analyze_rust_filter_remove_export.py
|
| 3194 |
+
edge crates/urt-gameplay/src/filter_lifecycle.rs scripts/analyze_rust_filter_remove_export.py
|
| 3195 |
+
edge crates/urt-gameplay/src/native_policy.rs scripts/analyze_rust_filter_remove_export.py
|
| 3196 |
+
edge crates/urt-gameplay/src/bin/urt-filter-policy.rs scripts/analyze_rust_filter_remove_export.py
|
| 3197 |
+
edge docs/research/qvm-filter-remove-export.json scripts/analyze_rust_filter_remove_export.py
|
| 3198 |
+
group rust-filter-remove-export scripts/analyze_rust_health_impulse.py
|
| 3199 |
+
group gameplay scripts/analyze_rust_filter_remove_export.py
|
| 3200 |
+
edge crates/urt-gameplay/src/qvm_format.rs scripts/analyze_rust_filter_remove_export.py
|
| 3201 |
+
edge crates/urt-gameplay/src/qvm_format.rs scripts/analyze_rust_filter_remove.py
|
| 3202 |
+
edge crates/urt-gameplay/src/qvm_format.rs scripts/analyze_rust_filter_metadata.py
|
| 3203 |
+
edge crates/urt-gameplay/src/filter_lifecycle.rs scripts/analyze_rust_health_impulse.py
|
| 3204 |
+
edge crates/urt-gameplay/src/bin/urt-filter-policy.rs scripts/analyze_rust_health_impulse.py
|
xtask/src/lib.rs
CHANGED
|
@@ -1128,6 +1128,19 @@ mod integration_tests {
|
|
| 1128 |
("native_policy", "resolved_connect_tail"),
|
| 1129 |
("native_policy", "resolved_connect_complete"),
|
| 1130 |
("native_policy", "filter_insert"),
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1131 |
("qvm_format", "resolved_connect_complete"),
|
| 1132 |
("protected", "protected_update"),
|
| 1133 |
("mode10", "mode10_entry"),
|
|
@@ -1218,6 +1231,11 @@ mod integration_tests {
|
|
| 1218 |
("qvm-resolved-connect-tail", "resolved_connect_tail"),
|
| 1219 |
("qvm-resolved-connect-complete", "resolved_connect_complete"),
|
| 1220 |
("qvm-filter-insert", "filter_insert"),
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1221 |
("qvm-rank-small-sort", "rank_sort"),
|
| 1222 |
("qvm-rank-large-sort", "rank_sort"),
|
| 1223 |
("qvm-ranking-complete", "ranking_complete"),
|
|
|
|
| 1128 |
("native_policy", "resolved_connect_tail"),
|
| 1129 |
("native_policy", "resolved_connect_complete"),
|
| 1130 |
("native_policy", "filter_insert"),
|
| 1131 |
+
("filter_lifecycle", "filter_export"),
|
| 1132 |
+
("native_policy", "filter_export"),
|
| 1133 |
+
("qvm_format", "filter_export"),
|
| 1134 |
+
("filter_lifecycle", "filter_remove"),
|
| 1135 |
+
("native_policy", "filter_remove"),
|
| 1136 |
+
("filter_lifecycle", "filter_metadata"),
|
| 1137 |
+
("native_policy", "filter_metadata"),
|
| 1138 |
+
("filter_lifecycle", "filter_insert_export"),
|
| 1139 |
+
("native_policy", "filter_insert_export"),
|
| 1140 |
+
("qvm_format", "filter_insert_export"),
|
| 1141 |
+
("filter_lifecycle", "filter_remove_export"),
|
| 1142 |
+
("native_policy", "filter_remove_export"),
|
| 1143 |
+
("qvm_format", "filter_remove_export"),
|
| 1144 |
("qvm_format", "resolved_connect_complete"),
|
| 1145 |
("protected", "protected_update"),
|
| 1146 |
("mode10", "mode10_entry"),
|
|
|
|
| 1231 |
("qvm-resolved-connect-tail", "resolved_connect_tail"),
|
| 1232 |
("qvm-resolved-connect-complete", "resolved_connect_complete"),
|
| 1233 |
("qvm-filter-insert", "filter_insert"),
|
| 1234 |
+
("qvm-filter-export", "filter_export"),
|
| 1235 |
+
("qvm-filter-remove", "filter_remove"),
|
| 1236 |
+
("qvm-filter-metadata", "filter_metadata"),
|
| 1237 |
+
("qvm-filter-insert-export", "filter_insert_export"),
|
| 1238 |
+
("qvm-filter-remove-export", "filter_remove_export"),
|
| 1239 |
("qvm-rank-small-sort", "rank_sort"),
|
| 1240 |
("qvm-rank-large-sort", "rank_sort"),
|
| 1241 |
("qvm-ranking-complete", "ranking_complete"),
|