BraiinsRatchet/README.md

6.2 KiB

Braiins Ratchet

Monitor-only research scaffold for optimizing a manual "buy hashpower on Braiins, mine through OCEAN" strategy.

The current implementation is monitor-only by design:

  • The code never places, modifies, or cancels Braiins orders.
  • The default strategy emits recommendations only.
  • The strategy distinguishes manual_canary research experiments from manual_bid profit-seeking opportunities.
  • The Braiins integration accepts a watcher-only token only.
  • All mutable runtime state stays inside this repository under data/.
  • The Git branch is master.
  • The lifecycle engine uses Python standard library only; the native Mac app is SwiftUI.

Quick Start

./scripts/ratchet app

This rebuilds the native macOS control room, replaces any stale app window, and opens the fresh bundle. Use the app for normal operation; terminal commands are advanced fallback tools.

The lifecycle state persists in data/ratchet.sqlite. If the app or Mac restarts, open the app again and it reads the same state.

Inside the app, the preferred non-babysitting path is Start Forever Engine. It starts the monitor-only lifecycle engine in the background, writes logs under logs/, persists state under data/, and never places Braiins orders.

When you manually place a Braiins bid, record the exposure so the supervisor blocks new experiments:

./scripts/ratchet position open --description "Braiins order abc" --maturity-hours 72

Close it only when finished:

./scripts/ratchet position close POSITION_ID

For the native macOS app:

./scripts/ratchet app

This builds macos/build/Braiins Ratchet.app, closes any stale BraiinsRatchetMac UI process, and opens the real app bundle. Do not use swift run for normal operation.

The app is a native Tahoe Flight Deck: animated hashfield background, real SwiftUI Liquid Glass controls, Hashflow, Ratchet, Bid Lab, Exposure, and Evidence. The design rationale is in docs/APP_DESIGN_RESEARCH.md.

The app also has a Reality Mirror self-reflection layer. It writes the exact semantic state the SwiftUI app believes it is showing to:

data/app_visual_state.md
data/app_visual_state.json

Print the latest mirror snapshot:

./scripts/ratchet mirror

When an experiment watch is running, Flight Deck now shows live progress: run id, countdown, approximate cycle count, progress bar, and local finish time. The countdown updates every second; backend state refreshes roughly every 30 seconds.

Advanced fallback for a 6-hour CLI monitoring session:

./scripts/ratchet watch 6

Advanced fallback for the background monitor engine:

./scripts/ratchet engine status
./scripts/ratchet engine start
./scripts/ratchet engine stop

Every completed watch is now treated as a ratchet experiment. It writes a run report under reports/run-*.md and appends the master ledger at reports/EXPERIMENT_LOG.md.

To inspect the experiment ledger:

./scripts/ratchet experiments

To embed an already completed manual session from stored snapshots:

./scripts/ratchet retro 2026-04-25T19:08:00+00:00 2026-04-25T21:05:00+00:00

For the noob-friendly user guide:

./scripts/ratchet guide

For the operator installation, migration, recovery, and architecture handbook:

./scripts/ratchet operator-guide

Import a manual Braiins market snapshot:

PYTHONPATH=src ./.venv/bin/python -m braiins_ratchet.cli import-market examples/market_snapshot.example.json
PYTHONPATH=src ./.venv/bin/python -m braiins_ratchet.cli evaluate

The JSON shape is:

{
  "timestamp_utc": "2026-04-25T12:00:00+00:00",
  "best_price_btc_per_eh_day": "0.30",
  "available_hashrate_eh_s": "0.10",
  "source": "manual"
}

Public Braiins Market Data

The collector first uses unauthenticated public web endpoints from hashpower.braiins.com; no token is needed for live price action. See docs/BRAIINS_PUBLIC_MARKET.md.

Watcher-only tokens are only relevant if we later need account-specific read-only data such as your private balance, historical fills, or order status. Owner tokens remain out of scope.

Recommendation States

  • observe: do nothing.
  • manual_canary: a tiny manually executed research experiment is within the configured loss budget.
  • manual_bid: a manually executed bid clears profit-seeking discount and risk guardrails.

The Braiins market report distinguishes visible top-of-book from executable depth:

  • best_ask_btc_per_eh_day: cheapest visible ask.
  • fillable_price_btc_per_eh_day: cheapest ask level with enough unmatched supply for the configured canary-sized target PH/s.
  • suggested_bid_btc_per_eh_day: fillable price plus the configured overpay cushion.

Documentation

  • PROGRAM.md: research charter and ratchet rules.
  • START_HERE.md: no-prior-knowledge operating instructions.
  • docs/USER_GUIDE.md: app-first noob guide for the complete autoresearch loop.
  • docs/OPERATOR_GUIDE.md: architecture, installation, migration, backup, recovery, and diagnostics.
  • SECURITY.md: token, computer, and trading safety guardrails.
  • docs/BRAIINS_PUBLIC_MARKET.md: public market collector behavior.
  • docs/RATCHET_OPERATIONS.md: day-to-day monitor cycle.
  • docs/CLI_REFERENCE.md: command reference and test command.
  • reports/EXPERIMENT_LOG.md: master ratchet ledger with run-level hypotheses, outcomes, and adaptations.

Tests

PYTHONPATH=src ./.venv/bin/python -m unittest discover -s tests

The tests are network-free and use fixtures for public Braiins parsing. Live collectors are intentionally separate operational checks.

Guardrail Model

braiins_ratchet.strategy can propose a manual bid, but braiins_ratchet.guardrails decides whether that proposal is admissible. The executor layer currently has no write-capable Braiins methods. If live execution is ever added, it must be a separate reviewed change and remain disabled by default.

Data Maturity

OCEAN's TIDES payout model means a canary experiment should not be scored immediately after spend completion. A spend should be treated as immature until its shares have had time to age through the pool's share-log window. The strategy therefore records both expected value and maturity notes.