Inside the simulated world.
The state model, directed memory graph and controlled replay experiment, with the implementation details needed to read each drawing.
BI–01 / Computational anatomy
Read the architecture as a sequence of decisions.
A command first passes through response-template matching. An exact or parameterized match can return an authored answer without consulting the modeled shell. Otherwise the shell parser dispatches built-in commands against World state. An unresolved command returns exit 127 and an unknown-source label.
This distinction matters when interpreting a simulation: a successful response may demonstrate that the template matched, rather than that the simulator reproduces the mechanism of the real command.
| Component | Implementation fields | Why it matters |
|---|---|---|
| Identity and platform |
worldIp, hostname, domain, username, platform
|
Select the context in which commands are interpreted. |
| Filesystem |
fs; paths, entries and case-sensitivity mode
|
Read, write and directory operations use the virtual entries. |
| Environment |
env, cwd
|
Relative paths and environment expansion depend on these values. |
| Service observations |
services.merged, services.history
|
A seeded service listing is a rendering of stored observations. |
| Response rules |
templates.exact, templates.patterns
|
A template match precedes the modeled shell. A plausible response can be authored. |
| Accounts and processes |
users, groups, processes
|
Commands return the model’s records, not a host-machine inventory. |
| Configuration |
simTimeoutSec, useResponseTemplates
|
Configuration is included in the comparison; inclusion alone does not prove an option is enforced. |
| Session memory |
chunks, observed, _lastSuccess
|
Recorded separately from World. The replay comparison uses World.run; the memory experiment uses Session.execute. |
Two execution paths
World.run(command) produces a command result and any modeled state changes. Session.execute(command) additionally records a memory chunk, writes a command artifact to the virtual filesystem, and requests suggestions when the command fails. The companion’s replay and memory experiments use these different paths explicitly.
BI–02 / Graph and feature construction
An observation can add an edge, not just a count.
The discovery fixture executes nmap, net view and net user. The classifier maps them to T1046, T1135 and T1087. A successful transition from T1046 to T1135 strengthens an existing edge. The next transition, T1135 to T1087, creates an observed edge absent from the built-in graph.
Graph position is chosen for readability. Edge direction and weights come from the implementation; spatial proximity in the drawing does not represent similarity.
Compute the two observed weights
The added contribution is 0.6 × (count / maxCount) × exp(−ln(2) × age / 30). In this three-step run, both transition counts are one. At logical tick 3, the first observation is one tick old and the second is fresh.
T1046 → T1135: 0.4 + 0.6 × 2^(−1/30) ≈ 0.9863
T1135 → T1087: 0 + 0.6 × 2^0 = 0.6000
| Directed edge | Before | After tick 3 | Evidence |
|---|---|---|---|
T1595 → T1046
|
0.4000 | 0.4000 | Built-in only |
T1046 → T1135
|
0.4000 | 0.9863 | Observed in this run |
T1046 → T1087
|
0.4000 | 0.4000 | Built-in only |
T1046 → T1018
|
0.4000 | 0.4000 | Built-in only |
T1018 → T1087
|
0.4000 | 0.4000 | Built-in only |
T1135 → T1039
|
0.4000 | 0.4000 | Built-in only |
T1135 → T1087
|
Absent | 0.6000 | Observed in this run |
T1087 → T1649
|
0.4000 | 0.4000 | Built-in only |
T1087 → T1078
|
0.4000 | 0.4000 | Built-in only |
T1649 → T1550
|
0.4000 | 0.4000 | Built-in only |
T1078 → T1021
|
0.4000 | 0.4000 | Built-in only |
T1078 → T1550
|
0.4000 | 0.4000 | Built-in only |
T1550 → T1021.002
|
0.4000 | 0.4000 | Built-in only |
T1021 → T1021.002
|
0.4000 | 0.4000 | Built-in only |
What goes into a technique vector?
Each technique receives a feature of weight 1.0 for its own identifier, 0.8 for each listed CAPEC identifier, and 0.6 for its tactic. These are categorical features, not language embeddings. Distinct techniques can therefore have nonzero cosine similarity when they share a tactic or CAPEC feature.
| Technique | Tactic | CAPEC features | Built-in outgoing edges |
|---|---|---|---|
T1595
Active Scanning |
reconnaissance | CAPEC-169 | T1046 |
T1046
Network Service Discovery |
discovery | CAPEC-300 | T1135, T1087, T1018 |
T1018
Remote System Discovery |
discovery | CAPEC-292 | T1087 |
T1135
Network Share Discovery |
discovery | CAPEC-643 | T1039 |
T1087
Account Discovery |
discovery | CAPEC-575 | T1649, T1078 |
T1039
Data from Network Shared Drive |
collection | CAPEC-639 | No outgoing built-in edges |
T1649
Steal or Forge Authentication Certificates |
credential-access | None in the demo slice | T1550 |
T1078
Valid Accounts |
initial-access | CAPEC-560 | T1021, T1550 |
T1550
Use Alternate Authentication Material |
lateral-movement | None in the demo slice | T1021.002 |
T1021
Remote Services |
lateral-movement | CAPEC-555 | T1021.002 |
T1021.002
SMB/Windows Admin Shares |
lateral-movement | CAPEC-561 | No outgoing built-in edges |
How the ranking combines signals
The implementation adds 0.45 times cosine similarity, 0.25 times path evidence and 0.30 times the random-walk score. Path evidence enumerates simple paths up to four edges, sums their edge-weight products, normalizes by at least one or the largest edge weight, and caps at one. The random walk uses a 0.85 continuation factor and stops after ten iterations or an L1 change below 10⁻⁶; mass at nodes without outgoing edges is not redistributed. These scores are ranking components, not calibrated probabilities.
BI–03 / Negative control
A matching last answer can conceal a different world.
Both worlds report the same user. Reading the initial note exposes the deliberate change in World B. Both then write and read the same result file, so their last outputs match. The original note is still different. This is why the companion compares the complete execution record and declared state rather than only the last response.
| Observation | World A | World B / changed-input control |
|---|---|---|
| Initial note | baseline | changed baseline |
| Final /opt/notes.txt | baseline | changed baseline |
| Final /opt/result.txt | reviewed | reviewed |
| Matching command records | 3 of 4; the note-reading record differs | |
The browser compares sorted serialized records directly. SHA-256 serves as a compact label for the record. Equality for these runs establishes agreement for the chosen fixture and code, rather than universal determinism or equivalence to a real system.