Implement BDEF v1.1 grading: scoring core, per-deck pipeline, ledger, dashboard, StartOS layer

- Deterministic scoring.py (quant 60 / qual 40 / flags -15, profitability heaviest)
- Per-company JSON ledger with forecast-target chaining deck N-1 -> N
- Single-shot sandbox agent with guided-JSON fallback ladder (no tool loop)
- Portfolio dashboard with sparklines, KPI hit rates, BDEF category bars
- 48 unit tests green; endpoints smoke-tested; npm check+build green

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
Jonathan Kirkwood
2026-07-06 14:15:12 -05:00
co-authored by Claude Fable 5
parent 1dde915540
commit b1d7aed9f4
48 changed files with 4907 additions and 971 deletions
+8 -9
View File
@@ -6,13 +6,12 @@
</linearGradient>
</defs>
<rect width="256" height="256" rx="48" fill="url(#bg)"/>
<!-- document -->
<rect x="74" y="56" width="92" height="120" rx="8" fill="#e9edf5"/>
<rect x="88" y="78" width="64" height="7" rx="3.5" fill="#9aa3b5"/>
<rect x="88" y="96" width="64" height="7" rx="3.5" fill="#9aa3b5"/>
<rect x="88" y="114" width="44" height="7" rx="3.5" fill="#9aa3b5"/>
<!-- magnifying glass (the review) -->
<circle cx="158" cy="150" r="34" fill="none" stroke="#c9a24b" stroke-width="10"/>
<line x1="182" y1="174" x2="206" y2="198" stroke="#c9a24b" stroke-width="12" stroke-linecap="round"/>
<circle cx="158" cy="150" r="20" fill="#c9a24b" opacity="0.18"/>
<!-- scorecard bars: an ascending quarterly trend -->
<rect x="56" y="148" width="28" height="52" rx="6" fill="#3d4666"/>
<rect x="100" y="124" width="28" height="76" rx="6" fill="#5a6a94"/>
<rect x="144" y="96" width="28" height="104" rx="6" fill="#c9a24b"/>
<!-- spark above the top bar: the latest grade -->
<path d="M186 44 l7 18 18 7 -18 7 -7 18 -7 -18 -18 -7 18 -7 z" fill="#c9a24b"/>
<!-- baseline -->
<rect x="48" y="204" width="160" height="6" rx="3" fill="#2a3040"/>
</svg>

Before

Width:  |  Height:  |  Size: 941 B

After

Width:  |  Height:  |  Size: 837 B