Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
22 changes: 10 additions & 12 deletions .claude/skills/worldos-dev/SKILL.md
Original file line number Diff line number Diff line change
Expand Up @@ -14,18 +14,16 @@ 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 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.)
> 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) 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).

**The VM** (`evaos-support`): `root@178.104.123.213`, key `~/.openclaw/secrets/cloud-deploy-key` (key-only
Expand Down
4 changes: 2 additions & 2 deletions .claude/skills/worldos-latency-forensics/SKILL.md
Original file line number Diff line number Diff line change
Expand Up @@ -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 — use the Support VM lane; see worldos-dev).
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`
Expand Down
16 changes: 7 additions & 9 deletions AGENTS.md
Original file line number Diff line number Diff line change
Expand Up @@ -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) 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.
Expand All @@ -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) 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)

Expand All @@ -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

Expand Down
2 changes: 1 addition & 1 deletion VISION.md
Original file line number Diff line number Diff line change
Expand Up @@ -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-
Expand Down
18 changes: 7 additions & 11 deletions WorldOS-GUI-RUNBOOK.md
Original file line number Diff line number Diff line change
Expand Up @@ -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

Expand Down Expand Up @@ -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) 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
Expand Down Expand Up @@ -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).

Expand Down Expand Up @@ -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
Expand Down
12 changes: 7 additions & 5 deletions WorldOS-OPERATING-GOAL.md
Original file line number Diff line number Diff line change
Expand Up @@ -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); 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
Expand Down Expand Up @@ -69,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-<sha>; lens auto-stamps; ONE branch — scores.db is a committed
Expand Down Expand Up @@ -296,10 +298,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.
Heavy backend/persona sweeps belong on the owner-provided 32GB support VM (`support-vm-1`) 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`:
Expand Down
7 changes: 2 additions & 5 deletions WorldOS-RUNBOOK.md
Original file line number Diff line number Diff line change
Expand Up @@ -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) 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
Expand Down
2 changes: 1 addition & 1 deletion docs/KIMI-ONBOARDING.md
Original file line number Diff line number Diff line change
Expand Up @@ -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)

Expand Down
4 changes: 2 additions & 2 deletions docs/MODEL-TIERING-STRATEGY.md
Original file line number Diff line number Diff line change
Expand Up @@ -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; see the Support VM lane). 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).
Expand Down
Loading
Loading