Files
neuron-tai/.claude/memory/alpha-hardening-navigation.md
Dobromir Popov c938d38031 more docs review
2026-07-13 18:37:07 +02:00

6.2 KiB
Raw Permalink Blame History

name, description, metadata
name description metadata
alpha-hardening-navigation Where the alpha-hardening plan lives, locked design decisions, and implementation order
node_type type
memory project

Active workstream (started 2026-07-04): alpha hardening of the money/trust path. Full handoff at /mnt/c/Users/popov/Downloads/neuron-tai-alpha-handoff-2026-07-04.md (note: its "planning artifacts missing" section is stale — ADRs 00160019 and .scratch/alpha-hardening/issues/ were created in commit 68e0572).

Navigation: .scratch/alpha-hardening/README.md = index + phase order; research-verifiable-inference.md §8 = layered fraud scheme, §9 = build-vs-adopt; ADR-0018 = flagship fraud design; docs/agents/issue-tracker.md = issue conventions (active work in .scratch/<slug>/).

Locked decisions (do not re-derive): TOPLOC ADOPT (pip install toploc, teacher-forced prefill, one canonical precision per model); audit 5% default escalating on anomaly/low-rep/disputes; blame via on-demand per-hop activation commitments + bisection (fixes validator _final_text_node bug — it blames only the last hop); reputation = persisted graduated ×0.8-per-strike multiplier affecting routing + audit rate; full pending forfeiture stays the primary penalty; accounting becomes tracker-authoritative (count tokens from the proxied stream, work units from tracker-assigned spans — node self-reports are untrusted); strikes/bans/reputation must survive restart (RegistryWallet is RAM-only today); multi-tracker money fixes (C2/C3/C4/A3/H1) designed in ADR-0019 but implementation deferred.

Implementation state (2026-07-05): Alpha-scoped blocker implementation is done: auth boundary + gossip + validator service token (02/01/20), persist strike/ban/reputation (05), starting credit 0 + spend cap (03), tracker-authoritative accounting (04), wallet binding proof (11), and fraud arc (0610). .scratch/alpha-hardening/issues/ now has 16 done and 6 ready-for-human items.

Auth foundation now available (commit 81719ed): packages/tracker/meshnet_tracker/auth.py = hive HMAC (sign_hive_request/verify_hive_request, X-Meshnet-Hive-Signature/Timestamp, 300s skew) + is_validator_token. In the handler: _require_role("admin"|"validator"), _resolve_identity() (validator token / admin session / client-key→no-role), _read_hive_authenticated_body(). TrackerServer(validator_service_token=, hive_secret=) also read from MESHNET_VALIDATOR_SERVICE_TOKEN / MESHNET_HIVE_SECRET; CLI --validator-service-token / --hive-secret. Outgoing gossip signed via _push_to_peers. Tests use these fixtures — reuse the pattern in 05/03/04.

Remaining work classification: 1215 are multi-tracker money/Raft ordering hardening deferred beyond single-settlement alpha; 17 needs human approval for canonical duplicate US-020 renumbering. Full pytest suite re-verified 2026-07-06: 317 passed, 3 skipped, clean.

Launch-readiness grilling (2026-07-06): Locked launch plan — devnet dev/test run now, then real mainnet SOL/USDT (not devnet, not a new public token) for the first cohort: friends (API clients) + hired VPS/VPC hosts (our own test infra, not third-party volunteers — stake-free, risk-free if something breaks, not a long-term topology). Pricing: clients are the only party spending real money; nodes only accumulate off-chain credit and get paid in batches (30min dev / 24h later) — a failed distribution leaves funds parked, not lost, so mainnet-vs-devnet mixups are lower-risk than initially assumed. TAI token: do NOT issue/list now — ADR-0002 already locks listing behind 50k volume + 25 nodes/15 wallets plus an unresolved securities-review gate; only a dormant mainnet mint (cheap, ~few SOL) for name/branding reservation is in scope, bundled with treasury-key work, not before it. Treasury custody: bare keypair file (current runbook 02) is not acceptable for real funds — plan is free native SPL multisig (spl-token create-multisig, no protocol fee unlike Squads' 0.5 SOL), 2-of-3 signers, at least one cold/offline, others one-per-hired-VPS-provider to avoid correlated compromise (not yet built — ops task, no issue filed). Stake/slash asymmetry (registry/slash is a local Python adapter per ADR-0007, not on-chain) accepted for now since hired hosts are our own infra and friends aren't node operators — revisit before opening to real third-party node operators. A mainnet-vs-devnet boot guardrail was proposed and explicitly declined by the owner given the safe-by-default money flow above.

Two new issues from this session:

  • 21 — Honest-noise calibration corpusStatus: ready-for-human (engineering done 2026-07-06; blocked on human fleet calibration run before mainnet launch).
  • 23 — Dynamic HF-benchmarked pricingStatus: done (see 23-dynamic-hf-pricing_completed.md).

Both are already migrated into .scratch/alpha-hardening/prd.json (AH-021 updated, AH-023 added) and the README index — ready for Ralph to pick up unattended.

Ralph note: scripts/ralph_progress.py tracks docs/prd.json (US-001…US-047; base 35/35 done, friends-test arc 3647 open/in-progress). Alpha hardening uses .scratch/alpha-hardening/prd.json (AH-001…AH-023). Point Ralph at the prd.json for the branch you're running.

Why: three audits agreed the alpha blockers are unauthenticated gossip (anyone can inject billing events), the free-credit faucet, and ephemeral bans. How to apply: work test-first per issue acceptance criteria; use .venv; cryptography belongs in node deps (wallet.py imports it — causes many of the 24 "failures" in a fresh env). See project-status and autonomous-work-style.

Routing telemetry resume (2026-07-07)

.scratch/alpha-hardening/issues/24-routing-telemetry-resume.md / AH-024 captures the interrupted Claude handoff. Learned routing is already committed at 518c259; the dirty tree contains live-progress/current-request heartbeat/dashboard telemetry. First known blocker: packages/tracker/meshnet_tracker/server.py:1490 uses threading.Lock | None, which crashes import because threading.Lock is a factory function at runtime. Fix that before running the targeted telemetry tests. Keep .claude/settings.local.json uncommitted unless explicitly approved.