SPB Git

spb/wp42_uqo

Public
5.7 KB

# Phase 0 — Discovery report (2026-11-02, evening ET)

Everything below was measured live during the session; nothing is copied from historical inventories.

# 0.1 Controller host (laptop)

  • macOS 27.0 (Darwin 27.0.0), Claude Code 2.1.316 at /opt/homebrew/bin/claude, Python 3 available, LaTeX (latexmk) used by earlier working papers.
  • The controller launches, monitors, collects and evaluates; it never runs a worker itself.

# 0.2 Executor nodes (live survey, ssh + sysctl + claude --version)

Node macOS Cores / RAM Free disk Claude Code Python uv LibreOffice GUI session
M3U96a 26.6 28 / 96 GB 238 GB 2.1.314 (npm global) 3.14.5 yes installed in Phase 0 (brew cask) console user logged in; System Events answers; Finder/TextEdit time out
M3U96b 26.4 28 / 96 GB 380 GB 2.1.314 3.14.4 yes 26.2.3 console user logged in; all Apple Events time out
M4M64a 26.5.1 16 / 64 GB 540 GB 2.1.314 3.14.4 yes 26.2.3 console user logged in; System Events answers; TextEdit times out
M4M64b 26.5.1 16 / 64 GB 54 GB 2.1.314 3.14.4 installed in Phase 0 installed in Phase 0 console user logged in; all Apple Events time out

Other LAN nodes reachable (M2U64, M4M64c, M5M36, M4BP48, M4BP36, M2M32c, M1M32, m4mm, m4mn, m6ma, m6mb, m5ma) do not have Claude Code installed; M4M36, M2M32, M2M32b, m4mc, m4ma did not answer SSH within 6 s. The pilot therefore uses the four Claude-equipped nodes (4 × 2.1.314, one version, pinned by recording claude_code_version in every result event).

# 0.3 Model access and marginal cost (headless claude --bare -p, one trivial turn, API key from the WP29 study, stored only in ~/Desktop/Cluster/secrets/wp42/.env and <node>:~/wp42/.env, mode 600, never in the repository)

Model id Answered Cost of one trivial turn (USD)
claude-haiku-5-5 yes 0.000203
claude-sonnet-5-5 yes 0.00406
claude-opus-5-5 yes 0.00812
claude-fable-5-1 yes 0.0203

Cost is read from the result.total_cost_usd field of the stream-json output (the same field WP29 used); no price table is assumed.

# 0.4 Claude Code interface facts verified for the orchestrator (2.1.316 --help, and live probes)

  • --bare -p <prompt> --output-format stream-json --verbose streams system, assistant, user, result events; --bare requires ANTHROPIC_API_KEY and skips hooks, settings and the user's CLAUDE.md (so the cluster instructions never leak into a worker).
  • --tools A,B,… restricts the tool set: a worker launched with --tools Read,Write,Edit,Glob,Grep has no shell (probe: the model reports only Edit/Read and cannot run echo hi).
  • --disallowedTools "Bash(osascript:*)" denies a command family inside Bash (probe: osascript -e 'return 42' was denied, echo plain-ok ran).
  • --max-budget-usd, --max-turns, --session-id, --resume, --model, --effort, --append-system-prompt-file, --permission-prompts none, --no-chrome, --disable-slash-commands, --json-schema exist. No Agent/Task tool is given to workers, which prevents recursive spawning; the launcher additionally refuses to start when WP42_DEPTH is already set.

# 0.5 AppleScript / GUI automation (measured, not assumed)

  • Over SSH, osascript reaches System Events on M3U96a and M4M64a (process list, frontmost app) but not on M3U96b/M4M64b (AppleEvent timeout −1712); Finder and TextEdit time out on all four nodes (the request is blocked by the Automation consent prompt on the console, which nobody can answer; this is the macOS TCC behaviour for non-console processes).
  • Consequence for the design: treatment A2 "macOS agent" is implemented as shell + the macOS automation layer that works headlessly — osascript (AppleScript language, do shell script, System Events on the two nodes that answer), and the native macOS document utilities (textutil, sips, mdls/mdfind, qlmanage, cupsfilter). Control of GUI applications (TextEdit, Numbers, Pages) is not available and is recorded as an infrastructure limitation. GUI-dependent runs are pinned to M3U96a/M4M64a (requires: system_events).
  • Playwright headless Chromium (Chrome Headless Shell 156) launches on all four nodes from the project venv → treatment A3's browser is a real browser engine driving the synthetic enterprise portal (local HTTP, loopback only).
  • LibreOffice 26.2 headless is available for document conversion and spreadsheet recalculation (A3/A4 office adapter).

# 0.6 Network and security

  • Nodes reach the Anthropic API directly; SSH inter-node over Tailscale is blocked by ACL, so the controller uses the LAN aliases. Workers are told that external communication is forbidden; the orchestrator gives them no credentials other than the API key in the process environment, and the synthetic portal listens on 127.0.0.1 only.
  • Workspaces are per run: <node>:~/wp42/runs/<run_id>/ (fresh copy of the public bundle, deleted artefacts of previous runs never visible). Hidden oracles live only on the laptop in ~/wp42-oracles/ (outside the repository, outside every node).

# 0.7 Maximum safe concurrency (pilot)

WP29 ran 2 concurrent sessions per node without incident at ~115 s per run. WP42 runs are longer (office documents, portal); the pilot uses 3 concurrent sessions per node (12 in total), with a per-run wall limit of 1,800 s and a spending cap of 4 USD per session, both enforced by the launcher.

# 0.8 Feasibility verdict

Feasible for the agent arms A0–A4. The human arms H0/H1 require recruited participants, consent and an ethics approval that do not exist at the time of writing: they are designed and documented (protocol/ethics) but not executed, and no human data is imputed.

Files · b09be49939acba948e8e8646783005f57cb01f41
Menu

Theme