diff --git a/.env.example b/.env.example index 57bd054..8fed7e5 100644 --- a/.env.example +++ b/.env.example @@ -23,7 +23,7 @@ PLATFORM_METADATA_PATH=.platform-data/metadata.json PLATFORM_LOG_BODY_BACKEND=file PLATFORM_LOG_DIR=.platform-data/logs -RUN_REPO_DIR=../run +RUN_REPO_DIR=./run RUN_MODE=worker RUN_PLATFORM_URL=http://127.0.0.1:8080 RUN_ENDPOINT_ID=run-local diff --git a/.gitignore b/.gitignore index 96e474f..a10bd7e 100644 --- a/.gitignore +++ b/.gitignore @@ -4,9 +4,9 @@ coverage/ .DS_Store .tmp .local-debug +/run/ .idea .claude .github .codex .agents - diff --git a/README.md b/README.md index fd92d19..1a6fb50 100644 --- a/README.md +++ b/README.md @@ -6,7 +6,7 @@ This repository is the game server management platform workspace. It replaces th - `platform_web/`: management console frontend. - `plugins/`: game management plugin workspace. A plugin defines how to create and manage one server type, and one installed plugin can create many server instances. -The machine-side executor source lives in the separate `git@git.npc0.com:admin343/run.git` repository. Local debug and Docker workflows can still start it through `RUN_REPO_DIR`. +The machine-side executor source lives in the separate `git@git.npc0.com:admin343/run.git` repository. Local debug and Docker workflows can keep it at `./run` as an ignored nested checkout, or use another path through `RUN_REPO_DIR`. ## Product Scope @@ -69,13 +69,13 @@ Run focused checks when working in one root: Run executor checks are owned by the separate run checkout: ```bash -(cd "${RUN_REPO_DIR:-../run}" && go test ./...) +(cd "${RUN_REPO_DIR:-./run}" && go test ./...) ``` Run the API-backed local debug workspace when you need platform, run, platform_web, and the dev plugin fixture together: ```bash -git clone git@git.npc0.com:admin343/run.git ../run # once, if the sibling checkout is missing +git clone git@git.npc0.com:admin343/run.git run # once, if the ignored local checkout is missing scripts/local-debug-start.sh scripts/local-debug-smoke.sh ``` @@ -87,7 +87,7 @@ Start local processes: ```bash (cd platform && go run ./cmd/platform) -(cd "${RUN_REPO_DIR:-../run}" && go run ./cmd/run) +(cd "${RUN_REPO_DIR:-./run}" && go run ./cmd/run) (cd platform_web && npm run dev) ``` @@ -96,7 +96,7 @@ Start local processes: Use the root compose file for a local all-in-one deployment: ```bash -git clone git@git.npc0.com:admin343/run.git ../run # once, if the sibling checkout is missing +git clone git@git.npc0.com:admin343/run.git run # once, if the ignored local checkout is missing docker compose up --build ``` @@ -108,7 +108,7 @@ Then open: The compose deployment starts: - `platform`: backend on container port `8080`, published as host port `8080`. -- `run`: worker mode executor built from `${RUN_REPO_DIR:-../run}` and connected to `http://platform:8080`. +- `run`: worker mode executor built from `${RUN_REPO_DIR:-./run}` and connected to `http://platform:8080`. - `platform-web`: built static console served by Nginx on container port `80`, published as host port `5173`. Persistent Docker data lives in named volumes: @@ -157,7 +157,7 @@ cp platform/.env.example platform/.env cp platform_web/.env.example platform_web/.env (cd platform && set -a && source .env && set +a && go run ./cmd/platform) -(cd "${RUN_REPO_DIR:-../run}" && go run ./cmd/run) +(cd "${RUN_REPO_DIR:-./run}" && go run ./cmd/run) (cd platform_web && npm run dev) ``` @@ -167,7 +167,7 @@ Most common edits: - Platform file persistence: `PLATFORM_STORAGE_BACKEND=file`, `PLATFORM_METADATA_PATH`, `PLATFORM_LOG_DIR`. - Platform MySQL metadata: `PLATFORM_STORAGE_BACKEND=mysql`, `PLATFORM_MYSQL_DSN=platform:platform@tcp(127.0.0.1:3306)/platform?parseTime=true`. - Log body persistence: `PLATFORM_LOG_BODY_BACKEND=file`, `PLATFORM_LOG_DIR`. -- Run source checkout: `RUN_REPO_DIR=../run`. +- Run source checkout: `RUN_REPO_DIR=./run` by default; `run/` is ignored by the browser repository. - Run worker mode: `RUN_MODE=worker`. - Run-to-platform URL: `RUN_PLATFORM_URL=http://127.0.0.1:8080` locally, `http://platform:8080` in Docker. - Run local data: `RUN_WORKSPACE_ROOT`, `RUN_SPOOL_ROOT`. diff --git a/docker-compose.yml b/docker-compose.yml index 4502f09..8a484a3 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -53,7 +53,7 @@ services: run: build: - context: ${RUN_REPO_DIR:-../run} + context: ${RUN_REPO_DIR:-./run} dockerfile: Dockerfile depends_on: platform: diff --git a/docs/local-debug-workspace.md b/docs/local-debug-workspace.md index 463c724..ca70bf9 100644 --- a/docs/local-debug-workspace.md +++ b/docs/local-debug-workspace.md @@ -6,7 +6,7 @@ The local debug workspace runs the real platform API, run worker, platform_web c - Platform listens on `http://127.0.0.1:18080` by default. - platform_web listens on `http://127.0.0.1:5173` by default and proxies `/api/v1` plus `/healthz` to platform. -- Run worker is loaded from `RUN_REPO_DIR`, defaulting to a sibling `../run` checkout, and registers as `run-local-debug`. +- Run worker is loaded from `RUN_REPO_DIR`, defaulting to the ignored nested `./run` checkout, and registers as `run-local-debug`. - Disposable state lives under `.local-debug/`. - Logs live under `.local-debug/logs/`. - PIDs live under `.local-debug/pids/`. @@ -18,7 +18,7 @@ The workflow does not require Docker-only infrastructure, external cloud service ## Start ```bash -git clone git@git.npc0.com:admin343/run.git ../run # once, if the sibling checkout is missing +git clone git@git.npc0.com:admin343/run.git run # once, if the ignored local checkout is missing scripts/local-debug-start.sh ``` @@ -49,7 +49,7 @@ Key platform variables: Key run variables: -- `RUN_REPO_DIR=../run` +- `RUN_REPO_DIR=./run` - `RUN_MODE=worker` - `RUN_PLATFORM_URL=http://127.0.0.1:18080` - `RUN_ENDPOINT_ID=run-local-debug` @@ -162,7 +162,7 @@ The start script wraps these commands with the local debug environment: ```bash (cd platform && go run ./cmd/platform) -(cd "${RUN_REPO_DIR:-../run}" && go run ./cmd/run) +(cd "${RUN_REPO_DIR:-./run}" && go run ./cmd/run) npm --prefix platform_web run dev -- --port 5173 ``` diff --git a/openspec/changes/split-run-into-independent-repository/design.md b/openspec/changes/split-run-into-independent-repository/design.md index b770d5b..ba0c685 100644 --- a/openspec/changes/split-run-into-independent-repository/design.md +++ b/openspec/changes/split-run-into-independent-repository/design.md @@ -8,17 +8,17 @@ Browser-side code can still expose platform APIs for run endpoints, jobs, logs, ## Local Development -Local debug workflows use `RUN_REPO_DIR` to find an external run checkout. The default points to `../run`, matching a sibling clone beside this repository: +Local debug workflows use `RUN_REPO_DIR` to find an external run checkout. The default points to `./run`, an ignored nested checkout inside this repository: ```bash -git clone git@git.npc0.com:admin343/run.git ../run +git clone git@git.npc0.com:admin343/run.git run ``` -If `RUN_REPO_DIR` is missing or does not contain a run `go.mod`, local debug scripts fail with a clear message instead of assuming `browser/run`. +If `RUN_REPO_DIR` is missing or does not contain a run `go.mod`, local debug scripts fail with a clear setup message. ## Docker Compose -The compose file keeps the run service for all-in-one local deployment, but its build context points at `${RUN_REPO_DIR:-../run}` and uses the external repository's `Dockerfile`. +The compose file keeps the run service for all-in-one local deployment, but its build context points at `${RUN_REPO_DIR:-./run}` and uses the external repository's `Dockerfile`. ## Structure Validation diff --git a/openspec/changes/split-run-into-independent-repository/specs/project-workspace-governance/spec.md b/openspec/changes/split-run-into-independent-repository/specs/project-workspace-governance/spec.md index f664c4c..c31534e 100644 --- a/openspec/changes/split-run-into-independent-repository/specs/project-workspace-governance/spec.md +++ b/openspec/changes/split-run-into-independent-repository/specs/project-workspace-governance/spec.md @@ -10,7 +10,7 @@ The browser repository SHALL NOT store the machine-side run executor source tree #### Scenario: Local debug needs a run worker - **WHEN** a local debug or Docker workflow needs to start run -- **THEN** it MUST locate run through `RUN_REPO_DIR` or a documented sibling checkout +- **THEN** it MUST locate run through `RUN_REPO_DIR` or the documented ignored nested checkout - **AND** it MUST fail with a clear setup message when the external checkout is missing #### Scenario: Structure validation runs diff --git a/scripts/local-debug-env.sh b/scripts/local-debug-env.sh index c696a31..4a6d8a8 100755 --- a/scripts/local-debug-env.sh +++ b/scripts/local-debug-env.sh @@ -21,7 +21,7 @@ export PLATFORM_METADATA_PATH="${PLATFORM_METADATA_PATH:-$PLATFORM_DATA_DIR/meta export PLATFORM_LOG_BODY_BACKEND="${PLATFORM_LOG_BODY_BACKEND:-file}" export PLATFORM_LOG_DIR="${PLATFORM_LOG_DIR:-$PLATFORM_DATA_DIR/logs}" -export RUN_REPO_DIR="${RUN_REPO_DIR:-$LOCAL_DEBUG_ROOT_DIR/../run}" +export RUN_REPO_DIR="${RUN_REPO_DIR:-$LOCAL_DEBUG_ROOT_DIR/run}" export RUN_MODE="${RUN_MODE:-worker}" export RUN_PLATFORM_URL="${RUN_PLATFORM_URL:-http://127.0.0.1:$LOCAL_DEBUG_PLATFORM_PORT}" export RUN_ENDPOINT_ID="${RUN_ENDPOINT_ID:-run-local-debug}" @@ -50,7 +50,7 @@ local_debug_web_url() { ensure_local_run_repo() { if [[ ! -f "$RUN_REPO_DIR/go.mod" ]]; then printf 'run repo not found at %s\n' "$RUN_REPO_DIR" >&2 - printf 'clone git@git.npc0.com:admin343/run.git next to this repo or set RUN_REPO_DIR to the run checkout\n' >&2 + printf 'clone git@git.npc0.com:admin343/run.git into this repo as ./run or set RUN_REPO_DIR to the run checkout\n' >&2 return 1 fi }