methodology
How LENITNES turns commits into trades
What we watch
Admin-curated. The agent can't expand its own watchlist. Full list →
9 typed detectors
Fast classification pass before the LLM. Each returns a score (0-100) + confidence. The agent sees detector output, commit evidence (SHAs, messages, diff stats), a sector-chain sequence(upstream→ downstream repos in the last 7d — e.g. halo2 → zebra → zcash), plus a cross-signal narrative of what every other monitored repo did in the same 24h window. News is corroboration only — it never trades on its own. These same detectors also power the enterprise leak-scan: pointed at any repo's history, they show what its commits signaled before anyone announced it.
Urgency language (HOTFIX, urgent, critical) on a release branch.
Security-sensitive paths (validation, consensus, crypto) + vulnerability class.
Diff touches consensus-critical paths — chainparams, block validation, signatures.
Versioned protocol change — soft-fork, hard-fork, BIP/EIP number.
Maintainer set changing, governance docs rewritten, signer rotations.
Dependency downgrades, unknown maintainers — supply-chain incident patterns.
Lockfile churn, deprecation notices, post-incident library swaps.
Contributor disappears >30d or removes from CODEOWNERS.
News sentiment as corroboration for commit signals. Never trades alone — news-only conviction is hard-capped below the trade threshold.
Not binary — a commit can trip multiple detectors. The agent reads all scores + commit message + 7-day price context + past outcomes, then forms its own verdict.
Sector chains
Commits in related repos often form a causal chain — circuit fix in halo2, emergency fork in zebra, protocol release in zcash. The agent receives a compact sequence_context string listing upstream events in the same sector within the prior 7 days before scoring each batch.
Repo responsiveness
Before expanding the watchlist or burning agent tokens on noisy repos, we run a 90-day replay sweep: same detectors + mock agent, matured T+1d/T+7d price outcomes. Repos get an A/B/C tier — A means historical commit signals co-moved with price; C means deprioritize.
See live tier tableSweeps run in the background (worker cron + cache). Public scans use mock scoring; live agent reasoning requires an admin engagement.
How the agent scores
Every score (including sub-threshold) stored in agent_scores with timestamp + rubric version. The scorecard reads from that table — every public claim traces to a verifiable row.
Why a versioned rubric
When the prompt or model changes, the version bumps and the scorecard slices performance by version. v4 (Jul 2026) hardened calibration: commit-driven theses must cite the SHA and its code-level meaning, news-only signals are hard-capped at conviction 65, and the agent sees the open book — no pile-ons, no evidence-free reversals.
Safety gates
Failing any gate downgrades to paper — the signal still ships, no on-chain action.
Kill switch
TRADING_ENABLED defaults false. No swap fires until operator opts in.
Asset registry
Only verified tokens with real on-chain addresses. Unlisted assets → paper.
Chain-ID guard
Live trades refuse unless chainId matches mainnet. Catches misconfigured RPC.
Balance preflight
Wallet must hold amountIn + gas buffer. Catches underfunded wallets pre-swap.
Liquidity floor
Pool TVL must exceed registry floor ($5M default). Catches dried-up liquidity.
Position caps
Max open positions + per-asset concentration limits. Prevents overexposure.
Position lifecycle
A tracked position opens in the recommended direction — long or short, labeled paper. Entry price snapshotted at open. (Live mode swaps on-chain; gated off until calibration clears.)
TP/SL written at open, conviction-scaled and direction-aware. 5-min scheduler checks live price.
TP/SL hit, signal reversal, or manual exit closes at market price. Realized P&L recorded, direction-aware.
All three milestones recorded — the portfolio shows realized + unrealized P&L from the same tables.
Why paper first
Every trade today is paper. That's the strategy, not a placeholder. Live trading flips on only after the calibration loop shows higher conviction = better outcomes (target: n ≥ 30 closed positions) and A-tier repos justify live agent spend.
Calibration loop
Proof chain
Consensus timestamp, microsecond precision, tamper-evident.
SignalRegistry contract stores signal hash on-chain.
Evidence, screenshots, metadata — immutable package.
Three independent authorities — impossible to misremember a call. Visible on every signal detail page, linked from the scorecard.