4.3 KiB
4.3 KiB
1. SCUM Plugin Assets
- 1.1 Add
plugins/examples/scum-server-pluginwith SCUM manifest metadata, create-form schema, pages, and lifecycle action templates. - 1.2 Ensure plugin manifest validation accepts the SCUM plugin and still rejects unsafe transport/credential/path content.
2. Discovery and Multi-Instance Proof
- 2.1 Update local debug smoke registration to register SCUM plugin metadata through platform APIs.
- 2.2 Update local debug smoke creation proof to create two SCUM servers from the SCUM plugin and verify marketplace discovery.
3. Verification
- 3.1 Run
cd plugins && npm run typecheck && npm run test && npm run validate:manifest. - 3.2 Run
scripts/check-structure.sh. - 3.3 Run
openspec validate implement-scum-server-plugin --strict. - 3.4 Run focused platform/platform_web checks and a browser walkthrough if UI behavior changes beyond existing generic surfaces.
Evidence
-
Plugin validation:
cd plugins && npm run typecheckpassed.cd plugins && npm run testpassed:tests/manifest-validation.test.tspassed 12 tests, including SCUM manifest validation.- Initial sandbox
cd plugins && npm run validate:manifestfailed becausetsxcould not create its local IPC pipe (EPERM); escalated rerun passed. cd plugins && npm run validate:manifestvalidated bothexamples/dev-game-plugin/manifest.jsonandexamples/scum-server-plugin/manifest.json.
-
SCUM plugin implementation:
- Added
plugins/examples/scum-server-plugin/manifest.jsonwithgame.scum, server typescum, SCUM-specific marketplace metadata, lifecycle actions, bridge actions, permissions, plugin pages, and AI purposes. - Added
plugins/examples/scum-server-plugin/schemas/create-form.schema.jsonwith SCUM server name, game port, query port, and max-player fields. - Added scoped lifecycle fixtures under
plugins/examples/scum-server-plugin/actions/for install/start/stop/restart/status using safe bounded command templates. - Updated
plugins/package.json,plugins/tests/manifest-validation.test.ts, andscripts/check-structure.shso SCUM plugin assets are part of default validation.
- Added
-
API/local debug proof:
- Updated
scripts/local-debug-smoke.shto registergame.scumthrough/api/v1/game-plugins/register-manifest. - Updated smoke proof to create
scum-alphaandscum-betathrough/api/v1/server-instances/workflows/create. - Initial smoke against
18080failed because that port was already occupied by stale state. Isolated rerun on18087withLOCAL_DEBUG_ROOT=/private/tmp/browser-scum-local-debug-proof-2passed. - Passing smoke evidence directory:
/private/tmp/browser-scum-local-debug-proof-2/smoke. - Smoke verified
/api/v1/plugin-marketplace/plugins?serverType=scum&keyword=scumcontainsgame.scum, and both SCUM instances have separate lifecycle install job records.
- Updated
-
Browser walkthrough:
- Started an isolated browser verification stack on platform
127.0.0.1:18088and frontend127.0.0.1:5188. - Seeded the stack with
LOCAL_DEBUG_SELF_START=false LOCAL_DEBUG_PLATFORM_PORT=18088 LOCAL_DEBUG_WEB_PORT=5188 LOCAL_DEBUG_ROOT=/private/tmp/browser-scum-browser-proof scripts/local-debug-smoke.sh; smoke passed. - Logged into
http://127.0.0.1:5188/asoperator.local@example.test / operator-local; 首页 showed API-backed platform data andgame.scum: 2 个实例. - 插件市场 showed
SCUM Server,game.scum, status已安装, server typescum, and capabilitiesprocess.install,process.start,process.stop; no local fallback or forbidden fragments were visible. - 服务器管理 showed
SCUM Alpha(scum-alpha) andSCUM Beta(scum-beta) as separate server cards; no local fallback or forbidden fragments were visible. - Opened
#/servers/scum-alpha, confirmed plugin bindinggame.scum@0.1.0, started the server via the visible启动control, confirmed the dialog, and observedSCUM Alphachange to运行中/在线with停止enabled.
- Started an isolated browser verification stack on platform
-
Final gates:
bash -n scripts/local-debug-smoke.shpassed.scripts/check-structure.shpassed withstructure check passed.openspec validate implement-scum-server-plugin --strictpassed withChange 'implement-scum-server-plugin' is valid; PostHog telemetry flush reportedENOTFOUND edge.openspec.dev, which did not affect validation.