refactor(scum): use runtime capability probes

This commit is contained in:
npc0-hue
2026-07-29 18:34:16 +08:00
parent 03339fb3e8
commit d7465bfd32
26 changed files with 530 additions and 533 deletions
@@ -1,73 +1,17 @@
# Verified implementation blockers
## Runtime probe evidence
Checked 2026-07-29 against the pinned read-only UE4SS reference at
`bae91527355f14faa63c1df65f742cc48594ba1b` (UE4SS 3.0.1). The accompanying
capability evidence is recorded in
`plugins/examples/scum-server-plugin/companion/UE4SS_CAPABILITY.md`.
The former UE4SS reference/build/revision requirement has been removed. SCUM
features are not disabled by an update string. The Companion uses typed,
platform-authorized non-production fixtures for configuration, player-state,
reward, notification, and vehicle operations; no remote server is contacted.
The reference offers a fixed, online-recipient `SendChat` path, which is
already bounded by the supported `player.notify` adapter. It also removes one
leading `#` before dispatching a command, but its raw response is not a stable
operation acknowledgement. Under the separately authorized fixed-template
exception, the plugin's `vehicle.spawn` adapter can generate only
`#spawnvehicle <vehicleCode>` from its allowlist through a local authorized
transport port and maps its bounded receipt to success, failure, or unknown.
It is not a general RCON surface. The reference otherwise has no versioned
server-side schema, identity binding, acknowledgement contract, or isolated
non-production fixture for login/logout events, network correlation, position
or vehicle events, reward delivery, or state reads and writes.
Run's required integration boundary is a bounded stdout/stderr record stream,
typed database projections, and fixed administration ports. It must not expose
paths, DSNs, credentials, raw rows, arbitrary SQL, shell, socket, or RCON to
the plugin, platform web, or AI. Unknown console formats create a bounded
diagnostic and no event.
Controlled read-only migration fixtures now verify configuration, player
history, gifts, state-patch audits, and trajectories in
`plugins/tests/fixtures/scum-migration-parity.ts`. They preserve only
allowlisted plugin fields and maintain transition provenance. The existing
isolated Companion tests continue to cover its safe command boundary. Neither
test set provides an end-to-end SCUM executor or event producer.
Consequently these tasks remain open and blocked rather than simulated:
- 4.1–4.4: no legitimate versioned event producer exists for semantic player,
network, position, or vehicle data.
- 5.1 and 5.3: no documented, version-bound state-patch or reward-delivery
adapter exists.
- 6.2: controlled read-only migration fixtures and isolated Companion
typed-port coverage now exist for the supported configuration, notification,
and vehicle-spawn adapters, but no legitimate versioned producer exists for
the remaining player-history, reward, state-patch, or trajectory parity.
- 6.3: transitional SCUM APIs and models still have callers and cannot be
removed before the parity and rollback evidence required by 6.2.
- 6.4: final full verification is deferred until the blocked adapters and
isolated integration environment exist.
No fallback to raw RCON, credentials, SQL, direct game-database access, OCR,
screenshots, keyboard/mouse injection, or desktop automation is permitted.
## 6.3 frontend cleanup and rollback evidence (2026-07-29)
The generic `PluginPageHostPage` has no hard-coded SCUM import or `game.scum`
branch. Static `rg` call-graph audit found zero non-test callers for the
following former `platform_web` implementation, so this batch removed it with
its private tests, contracts, schemas, API-client methods/types, and map-only
styles:
- `ScumOperationsPanel`, `ScumFileConfigWorkbench`, and the private
`scumOperations` contract/schema;
- `GamePlayerIntelligencePanel` and `GameGiftCatalogPanel`;
- `ScumMapTrajectoryPanel`.
Their plugin-owned replacement is `features/page.ts`, with typed bridge reads
and commands in `features/api.ts`, and the read-only provenance adapters in
`features/migration.ts`. The replacement remains capability-gated: missing
login/position event producers and missing state-patch/reward-delivery
handlers render unavailable controls and never synthesize records or enable a
fallback execution path.
The platform-side `/game-players`, `/game-gifts`, and `/game-map-trajectories`
routes, DTO/domain/model/service/repository implementations, and their
fixtures remain intentionally. `plugins/tests/fixtures/scum-migration-parity.ts`
continues to consume their historical record shapes through allowlisted,
`transitional-read-only` migration records. Rollback therefore consists of
disabling the exact server/version plugin authority flag, leaving those prior
records visible and read-only; it does not restore any deleted host panel or
re-enable an unsafe execution route. Backend removal remains blocked until 6.2
parity and the required versioned event/operation protocols exist.
Remaining production enablement is operational: a deployed Run implementation
must provide the declared typed ports. Until then only the affected operation
is reported unavailable; the plugin page and unrelated feature capabilities
remain active.