Reference
Traps and known issues
Every entry here cost real time on this machine and was confirmed by a run, not inferred. Dates are when it was measured. Read this page before the first long session with VSI.
Licensing
- The VSI client reads only
saltdincrements in dual-signed AUTH form. A feature the server serves undermgcldis invisible to it, however greenlmstatlooks.saltd.logis the oracle:UNSUPPORTED ... PORT_AT_HOST_PLUSis a SALT refusal. (2026-09-05) - The fabric server checks out
VeloceStratoOS(bundlementorall_s) at simulation start, after every client has connected. Without it the run sits at "Attempting to checkout license" forever. Served since 2026-09-08. - Install additional licence files as their own
.licand reread; never through the Siemens installer, never with a server restart, never mixed vendor increments in one file. (2026-09-05 to 2026-09-07) lmrereadprints a-139timeout that is false; a reread can still restartsaltd, which then serves nothing for 10 to 12 minutes while looking dead. (2026-09-06)
Generating and building
mingw32-make simwaits forever at the control prompt under a redirected console. RunvsiSim TWIN.dt --batch --runinstead. (2026-09-08, twice)generatewithout-overwritedoes nothing and says nothing.generate -overwritewipes the user regions; re-apply glue afterwards. (2026-09-05)- Six vendor PDF statements differ from the binary (no C++ UART gateway, GPIO only to a
virtual platform, signal list syntax, two ports per TCP socket, opposite directions on
connect signals, frame list brackets). The binary's
helpis the oracle. (2026-09-05) - In PowerShell, capturing vsiBuild's or make's output into a variable stalls the build
step; use
Start-Processwith redirected output files. (2026-09-06) - Copy-Item preserves file times, so make may skip recompiling a copied source. (2026-09-08)
- Python components need a short workspace root; from the repository path the gateway
link fails naming a missing
.deffile, which is a path-length failure. (2026-09-08) - A Python component whose Ethernet socket carries no connected signals is generated as invalid Python (empty method). The generator keeps such blocks C++ and says so; the glue compiles every Python file it touches. (2026-09-08, reproduced with controls)
Running
- The fabric's ports are fixed at 50101 plus the component index and sat inside the Windows
dynamic range; an unrelated socket could take one and the twin stalled at client connect
with no licence request. Fixed machine-wide with a dynamic-range move and an administered
exclusion 50101 to 50200; an administered exclusion still permits an explicit bind,
unlike a Hyper-V dynamic reservation.
XL_TLM_SOCKET_PORT_NUMlogs a port change and does not perform it. (2026-09-08) - Windows Firewall prompts for every new FabricServer binary; unattended runs hang on the prompt. Notify-on-listen was turned off and a loopback rule added. (2026-09-08)
- On the 63-component twin the fabric server exits with 0xC0000374 at teardown after a
complete run;
--enableStatsthen reports failure. Judge by traces and the fabric log'sTotal SystemC time. The two-component templates exit 0. (2026-09-08) - A C++ client runs from
vsi.sim\_logs, a Python client from the twin root; files written relative to the working directory land in different places. (2026-09-08)
Behaviour and verification
- Every CAN node transmits its frame every step, consumers included. On Wildfire's 22-node frame the 21 consumers drowned the producer and every consumed value read zero for 100 steps. Mute consumers (the glue does). A block across regions also muted the component's other sends; an early return deadlocks the handshake. (2026-09-08)
- A bus name with a space in the
# buscomment folds every flow into one unnamed bus at period 1: the twin builds, runs and passes the link check with the wrong rates. Names are written as one token. (2026-09-08) - The fabric delivers within a step to components scheduled after the producer, so lag 0 is real; a checker window that excluded it failed correct links. (2026-09-08)
- The glue must rewrite every region it owns on every apply; a skipped empty region kept stale lines from an earlier glue version. (2026-09-08)
- A checker is not a checker until it has failed on known-bad input; the self-test freezes a consumer and forces a producer to the wrong period and requires both to be caught.
Working on this machine with Claude Code
- FIXED 2026-09-09. A hook installed by
ruflo initin the user's Claude settings ran every hook event through acmd /cwrapper that nested double quotes inside an already-quoted string, so cmd.exe re-parsed the line and the hook payload (a Bash command's text, an edit's text, a prompt) reached its parser. A redirect sign in that text wrote the file named by the next token in the session's working directory, before the command ran; a comma after the name was a delimiter and was dropped. It truncated a tracked 60 KB command file twice and left hundreds of zero-byte files named after code fragments. All 16 hook commands now go through a node launcher with no cmd.exe in the path; the marker probe that proved the defect no longer creates a file. The fault was intermittent, so the evidence is structural rather than a reproduction that stopped. Keep the habit ofgit status --porcelainplus a zero-byte check over tracked files after long commands; it costs nothing. Memoryhooks-cmd-exe-redirect-traphas the history. (2026-09-08 found, 2026-09-09 fixed) - Inline
python -cwith dict-shaped text in Git Bash leaves zero-byte files named after the words; use a quoted heredoc. (2026-09-06) - Backslashes in Windows paths collapse inside a Python or PowerShell heredoc;
\tand\abecome tab and bell and print as nothing. Build paths withchr(92)or use the Edit and Write tools. (2026-08-17 onward)
Source: innexis-vsi/README.md, twin_glue/README.md, templates/README.md, memory innexis-vsi-install and hooks-cmd-exe-redirect-trap (all EXERCISED, dated inline) · retrieved Tue Sep 08 2026 00:00:00 GMT+0000 (Coordinated Universal Time)