Skip to content

Commit 6c880e6

Browse files
hyperpolymathclaude
andcommitted
fix: EXPLAINME.adoc — quote README claims, brief format, evidence table
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
1 parent 4fa330e commit 6c880e6

1 file changed

Lines changed: 21 additions & 52 deletions

File tree

EXPLAINME.adoc

Lines changed: 21 additions & 52 deletions
Original file line numberDiff line numberDiff line change
@@ -1,60 +1,29 @@
11
// SPDX-License-Identifier: PMPL-1.0-or-later
2-
= Game Server Admin — Show Me The Receipts
3-
:toc:
4-
:icons: font
2+
= EXPLAINME — Game Server Admin
53

6-
The README makes claims. This file backs them up.
4+
== "Universal game server probe, configuration management, and administration"
75

8-
== Claim: "Probes any game server"
6+
[quote, README]
7+
____
8+
GSA can attach to any game server, fingerprint it via protocol probing, extract its configuration into A2ML format, and provide a rich GUI for viewing, editing, and tracking config changes with full provenance.
9+
____
910

10-
**Where the code is:** `src/interface/ffi/src/probe.zig`
11+
The probe engine uses table-driven port scanning with protocol-specific handshakes (Steam A2S_INFO, Minecraft ping, RCON, HTTP, raw TCP) to fingerprint servers against the game profile registry.
12+
Extracted configs are serialised into A2ML and stored in a dedicated VeriSimDB instance (port 8090) as octads with 8 modalities.
13+
See `src/interface/ffi/src/probe.zig` for the probe implementation and `profiles/*.a2ml` for game definitions.
1114

12-
**How it works:** Table-driven port scanning with protocol-specific handshakes. For each open port, the probe engine tries Steam A2S_INFO query, Minecraft server list ping, RCON handshake, HTTP probe, and raw TCP banner grab — in that order. The first successful match is looked up against the game profile registry (`profiles/*.a2ml`) by fingerprint pattern.
15+
**Caveat:** "Any" means any game with a known `.a2ml` profile -- unknown games get best-effort fingerprinting but no structured config extraction. Lua table parsing handles simple key-value patterns but not deeply nested tables. VeriSimDB normaliser regeneration is partially stubbed (5/6 strategies return `[regenerated]`).
1316

14-
**Caveat:** "Any" means any game with a known profile. Unknown games get a best-effort fingerprint but no structured config extraction. Adding a new game requires writing a `.a2ml` profile — there is no fully automatic config schema discovery.
15-
16-
== Claim: "Extracts config into A2ML"
17-
18-
**Where the code is:** `src/interface/ffi/src/config_extract.zig` and `src/interface/ffi/src/a2ml_emit.zig`
19-
20-
**How it works:** Config files are fetched via SSH (`cat`), container exec, or RCON commands. The raw text is parsed according to the detected format (XML, INI, JSON, ENV, YAML, TOML, Lua). The parsed fields are then serialised into A2ML `@server/@config/@field` blocks using the game profile's field definitions as metadata overlay.
21-
22-
**Caveat:** Format detection is heuristic — ambiguous files may be misclassified. Lua table parsing handles simple key-value patterns but not deeply nested tables or computed values.
23-
24-
== Claim: "Rich GUI via Gossamer"
25-
26-
**Where the code is:** `src/gui/` (16 files — host.html + 7 panel pairs)
27-
28-
**How it works:** Gossamer creates a native webview window with Ephapax linear types enforcing resource lifecycle. The IPC bridge exposes `window.gossamer.*` functions that call through to the Zig FFI layer. Each of the 7 panels is a self-contained HTML page with JavaScript calling the bridge.
29-
30-
**Caveat:** Gossamer is currently Linux-only (GTK3 + WebKitGTK). macOS and Windows support is Phase 2. The GUI requires a running VeriSimDB instance to display data.
31-
32-
== Claim: "VeriSimDB underpinning"
33-
34-
**Where the code is:** `src/interface/ffi/src/verisimdb_client.zig`, `container/verisimdb/`
35-
36-
**How it works:** A dedicated VeriSimDB instance (port 8090) stores each managed server as an octad with all 8 modalities populated. Config changes are recorded in the temporal modality with provenance tracking. Drift detection runs every 15 seconds, comparing stored vs live config to flag divergence.
37-
38-
**Caveat:** Per the VeriSimDB production readiness assessment, normaliser regeneration is partially stubbed (5/6 strategies return `[regenerated]`), and federation is unimplemented. These limitations do not affect single-instance GSA usage.
39-
40-
== Claim: "Panels in the Clade system"
41-
42-
**Where the code is:** `panel-clades/` (9 clade directories + game profile children)
43-
44-
**How it works:** Each panel declares a clade A2ML file with `inherits-from` pointing to the parent. CladeBrowserEngine resolves traits via recursive OR-merge up the inheritance chain. New game profiles in `profiles/*.a2ml` automatically generate child clades under `gsa-game`, extending the cladogram without manual registration.
45-
46-
**Caveat:** The `just generate-clades` recipe must be run after adding new profiles. The cladogram does not auto-extend at runtime — it's a build-time operation reflected in static A2ML files.
47-
48-
== Technology Stack
49-
50-
[cols="1,1,2"]
17+
[cols="1,2"]
5118
|===
52-
| Layer | Language | Purpose
53-
54-
| ABI | Idris2 | Formal type specs with dependent type proofs
55-
| FFI | Zig | C-compatible implementation (probe, parse, emit)
56-
| Core | Ephapax | Linear type enforcement for Gossamer lifecycle
57-
| GUI | HTML/JS | Panel frontends in Gossamer webview
58-
| Data | VeriSimDB (Rust) | 8-modality database with drift detection
59-
| Orchestration | VeriSimDB (Elixir) | OTP supervision (in dedicated instance)
19+
| Path | Proves
20+
21+
| `src/interface/ffi/src/probe.zig` | Protocol fingerprinting and game detection
22+
| `src/interface/ffi/src/config_extract.zig` | Config fetching via SSH, container exec, or RCON
23+
| `src/interface/ffi/src/a2ml_emit.zig` | A2ML serialisation from parsed configs
24+
| `src/interface/abi/` | Idris2 formal type specs for ABI
25+
| `src/gui/` | 7 Gossamer panels (HTML/JS) with IPC bridge
26+
| `src/interface/ffi/src/verisimdb_client.zig` | VeriSimDB client for octad storage and drift detection
27+
| `panel-clades/` | 9 clade directories with A2ML inheritance
28+
| `profiles/*.a2ml` | Game profile definitions (17 initial games)
6029
|===

0 commit comments

Comments
 (0)