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 │
|
│ FastAPI dashboard + job runner │ SSH │ per-job Docker network │
|
||||||
│ • inbox/<company-slug>/ (decks) │ ───────▶│ (──internal in airgapped) │
|
│ • 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 │ │
|
│ • plan model "waves" │ ───────▶│ │ vLLM(s) │◀─│ LiteLLM │ │
|
||||||
│ • extractor → graders → adjudicator│ │ └─────────┘ │ router │ │
|
│ • extractor → graders → adjudicator│ │ └─────────┘ │ router │ │
|
||||||
│ • deterministic composite scorer │◀─────── │ ┌──────────────┐ ▲ │ │
|
│ • 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 Sparks → Test Spark Connection → Configure Models → Configure Graders
|
||||||
→ Configure Grading (rubric, air-gap, weights) → Configure Companies (slugs,
|
→ Configure Grading (rubric, air-gap, weights) → Configure Companies (slugs,
|
||||||
KPI aliases, pinned targets — especially profitability thresholds) → drop decks
|
KPI aliases, pinned targets — especially profitability thresholds) → drop decks
|
||||||
into `inbox/<company-slug>/2026-Q2-deck.pdf` → **Grade Decks** → watch the
|
into `inbox/<company-slug>/` → **Grade Decks** → watch the dashboard.
|
||||||
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
|
## Repo layout
|
||||||
|
|
||||||
@@ -82,7 +92,7 @@ orchestrator/ The control-plane app (Python)
|
|||||||
serving.py vLLM + LiteLLM router on the Sparks, in waves
|
serving.py vLLM + LiteLLM router on the Sparks, in waves
|
||||||
graders.py launch the grading panel
|
graders.py launch the grading panel
|
||||||
adjudicator.py the local lead grader
|
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
|
preflight.py probe models before launching graders
|
||||||
spark_client.py SSH/rsync helpers
|
spark_client.py SSH/rsync helpers
|
||||||
bdef.md the baked-in BDEF v1.1 rubric
|
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
|
## Build
|
||||||
|
|
||||||
GitHub CI (`.github/workflows/build.yml`) or a local build with `start-cli`
|
Local build with `start-cli` (on a Mac: colima + start-cli in a VM — see the
|
||||||
(see the s9pk-build-on-mac recipe). The vLLM and grader images are built **on
|
s9pk-build-on-mac recipe). The vLLM and grader images are built **on the
|
||||||
the Sparks**, not packed into the `.s9pk`.
|
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
|
npm ci && npm run check && npm run build # type-check + bundle
|
||||||
make # pack the .s9pk (needs start-cli)
|
make # pack the .s9pk (needs start-cli)
|
||||||
```
|
```
|
||||||
|
|
||||||
|
Canonical repo: `https://gitea.ten31.ai/Ten31AI/boardroom-map`.
|
||||||
|
|
||||||
## Status
|
## Status
|
||||||
|
|
||||||
v0.1 — source complete, `tsc`-clean and Python-syntax-clean. Not yet validated
|
**v0.1.5 — live in production.** Deployed on a StartOS box driving a DGX Spark
|
||||||
against live Sparks. HF model pre-pull on the head Spark is required for
|
in single-spark air-gapped mode (gemma-4-31B panel: munger-lens /
|
||||||
air-gapped runs.
|
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