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 --verbosestreamssystem,assistant,user,resultevents;--barerequiresANTHROPIC_API_KEYand 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,Grephas no shell (probe: the model reports only Edit/Read and cannot runecho hi).--disallowedTools "Bash(osascript:*)"denies a command family inside Bash (probe:osascript -e 'return 42'was denied,echo plain-okran).--max-budget-usd,--max-turns,--session-id,--resume,--model,--effort,--append-system-prompt-file,--permission-prompts none,--no-chrome,--disable-slash-commands,--json-schemaexist. NoAgent/Tasktool is given to workers, which prevents recursive spawning; the launcher additionally refuses to start whenWP42_DEPTHis already set.
0.5 AppleScript / GUI automation (measured, not assumed)
- Over SSH,
osascriptreaches 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.