Repository navigation
v0.7.2 ties up the loose ends of v0.7 and polishes the surface. Cash
accounts read the rates the banks state. Private-market quarterly
reports feed the exposure look-through. The Income dashboard counts
every income line, and every dashboard's pickers reach every card they
can. The MCP tools and the agent skill say less and answer in one
call. Logs carry no identifiers.
Upgrading
make all. Gold migrations 0159 to 0171 apply on the first
read-write open.schwab-web load,firstcitizens load,ubs-web load: each
re-reads what it already kept. UBS's own rates need oneubs-web download --only rates(a live session).wealthdb reload schwab fidelity svb ubs firstcitizens, plus each
Plaid source.wealthdb web refresh,wealthdb mcp restart.make demo,make demo-web.
Breaking
- Dashboards need gold schema 0171.
yield.withholding: a country may nameaccounts(source, account
id, rate); account wins over wrapper overdefault. A bad value
names its place.account_overridestakesaccount_kindandtax_wrapper_from.- A
schwabsource may nameschwab-webalone; accounts are then
keyed by full number. - Collectors state a cash rate under the canonical keys
interest_rate,interest_tiers,interest_valid_from,
interest_side,interest_conditions. - Columns:
fund_compositions.origin,.valid_until,
fund_lines.region,report_cashflow_plan.silver_source_id,
.account_external_id;web_gainsreads a missing class as
unknown;serving_cash_historykeeps each account's cash per day
and currency. - Income cards renamed: "Income in the window", "Income received",
"Income expected", "Monthly average income"; the twin's yield figure
is "Holdings' income yield". Old names retire at the next provision. - A missing or broken
--env-filestops a collector run; viac exits 1. - First Citizens
login --checksigns in: ask first. - Playwright 1.64.1 (Chromium 156);
make updatemoves the pin, the
pip pins and the user agents together. - A Metabase bump sets
MB_SHA256inweb/Dockerfile.
Yield
- Stated cash rates on the balance: Schwab's sweep, First Citizens'
statement-day rate, Fidelity's core-fund SEC yield, UBS's credit
conditions with tiers. A later-dated rate leaves the one in force. - A card account takes no rate; a liability's rate stays in its terms.
- A per-account withholding rate for a holder whose treaty status
differs from the wrapper's. - Yield inputs read a fund once per instant, not per currency; DV01
sums in a fixed order. The yield pass is about a tenth faster.
Exposure
- ubs-web parses each private-markets quarterly report. A reconciled
report is the fund's region split and its composition until the next
report; before the first, and in an unreconciled quarter, the
declaration applies. A ledger record of the same or a later day wins;
the legal situs follows the same precedence. - Weights above 100 read the excess as cash in the fund's currency,
like a leveraged proxy's leg. - The situs reads a private holding's declared country on every day no
composition of its own is in force. - Exposure ranks every security the look-through reaches in "Top
securities".
Income, spending, cash flow
- A
reimbursementnets against the spending it repays: areimburse
ledger line, else the latest outflow to the payee within a year, else
the payee's merchant category. One no road links leaves both bases. - A deposit on a private-market custody account is capital going in.
- Cross-currency own-account moves pair when a narrative names the
other account and the amounts agree at the day's rate within 1%. - Corporate-action cash carries its stated sign at Fidelity, SVB and
Schwab. - Fidelity: a tax payment is a withdrawal, a tax-prep fee a fee.
- A deposit stated as a holding reads at its balance in the memo and
the coverage report. reload -acarries the cash-flow boundary across the rebuild.- SVB's month-end workbook reaches
returns statedas stated periods. - Plaid: a loosely typed municipal bond reads as a bond; an investment
account with no holding counts at its balance.
Dashboards
- Income counts every income line unless the Type picker leaves it
out, under a new Tax wrapper picker; the expected half adds the cash
flow projection's run-rate for what the holdings do not pay; income
after withholding is every line less the tax. - Gains takes an Asset class picker; unclassed sales count under
unknown, so the classes add up. - Wealth Overview: the headline figures read the latest snapshot
whatever the Time range; a click on the asset class mix opens
Allocation at that day. - Allocation counts cash as a position in every breakdown: the
currency card includes each cash balance in its own currency, and
Top 100 positions lists each account's cash asCash <CCY>. - Allocation reads a day after the history as its last day.
- Every card description is one sentence, at most one caveat, and
names the pickers that do not reach it.
Collectors and tooling
- Logs show an id's last four, no cookie, no raw browser error.
prunekeeps a run folder with no status.- ubs-web reads interest conditions from what the browser renders,
under a route guard; a details redirect is checked against the
allow-list. - One run-selection helper for the loaders; one bad folder no longer
aborts an equityzen load. make lintfollows the ruff pin;make updatestops on a pip error;
make testwrites nothing into the data root; images carry no tests.- MCP
returns view=statedsorts by value. - One legal-form list for the exposure matcher, the bond reader and the
spending fence. - The MCP tool texts are an eighth shorter and name their columns;
the instructions say one call answers, no re-run to confirm, no
hand totals over a calendar or transactions view. - The
wealthdb-roskill is a third shorter.
Docs
- Plan notes read as present limits; the
custodykind, what
report_yield_receivedholds and the override ledger match the
code; exposure precedence is stated once (EXPOSURE.md §9).