README: update to v0.1.5 live status, PPTX extraction, Gitea, ops notes
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Fable 5
parent
91212322c1
commit
6bf0786993
@@ -38,7 +38,7 @@ StartOS box (control plane, no GPU) DGX Spark(s)
|
||||
┌────────────────────────────────────┐ ┌───────────────────────────────┐
|
||||
│ FastAPI dashboard + job runner │ SSH │ per-job Docker network │
|
||||
│ • inbox/<company-slug>/ (decks) │ ───────▶│ (──internal in airgapped) │
|
||||
│ • extract text (PDF/DOCX/TXT/MD) │ rsync │ ┌─────────┐ ┌────────────┐ │
|
||||
│ • extract text (PDF/PPTX/DOCX/…) │ rsync │ ┌─────────┐ ┌────────────┐ │
|
||||
│ • plan model "waves" │ ───────▶│ │ vLLM(s) │◀─│ LiteLLM │ │
|
||||
│ • extractor → graders → adjudicator│ │ └─────────┘ │ router │ │
|
||||
│ • deterministic composite scorer │◀─────── │ ┌──────────────┐ ▲ │ │
|
||||
@@ -68,8 +68,18 @@ StartOS box (control plane, no GPU) DGX Spark(s)
|
||||
Configure Sparks → Test Spark Connection → Configure Models → Configure Graders
|
||||
→ Configure Grading (rubric, air-gap, weights) → Configure Companies (slugs,
|
||||
KPI aliases, pinned targets — especially profitability thresholds) → drop decks
|
||||
into `inbox/<company-slug>/2026-Q2-deck.pdf` → **Grade Decks** → watch the
|
||||
dashboard.
|
||||
into `inbox/<company-slug>/` → **Grade Decks** → watch the dashboard.
|
||||
|
||||
Two operational notes:
|
||||
|
||||
- **Deck filenames must contain the period with the year** — e.g.
|
||||
`Board Deck - Q4 2025.pdf` parses; a bare `Q4` does not. Periods are
|
||||
canonicalized (`2025-Q4`, `2026-H1`, `2026-05`, `FY2026`) and drive the
|
||||
forecast-target chaining between consecutive decks.
|
||||
- If a Spark already runs resident vLLM containers, list their names in
|
||||
**Configure Grading → `preJobStopContainers`** — they are docker-stopped on
|
||||
the head Spark at job start to free GPU memory (and deliberately *not*
|
||||
restarted afterward; re-warm them from whatever job owns them).
|
||||
|
||||
## Repo layout
|
||||
|
||||
@@ -82,7 +92,7 @@ orchestrator/ The control-plane app (Python)
|
||||
serving.py vLLM + LiteLLM router on the Sparks, in waves
|
||||
graders.py launch the grading panel
|
||||
adjudicator.py the local lead grader
|
||||
extraction.py PDF/DOCX/TXT/MD → text (on the StartOS box)
|
||||
extraction.py PDF/PPTX/DOCX/TXT/MD → text (on the StartOS box)
|
||||
preflight.py probe models before launching graders
|
||||
spark_client.py SSH/rsync helpers
|
||||
bdef.md the baked-in BDEF v1.1 rubric
|
||||
@@ -93,17 +103,39 @@ sandbox/ grader image (built ON the Spark, not packed in the s9pk)
|
||||
|
||||
## Build
|
||||
|
||||
GitHub CI (`.github/workflows/build.yml`) or a local build with `start-cli`
|
||||
(see the s9pk-build-on-mac recipe). The vLLM and grader images are built **on
|
||||
the Sparks**, not packed into the `.s9pk`.
|
||||
Local build with `start-cli` (on a Mac: colima + start-cli in a VM — see the
|
||||
s9pk-build-on-mac recipe). The vLLM and grader images are built **on the
|
||||
Sparks**, not packed into the `.s9pk`:
|
||||
|
||||
- `boardroom-vllm:latest` — the vLLM serving image with `ENTRYPOINT []`
|
||||
(serving.py passes the full `vllm serve …` command as the container CMD).
|
||||
- `boardroom-grader:latest` — from `sandbox/build.sh`.
|
||||
|
||||
```
|
||||
npm ci && npm run check && npm run build # type-check + bundle
|
||||
make # pack the .s9pk (needs start-cli)
|
||||
```
|
||||
|
||||
Canonical repo: `https://gitea.ten31.ai/Ten31AI/boardroom-map`.
|
||||
|
||||
## Status
|
||||
|
||||
v0.1 — source complete, `tsc`-clean and Python-syntax-clean. Not yet validated
|
||||
against live Sparks. HF model pre-pull on the head Spark is required for
|
||||
air-gapped runs.
|
||||
**v0.1.5 — live in production.** Deployed on a StartOS box driving a DGX Spark
|
||||
in single-spark air-gapped mode (gemma-4-31B panel: munger-lens /
|
||||
girdley-operator / buffett-owner). First full grading run completed
|
||||
2026-07-29: a three-deck company history graded end-to-end into a running
|
||||
ledger with quarter-over-quarter forecast chaining.
|
||||
|
||||
Version history: v0.1.1 fixed config persistence (absolute `/media/startos/…`
|
||||
paths — relative paths resolved into an ephemeral cwd); v0.1.2 added
|
||||
`preJobStopContainers`; v0.1.3 hardened preflight (authed model probes,
|
||||
poll-until-loaded, crash fast-fail); v0.1.4 fixed air-gapped serving
|
||||
(`HF_HUB_OFFLINE` — the `--internal` network has no DNS) and raised grader
|
||||
timeouts for ~3.6 tok/s local generation; v0.1.5 fixed the dashboard viewer
|
||||
(stays open across background refresh) and added report/JSON/scorecard
|
||||
downloads.
|
||||
|
||||
Known optimization not yet done: the wave is torn down per deck, so the 31B
|
||||
reloads from disk (~6 min) between decks even when the model set is unchanged.
|
||||
|
||||
HF model pre-pull on the head Spark is required for air-gapped runs.
|
||||
|
||||
Reference in New Issue
Block a user