30 lines
2.8 KiB
Markdown
30 lines
2.8 KiB
Markdown
# Boardroom Map
|
|
|
|
StartOS s9pk: local-LLM board-deck grader. Decks dropped in `/data/inbox/<company-slug>/` are graded against the BDEF v1.1 framework by a panel of gemma4-31B containers on the DGX Sparks; a per-company JSON ledger keeps the running tally. Sibling of chambers (same control-plane pattern: GPU-free orchestrator on StartOS drives the Sparks over SSH, wave-based vLLM serving behind a LiteLLM proxy). Origin: gitea.ten31.ai/Ten31AI/boardroom-map.
|
|
|
|
Global preferences: `~/.claude/CLAUDE.md`.
|
|
|
|
## Design invariants
|
|
|
|
- **LLMs never emit numbers.** Scoring is deterministic in scoring.py: composite 0-100 = quant 60 + qual 40 minus capped red-flag penalties. Pinned targets beat extracted ones.
|
|
- JSON reliability = single-shot with a retry ladder (json_schema, guided_json, plain + repair), no tool loop. Extraction invalid = deck fails; one deck's failure never kills the job.
|
|
- Deck filenames must carry quarter AND year ("Board Deck - Q4 2025.pdf"); bare "Q4" does not parse.
|
|
|
|
## Gotchas
|
|
|
|
- `boardroom-vllm:latest` on the Sparks needs `ENTRYPOINT []` (serving.py passes "vllm serve" as CMD; the base image's entrypoint would double it). Grader image is rebuilt on-Spark by hand; the s9pk's baked copy only matters if the image disappears.
|
|
- Airgapped serving needs HF_HUB_OFFLINE/TRANSFORMERS_OFFLINE (the --internal network has no DNS).
|
|
- FileHelper paths must be absolute (/media/startos/volumes/main/...); relative paths resolve to an ephemeral cwd and writes vanish. (chambers has the same bug.)
|
|
- Sideload can return "early eof" with the file intact; plain retry succeeds. Verify with `package installed-version`. UI has no direct LAN port, reachable only via the StartOS "Launch UI" proxy.
|
|
- `preJobStopContainers` (set to "vllm-franklin vllm-gemma4-clerk") stops the resident models at job start and deliberately does NOT restart them; the Gazette's 5am Fleet job re-warms its own (see PhiladelphiaGazette AGENTS.md). GPU is the shared constraint across everything on the Sparks.
|
|
- Local dev-run: repo .venv (python3.9 needs eval_type_backport), BM_DATA_DIR at a sample ledger; launch.json in ~/Desktop/ClaudeCode/.claude/.
|
|
|
|
## Current state
|
|
|
|
(Verified 2026-08-10: `installed-version` on sandy-paycheck.)
|
|
|
|
- **Installed on sandy-paycheck: v0.1.10:0**, so v0.1.9's progress reviews are live too. Git HEAD is f13d044 (v0.1.9).
|
|
- **The v0.1.10 source is DEPLOYED BUT UNCOMMITTED** (orchestrator/ui_auth.py, orchestrator/app.py, startos/versions/v_0_1_10.ts, index.ts), dashboard-auth work from another session. Committing it is the top priority; until then the running service has no durable source of record.
|
|
- Strike is the live test company: 9 decks graded, net composite drop of 11.7 since 2023-Q2, hockey-stick forecasts flagged in all 9.
|
|
- Next: commit the v0.1.10 work, exercise the two-Spark path with a real grading job.
|