From cea5f89fa6b9fae847f1f83cd35a4c6a398352fe Mon Sep 17 00:00:00 2001 From: npc0-hue Date: Wed, 2 Sep 2026 10:23:22 +0800 Subject: [PATCH] Clarify opaque Run log forwarding --- AGENTS.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/AGENTS.md b/AGENTS.md index 533061e..5d951cc 100644 --- a/AGENTS.md +++ b/AGENTS.md @@ -8,11 +8,11 @@ Do not rebuild the old all-in-one WebSocket model. Keep these workloads separate - Control: hello, heartbeat, version, capabilities, capacity. - Job: claim, ack, progress, result, cancel, reconcile. -- Logs: current supervised stdout/stderr live relay through `/api/v1/run/logs/relay`; no local durable log spool, cache, resend backlog, or sequence-ack dependency. +- Logs: durable batches from supervised stdout/stderr and plugin-declared file tails through `/api/v1/run/logs/batches`, with local spool and sequence acknowledgement. - Artifacts: chunks, checksums, resume, throttling. - Game client bridge: optional in-game command/snapshot channel. -Artifact transfer must not block control heartbeats, job result reporting, or current live log relay. +Artifact transfer must not block control heartbeats, job result reporting, or log ingest/upload. ## Structure Rules @@ -20,7 +20,7 @@ Protocol structs live in `protocol/`. Local runtime types live in `runtime/` or ## Safety Rules -Run must enforce scoped paths and never expose raw host paths, local secrets, or unrestricted command execution to platform_web or plugins. Do not apply game-specific redaction to plugin-declared game records or SQL query rows: return those bounded typed fields faithfully through Platform channels. Supervised stdout/stderr and plugin-declared file tails are opaque verbatim channels: do not inspect, parse, filter, redact, truncate by content, transform, or special-case their payloads. They cannot be used to derive player or plugin records. This pass-through rule does not grant plugins or the browser a direct host-path, credential, key, or socket API outside that log channel. +Run must enforce scoped paths and never expose raw host paths, local secrets, or unrestricted command execution to platform_web or plugins. Do not apply game-specific redaction to plugin-declared game records or SQL query rows: return those bounded typed fields faithfully through Platform channels. Supervised stdout/stderr and plugin-declared file tails are opaque verbatim channels: do not inspect, parse, filter, redact, truncate by content, transform, or special-case their payloads. Run only spools and forwards these bytes; a plugin companion may parse its own declared stream and derive its own users or business records after receipt. This pass-through rule does not grant plugins or the browser a direct host-path, credential, key, or socket API outside that log channel. ## Generic Executor Boundary @@ -30,6 +30,6 @@ Run must not contain game-specific lifecycle logic. Do not add hardcoded game na If a lifecycle flow needs "install if missing", "stop before update", "validate via SteamCMD", or "start with game-specific arguments", run should execute the plugin-declared action through generic capabilities. Fix missing generic capabilities in run when necessary, but keep the game policy and concrete commands in the plugin action assets. -Run should supervise plugin-declared start commands generically: hide started process windows when the operating system supports it, capture the supervised stdout/stderr streams, and push only current observed output through live log relay. Do not persist supervised process output in a local log database/cache, do not wait for platform delivery acknowledgement, and do not replace plugin-declared process output with game-specific file inspection. +Run should supervise plugin-declared start commands generically: hide started process windows when the operating system supports it, capture the supervised stdout/stderr streams, and upload them through the durable log channel. Do not inspect or transform supervised output, and do not replace plugin-declared process output with game-specific file inspection. Do not introduce per-game runtime files such as `scum_deployment.go`. Prefer generic action execution, dependency helpers, process supervision, and manifest-declared capability checks that any plugin can use.