S40 · Financial & Asset Management (delegated to RUBEN)
Declared state: **delegated to RUBEN (D-97), built 2026-10-15** - `ask_ruben` briefs, runs a saved RUBEN session (follow-ups, file intake), reviews the tool log, speaks short answers whole and long ones as tone + key sentences; the full transcript goes to Telegram on request via RUBEN's own bot. Open: six-language routing fixture (R4), conversation-store half of never-store (R8), a week of real use (E2)..
This is the repository plan and evidence, not a live health reading. A task marked done may still depend on credentials, devices, deployment or a newer acceptance test.
Dependencies
S39
Tasks and gates
40.F1 · A Beancount ledger the owner controls, read by a `portfolio_snapshot` tool that values it
Tier F · cancelled · Verification: manual
Gate: retired with `test_portfolio.py` (D-97: RUBEN owns this)
- recorded-note · 2026-09-13 ·
docs/SYSTEMS-DETAILS.md:3983 - owner-decision · undated ·
docs/DECISIONS.md D-97
40.F2 · **No transaction capability, by construction** — asserted, not merely absent.
Tier F · done · Verification: hermetic-test
Gate: `test_ruben_delegation.py` [one owner]
- recorded-note · 2026-09-13 ·
docs/SYSTEMS-DETAILS.md:3995 - hermetic-green · 2026-10-15 ·
bench/test_ruben_delegation.py [one owner]
40.F3 · Values carry their as-of time and source; a stale price says so.
Tier F · cancelled · Verification: manual
Gate: retired with `test_portfolio.py` (D-97: RUBEN owns this)
- recorded-note · 2026-09-13 ·
docs/SYSTEMS-DETAILS.md:4003 - owner-decision · undated ·
docs/DECISIONS.md D-97
40.R1 · Change notification — a threshold move raises a proactive signal.
Tier R · cancelled · Verification: hermetic-test
Gate: `test_proactive_thresholds.py` [finance kind]
- owner-decision · undated ·
docs/DECISIONS.md D-97
40.R2 · Spending awareness from statements the owner supplies; categories and monthly trend.
Tier R · cancelled · Verification: manual
Gate: retired with `test_portfolio.py` (D-97: RUBEN owns this)
- owner-decision · undated ·
docs/DECISIONS.md D-12
40.R3 · Subscription and recurring-charge detection.
Tier R · cancelled · Verification: manual
Gate: retired with `test_portfolio.py` (D-97: RUBEN owns this)
- owner-decision · undated ·
docs/DECISIONS.md D-12
40.E1 · A monthly financial brief the owner trusts enough not to re-check.
Tier E · cancelled · Verification: manual
Gate: brief review recorded in TODO.
- owner-decision · undated ·
docs/DECISIONS.md D-12
40.R4 · **Every money question routes to RUBEN, none is answered from Mushegh's own head.** Finances, personal cash, transactions, equity, salary, funds, assets, taxes, management and recommendations all resolve to the `ruben` executor (D-83's FINANCE kind), in every supported language; Mushegh's own model never states a financial figure or gives financial advice. Mushegh acknowledges at once ('Asking Ruben, sir') because RUBEN can take tens of seconds.
Tier R · in-progress · Verification: planned-test
Gate: new `test_finance_routing.py` — a fixture set of money utterances across the six languages all route to `ruben`; near-misses (a restaurant bill split, 'how much is a coffee') do not; a money question with RUBEN down is answered 'Ruben is unreachable', never by Mushegh's model.
- recorded-note · 2026-10-15 ·
src/mushegh/brain/tools/ruben.py
40.R5 · **The brief is written well, by code, not by the turn.** Built on 39.R6's `briefing.py`: the owner's literal words; references resolved from the conversation ('that flat' -> which one); the outcome wanted (a figure, a comparison, a recommendation, a plan); jurisdiction and currency when known; the time horizon; the answer shape required — the bottom line first, every figure with its as-of time and source, assumptions named, 'I don't know' allowed; and the fixed constraint that nothing moves money (D-13). Follow-ups in one conversation keep one RUBEN session rather than starting cold.
Tier R · done · Verification: hermetic-test
Gate: `test_ruben_delegation.py` [brief]
- hermetic-green · 2026-10-15 ·
bench/test_ruben_delegation.py [brief]
40.R6 · **RUBEN returns its session, and Mushegh reviews it before speaking.** `ruben ask` gains `--json`: the answer plus the session transcript (tool calls, their results' status, sources and as-of times). Mushegh checks the answer is grounded — a figure question where no tool ran, a failed tool, or a stale as-of is said plainly, not smoothed over — and only then summarises. Cross-repo: the flag lands in `C:\Users\iamva\dexter` `src/ask.ts`.
Tier R · done · Verification: hermetic-test
Gate: `test_ruben_delegation.py` [review]
- hermetic-green · 2026-10-15 ·
bench/test_ruben_delegation.py [review]
40.R7 · **A long answer is cut to tone and key sentences; the full session goes to Telegram on request.** Mushegh decides from the reviewed answer whether it is extensive (over the voice budget, a table, a list of figures, a plan). Short: spoken whole. Extensive: the overall tone (good news / mixed / needs action) and two or three key sentences, then the offer. When the owner asks, RUBEN sends the whole session transcript with its own bot (`ruben transcript <id> --telegram`), so Mushegh never holds RUBEN's token. A failed delivery is said, with an offer to read it out.
Tier R · done · Verification: hermetic-test
Gate: `test_ruben_delegation.py` [length]
- hermetic-green · 2026-10-15 ·
bench/test_ruben_delegation.py [length]
40.R8 · **D-83's never-store line holds through the new path.** The brief, RUBEN's transcript, the full answer and the spoken summary are not written to memory, the vault mirror or the audit trail; the audit records only that a delegation happened, its duration, and whether Telegram delivery succeeded.
Tier R · in-progress · Verification: hermetic-test
Gate: `test_ruben_delegation.py` [never-store]
- hermetic-green · 2026-10-15 ·
bench/test_ruben_delegation.py [never-store]
40.R9 · **One finance owner: retire Mushegh's own finance tools.** `portfolio_snapshot` and the in-brain ledger read (40.F1–F3) are removed; the finance family inside Mushegh is the RUBEN delegation and nothing else.
Tier R · done · Verification: hermetic-test
Gate: `test_ruben_delegation.py` [one owner]
- hermetic-green · 2026-10-15 ·
bench/test_ruben_delegation.py [one owner]
40.R10 · **RUBEN work is a managed session, not a one-shot.** Each delegation is a saved RUBEN session (origin `mushegh`, resumable from RUBEN's Telegram with /resume); follow-ups continue it by `session_id`; data files (statements, spreadsheets) are ingested as attachments, inlined when small text and passed by path otherwise; `ruben_sessions` lists recent ones to pick a matter back up.
Tier R · done · Verification: hermetic-test
Gate: `test_ruben_delegation.py` [session], RUBEN `src/ask.test.ts`
- hermetic-green · 2026-10-15 ·
bench/test_ruben_delegation.py [session]
40.E2 · A week of real money questions by voice: every one delegated, zero answered from Mushegh's own model, and the owner never finds a spoken summary that contradicts RUBEN's Telegram text.
Tier E · open · Verification: manual
Gate: delegation log review recorded in TODO.
HUD screen contracts
- RUBEN command · /agents/ruben/overview
- Session workspace · /agents/ruben/sessions
- Reports and evidence · /agents/ruben/reports
- Assets and cash-flow view · /agents/ruben/positions
- Scenario analysis · /agents/ruben/scenarios
- Financial privacy and delivery · /agents/ruben/privacy
- Financial & Asset Management (delegated to RUBEN) · /systems/S40
All subsystems · Source: docs/systems-plan.json.