Skip to content

Commit b5f1c0a

Browse files
committed
v75: organize evidence dashboard, label costs and separate spot from liquidation equity
1 parent fd41659 commit b5f1c0a

9 files changed

Lines changed: 250 additions & 18 deletions

‎README.md‎

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -241,3 +241,5 @@ Persistent goals, A/B lineages, bounded research drones, concurrent chat, privat
241241
For private phone access, see [SYNTA_REMOTE_ACCESS.md](SYNTA_REMOTE_ACCESS.md).
242242
The remote dashboard and master chat share mobile navigation; an existing v67/v68
243243
gateway can receive the [v69 repair](SYNTA_V69.md) without restarting the mission.
244+
245+
Dashboard v75 navigation, metric definitions and targeted upgrade: [SYNTA_V75.md](SYNTA_V75.md).

‎SYNTA_V75.md‎

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
# v75: readable evidence dashboard and execution accounting
2+
3+
Run `tools/update-synta-dashboard.sh COMMIT` on v74. Reload the existing Tailscale HTTPS URL. Only dashboard and gateway services restart; mission, Windows tasks, balances and archived results remain intact.
4+
5+
- `rlm/v100/dashboard_insights.py`: six navigation views, overview distinguishing revenue, tool work, CPU shadow learning and Gemma updates; domain coverage and source reread charts; labelled Brier comparison of the same replay samples. Counts are not earnings. Unknown revenue stays unknown.
6+
- `rlm/v100/dashboard_layout.py`: host navigation applies to existing guest HTML; repairs six table headers; proposals deduplicated by domain/title/mechanism and limited to 12 visible items; eligibility folded; latest five sources. Full receipts and action archive remain accessible. Blue metric curve, green entry triangles, red exit squares, dashed reference line; selected execution shows friction and basis-point units. Tabs, zoom and receipts survive refresh.
7+
- `rlm/v100/dashboard_snapshot.py`: bounded active-goal CPU policy receipt read; no extra model inference or training.
8+
- `rlm/v100/trade_explorer.py`: separate historical spot equity (paid entry friction, no future exit reserve) and liquidation equity; explicit final spot liquidation point and per-leg cost assumptions. Paper spot equity is not invented from incomplete records.
9+
- `tools/update-synta-dashboard.sh`: targeted pinned update; preserves guest layout, goals, weights, ledgers and original reports.
10+
- `tests/test_v100_dashboard_insights.py`, `tests/test_v100_trade_explorer.py`: accounting and interface regression checks.
11+
12+
## What the immediate drop means
13+
14+
Simulator arithmetic uses fee and slippage in basis points divided by 10,000. At a constant price with 50 bps fee and 10 bps slippage, an all-capital purchase leaves spot equity `1 / (1.001 * 1.005)`, about 99.40% of starting capital. Estimated liquidation equity also reserves exit friction, leaving about 98.81%. This reserve is not a second paid entry fee. Later candle-close movement is separate. At final sale it becomes paid exit friction, not another deduction from already-reserved liquidation equity.
15+
16+
A deterministic constant-price replay checks this accounting. It does not certify the operator's unseen prices, specific graph or exchange fees. Existing losses are not rewritten. Current trading fees depend on product/pair/tier and must come from a valid source; historical assumption labels remain explicit.
17+
18+
Flat paper equity with no fills is expected, not a validated strategy. Missing/stale observations cannot prove activity. Research coverage is not successful task completion. No verified payment series is connected, so charts for other domains show measured proposal/source activity and explicitly missing revenue outcomes rather than invented profits. CPU shadow Brier is separate from Gemma optimizer/accepted-update receipts and money. This display update does not create profitable strategies or grant external authority.
19+
20+
## Validation
21+
22+
Full suite: 1,278 passed, 65 skipped. Final focused dashboard/accounting suite: 52 passed; Ruff and shell syntax checks passed. Browser screenshot validation was attempted but the Chromium download failed in this environment. Phone appearance and operator live receipts therefore remain to be checked after install. JavaScript navigation, receipt selection and state-preserving updates were exercised through deterministic Node tests.

‎pyproject.toml‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ name = "rlms"
33
authors = [
44
{name = "Alex Zhang", email = "altzhang@mit.edu"},
55
]
6-
version = "0.1.3+v100.74"
6+
version = "0.1.3+v100.75"
77
description = "Recursive Language Models."
88
readme = "README.md"
99
license = "MIT"

‎rlm/v100/dashboard_insights.py‎

Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
"""Host-owned navigation and evidence summaries for existing passive layouts."""
2+
3+
SCRIPT = r"""
4+
let dashboardTab='overview';
5+
const dashboardTabs=[['overview','Overview'],['trades','Trading'],['income','Other income'],['learning','Learning'],['activity','Agents & resources'],['diagnostics','Evidence archive']];
6+
function dashboardNavigation(){
7+
let nav=document.getElementById('mission-navigation');
8+
if(!nav){nav=document.createElement('nav');nav.id='mission-navigation';nav.setAttribute('aria-label','Dashboard sections');for(const [key,label] of dashboardTabs){const b=document.createElement('button');b.textContent=label;b.dataset.tab=key;b.onclick=()=>{dashboardTab=key;dashboardNavigation()};nav.append(b)}document.getElementById('cards').before(nav)}
9+
const groups={trades:['trade-explorer','backtests','paper'],income:['income-panel','source-panel'],learning:['goal-learning-panel','evaluation'],activity:['resource-panel','agent-panel','plan-panel'],overview:['overview-panel']};
10+
for(const n of document.querySelectorAll('body > section, body > details')){let group='diagnostics';for(const [key,ids] of Object.entries(groups))if(ids.some(id=>n.id===id||n.querySelector('#'+id)))group=key;n.hidden=group!==dashboardTab;n.dataset.dashboardGroup=group}
11+
for(const b of nav.children){b.setAttribute('aria-pressed',String(b.dataset.tab===dashboardTab))}
12+
const cards=document.getElementById('cards');cards.hidden=dashboardTab!=='overview';
13+
// Repair older custom guest tables with four headers but six data columns.
14+
const table=document.getElementById('backtests')?.closest('table');if(table){let head=table.querySelector('thead');if(!head){head=document.createElement('thead');table.prepend(head)}const tr=document.createElement('tr');for(const title of ['Trial','Net return','Maximum drawdown (peak to trough)','Fills','Triage','Net return at double costs']){const th=document.createElement('th');th.scope='col';th.textContent=title;tr.append(th)}head.replaceChildren(tr)}
15+
}
16+
function evidenceBars(parent,title,rows,unit){
17+
const h=document.createElement('h3');h.textContent=title;parent.append(h);const usable=rows.filter(r=>typeof r[1]==='number'&&Number.isFinite(r[1]));if(!usable.length){textField(parent,'Status','No measured values available');return}
18+
const max=Math.max(1,...usable.map(r=>r[1]));for(const [label,value] of usable){const box=document.createElement('div');box.className='evidence-bar';const text=document.createElement('span');text.textContent=label+': '+value.toFixed(unit==='Brier'?4:0)+' '+unit;const track=document.createElement('div');track.className='bar-track';const bar=document.createElement('div');bar.style.width=(value/max*100)+'%';track.append(bar);box.append(text,track);parent.append(box)}
19+
}
20+
function insightsView(data){
21+
const r=data.report||{},g=r.mission_evidence?.goal_learning||{},policy=g.cpu_shadow_policy||{},work=r.income_work||{},sources=r.source_acquisition||{};
22+
const p=panel('overview-panel','What is actually happening',$('cards'));p.replaceChildren();const h=document.createElement('h2');h.textContent='Results, work and learning';p.append(h);textField(p,'Verified revenue','Unavailable: no verified payment ledger connected');textField(p,'Current model-selected work',work.state||'No work receipt in this snapshot');textField(p,'Last work recorded',work.updated?new Date(work.updated*1000).toLocaleString():'unknown');textField(p,'Successful tool receipts in last experiment',work.successful_tool_receipts);textField(p,'Meaning','A source read or a successful process is not a validated experiment, a model update or earned money.');textField(p,'CPU shadow learning',policy.state||'No policy receipt');textField(p,'Verified outcomes used by CPU policy',policy.trained_outcomes);textField(p,'Gemma accepted updates in this run',r.accepted_weight_updates_this_run);textField(p,'Immediate blocker',work.error||r.learning_activity?.reason||r.paper_fee_source?.error||'None recorded in these receipts');
23+
detailsField(p,'Last experiment receipt',JSON.stringify(work,null,2),'overview-work');
24+
const income=$('income-view');if(income){const counts=new Map();for(const c of r.income_opportunities?.candidates||[]){const name=c.specification?.domain||'Unspecified domain';counts.set(name,(counts.get(name)||0)+1)}evidenceBars(income,'Research coverage by domain (proposals, not earnings)',[...counts],'proposals');evidenceBars(income,'Source acquisition quality',[['Distinct contents',sources.distinct_contents],['Unchanged rereads',sources.unchanged_rereads]],'retrievals');textField(income,'Outcome charts','No verified revenue or completed-test time series for these domains is recorded. Proposal counts and estimated rewards cannot supply a profit curve.');}
25+
const learning=$('goal-learning-view');if(learning){textField(learning,'CPU policy',policy.state||'unavailable');textField(learning,'Independent outcomes trained',policy.trained_outcomes);textField(learning,'Scored replay predictions',policy.prequential_samples);evidenceBars(learning,'CPU forecast replay comparison: lower Brier is better',[['Learned shadow',policy.prequential_brier],['Uniform reference',policy.prequential_samples>0?policy.uniform_baseline_brier:null],['Always flat',policy.prequential_flat_baseline_brier],['Prior frequency',policy.prequential_frequency_baseline_brier]],'Brier');textField(learning,'Score scope','Exploratory prequential replay on the same scored samples. Not profit, not Gemma training and not proof of a forward advantage.');}
26+
}
27+
28+
"""
29+
30+
STYLE = """
31+
[hidden]{display:none!important}body{background:#0c1422;max-width:1280px}#mission-navigation{display:flex;gap:8px;flex-wrap:wrap;position:sticky;top:0;z-index:10;padding:12px 0;background:#0c1422;border-bottom:1px solid #304259;margin-bottom:20px}#mission-navigation button{background:#17263c;border:1px solid #304259;color:#bac9de}#mission-navigation button[aria-pressed=true]{background:#29578b;color:#fff;border-color:#85baff}button:focus-visible,a:focus-visible,select:focus-visible{outline:3px solid #ffd166;outline-offset:3px}section{box-shadow:none}h1{letter-spacing:-.6px}#cards{grid-template-columns:repeat(auto-fit,minmax(170px,1fr))}#overview-panel{border-left:4px solid #80baff}table{display:block;overflow:auto;white-space:nowrap}th{font-size:12px;color:#b9cbe2}select,input{background:#14243a;color:#eef5ff;border:1px solid #486582;padding:9px;border-radius:7px;max-width:100%}label{display:grid;gap:6px;font-size:13px}.evidence-bar{margin:12px 0;font-size:13px}.bar-track{height:9px;background:#26384e;border-radius:9px;margin-top:6px}.bar-track>div{height:100%;background:#85baff;border-radius:9px}#income-view>.card{margin:8px 0}#backtest-audit{max-height:120px}#fresh,#layout{font-size:12px}#trade-plot{background:#0c1726;border-radius:10px}#trade-summary{font-weight:600}#trade-scope{font-size:12px}#trade-hover{font-size:13px}#timeline-panel{max-height:none}#plan-grid p{max-height:180px;overflow:auto}@media(max-width:650px){#mission-navigation{gap:6px}#mission-navigation button{padding:8px 10px;font-size:12px}}
32+
"""

0 commit comments

Comments
 (0)