The sweep (main's item 1): 199 tracked text files, 783 lines. The founder's full name, first name and possessive become "the founder" (sentence starts capitalised); the lowercase operating-system user name in WSL paths and commands becomes <user>; the second owner login becomes "the second owner login"; the three earlier businesses and the two other brands become "the other business", "the earlier entity", "the earlier business" and "another brand"; the Chrome profile rule names the igneum.network profile, not the profile's label. The standing commit login igneum-labs is not a founder term here: the fresh-repository step renames it in the history (docs/plans/history-rewrite.md, tools/repo/fresh-repo.sh). The patterns never appear in plain text in the tree (a plaintext list would be the hit): tools/ci/founder-strings.b64 (perl regex, tab, a sample per row) is read by tools/ci/founder-strings-check.sh (every tracked text file, perl, known-failed first: the self-test plants each row's sample in a fixture and the hit must name the file), by tools/community/discord-hooks.mjs (the guard's founder and business rows; the test takes its fixtures from the samples) and by tools/repo/fresh-repo.sh (the business names of the rewrite rules). site/forbidden-strings.txt carries the same patterns as b64: lines, decoded case-insensitive by site/scrub.mjs and tools/ci/launch-gates-check.mjs (whose fixture now plants an encoded made-up name). The check runs in the gate's tree checks on every merge. Not in this commit, by main's word: the 105 commit messages and 40 personal-identity commits that need the history rewrite (listed, not run), and the secrets found by gitleaks over the history (reported with owners). Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
20 lines
1.6 KiB
Python
20 lines
1.6 KiB
Python
"""tools/fleet/lib: the ONE tested library for operations on a rented box (the founder's standing rule, CLAUDE.md e1d0b23,
|
|
6 October 2026). Every fleet playbook (canary, wave, matrix, recovery, devnet2-gate) calls these; a watcher reads the
|
|
chain-side fact (height, peers, exec tip, paid records), never a reported MH/s or a process name.
|
|
|
|
from lib import Box
|
|
b = Box.from_registry("dn2-1") # or Box(host, port, label)
|
|
b.run("hostname") # ssh, with ServerAlive and a timeout; (rc, out, err)
|
|
b.put([local, ...], "/root/fleet/in/") # scp with three tries
|
|
b.install_payload(url_or_path, sha256) # the node binary into /root/fleet/in/igneumd-<sha16>, checked on the box
|
|
b.start_node(binary, override, peers, devnet_suffix=None, verifier=None, extra=[]) # anchored kill of the old one, then start
|
|
b.wait_synced(limit_s) # the watch line's synced=true (chain-side)
|
|
b.height(), b.peers(), b.exec_tip(), b.exec_status(), b.proving_status(), b.state_root(height), b.paid_segments()
|
|
b.start_miner(label, wallet, device=0, pack_dir=...) # one igneum-miner with the CUDA worker; returns the pid
|
|
b.start_prover(label, wallet, hub_peer, threshold="", miner="keep") # box-prover.sh
|
|
b.stop_all() # every stage process (anchored), never sshd
|
|
b.destroy() # the provider call plus the registry row
|
|
|
|
Process patterns are anchored on the executable's path or use -x (tools/ci/pgrep-self-match-check.sh).
|
|
"""
|
|
from .box import Box, Registry, SshError # noqa: F401
|