Repository guide · 0 diagrams

View source on GitHub ↗
Original documentation, preserved from the repository. Historical projections and scenario ambitions are not evidence of live performance. See the current readiness record for deployment requirements.

Disposable local runner safety

The Aurora and ASI Take-Off local runners and their Zenith wrappers require Linux, Python 3, and readable /proc process/socket information. Unsupported systems fail closed. They never stop an already-running node to take its port.

Supported launches acquire an exclusive repository lock before report creation or Zenith archive preparation, and a per-user port lock shared across checkouts. Locks survive nested npm launches by verifying the live ancestor's process start time and locked file descriptors. Separate users are not coordinated by the port lock; port preflight and listener ownership checks still reject their listeners. Do not delete .local-demo.lock or the /tmp/agi-local-demo-*.lock files while running a demo. These are advisory locks for supported launches, not a sandbox against another process deliberately changing the checkout or resetting a node.

The runner checks the exact launched session leader's PID/start time and its listening socket inode before every readiness/identity RPC. It requires chain 31337, initial block zero, no fork metadata, and a nonempty node instance ID. The instance ID and owned listener are rechecked immediately before the deployment and demo execution batches. Checks are not an atomic authorization boundary across all transactions in a batch; do not share the disposable RPC with other clients.

DEMO_NODE_ENGINE=auto preserves the preference for Anvil when installed, with Hardhat as the fallback. DEMO_NODE_ENGINE=hardhat explicitly uses the installed Hardhat CLI. Anvil must support anvil_metadata; Hardhat must support hardhat_metadata. Unsupported metadata fails closed with an actionable error. Both engines use automining, without interval blocks, so startup freshness can be verified. No public provider, fork URL, or external chain is used by this runner.

Cleanup signals only the recorded process group, gives TERM one second, then KILL five seconds, and checks for live non-zombie members. A surviving group or identity/permission failure makes the demo fail and retains cleanup failure evidence. A child which deliberately creates its own session is outside the owned process group; ordinary node children must remain in the inherited group. SIGKILL of the runner or an OS failure cannot run shell cleanup traps.

Node output and guard evidence are kept in a mode-0700 temporary directory. On failure its location is printed. Never publish node-private.log: Hardhat can print public development account keys. Only sanitized assertions belong in published test evidence.

Tests: python3 -m pytest -q test/simulation/test_local_node_guard.py test/simulation/test_zenith_local_wrappers.py. These tests use controlled loopback fixtures and stub wrapper chain execution; they do not establish a particular installed Anvil binary's compatibility.

← Back to AURORA