#!/usr/bin/env bash set -euo pipefail required_paths=( "AGENTS.md" "README.md" "scripts/check-all.sh" "platform/AGENTS.md" "platform/README.md" "platform/go.mod" "platform/cmd/platform/main.go" "platform_web/AGENTS.md" "platform_web/README.md" "platform_web/package.json" "platform_web/package-lock.json" "platform_web/tsconfig.json" "platform_web/vite.config.ts" "platform_web/index.html" "plugins/AGENTS.md" "plugins/README.md" "plugins/package.json" "plugins/package-lock.json" "plugins/tsconfig.json" "platform/api" "platform/dto" "platform/domain" "platform/model" "platform/repo" "platform/service" "platform/protocol" "platform/validator" "platform/config" "platform/shared" "platform/api/health_handler.go" "platform/api/health_handler_test.go" "platform/config/config.go" "platform/config/config_test.go" "platform/dto/health.go" "platform/domain/resources.md" "platform/api/routes.md" "platform/protocol/run-contracts.md" "platform/protocol/ai-provider-contracts.md" "platform/protocol/server-lifecycle.md" "platform_web/api" "platform_web/routes" "platform_web/pages" "platform_web/components" "platform_web/stores" "platform_web/contracts" "platform_web/schemas" "platform_web/theme" "platform_web/utils" "platform_web/app/App.tsx" "platform_web/app/App.test.tsx" "platform_web/app/main.tsx" "platform_web/components/AppShell.tsx" "platform_web/components/MagicalParticleLayer.tsx" "platform_web/components/PageFrame.tsx" "platform_web/contracts/page.ts" "platform_web/pages/HomePage.tsx" "platform_web/pages/ServersPage.tsx" "platform_web/pages/PluginsPage.tsx" "platform_web/pages/UsersPage.tsx" "platform_web/pages/AiProvidersPage.tsx" "platform_web/pages/pageRegistry.tsx" "platform_web/routes/routes.ts" "platform_web/theme/base.css" "platform_web/theme/README.md" "platform_web/theme/tokens.ts" "platform_web/routes/routes.md" "platform_web/api/contracts.md" "platform_web/api/client.ts" "platform_web/api/types.ts" "platform_web/contracts/pages.md" "platform_web/contracts/plugin-page-bridge.md" "platform_web/schemas/env.ts" "platform_web/stores/navigation.ts" "platform_web/utils/classes.ts" "plugins/manifests" "plugins/schemas" "plugins/sdk" "plugins/examples" "plugins/tests" "plugins/manifests/game-plugin.manifest.schema.json" "plugins/schemas/create-form.schema.json" "plugins/sdk/bridge-contract.md" "plugins/sdk/index.ts" "plugins/examples/dev-game-plugin/manifest.json" "plugins/examples/dev-game-plugin/schemas/create-form.schema.json" "plugins/examples/scum-server-plugin/manifest.json" "plugins/examples/scum-server-plugin/schemas/create-form.schema.json" "plugins/examples/scum-server-plugin/actions/install.json" "plugins/examples/scum-server-plugin/actions/start.json" "plugins/examples/scum-server-plugin/actions/stop.json" "plugins/examples/scum-server-plugin/actions/restart.json" "plugins/examples/scum-server-plugin/actions/status.json" "plugins/scripts/validate-manifest.ts" "plugins/tests/manifest-validation.test.ts" "openspec/changes/bootstrap-game-server-platform-architecture/proposal.md" "openspec/changes/bootstrap-game-server-platform-architecture/design.md" "openspec/changes/bootstrap-game-server-platform-architecture/tasks.md" "openspec/changes/bootstrap-game-server-platform-architecture/specs/project-workspace-governance/spec.md" "openspec/changes/bootstrap-game-server-platform-architecture/specs/game-server-platform-core/spec.md" "openspec/changes/bootstrap-game-server-platform-architecture/specs/run-execution-channel/spec.md" "openspec/changes/bootstrap-game-server-platform-architecture/specs/game-plugin-system/spec.md" "openspec/changes/bootstrap-game-server-platform-architecture/specs/platform-web-console/spec.md" ) missing=0 for path in "${required_paths[@]}"; do if [[ ! -e "$path" ]]; then printf 'missing required path: %s\n' "$path" >&2 missing=1 fi done if [[ "$missing" -ne 0 ]]; then exit 1 fi printf 'structure check passed\n'