nmarshall commited on
Commit
6715437
·
1 Parent(s): 7869ad1

gameplay: port mode10 entry

Browse files
crates/urt-gameplay/src/bin/urt-lifecycle.rs CHANGED
@@ -36,6 +36,40 @@ fn run() -> Result<(), String> {
36
  }
37
  );
38
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
39
  _ => return Err("unsupported contract or arguments".into()),
40
  }
41
  Ok(())
 
36
  }
37
  );
38
  }
39
+ "entry" if w.len() == 13 && w[1] <= 1 => {
40
+ use urt_gameplay::mode10::{State, enter};
41
+ let (r, active) = enter(
42
+ w[0] as i32,
43
+ w[1] != 0,
44
+ w[2] as i32,
45
+ State {
46
+ flags104: w[3],
47
+ flags220: w[4],
48
+ flags236: w[5],
49
+ health: w[6] as i32,
50
+ meter: w[7] as i32,
51
+ movement: w[8] as i32,
52
+ progress: w[9],
53
+ heat_bits: w[10],
54
+ clock: w[11] as i32,
55
+ entity_health: w[12] as i32,
56
+ },
57
+ );
58
+ println!(
59
+ "{{\"104\":{},\"220\":{},\"236\":{},\"208\":{},\"184\":{},\"4\":{},\"232\":{},\"6332\":{},\"6324\":{},\"entity_health\":{},\"event\":{}}}",
60
+ r.flags104,
61
+ r.flags220,
62
+ r.flags236,
63
+ r.health as u32,
64
+ r.meter as u32,
65
+ r.movement as u32,
66
+ r.progress,
67
+ r.heat_bits,
68
+ r.clock as u32,
69
+ r.entity_health as u32,
70
+ if active { 106 } else { 0 }
71
+ );
72
+ }
73
  _ => return Err("unsupported contract or arguments".into()),
74
  }
75
  Ok(())
crates/urt-gameplay/src/lib.rs CHANGED
@@ -145,4 +145,5 @@ mod tests {
145
  }
146
  }
147
 
 
148
  pub mod protected;
 
145
  }
146
  }
147
 
148
+ pub mod mode10;
149
  pub mod protected;
crates/urt-gameplay/src/mode10.rs ADDED
@@ -0,0 +1,89 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ //! QVM206128 entry gate and state publication; no world/event allocation.
2
+ #[derive(Clone, Copy, Debug, PartialEq, Eq)]
3
+ pub struct State {
4
+ pub flags104: u32,
5
+ pub flags220: u32,
6
+ pub flags236: u32,
7
+ pub health: i32,
8
+ pub meter: i32,
9
+ pub movement: i32,
10
+ pub progress: u32,
11
+ pub heat_bits: u32,
12
+ pub clock: i32,
13
+ pub entity_health: i32,
14
+ }
15
+ /// Returns whether event106 and the remaining interception lifecycle are needed.
16
+ /// Caller must supply an existing client, as required by the source routine.
17
+ pub fn enter(mode: i32, blocked: bool, now: i32, state: State) -> (State, bool) {
18
+ if mode != 10 || state.movement == 3 || blocked {
19
+ return (state, false);
20
+ }
21
+ (
22
+ State {
23
+ flags104: (state.flags104 & !2) | 16,
24
+ flags220: (state.flags220 & !992) | 16384,
25
+ flags236: state.flags236 & !1,
26
+ health: 50,
27
+ meter: 15000,
28
+ movement: 4,
29
+ progress: 0,
30
+ heat_bits: 0,
31
+ clock: now,
32
+ entity_health: 50,
33
+ },
34
+ true,
35
+ )
36
+ }
37
+ #[cfg(test)]
38
+ mod tests {
39
+ use super::*;
40
+ fn state() -> State {
41
+ State {
42
+ flags104: u32::MAX,
43
+ flags220: u32::MAX,
44
+ flags236: u32::MAX,
45
+ health: -1,
46
+ meter: 9,
47
+ movement: 0,
48
+ progress: 19,
49
+ heat_bits: 0x7fc00000,
50
+ clock: 5,
51
+ entity_health: 3,
52
+ }
53
+ }
54
+ #[test]
55
+ fn all_early_gates_preserve_every_word() {
56
+ let s = state();
57
+ assert_eq!(enter(9, false, 100, s), (s, false));
58
+ assert_eq!(enter(10, true, 100, s), (s, false));
59
+ let spectator = State { movement: 3, ..s };
60
+ assert_eq!(enter(10, false, 100, spectator), (spectator, false));
61
+ }
62
+ #[test]
63
+ fn active_masks_keep_high_bits_and_publish_health() {
64
+ let (r, active) = enter(10, false, 100, state());
65
+ assert!(active);
66
+ assert_eq!(r.flags104, u32::MAX & !2);
67
+ assert_eq!(r.flags220, u32::MAX & !992);
68
+ assert_eq!(r.flags236, u32::MAX & !1);
69
+ assert_eq!((r.health, r.entity_health, r.meter), (50, 50, 15000));
70
+ assert_eq!((r.progress, r.heat_bits, r.clock), (0, 0, 100));
71
+ }
72
+ #[test]
73
+ fn zero_flags_and_signed_clock() {
74
+ let (r, active) = enter(
75
+ 10,
76
+ false,
77
+ i32::MIN,
78
+ State {
79
+ flags104: 0,
80
+ flags220: 0,
81
+ flags236: 0,
82
+ ..state()
83
+ },
84
+ );
85
+ assert!(active);
86
+ assert_eq!((r.flags104, r.flags220, r.flags236), (16, 16384, 0));
87
+ assert_eq!(r.clock, i32::MIN);
88
+ }
89
+ }
docs/ASSET_PIPELINE_TODO.md CHANGED
@@ -895,3 +895,6 @@ Research progress: RE-742 [report](research/QVM_HEALTH_MODE10.md); original asse
895
 
896
 
897
  Research progress: RE-743 [report](research/RUST_PROTECTED_UPDATE.md); original assets unchanged.
 
 
 
 
895
 
896
 
897
  Research progress: RE-743 [report](research/RUST_PROTECTED_UPDATE.md); original assets unchanged.
898
+
899
+
900
+ Research progress: RE-744 [report](research/RUST_MODE10_ENTRY.md); original assets unchanged.
docs/FINDINGS.md CHANGED
@@ -1241,3 +1241,6 @@ RE-725–734 batch: [health, contact and Rust impulse findings](research/QVM_HEA
1241
 
1242
 
1243
  **RE-743 — Rust protected progress and completion primitive:** Rust now reproduces protected progress accumulation, threshold completion, flag cleanup and event selection against all recovered finite152386 fixtures. [Evidence](research/RUST_PROTECTED_UPDATE.md).
 
 
 
 
1241
 
1242
 
1243
  **RE-743 — Rust protected progress and completion primitive:** Rust now reproduces protected progress accumulation, threshold completion, flag cleanup and event selection against all recovered finite152386 fixtures. [Evidence](research/RUST_PROTECTED_UPDATE.md).
1244
+
1245
+
1246
+ **RE-744 — Rust mode10 gate and protected-state entry primitive:** Rust now preserves every entry-gated word and reproduces mode10 protected-state publication across36 source fixtures. [Evidence](research/RUST_MODE10_ENTRY.md).
docs/PROVISIONAL_TODO.md CHANGED
@@ -1230,3 +1230,6 @@ Research progress: RE-742 [report](research/QVM_HEALTH_MODE10.md); full native/p
1230
 
1231
 
1232
  Research progress: RE-743 [report](research/RUST_PROTECTED_UPDATE.md); full native/platform/game scope remains open.
 
 
 
 
1230
 
1231
 
1232
  Research progress: RE-743 [report](research/RUST_PROTECTED_UPDATE.md); full native/platform/game scope remains open.
1233
+
1234
+
1235
+ Research progress: RE-744 [report](research/RUST_MODE10_ENTRY.md); full native/platform/game scope remains open.
docs/RESEARCH_LEDGER.md CHANGED
@@ -1363,3 +1363,8 @@ Additional RE-742 focused health regression: `cargo xtask test-group health` pas
1363
  ## 2026-10-21 — RE-743 Rust protected progress and completion primitive
1364
 
1365
  Rust now reproduces protected progress accumulation, threshold completion, flag cleanup and event selection against all recovered finite152386 fixtures. Focused `cargo xtask test-group gameplay` passes (7 Python tests); selected reports regenerate twice byte-identically, with storage, links and whitespace guards. New report: 23783 bytes. Full-suite validation is deferred to the tenth batch commit. Rust gameplay crate changed; focused gameplay runner regenerates both impulse and protected parity reports, and runs only the gameplay package tests via the impulse producer. No workspace/full suite before commit ten.
 
 
 
 
 
 
1363
  ## 2026-10-21 — RE-743 Rust protected progress and completion primitive
1364
 
1365
  Rust now reproduces protected progress accumulation, threshold completion, flag cleanup and event selection against all recovered finite152386 fixtures. Focused `cargo xtask test-group gameplay` passes (7 Python tests); selected reports regenerate twice byte-identically, with storage, links and whitespace guards. New report: 23783 bytes. Full-suite validation is deferred to the tenth batch commit. Rust gameplay crate changed; focused gameplay runner regenerates both impulse and protected parity reports, and runs only the gameplay package tests via the impulse producer. No workspace/full suite before commit ten.
1366
+
1367
+
1368
+ ## 2026-10-21 — RE-744 Rust mode10 gate and protected-state entry primitive
1369
+
1370
+ Rust now preserves every entry-gated word and reproduces mode10 protected-state publication across36 source fixtures. Focused `cargo xtask test-group gameplay` passes (10 Python tests); selected reports regenerate twice byte-identically, with storage, links and whitespace guards. New report: 24759 bytes. Full-suite validation is deferred to the tenth batch commit. Rust gameplay crate changed; focused gameplay validates all existing Rust parity contracts and scoped package tests. Full workspace validation remains deferred until the tenth commit.
docs/REVERSE_ENGINEERING_TODO.md CHANGED
@@ -1273,3 +1273,6 @@ Purpose: turn the supplied installation into an evidence-backed specification of
1273
 
1274
 
1275
  - [x] RE-743 Rust protected progress and completion primitive ([report](research/RUST_PROTECTED_UPDATE.md)).
 
 
 
 
1273
 
1274
 
1275
  - [x] RE-743 Rust protected progress and completion primitive ([report](research/RUST_PROTECTED_UPDATE.md)).
1276
+
1277
+
1278
+ - [x] RE-744 Rust mode10 gate and protected-state entry primitive ([report](research/RUST_MODE10_ENTRY.md)).
docs/research/README.md CHANGED
@@ -831,3 +831,6 @@ The extension collector adds five focused tests for native tail calls, command-r
831
 
832
 
833
  [RE-743: Rust protected progress and completion primitive](RUST_PROTECTED_UPDATE.md).
 
 
 
 
831
 
832
 
833
  [RE-743: Rust protected progress and completion primitive](RUST_PROTECTED_UPDATE.md).
834
+
835
+
836
+ [RE-744: Rust mode10 gate and protected-state entry primitive](RUST_MODE10_ENTRY.md).
docs/research/RUST_MODE10_ENTRY.md ADDED
@@ -0,0 +1,7 @@
 
 
 
 
 
 
 
 
1
+ # Rust mode10 gate and protected-state entry primitive
2
+
3
+ RE-744. Reproduce with `python3 scripts/analyze_rust_mode10_entry.py`; validate with `cargo xtask test-group gameplay`. See the [machine report](rust-mode10-entry.json).
4
+
5
+ Added pure State/enter with explicit existing-client precondition, mode/state/round gates, source bit masks, synchronized health50, meter15000 and supplied clock publication. Exact-word source parity covers both gate outcomes; three Rust unit tests additionally cover high flags, all early gates and signed clocks. Event106 allocation and subsequent interception stages remain caller work.
6
+
7
+ No original executable/full VM/native world collision or rendering runs. Supplied callback/native responses and fixture domains remain explicit; complete macOS/Linux Rust/Bevy/Solari gameplay remains open.
docs/research/rust-health-impulse.json CHANGED
@@ -2985,7 +2985,7 @@
2985
  "exit_code": 2
2986
  }
2987
  ],
2988
- "rust_unit_tests": 12,
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": 15,
2989
  "source_report": "docs/research/qvm-health-impulse.json",
2990
  "source_report_sha256": "625fd8064004ea6dbdf398d51d0af844d9c635ff04c0a0790886dddb6ab81e71"
2991
  }
docs/research/rust-mode10-entry.json ADDED
@@ -0,0 +1,1303 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "limits": "Pure Rust entry gate/state publication words match36 source206128 fixtures. Existing client required; event106 allocation and remaining lifecycle deferred. Host macOS only.",
3
+ "probes": [
4
+ {
5
+ "input": {
6
+ "blocked": 0,
7
+ "c104": 0,
8
+ "c220": 0,
9
+ "c236": 0,
10
+ "mode": 3,
11
+ "state": 0
12
+ },
13
+ "rust": {
14
+ "104": 0,
15
+ "184": 7,
16
+ "208": 7,
17
+ "220": 0,
18
+ "232": 31990,
19
+ "236": 0,
20
+ "4": 0,
21
+ "6324": 7,
22
+ "6332": 1092616192,
23
+ "entity_health": 100,
24
+ "event": 0
25
+ },
26
+ "source": {
27
+ "104": 0,
28
+ "184": 7,
29
+ "208": 7,
30
+ "220": 0,
31
+ "232": 31990,
32
+ "236": 0,
33
+ "4": 0,
34
+ "6324": 7,
35
+ "6332": 1092616192,
36
+ "entity_health": 100,
37
+ "event": 0
38
+ }
39
+ },
40
+ {
41
+ "input": {
42
+ "blocked": 0,
43
+ "c104": 131071,
44
+ "c220": 131071,
45
+ "c236": 131071,
46
+ "mode": 3,
47
+ "state": 0
48
+ },
49
+ "rust": {
50
+ "104": 131071,
51
+ "184": 7,
52
+ "208": 7,
53
+ "220": 131071,
54
+ "232": 31990,
55
+ "236": 131071,
56
+ "4": 0,
57
+ "6324": 7,
58
+ "6332": 1092616192,
59
+ "entity_health": 100,
60
+ "event": 0
61
+ },
62
+ "source": {
63
+ "104": 131071,
64
+ "184": 7,
65
+ "208": 7,
66
+ "220": 131071,
67
+ "232": 31990,
68
+ "236": 131071,
69
+ "4": 0,
70
+ "6324": 7,
71
+ "6332": 1092616192,
72
+ "entity_health": 100,
73
+ "event": 0
74
+ }
75
+ },
76
+ {
77
+ "input": {
78
+ "blocked": 1,
79
+ "c104": 0,
80
+ "c220": 0,
81
+ "c236": 0,
82
+ "mode": 3,
83
+ "state": 0
84
+ },
85
+ "rust": {
86
+ "104": 0,
87
+ "184": 7,
88
+ "208": 7,
89
+ "220": 0,
90
+ "232": 31990,
91
+ "236": 0,
92
+ "4": 0,
93
+ "6324": 7,
94
+ "6332": 1092616192,
95
+ "entity_health": 100,
96
+ "event": 0
97
+ },
98
+ "source": {
99
+ "104": 0,
100
+ "184": 7,
101
+ "208": 7,
102
+ "220": 0,
103
+ "232": 31990,
104
+ "236": 0,
105
+ "4": 0,
106
+ "6324": 7,
107
+ "6332": 1092616192,
108
+ "entity_health": 100,
109
+ "event": 0
110
+ }
111
+ },
112
+ {
113
+ "input": {
114
+ "blocked": 1,
115
+ "c104": 131071,
116
+ "c220": 131071,
117
+ "c236": 131071,
118
+ "mode": 3,
119
+ "state": 0
120
+ },
121
+ "rust": {
122
+ "104": 131071,
123
+ "184": 7,
124
+ "208": 7,
125
+ "220": 131071,
126
+ "232": 31990,
127
+ "236": 131071,
128
+ "4": 0,
129
+ "6324": 7,
130
+ "6332": 1092616192,
131
+ "entity_health": 100,
132
+ "event": 0
133
+ },
134
+ "source": {
135
+ "104": 131071,
136
+ "184": 7,
137
+ "208": 7,
138
+ "220": 131071,
139
+ "232": 31990,
140
+ "236": 131071,
141
+ "4": 0,
142
+ "6324": 7,
143
+ "6332": 1092616192,
144
+ "entity_health": 100,
145
+ "event": 0
146
+ }
147
+ },
148
+ {
149
+ "input": {
150
+ "blocked": 0,
151
+ "c104": 0,
152
+ "c220": 0,
153
+ "c236": 0,
154
+ "mode": 3,
155
+ "state": 3
156
+ },
157
+ "rust": {
158
+ "104": 0,
159
+ "184": 7,
160
+ "208": 7,
161
+ "220": 0,
162
+ "232": 31990,
163
+ "236": 0,
164
+ "4": 3,
165
+ "6324": 7,
166
+ "6332": 1092616192,
167
+ "entity_health": 100,
168
+ "event": 0
169
+ },
170
+ "source": {
171
+ "104": 0,
172
+ "184": 7,
173
+ "208": 7,
174
+ "220": 0,
175
+ "232": 31990,
176
+ "236": 0,
177
+ "4": 3,
178
+ "6324": 7,
179
+ "6332": 1092616192,
180
+ "entity_health": 100,
181
+ "event": 0
182
+ }
183
+ },
184
+ {
185
+ "input": {
186
+ "blocked": 0,
187
+ "c104": 131071,
188
+ "c220": 131071,
189
+ "c236": 131071,
190
+ "mode": 3,
191
+ "state": 3
192
+ },
193
+ "rust": {
194
+ "104": 131071,
195
+ "184": 7,
196
+ "208": 7,
197
+ "220": 131071,
198
+ "232": 31990,
199
+ "236": 131071,
200
+ "4": 3,
201
+ "6324": 7,
202
+ "6332": 1092616192,
203
+ "entity_health": 100,
204
+ "event": 0
205
+ },
206
+ "source": {
207
+ "104": 131071,
208
+ "184": 7,
209
+ "208": 7,
210
+ "220": 131071,
211
+ "232": 31990,
212
+ "236": 131071,
213
+ "4": 3,
214
+ "6324": 7,
215
+ "6332": 1092616192,
216
+ "entity_health": 100,
217
+ "event": 0
218
+ }
219
+ },
220
+ {
221
+ "input": {
222
+ "blocked": 1,
223
+ "c104": 0,
224
+ "c220": 0,
225
+ "c236": 0,
226
+ "mode": 3,
227
+ "state": 3
228
+ },
229
+ "rust": {
230
+ "104": 0,
231
+ "184": 7,
232
+ "208": 7,
233
+ "220": 0,
234
+ "232": 31990,
235
+ "236": 0,
236
+ "4": 3,
237
+ "6324": 7,
238
+ "6332": 1092616192,
239
+ "entity_health": 100,
240
+ "event": 0
241
+ },
242
+ "source": {
243
+ "104": 0,
244
+ "184": 7,
245
+ "208": 7,
246
+ "220": 0,
247
+ "232": 31990,
248
+ "236": 0,
249
+ "4": 3,
250
+ "6324": 7,
251
+ "6332": 1092616192,
252
+ "entity_health": 100,
253
+ "event": 0
254
+ }
255
+ },
256
+ {
257
+ "input": {
258
+ "blocked": 1,
259
+ "c104": 131071,
260
+ "c220": 131071,
261
+ "c236": 131071,
262
+ "mode": 3,
263
+ "state": 3
264
+ },
265
+ "rust": {
266
+ "104": 131071,
267
+ "184": 7,
268
+ "208": 7,
269
+ "220": 131071,
270
+ "232": 31990,
271
+ "236": 131071,
272
+ "4": 3,
273
+ "6324": 7,
274
+ "6332": 1092616192,
275
+ "entity_health": 100,
276
+ "event": 0
277
+ },
278
+ "source": {
279
+ "104": 131071,
280
+ "184": 7,
281
+ "208": 7,
282
+ "220": 131071,
283
+ "232": 31990,
284
+ "236": 131071,
285
+ "4": 3,
286
+ "6324": 7,
287
+ "6332": 1092616192,
288
+ "entity_health": 100,
289
+ "event": 0
290
+ }
291
+ },
292
+ {
293
+ "input": {
294
+ "blocked": 0,
295
+ "c104": 0,
296
+ "c220": 0,
297
+ "c236": 0,
298
+ "mode": 3,
299
+ "state": 4
300
+ },
301
+ "rust": {
302
+ "104": 0,
303
+ "184": 7,
304
+ "208": 7,
305
+ "220": 0,
306
+ "232": 31990,
307
+ "236": 0,
308
+ "4": 4,
309
+ "6324": 7,
310
+ "6332": 1092616192,
311
+ "entity_health": 100,
312
+ "event": 0
313
+ },
314
+ "source": {
315
+ "104": 0,
316
+ "184": 7,
317
+ "208": 7,
318
+ "220": 0,
319
+ "232": 31990,
320
+ "236": 0,
321
+ "4": 4,
322
+ "6324": 7,
323
+ "6332": 1092616192,
324
+ "entity_health": 100,
325
+ "event": 0
326
+ }
327
+ },
328
+ {
329
+ "input": {
330
+ "blocked": 0,
331
+ "c104": 131071,
332
+ "c220": 131071,
333
+ "c236": 131071,
334
+ "mode": 3,
335
+ "state": 4
336
+ },
337
+ "rust": {
338
+ "104": 131071,
339
+ "184": 7,
340
+ "208": 7,
341
+ "220": 131071,
342
+ "232": 31990,
343
+ "236": 131071,
344
+ "4": 4,
345
+ "6324": 7,
346
+ "6332": 1092616192,
347
+ "entity_health": 100,
348
+ "event": 0
349
+ },
350
+ "source": {
351
+ "104": 131071,
352
+ "184": 7,
353
+ "208": 7,
354
+ "220": 131071,
355
+ "232": 31990,
356
+ "236": 131071,
357
+ "4": 4,
358
+ "6324": 7,
359
+ "6332": 1092616192,
360
+ "entity_health": 100,
361
+ "event": 0
362
+ }
363
+ },
364
+ {
365
+ "input": {
366
+ "blocked": 1,
367
+ "c104": 0,
368
+ "c220": 0,
369
+ "c236": 0,
370
+ "mode": 3,
371
+ "state": 4
372
+ },
373
+ "rust": {
374
+ "104": 0,
375
+ "184": 7,
376
+ "208": 7,
377
+ "220": 0,
378
+ "232": 31990,
379
+ "236": 0,
380
+ "4": 4,
381
+ "6324": 7,
382
+ "6332": 1092616192,
383
+ "entity_health": 100,
384
+ "event": 0
385
+ },
386
+ "source": {
387
+ "104": 0,
388
+ "184": 7,
389
+ "208": 7,
390
+ "220": 0,
391
+ "232": 31990,
392
+ "236": 0,
393
+ "4": 4,
394
+ "6324": 7,
395
+ "6332": 1092616192,
396
+ "entity_health": 100,
397
+ "event": 0
398
+ }
399
+ },
400
+ {
401
+ "input": {
402
+ "blocked": 1,
403
+ "c104": 131071,
404
+ "c220": 131071,
405
+ "c236": 131071,
406
+ "mode": 3,
407
+ "state": 4
408
+ },
409
+ "rust": {
410
+ "104": 131071,
411
+ "184": 7,
412
+ "208": 7,
413
+ "220": 131071,
414
+ "232": 31990,
415
+ "236": 131071,
416
+ "4": 4,
417
+ "6324": 7,
418
+ "6332": 1092616192,
419
+ "entity_health": 100,
420
+ "event": 0
421
+ },
422
+ "source": {
423
+ "104": 131071,
424
+ "184": 7,
425
+ "208": 7,
426
+ "220": 131071,
427
+ "232": 31990,
428
+ "236": 131071,
429
+ "4": 4,
430
+ "6324": 7,
431
+ "6332": 1092616192,
432
+ "entity_health": 100,
433
+ "event": 0
434
+ }
435
+ },
436
+ {
437
+ "input": {
438
+ "blocked": 0,
439
+ "c104": 0,
440
+ "c220": 0,
441
+ "c236": 0,
442
+ "mode": 9,
443
+ "state": 0
444
+ },
445
+ "rust": {
446
+ "104": 0,
447
+ "184": 7,
448
+ "208": 7,
449
+ "220": 0,
450
+ "232": 31990,
451
+ "236": 0,
452
+ "4": 0,
453
+ "6324": 7,
454
+ "6332": 1092616192,
455
+ "entity_health": 100,
456
+ "event": 0
457
+ },
458
+ "source": {
459
+ "104": 0,
460
+ "184": 7,
461
+ "208": 7,
462
+ "220": 0,
463
+ "232": 31990,
464
+ "236": 0,
465
+ "4": 0,
466
+ "6324": 7,
467
+ "6332": 1092616192,
468
+ "entity_health": 100,
469
+ "event": 0
470
+ }
471
+ },
472
+ {
473
+ "input": {
474
+ "blocked": 0,
475
+ "c104": 131071,
476
+ "c220": 131071,
477
+ "c236": 131071,
478
+ "mode": 9,
479
+ "state": 0
480
+ },
481
+ "rust": {
482
+ "104": 131071,
483
+ "184": 7,
484
+ "208": 7,
485
+ "220": 131071,
486
+ "232": 31990,
487
+ "236": 131071,
488
+ "4": 0,
489
+ "6324": 7,
490
+ "6332": 1092616192,
491
+ "entity_health": 100,
492
+ "event": 0
493
+ },
494
+ "source": {
495
+ "104": 131071,
496
+ "184": 7,
497
+ "208": 7,
498
+ "220": 131071,
499
+ "232": 31990,
500
+ "236": 131071,
501
+ "4": 0,
502
+ "6324": 7,
503
+ "6332": 1092616192,
504
+ "entity_health": 100,
505
+ "event": 0
506
+ }
507
+ },
508
+ {
509
+ "input": {
510
+ "blocked": 1,
511
+ "c104": 0,
512
+ "c220": 0,
513
+ "c236": 0,
514
+ "mode": 9,
515
+ "state": 0
516
+ },
517
+ "rust": {
518
+ "104": 0,
519
+ "184": 7,
520
+ "208": 7,
521
+ "220": 0,
522
+ "232": 31990,
523
+ "236": 0,
524
+ "4": 0,
525
+ "6324": 7,
526
+ "6332": 1092616192,
527
+ "entity_health": 100,
528
+ "event": 0
529
+ },
530
+ "source": {
531
+ "104": 0,
532
+ "184": 7,
533
+ "208": 7,
534
+ "220": 0,
535
+ "232": 31990,
536
+ "236": 0,
537
+ "4": 0,
538
+ "6324": 7,
539
+ "6332": 1092616192,
540
+ "entity_health": 100,
541
+ "event": 0
542
+ }
543
+ },
544
+ {
545
+ "input": {
546
+ "blocked": 1,
547
+ "c104": 131071,
548
+ "c220": 131071,
549
+ "c236": 131071,
550
+ "mode": 9,
551
+ "state": 0
552
+ },
553
+ "rust": {
554
+ "104": 131071,
555
+ "184": 7,
556
+ "208": 7,
557
+ "220": 131071,
558
+ "232": 31990,
559
+ "236": 131071,
560
+ "4": 0,
561
+ "6324": 7,
562
+ "6332": 1092616192,
563
+ "entity_health": 100,
564
+ "event": 0
565
+ },
566
+ "source": {
567
+ "104": 131071,
568
+ "184": 7,
569
+ "208": 7,
570
+ "220": 131071,
571
+ "232": 31990,
572
+ "236": 131071,
573
+ "4": 0,
574
+ "6324": 7,
575
+ "6332": 1092616192,
576
+ "entity_health": 100,
577
+ "event": 0
578
+ }
579
+ },
580
+ {
581
+ "input": {
582
+ "blocked": 0,
583
+ "c104": 0,
584
+ "c220": 0,
585
+ "c236": 0,
586
+ "mode": 9,
587
+ "state": 3
588
+ },
589
+ "rust": {
590
+ "104": 0,
591
+ "184": 7,
592
+ "208": 7,
593
+ "220": 0,
594
+ "232": 31990,
595
+ "236": 0,
596
+ "4": 3,
597
+ "6324": 7,
598
+ "6332": 1092616192,
599
+ "entity_health": 100,
600
+ "event": 0
601
+ },
602
+ "source": {
603
+ "104": 0,
604
+ "184": 7,
605
+ "208": 7,
606
+ "220": 0,
607
+ "232": 31990,
608
+ "236": 0,
609
+ "4": 3,
610
+ "6324": 7,
611
+ "6332": 1092616192,
612
+ "entity_health": 100,
613
+ "event": 0
614
+ }
615
+ },
616
+ {
617
+ "input": {
618
+ "blocked": 0,
619
+ "c104": 131071,
620
+ "c220": 131071,
621
+ "c236": 131071,
622
+ "mode": 9,
623
+ "state": 3
624
+ },
625
+ "rust": {
626
+ "104": 131071,
627
+ "184": 7,
628
+ "208": 7,
629
+ "220": 131071,
630
+ "232": 31990,
631
+ "236": 131071,
632
+ "4": 3,
633
+ "6324": 7,
634
+ "6332": 1092616192,
635
+ "entity_health": 100,
636
+ "event": 0
637
+ },
638
+ "source": {
639
+ "104": 131071,
640
+ "184": 7,
641
+ "208": 7,
642
+ "220": 131071,
643
+ "232": 31990,
644
+ "236": 131071,
645
+ "4": 3,
646
+ "6324": 7,
647
+ "6332": 1092616192,
648
+ "entity_health": 100,
649
+ "event": 0
650
+ }
651
+ },
652
+ {
653
+ "input": {
654
+ "blocked": 1,
655
+ "c104": 0,
656
+ "c220": 0,
657
+ "c236": 0,
658
+ "mode": 9,
659
+ "state": 3
660
+ },
661
+ "rust": {
662
+ "104": 0,
663
+ "184": 7,
664
+ "208": 7,
665
+ "220": 0,
666
+ "232": 31990,
667
+ "236": 0,
668
+ "4": 3,
669
+ "6324": 7,
670
+ "6332": 1092616192,
671
+ "entity_health": 100,
672
+ "event": 0
673
+ },
674
+ "source": {
675
+ "104": 0,
676
+ "184": 7,
677
+ "208": 7,
678
+ "220": 0,
679
+ "232": 31990,
680
+ "236": 0,
681
+ "4": 3,
682
+ "6324": 7,
683
+ "6332": 1092616192,
684
+ "entity_health": 100,
685
+ "event": 0
686
+ }
687
+ },
688
+ {
689
+ "input": {
690
+ "blocked": 1,
691
+ "c104": 131071,
692
+ "c220": 131071,
693
+ "c236": 131071,
694
+ "mode": 9,
695
+ "state": 3
696
+ },
697
+ "rust": {
698
+ "104": 131071,
699
+ "184": 7,
700
+ "208": 7,
701
+ "220": 131071,
702
+ "232": 31990,
703
+ "236": 131071,
704
+ "4": 3,
705
+ "6324": 7,
706
+ "6332": 1092616192,
707
+ "entity_health": 100,
708
+ "event": 0
709
+ },
710
+ "source": {
711
+ "104": 131071,
712
+ "184": 7,
713
+ "208": 7,
714
+ "220": 131071,
715
+ "232": 31990,
716
+ "236": 131071,
717
+ "4": 3,
718
+ "6324": 7,
719
+ "6332": 1092616192,
720
+ "entity_health": 100,
721
+ "event": 0
722
+ }
723
+ },
724
+ {
725
+ "input": {
726
+ "blocked": 0,
727
+ "c104": 0,
728
+ "c220": 0,
729
+ "c236": 0,
730
+ "mode": 9,
731
+ "state": 4
732
+ },
733
+ "rust": {
734
+ "104": 0,
735
+ "184": 7,
736
+ "208": 7,
737
+ "220": 0,
738
+ "232": 31990,
739
+ "236": 0,
740
+ "4": 4,
741
+ "6324": 7,
742
+ "6332": 1092616192,
743
+ "entity_health": 100,
744
+ "event": 0
745
+ },
746
+ "source": {
747
+ "104": 0,
748
+ "184": 7,
749
+ "208": 7,
750
+ "220": 0,
751
+ "232": 31990,
752
+ "236": 0,
753
+ "4": 4,
754
+ "6324": 7,
755
+ "6332": 1092616192,
756
+ "entity_health": 100,
757
+ "event": 0
758
+ }
759
+ },
760
+ {
761
+ "input": {
762
+ "blocked": 0,
763
+ "c104": 131071,
764
+ "c220": 131071,
765
+ "c236": 131071,
766
+ "mode": 9,
767
+ "state": 4
768
+ },
769
+ "rust": {
770
+ "104": 131071,
771
+ "184": 7,
772
+ "208": 7,
773
+ "220": 131071,
774
+ "232": 31990,
775
+ "236": 131071,
776
+ "4": 4,
777
+ "6324": 7,
778
+ "6332": 1092616192,
779
+ "entity_health": 100,
780
+ "event": 0
781
+ },
782
+ "source": {
783
+ "104": 131071,
784
+ "184": 7,
785
+ "208": 7,
786
+ "220": 131071,
787
+ "232": 31990,
788
+ "236": 131071,
789
+ "4": 4,
790
+ "6324": 7,
791
+ "6332": 1092616192,
792
+ "entity_health": 100,
793
+ "event": 0
794
+ }
795
+ },
796
+ {
797
+ "input": {
798
+ "blocked": 1,
799
+ "c104": 0,
800
+ "c220": 0,
801
+ "c236": 0,
802
+ "mode": 9,
803
+ "state": 4
804
+ },
805
+ "rust": {
806
+ "104": 0,
807
+ "184": 7,
808
+ "208": 7,
809
+ "220": 0,
810
+ "232": 31990,
811
+ "236": 0,
812
+ "4": 4,
813
+ "6324": 7,
814
+ "6332": 1092616192,
815
+ "entity_health": 100,
816
+ "event": 0
817
+ },
818
+ "source": {
819
+ "104": 0,
820
+ "184": 7,
821
+ "208": 7,
822
+ "220": 0,
823
+ "232": 31990,
824
+ "236": 0,
825
+ "4": 4,
826
+ "6324": 7,
827
+ "6332": 1092616192,
828
+ "entity_health": 100,
829
+ "event": 0
830
+ }
831
+ },
832
+ {
833
+ "input": {
834
+ "blocked": 1,
835
+ "c104": 131071,
836
+ "c220": 131071,
837
+ "c236": 131071,
838
+ "mode": 9,
839
+ "state": 4
840
+ },
841
+ "rust": {
842
+ "104": 131071,
843
+ "184": 7,
844
+ "208": 7,
845
+ "220": 131071,
846
+ "232": 31990,
847
+ "236": 131071,
848
+ "4": 4,
849
+ "6324": 7,
850
+ "6332": 1092616192,
851
+ "entity_health": 100,
852
+ "event": 0
853
+ },
854
+ "source": {
855
+ "104": 131071,
856
+ "184": 7,
857
+ "208": 7,
858
+ "220": 131071,
859
+ "232": 31990,
860
+ "236": 131071,
861
+ "4": 4,
862
+ "6324": 7,
863
+ "6332": 1092616192,
864
+ "entity_health": 100,
865
+ "event": 0
866
+ }
867
+ },
868
+ {
869
+ "input": {
870
+ "blocked": 0,
871
+ "c104": 0,
872
+ "c220": 0,
873
+ "c236": 0,
874
+ "mode": 10,
875
+ "state": 0
876
+ },
877
+ "rust": {
878
+ "104": 16,
879
+ "184": 15000,
880
+ "208": 50,
881
+ "220": 16384,
882
+ "232": 0,
883
+ "236": 0,
884
+ "4": 4,
885
+ "6324": 10000,
886
+ "6332": 0,
887
+ "entity_health": 50,
888
+ "event": 106
889
+ },
890
+ "source": {
891
+ "104": 16,
892
+ "184": 15000,
893
+ "208": 50,
894
+ "220": 16384,
895
+ "232": 0,
896
+ "236": 0,
897
+ "4": 4,
898
+ "6324": 10000,
899
+ "6332": 0,
900
+ "entity_health": 50,
901
+ "event": 106
902
+ }
903
+ },
904
+ {
905
+ "input": {
906
+ "blocked": 0,
907
+ "c104": 131071,
908
+ "c220": 131071,
909
+ "c236": 131071,
910
+ "mode": 10,
911
+ "state": 0
912
+ },
913
+ "rust": {
914
+ "104": 131069,
915
+ "184": 15000,
916
+ "208": 50,
917
+ "220": 130079,
918
+ "232": 0,
919
+ "236": 131070,
920
+ "4": 4,
921
+ "6324": 10000,
922
+ "6332": 0,
923
+ "entity_health": 50,
924
+ "event": 106
925
+ },
926
+ "source": {
927
+ "104": 131069,
928
+ "184": 15000,
929
+ "208": 50,
930
+ "220": 130079,
931
+ "232": 0,
932
+ "236": 131070,
933
+ "4": 4,
934
+ "6324": 10000,
935
+ "6332": 0,
936
+ "entity_health": 50,
937
+ "event": 106
938
+ }
939
+ },
940
+ {
941
+ "input": {
942
+ "blocked": 1,
943
+ "c104": 0,
944
+ "c220": 0,
945
+ "c236": 0,
946
+ "mode": 10,
947
+ "state": 0
948
+ },
949
+ "rust": {
950
+ "104": 0,
951
+ "184": 7,
952
+ "208": 7,
953
+ "220": 0,
954
+ "232": 31990,
955
+ "236": 0,
956
+ "4": 0,
957
+ "6324": 7,
958
+ "6332": 1092616192,
959
+ "entity_health": 100,
960
+ "event": 0
961
+ },
962
+ "source": {
963
+ "104": 0,
964
+ "184": 7,
965
+ "208": 7,
966
+ "220": 0,
967
+ "232": 31990,
968
+ "236": 0,
969
+ "4": 0,
970
+ "6324": 7,
971
+ "6332": 1092616192,
972
+ "entity_health": 100,
973
+ "event": 0
974
+ }
975
+ },
976
+ {
977
+ "input": {
978
+ "blocked": 1,
979
+ "c104": 131071,
980
+ "c220": 131071,
981
+ "c236": 131071,
982
+ "mode": 10,
983
+ "state": 0
984
+ },
985
+ "rust": {
986
+ "104": 131071,
987
+ "184": 7,
988
+ "208": 7,
989
+ "220": 131071,
990
+ "232": 31990,
991
+ "236": 131071,
992
+ "4": 0,
993
+ "6324": 7,
994
+ "6332": 1092616192,
995
+ "entity_health": 100,
996
+ "event": 0
997
+ },
998
+ "source": {
999
+ "104": 131071,
1000
+ "184": 7,
1001
+ "208": 7,
1002
+ "220": 131071,
1003
+ "232": 31990,
1004
+ "236": 131071,
1005
+ "4": 0,
1006
+ "6324": 7,
1007
+ "6332": 1092616192,
1008
+ "entity_health": 100,
1009
+ "event": 0
1010
+ }
1011
+ },
1012
+ {
1013
+ "input": {
1014
+ "blocked": 0,
1015
+ "c104": 0,
1016
+ "c220": 0,
1017
+ "c236": 0,
1018
+ "mode": 10,
1019
+ "state": 3
1020
+ },
1021
+ "rust": {
1022
+ "104": 0,
1023
+ "184": 7,
1024
+ "208": 7,
1025
+ "220": 0,
1026
+ "232": 31990,
1027
+ "236": 0,
1028
+ "4": 3,
1029
+ "6324": 7,
1030
+ "6332": 1092616192,
1031
+ "entity_health": 100,
1032
+ "event": 0
1033
+ },
1034
+ "source": {
1035
+ "104": 0,
1036
+ "184": 7,
1037
+ "208": 7,
1038
+ "220": 0,
1039
+ "232": 31990,
1040
+ "236": 0,
1041
+ "4": 3,
1042
+ "6324": 7,
1043
+ "6332": 1092616192,
1044
+ "entity_health": 100,
1045
+ "event": 0
1046
+ }
1047
+ },
1048
+ {
1049
+ "input": {
1050
+ "blocked": 0,
1051
+ "c104": 131071,
1052
+ "c220": 131071,
1053
+ "c236": 131071,
1054
+ "mode": 10,
1055
+ "state": 3
1056
+ },
1057
+ "rust": {
1058
+ "104": 131071,
1059
+ "184": 7,
1060
+ "208": 7,
1061
+ "220": 131071,
1062
+ "232": 31990,
1063
+ "236": 131071,
1064
+ "4": 3,
1065
+ "6324": 7,
1066
+ "6332": 1092616192,
1067
+ "entity_health": 100,
1068
+ "event": 0
1069
+ },
1070
+ "source": {
1071
+ "104": 131071,
1072
+ "184": 7,
1073
+ "208": 7,
1074
+ "220": 131071,
1075
+ "232": 31990,
1076
+ "236": 131071,
1077
+ "4": 3,
1078
+ "6324": 7,
1079
+ "6332": 1092616192,
1080
+ "entity_health": 100,
1081
+ "event": 0
1082
+ }
1083
+ },
1084
+ {
1085
+ "input": {
1086
+ "blocked": 1,
1087
+ "c104": 0,
1088
+ "c220": 0,
1089
+ "c236": 0,
1090
+ "mode": 10,
1091
+ "state": 3
1092
+ },
1093
+ "rust": {
1094
+ "104": 0,
1095
+ "184": 7,
1096
+ "208": 7,
1097
+ "220": 0,
1098
+ "232": 31990,
1099
+ "236": 0,
1100
+ "4": 3,
1101
+ "6324": 7,
1102
+ "6332": 1092616192,
1103
+ "entity_health": 100,
1104
+ "event": 0
1105
+ },
1106
+ "source": {
1107
+ "104": 0,
1108
+ "184": 7,
1109
+ "208": 7,
1110
+ "220": 0,
1111
+ "232": 31990,
1112
+ "236": 0,
1113
+ "4": 3,
1114
+ "6324": 7,
1115
+ "6332": 1092616192,
1116
+ "entity_health": 100,
1117
+ "event": 0
1118
+ }
1119
+ },
1120
+ {
1121
+ "input": {
1122
+ "blocked": 1,
1123
+ "c104": 131071,
1124
+ "c220": 131071,
1125
+ "c236": 131071,
1126
+ "mode": 10,
1127
+ "state": 3
1128
+ },
1129
+ "rust": {
1130
+ "104": 131071,
1131
+ "184": 7,
1132
+ "208": 7,
1133
+ "220": 131071,
1134
+ "232": 31990,
1135
+ "236": 131071,
1136
+ "4": 3,
1137
+ "6324": 7,
1138
+ "6332": 1092616192,
1139
+ "entity_health": 100,
1140
+ "event": 0
1141
+ },
1142
+ "source": {
1143
+ "104": 131071,
1144
+ "184": 7,
1145
+ "208": 7,
1146
+ "220": 131071,
1147
+ "232": 31990,
1148
+ "236": 131071,
1149
+ "4": 3,
1150
+ "6324": 7,
1151
+ "6332": 1092616192,
1152
+ "entity_health": 100,
1153
+ "event": 0
1154
+ }
1155
+ },
1156
+ {
1157
+ "input": {
1158
+ "blocked": 0,
1159
+ "c104": 0,
1160
+ "c220": 0,
1161
+ "c236": 0,
1162
+ "mode": 10,
1163
+ "state": 4
1164
+ },
1165
+ "rust": {
1166
+ "104": 16,
1167
+ "184": 15000,
1168
+ "208": 50,
1169
+ "220": 16384,
1170
+ "232": 0,
1171
+ "236": 0,
1172
+ "4": 4,
1173
+ "6324": 10000,
1174
+ "6332": 0,
1175
+ "entity_health": 50,
1176
+ "event": 106
1177
+ },
1178
+ "source": {
1179
+ "104": 16,
1180
+ "184": 15000,
1181
+ "208": 50,
1182
+ "220": 16384,
1183
+ "232": 0,
1184
+ "236": 0,
1185
+ "4": 4,
1186
+ "6324": 10000,
1187
+ "6332": 0,
1188
+ "entity_health": 50,
1189
+ "event": 106
1190
+ }
1191
+ },
1192
+ {
1193
+ "input": {
1194
+ "blocked": 0,
1195
+ "c104": 131071,
1196
+ "c220": 131071,
1197
+ "c236": 131071,
1198
+ "mode": 10,
1199
+ "state": 4
1200
+ },
1201
+ "rust": {
1202
+ "104": 131069,
1203
+ "184": 15000,
1204
+ "208": 50,
1205
+ "220": 130079,
1206
+ "232": 0,
1207
+ "236": 131070,
1208
+ "4": 4,
1209
+ "6324": 10000,
1210
+ "6332": 0,
1211
+ "entity_health": 50,
1212
+ "event": 106
1213
+ },
1214
+ "source": {
1215
+ "104": 131069,
1216
+ "184": 15000,
1217
+ "208": 50,
1218
+ "220": 130079,
1219
+ "232": 0,
1220
+ "236": 131070,
1221
+ "4": 4,
1222
+ "6324": 10000,
1223
+ "6332": 0,
1224
+ "entity_health": 50,
1225
+ "event": 106
1226
+ }
1227
+ },
1228
+ {
1229
+ "input": {
1230
+ "blocked": 1,
1231
+ "c104": 0,
1232
+ "c220": 0,
1233
+ "c236": 0,
1234
+ "mode": 10,
1235
+ "state": 4
1236
+ },
1237
+ "rust": {
1238
+ "104": 0,
1239
+ "184": 7,
1240
+ "208": 7,
1241
+ "220": 0,
1242
+ "232": 31990,
1243
+ "236": 0,
1244
+ "4": 4,
1245
+ "6324": 7,
1246
+ "6332": 1092616192,
1247
+ "entity_health": 100,
1248
+ "event": 0
1249
+ },
1250
+ "source": {
1251
+ "104": 0,
1252
+ "184": 7,
1253
+ "208": 7,
1254
+ "220": 0,
1255
+ "232": 31990,
1256
+ "236": 0,
1257
+ "4": 4,
1258
+ "6324": 7,
1259
+ "6332": 1092616192,
1260
+ "entity_health": 100,
1261
+ "event": 0
1262
+ }
1263
+ },
1264
+ {
1265
+ "input": {
1266
+ "blocked": 1,
1267
+ "c104": 131071,
1268
+ "c220": 131071,
1269
+ "c236": 131071,
1270
+ "mode": 10,
1271
+ "state": 4
1272
+ },
1273
+ "rust": {
1274
+ "104": 131071,
1275
+ "184": 7,
1276
+ "208": 7,
1277
+ "220": 131071,
1278
+ "232": 31990,
1279
+ "236": 131071,
1280
+ "4": 4,
1281
+ "6324": 7,
1282
+ "6332": 1092616192,
1283
+ "entity_health": 100,
1284
+ "event": 0
1285
+ },
1286
+ "source": {
1287
+ "104": 131071,
1288
+ "184": 7,
1289
+ "208": 7,
1290
+ "220": 131071,
1291
+ "232": 31990,
1292
+ "236": 131071,
1293
+ "4": 4,
1294
+ "6324": 7,
1295
+ "6332": 1092616192,
1296
+ "entity_health": 100,
1297
+ "event": 0
1298
+ }
1299
+ }
1300
+ ],
1301
+ "source_report": "docs/research/qvm-mode10-entry.json",
1302
+ "source_report_sha256": "6bafa144aa0e8662b3d4d05df4242702d33effbae59dcc0e4ea113b876204ab7"
1303
+ }
scripts/analyze_rust_mode10_entry.py ADDED
@@ -0,0 +1,13 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ #!/usr/bin/env python3
2
+ """Rust mode10 entry parity against source gate/mask fixtures."""
3
+ import hashlib,json
4
+ from pathlib import Path
5
+ from rust_lifecycle_support import binary,result
6
+ from analyze_qvm import write_json
7
+
8
+ def main():
9
+ b=binary();path=Path('docs/research/qvm-mode10-entry.json');data=path.read_bytes();rows=[];keys=['104','220','236','208','184','4','232','6332','6324']
10
+ for p in json.loads(data)['probes']:
11
+ a=p['input'];c=p['initial']['client'];args=[a['mode'],a['blocked'],10000,*[c[k] for k in keys],p['initial']['entity']['684']];e={k:p['final']['client'][k] for k in keys};e.update(entity_health=p['final']['entity']['684'],event=106 if p['events'] else 0);rows.append({'input':a,'source':e,'rust':result(b,'entry',args)})
12
+ write_json(Path('docs/research/rust-mode10-entry.json'),{'source_report':str(path),'source_report_sha256':hashlib.sha256(data).hexdigest(),'probes':rows,'limits':'Pure Rust entry gate/state publication words match36 source206128 fixtures. Existing client required; event106 allocation and remaining lifecycle deferred. Host macOS only.'})
13
+ if __name__=='__main__':main()
scripts/test_rust_mode10_entry.py ADDED
@@ -0,0 +1,11 @@
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import hashlib,json,unittest
2
+ from pathlib import Path
3
+ class RustMode10EntryTests(unittest.TestCase):
4
+ @classmethod
5
+ def setUpClass(cls):cls.r=json.loads(Path('docs/research/rust-mode10-entry.json').read_text())
6
+ def test_all_gate_mask_and_state_words(self):
7
+ self.assertEqual(len(self.r['probes']),36)
8
+ for p in self.r['probes']:self.assertEqual(p['rust'],p['source'],p['input'])
9
+ def test_source_identity(self):self.assertEqual(hashlib.sha256(Path(self.r['source_report']).read_bytes()).hexdigest(),self.r['source_report_sha256'])
10
+ def test_both_gate_outcomes_present(self):self.assertEqual({p['rust']['event'] for p in self.r['probes']},{0,106})
11
+ if __name__=='__main__':unittest.main()
xtask/checks.tsv CHANGED
@@ -1200,3 +1200,12 @@ edge Cargo.toml scripts/analyze_rust_protected_update.py
1200
  edge Cargo.lock scripts/analyze_rust_protected_update.py
1201
  edge crates/urt-gameplay/Cargo.toml scripts/analyze_rust_protected_update.py
1202
  edge crates/urt-gameplay/src/lib.rs scripts/analyze_rust_protected_update.py
 
 
 
 
 
 
 
 
 
 
1200
  edge Cargo.lock scripts/analyze_rust_protected_update.py
1201
  edge crates/urt-gameplay/Cargo.toml scripts/analyze_rust_protected_update.py
1202
  edge crates/urt-gameplay/src/lib.rs scripts/analyze_rust_protected_update.py
1203
+ edge Cargo.toml scripts/analyze_rust_mode10_entry.py
1204
+ edge Cargo.lock scripts/analyze_rust_mode10_entry.py
1205
+ edge crates/urt-gameplay/Cargo.toml scripts/analyze_rust_mode10_entry.py
1206
+ edge crates/urt-gameplay/src/lib.rs scripts/analyze_rust_mode10_entry.py
1207
+ edge crates/urt-gameplay/src/mode10.rs scripts/analyze_rust_mode10_entry.py
1208
+ edge crates/urt-gameplay/src/bin/urt-lifecycle.rs scripts/analyze_rust_mode10_entry.py
1209
+ group gameplay scripts/analyze_rust_mode10_entry.py
1210
+ report scripts/analyze_rust_mode10_entry.py docs/research/rust-mode10-entry.json
1211
+ edge docs/research/rust-mode10-entry.json scripts/test_rust_mode10_entry.py