Docs: bring READMEs in line with current state (net48, JSON wire)

- Root README: launcher is .NET Framework 4.8 (was .NET 6/x86); RPC is framed
  JSON (was BinaryFormatter); added Contract/ + SecureConfig/; dropped the
  now-resolved "known duplication" warning; corrected the lib/*.dll note
  (TeslaConsoleLaunchLib/TeslaSecureConfiguration are source-built, kept only as
  test baselines); added a short history section.
- Console README: Contract is net48-only; Launcher targets net48.
- Launcher README: net48 framework-dependent (was net8/x64 self-contained);
  needs .NET Framework 4.8 (built into Windows), no bundled runtime.
- DiffTests README: original 4.11.3.37076 vs recovered 4.11.4.x (no longer share
  identity); noted version-insensitive comparison + the new protocol/crypto guards.
- Removed Launcher/assets/MEMORY.md (stale leftover dev-notes, superseded by the
  README and now-moot post-BinaryFormatter).

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
Cyd
2026-06-30 13:44:06 -05:00
co-authored by Claude Opus 4.8
parent 2a3d1c1ef6
commit d5c4be26ce
5 changed files with 69 additions and 167 deletions
+34 -30
View File
@@ -4,46 +4,50 @@ The Tesla cockpit-pod software, in one repository:
| Folder | What it is | Target |
|--------|------------|--------|
| [`Console/`](Console/) | **TeslaConsole** — the operator console (WinForms) that configures and drives the pods. A faithful decompiled reconstruction of the original `TeslaConsole.exe`, with a differential test suite that pins it to the original baseline. | .NET Framework 4.8 |
| [`Launcher/`](Launcher/) | **TeslaLauncher** — the pod-side Service (Session 0 RPC listener) + Agent (user-session app launcher). A clean .NET 6 rewrite of the original launcher. | .NET 6 (windows, x86) |
| [`Console/`](Console/) | **TeslaConsole** — the operator console (WinForms) that configures and drives the pods. A decompiled reconstruction of the original `TeslaConsole.exe` (now the modernized 4.11.4.x line), with a differential test suite pinning it to the original 4.11.3.37076 baseline. | .NET Framework 4.8 |
| [`Launcher/`](Launcher/) | **TeslaLauncher** — the pod-side Service (Session 0 RPC listener) + Agent (user-session app launcher). A clean rewrite of the original launcher. | .NET Framework 4.8 |
| [`Contract/`](Contract/) | **Tesla.Contract** — the shared Console↔Launcher RPC contract: wire types, the client, and the framed-JSON protocol. Emits assembly `TeslaConsoleLaunchLib`. | .NET Framework 4.8 |
| [`SecureConfig/`](SecureConfig/) | **Tesla.SecureConfig** — the first-boot pod provisioning protocol (UDP beacons, OFB crypto, RSA key exchange). Emits assembly `TeslaSecureConfiguration`. | .NET Framework 4.8 |
The console and the launcher talk over TCP 53290 using an OFB-encrypted
BinaryFormatter RPC. They share a wire contract (`Tesla.Net` types +
`ILauncherService`/`IPodManagerConnection` signatures) that **must stay byte-for-byte
compatible**.
The console and launcher talk over **TCP 53290** using **length-prefixed
`System.Text.Json` frames over an OFB-encrypted stream** ([`Contract/PodRpcProtocol.cs`](Contract/PodRpcProtocol.cs)),
dispatched by method name. The wire contract lives in one source project
([`Contract/`](Contract/)) referenced by both sides — a single source of truth, no
duplication or hand-syncing.
> ⚠️ **Known duplication (intentional, for now):** that shared contract currently
> lives in two places — the console consumes it as the compiled
> `Console/lib/TeslaConsoleLaunchLib.dll`, and the launcher hand-replicates the same
> types in `Launcher/LaunchModels_Shared.cs`. They must match exactly. Consolidating
> this into a single multi-targeted `Tesla.Contract` source project is the main
> follow-up this monorepo is meant to enable.
> **Note:** Red Planet game *control* uses a separate protocol (Munga, TCP 1501) via the
> vendored `Munga Net.dll` — not the RPC channel above. The game itself is C++ and lives
> in its own repo (`gitea.mysticmachines.com/VWE/RP411.git`).
## Building
Each side has its own toolchain; the combined solution builds both:
```
dotnet build TeslaSuite.sln -c Release
dotnet test Console/tests/TeslaConsole.DiffTests # differential + protocol + crypto guards
```
Or individually:
```
dotnet build Console/TeslaConsole.csproj -c Release # the console
dotnet test Console/tests/TeslaConsole.DiffTests # differential + catalog tests
dotnet build Launcher/TeslaLauncher.sln -c Release # service + agent
```
The launcher also has its original `Launcher/build.bat` / `Launcher/install.bat`
for producing and deploying the self-contained pod build.
**Pod deployment:** [`Launcher/build.bat`](Launcher/build.bat) publishes the
framework-dependent net48 package into `Launcher/TeslaLauncher/` (~3.7 MB on disk /
~1.6 MB zipped — no runtime to install, since .NET Framework 4.8 ships in Windows 10/11),
and [`Launcher/install.bat`](Launcher/install.bat) deploys it on a cockpit PC (registers
the Service, sets up the Agent for auto-login, hardens the box).
## Layout notes
- `Console/original/TeslaConsole.exe` is the reference baseline the differential
tests compare against — keep it.
- `Console/lib/*.dll` are the proprietary binary dependencies the console still
references (`TeslaConsoleLaunchLib`, `TeslaSecureConfiguration`, `Munga Net`,
`BitmapLibrary`, `WeifenLuo` docking).
- `Console/RedPlanet/Apps.xml` is the data-driven product catalog (see the console's
- `Console/original/TeslaConsole.exe` the **4.11.3.37076** reference baseline the
differential tests compare against. Keep it.
- `Console/lib/*.dll` the remaining vendored binary dependencies (`Munga Net`,
`BitmapLibrary`, `WeifenLuo` docking). The original `TeslaConsoleLaunchLib.dll` and
`TeslaSecureConfiguration.dll` are also kept here, but **only as byte-compatibility test
baselines** — both are now built from source (`Contract/`, `SecureConfig/`).
- `Console/RedPlanet/Apps.xml` — the data-driven product catalog (see the console's
Site Management → Add Product / Register Product on Pods).
## History
The system was modernized in 2026: the duplicated wire contract was extracted to a single
source project, `BinaryFormatter` (an RCE sink, and what pinned the launcher to an old
runtime) was replaced with the framed-JSON protocol, and the launcher was rebuilt — briefly
on net8/x64, then settled on net48 to match the console and ship a tiny, runtime-free
package. The whole console↔pod path (provisioning, install, launch) is validated on real
pods.