From f57add4190eb4f82130b9ab16be39b6dfcc22a31 Mon Sep 17 00:00:00 2001 From: Eva Date: Fri, 30 Oct 2026 13:33:25 +0900 Subject: [PATCH 1/3] docs: retire the support-vm-1 QA lane --- .claude/skills/worldos-dev/SKILL.md | 20 ++++++++----------- .../skills/worldos-latency-forensics/SKILL.md | 2 +- AGENTS.md | 16 +++++++-------- VISION.md | 2 +- WorldOS-GUI-RUNBOOK.md | 16 ++++++--------- WorldOS-OPERATING-GOAL.md | 5 +++-- WorldOS-RUNBOOK.md | 7 ++----- docs/KIMI-ONBOARDING.md | 2 +- docs/MODEL-TIERING-STRATEGY.md | 2 +- docs/OPERATIONS.md | 6 +++--- docs/RUNBOOK-INDEX.md | 2 +- docs/qa/TEST_MATRIX.md | 2 +- qa/QA_TOOLS.md | 7 +++---- qa/SCORECARD.md | 2 +- 14 files changed, 39 insertions(+), 52 deletions(-) diff --git a/.claude/skills/worldos-dev/SKILL.md b/.claude/skills/worldos-dev/SKILL.md index d9ece7b0..56d0391b 100644 --- a/.claude/skills/worldos-dev/SKILL.md +++ b/.claude/skills/worldos-dev/SKILL.md @@ -14,18 +14,14 @@ universe-system that generates worlds. Source-available commercial product, BG-f Godot GT2 is archived as reference/extension material under `extensions/renderers/godot/`. **AI asset generation** (3D chars, rigging, painterly backdrops, sprites) → the `asset-gen` skill. -> **⚠ HEAVY QA SWEEPS (5-persona / RRI) → USE THE SUPPORT VM, NOT LOCAL.** The 16 GB Mac OOMs mid-sweep -> (proven 2026-06-02: cratered to 147 M free, personas 2–5 backends never minted, shipped a junk PARTIAL RRI 2.7). -> Documented lane: **`WorldOS-GUI-RUNBOOK.md` § "Support VM lane (heavy sweeps)"** + memory note -> `project_worldos_vm_sweep_lane.md`. The Mac runs the **macOS-only** native Part-A (#356 `.app` launcher + -> built-app screenshots); the **32 GB evaos-support VM** (`root@178.104.123.213`, repo `/root/worldos-qa/WorldOS`, -> harness `sweep_v2.sh`) runs the heavy **part-B** 5-persona sweep against the **real OpenWorlds browser GUI** -> (server.py + playwright/chromium — NOT a degraded proxy). RRI rolls up Mac `--handoff-json` + same-SHA VM dirs. -> **On resume after a compaction, re-read that runbook section FIRST** — do not rebuild the QA plan from memory -> or fight local RAM. For per-beat DM latency, see the `worldos-latency-forensics` skill. - -## VM GATE SWEEP — exact procedure (heavy part-B; the thing you keep re-deriving) -**The full gate is ONE command on the 32 GB VM. Update THIS section when the harness changes** — it is +> **Heavy QA sweeps (5-persona / RRI) run on the local Mac.** The support VM lane (support-vm-1, 178.104.123.213) was retired on 2026-10-30; use the local Mac lane. See evaos-support-control#1109. +> (Historical: the old 16 GB Mac OOMed mid-sweep on 2026-06-02, which is why the VM lane existed. The Mac now +> has 14 cores / 64 GB and runs both native Part-A and the part-B 5-persona sweep.) +> For per-beat DM latency, see the `worldos-latency-forensics` skill. + +## VM GATE SWEEP — historical procedure (retired 2026-10-30 — do not follow) +**The support VM lane (support-vm-1, 178.104.123.213) was retired on 2026-10-30; use the local Mac lane. See evaos-support-control#1109.** Kept as a record only. +The full gate was ONE command on the 32 GB VM — it was the source of truth so a cold post-compaction agent never re-learns it (it cost a real diagnosis 2026-06-03). **The VM** (`evaos-support`): `root@178.104.123.213`, key `~/.openclaw/secrets/cloud-deploy-key` (key-only diff --git a/.claude/skills/worldos-latency-forensics/SKILL.md b/.claude/skills/worldos-latency-forensics/SKILL.md index 2892e385..0debea90 100644 --- a/.claude/skills/worldos-latency-forensics/SKILL.md +++ b/.claude/skills/worldos-latency-forensics/SKILL.md @@ -93,7 +93,7 @@ between tool calls" read — same conclusion, correct metric.) "QA must exercise the flag" — a harness that ignores `WORLDOS_LEAN_BEATS`/effort fakes the A/B). 4. **Short duo A/B on the VM** (engine-duo, gateway-free) → quality + latency deltas, same SHA + seed, one credit window (throttling confounds wall-clock). -5. **ONLY THEN** the 5-persona `.app` gate (heavy — use the Support VM lane; see worldos-dev). +5. **ONLY THEN** the 5-persona `.app` gate (heavy — run it on the local Mac; the support VM lane was retired 2026-10-30). Record latency columns (s/beat, cold-open-s, turns/beat) to `qa/scores_db.py` on every run. Cross-refs: `worldos-dev` (dev/QA loops + VM lane), `first-principles-architectural-decision` diff --git a/AGENTS.md b/AGENTS.md index 46f9d7ce..1c252111 100644 --- a/AGENTS.md +++ b/AGENTS.md @@ -11,7 +11,7 @@ Bootstrap order: docs/OPERATIONS.md → docs/roadmap/NOW.md → docs/ACTIVE-GOAL - Use `/Users/m1/Codex` for Codex artifacts, scratch files, screenshots, reports, and downloaded CI/VM artifacts. - Use same-disk local worktrees for GUI/native-app edits that must launch against private art. Lexar worktrees are fine for docs, backend-only, and non-GUI slices that do not launch the app against private art. - Before running install, build, or test commands, verify `pwd`. If a GUI/native app run is not in `/Users/m1/WorldOS` or a same-disk worktree with `WORLDOS_ART_REPO_ROOT=/Users/m1/WorldOS`, explain why. -- Prefer the local Mac (14 cores / 64 GB) for heavyweight validation, full suites, matrix tests, long integration tests, and persona sweeps; use GitHub Actions when a remote runner is better suited. `support-vm-1` is a customer box, not the default heavy-sweep host. +- Prefer the local Mac (14 cores / 64 GB) for heavyweight validation, full suites, matrix tests, long integration tests, and persona sweeps; use GitHub Actions when a remote runner is better suited. The support VM lane (support-vm-1, 178.104.123.213) was retired on 2026-10-30; use the local Mac lane. See evaos-support-control#1109. - Run local tests only for fast feedback, local-only reproduction, validating unpushed edits, or Mac-only `.app` proof. Use the narrowest focused command first. - Do not launch multiple heavyweight local suites or persona sweeps in parallel on this Mac. - If local test work causes memory pressure, stop it, report the command/path, and switch to a narrower check or GitHub CI. @@ -25,14 +25,12 @@ Bootstrap order: docs/OPERATIONS.md → docs/roadmap/NOW.md → docs/ACTIVE-GOAL - The current `qa/RRI.json` from `f5500ac` is partial/harness-contaminated evidence, not a release verdict. - Release evidence requires the RRI contract in `qa/release_readiness.py`: expected/completed/missing personas, disk-backed scores, behavior/UI/image/palette evidence, same build SHA, and non-partial status. -## Support VM +## Support VM (retired 2026-10-30) -- Target VM: owner-provided 32GB support VM, `support-vm-1`. -- Connection/auth details are operator-only and should stay outside tracked repo docs. -- Use `support-vm-1` only for explicitly customer-box or remote-runner work after its credentials/config are intentionally installed and verified there; local heavy QA remains the default. -- VM preflight must record VM identity, repo checkout path, branch/SHA, Codex CLI version, auth/profile status, `uv`, Node/npm/Playwright availability, private-art status or explicit backend-only/no-art classification, env vars, budget/concurrency cap, teardown commands, and artifact return path under `/Users/m1/Codex`. -- The VM cannot prove Mac-only surfaces. `WorldOS.app` build/launch, native #356, and built-app UI play evidence stay on this Mac or macOS CI. -- VM artifacts can feed RRI only when `run.json`, `score.json`, `session_surface.final.json`, network/image evidence, palette-live evidence, and build SHA are explicit. Otherwise the result remains partial/harness-contaminated. +- The support VM lane (support-vm-1, 178.104.123.213) was retired on 2026-10-30; use the local Mac lane. See evaos-support-control#1109. +- Historical rules, kept for audit context: VM preflight had to record VM identity, repo checkout path, branch/SHA, Codex CLI version, auth/profile status, `uv`, Node/npm/Playwright availability, private-art status or explicit backend-only/no-art classification, env vars, budget/concurrency cap, teardown commands, and artifact return path under `/Users/m1/Codex`. +- The VM could not prove Mac-only surfaces. `WorldOS.app` build/launch, native #356, and built-app UI play evidence stay on this Mac or macOS CI. +- VM artifacts could feed RRI only when `run.json`, `score.json`, `session_surface.final.json`, network/image evidence, palette-live evidence, and build SHA are explicit. Otherwise the result remains partial/harness-contaminated. ## GEX44 GPU host (HISTORICAL — retired 2026-08-06) @@ -42,7 +40,7 @@ build, capture, or save against `46.4.26.123`, `/home/unity`, or the retired `ge Unity 6000.5.6f1 runs at `/Users/m1/worldos-unity` (mirror `/Users/m1/Codex/worldos-unity-mirror`) via `extensions/renderers/unity/tools/mcp_stdio_exec.py`; build with the WorldOS macOS menu command and run -QA through `qa/qa_sandbox.py`. Local Mac heavy QA is primary; `support-vm-1` is a customer box. +QA through `qa/qa_sandbox.py`. Local Mac heavy QA is primary; `support-vm-1` was retired 2026-10-30. ## Shared Owned-Repo Policy diff --git a/VISION.md b/VISION.md index a8d0a822..d05c2a3b 100644 --- a/VISION.md +++ b/VISION.md @@ -156,7 +156,7 @@ Tier-0/1 result as a release verdict): rotated persona + a ≥6-beat duo (below 6 disarms the FATAL behavioral floors). Iteration signal only. - **Tier 2 — the 5-persona sweep + Mac native part-A → RRI** (~$40, ~90min): milestone verdict only, after 0+1 pass; ≤3 sweeps per milestone. Heavy QA runs locally on this 14-core / 64 GB Mac; - `support-vm-1` is a customer box and is not the default sweep host. Log every scored run to the + `support-vm-1` was retired on 2026-10-30. Log every scored run to the ledger (`qa/scores_db.py`). **Release ladder:** Engine Excellent → **Player-Ready Beta** (a real built `.app`; a no-prior- diff --git a/WorldOS-GUI-RUNBOOK.md b/WorldOS-GUI-RUNBOOK.md index fa19ae6c..8e4b8ba1 100644 --- a/WorldOS-GUI-RUNBOOK.md +++ b/WorldOS-GUI-RUNBOOK.md @@ -277,15 +277,11 @@ script/build_and_run.sh --verify This proves the local/worktree-built bundle launches without killing an existing app. It is only a smoke: release truth still requires `qa/ui_playtest_app.sh` Part A+B and the full RRI sweep. -## Support VM lane (customer-box / explicitly remote; not the default) +## Historical support VM lane (retired 2026-10-30 — do not follow) -> **Local is primary:** this 14-core / 64 GB Mac owns Unity, visual rendering, and heavy QA. The -> 32 GB `support-vm-1` is a customer box; use it only for an explicitly remote/customer-box run. -> This section records that lane's mechanics and is not a reason to move default heavy sweeps off Mac. +> **The support VM lane (support-vm-1, 178.104.123.213) was retired on 2026-10-30; use the local Mac lane. See evaos-support-control#1109.** The host was wiped and repurposed; it no longer has WorldOS tooling, credentials, the +> Woodpecker agent, or tailnet access. The notes below are kept only as a dated record. -- Target: owner-provided **32GB support VM** (`support-vm-1`); connection: `root@178.104.123.213`, - key `~/.openclaw/secrets/cloud-deploy-key`, repo `/root/worldos-qa/WorldOS`. Further connection/auth - detail lives in local operator-only runbooks/evidence, not tracked repo docs. - Do not assume it is ready for an explicitly remote/customer-box run until credentials/config are intentionally installed and verified. When selected, the support-VM persona lane is Codex DM plus Codex UI player; Claude is only required when the preflight is run with `--provider claude` or `--player-agent claude`. The Codex lane requires @@ -374,7 +370,7 @@ run QA via `qa/qa_sandbox.py` (8866/8972; owner 8776/8981). Keep source authorit The **Hetzner GEX44 GPU dedicated server** (`evaos-gpu-gex44-1`, provisioned 2026-06-25; RTX 4000 SFF Ada / 64 GB / Ubuntu 24.04) was the former heavy-QA and Unity render host. This dated record is retained for -evidence provenance only; use the Local Unity lane and `support-vm-1` above for current work. +evidence provenance only; use the Local Unity lane above for current work (`support-vm-1` was retired 2026-10-30). **Connection/auth details live in `~/.openclaw/secrets/gex44.env` (operator-only)** — never put the endpoint, SSH key, or the VNC password in this tracked doc (same convention as the Support VM lane). @@ -546,8 +542,8 @@ took over the developer's only display and the Mac had to be rebooted. Now: (`worldos-*`/`WORLDOS_*` MCP ids, `dev.worldos.app`); you MAY read `WORLDOS_ART_REPO_ROOT`. - `_private/` (the 2.9 GB art) is **never committed**. Building/serving from the local checkout is how the art is present; worktrees can read it via `WORLDOS_ART_REPO_ROOT=/Users/m1/WorldOS` when needed. -- 14-core / 64 GB Mac: local heavy QA is the default. Use GitHub CI or the customer `support-vm-1` - only when the run is explicitly remote; never launch multiple heavyweight persona sweeps locally. +- 14-core / 64 GB Mac: local heavy QA is the default. Use GitHub CI only when the run is explicitly + remote (`support-vm-1` was retired 2026-10-30); never launch multiple heavyweight persona sweeps locally. - **Verify, don't trust:** ≥2 clean reads for any claim; the RRI scorer reads disk, not the live channel; confirm builder PRs actually pushed. - The product is the **launchable, played .app**. A green score on any other surface is a diff --git a/WorldOS-OPERATING-GOAL.md b/WorldOS-OPERATING-GOAL.md index 420d3468..70cc52b2 100644 --- a/WorldOS-OPERATING-GOAL.md +++ b/WorldOS-OPERATING-GOAL.md @@ -24,7 +24,8 @@ WORKTREES: For tracked edits, prefer same-disk local worktrees when GUI/app tests need assets. Use /Users/m1/Codex for evidence/snapshots and Lexar worktrees only for non-GUI/doc/backend slices that do not launch the app against private art. - SUPPORT VM: 32GB owner-provided support VM (`support-vm-1`). Connection/auth details live + SUPPORT VM: RETIRED 2026-10-30 (support-vm-1, 178.104.123.213); use the local Mac lane. See + evaos-support-control#1109. Historical record follows: 32GB support VM. Connection/auth details lived in local operator-only evidence/runbooks, not tracked repo docs. Use it for heavy backend/persona sweeps only after Codex/config/credentials are intentionally installed. The default VM persona lane is Codex DM plus Codex UI player and requires @@ -299,7 +300,7 @@ verifier; can revert the goal to "fix" anytime. The easiest current path is a support-VM sweep pinned to `da05101`, gated first by `qa/support_vm_preflight.py --expected-sha da05101`, and paired with the `da05101` handoff JSON. If the sweep runs on a newer `origin/main` tip, rerun the Mac handoff on that same SHA first. - Heavy backend/persona sweeps belong on the owner-provided 32GB support VM (`support-vm-1`) once auth/config + (Historical; the support VM `support-vm-1` was retired 2026-10-30.) Heavy backend/persona sweeps belonged on the 32GB support VM once auth/config are intentionally installed there; connection details are kept outside tracked docs. The 2026-06-07 repo-owned support preflight for `da05101` wrote `/Volumes/LEXAR/Codex/worldos-support-vm-rri/da05101-preflight/` (historical path — /Volumes/LEXAR/Codex/worldos-support-vm-rri/da05101-preflight/; that machine is gone, see NOW.md) and returned `verdict=blocked`: diff --git a/WorldOS-RUNBOOK.md b/WorldOS-RUNBOOK.md index 70b04a78..428bbb4f 100644 --- a/WorldOS-RUNBOOK.md +++ b/WorldOS-RUNBOOK.md @@ -12,11 +12,8 @@ > **Local/VM routing, 2026-06-01:** `/Users/m1/WorldOS` is the synced local app/private-art > checkout and should be used for GUI/native-app testing. Use `/Users/m1/Codex` for evidence, > snapshots, and logs; do not make Lexar the default GUI runtime tree because external-drive -> permissions can break local AI/browser tests. Heavy backend/persona sweeps belong on GitHub CI or -> the owner-provided 32GB support VM (`support-vm-1`) after remote access and Codex config are -> intentionally installed and verified; connection details are kept outside tracked docs. A read-only -> scout reached the operator endpoint and found `evaos-support` suitable but stale (`4524b3e`, behind -> the `9545383` proof baseline) with Codex auth/config unproven. Mac-only built-app proof remains local/macOS CI. +> permissions can break local AI/browser tests. Heavy backend/persona sweeps run on this Mac or GitHub CI. +> The support VM lane (support-vm-1, 178.104.123.213) was retired on 2026-10-30; use the local Mac lane. See evaos-support-control#1109. Mac-only built-app proof remains local/macOS CI. > **This is the compaction-resilience doc.** If you are an agent resuming this project > after a context reset, read this top-to-bottom before doing anything. It captures the diff --git a/docs/KIMI-ONBOARDING.md b/docs/KIMI-ONBOARDING.md index 58bceb16..0a36f5f5 100644 --- a/docs/KIMI-ONBOARDING.md +++ b/docs/KIMI-ONBOARDING.md @@ -64,7 +64,7 @@ Source: `~/.claude/tasks/237280f0-e8fe-4529-bb6e-72957d537c61/76.json` (status: through `extensions/renderers/unity/tools/mcp_stdio_exec.py`; build with `execute_menu_item "Tools/WorldOS/Build/macOS Player (Universal)"`, capture with `manage_camera`, and run QA via `qa/qa_sandbox.py` (8866/8972; owner 8776/8981). -- Commit renderer source here; `support-vm-1` is only the heavy-backend-sweep fallback. +- Commit renderer source here; `support-vm-1` was retired on 2026-10-30; heavy sweeps run on the local Mac. ## 6. Skills & agent profiles — porting decision (read-on-demand, NO symlinks/copies) diff --git a/docs/MODEL-TIERING-STRATEGY.md b/docs/MODEL-TIERING-STRATEGY.md index 4915b181..00faff01 100644 --- a/docs/MODEL-TIERING-STRATEGY.md +++ b/docs/MODEL-TIERING-STRATEGY.md @@ -127,7 +127,7 @@ artifact (little combat to score), not an engine defect (Engine-Excellent is met digest-correctness (1 engine call, no LLM) → cache-stability (1 two-beat run) → effort/flag-wiring probe (confirm the runner consumes the flag — see worldos-dev "QA must exercise the flag") → short duo A/B on the 32 GB VM (same SHA + seed, one credit window) → ONLY THEN the 5-persona `.app` gate (Mac native Part-A + the -VM part-B sweep; see the Support VM lane). Hold the scorer constant during any A/B. +VM part-B sweep; the Support VM lane was retired 2026-10-30). Hold the scorer constant during any A/B. ## Still open - **The #640 lean re-ground root** — the key Opus-latency enabler (re-enable lean safely; repro-first). diff --git a/docs/OPERATIONS.md b/docs/OPERATIONS.md index beb91597..3b270229 100644 --- a/docs/OPERATIONS.md +++ b/docs/OPERATIONS.md @@ -42,7 +42,7 @@ tests (`uv run --directory servers/engine python -m pytest -q -p no:xdis `qa/fast_gate.sh` → push + PR (HEREDOC body) → review-gated merge (CI green + review threads resolved; validate bot findings against source before acting — they are hypotheses) → prune. Full detail: the `worldos-dev` skill / `WorldOS-RUNBOOK.md`. Heavy QA runs LOCALLY on this machine -(14 cores / 64 GB, per the 2026-08-03 test policy — the support VM is no longer required); see +(14 cores / 64 GB, per the 2026-08-03 test policy — the support VM `support-vm-1` was retired on 2026-10-30, see evaos-support-control#1109); see `WorldOS-GUI-RUNBOOK.md`. Unity work follows `extensions/renderers/unity/CANONICAL.md` (read it FIRST — canonical state lives there) + the GUI runbook's box discipline. @@ -230,8 +230,8 @@ operating rule for anything visual and owner-bound, not just that one panel type `extensions/renderers/unity/tools/mcp_stdio_exec.py`; build with `execute_menu_item "Tools/WorldOS/Build/macOS Player (Universal)"`, capture with `manage_camera`, and run isolated QA on 8866/8972 via `qa/qa_sandbox.py`. -**Local is primary:** this Mac (14 cores / 64 GB) owns Unity and heavy QA; `support-vm-1` is a -customer box and is not the default heavy-sweep host. Single-tenant discipline is now local: +**Local is primary:** this Mac (14 cores / 64 GB) owns Unity and heavy QA; `support-vm-1` was +retired on 2026-10-30 (evaos-support-control#1109). Single-tenant discipline is now local: - Before opening a headed Editor, run `pgrep -f 'Unity.app/Contents/MacOS/Unity'`. If it returns a PID, reuse or coordinate with that one Editor; never launch a second process. diff --git a/docs/RUNBOOK-INDEX.md b/docs/RUNBOOK-INDEX.md index fd224bf1..b752c48e 100644 --- a/docs/RUNBOOK-INDEX.md +++ b/docs/RUNBOOK-INDEX.md @@ -18,7 +18,7 @@ | mechanism probe | `qa/mechanism_probe.sh` | ~$1, cue-adjacent PRs | fixture transcript + deterministic ACTED/IGNORED | engine-duo (auto-append) | OPERATIONS QA-econ v2 | | combat sprint | `qa/run_combat_sprint.sh` | ~$1.50, combat-adjacent | transcript + mech score + behavioral | engine-duo (auto-append #1414) | worldos-dev | | story/mech duo | `qa/run_duo.sh` | ~$6, BATCH/release only, solo-tenant | transcript + 3 lenses + behavioral + infra-health note | engine-duo (auto-append #1414; CONTAMINATED marker on QUOTA/INFRA abort) | worldos-dev + watcher contract | -| 5-persona sweep | `qa/vm/sweep_v2.sh` (canonical: evaos-support VM) | ~$12, milestone | RRI json + persona score.json ×5 | GUI-headless-proxy (auto-append #1414, per persona) | WorldOS-GUI-RUNBOOK | +| 5-persona sweep | `qa/vm/sweep_v2.sh` (evaos-support VM retired 2026-10-30; run locally) | ~$12, milestone | RRI json + persona score.json ×5 | GUI-headless-proxy (auto-append #1414, per persona) | WorldOS-GUI-RUNBOOK | | app gate (native) | `qa/ui_playtest_app.sh` | ~$7, release | run.json + score.json + handoff.json | GUI-built-app (auto-append #1414, from score.json) | worldos-dev VM-GATE §; ⚠ `ui_playtest.sh` variant tests a non-shippable port | | agent-play DM loop (DM-only, live sandbox) | `qa/agent_play.sh start\|say\|serve\|status\|stop` against an ALREADY-RUNNING `qa/qa_sandbox.py up` stack (`--engine ` + `--state `); `--dry-run` exercises everything but the `claude -p` call | ~$0.5-1 per beat (opus DM, one beat per `say`/player line/move intent); the PLAYER is an agent or a human — no second `claude -p` | `session.json` + `.quest_trace.json` + `.dm.*.jsonl` + bounded `/closeout.json` (beats, stamps, spend, quest, chat), and the two-sided `/chat.jsonl` rows | `/closeout.json` only; no scores_db row (the scored eval owns that) | worldos-dev; shares `qa/lib_adventure_dm.sh` with `qa/run_adventure.sh`; `serve` consumes viewer chat and `$WORLDOS_PLAYER_MOVES`, while engine-resolved `/move` kinds remain engine-owned. `stop` terminates the recorded serve PID and writes the closeout; the owner `org.worldos.owner-dm` LaunchAgent has `KeepAlive=false` | | agent G4 two-pass playtest | pass 1 walkaround + pass 2 live-DM story; persist with `qa/agent_g4_row.py --build --p1 --p2 --p3 --route-complete <0|1> --pass1 --pass2 --frames-dir --persist --run-id ` | $0 persistence; pass 2 follows agent-play cost | frames directory + triage/reproduction evidence + pass verdicts | agent_g4 | DESIGN-MEMO-2026-09-02 §1 · charter #1702 | diff --git a/docs/qa/TEST_MATRIX.md b/docs/qa/TEST_MATRIX.md index daefe002..69149f47 100644 --- a/docs/qa/TEST_MATRIX.md +++ b/docs/qa/TEST_MATRIX.md @@ -26,7 +26,7 @@ largely gone — GLM is a fine DM for nearly all QA. | **Arc smoke** | `qa/run_arc_smoke.sh 4` (set the model — defaults Sonnet!) | ~5 m | Does a companion arc ENGAGE (met + approval moves off 0)? | | **Combat-sprint median** | `qa/run_combat_sprint.sh ` ×3 → median of `*.angrydm.json` | Opus ~5/run | The HONEST mechanical gate (pre-seeded, deterministic coverage). Baseline 3.7. | | **3-act full run** | `qa/run_duo.sh` with the embergloom prompt, ≥24 beats (Opus or GLM) | hours | Story + companion + combat over a full authored arc. | -| **5-persona VM sweep + RRI** | the support-VM lane (`qa/vm/sweep_v2.sh`) — see `WorldOS-GUI-RUNBOOK.md` | hours, VM | The release index (story/mech/sat per persona + the 11 RRI gates). **RELEASE-only.** | +| **5-persona sweep + RRI** | local Mac (the support-VM lane was retired 2026-10-30, evaos-support-control#1109) — see `WorldOS-GUI-RUNBOOK.md` | hours | The release index (story/mech/sat per persona + the 11 RRI gates). **RELEASE-only.** | ## What to run for which change | You changed… | Run (fast → slow) | diff --git a/qa/QA_TOOLS.md b/qa/QA_TOOLS.md index 184d45cd..ebb0914c 100644 --- a/qa/QA_TOOLS.md +++ b/qa/QA_TOOLS.md @@ -7,7 +7,7 @@ Default local paths: - App/private-art checkout: `/Users/m1/WorldOS`. - Evidence root: `/Users/m1/Codex`. -- Heavy persona/backend sweeps: GitHub CI or the owner-provided support VM after explicit preflight. +- Heavy persona/backend sweeps: the local Mac or GitHub CI. The support VM lane (support-vm-1, 178.104.123.213) was retired on 2026-10-30; use the local Mac lane. See evaos-support-control#1109. ## Fast GUI And Native App Gates @@ -48,12 +48,11 @@ Stable app failure buckets are: |---|---|---|---| | `qa/release_readiness.py` | The Release Readiness Index rollup and only release verdict | Complete same-SHA app/persona evidence, including optional `--handoff-json` Mac proof | You only need fast GUI wiring confidence | | `qa/release_gate.sh` | Orchestrate the release sweep over the canonical persona set | Built app, persona runs, behavior/UI/image/palette evidence | The support VM or Mac proof preflight is incomplete | -| `qa/support_vm_preflight.py` | Read-only readiness artifact before a support-VM persona sweep | VM identity, repo SHA, selected provider/player lane, `origin/main` queryability, tool/auth/art status, return path, teardown plan | You are trying to fix or sync the VM; get operator approval first | +| `qa/support_vm_preflight.py` | Read-only readiness artifact before a support-VM persona sweep (lane retired 2026-10-30) | VM identity, repo SHA, selected provider/player lane, `origin/main` queryability, tool/auth/art status, return path, teardown plan | You are trying to fix or sync the VM; get operator approval first | RRI requires a non-partial five-persona result on one build SHA. A handoff gate can feed the native app proof through `--handoff-json`, but it cannot fill in missing persona artifacts. The support-VM -preflight must pass before a VM sweep can count toward #466; if `origin/main` is not queryable from -the VM, fix the VM repo credentials/sync lane before running personas. +lane (and its preflight) was retired on 2026-10-30; see evaos-support-control#1109. When a sweep uses remote/persona artifacts plus Mac handoff proof, pass both evidence files into the RRI rollup path: `qa/release_gate.sh --handoff-json --support-preflight-json ...`. Missing or stale support-preflight evidence must stay a failed diff --git a/qa/SCORECARD.md b/qa/SCORECARD.md index 013b7b2c..cff045aa 100644 --- a/qa/SCORECARD.md +++ b/qa/SCORECARD.md @@ -17,7 +17,7 @@ | Latest fast GUI handoff proof | `handoff-20260607-da05101-current-main-clean` under `/Volumes/LEXAR/Codex/worldos-agent-grade-app-testability/` | | Latest release verdict | None after RRI hardening | | Latest RRI attempt | `gate-f5500ac-partial` is partial / harness-contaminated, not release evidence | -| Latest support-VM preflight | `da05101-preflight` is blocked: VM checkout `e5c0a5f` vs GitHub `da05101`, Codex auth/profile not proven, and #466 requires private art mode `required` | +| Latest support-VM preflight (lane retired 2026-10-30) | `da05101-preflight` is blocked: VM checkout `e5c0a5f` vs GitHub `da05101`, Codex auth/profile not proven, and #466 requires private art mode `required` | | Fast GUI gate command | `python3 qa/app_handoff_gate.py --web-beats 5 --built-beats 5 --codex-moves 1 --art-root /Users/lume/WorldOS-val --scripted-budget 1.00 --codex-budget 3.00 --timeout 90 --codex-timeout 240` | | Next release action | #466 clean non-partial RRI on one SHA, pairing same-SHA Mac handoff proof with complete persona/backend artifacts | From c3ed193f9747c44b9f314aa2c0bd7e6a943081a5 Mon Sep 17 00:00:00 2001 From: Eva Date: Fri, 30 Oct 2026 14:11:18 +0900 Subject: [PATCH 2/3] docs: point the release persona sweep at its port issue, not a local lane The support VM's part-B 5-persona harness is VM-only, so "run locally" was not yet true. Route the duo A/B to the local Mac, mark the remaining VM material historical, and point the release sweep at #1822. Drop the retired-VM fallback from release_gate.sh's low-RAM message, and keep the box address out of the new lines. --- .claude/skills/worldos-dev/SKILL.md | 8 +++++--- .claude/skills/worldos-latency-forensics/SKILL.md | 4 ++-- AGENTS.md | 4 ++-- WorldOS-GUI-RUNBOOK.md | 4 ++-- WorldOS-OPERATING-GOAL.md | 10 +++++----- WorldOS-RUNBOOK.md | 2 +- docs/MODEL-TIERING-STRATEGY.md | 4 ++-- docs/RUNBOOK-INDEX.md | 2 +- docs/qa/TEST_MATRIX.md | 6 +++--- qa/QA_TOOLS.md | 5 +++-- qa/release_gate.sh | 2 +- 11 files changed, 27 insertions(+), 24 deletions(-) diff --git a/.claude/skills/worldos-dev/SKILL.md b/.claude/skills/worldos-dev/SKILL.md index 56d0391b..b1cf82a4 100644 --- a/.claude/skills/worldos-dev/SKILL.md +++ b/.claude/skills/worldos-dev/SKILL.md @@ -14,13 +14,15 @@ universe-system that generates worlds. Source-available commercial product, BG-f Godot GT2 is archived as reference/extension material under `extensions/renderers/godot/`. **AI asset generation** (3D chars, rigging, painterly backdrops, sprites) → the `asset-gen` skill. -> **Heavy QA sweeps (5-persona / RRI) run on the local Mac.** The support VM lane (support-vm-1, 178.104.123.213) was retired on 2026-10-30; use the local Mac lane. See evaos-support-control#1109. +> **Heavy QA runs on the local Mac.** The support VM lane (support-vm-1) was retired on 2026-10-30. See evaos-support-control#1109. +> The release part-B 5-persona sweep has no local port yet: its harness was VM-only (#1822). > (Historical: the old 16 GB Mac OOMed mid-sweep on 2026-06-02, which is why the VM lane existed. The Mac now -> has 14 cores / 64 GB and runs both native Part-A and the part-B 5-persona sweep.) +> has 14 cores / 64 GB.) > For per-beat DM latency, see the `worldos-latency-forensics` skill. ## VM GATE SWEEP — historical procedure (retired 2026-10-30 — do not follow) -**The support VM lane (support-vm-1, 178.104.123.213) was retired on 2026-10-30; use the local Mac lane. See evaos-support-control#1109.** Kept as a record only. + +**The support VM lane (support-vm-1) was retired on 2026-10-30; local port of this sweep: #1822. See evaos-support-control#1109.** Kept as a record only. The full gate was ONE command on the 32 GB VM — it was the source of truth so a cold post-compaction agent never re-learns it (it cost a real diagnosis 2026-06-03). diff --git a/.claude/skills/worldos-latency-forensics/SKILL.md b/.claude/skills/worldos-latency-forensics/SKILL.md index 0debea90..c9d82a91 100644 --- a/.claude/skills/worldos-latency-forensics/SKILL.md +++ b/.claude/skills/worldos-latency-forensics/SKILL.md @@ -91,9 +91,9 @@ between tool calls" read — same conclusion, correct metric.) 2. **Cache-stability** (one 2-beat run) → confirm the prefix cache holds across beats. 3. **Effort/flag-wiring probe** → confirm the runner ACTUALLY consumes the flag (see worldos-dev's "QA must exercise the flag" — a harness that ignores `WORLDOS_LEAN_BEATS`/effort fakes the A/B). -4. **Short duo A/B on the VM** (engine-duo, gateway-free) → quality + latency deltas, same SHA + seed, +4. **Short duo A/B on the local Mac** (engine-duo, gateway-free) → quality + latency deltas, same SHA + seed, one credit window (throttling confounds wall-clock). -5. **ONLY THEN** the 5-persona `.app` gate (heavy — run it on the local Mac; the support VM lane was retired 2026-10-30). +5. **ONLY THEN** the 5-persona `.app` gate (heavy; the support VM lane that ran its part-B sweep was retired 2026-10-30, local port in #1822). Record latency columns (s/beat, cold-open-s, turns/beat) to `qa/scores_db.py` on every run. Cross-refs: `worldos-dev` (dev/QA loops + VM lane), `first-principles-architectural-decision` diff --git a/AGENTS.md b/AGENTS.md index 1c252111..4d79395e 100644 --- a/AGENTS.md +++ b/AGENTS.md @@ -11,7 +11,7 @@ Bootstrap order: docs/OPERATIONS.md → docs/roadmap/NOW.md → docs/ACTIVE-GOAL - Use `/Users/m1/Codex` for Codex artifacts, scratch files, screenshots, reports, and downloaded CI/VM artifacts. - Use same-disk local worktrees for GUI/native-app edits that must launch against private art. Lexar worktrees are fine for docs, backend-only, and non-GUI slices that do not launch the app against private art. - Before running install, build, or test commands, verify `pwd`. If a GUI/native app run is not in `/Users/m1/WorldOS` or a same-disk worktree with `WORLDOS_ART_REPO_ROOT=/Users/m1/WorldOS`, explain why. -- Prefer the local Mac (14 cores / 64 GB) for heavyweight validation, full suites, matrix tests, long integration tests, and persona sweeps; use GitHub Actions when a remote runner is better suited. The support VM lane (support-vm-1, 178.104.123.213) was retired on 2026-10-30; use the local Mac lane. See evaos-support-control#1109. +- Prefer the local Mac (14 cores / 64 GB) for heavyweight validation, full suites, matrix tests, long integration tests, and persona sweeps; use GitHub Actions when a remote runner is better suited. The support VM lane (support-vm-1) was retired on 2026-10-30; use the local Mac lane. See evaos-support-control#1109. - Run local tests only for fast feedback, local-only reproduction, validating unpushed edits, or Mac-only `.app` proof. Use the narrowest focused command first. - Do not launch multiple heavyweight local suites or persona sweeps in parallel on this Mac. - If local test work causes memory pressure, stop it, report the command/path, and switch to a narrower check or GitHub CI. @@ -27,7 +27,7 @@ Bootstrap order: docs/OPERATIONS.md → docs/roadmap/NOW.md → docs/ACTIVE-GOAL ## Support VM (retired 2026-10-30) -- The support VM lane (support-vm-1, 178.104.123.213) was retired on 2026-10-30; use the local Mac lane. See evaos-support-control#1109. +- The support VM lane (support-vm-1) was retired on 2026-10-30; use the local Mac lane. See evaos-support-control#1109. - Historical rules, kept for audit context: VM preflight had to record VM identity, repo checkout path, branch/SHA, Codex CLI version, auth/profile status, `uv`, Node/npm/Playwright availability, private-art status or explicit backend-only/no-art classification, env vars, budget/concurrency cap, teardown commands, and artifact return path under `/Users/m1/Codex`. - The VM could not prove Mac-only surfaces. `WorldOS.app` build/launch, native #356, and built-app UI play evidence stay on this Mac or macOS CI. - VM artifacts could feed RRI only when `run.json`, `score.json`, `session_surface.final.json`, network/image evidence, palette-live evidence, and build SHA are explicit. Otherwise the result remains partial/harness-contaminated. diff --git a/WorldOS-GUI-RUNBOOK.md b/WorldOS-GUI-RUNBOOK.md index 8e4b8ba1..14aaef28 100644 --- a/WorldOS-GUI-RUNBOOK.md +++ b/WorldOS-GUI-RUNBOOK.md @@ -248,7 +248,7 @@ evidence gaps can count as release evidence. 4/5 derived — a self-report-coverage artifact, not a quality verdict). Read `satisfaction_source`; a derived G3-miss is inconclusive. - **PARTIAL ≠ product RED.** A host-memory crater (only persona-1 scored) or a hung/incomplete rollup (e.g. the - duo step stalls) is harness-contaminated — re-run via the VM lane; never cite a PARTIAL RRI as a quality score. + duo step stalls) is harness-contaminated — re-run it on a clean lane (the VM lane was retired 2026-10-30; local port in #1822); never cite a PARTIAL RRI as a quality score. ## macOS privacy prompt triage @@ -279,7 +279,7 @@ release truth still requires `qa/ui_playtest_app.sh` Part A+B and the full RRI s ## Historical support VM lane (retired 2026-10-30 — do not follow) -> **The support VM lane (support-vm-1, 178.104.123.213) was retired on 2026-10-30; use the local Mac lane. See evaos-support-control#1109.** The host was wiped and repurposed; it no longer has WorldOS tooling, credentials, the +> **The support VM lane (support-vm-1) was retired on 2026-10-30; use the local Mac lane. See evaos-support-control#1109.** The host was wiped and repurposed; it no longer has WorldOS tooling, credentials, the > Woodpecker agent, or tailnet access. The notes below are kept only as a dated record. - Do not assume it is ready for an explicitly remote/customer-box run until credentials/config are intentionally installed and verified. diff --git a/WorldOS-OPERATING-GOAL.md b/WorldOS-OPERATING-GOAL.md index 70cc52b2..93c80266 100644 --- a/WorldOS-OPERATING-GOAL.md +++ b/WorldOS-OPERATING-GOAL.md @@ -24,8 +24,8 @@ WORKTREES: For tracked edits, prefer same-disk local worktrees when GUI/app tests need assets. Use /Users/m1/Codex for evidence/snapshots and Lexar worktrees only for non-GUI/doc/backend slices that do not launch the app against private art. - SUPPORT VM: RETIRED 2026-10-30 (support-vm-1, 178.104.123.213); use the local Mac lane. See - evaos-support-control#1109. Historical record follows: 32GB support VM. Connection/auth details lived + SUPPORT VM: RETIRED 2026-10-30 (support-vm-1); use the local Mac lane. See + evaos-support-control#1109. HISTORICAL RECORD ONLY, do not follow: 32GB support VM. Connection/auth details lived in local operator-only evidence/runbooks, not tracked repo docs. Use it for heavy backend/persona sweeps only after Codex/config/credentials are intentionally installed. The default VM persona lane is Codex DM plus Codex UI player and requires @@ -297,10 +297,10 @@ verifier; can revert the goal to "fix" anytime. `/usr/bin/find` launched by the test/diagnostic environment. Treat that screenshot prompt as harness contamination unless a clean run shows `WorldOSApp`/WebKit itself accessing a protected library path. - The next gate evidence step is issue #466: a clean non-partial five-persona RRI from one explicit SHA. - The easiest current path is a support-VM sweep pinned to `da05101`, gated first by + It needs a local part-B sweep first (#1822); the support VM `support-vm-1` was retired 2026-10-30. + (Historical, do not follow: the old path was a support-VM sweep pinned to `da05101`, gated first by `qa/support_vm_preflight.py --expected-sha da05101`, and paired with the `da05101` handoff JSON. If the - sweep runs on a newer `origin/main` tip, rerun the Mac handoff on that same SHA first. - (Historical; the support VM `support-vm-1` was retired 2026-10-30.) Heavy backend/persona sweeps belonged on the 32GB support VM once auth/config + sweep ran on a newer `origin/main` tip, the Mac handoff was rerun on that same SHA first.) Heavy backend/persona sweeps belonged on the 32GB support VM once auth/config are intentionally installed there; connection details are kept outside tracked docs. The 2026-06-07 repo-owned support preflight for `da05101` wrote `/Volumes/LEXAR/Codex/worldos-support-vm-rri/da05101-preflight/` (historical path — /Volumes/LEXAR/Codex/worldos-support-vm-rri/da05101-preflight/; that machine is gone, see NOW.md) and returned `verdict=blocked`: diff --git a/WorldOS-RUNBOOK.md b/WorldOS-RUNBOOK.md index 428bbb4f..b11e13ab 100644 --- a/WorldOS-RUNBOOK.md +++ b/WorldOS-RUNBOOK.md @@ -13,7 +13,7 @@ > checkout and should be used for GUI/native-app testing. Use `/Users/m1/Codex` for evidence, > snapshots, and logs; do not make Lexar the default GUI runtime tree because external-drive > permissions can break local AI/browser tests. Heavy backend/persona sweeps run on this Mac or GitHub CI. -> The support VM lane (support-vm-1, 178.104.123.213) was retired on 2026-10-30; use the local Mac lane. See evaos-support-control#1109. Mac-only built-app proof remains local/macOS CI. +> The support VM lane (support-vm-1) was retired on 2026-10-30; use the local Mac lane. See evaos-support-control#1109. Mac-only built-app proof remains local/macOS CI. > **This is the compaction-resilience doc.** If you are an agent resuming this project > after a context reset, read this top-to-bottom before doing anything. It captures the diff --git a/docs/MODEL-TIERING-STRATEGY.md b/docs/MODEL-TIERING-STRATEGY.md index 00faff01..c34e66a9 100644 --- a/docs/MODEL-TIERING-STRATEGY.md +++ b/docs/MODEL-TIERING-STRATEGY.md @@ -126,8 +126,8 @@ artifact (little combat to score), not an engine defect (Engine-Excellent is met ## Validation ladder (cheap → expensive; before any model/effort spend) digest-correctness (1 engine call, no LLM) → cache-stability (1 two-beat run) → effort/flag-wiring probe (confirm the runner consumes the flag — see worldos-dev "QA must exercise the flag") → short duo A/B on the -32 GB VM (same SHA + seed, one credit window) → ONLY THEN the 5-persona `.app` gate (Mac native Part-A + the -VM part-B sweep; the Support VM lane was retired 2026-10-30). Hold the scorer constant during any A/B. +local Mac (same SHA + seed, one credit window) → ONLY THEN the 5-persona `.app` gate (Mac native Part-A + the +part-B persona sweep; the Support VM lane that ran part-B was retired 2026-10-30, local port in #1822). Hold the scorer constant during any A/B. ## Still open - **The #640 lean re-ground root** — the key Opus-latency enabler (re-enable lean safely; repro-first). diff --git a/docs/RUNBOOK-INDEX.md b/docs/RUNBOOK-INDEX.md index b752c48e..fab8749e 100644 --- a/docs/RUNBOOK-INDEX.md +++ b/docs/RUNBOOK-INDEX.md @@ -18,7 +18,7 @@ | mechanism probe | `qa/mechanism_probe.sh` | ~$1, cue-adjacent PRs | fixture transcript + deterministic ACTED/IGNORED | engine-duo (auto-append) | OPERATIONS QA-econ v2 | | combat sprint | `qa/run_combat_sprint.sh` | ~$1.50, combat-adjacent | transcript + mech score + behavioral | engine-duo (auto-append #1414) | worldos-dev | | story/mech duo | `qa/run_duo.sh` | ~$6, BATCH/release only, solo-tenant | transcript + 3 lenses + behavioral + infra-health note | engine-duo (auto-append #1414; CONTAMINATED marker on QUOTA/INFRA abort) | worldos-dev + watcher contract | -| 5-persona sweep | `qa/vm/sweep_v2.sh` (evaos-support VM retired 2026-10-30; run locally) | ~$12, milestone | RRI json + persona score.json ×5 | GUI-headless-proxy (auto-append #1414, per persona) | WorldOS-GUI-RUNBOOK | +| 5-persona sweep | `qa/vm/sweep_v2.sh` (VM-only reference copy; the support VM was retired 2026-10-30 and the local port is #1822) | ~$12, milestone | RRI json + persona score.json ×5 | GUI-headless-proxy (auto-append #1414, per persona) | WorldOS-GUI-RUNBOOK | | app gate (native) | `qa/ui_playtest_app.sh` | ~$7, release | run.json + score.json + handoff.json | GUI-built-app (auto-append #1414, from score.json) | worldos-dev VM-GATE §; ⚠ `ui_playtest.sh` variant tests a non-shippable port | | agent-play DM loop (DM-only, live sandbox) | `qa/agent_play.sh start\|say\|serve\|status\|stop` against an ALREADY-RUNNING `qa/qa_sandbox.py up` stack (`--engine ` + `--state `); `--dry-run` exercises everything but the `claude -p` call | ~$0.5-1 per beat (opus DM, one beat per `say`/player line/move intent); the PLAYER is an agent or a human — no second `claude -p` | `session.json` + `.quest_trace.json` + `.dm.*.jsonl` + bounded `/closeout.json` (beats, stamps, spend, quest, chat), and the two-sided `/chat.jsonl` rows | `/closeout.json` only; no scores_db row (the scored eval owns that) | worldos-dev; shares `qa/lib_adventure_dm.sh` with `qa/run_adventure.sh`; `serve` consumes viewer chat and `$WORLDOS_PLAYER_MOVES`, while engine-resolved `/move` kinds remain engine-owned. `stop` terminates the recorded serve PID and writes the closeout; the owner `org.worldos.owner-dm` LaunchAgent has `KeepAlive=false` | | agent G4 two-pass playtest | pass 1 walkaround + pass 2 live-DM story; persist with `qa/agent_g4_row.py --build --p1 --p2 --p3 --route-complete <0|1> --pass1 --pass2 --frames-dir --persist --run-id ` | $0 persistence; pass 2 follows agent-play cost | frames directory + triage/reproduction evidence + pass verdicts | agent_g4 | DESIGN-MEMO-2026-09-02 §1 · charter #1702 | diff --git a/docs/qa/TEST_MATRIX.md b/docs/qa/TEST_MATRIX.md index 69149f47..33a4bc1b 100644 --- a/docs/qa/TEST_MATRIX.md +++ b/docs/qa/TEST_MATRIX.md @@ -26,7 +26,7 @@ largely gone — GLM is a fine DM for nearly all QA. | **Arc smoke** | `qa/run_arc_smoke.sh 4` (set the model — defaults Sonnet!) | ~5 m | Does a companion arc ENGAGE (met + approval moves off 0)? | | **Combat-sprint median** | `qa/run_combat_sprint.sh ` ×3 → median of `*.angrydm.json` | Opus ~5/run | The HONEST mechanical gate (pre-seeded, deterministic coverage). Baseline 3.7. | | **3-act full run** | `qa/run_duo.sh` with the embergloom prompt, ≥24 beats (Opus or GLM) | hours | Story + companion + combat over a full authored arc. | -| **5-persona sweep + RRI** | local Mac (the support-VM lane was retired 2026-10-30, evaos-support-control#1109) — see `WorldOS-GUI-RUNBOOK.md` | hours | The release index (story/mech/sat per persona + the 11 RRI gates). **RELEASE-only.** | +| **5-persona sweep + RRI** | no runnable lane until the local port lands (#1822); the support-VM lane was retired 2026-10-30 (evaos-support-control#1109) — see `WorldOS-GUI-RUNBOOK.md` | hours | The release index (story/mech/sat per persona + the 11 RRI gates). **RELEASE-only.** | ## What to run for which change | You changed… | Run (fast → slow) | @@ -38,13 +38,13 @@ largely gone — GLM is a fine DM for nearly all QA. | **viewer / OpenWorlds UI** | `qa/ui_playtest.sh` (blind persona) + the viewer tests; for combat UI, `qa/preview_combat.sh` + watch `#battle` | | **Unity/current visual renderer** | GPU-VM Unity/visual-critic proof for renderer work; keep Linux CI to deterministic SceneGrid/render-contract tests unless a PR intentionally changes renderer-host code. | | **Godot reference/extension material** | Optional/manual only: `godot --headless --path extensions/renderers/godot --import` + the archived conformance/screenshot lane when explicitly touching `extensions/renderers/godot/`. Do not make it a required merge gate. | -| **a RELEASE** (not just a tag) | the FULL round: `combat_smoke` + beat smoke + a 3-act run + **5-persona VM sweep + RRI** + the Mac native part-A | +| **a RELEASE** (not just a tag) | the FULL round: `combat_smoke` + beat smoke + a 3-act run + **5-persona sweep + RRI** (local port pending, #1822) + the Mac native part-A | ## Tags vs releases - **Tag liberally** — at every clean milestone (a feature lands + its level-appropriate tests pass). A tag is a checkpoint; it does NOT require the full sweep. - **Release rarely** — a real release (`gh release`, GA framing) requires the **full round** above, - including a non-partial **5-persona VM sweep + RRI** and the Mac native part-A at one SHA. Only then + including a non-partial **5-persona sweep + RRI** and the Mac native part-A at one SHA. Only then is a CHANGELOG `[Unreleased]` band promoted to a numbered GA. ## Logging diff --git a/qa/QA_TOOLS.md b/qa/QA_TOOLS.md index ebb0914c..7120e0b3 100644 --- a/qa/QA_TOOLS.md +++ b/qa/QA_TOOLS.md @@ -7,7 +7,7 @@ Default local paths: - App/private-art checkout: `/Users/m1/WorldOS`. - Evidence root: `/Users/m1/Codex`. -- Heavy persona/backend sweeps: the local Mac or GitHub CI. The support VM lane (support-vm-1, 178.104.123.213) was retired on 2026-10-30; use the local Mac lane. See evaos-support-control#1109. +- Heavy persona/backend sweeps: the local Mac or GitHub CI. The support VM lane (support-vm-1) was retired on 2026-10-30; use the local Mac lane. See evaos-support-control#1109. The release 5-persona sweep has no local port yet (#1822). ## Fast GUI And Native App Gates @@ -52,7 +52,8 @@ Stable app failure buckets are: RRI requires a non-partial five-persona result on one build SHA. A handoff gate can feed the native app proof through `--handoff-json`, but it cannot fill in missing persona artifacts. The support-VM -lane (and its preflight) was retired on 2026-10-30; see evaos-support-control#1109. +lane (and its preflight) was retired on 2026-10-30; see evaos-support-control#1109. Until #1822 lands, +`qa/release_readiness.py` still requires `--support-preflight-json` for a persona + handoff rollup. When a sweep uses remote/persona artifacts plus Mac handoff proof, pass both evidence files into the RRI rollup path: `qa/release_gate.sh --handoff-json --support-preflight-json ...`. Missing or stale support-preflight evidence must stay a failed diff --git a/qa/release_gate.sh b/qa/release_gate.sh index f19d6d77..5343bc24 100755 --- a/qa/release_gate.sh +++ b/qa/release_gate.sh @@ -94,7 +94,7 @@ ram_preflight() { if [ "$avail" -lt "$floor" ]; then local msg="available RAM ${avail}MB is BELOW the safe floor ${floor}MB for a 5-persona sweep — \ the host will likely OOM mid-sweep and ship a junk PARTIAL RRI. Run the heavy sweep on GitHub CI \ -or the support VM (root@support, ~/worldos-qa) instead, or free RAM first." +instead, or free RAM first." if [ "$strict" = "1" ]; then fail "RAM preflight (strict): $msg" fi From 1a82f0e23f72c3ed9e64588d53dcbf5df00e4a0d Mon Sep 17 00:00:00 2001 From: Eva Date: Fri, 30 Oct 2026 14:27:10 +0900 Subject: [PATCH 3/3] docs: OPERATING-GOAL next action needs the local part-B sweep first (#1822) --- WorldOS-OPERATING-GOAL.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/WorldOS-OPERATING-GOAL.md b/WorldOS-OPERATING-GOAL.md index 93c80266..3596c68a 100644 --- a/WorldOS-OPERATING-GOAL.md +++ b/WorldOS-OPERATING-GOAL.md @@ -70,7 +70,8 @@ LAST VALID RELEASE GATE: none after the RRI contract hardening. A release verdict requires expected persona count, disk-backed palette/image/behavioral evidence, and built .app play. - NEXT ACTION: RE-MEASURE — the binding step. Run the HARDENED sequential VM sweep (#844: quota-safe, + NEXT ACTION: RE-MEASURE — the binding step. First land the local part-B sweep (#1822; the VM + lane was retired 2026-10-30), then run the HARDENED sequential sweep (#844: quota-safe, 429-aborts, ABORTED-not-a-number) at CURRENT main + a same-SHA Mac part-A handoff → full rollup (--handoff-json + --support-preflight-json + --abort-marker) → ruler-stamped row (run_id v1.0.4-rc4-; lens auto-stamps; ONE branch — scores.db is a committed