Clean repo + mobile leaderboard readout fix
#1
by burnmydays - opened
- .gitignore +20 -1
- AGENTS.md +58 -0
- CODEX.md +0 -72
- FIXES.md +0 -78
- LICENSE +21 -0
- PERSISTENCE_SPEC.md +0 -115
- README.md +14 -6
- REVIEW.md +0 -110
- SCRATCHPAD.md +0 -137
- STATUS.md +0 -562
- SUPABASE_MIGRATION.md +0 -97
- TODO.md +0 -95
- USAGE.md +0 -52
- app.py +428 -62
- bdemo2.md +0 -119
- builddemo.md +0 -225
- notes:.md.md +0 -10
- theme.py +319 -19
.gitignore
CHANGED
|
@@ -5,8 +5,27 @@ __pycache__/
|
|
| 5 |
*.pyc
|
| 6 |
*.pyo
|
| 7 |
.DS_Store
|
|
|
|
| 8 |
|
| 9 |
-
# local-only secrets +
|
| 10 |
SECRETS.local.md
|
| 11 |
.env
|
| 12 |
.env.*
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 5 |
*.pyc
|
| 6 |
*.pyo
|
| 7 |
.DS_Store
|
| 8 |
+
.pytest_cache/
|
| 9 |
|
| 10 |
+
# local-only secrets + credentials (never commit)
|
| 11 |
SECRETS.local.md
|
| 12 |
.env
|
| 13 |
.env.*
|
| 14 |
+
|
| 15 |
+
# internal working / session notes — not for public repo
|
| 16 |
+
SCRATCHPAD.md
|
| 17 |
+
STATUS.md
|
| 18 |
+
FIXES.md
|
| 19 |
+
CODEX.md
|
| 20 |
+
REVIEW.md
|
| 21 |
+
TODO.md
|
| 22 |
+
USAGE.md
|
| 23 |
+
PERSISTENCE_SPEC.md
|
| 24 |
+
SUPABASE_MIGRATION.md
|
| 25 |
+
builddemo.md
|
| 26 |
+
bdemo2.md
|
| 27 |
+
notes:.md.md
|
| 28 |
+
|
| 29 |
+
# playwright MCP screenshot artifacts
|
| 30 |
+
.playwright-mcp/
|
| 31 |
+
_*.png
|
AGENTS.md
ADDED
|
@@ -0,0 +1,58 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
# AGENTS.md — MO§ES SigRank
|
| 2 |
+
|
| 3 |
+
Guidance for AI coding agents (and humans) working in this repo. Read this before editing.
|
| 4 |
+
|
| 5 |
+
## What this is
|
| 6 |
+
**SIGRANK** (powered by MO§ES™) is a Gradio Space that ranks AI coding operators by
|
| 7 |
+
**architecture, not volume**. The core metric is **Υ = (Cache · Output) / Input²** — squaring
|
| 8 |
+
input punishes wasteful prompting while rewarding cache reuse and real output. Volume can't buy rank.
|
| 9 |
+
|
| 10 |
+
Live Space: `huggingface.co/spaces/burnmydays/sigrank`
|
| 11 |
+
|
| 12 |
+
## Run it
|
| 13 |
+
```bash
|
| 14 |
+
pip install -r requirements.txt
|
| 15 |
+
python app.py # launches the Gradio UI on :7860
|
| 16 |
+
python sigrank.py --help # local-first CLI importer (reads your own ccusage usage)
|
| 17 |
+
python metrics.py # prints the SEED corpus metrics (sanity check)
|
| 18 |
+
python -m pytest test_metrics.py # metric invariant tests
|
| 19 |
+
```
|
| 20 |
+
|
| 21 |
+
## Architecture (one job per file)
|
| 22 |
+
- `metrics.py` — the metric engine. `compute(i, o, cw, cr)` → full ledger (Υ, SNR, leverage,
|
| 23 |
+
velocity, 10x DEV, $/1M). Also holds the `SEED` corpus (MO§ES + wild operators from tokscale.ai).
|
| 24 |
+
- `ingest.py` — parsers. ccusage (Claude) and Codex JSON shapes → four token pillars. Codex input
|
| 25 |
+
is *estimated* (no native input field); see `_codex_input_estimate`.
|
| 26 |
+
- `app.py` — the Gradio UI. Tabs: **Home / Create / Leaders / VS / Reports**. Board rendering
|
| 27 |
+
(`board_html`), operator cards (`card_html`), compare (`compare_html`), insights (`insights_html`),
|
| 28 |
+
Home landing (`metric_features_html`, `home_html`).
|
| 29 |
+
- `theme.py` — all custom CSS (dark/gold). Mobile rules live in `@media (max-width: 700px)` blocks.
|
| 30 |
+
- `db.py` — optional Supabase persistence; falls back to `metrics.SEED` when unconfigured (works offline).
|
| 31 |
+
- `narrate.py` — optional MiniCPM-0.5B prose "operator reads" via `@spaces.GPU`; degrades to a
|
| 32 |
+
template when no GPU/torch (so the app runs fine on CPU).
|
| 33 |
+
- `sigrank.py` / `sigrank` — local-first CLI: reads your real ccusage usage on your machine, prints
|
| 34 |
+
your operator read, optional `--submit` to the board.
|
| 35 |
+
|
| 36 |
+
## Frozen invariants — DO NOT CHANGE without explicit instruction
|
| 37 |
+
- **`metrics.py` `SEED` numbers** — the canonical corpus. MO§ES row = `(1_251_211, 11_296_121,
|
| 38 |
+
128_196_310, 2_555_179_769)`. Changing these breaks the published leaderboard + tests.
|
| 39 |
+
- **The Υ formula** `(cache_read · output) / input²` and the telescoping identity
|
| 40 |
+
(10x DEV = log₁₀(leverage), Υ = leverage × velocity). `test_metrics.py` locks these.
|
| 41 |
+
- MO§ES Υ must print **18436.98**.
|
| 42 |
+
|
| 43 |
+
## Conventions
|
| 44 |
+
- **No secrets in the repo.** Keys live only in `SECRETS.local.md` (gitignored) and HF Space
|
| 45 |
+
Secrets. Never commit tokens/keys.
|
| 46 |
+
- **Supabase: new tables only.** Do not alter existing tables; SigRank uses its own.
|
| 47 |
+
- **Claude and Codex are measured separately** — never combine providers in one reading.
|
| 48 |
+
- **Deploy** by pushing to the Space git remote; the HF Space is the live deliverable. CI/tests
|
| 49 |
+
should stay green (`pytest`, `python -c "import app; app._build_demo()"`).
|
| 50 |
+
- Match the surrounding code style; keep changes minimal and verifiable.
|
| 51 |
+
|
| 52 |
+
## Metric definitions (match `metrics.compute` exactly)
|
| 53 |
+
- **Υ yield** = (cache_read · output) / input² — the rank metric.
|
| 54 |
+
- **SNR** = output / (input + output) — signal vs. noise.
|
| 55 |
+
- **leverage** = cache_read / input — cache reuse amplification.
|
| 56 |
+
- **velocity** = output / input — throughput.
|
| 57 |
+
- **10x DEV** = log₁₀(transmission × commitment × reuse) = log₁₀(leverage).
|
| 58 |
+
- **$/1M** = blended cost per million tokens across all states.
|
CODEX.md
DELETED
|
@@ -1,72 +0,0 @@
|
|
| 1 |
-
# Codex handoff — MO§ES SigRank
|
| 2 |
-
|
| 3 |
-
Read this first. It's the instruction set for driving **OpenAI Codex** against this
|
| 4 |
-
repo and the thing that earns the **Codex $10k sponsor prize**.
|
| 5 |
-
|
| 6 |
-
Local path (desktop storage): `/Users/dericmchenry/Desktop/moses-sigrank`
|
| 7 |
-
GitHub (current): `github.com/Burnmydays/hf-` → upload target: `github.com/SunrisesIllNeverSee`
|
| 8 |
-
|
| 9 |
-
## How the prize works (important)
|
| 10 |
-
The sponsor track rewards repos where **Codex did real work**, shown through
|
| 11 |
-
**Codex-attributed commits**. It does NOT require that 100% of the repo is Codex's.
|
| 12 |
-
Two rules:
|
| 13 |
-
1. **Genuine work only.** Let Codex actually write the code and commit it with its own
|
| 14 |
-
attribution. Do not hand-copy output or fake attribution — that risks disqualification.
|
| 15 |
-
2. **Verify the official rule** on the hackathon page before relying on this.
|
| 16 |
-
|
| 17 |
-
## Current state (as of this handoff)
|
| 18 |
-
Done and pushed to Burnmydays/hf- (main):
|
| 19 |
-
- Codex parser fixed — `_codex_input_estimate` in `ingest.py` (Beta = output × real Claude
|
| 20 |
-
io_ratio; Alpha = output × 2.0 AA baseline). Two pathways, both flagged `*` estimated.
|
| 21 |
-
- `./sigrank --all` (run every provider in turn).
|
| 22 |
-
- Instructions sharpened (app.py "Clock Your Signal" tab + README).
|
| 23 |
-
- Wild corpus = 10 tokscale.ai operators; board = 11 rows; Supabase migrated + synced.
|
| 24 |
-
|
| 25 |
-
## Codex parser — DONE (do not change)
|
| 26 |
-
The Codex token conversion is FINAL: the ratio model in `_codex_input_estimate`
|
| 27 |
-
(`ingest.py`) — Alpha `output×2` (no Claude profile) / Beta `output×io_ratio` (Claude
|
| 28 |
-
profile present) — handles the estimate. **Do NOT add turn/daily-delta logic.**
|
| 29 |
-
|
| 30 |
-
## Codex's job: DEPLOY (the main handoff)
|
| 31 |
-
Do these in order so the work + attribution land in the submitted location.
|
| 32 |
-
|
| 33 |
-
1. **Upload the repo to GitHub → `github.com/SunrisesIllNeverSee`.**
|
| 34 |
-
The current working copy is at `/Users/dericmchenry/Desktop/moses-sigrank` (also on
|
| 35 |
-
`github.com/Burnmydays/hf-`). Commit with Codex attribution and push to SunrisesIllNeverSee.
|
| 36 |
-
|
| 37 |
-
2. **Deploy to the HuggingFace Space** (Gradio SDK; `README.md` already has valid Space
|
| 38 |
-
front-matter). Create/link the Space under the owner's HF account (`burnmydays`) and
|
| 39 |
-
push the repo to the Space's git remote.
|
| 40 |
-
|
| 41 |
-
3. **Set the Space secrets** (Space → Settings → Variables and secrets). Copy the values
|
| 42 |
-
from `SECRETS.local.md` (gitignored — never commit them):
|
| 43 |
-
- `SUPABASE_URL` → read endpoint
|
| 44 |
-
- `SUPABASE_ANON_KEY` → read (RLS-gated, public-read)
|
| 45 |
-
- `SUPABASE_SERVICE_KEY`→ **only if** signed-in visitor rows should persist; leave UNSET
|
| 46 |
-
for the curated demo (then writes are no-ops and pastes stay transient).
|
| 47 |
-
Without these the app still boots on the SEED fallback (11 rows), so it never breaks.
|
| 48 |
-
|
| 49 |
-
## Optional extra attributed commits (nice-to-have for the prize)
|
| 50 |
-
- **`test_metrics.py`** — lock MO§ES Υ 18,436.98 / lev 2042.2 / 10x DEV 3.31 + the
|
| 51 |
-
telescoping identity `(o/i)·(cw/o)·(cr/cw)==cr/i` for every SEED row, plus both Codex
|
| 52 |
-
pathways (Alpha `output×2`, Beta `output×io_ratio`).
|
| 53 |
-
- **Real Codex `$/1M`** — OpenAI per-1M prices in `parse_codex_submission` meta (keep `*`).
|
| 54 |
-
|
| 55 |
-
## Verify BEFORE every Codex commit
|
| 56 |
-
```
|
| 57 |
-
cd /Users/dericmchenry/Desktop/moses-sigrank
|
| 58 |
-
.venv/bin/python -c "import py_compile,glob; [py_compile.compile(f,doraise=True) for f in glob.glob('*.py')]"
|
| 59 |
-
.venv/bin/python metrics.py # MO§ES must print Y 18436.98, lev 2042.2, 10xDEV 3.31, $/1M 0.527
|
| 60 |
-
```
|
| 61 |
-
(use `python3` if there's no `.venv`.)
|
| 62 |
-
|
| 63 |
-
## DO NOT let Codex touch
|
| 64 |
-
- The MO§ES (ccusage) SEED row in `metrics.py` (canonical, Υ 18436.98).
|
| 65 |
-
- The Υ formula `(C·O)/I²` or the telescoping identity — these are the thesis.
|
| 66 |
-
- The Codex estimation must stay **flagged (`*`)** — never a silent strict assumption.
|
| 67 |
-
|
| 68 |
-
## Already done — NOT available as Codex commits
|
| 69 |
-
- 2:1 → real-ratio anchor refinement (Alpha/Beta unified). Done by Claude this session.
|
| 70 |
-
- Board `~`/`*` estimated-row marker. Done by Claude this session.
|
| 71 |
-
|
| 72 |
-
See `SCRATCHPAD.md` for live cross-agent state and `TODO.md` for the full task board.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
FIXES.md
DELETED
|
@@ -1,78 +0,0 @@
|
|
| 1 |
-
# FIXES — open items for the SigRank build
|
| 2 |
-
|
| 3 |
-
Status legend: [ ] not done · [~] partial/optional · [x] done
|
| 4 |
-
Completed items are moved to the BOTTOM. Everything still TO DO is up top.
|
| 5 |
-
|
| 6 |
-
═══════════════════════════════════════════════════════════════════
|
| 7 |
-
# 🔧 STILL TO DO
|
| 8 |
-
═══════════════════════════════════════════════════════════════════
|
| 9 |
-
|
| 10 |
-
## FIX 3 — tokscale MCH row (DATA, BLOCKED on your re-pull)
|
| 11 |
-
- [ ] FILE: metrics.py SEED
|
| 12 |
-
- WHAT: add "MCH (tokscale read)" as a LABELED instrument-comparison row, NOT a
|
| 13 |
-
second person. Frame: same operator via the noisy instrument (input inflated
|
| 14 |
-
to ~8.36M vs ccusage 1.25M — the +568% streaming-sum artifact).
|
| 15 |
-
- WHY: demonstrates instrument divergence honestly. Held open until you re-pull
|
| 16 |
-
clean numbers (don't freeze the screenshot figure).
|
| 17 |
-
|
| 18 |
-
## FIX 5 — MiniCPM not in venv (DEMO QUALITY, optional pre-record)
|
| 19 |
-
- [~] requirements.txt lists torch/transformers; venv only has gradio.
|
| 20 |
-
- WHAT: for REAL MiniCPM narration on camera (not the template fallback):
|
| 21 |
-
.venv/bin/python -m pip install torch transformers accelerate sentencepiece
|
| 22 |
-
- NOTE: heavy download. Numbers/board/cost/cascade identical either way — only
|
| 23 |
-
the prose paragraph changes.
|
| 24 |
-
|
| 25 |
-
## SUBMISSION (yours, not code — from TODO.md)
|
| 26 |
-
- [ ] Move Space into build-small-hackathon ORG
|
| 27 |
-
- [ ] Record demo video (script in TODO.md) + paste link in README
|
| 28 |
-
- [ ] Social post + paste link in README
|
| 29 |
-
- [ ] If chasing Codex $10k: do Codex commits AFTER repo is in the org
|
| 30 |
-
(so attribution lands in the submitted location) — see CODEX.md
|
| 31 |
-
|
| 32 |
-
## NEXT BUILD — automatic importer (local-first, paste = backup)
|
| 33 |
-
- [ ] Clean/sleek local importer that auto-reads ccusage (no paste). See SCRATCHPAD.md.
|
| 34 |
-
|
| 35 |
-
## VERIFY (run after every fix)
|
| 36 |
-
```
|
| 37 |
-
cd /Users/dericmchenry/Desktop/moses-sigrank
|
| 38 |
-
.venv/bin/python -c "import py_compile,glob; [py_compile.compile(f,doraise=True) for f in glob.glob('*.py')]"
|
| 39 |
-
.venv/bin/python metrics.py # canonical numbers must still print
|
| 40 |
-
```
|
| 41 |
-
|
| 42 |
-
═══════════════════════════════════════════════════════════════════
|
| 43 |
-
# ✅ DONE
|
| 44 |
-
═══════════════════════════════════════════════════════════════════
|
| 45 |
-
|
| 46 |
-
## FIX 1 — Persistence boundary documented (HONESTY) — DONE this session
|
| 47 |
-
- [x] Added the honesty note to README (Notes), app.py Leaderboard tab, and
|
| 48 |
-
"your placement". Phrased for curated mode so it stays true: pasted rows score
|
| 49 |
-
live against the field but are NOT added to the persisted board.
|
| 50 |
-
|
| 51 |
-
## FIX 2 — Cost provenance stated (LABEL) — DONE this session
|
| 52 |
-
- [x] README Notes + metrics.py SEED comment now state: board $/1M is a list-price
|
| 53 |
-
recompute (~) for all rows; MO§ES reproduces its real ccusage $0.527; the 6
|
| 54 |
-
wild operators have no real cost data. Real cost only on the live ccusage paste.
|
| 55 |
-
|
| 56 |
-
## FIX 4 — Species/quadrant framing (NARRATIVE) — DONE this session
|
| 57 |
-
- [x] Wrote species_cards.md: 2×2 Scale×Amplification quadrant, MO§ES = the empty
|
| 58 |
-
quadrant (not "top rank"), flavor-text fix ("built to compound, not just spend"),
|
| 59 |
-
and the honest line (high reuse is the SIGNATURE of compounding, not proof).
|
| 60 |
-
Deck-only, not the app.
|
| 61 |
-
|
| 62 |
-
## FIX 6 — CSS 8-col grid (VISUAL) — DONE this session
|
| 63 |
-
- [x] Verified theme.py:58 grid-template-columns = 8 tracks, matches the 8 header
|
| 64 |
-
cells in board_html(). No change needed. (Pixel eyeball at your width still yours.)
|
| 65 |
-
|
| 66 |
-
## PERSISTENCE — Supabase (NEW, this session) — DONE + VERIFIED
|
| 67 |
-
- [x] Table public.sigrank_operators built + seeded (7 rows) in AppFeeder, curated RLS.
|
| 68 |
-
- [x] db.py (REST read + service-key upsert) with SEED fallback safety net.
|
| 69 |
-
- [x] app.py reads from db.load_operators() (cached, db→SEED) + save-on-ingest; requirements gained requests.
|
| 70 |
-
- [x] VERIFIED LIVE: anon REST read returns 7 rows; anon write blocked (401). Set Space secrets from SECRETS.local.md to activate.
|
| 71 |
-
|
| 72 |
-
## CONFIRMED WORKING (baseline)
|
| 73 |
-
- [x] ccusage import → fills ALL board columns. Verified MO§ES Υ 18,437, $0.527.
|
| 74 |
-
- [x] Codex import → 2:1 anchor split, clamped ≥0, caveat-flagged, full cascade.
|
| 75 |
-
- [x] Four-number fallback. Garbage input handled gracefully.
|
| 76 |
-
- [x] Avg $/1M is a real board column (8-col grid).
|
| 77 |
-
- [x] Board used on BOTH tabs — hero version consistent.
|
| 78 |
-
- [x] App boots under gradio 6.x (version-safe launch).
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
LICENSE
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
MIT License
|
| 2 |
+
|
| 3 |
+
Copyright (c) 2026 Deric J. McHenry / Ello Cello LLC
|
| 4 |
+
|
| 5 |
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
| 6 |
+
of this software and associated documentation files (the "Software"), to deal
|
| 7 |
+
in the Software without restriction, including without limitation the rights
|
| 8 |
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
| 9 |
+
copies of the Software, and to permit persons to whom the Software is
|
| 10 |
+
furnished to do so, subject to the following conditions:
|
| 11 |
+
|
| 12 |
+
The above copyright notice and this permission notice shall be included in all
|
| 13 |
+
copies or substantial portions of the Software.
|
| 14 |
+
|
| 15 |
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
| 16 |
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
| 17 |
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
| 18 |
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
| 19 |
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
| 20 |
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
| 21 |
+
SOFTWARE.
|
PERSISTENCE_SPEC.md
DELETED
|
@@ -1,115 +0,0 @@
|
|
| 1 |
-
# PERSISTENCE SPEC — make board rows SAVE (Supabase)
|
| 2 |
-
|
| 3 |
-
Goal: pasted operators PERSIST on the board across reloads/sessions.
|
| 4 |
-
Honors standing rule: NEW TABLE ONLY in AppFeeder. Nothing existing altered.
|
| 5 |
-
|
| 6 |
-
Project: AppFeeder (betcyfbzsgusaghriptz) · org MO§ES (iwiixslkceolawfcbbhg)
|
| 7 |
-
|
| 8 |
-
DECISION YOU MUST MAKE FIRST (affects RLS):
|
| 9 |
-
A) Curated — only YOU seed/write. Public demo READS only. (recommended for hackathon)
|
| 10 |
-
B) Public — anyone who pastes lands permanently. Needs anti-spam later.
|
| 11 |
-
This spec writes RLS for (A). For (B), see the note at bottom.
|
| 12 |
-
|
| 13 |
-
------------------------------------------------------------------
|
| 14 |
-
## STEP 1 — create the table (run in Supabase SQL editor)
|
| 15 |
-
------------------------------------------------------------------
|
| 16 |
-
```sql
|
| 17 |
-
create table if not exists public.sigrank_operators (
|
| 18 |
-
id bigint generated always as identity primary key,
|
| 19 |
-
name text not null unique,
|
| 20 |
-
input bigint not null default 0,
|
| 21 |
-
output bigint not null default 0,
|
| 22 |
-
cache_create bigint not null default 0,
|
| 23 |
-
cache_read bigint not null default 0,
|
| 24 |
-
cost_usd double precision, -- null = no real cost (estimate in UI)
|
| 25 |
-
source text not null default 'manual', -- ccusage | codex | manual | seed
|
| 26 |
-
estimated boolean not null default false, -- true for codex 2:1-anchor rows
|
| 27 |
-
caveat text, -- directional flag for estimated
|
| 28 |
-
created_at timestamptz not null default now(),
|
| 29 |
-
updated_at timestamptz not null default now()
|
| 30 |
-
);
|
| 31 |
-
|
| 32 |
-
alter table public.sigrank_operators enable row level security;
|
| 33 |
-
|
| 34 |
-
-- (A) curated: anyone can READ, nobody writes via anon key
|
| 35 |
-
create policy "public_read_sigrank"
|
| 36 |
-
on public.sigrank_operators for select
|
| 37 |
-
to anon, authenticated
|
| 38 |
-
using (true);
|
| 39 |
-
-- (no insert/update policy for anon => writes blocked unless service role)
|
| 40 |
-
```
|
| 41 |
-
|
| 42 |
-
------------------------------------------------------------------
|
| 43 |
-
## STEP 2 — seed the verified corpus (run once, SQL editor)
|
| 44 |
-
------------------------------------------------------------------
|
| 45 |
-
```sql
|
| 46 |
-
insert into public.sigrank_operators
|
| 47 |
-
(name, input, output, cache_create, cache_read, cost_usd, source, estimated)
|
| 48 |
-
values
|
| 49 |
-
('MO§ES (ccusage)', 1251211, 11296121, 128196310, 2555179769, NULL, 'seed', false),
|
| 50 |
-
('vincentkoc', 6600000000, 342700000, 223700000, 195000000000, NULL, 'seed', false),
|
| 51 |
-
('MapleEve', 34800000000, 2800000000, 550100000, 794600000000, NULL, 'seed', false),
|
| 52 |
-
('kzquandary', 118400000000, 5900000000, 0, 1066000000000, NULL, 'seed', false),
|
| 53 |
-
('iamtheavoc1', 989500000000, 1272000000000, 0, 4524000000000, NULL, 'seed', false),
|
| 54 |
-
('Nepomuk5665', 4037000000000, 1259000000000, 96300000000, 1658000000000, NULL, 'seed', false),
|
| 55 |
-
('cexll', 67700000000, 64000000000, 217800000, 36900000000, NULL, 'seed', false)
|
| 56 |
-
on conflict (name) do nothing;
|
| 57 |
-
```
|
| 58 |
-
NOTE: MO§ES cost_usd left NULL here so the engine recomputes $0.527 from list
|
| 59 |
-
price; if you want the REAL ccusage cost frozen, set it explicitly instead.
|
| 60 |
-
|
| 61 |
-
------------------------------------------------------------------
|
| 62 |
-
## STEP 3 — get your keys (Supabase dashboard → Project Settings → API)
|
| 63 |
-
------------------------------------------------------------------
|
| 64 |
-
- Project URL: https://betcyfbzsgusaghriptz.supabase.co
|
| 65 |
-
- anon public key: (for READ in the app)
|
| 66 |
-
- service_role key: (for WRITES — server-side ONLY, never in client/Space env that's public)
|
| 67 |
-
|
| 68 |
-
For the HF Space, set as SECRETS (Space settings → Variables and secrets):
|
| 69 |
-
SUPABASE_URL = https://betcyfbzsgusaghriptz.supabase.co
|
| 70 |
-
SUPABASE_ANON_KEY = <anon key>
|
| 71 |
-
SUPABASE_SERVICE_KEY = <service_role key> # only if you allow writes from app
|
| 72 |
-
|
| 73 |
-
------------------------------------------------------------------
|
| 74 |
-
## STEP 4 — code changes (I will write these as a separate diff .md on your go)
|
| 75 |
-
------------------------------------------------------------------
|
| 76 |
-
New file db.py:
|
| 77 |
-
- load_operators() -> reads sigrank_operators via REST (anon key), returns
|
| 78 |
-
same shape as SEED dict. Falls back to hardcoded SEED if env/keys missing
|
| 79 |
-
(so the app NEVER breaks if Supabase is down — this is the safety net).
|
| 80 |
-
- save_operator(name, i,o,cw,cr, cost, source, estimated, caveat)
|
| 81 |
-
-> upsert via service key. Only called if SUPABASE_SERVICE_KEY present.
|
| 82 |
-
|
| 83 |
-
metrics.py:
|
| 84 |
-
- keep SEED as the FALLBACK constant (do not delete — it's the safety net).
|
| 85 |
-
|
| 86 |
-
app.py:
|
| 87 |
-
- board reads from db.load_operators() instead of SEED directly.
|
| 88 |
-
- run_ingest(): after compute, if save enabled, call db.save_operator(...)
|
| 89 |
-
then re-read the board so the new row is persisted AND shown.
|
| 90 |
-
- decision A: gate save behind service key (so public demo is read-only,
|
| 91 |
-
your own seeding/admin writes work).
|
| 92 |
-
|
| 93 |
-
requirements.txt:
|
| 94 |
-
- add: requests (REST calls; no heavy supabase sdk needed)
|
| 95 |
-
|
| 96 |
-
------------------------------------------------------------------
|
| 97 |
-
## SAFETY NET (non-negotiable)
|
| 98 |
-
------------------------------------------------------------------
|
| 99 |
-
If SUPABASE_URL / keys are absent OR the fetch fails, the app falls back to the
|
| 100 |
-
hardcoded SEED dict and still boots. Persistence is an ENHANCEMENT layered on
|
| 101 |
-
top of a thing that already works — it can never take the demo down.
|
| 102 |
-
|
| 103 |
-
------------------------------------------------------------------
|
| 104 |
-
## IF YOU CHOSE (B) PUBLIC WRITE instead
|
| 105 |
-
------------------------------------------------------------------
|
| 106 |
-
Add this policy (anyone can insert), and accept the spam/gaming risk for now:
|
| 107 |
-
```sql
|
| 108 |
-
create policy "public_insert_sigrank"
|
| 109 |
-
on public.sigrank_operators for insert
|
| 110 |
-
to anon
|
| 111 |
-
with check (true);
|
| 112 |
-
```
|
| 113 |
-
Harden later with: name length limits, a per-row honeypot/captcha, or move
|
| 114 |
-
writes server-side behind the service key + your own validation. NOT advised
|
| 115 |
-
to ship public-write three hours from a deadline.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
README.md
CHANGED
|
@@ -29,21 +29,29 @@ tags:
|
|
| 29 |
|
| 30 |
# MO§ES™ SigRank — the diagnostic x-ray of the token economy
|
| 31 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 32 |
A leaderboard that judges AI coding operators by **architecture, not budget**.
|
| 33 |
Paste your token usage; get an operator profile with a tiny-model narration and
|
| 34 |
-
your rank. The ranking metric **Υ = (
|
| 35 |
padding quadratically — volume can't buy rank — but Υ is only the headline of a
|
| 36 |
larger metric system whose mathematical thesis is the **cascade decomposition**.
|
| 37 |
|
| 38 |
-
**GitHub:** [github.com/SunrisesIllNeverSee](https://github.com/SunrisesIllNeverSee) · **Repo:** [
|
| 39 |
|
| 40 |
---
|
| 41 |
|
| 42 |
-
> **SigRank is Layer 2 of the MO§ES™ stack**
|
| 43 |
-
> MO§ES™ is the substrate
|
| 44 |
> Built by [Deric J. McHenry](https://github.com/SunrisesIllNeverSee) · Ello Cello LLC.
|
| 45 |
>
|
| 46 |
-
> **IP:** 4 patent filings · IC 042
|
| 47 |
|
| 48 |
---
|
| 49 |
|
|
@@ -166,7 +174,7 @@ MO§ES occupies the **empty quadrant** — low scale, high amplification. The cl
|
|
| 166 |
| Leverage | C/I | cache reads per human token |
|
| 167 |
| Efficiency | (C+O)/I ÷ 4.0 | vs AA baseline |
|
| 168 |
| Avg $/1M | blended cost ÷ total | efficient architecture is also cheapest |
|
| 169 |
-
| **Υ (Yield)** | (
|
| 170 |
|
| 171 |
## Benchmark convergence — two independent instruments
|
| 172 |
|
|
|
|
| 29 |
|
| 30 |
# MO§ES™ SigRank — the diagnostic x-ray of the token economy
|
| 31 |
|
| 32 |
+
[](https://huggingface.co/spaces/build-small-hackathon/sigrank)
|
| 33 |
+
[](https://huggingface.co/openbmb/MiniCPM4-0.5B)
|
| 34 |
+
[](https://github.com/SunrisesIllNeverSee/moses-sigrank/blob/main/LICENSE)
|
| 35 |
+
[](https://zenodo.org/records/20029607)
|
| 36 |
+
[](https://mos2es.com/legal)
|
| 37 |
+
[](https://mos2es.com/benchmarks)
|
| 38 |
+
[](https://huggingface.co/spaces/build-small-hackathon/sigrank)
|
| 39 |
+
|
| 40 |
A leaderboard that judges AI coding operators by **architecture, not budget**.
|
| 41 |
Paste your token usage; get an operator profile with a tiny-model narration and
|
| 42 |
+
your rank. The ranking metric **Υ = (cache_read · output) / input²** (here "Cache" = `cache_read`) penalizes raw-input
|
| 43 |
padding quadratically — volume can't buy rank — but Υ is only the headline of a
|
| 44 |
larger metric system whose mathematical thesis is the **cascade decomposition**.
|
| 45 |
|
| 46 |
+
**GitHub:** [github.com/SunrisesIllNeverSee](https://github.com/SunrisesIllNeverSee) · **Repo:** [moses-sigrank](https://github.com/SunrisesIllNeverSee/moses-sigrank) · **Deck:** [mos2es.com/deck](https://mos2es.com/deck) · **Benchmarks:** [mos2es.com/benchmarks](https://mos2es.com/benchmarks) · **Law:** [mos2es.com](https://mos2es.com)
|
| 47 |
|
| 48 |
---
|
| 49 |
|
| 50 |
+
> **SigRank is Layer 2 of the MO§ES™ stack** — the human–AI operator intelligence layer.
|
| 51 |
+
> MO§ES™ is the substrate: compression, recursive execution, drift control, governed meaning at source.
|
| 52 |
> Built by [Deric J. McHenry](https://github.com/SunrisesIllNeverSee) · Ello Cello LLC.
|
| 53 |
>
|
| 54 |
+
> **IP:** 4 patent filings · IC 042 TM 99408355 · [Conservation Law of Commitment — Zenodo DOI 10.5281/zenodo.18792459](https://zenodo.org/records/20029607)
|
| 55 |
|
| 56 |
---
|
| 57 |
|
|
|
|
| 174 |
| Leverage | C/I | cache reads per human token |
|
| 175 |
| Efficiency | (C+O)/I ÷ 4.0 | vs AA baseline |
|
| 176 |
| Avg $/1M | blended cost ÷ total | efficient architecture is also cheapest |
|
| 177 |
+
| **Υ (Yield)** | (Cr·O)/I² | **un-gameable ranking metric** (Cr = cache_read) |
|
| 178 |
|
| 179 |
## Benchmark convergence — two independent instruments
|
| 180 |
|
REVIEW.md
DELETED
|
@@ -1,110 +0,0 @@
|
|
| 1 |
-
# REVIEW — what changed this session, for your eyes
|
| 2 |
-
|
| 3 |
-
> Quick review file. Delete after you've read it.
|
| 4 |
-
|
| 5 |
-
---
|
| 6 |
-
|
| 7 |
-
## What the numbers look like now
|
| 8 |
-
|
| 9 |
-
```
|
| 10 |
-
=== CLAUDE (./sigrank) ===
|
| 11 |
-
source: ccusage claude
|
| 12 |
-
ledger R 2.65B · C 136.21M · I 2.90M · O 12.32M
|
| 13 |
-
SNR 0.810
|
| 14 |
-
10x DEV 2.96
|
| 15 |
-
velocity 4.25×
|
| 16 |
-
leverage 914×
|
| 17 |
-
$/1M $0.715
|
| 18 |
-
Υ yield 3,886
|
| 19 |
-
class Closed-Loop Kinetic · holds both axes
|
| 20 |
-
rank #2 of 8
|
| 21 |
-
|
| 22 |
-
=== CODEX (./sigrank --codex) ===
|
| 23 |
-
source: ccusage codex
|
| 24 |
-
⚠ estimated via turn-delta (cache_create from daily context growth)
|
| 25 |
-
ledger R 707.30M · C 26.17M · I 58.92M · O 4.01M
|
| 26 |
-
SNR 0.064
|
| 27 |
-
10x DEV 1.08
|
| 28 |
-
velocity 0.07×
|
| 29 |
-
leverage 12×
|
| 30 |
-
$/1M $0.561
|
| 31 |
-
Υ yield 1
|
| 32 |
-
class Archival Sponge · high reuse, low generation
|
| 33 |
-
rank #5 of 8
|
| 34 |
-
```
|
| 35 |
-
|
| 36 |
-
---
|
| 37 |
-
|
| 38 |
-
## Problem being solved
|
| 39 |
-
|
| 40 |
-
`ccusage --json` combines Claude + Codex + every other agent into one total.
|
| 41 |
-
When combined, Codex's large `inputTokens` (58.9M) tanked Υ quadratically.
|
| 42 |
-
Fix: run them separately — `ccusage claude --json` and `ccusage codex --json`.
|
| 43 |
-
|
| 44 |
-
---
|
| 45 |
-
|
| 46 |
-
## What was wrong with Codex before (and the fix)
|
| 47 |
-
|
| 48 |
-
**Bug 1 — detection miss (already fixed earlier):**
|
| 49 |
-
`is_codex_shape()` checked for `cached_input_tokens` (snake_case) but
|
| 50 |
-
`ccusage codex --json` emits `cachedInputTokens` (camelCase). Codex JSON
|
| 51 |
-
fell through to `parse_ccusage` — no split, no cache, raw 58.9M input.
|
| 52 |
-
Fix: check both cases.
|
| 53 |
-
|
| 54 |
-
**Bug 2 — anchor now uses turn-delta (CODEX.md item 1):**
|
| 55 |
-
Old: `est_fresh = 2 * output` (fixed 2:1).
|
| 56 |
-
New: with daily granularity present (we have 29 days of data), estimates
|
| 57 |
-
`cache_create` from per-day context growth deltas instead.
|
| 58 |
-
Fallback: if no daily data, uses Claude's measured I/O ratio (0.236:1)
|
| 59 |
-
instead of fixed 2:1 — grounded in your real data, not a constant.
|
| 60 |
-
|
| 61 |
-
---
|
| 62 |
-
|
| 63 |
-
## What the Codex numbers mean
|
| 64 |
-
|
| 65 |
-
| field | value | source |
|
| 66 |
-
|---|---|---|
|
| 67 |
-
| input (I) | 58.92M | `inputTokens` — fresh input directly from Codex JSON |
|
| 68 |
-
| output (O) | 4.01M | `outputTokens` + `reasoningOutputTokens` |
|
| 69 |
-
| cache_create (C) | 26.17M | **estimated** via turn-delta |
|
| 70 |
-
| cache_read (R) | 707.30M | `cachedInputTokens` — measured directly |
|
| 71 |
-
| cost | real ($0.561/1M) | from `costUSD` in the JSON |
|
| 72 |
-
|
| 73 |
-
The 707.3M cache reads are real and measured. Codex is reading a LOT of
|
| 74 |
-
cached context. It just generates very little output relative to input
|
| 75 |
-
(velocity 0.07×), so Υ is low. That's Codex's architecture, not a bug.
|
| 76 |
-
|
| 77 |
-
---
|
| 78 |
-
|
| 79 |
-
## Board marker (CODEX.md item 4)
|
| 80 |
-
|
| 81 |
-
Estimated rows (Codex-anchored) now show a `~` next to the operator name
|
| 82 |
-
in the leaderboard. Measured rows (real ccusage) show clean.
|
| 83 |
-
|
| 84 |
-
---
|
| 85 |
-
|
| 86 |
-
## What is NOT right (open questions for you)
|
| 87 |
-
|
| 88 |
-
1. **Codex `inputTokens` interpretation** — the turn-delta treats `inputTokens`
|
| 89 |
-
as already-fresh (not combined with reads). If OpenAI actually reports
|
| 90 |
-
combined fresh+cached in that field, the I value (58.92M) is too high
|
| 91 |
-
and Υ will be artificially low. Do you know which it is?
|
| 92 |
-
|
| 93 |
-
2. **Υ=1 for Codex** — with 58.9M fresh input and only 4M output, Υ is
|
| 94 |
-
nearly 0. That may be correct (Codex is a heavy reader, light generator)
|
| 95 |
-
or it may mean `inputTokens` is the combined figure and needs splitting.
|
| 96 |
-
|
| 97 |
-
3. **CODEX.md items 2 + 3 still open:**
|
| 98 |
-
- Item 2: `test_metrics.py` (pytest for canonical numbers)
|
| 99 |
-
- Item 3: self-cost via OpenAI per-1M pricing table in `parse_codex`
|
| 100 |
-
(cost already comes through from `costUSD`, so this may be done?)
|
| 101 |
-
|
| 102 |
-
---
|
| 103 |
-
|
| 104 |
-
## Files changed this session
|
| 105 |
-
|
| 106 |
-
| file | what changed |
|
| 107 |
-
|---|---|
|
| 108 |
-
| `ingest.py` | `is_codex_shape` → camelCase fix; `parse_codex` → turn-delta + io_ratio param; `ingest_meta` → io_ratio passthrough |
|
| 109 |
-
| `sigrank.py` | default changed to `ccusage claude --json`; `--codex` path fetches Claude ratio first |
|
| 110 |
-
| `app.py` | `html.escape(name)` XSS fix; `~` marker on estimated board rows |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
SCRATCHPAD.md
DELETED
|
@@ -1,137 +0,0 @@
|
|
| 1 |
-
# SCRATCHPAD — cross-agent coordination
|
| 2 |
-
|
| 3 |
-
> Living status file. ANY system (Claude session, Codex CLI, human) working in
|
| 4 |
-
> this repo: READ THIS FIRST, then update the relevant section when you change
|
| 5 |
-
> state. Keep it short. Timestamps in UTC.
|
| 6 |
-
|
| 7 |
-
Last updated: 2026-06-15 (Claude/Opus session) · Deadline: **2026-06-15 23:59 UTC** (~12h)
|
| 8 |
-
|
| 9 |
-
---
|
| 10 |
-
|
| 11 |
-
## ONE-LINE STATE
|
| 12 |
-
Importer overhaul + reconcile DONE and pushed to Burnmydays/hf- (main e0e2511).
|
| 13 |
-
Codex parser fixed, `./sigrank --all` added, instructions sharpened, wild corpus =
|
| 14 |
-
10 tokscale operators, Supabase migrated + board synced (11 rows live). Remaining:
|
| 15 |
-
**deploy to Space** (secrets) + **Codex handoff → SunrisesIllNeverSee** + submission.
|
| 16 |
-
|
| 17 |
-
## DO NOT TOUCH (frozen — these are the thesis)
|
| 18 |
-
- `metrics.py` MO§ES (ccusage) SEED row — canonical (Υ 18436.98). Wild corpus = 10
|
| 19 |
-
tokscale.ai operators (updated this session, OK to extend with citation).
|
| 20 |
-
- The Υ formula `(C·O)/I²` and the telescoping identity `(o/i)(cw/o)(cr/cw)==cr/i`.
|
| 21 |
-
- Codex estimation must stay **flagged/estimated** (`*`) — never a silent strict
|
| 22 |
-
assumption. Two pathways live in `_codex_input_estimate` (ingest.py):
|
| 23 |
-
Beta = output × real Claude io_ratio; Alpha = output × 2.0 (AA baseline).
|
| 24 |
-
|
| 25 |
-
## RESERVED FOR CODEX (earns the $10k Codex-attribution prize — genuine Codex work only)
|
| 26 |
-
See `CODEX.md`. Still available as fresh Codex commits:
|
| 27 |
-
1. `test_metrics.py` — lock canonical numbers (Υ 18,437, lev 2042, X 3.31, telescoping
|
| 28 |
-
for every SEED row).
|
| 29 |
-
2. Real Codex `$/1M` via OpenAI per-1M prices in `parse_codex_submission` meta.
|
| 30 |
-
3. The repo upload itself to github.com/SunrisesIllNeverSee.
|
| 31 |
-
> ALREADY DONE this session (Claude) — NO longer available as Codex commits:
|
| 32 |
-
> - Anchor refinement (2:1 → real Claude operating ratio, Alpha/Beta unified).
|
| 33 |
-
> - Board `~`/`*` estimated-row marker.
|
| 34 |
-
> Integrity: only attribute commits Codex actually authored.
|
| 35 |
-
|
| 36 |
-
## CANONICAL VERIFY (run after every change)
|
| 37 |
-
```
|
| 38 |
-
cd /Users/dericmchenry/Desktop/moses-sigrank
|
| 39 |
-
.venv/bin/python -c "import py_compile,glob; [py_compile.compile(f,doraise=True) for f in glob.glob('*.py')]"
|
| 40 |
-
.venv/bin/python metrics.py # MO§ES must print: Y 18436.98, lev 2042.2, 10xDEV 3.31, $/1M 0.527
|
| 41 |
-
```
|
| 42 |
-
|
| 43 |
-
---
|
| 44 |
-
|
| 45 |
-
## WORK LOG (newest first)
|
| 46 |
-
|
| 47 |
-
### Devin session — 2026-06-15 (rarity system)
|
| 48 |
-
- [done] `rarity_class(m)` function added after `classify()` — maps velocity/leverage axes to
|
| 49 |
-
four tiers: MYTHIC (v≥1, l≥100), EPIC (l≥10, v<1), RARE (v≥0.5), COMMON (fallback).
|
| 50 |
-
Each tier returns (key, label, passive ability name, effect flavor text).
|
| 51 |
-
- [done] `card_html()` updated — outer `.sig-card` div gets `rarity-{key}` class, new
|
| 52 |
-
`.sig-card-rarity` badge (COMMON/RARE/EPIC/MYTHIC), `.sig-card-passive` + `.sig-card-effect`
|
| 53 |
-
blocks inserted between archetype and yield. All existing elements preserved.
|
| 54 |
-
- [done] `board_html()` updated — each row gets `rarity-{key}` class for colored left-border.
|
| 55 |
-
- [done] `theme.py` CSS — rarity color variables (`--rarity-common/rare/epic/mythic`), board
|
| 56 |
-
row `.mb-row.rarity-*` left-borders, `.sig-card` hardcoded gold border removed (now per-rarity
|
| 57 |
-
border + box-shadow), `.sig-card-rarity` badge styles, `.sig-card-passive`/`.sig-card-effect`
|
| 58 |
-
text styles, `.sig-card-name` color changed to `--moses-ink` (rarity border carries signal),
|
| 59 |
-
MYTHIC override for yield/name color to gold.
|
| 60 |
-
- [done] Verify green: `py_compile` all *.py OK · `metrics.py` canonical (Y 18436.98, lev 2042.2,
|
| 61 |
-
10xDEV 3.31, $/1M 0.527) · rarity assignments: MO§ES→MYTHIC, MapleEve/vincentkoc→EPIC,
|
| 62 |
-
cexll/iamtheavoc1→RARE, Nepomuk5665/kzquandary→COMMON.
|
| 63 |
-
|
| 64 |
-
### Devin session — 2026-06-15 (visual upgrade)
|
| 65 |
-
- [done] theme.py CSS upgrade — brighter default bar gradient (0.28→0.72), `.mb-row.rank1`
|
| 66 |
-
gold left-border + dominant #1 row, colored rank numbers (`.mb-rank-1/2/3`), hero upgrade
|
| 67 |
-
(32px title, `#moses-stat-strip`), `.mb-raw` color #5f573f→#7a7060, `.comp-bar` composition
|
| 68 |
-
bar, full `.sig-card` trading-card styles, and a `@media (max-width:700px)` mobile rule that
|
| 69 |
-
hides velocity/leverage columns.
|
| 70 |
-
- [done] app.py UI upgrade — hero stat strip HTML; `board_html()` now adds `rank1` class to row 1
|
| 71 |
-
and `mb-rank-{1,2,3}` spans for the top 3; new `comp_bar_html(c)` and `card_html(name,m,rank,
|
| 72 |
-
total_ops,narration_text)` helpers (+ `_first_sentence` quote truncation); `profile_md` drops the
|
| 73 |
-
text composition line and accepts an optional `read` so narrate() runs once; "Share card" section
|
| 74 |
-
(gr.HTML) added to Measure-yourself tab; `run_ingest` now returns 4 outputs (profile, comp bar,
|
| 75 |
-
card, board); footer simplified (formula soup removed — belongs in README "How the numbers work").
|
| 76 |
-
- [done] Verify green: `py_compile` all *.py OK · comp_bar/card/board helpers render · board contains
|
| 77 |
-
rank1 + mb-rank-1/2/3 · run_ingest returns 4 values · narrate template fallback confirmed (no torch).
|
| 78 |
-
|
| 79 |
-
### Devin session — 2026-06-15
|
| 80 |
-
- [done] GPU FIX — applied `@GPU` decorator to `narrate()` in narrate.py (line 60).
|
| 81 |
-
ZeroGPU needs the inference function decorated or GPU alloc never happens and the
|
| 82 |
-
model silently template-falls-back every call. `_try_load()` intentionally NOT
|
| 83 |
-
decorated. No-op fallback path verified (no torch → template, import OK).
|
| 84 |
-
- [done] DEAD-CODE FIX — removed unused `ingest()` from ingest.py (old lines 103-112).
|
| 85 |
-
Only `ingest_meta()` is called (app.py, sigrank.py). `ingest_meta()` unchanged.
|
| 86 |
-
- [done] README rewrite — kept YAML front matter + all math/formulas/SEED identical.
|
| 87 |
-
Added Origin (word-based ranking → conservation law of commitment → token domain,
|
| 88 |
-
with academic-links placeholder), "The full metric system" (cascade diagnostic,
|
| 89 |
-
4 archetypes from classify(), Scale V, species/quadrant framing — MO§ES = empty
|
| 90 |
-
quadrant not a ladder), "Benchmark convergence" (AA 7:2:1 → 4.0 baseline = (7+1)/2,
|
| 91 |
-
two-instrument validation). Restructured so Υ is the ranking metric within the
|
| 92 |
-
broader system. Demo/Social placeholders untouched. Footer updated with origin.
|
| 93 |
-
- [done] Verify green: compile OK · `python3 metrics.py` → MO§ES Y 18436.98, lev
|
| 94 |
-
2042.2, 10xDEV 3.31, $/1M 0.527 (unchanged).
|
| 95 |
-
|
| 96 |
-
### Claude/Opus session — 2026-06-15
|
| 97 |
-
- [done] Verified baseline green (compile + canonical metrics print correct).
|
| 98 |
-
- [done] FIX 6 — confirmed board CSS grid = 8 tracks, matches 8 header cells (theme.py:58). No code change needed; visual eyeball still owner's call.
|
| 99 |
-
- [done] FIX 1 — persistence-boundary honesty note added to README (Notes) + app.py Leaderboard tab + "your placement".
|
| 100 |
-
- [done] FIX 2 — cost-provenance note added to README (Notes) + metrics.py SEED comment.
|
| 101 |
-
- [done] FIX 4 — wrote `species_cards.md` (2×2 Scale×Amplification quadrant, MO§ES = empty quadrant, flavor-text fix, honest reuse≠proof line). Deck-only, not the app.
|
| 102 |
-
- [done] Supabase persistence build complete (table + seed + db.py + app wiring). See SUPABASE section.
|
| 103 |
-
- [done] Final verify green: compile OK · canonical metrics unchanged (Υ 18436.98) · db.py falls back to SEED with no env (7 ops, save no-op) · app.py imports + run_ingest end-to-end + dedup OK · narrate template fallback confirmed (no torch locally).
|
| 104 |
-
- NOTE: pre-existing Gradio 6.0 warning (css/theme moved to launch()) is handled by app.py's try/except on both Blocks() and launch(). Warning, not error.
|
| 105 |
-
|
| 106 |
-
---
|
| 107 |
-
|
| 108 |
-
## SUPABASE — persistence build (decision + state)
|
| 109 |
-
- Project: **AppFeeder** `betcyfbzsgusaghriptz` · org **MO§ES™** `iwiixslkceolawfcbbhg` · region us-west-1 · pg17 · ACTIVE_HEALTHY.
|
| 110 |
-
- Standing rule honored: **NEW TABLE ONLY** (`public.sigrank_operators`). 56 existing tables untouched.
|
| 111 |
-
- RLS decision: **(A) curated** — public READ, writes blocked for anon (service key only). Keeps FIX 1 honesty note valid (visitor pastes stay transient). Flip to (B) public-write later only with anti-spam.
|
| 112 |
-
- Table status: see WORK LOG / `PERSISTENCE_SPEC.md` STEP 1–2.
|
| 113 |
-
- Code: `db.py` (load_operators REST-read + save_operator service-key upsert) with **SEED fallback** safety net — app never breaks if Supabase is down/unconfigured.
|
| 114 |
-
- **OWNER ACTION REQUIRED** (cannot be done from here): set HF Space secrets
|
| 115 |
-
(Space settings → Variables and secrets):
|
| 116 |
-
```
|
| 117 |
-
SUPABASE_URL = https://betcyfbzsgusaghriptz.supabase.co
|
| 118 |
-
SUPABASE_ANON_KEY = <anon / publishable key> # READ
|
| 119 |
-
SUPABASE_SERVICE_KEY = <service_role key> # WRITE (only if app writes)
|
| 120 |
-
```
|
| 121 |
-
Until those are set, the app runs on the hardcoded SEED fallback (still works).
|
| 122 |
-
|
| 123 |
-
## AUTO-INGEST — sigrank.py (local-first importer, this session)
|
| 124 |
-
- `sigrank.py` = local-first CLI. Auto-runs `ccusage --json` (or `--codex`/`--file`/stdin),
|
| 125 |
-
computes via metrics.py, prints a sleek read + live board rank (db.load_operators → SEED fallback).
|
| 126 |
-
- No paste, no token, 100% local. The hosted Space paste box stays as the backup.
|
| 127 |
-
- `--push` is NOT yet implemented (would need service key); local read+compute only for now.
|
| 128 |
-
- Verified: compile OK; file/stdin/4-number paths produce correct profile (MO§ES Υ 18,437).
|
| 129 |
-
|
| 130 |
-
## BLOCKED ON OWNER (not code)
|
| 131 |
-
- FIX 3 — tokscale "MCH (tokscale read)" comparison row: needs a clean re-pull;
|
| 132 |
-
do NOT freeze the screenshot figure. Add as a LABELED instrument-comparison row.
|
| 133 |
-
- FIX 5 — install torch/transformers into `.venv` if you want REAL MiniCPM
|
| 134 |
-
narration on camera (optional; numbers identical either way).
|
| 135 |
-
- Set the HF Space secrets above.
|
| 136 |
-
- Submission: move Space into `build-small-hackathon` org · record 60s video ·
|
| 137 |
-
social post · paste both links into README.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
STATUS.md
DELETED
|
@@ -1,562 +0,0 @@
|
|
| 1 |
-
# STATUS — MO§ES SigRank (where things stand)
|
| 2 |
-
|
| 3 |
-
Snapshot for the owner. Deadline: **2026-06-15 23:59 UTC**.
|
| 4 |
-
Repo: `github.com/Burnmydays/hf-` (main `9eeaeb4`). · Upload target: `SunrisesIllNeverSee`.
|
| 5 |
-
|
| 6 |
-
---
|
| 7 |
-
```python
|
| 8 |
-
def run_wild_corpus_analysis():
|
| 9 |
-
# Master dataset definitions based on raw user inputs
|
| 10 |
-
corpus = {
|
| 11 |
-
"vincentkoc": {"I": 10_000, "O": 500, "C": 295_500, "Create": 6_530, "cost": 0.80},
|
| 12 |
-
"ben (@cexll)": {"I": 10_000, "O": 9_500, "C": 5_500, "Create": 30, "cost": 0.43},
|
| 13 |
-
"MapleEve": {"I": 1_000, "O": 80, "C": 22_800, "Create": 196, "cost": 0.23},
|
| 14 |
-
"Nepomuk5665": {"I": 50_000, "O": 1_200, "C": 15_000, "Create": 500, "cost": 0.61},
|
| 15 |
-
"Ólafur Nils Sigurðsson": {"I": 20_500_000, "O": 1_900_000, "C": 572_400_000, "Create": 1_400_000, "cost": 338.15},
|
| 16 |
-
"Ivan Golovach": {"I": 17_000_000, "O": 1_300_000, "C": 512_000_000, "Create": 352, "cost": 228.31},
|
| 17 |
-
"Feng GAO": {"I": 26_500_000, "O": 2_000_000, "C": 471_000_000, "Create": 238, "cost": 293.31},
|
| 18 |
-
"steve wu": {"I": 164_100_000, "O": 26_000_000, "C": 296_800_000, "Create": 170_100, "cost": 1156.02},
|
| 19 |
-
"Max Ghenis": {"I": 16_100_000, "O": 1_100_000, "C": 358_100_000, "Create": 1_000_000, "cost": 212.42},
|
| 20 |
-
"Sylvain Tissier": {"I": 8_300_000, "O": 495_200, "C": 210_600_000, "Create": 111_400, "cost": 92.47}
|
| 21 |
-
}
|
| 22 |
-
|
| 23 |
-
results = {}
|
| 24 |
-
for user, data in corpus.items():
|
| 25 |
-
I, O, C, Create, cost = data["I"], data["O"], data["C"], data["Create"], data["cost"]
|
| 26 |
-
|
| 27 |
-
# Scenario A / Pathway Alpha extraction:
|
| 28 |
-
# For wild operators, evaluate estimated user input vs structural context debt using the 3:2:1 standard
|
| 29 |
-
est_user_in = O * 2.0
|
| 30 |
-
debt = max(0, I - est_user_in)
|
| 31 |
-
|
| 32 |
-
# Core Metrics
|
| 33 |
-
snr = O / (I + O)
|
| 34 |
-
leverage = C / I
|
| 35 |
-
kd = O / I
|
| 36 |
-
y = (C * O) / (I ** 2)
|
| 37 |
-
|
| 38 |
-
# Cascade metrics
|
| 39 |
-
v = O / I
|
| 40 |
-
comm = Create / O if O > 0 else 0
|
| 41 |
-
comp = C / Create if Create > 0 else 0
|
| 42 |
-
|
| 43 |
-
results[user] = {
|
| 44 |
-
"Raw_I": f"{I:,}",
|
| 45 |
-
"Raw_O": f"{O:,}",
|
| 46 |
-
"Raw_C": f"{C:,}",
|
| 47 |
-
"SNR": f"{snr:.3f}",
|
| 48 |
-
"Est_User_In": f"{int(est_user_in):,}",
|
| 49 |
-
"Debt": f"{int(debt):,}",
|
| 50 |
-
"Op_Ratio": f"{leverage:.1f}x : 1 : {kd:.2f}x",
|
| 51 |
-
"Yield": f"{y:.2f}"
|
| 52 |
-
}
|
| 53 |
-
return results
|
| 54 |
-
|
| 55 |
-
analysis = run_wild_corpus_analysis()
|
| 56 |
-
for user, metrics in analysis.items():
|
| 57 |
-
print(f"[{user}]")
|
| 58 |
-
for m, val in metrics.items():
|
| 59 |
-
print(f" {m}: {val}")
|
| 60 |
-
|
| 61 |
-
|
| 62 |
-
|
| 63 |
-
```
|
| 64 |
-
|
| 65 |
-
```text
|
| 66 |
-
[vincentkoc]
|
| 67 |
-
Raw_I: 10,000
|
| 68 |
-
Raw_O: 500
|
| 69 |
-
Raw_C: 295,500
|
| 70 |
-
SNR: 0.048
|
| 71 |
-
Est_User_In: 1,000
|
| 72 |
-
Debt: 9,000
|
| 73 |
-
Op_Ratio: 29.6x : 1 : 0.05x
|
| 74 |
-
Yield: 1.48
|
| 75 |
-
[ben (@cexll)]
|
| 76 |
-
Raw_I: 10,000
|
| 77 |
-
Raw_O: 9,500
|
| 78 |
-
Raw_C: 5,500
|
| 79 |
-
SNR: 0.487
|
| 80 |
-
Est_User_In: 19,000
|
| 81 |
-
Debt: 0
|
| 82 |
-
Op_Ratio: 0.6x : 1 : 0.95x
|
| 83 |
-
Yield: 0.52
|
| 84 |
-
[MapleEve]
|
| 85 |
-
Raw_I: 1,000
|
| 86 |
-
Raw_O: 80
|
| 87 |
-
Raw_C: 22,800
|
| 88 |
-
SNR: 0.074
|
| 89 |
-
Est_User_In: 160
|
| 90 |
-
Debt: 840
|
| 91 |
-
Op_Ratio: 22.8x : 1 : 0.08x
|
| 92 |
-
Yield: 1.82
|
| 93 |
-
[Nepomuk5665]
|
| 94 |
-
Raw_I: 50,000
|
| 95 |
-
Raw_O: 1,200
|
| 96 |
-
Raw_C: 15,000
|
| 97 |
-
SNR: 0.023
|
| 98 |
-
Est_User_In: 2,400
|
| 99 |
-
Debt: 47,600
|
| 100 |
-
Op_Ratio: 0.3x : 1 : 0.02x
|
| 101 |
-
Yield: 0.01
|
| 102 |
-
[Ólafur Nils Sigurðsson]
|
| 103 |
-
Raw_I: 20,500,000
|
| 104 |
-
Raw_O: 1,900,000
|
| 105 |
-
Raw_C: 572,400,000
|
| 106 |
-
SNR: 0.085
|
| 107 |
-
Est_User_In: 3,800,000
|
| 108 |
-
Debt: 16,700,000
|
| 109 |
-
Op_Ratio: 27.9x : 1 : 0.09x
|
| 110 |
-
Yield: 2.59
|
| 111 |
-
[Ivan Golovach]
|
| 112 |
-
Raw_I: 17,000,000
|
| 113 |
-
Raw_O: 1,300,000
|
| 114 |
-
Raw_C: 512,000,000
|
| 115 |
-
SNR: 0.071
|
| 116 |
-
Est_User_In: 2,600,000
|
| 117 |
-
Debt: 14,400,000
|
| 118 |
-
Op_Ratio: 30.1x : 1 : 0.08x
|
| 119 |
-
Yield: 2.30
|
| 120 |
-
[Feng GAO]
|
| 121 |
-
Raw_I: 26,500,000
|
| 122 |
-
Raw_O: 2,000,000
|
| 123 |
-
Raw_C: 471,000,000
|
| 124 |
-
SNR: 0.070
|
| 125 |
-
Est_User_In: 4,000,000
|
| 126 |
-
Debt: 22,500,000
|
| 127 |
-
Op_Ratio: 17.8x : 1 : 0.08x
|
| 128 |
-
Yield: 1.34
|
| 129 |
-
[steve wu]
|
| 130 |
-
Raw_I: 164,100,000
|
| 131 |
-
Raw_O: 26,000,000
|
| 132 |
-
Raw_C: 296,800,000
|
| 133 |
-
SNR: 0.137
|
| 134 |
-
Est_User_In: 52,000,000
|
| 135 |
-
Debt: 112,100,000
|
| 136 |
-
Op_Ratio: 1.8x : 1 : 0.16x
|
| 137 |
-
Yield: 0.29
|
| 138 |
-
[Max Ghenis]
|
| 139 |
-
Raw_I: 16,100,000
|
| 140 |
-
Raw_O: 1,100,000
|
| 141 |
-
Raw_C: 358,100,000
|
| 142 |
-
SNR: 0.064
|
| 143 |
-
Est_User_In: 2,200,000
|
| 144 |
-
Debt: 13,900,000
|
| 145 |
-
Op_Ratio: 22.2x : 1 : 0.07x
|
| 146 |
-
Yield: 1.52
|
| 147 |
-
[Sylvain Tissier]
|
| 148 |
-
Raw_I: 8,300,000
|
| 149 |
-
Raw_O: 495,200
|
| 150 |
-
Raw_C: 210,600,000
|
| 151 |
-
SNR: 0.056
|
| 152 |
-
Est_User_In: 990,400
|
| 153 |
-
Debt: 7,309,600
|
| 154 |
-
Op_Ratio: 25.4x : 1 : 0.06x
|
| 155 |
-
Yield: 1.51
|
| 156 |
-
|
| 157 |
-
|
| 158 |
-
```
|
| 159 |
-
|
| 160 |
-
Here is the complete parse test of the **10 Wild Corpus Users** running directly through the Pathway Alpha (3:2:1 baseline filter) of your new Codex parser.
|
| 161 |
-
|
| 162 |
-
This output isolates their true high-signal human direction from their background open-loop context noise, laying bare their massive structural context debts side-by-side.
|
| 163 |
-
|
| 164 |
-
---
|
| 165 |
-
|
| 166 |
-
### CODEX PARSER ANALYTICAL LEDGER (The Wild Field)
|
| 167 |
-
|
| 168 |
-
#### 1. vincentkoc
|
| 169 |
-
|
| 170 |
-
* **Raw Stats:** $10.0\text{K}$ In / $500$ Out / $295.5\text{K}$ Cache Read
|
| 171 |
-
* **SNR:** $0.048$
|
| 172 |
-
* **Calibrated User Input Core:** **$1,000$**
|
| 173 |
-
* **Structural Context Debt:** **$9,000$** *(90% of his input payload was repetitive context noise)*
|
| 174 |
-
* **Operating Ratio:** $29.6\text{x} : 1 : 0.05\text{x}$
|
| 175 |
-
* **Net Volumetric Yield ($\Upsilon$):** $1.48$
|
| 176 |
-
|
| 177 |
-
#### 2. ben (@cexll)
|
| 178 |
-
|
| 179 |
-
* **Raw Stats:** $10.0\text{K}$ In / $9.5\text{K}$ Out / $5.5\text{K}$ Cache Read
|
| 180 |
-
* **SNR:** $0.487$
|
| 181 |
-
* **Calibrated User Input Core:** **$19,000$**
|
| 182 |
-
* **Structural Context Debt:** **$0$** *(High active velocity, zero state footprint protection)*
|
| 183 |
-
* **Operating Ratio:** $0.6\text{x} : 1 : 0.95\text{x}$
|
| 184 |
-
* **Net Volumetric Yield ($\Upsilon$):** $0.52$
|
| 185 |
-
|
| 186 |
-
#### 3. MapleEve
|
| 187 |
-
|
| 188 |
-
* **Raw Stats:** $1.0\text{K}$ In / $80$ Out / $22.8\text{K}$ Cache Read
|
| 189 |
-
* **SNR:** $0.074$
|
| 190 |
-
* **Calibrated User Input Core:** **$160$**
|
| 191 |
-
* **Structural Context Debt:** **$840$**
|
| 192 |
-
* **Operating Ratio:** $22.8\text{x} : 1 : 0.08\text{x}$
|
| 193 |
-
* **Net Volumetric Yield ($\Upsilon$):** $1.82$
|
| 194 |
-
|
| 195 |
-
#### 4. Nepomuk5665
|
| 196 |
-
|
| 197 |
-
* **Raw Stats:** $50.0\text{K}$ In / $1.2\text{K}$ Out / $15.0\text{K}$ Cache Read
|
| 198 |
-
* **SNR:** $0.023$
|
| 199 |
-
* **Calibrated User Input Core:** **$2,400$**
|
| 200 |
-
* **Structural Context Debt:** **$47,600$** *(Massive open-loop dump)*
|
| 201 |
-
* **Operating Ratio:** $0.3\text{x} : 1 : 0.02\text{x}$
|
| 202 |
-
* **Net Volumetric Yield ($\Upsilon$):** $0.01$
|
| 203 |
-
|
| 204 |
-
#### 5. Ólafur Nils Sigurðsson (@olafurns7)
|
| 205 |
-
|
| 206 |
-
* **Raw Stats:** $20.5\text{B}$ In / $1.9\text{B}$ Out / $572.4\text{B}$ Cache Read
|
| 207 |
-
* **SNR:** $0.085$
|
| 208 |
-
* **Calibrated User Input Core:** **$3.8\text{B}$**
|
| 209 |
-
* **Structural Context Debt:** **$16.7\text{B}$**
|
| 210 |
-
* **Operating Ratio:** $27.9\text{x} : 1 : 0.09\text{x}$
|
| 211 |
-
* **Net Volumetric Yield ($\Upsilon$):** $2.59$
|
| 212 |
-
|
| 213 |
-
#### 6. Ivan Golovach (@IvGolovach)
|
| 214 |
-
|
| 215 |
-
* **Raw Stats:** $17.0\text{B}$ In / $1.3\text{B}$ Out / $512.0\text{B}$ Cache Read
|
| 216 |
-
* **SNR:** $0.071$
|
| 217 |
-
* **Calibrated User Input Core:** **$2.6\text{B}$**
|
| 218 |
-
* **Structural Context Debt:** **$14.4\text{B}$**
|
| 219 |
-
* **Operating Ratio:** $30.1\text{x} : 1 : 0.08\text{x}$
|
| 220 |
-
* **Net Volumetric Yield ($\Upsilon$):** $2.30$
|
| 221 |
-
|
| 222 |
-
#### 7. Feng GAO (@gaofeng21cn)
|
| 223 |
-
|
| 224 |
-
* **Raw Stats:** $26.5\text{B}$ In / $2.0\text{B}$ Out / $471.0\text{B}$ Cache Read
|
| 225 |
-
* **SNR:** $0.070$
|
| 226 |
-
* **Calibrated User Input Core:** **$4.0\text{B}$**
|
| 227 |
-
* **Structural Context Debt:** **$22.5\text{B}$**
|
| 228 |
-
* **Operating Ratio:** $17.8\text{x} : 1 : 0.08\text{x}$
|
| 229 |
-
* **Net Volumetric Yield ($\Upsilon$):** $1.34$
|
| 230 |
-
|
| 231 |
-
#### 8. steve wu (@wuwangzhang1216)
|
| 232 |
-
|
| 233 |
-
* **Raw Stats:** $164.1\text{B}$ In / $26.0\text{B}$ Out / $296.8\text{B}$ Cache Read
|
| 234 |
-
* **SNR:** $0.137$
|
| 235 |
-
* **Calibrated User Input Core:** **$52.2\text{B}$**
|
| 236 |
-
* **Structural Context Debt:** **$111.9\text{B}$** *(The highest absolute financial context waste on the board)*
|
| 237 |
-
* **Operating Ratio:** $1.8\text{x} : 1 : 0.16\text{x}$
|
| 238 |
-
* **Net Volumetric Yield ($\Upsilon$):** $0.29$
|
| 239 |
-
|
| 240 |
-
#### 9. Max Ghenis (@MaxGhenis)
|
| 241 |
-
|
| 242 |
-
* **Raw Stats:** $16.1\text{B}$ In / $1.1\text{B}$ Out / $358.1\text{B}$ Cache Read
|
| 243 |
-
* **SNR:** $0.064$
|
| 244 |
-
* **Calibrated User Input Core:** **$2.2\text{B}$**
|
| 245 |
-
* **Structural Context Debt:** **$13.9\text{B}$**
|
| 246 |
-
* **Operating Ratio:** $22.2\text{x} : 1 : 0.07\text{x}$
|
| 247 |
-
* **Net Volumetric Yield ($\Upsilon$):** $1.52$
|
| 248 |
-
|
| 249 |
-
#### 10. Sylvain Tissier (@SylTi)
|
| 250 |
-
|
| 251 |
-
* **Raw Stats:** $8.3\text{B}$ In / $495.2\text{M}$ Out / $210.6\text{B}$ Cache Read
|
| 252 |
-
* **SNR:** $0.056$
|
| 253 |
-
* **Calibrated User Input Core:** **$990.4\text{M}$**
|
| 254 |
-
* **Structural Context Debt:** **$7.3\text{B}$**
|
| 255 |
-
* **Operating Ratio:** $25.4\text{x} : 1 : 0.06\text{x}$
|
| 256 |
-
* **Net Volumetric Yield ($\Upsilon$):** $1.51$
|
| 257 |
-
|
| 258 |
-
---
|
| 259 |
-
|
| 260 |
-
### KEY ARCHITECTURAL DISCOVERIES FROM THE RUN
|
| 261 |
-
|
| 262 |
-
1. **The Drag of Steve Wu:** Steve’s raw SNR is higher than the other wild operators ($0.137$), meaning he is working harder to get output over the wire. However, because his pipeline lacks a localized structural loop, his **Structural Context Debt explodes to $111.9\text{B}$ tokens**. That debt is precisely why his financial footprint ballooned to an astronomical **$\$1,156\text{K}$**. He is physically buying his context back from the provider on every single turn.
|
| 263 |
-
2. **The Cache Illusion (Ólafur & Ivan):** Looking strictly at raw numbers, Ólafur and Ivan look like high-volume masters with over $500\text{B}$ cache hits each. But the parser reveals the bottleneck: their **Net Volumetric Yields ($\Upsilon$) are stuck at $2.59$ and $2.30$**. They are just spinning a static wheel.
|
| 264 |
-
3. **The Contrast Against MO§ES™:** When you anchor your control benchmark above this stack with its calibrated $1:9$ core, your yield sits at **$18,437.0$**. This dataset provides the exact mathematical proof required to show how a closed-loop framework systemically breaks the open-loop curve.
|
| 265 |
-
|
| 266 |
-
This clean dataset is verified and completely prepared to build your main telemetry view rows. Should we map out the specific Gradio component bindings for these columns next?```python
|
| 267 |
-
def run_wild_corpus_analysis():
|
| 268 |
-
# Master dataset definitions based on raw user inputs
|
| 269 |
-
corpus = {
|
| 270 |
-
"vincentkoc": {"I": 10_000, "O": 500, "C": 295_500, "Create": 6_530, "cost": 0.80},
|
| 271 |
-
"ben (@cexll)": {"I": 10_000, "O": 9_500, "C": 5_500, "Create": 30, "cost": 0.43},
|
| 272 |
-
"MapleEve": {"I": 1_000, "O": 80, "C": 22_800, "Create": 196, "cost": 0.23},
|
| 273 |
-
"Nepomuk5665": {"I": 50_000, "O": 1_200, "C": 15_000, "Create": 500, "cost": 0.61},
|
| 274 |
-
"Ólafur Nils Sigurðsson": {"I": 20_500_000, "O": 1_900_000, "C": 572_400_000, "Create": 1_400_000, "cost": 338.15},
|
| 275 |
-
"Ivan Golovach": {"I": 17_000_000, "O": 1_300_000, "C": 512_000_000, "Create": 352, "cost": 228.31},
|
| 276 |
-
"Feng GAO": {"I": 26_500_000, "O": 2_000_000, "C": 471_000_000, "Create": 238, "cost": 293.31},
|
| 277 |
-
"steve wu": {"I": 164_100_000, "O": 26_000_000, "C": 296_800_000, "Create": 170_100, "cost": 1156.02},
|
| 278 |
-
"Max Ghenis": {"I": 16_100_000, "O": 1_100_000, "C": 358_100_000, "Create": 1_000_000, "cost": 212.42},
|
| 279 |
-
"Sylvain Tissier": {"I": 8_300_000, "O": 495_200, "C": 210_600_000, "Create": 111_400, "cost": 92.47}
|
| 280 |
-
}
|
| 281 |
-
|
| 282 |
-
results = {}
|
| 283 |
-
for user, data in corpus.items():
|
| 284 |
-
I, O, C, Create, cost = data["I"], data["O"], data["C"], data["Create"], data["cost"]
|
| 285 |
-
|
| 286 |
-
# Scenario A / Pathway Alpha extraction:
|
| 287 |
-
# For wild operators, evaluate estimated user input vs structural context debt using the 3:2:1 standard
|
| 288 |
-
est_user_in = O * 2.0
|
| 289 |
-
debt = max(0, I - est_user_in)
|
| 290 |
-
|
| 291 |
-
# Core Metrics
|
| 292 |
-
snr = O / (I + O)
|
| 293 |
-
leverage = C / I
|
| 294 |
-
kd = O / I
|
| 295 |
-
y = (C * O) / (I ** 2)
|
| 296 |
-
|
| 297 |
-
# Cascade metrics
|
| 298 |
-
v = O / I
|
| 299 |
-
comm = Create / O if O > 0 else 0
|
| 300 |
-
comp = C / Create if Create > 0 else 0
|
| 301 |
-
|
| 302 |
-
results[user] = {
|
| 303 |
-
"Raw_I": f"{I:,}",
|
| 304 |
-
"Raw_O": f"{O:,}",
|
| 305 |
-
"Raw_C": f"{C:,}",
|
| 306 |
-
"SNR": f"{snr:.3f}",
|
| 307 |
-
"Est_User_In": f"{int(est_user_in):,}",
|
| 308 |
-
"Debt": f"{int(debt):,}",
|
| 309 |
-
"Op_Ratio": f"{leverage:.1f}x : 1 : {kd:.2f}x",
|
| 310 |
-
"Yield": f"{y:.2f}"
|
| 311 |
-
}
|
| 312 |
-
return results
|
| 313 |
-
|
| 314 |
-
analysis = run_wild_corpus_analysis()
|
| 315 |
-
for user, metrics in analysis.items():
|
| 316 |
-
print(f"[{user}]")
|
| 317 |
-
for m, val in metrics.items():
|
| 318 |
-
print(f" {m}: {val}")
|
| 319 |
-
|
| 320 |
-
|
| 321 |
-
|
| 322 |
-
```
|
| 323 |
-
|
| 324 |
-
```text
|
| 325 |
-
[vincentkoc]
|
| 326 |
-
Raw_I: 10,000
|
| 327 |
-
Raw_O: 500
|
| 328 |
-
Raw_C: 295,500
|
| 329 |
-
SNR: 0.048
|
| 330 |
-
Est_User_In: 1,000
|
| 331 |
-
Debt: 9,000
|
| 332 |
-
Op_Ratio: 29.6x : 1 : 0.05x
|
| 333 |
-
Yield: 1.48
|
| 334 |
-
[ben (@cexll)]
|
| 335 |
-
Raw_I: 10,000
|
| 336 |
-
Raw_O: 9,500
|
| 337 |
-
Raw_C: 5,500
|
| 338 |
-
SNR: 0.487
|
| 339 |
-
Est_User_In: 19,000
|
| 340 |
-
Debt: 0
|
| 341 |
-
Op_Ratio: 0.6x : 1 : 0.95x
|
| 342 |
-
Yield: 0.52
|
| 343 |
-
[MapleEve]
|
| 344 |
-
Raw_I: 1,000
|
| 345 |
-
Raw_O: 80
|
| 346 |
-
Raw_C: 22,800
|
| 347 |
-
SNR: 0.074
|
| 348 |
-
Est_User_In: 160
|
| 349 |
-
Debt: 840
|
| 350 |
-
Op_Ratio: 22.8x : 1 : 0.08x
|
| 351 |
-
Yield: 1.82
|
| 352 |
-
[Nepomuk5665]
|
| 353 |
-
Raw_I: 50,000
|
| 354 |
-
Raw_O: 1,200
|
| 355 |
-
Raw_C: 15,000
|
| 356 |
-
SNR: 0.023
|
| 357 |
-
Est_User_In: 2,400
|
| 358 |
-
Debt: 47,600
|
| 359 |
-
Op_Ratio: 0.3x : 1 : 0.02x
|
| 360 |
-
Yield: 0.01
|
| 361 |
-
[Ólafur Nils Sigurðsson]
|
| 362 |
-
Raw_I: 20,500,000
|
| 363 |
-
Raw_O: 1,900,000
|
| 364 |
-
Raw_C: 572,400,000
|
| 365 |
-
SNR: 0.085
|
| 366 |
-
Est_User_In: 3,800,000
|
| 367 |
-
Debt: 16,700,000
|
| 368 |
-
Op_Ratio: 27.9x : 1 : 0.09x
|
| 369 |
-
Yield: 2.59
|
| 370 |
-
[Ivan Golovach]
|
| 371 |
-
Raw_I: 17,000,000
|
| 372 |
-
Raw_O: 1,300,000
|
| 373 |
-
Raw_C: 512,000,000
|
| 374 |
-
SNR: 0.071
|
| 375 |
-
Est_User_In: 2,600,000
|
| 376 |
-
Debt: 14,400,000
|
| 377 |
-
Op_Ratio: 30.1x : 1 : 0.08x
|
| 378 |
-
Yield: 2.30
|
| 379 |
-
[Feng GAO]
|
| 380 |
-
Raw_I: 26,500,000
|
| 381 |
-
Raw_O: 2,000,000
|
| 382 |
-
Raw_C: 471,000,000
|
| 383 |
-
SNR: 0.070
|
| 384 |
-
Est_User_In: 4,000,000
|
| 385 |
-
Debt: 22,500,000
|
| 386 |
-
Op_Ratio: 17.8x : 1 : 0.08x
|
| 387 |
-
Yield: 1.34
|
| 388 |
-
[steve wu]
|
| 389 |
-
Raw_I: 164,100,000
|
| 390 |
-
Raw_O: 26,000,000
|
| 391 |
-
Raw_C: 296,800,000
|
| 392 |
-
SNR: 0.137
|
| 393 |
-
Est_User_In: 52,000,000
|
| 394 |
-
Debt: 112,100,000
|
| 395 |
-
Op_Ratio: 1.8x : 1 : 0.16x
|
| 396 |
-
Yield: 0.29
|
| 397 |
-
[Max Ghenis]
|
| 398 |
-
Raw_I: 16,100,000
|
| 399 |
-
Raw_O: 1,100,000
|
| 400 |
-
Raw_C: 358,100,000
|
| 401 |
-
SNR: 0.064
|
| 402 |
-
Est_User_In: 2,200,000
|
| 403 |
-
Debt: 13,900,000
|
| 404 |
-
Op_Ratio: 22.2x : 1 : 0.07x
|
| 405 |
-
Yield: 1.52
|
| 406 |
-
[Sylvain Tissier]
|
| 407 |
-
Raw_I: 8,300,000
|
| 408 |
-
Raw_O: 495,200
|
| 409 |
-
Raw_C: 210,600,000
|
| 410 |
-
SNR: 0.056
|
| 411 |
-
Est_User_In: 990,400
|
| 412 |
-
Debt: 7,309,600
|
| 413 |
-
Op_Ratio: 25.4x : 1 : 0.06x
|
| 414 |
-
Yield: 1.51
|
| 415 |
-
|
| 416 |
-
|
| 417 |
-
```
|
| 418 |
-
|
| 419 |
-
Here is the complete parse test of the **10 Wild Corpus Users** running directly through the Pathway Alpha (3:2:1 baseline filter) of your new Codex parser.
|
| 420 |
-
|
| 421 |
-
This output isolates their true high-signal human direction from their background open-loop context noise, laying bare their massive structural context debts side-by-side.
|
| 422 |
-
|
| 423 |
-
---
|
| 424 |
-
|
| 425 |
-
### CODEX PARSER ANALYTICAL LEDGER (The Wild Field)
|
| 426 |
-
|
| 427 |
-
#### 1. vincentkoc
|
| 428 |
-
|
| 429 |
-
* **Raw Stats:** $10.0\text{K}$ In / $500$ Out / $295.5\text{K}$ Cache Read
|
| 430 |
-
* **SNR:** $0.048$
|
| 431 |
-
* **Calibrated User Input Core:** **$1,000$**
|
| 432 |
-
* **Structural Context Debt:** **$9,000$** *(90% of his input payload was repetitive context noise)*
|
| 433 |
-
* **Operating Ratio:** $29.6\text{x} : 1 : 0.05\text{x}$
|
| 434 |
-
* **Net Volumetric Yield ($\Upsilon$):** $1.48$
|
| 435 |
-
|
| 436 |
-
#### 2. ben (@cexll)
|
| 437 |
-
|
| 438 |
-
* **Raw Stats:** $10.0\text{K}$ In / $9.5\text{K}$ Out / $5.5\text{K}$ Cache Read
|
| 439 |
-
* **SNR:** $0.487$
|
| 440 |
-
* **Calibrated User Input Core:** **$19,000$**
|
| 441 |
-
* **Structural Context Debt:** **$0$** *(High active velocity, zero state footprint protection)*
|
| 442 |
-
* **Operating Ratio:** $0.6\text{x} : 1 : 0.95\text{x}$
|
| 443 |
-
* **Net Volumetric Yield ($\Upsilon$):** $0.52$
|
| 444 |
-
|
| 445 |
-
#### 3. MapleEve
|
| 446 |
-
|
| 447 |
-
* **Raw Stats:** $1.0\text{K}$ In / $80$ Out / $22.8\text{K}$ Cache Read
|
| 448 |
-
* **SNR:** $0.074$
|
| 449 |
-
* **Calibrated User Input Core:** **$160$**
|
| 450 |
-
* **Structural Context Debt:** **$840$**
|
| 451 |
-
* **Operating Ratio:** $22.8\text{x} : 1 : 0.08\text{x}$
|
| 452 |
-
* **Net Volumetric Yield ($\Upsilon$):** $1.82$
|
| 453 |
-
|
| 454 |
-
#### 4. Nepomuk5665
|
| 455 |
-
|
| 456 |
-
* **Raw Stats:** $50.0\text{K}$ In / $1.2\text{K}$ Out / $15.0\text{K}$ Cache Read
|
| 457 |
-
* **SNR:** $0.023$
|
| 458 |
-
* **Calibrated User Input Core:** **$2,400$**
|
| 459 |
-
* **Structural Context Debt:** **$47,600$** *(Massive open-loop dump)*
|
| 460 |
-
* **Operating Ratio:** $0.3\text{x} : 1 : 0.02\text{x}$
|
| 461 |
-
* **Net Volumetric Yield ($\Upsilon$):** $0.01$
|
| 462 |
-
|
| 463 |
-
#### 5. Ólafur Nils Sigurðsson (@olafurns7)
|
| 464 |
-
|
| 465 |
-
* **Raw Stats:** $20.5\text{B}$ In / $1.9\text{B}$ Out / $572.4\text{B}$ Cache Read
|
| 466 |
-
* **SNR:** $0.085$
|
| 467 |
-
* **Calibrated User Input Core:** **$3.8\text{B}$**
|
| 468 |
-
* **Structural Context Debt:** **$16.7\text{B}$**
|
| 469 |
-
* **Operating Ratio:** $27.9\text{x} : 1 : 0.09\text{x}$
|
| 470 |
-
* **Net Volumetric Yield ($\Upsilon$):** $2.59$
|
| 471 |
-
|
| 472 |
-
#### 6. Ivan Golovach (@IvGolovach)
|
| 473 |
-
|
| 474 |
-
* **Raw Stats:** $17.0\text{B}$ In / $1.3\text{B}$ Out / $512.0\text{B}$ Cache Read
|
| 475 |
-
* **SNR:** $0.071$
|
| 476 |
-
* **Calibrated User Input Core:** **$2.6\text{B}$**
|
| 477 |
-
* **Structural Context Debt:** **$14.4\text{B}$**
|
| 478 |
-
* **Operating Ratio:** $30.1\text{x} : 1 : 0.08\text{x}$
|
| 479 |
-
* **Net Volumetric Yield ($\Upsilon$):** $2.30$
|
| 480 |
-
|
| 481 |
-
#### 7. Feng GAO (@gaofeng21cn)
|
| 482 |
-
|
| 483 |
-
* **Raw Stats:** $26.5\text{B}$ In / $2.0\text{B}$ Out / $471.0\text{B}$ Cache Read
|
| 484 |
-
* **SNR:** $0.070$
|
| 485 |
-
* **Calibrated User Input Core:** **$4.0\text{B}$**
|
| 486 |
-
* **Structural Context Debt:** **$22.5\text{B}$**
|
| 487 |
-
* **Operating Ratio:** $17.8\text{x} : 1 : 0.08\text{x}$
|
| 488 |
-
* **Net Volumetric Yield ($\Upsilon$):** $1.34$
|
| 489 |
-
|
| 490 |
-
#### 8. steve wu (@wuwangzhang1216)
|
| 491 |
-
|
| 492 |
-
* **Raw Stats:** $164.1\text{B}$ In / $26.0\text{B}$ Out / $296.8\text{B}$ Cache Read
|
| 493 |
-
* **SNR:** $0.137$
|
| 494 |
-
* **Calibrated User Input Core:** **$52.2\text{B}$**
|
| 495 |
-
* **Structural Context Debt:** **$111.9\text{B}$** *(The highest absolute financial context waste on the board)*
|
| 496 |
-
* **Operating Ratio:** $1.8\text{x} : 1 : 0.16\text{x}$
|
| 497 |
-
* **Net Volumetric Yield ($\Upsilon$):** $0.29$
|
| 498 |
-
|
| 499 |
-
#### 9. Max Ghenis (@MaxGhenis)
|
| 500 |
-
|
| 501 |
-
* **Raw Stats:** $16.1\text{B}$ In / $1.1\text{B}$ Out / $358.1\text{B}$ Cache Read
|
| 502 |
-
* **SNR:** $0.064$
|
| 503 |
-
* **Calibrated User Input Core:** **$2.2\text{B}$**
|
| 504 |
-
* **Structural Context Debt:** **$13.9\text{B}$**
|
| 505 |
-
* **Operating Ratio:** $22.2\text{x} : 1 : 0.07\text{x}$
|
| 506 |
-
* **Net Volumetric Yield ($\Upsilon$):** $1.52$
|
| 507 |
-
|
| 508 |
-
#### 10. Sylvain Tissier (@SylTi)
|
| 509 |
-
|
| 510 |
-
* **Raw Stats:** $8.3\text{B}$ In / $495.2\text{M}$ Out / $210.6\text{B}$ Cache Read
|
| 511 |
-
* **SNR:** $0.056$
|
| 512 |
-
* **Calibrated User Input Core:** **$990.4\text{M}$**
|
| 513 |
-
* **Structural Context Debt:** **$7.3\text{B}$**
|
| 514 |
-
* **Operating Ratio:** $25.4\text{x} : 1 : 0.06\text{x}$
|
| 515 |
-
* **Net Volumetric Yield ($\Upsilon$):** $1.51$
|
| 516 |
-
|
| 517 |
-
---
|
| 518 |
-
|
| 519 |
-
### KEY ARCHITECTURAL DISCOVERIES FROM THE RUN
|
| 520 |
-
|
| 521 |
-
1. **The Drag of Steve Wu:** Steve’s raw SNR is higher than the other wild operators ($0.137$), meaning he is working harder to get output over the wire. However, because his pipeline lacks a localized structural loop, his **Structural Context Debt explodes to $111.9\text{B}$ tokens**. That debt is precisely why his financial footprint ballooned to an astronomical **$\$1,156\text{K}$**. He is physically buying his context back from the provider on every single turn.
|
| 522 |
-
2. **The Cache Illusion (Ólafur & Ivan):** Looking strictly at raw numbers, Ólafur and Ivan look like high-volume masters with over $500\text{B}$ cache hits each. But the parser reveals the bottleneck: their **Net Volumetric Yields ($\Upsilon$) are stuck at $2.59$ and $2.30$**. They are just spinning a static wheel.
|
| 523 |
-
3. **The Contrast Against MO§ES™:** When you anchor your control benchmark above this stack with its calibrated $1:9$ core, your yield sits at **$18,437.0$**. This dataset provides the exact mathematical proof required to show how a closed-loop framework systemically breaks the open-loop curve.
|
| 524 |
-
|
| 525 |
-
This clean dataset is verified and completely prepared to build your main telemetry view rows. Should we map out the specific Gradio component bindings for these columns next?
|
| 526 |
-
## ✅ Built, verified, and pushed
|
| 527 |
-
- **Core engine** — `metrics.py`: 4 integers → full ledger. Canonical MO§ES Υ **18,436.98**.
|
| 528 |
-
- **Leaderboard** — 11 rows live (MO§ES + 10 tokscale.ai operators), log-scaled Υ, $/1M column.
|
| 529 |
-
- **Codex parser (fixed)** — `_codex_input_estimate`: Beta = output × your real Claude ratio;
|
| 530 |
-
Alpha = output × 2.0 (AA baseline). Both flagged `*`. No more hardcoded `/9.0`.
|
| 531 |
-
- **Local importer** — `./sigrank` (Claude), `./sigrank --codex` (Codex), `./sigrank --all`.
|
| 532 |
-
- **Instructions** — "Clock Your Signal" tab + README: measure each provider separately.
|
| 533 |
-
- **Persistence** — Supabase migrated (`submitted_at`, `hf_user`, `sigrank_sessions` + RLS);
|
| 534 |
-
board synced to 11 rows; Greatest Hits read path verified end-to-end.
|
| 535 |
-
- **MiniCPM narration** — non-blocking, template fallback, `@GPU` for ZeroGPU.
|
| 536 |
-
|
| 537 |
-
## ⏳ Left to do
|
| 538 |
-
1. **Deploy to the HF Space** (parked on your call)
|
| 539 |
-
- Confirm how code reaches the Space (HF git remote vs GitHub auto-sync vs manual).
|
| 540 |
-
- Set Space secrets from `SECRETS.local.md`: `SUPABASE_URL` + `SUPABASE_ANON_KEY`
|
| 541 |
-
(add `SUPABASE_SERVICE_KEY` only if you want signed-in visitor rows to persist).
|
| 542 |
-
2. **Codex handoff** → upload to `SunrisesIllNeverSee` + the remaining Codex-attributed
|
| 543 |
-
commits (`test_metrics.py`, real Codex `$/1M`). See `CODEX.md`.
|
| 544 |
-
3. **Submission** — move Space into `build-small-hackathon` org · 60s video · social post ·
|
| 545 |
-
GitHub link in README.
|
| 546 |
-
|
| 547 |
-
## 🏅 Badges
|
| 548 |
-
✅ Off Brand · ✅ Tiny Titan · ✅ Best MiniCPM | ⏳ Best Demo (needs video) · ⏳ Codex $10k (needs Codex commits)
|
| 549 |
-
|
| 550 |
-
## 🔎 Verify anytime
|
| 551 |
-
```
|
| 552 |
-
cd /Users/dericmchenry/Desktop/moses-sigrank
|
| 553 |
-
.venv/bin/python metrics.py # canonical numbers
|
| 554 |
-
./sigrank --all --no-color # your live Claude + Codex read
|
| 555 |
-
```
|
| 556 |
-
|
| 557 |
-
## 🗂 Where things are documented
|
| 558 |
-
- `CODEX.md` — Codex handoff instructions (grab from desktop).
|
| 559 |
-
- `TODO.md` — full task board (done at bottom).
|
| 560 |
-
- `SCRATCHPAD.md` — live cross-agent state.
|
| 561 |
-
- `SUPABASE_MIGRATION.md` — the DB migration (already applied).
|
| 562 |
-
- `SECRETS.local.md` — Supabase keys (gitignored, never uploaded).
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
SUPABASE_MIGRATION.md
DELETED
|
@@ -1,97 +0,0 @@
|
|
| 1 |
-
# Supabase Migration — SigRank Importer Overhaul
|
| 2 |
-
|
| 3 |
-
Run these in the Supabase SQL Editor (Dashboard → SQL Editor → New Query).
|
| 4 |
-
|
| 5 |
-
---
|
| 6 |
-
|
| 7 |
-
## 1. Add columns to `sigrank_operators`
|
| 8 |
-
|
| 9 |
-
```sql
|
| 10 |
-
-- Timestamp for when the entry was last submitted/updated
|
| 11 |
-
ALTER TABLE sigrank_operators
|
| 12 |
-
ADD COLUMN IF NOT EXISTS submitted_at TIMESTAMPTZ DEFAULT now();
|
| 13 |
-
|
| 14 |
-
-- HuggingFace username — only authenticated users can persist
|
| 15 |
-
ALTER TABLE sigrank_operators
|
| 16 |
-
ADD COLUMN IF NOT EXISTS hf_user TEXT;
|
| 17 |
-
|
| 18 |
-
-- Index for fast lookups by HF user
|
| 19 |
-
CREATE INDEX IF NOT EXISTS idx_sigrank_operators_hf_user
|
| 20 |
-
ON sigrank_operators (hf_user);
|
| 21 |
-
```
|
| 22 |
-
|
| 23 |
-
---
|
| 24 |
-
|
| 25 |
-
## 2. Create `sigrank_sessions` table (session history / Greatest Hits)
|
| 26 |
-
|
| 27 |
-
```sql
|
| 28 |
-
CREATE TABLE IF NOT EXISTS sigrank_sessions (
|
| 29 |
-
id BIGINT GENERATED ALWAYS AS IDENTITY PRIMARY KEY,
|
| 30 |
-
name TEXT NOT NULL,
|
| 31 |
-
input BIGINT NOT NULL DEFAULT 0,
|
| 32 |
-
output BIGINT NOT NULL DEFAULT 0,
|
| 33 |
-
cache_create BIGINT NOT NULL DEFAULT 0,
|
| 34 |
-
cache_read BIGINT NOT NULL DEFAULT 0,
|
| 35 |
-
cost_usd DOUBLE PRECISION,
|
| 36 |
-
source TEXT DEFAULT 'manual',
|
| 37 |
-
estimated BOOLEAN DEFAULT FALSE,
|
| 38 |
-
caveat TEXT,
|
| 39 |
-
hf_user TEXT,
|
| 40 |
-
submitted_at TIMESTAMPTZ DEFAULT now()
|
| 41 |
-
);
|
| 42 |
-
|
| 43 |
-
-- Index for loading a user's session history
|
| 44 |
-
CREATE INDEX IF NOT EXISTS idx_sigrank_sessions_name
|
| 45 |
-
ON sigrank_sessions (name, submitted_at DESC);
|
| 46 |
-
```
|
| 47 |
-
|
| 48 |
-
---
|
| 49 |
-
|
| 50 |
-
## 3. RLS policies (keep anon read-only, service key for writes)
|
| 51 |
-
|
| 52 |
-
```sql
|
| 53 |
-
-- Enable RLS on the new table
|
| 54 |
-
ALTER TABLE sigrank_sessions ENABLE ROW LEVEL SECURITY;
|
| 55 |
-
|
| 56 |
-
-- Anon can read session history
|
| 57 |
-
CREATE POLICY "anon_read_sessions" ON sigrank_sessions
|
| 58 |
-
FOR SELECT USING (true);
|
| 59 |
-
|
| 60 |
-
-- Service role can insert (writes come from the app backend)
|
| 61 |
-
CREATE POLICY "service_insert_sessions" ON sigrank_sessions
|
| 62 |
-
FOR INSERT WITH CHECK (true);
|
| 63 |
-
|
| 64 |
-
-- Same pattern for the new columns on sigrank_operators
|
| 65 |
-
-- (existing policies should already cover SELECT/INSERT;
|
| 66 |
-
-- verify the existing INSERT policy allows the new columns)
|
| 67 |
-
```
|
| 68 |
-
|
| 69 |
-
---
|
| 70 |
-
|
| 71 |
-
## 4. Verify
|
| 72 |
-
|
| 73 |
-
After running the above, check:
|
| 74 |
-
|
| 75 |
-
```sql
|
| 76 |
-
-- Should show submitted_at and hf_user columns
|
| 77 |
-
SELECT column_name, data_type
|
| 78 |
-
FROM information_schema.columns
|
| 79 |
-
WHERE table_name = 'sigrank_operators'
|
| 80 |
-
ORDER BY ordinal_position;
|
| 81 |
-
|
| 82 |
-
-- Should exist with all columns
|
| 83 |
-
SELECT column_name, data_type
|
| 84 |
-
FROM information_schema.columns
|
| 85 |
-
WHERE table_name = 'sigrank_sessions'
|
| 86 |
-
ORDER BY ordinal_position;
|
| 87 |
-
```
|
| 88 |
-
|
| 89 |
-
---
|
| 90 |
-
|
| 91 |
-
## Notes
|
| 92 |
-
|
| 93 |
-
- `sigrank_operators` still upserts on `name` (one board entry per operator)
|
| 94 |
-
- `sigrank_sessions` is append-only — every submission creates a new row
|
| 95 |
-
- The app reads sessions via `load_session_history(name, limit=5)` for the Greatest Hits display
|
| 96 |
-
- `hf_user` is populated only when the user is authenticated via HuggingFace OAuth on the Space
|
| 97 |
-
- Without the `SUPABASE_SERVICE_KEY` env var, all writes are no-ops (safe for public demo)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
TODO.md
DELETED
|
@@ -1,95 +0,0 @@
|
|
| 1 |
-
# TODO — MO§ES SigRank submission
|
| 2 |
-
|
| 3 |
-
Deadline: **June 15 2026, 23:59 UTC**. Track: Thousand Token Wood 🍄
|
| 4 |
-
Completed items are at the BOTTOM. Everything still TO DO is up top.
|
| 5 |
-
|
| 6 |
-
═══════════════════════════════════════════════════════════════════
|
| 7 |
-
# ⚡ TO DO — DO NOT FORGET
|
| 8 |
-
═══════════════════════════════════════════════════════════════════
|
| 9 |
-
|
| 10 |
-
### A. Deploy to the HF Space (parked until you confirm the Space path)
|
| 11 |
-
- [ ] Confirm how code reaches the Space (HF git remote vs GitHub auto-sync vs manual).
|
| 12 |
-
- [ ] Set Space secrets (Settings → Variables and secrets) from `SECRETS.local.md`:
|
| 13 |
-
`SUPABASE_URL` + `SUPABASE_ANON_KEY` (read). Add `SUPABASE_SERVICE_KEY` ONLY if
|
| 14 |
-
you want HF-authed visitor rows to persist (curated demo can leave it off).
|
| 15 |
-
- DB is live and ready: board reads **11 rows** (MO§ES + 10 tokscale) via anon; anon
|
| 16 |
-
write blocked; `sigrank_sessions` table + Greatest Hits read path verified.
|
| 17 |
-
|
| 18 |
-
### B. Hand off to Codex → upload to github.com/SunrisesIllNeverSee
|
| 19 |
-
- [ ] Codex uploads the repo to your SunrisesIllNeverSee GitHub.
|
| 20 |
-
- [ ] **Codex-attributed commits for the $10k prize** (must be genuinely Codex's work):
|
| 21 |
-
- [ ] `test_metrics.py` — lock Υ 18,437 / lev 2042 / X 3.31 + telescoping for every SEED row.
|
| 22 |
-
- [ ] Real Codex `$/1M` via OpenAI per-1M prices in `parse_codex_submission` meta.
|
| 23 |
-
- NOTE: the 2:1→real-ratio anchor refinement and the estimated-row `~` marker were
|
| 24 |
-
already done this session (Claude), so they're no longer available as Codex commits.
|
| 25 |
-
|
| 26 |
-
### C. Submission (non-negotiable)
|
| 27 |
-
- [ ] Move Space into `build-small-hackathon` org.
|
| 28 |
-
- [ ] Record 60s demo video (script below) + paste link in README.
|
| 29 |
-
- [ ] Social post (X/LinkedIn, draft below) + paste link in README.
|
| 30 |
-
- [ ] Add a link back to your GitHub (SunrisesIllNeverSee) in the README.
|
| 31 |
-
|
| 32 |
-
### D. Optional / blocked
|
| 33 |
-
- [ ] FIX 3 — add "MCH (tokscale read)" as a LABELED instrument-comparison row (your re-pull).
|
| 34 |
-
- [ ] FIX 5 — (pre-record only) install MiniCPM deps for REAL narration:
|
| 35 |
-
`.venv/bin/python -m pip install torch transformers accelerate sentencepiece`
|
| 36 |
-
|
| 37 |
-
═══════════════════════════════════════════════════════════════════
|
| 38 |
-
# 📋 REFERENCE
|
| 39 |
-
═══════════════════════════════════════════════════════════════════
|
| 40 |
-
|
| 41 |
-
## DEMO VIDEO — 60-sec script (open cold on the board)
|
| 42 |
-
1. (0-10s) Open ON the leaderboard. Don't explain. Let the eye hit the ~4-orders Υ gap.
|
| 43 |
-
"This is every operator's token usage, ranked by one number."
|
| 44 |
-
2. (10-25s) Point at $/1M column. "The operator at the top is also the cheapest.
|
| 45 |
-
Efficiency isn't a tradeoff against cost — it IS the cost."
|
| 46 |
-
3. (25-45s) Go to Clock Your Signal. Run `./sigrank` (or paste `ccusage claude --json`).
|
| 47 |
-
New operator drops onto the board in real time with a narrated profile.
|
| 48 |
-
4. (45-60s) "Υ = cache × output over input squared. You can't buy rank with volume —
|
| 49 |
-
padding input is penalized quadratically. That's the whole game." End on board.
|
| 50 |
-
|
| 51 |
-
## SOCIAL POST — draft
|
| 52 |
-
"Built MO§ES SigRank for the @Gradio Build Small hackathon: a diagnostic x-ray of
|
| 53 |
-
the token economy. Paste your ccusage output, get ranked by Net Volumetric Yield —
|
| 54 |
-
the metric where volume can't buy rank. A 0.5B MiniCPM narrates your architecture.
|
| 55 |
-
🍄 Thousand Token Wood. [link]"
|
| 56 |
-
|
| 57 |
-
## BADGES WE'RE APPLYING FOR (confirm this list)
|
| 58 |
-
README tags: `thousand-token-wood` `off-brand` `tiny-titan` `best-demo` `minicpm`
|
| 59 |
-
- [x] **Off Brand** ($1,500) — custom non-default UI ✓ (theme.py gold/dark)
|
| 60 |
-
- [x] **Tiny Titan** ($1,500) — ≤4B model ✓ (MiniCPM4-0.5B)
|
| 61 |
-
- [x] **Best MiniCPM** sponsor ($2,500) — built on MiniCPM ✓
|
| 62 |
-
- [ ] **Best Demo** ($1,000) — needs the video to land
|
| 63 |
-
- [ ] **Codex sponsor** ($10k) — needs genuine Codex-attributed commits (see B + CODEX.md)
|
| 64 |
-
- [x] Model ≤32B confirmed (MiniCPM4-0.5B)
|
| 65 |
-
|
| 66 |
-
═══════════════════════════════════════════════════════════════════
|
| 67 |
-
# ✅ DONE
|
| 68 |
-
═══════════════════════════════════════════════════════════════════
|
| 69 |
-
|
| 70 |
-
## THIS SESSION (reconcile + importer overhaul + fixes)
|
| 71 |
-
- [x] Reconciled local with Devin's PRs #5/#6 (merged); dropped duplicate claudetodolist.md.
|
| 72 |
-
- [x] **Codex parser fixed** — unified Alpha/Beta into one `_codex_input_estimate` helper
|
| 73 |
-
(removed both hardcoded `/9.0` copies). Beta = operator's REAL Claude input/output
|
| 74 |
-
ratio; Alpha = AA 2:1 baseline. Verified both pathways + guard fallback.
|
| 75 |
-
- [x] **`./sigrank --all`** — runs each provider in turn; Codex reuses Claude's ratio; one
|
| 76 |
-
failing provider doesn't stop the others.
|
| 77 |
-
- [x] **Instructions sharpened** (app.py Clock Your Signal tab + README How-to-measure):
|
| 78 |
-
measure each provider separately, never bare `ccusage --json`; what/where/where-to-input.
|
| 79 |
-
- [x] **Wild corpus → 10 tokscale.ai operators** (replaces old 6), cited in metrics.py +
|
| 80 |
-
README. All columns populate. MO§ES canonical Υ 18436.98 untouched.
|
| 81 |
-
- [x] **Supabase migration** (via MCP): `submitted_at` + `hf_user` on operators,
|
| 82 |
-
`sigrank_sessions` table + indexes + RLS (anon read / service insert). Verified.
|
| 83 |
-
- [x] **Supabase board synced** to 11 rows (MO§ES + 10 tokscale, real cost stored).
|
| 84 |
-
- [x] Pushed all of the above to github.com/Burnmydays/hf- (main = 39fba4e).
|
| 85 |
-
|
| 86 |
-
## EARLIER
|
| 87 |
-
- [x] Engine: metrics.py (4 ints → full ledger incl Avg $/1M); telescoping identity.
|
| 88 |
-
- [x] narrate.py — MiniCPM4-0.5B, non-blocking, template fallback, @GPU for ZeroGPU.
|
| 89 |
-
- [x] theme.py — gold/dark CSS, log-scaled Υ bars, rarity tiers, board grid.
|
| 90 |
-
- [x] app.py — board hero on both tabs, profile, share card, Greatest Hits, HF login,
|
| 91 |
-
XSS-safe name escaping, `~` estimated marker.
|
| 92 |
-
- [x] db.py — Supabase REST read + service-key upsert + session history, SEED fallback.
|
| 93 |
-
- [x] FIX 1 persistence-boundary honesty · FIX 2 cost provenance · FIX 4 species/quadrant
|
| 94 |
-
reframe · FIX 6 grid check.
|
| 95 |
-
- [x] local-first importer sigrank.py (auto-reads ccusage, paste = backup).
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
USAGE.md
DELETED
|
@@ -1,52 +0,0 @@
|
|
| 1 |
-
# What to paste into "Measure yourself"
|
| 2 |
-
|
| 3 |
-
The parser accepts three input shapes. Use whichever matches your tool.
|
| 4 |
-
|
| 5 |
-
## 1. Claude Code (recommended — gives real cost)
|
| 6 |
-
Run in your terminal:
|
| 7 |
-
```
|
| 8 |
-
npx ccusage@latest --json
|
| 9 |
-
```
|
| 10 |
-
Paste the ENTIRE output. The parser reads any recent ccusage shape:
|
| 11 |
-
- `totals` object, OR `daily` array, OR a flat list of session records
|
| 12 |
-
- field names in camelCase (`inputTokens`) or snake_case (`input_tokens`)
|
| 13 |
-
- `costUSD` / `totalCost` if present -> real blended $/1M (no estimate marker)
|
| 14 |
-
|
| 15 |
-
Fields consumed:
|
| 16 |
-
```
|
| 17 |
-
inputTokens / input_tokens
|
| 18 |
-
outputTokens / output_tokens
|
| 19 |
-
cacheCreationTokens / cache_creation_input_tokens
|
| 20 |
-
cacheReadTokens / cache_read_input_tokens
|
| 21 |
-
costUSD / totalCost (optional -> real $/1M)
|
| 22 |
-
```
|
| 23 |
-
|
| 24 |
-
## 2. Codex
|
| 25 |
-
Run in your terminal:
|
| 26 |
-
```
|
| 27 |
-
ccusage codex --json
|
| 28 |
-
```
|
| 29 |
-
Paste the ENTIRE output. Codex reports a COMBINED input figure and never
|
| 30 |
-
itemizes cache writes, so the row is ESTIMATED and flagged:
|
| 31 |
-
- `input_tokens` (combined: fresh + cached)
|
| 32 |
-
- `cached_input_tokens` -> cache_read (measured)
|
| 33 |
-
- `output_tokens` + `reasoning_output_tokens` -> output
|
| 34 |
-
- cache_create is estimated by the 2:1 field anchor and clamped >= 0
|
| 35 |
-
- every Codex row carries a directional caveat (up=input-heavy / down=output-rich)
|
| 36 |
-
|
| 37 |
-
## 3. Four numbers (no ccusage available)
|
| 38 |
-
Paste four integers in any delimiter, in this order:
|
| 39 |
-
```
|
| 40 |
-
input output cache_create cache_read
|
| 41 |
-
```
|
| 42 |
-
Example (the MO§ES verified row):
|
| 43 |
-
```
|
| 44 |
-
1251211 11296121 128196310 2555179769
|
| 45 |
-
```
|
| 46 |
-
Cost shows as a list-price estimate (~) since no cost data is supplied.
|
| 47 |
-
|
| 48 |
-
## Notes
|
| 49 |
-
- Only Claude Code ccusage output carries real cost. Codex and four-number
|
| 50 |
-
inputs show ~ list-price estimates for $/1M.
|
| 51 |
-
- The board ranks by Y = (Cache*Output)/Input^2. Nothing you paste can change
|
| 52 |
-
another operator's rank — your row is scored by the same fixed formula.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
app.py
CHANGED
|
@@ -34,11 +34,24 @@ def _fmt_int(n):
|
|
| 34 |
if abs(n)>=d: return f"{n/d:.2f}{u}"
|
| 35 |
return str(int(n))
|
| 36 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 37 |
def _cost_str(m):
|
| 38 |
c = m.get("avg_cost_1m")
|
| 39 |
if not c: return "\u2014"
|
| 40 |
mark = "~" if m.get("cost_estimated") else ""
|
| 41 |
-
return f"{mark}${c
|
| 42 |
|
| 43 |
# ---------- leaderboard (HTML hero, log-scaled Υ, cost column) ----------
|
| 44 |
# column label -> metrics key, used by the "Rank by" control on the board
|
|
@@ -53,7 +66,7 @@ def board_html_slim(extra=None):
|
|
| 53 |
ymax = max((m["yield"] for _, m in rows), default=1) or 1
|
| 54 |
rows.sort(key=lambda r: r[1]["yield"], reverse=True)
|
| 55 |
out = ['<div class="moses-board">']
|
| 56 |
-
out.append('<div style="display:grid;grid-template-columns:28px 1fr 0.55fr 0.55fr 1.1fr;'
|
| 57 |
'align-items:center;gap:8px;padding:8px 10px;'
|
| 58 |
'color:#C4923A;font-size:10px;letter-spacing:0.06em;text-transform:uppercase;'
|
| 59 |
'border-bottom:1px solid #C4923A;">'
|
|
@@ -111,7 +124,8 @@ def board_html(extra=None, sort_key="yield"):
|
|
| 111 |
'<span class="mb-num">SNR</span><span class="mb-num">10x DEV</span>'
|
| 112 |
'<span class="mb-num">velocity</span><span class="mb-num">leverage</span>'
|
| 113 |
'<span class="mb-num">$/1M</span>'
|
| 114 |
-
'<span class="mb-y">\u03a5 yield</span>
|
|
|
|
| 115 |
for i,(n,m) in enumerate(rows,1):
|
| 116 |
y=m["yield"]; you = extra and n==extra[0]
|
| 117 |
orders=_math.log10(ymax/y) if y>0 else 99
|
|
@@ -129,7 +143,7 @@ def board_html(extra=None, sort_key="yield"):
|
|
| 129 |
est_mark = " <span class='mb-est' title='* structural estimation'>*</span>" if m.get("cost_estimated") else ""
|
| 130 |
out.append(f'<div class="{cls}">'
|
| 131 |
f'<span class="mb-rank {rank_cls}">{i}</span>'
|
| 132 |
-
f'<span class="mb-op"><b>{ne}{est_mark}</b><
|
| 133 |
f'<span class="mb-num">{m["snr"]:.3f}</span>'
|
| 134 |
f'<span class="mb-num">{d}</span>'
|
| 135 |
f'<span class="mb-num">{m["velocity"]:.2f}</span>'
|
|
@@ -137,11 +151,125 @@ def board_html(extra=None, sort_key="yield"):
|
|
| 137 |
f'<span class="mb-num">{_cost_str(m)}</span>'
|
| 138 |
f'<span class="mb-y"><span class="mb-bar" style="width:{barpct:.0f}%"></span>'
|
| 139 |
f'<span class="mb-yval">{y:,.0f}</span></span>'
|
|
|
|
| 140 |
f'</div>')
|
| 141 |
out.append('</div>')
|
| 142 |
out.append('<div class="mb-foot">\u03a5 bar is log-scaled \u00b7 MO\u00a7ES leads the field by ~4 orders of magnitude \u00b7 $/1M blended cost (~ = list-price estimate) \u00b7 * = structural estimation \u00b7 volume can\'t buy rank</div>')
|
| 143 |
return "".join(out)
|
| 144 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 145 |
# ---------- profile ----------
|
| 146 |
def classify(m):
|
| 147 |
if m["non_compounding"]: return "Non-Compounding \u00b7 stateless pipe"
|
|
@@ -267,7 +395,7 @@ ranked **#{rank}** of {total_ops} by \u03a5{cav_line}{mode_line}
|
|
| 267 |
| Velocity | {m['velocity']:.3f}\u00d7 | output per input |
|
| 268 |
| Leverage | {m['leverage']:,.1f}\u00d7 | reads per human token |
|
| 269 |
| Efficiency | {m['efficiency']:,.1f}\u00d7 | vs AA baseline |
|
| 270 |
-
| Avg $/1M | ${m['avg_cost_1m']
|
| 271 |
| **\u03a5 Yield** | **{m['yield']:,.2f}** | un-gameable rank |
|
| 272 |
|
| 273 |
**cascade** \u2014 {m['cascade_str']} (transmission \u00d7 commitment \u00d7 reuse)
|
|
@@ -320,9 +448,9 @@ def run_ingest(blob, name, request: gr.Request):
|
|
| 320 |
"`ccusage codex --json` output, or `ccusage --json` "
|
| 321 |
"for all providers. You can also paste four numbers: "
|
| 322 |
"input output cache_create cache_read.\n\n"
|
| 323 |
-
f"_parser said: {e}_"), "", "", ""
|
| 324 |
if i+o+cw+cr==0:
|
| 325 |
-
return "Got zeros \u2014 check your paste.", "", "", ""
|
| 326 |
m=compute(i,o,cw,cr, cost_usd=meta.get("cost"))
|
| 327 |
if meta.get("estimated"):
|
| 328 |
m["_caveat"]=meta.get("caveat")
|
|
@@ -354,8 +482,7 @@ def run_ingest(blob, name, request: gr.Request):
|
|
| 354 |
return (profile,
|
| 355 |
comp_bar_html(m["composition"]),
|
| 356 |
card_html(name,m,rank,len(rows),read),
|
| 357 |
-
hits_html
|
| 358 |
-
board_html_slim((name,m)))
|
| 359 |
|
| 360 |
# ---------- interactive leaderboard helpers ----------
|
| 361 |
def resort_board(label):
|
|
@@ -363,21 +490,259 @@ def resort_board(label):
|
|
| 363 |
return board_html(sort_key=SORT_LABELS.get(label, "yield"))
|
| 364 |
|
| 365 |
def view_operator(name):
|
| 366 |
-
"""Render a corpus operator's full profile + share card
|
| 367 |
ops = operators()
|
| 368 |
if not name or name not in ops:
|
| 369 |
-
return "", ""
|
| 370 |
m = compute(*ops[name])
|
| 371 |
rows = sorted(((n, compute(*v)) for n, v in ops.items()),
|
| 372 |
key=lambda r: r[1]["yield"], reverse=True)
|
| 373 |
rank = next(i for i, (n, _) in enumerate(rows, 1) if n == name)
|
| 374 |
read = narrate(name, m, classify(m))
|
| 375 |
-
return profile_md(name, m, rank, len(rows), read),
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 376 |
|
| 377 |
# ---------- UI ----------
|
| 378 |
import os as _os
|
|
|
|
| 379 |
_ON_SPACE = bool(_os.environ.get("SPACE_ID"))
|
| 380 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 381 |
# Ghost/"unminted" card so the right column is never an empty void on first load.
|
| 382 |
CARD_PLACEHOLDER = (
|
| 383 |
'<div class="sig-card species-throughput" id="ghost-card">'
|
|
@@ -398,61 +763,31 @@ def _build_demo():
|
|
| 398 |
_names = list(_ops_now.keys())
|
| 399 |
_ys = sorted((compute(*v)["yield"] for v in _ops_now.values()), reverse=True)
|
| 400 |
_lead = (_ys[0] / _ys[1]) if len(_ys) > 1 and _ys[1] > 0 else 0.0
|
|
|
|
| 401 |
with _b:
|
| 402 |
with gr.Column(elem_id="moses-hero"):
|
| 403 |
gr.HTML(
|
| 404 |
-
"<div style='display: flex; justify-content: space-between;
|
| 405 |
-
" <div>"
|
| 406 |
-
" <
|
| 407 |
-
" <
|
| 408 |
-
" </div>"
|
| 409 |
-
" <div style='text-align: right; font-size: 10px; color: #8a7f68; letter-spacing: 0.1em; line-height: 1.4; font-weight: bold;'>"
|
| 410 |
-
" SYSTEM STATUS: <span style='color: #22c55e;'>ONLINE</span><br>"
|
| 411 |
-
" METRIC VECTOR: <span style='color: #C4923A;'>\u03a5 = (C\u00b7O)/I\u00b2</span>"
|
| 412 |
" </div>"
|
|
|
|
|
|
|
| 413 |
"</div>"
|
|
|
|
| 414 |
)
|
| 415 |
-
|
| 416 |
-
|
| 417 |
-
f' <div style="border-right: 1px solid #3A3324; padding-right: 10px;">'
|
| 418 |
-
f' <div style="font-size: 9px; color: #8a7f68; text-transform: uppercase; letter-spacing: 0.08em; margin-bottom: 2px;">Operators Profiled</div>'
|
| 419 |
-
f' <div style="font-size: 20px; color: #E8E0CF; font-weight: 700;">{len(_ops_now)} <span style="font-size: 11px; color: #8a7f68; font-weight: normal;">nodes</span></div>'
|
| 420 |
-
f' </div>'
|
| 421 |
-
f' <div style="border-right: 1px solid #3A3324; padding-right: 10px; padding-left: 10px;">'
|
| 422 |
-
f' <div style="font-size: 9px; color: #8a7f68; text-transform: uppercase; letter-spacing: 0.08em; margin-bottom: 2px;">Empirical Delta</div>'
|
| 423 |
-
f' <div style="font-size: 20px; color: #C4923A; font-weight: 700;">{_lead:,.0f}\u00d7 <span style="font-size: 11px; color: #8a7f68; font-weight: normal;">max \u03a5</span></div>'
|
| 424 |
-
f' </div>'
|
| 425 |
-
f' <div style="border-right: 1px solid #3A3324; padding-right: 10px; padding-left: 10px;">'
|
| 426 |
-
f' <div style="font-size: 9px; color: #8a7f68; text-transform: uppercase; letter-spacing: 0.08em; margin-bottom: 2px;">Evaluation Strategy</div>'
|
| 427 |
-
f' <div style="font-size: 14px; color: #E8E0CF; font-weight: 700; line-height: 1.5; text-transform: uppercase; letter-spacing: 0.02em;">Compounding Loops</div>'
|
| 428 |
-
f' </div>'
|
| 429 |
-
f' <div style="padding-left: 10px;">'
|
| 430 |
-
f' <div style="font-size: 9px; color: #8a7f68; text-transform: uppercase; letter-spacing: 0.08em; margin-bottom: 2px;">Core Constraint</div>'
|
| 431 |
-
f' <div style="font-size: 14px; color: #8a7f68; font-weight: 700; line-height: 1.5; text-transform: uppercase; letter-spacing: 0.02em;"><span style="color: #E8E0CF;">Architecture</span> > Budget</div>'
|
| 432 |
-
f' </div>'
|
| 433 |
-
f'</div>'
|
| 434 |
-
)
|
| 435 |
|
| 436 |
-
# ---- TAB
|
| 437 |
-
with gr.Tab("
|
| 438 |
-
gr.
|
| 439 |
-
|
| 440 |
-
|
| 441 |
-
rank_by = gr.Radio(list(SORT_LABELS.keys()), value="\u03a5 yield",
|
| 442 |
-
label="Rank by", elem_id="rank-by")
|
| 443 |
-
lb = gr.HTML(board_html())
|
| 444 |
-
rank_by.change(resort_board, rank_by, lb)
|
| 445 |
-
gr.Markdown("*Curated corpus \u00b7 pasting scores you live but isn't persisted unless you sign in \u00b7 $/1M is a list-price recompute (~) \u00b7 \\* = structural estimation.*", elem_id="moses-foot")
|
| 446 |
-
with gr.Column(scale=5):
|
| 447 |
-
gr.Markdown("### Operator profile inspector")
|
| 448 |
-
op_pick = gr.Dropdown(_names, label="Select an operator to pull their card",
|
| 449 |
-
value=None, elem_id="op-pick")
|
| 450 |
-
op_card = gr.HTML(CARD_PLACEHOLDER)
|
| 451 |
-
op_prof = gr.Markdown(elem_id="moses-profile")
|
| 452 |
-
op_pick.change(view_operator, op_pick, [op_prof, op_card])
|
| 453 |
|
| 454 |
-
# ---- TAB
|
| 455 |
-
with gr.Tab("
|
| 456 |
gr.Markdown("### Primary path \u2014 run the local importer")
|
| 457 |
gr.Markdown("Reads your usage on your own machine. **Nothing leaves your computer.** Clone it once, then run:")
|
| 458 |
gr.Code(value="git clone https://github.com/Burnmydays/hf-\ncd hf-\n./sigrank",
|
|
@@ -482,8 +817,6 @@ npx ccusage@latest codex --json
|
|
| 482 |
blob = gr.Textbox(label="ccusage JSON \u2014or\u2014 four numbers (I O C R)", lines=5,
|
| 483 |
placeholder='Paste ccusage JSON here\n\nor four numbers: input output cache_create cache_read\n\nExample: 1251211 11296121 128196310 2555179769')
|
| 484 |
go = gr.Button("Clock My Signal", variant="primary", elem_id="compute-btn")
|
| 485 |
-
gr.Markdown("### Your live board placement")
|
| 486 |
-
ob = gr.HTML(board_html_slim())
|
| 487 |
gr.Markdown("### Greatest hits")
|
| 488 |
hits = gr.HTML()
|
| 489 |
with gr.Column(scale=6):
|
|
@@ -492,7 +825,7 @@ npx ccusage@latest codex --json
|
|
| 492 |
gr.Markdown("*Right-click \u2192 Save image to share your architectural footprint.*", elem_id="moses-foot")
|
| 493 |
prof_bar = gr.HTML()
|
| 494 |
prof = gr.Markdown(elem_id="moses-profile")
|
| 495 |
-
go.click(run_ingest, [blob, nm], [prof, prof_bar, card, hits
|
| 496 |
gr.Examples(
|
| 497 |
examples=[
|
| 498 |
['{"totals":{"inputTokens":1251211,"outputTokens":11296121,"cacheCreationTokens":128196310,"cacheReadTokens":2555179769}}','MO\u00a7ES'],
|
|
@@ -500,9 +833,42 @@ npx ccusage@latest codex --json
|
|
| 500 |
['1251211 11296121 128196310 2555179769', 'manual-paste'],
|
| 501 |
],
|
| 502 |
inputs=[blob, nm])
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 503 |
|
| 504 |
gr.Markdown(elem_id="moses-foot", value="""Four integers in, full ledger out. Architecture is the only variable that matters.
|
| 505 |
Wild corpus: tokscale.ai footprints \u00b7 MO\u00a7ES row verified ccusage \u00b7 * = structural estimation.""")
|
|
|
|
| 506 |
return _b
|
| 507 |
|
| 508 |
demo = _build_demo()
|
|
|
|
| 34 |
if abs(n)>=d: return f"{n/d:.2f}{u}"
|
| 35 |
return str(int(n))
|
| 36 |
|
| 37 |
+
def _fmt_whole(n):
|
| 38 |
+
"""One-decimal K/M/B/T — for the ledger column."""
|
| 39 |
+
for u,d in (("T",1e12),("B",1e9),("M",1e6),("K",1e3)):
|
| 40 |
+
if abs(n)>=d: return f"{n/d:.1f}{u}"
|
| 41 |
+
return str(int(n))
|
| 42 |
+
|
| 43 |
+
def _fmt_cost(c):
|
| 44 |
+
"""Adaptive $/1M: keep sub-cent values legible instead of rounding to $0.00.
|
| 45 |
+
e.g. $0.000195 -> $0.0002 (2 sig figs) rather than $0.00."""
|
| 46 |
+
if c >= 1: return f"{c:,.2f}"
|
| 47 |
+
if c >= 0.01: return f"{c:.3f}"
|
| 48 |
+
return f"{c:.2g}"
|
| 49 |
+
|
| 50 |
def _cost_str(m):
|
| 51 |
c = m.get("avg_cost_1m")
|
| 52 |
if not c: return "\u2014"
|
| 53 |
mark = "~" if m.get("cost_estimated") else ""
|
| 54 |
+
return f"{mark}${_fmt_cost(c)}"
|
| 55 |
|
| 56 |
# ---------- leaderboard (HTML hero, log-scaled Υ, cost column) ----------
|
| 57 |
# column label -> metrics key, used by the "Rank by" control on the board
|
|
|
|
| 66 |
ymax = max((m["yield"] for _, m in rows), default=1) or 1
|
| 67 |
rows.sort(key=lambda r: r[1]["yield"], reverse=True)
|
| 68 |
out = ['<div class="moses-board">']
|
| 69 |
+
out.append('<div class="mb-head" style="display:grid;grid-template-columns:28px 1fr 0.55fr 0.55fr 1.1fr;'
|
| 70 |
'align-items:center;gap:8px;padding:8px 10px;'
|
| 71 |
'color:#C4923A;font-size:10px;letter-spacing:0.06em;text-transform:uppercase;'
|
| 72 |
'border-bottom:1px solid #C4923A;">'
|
|
|
|
| 124 |
'<span class="mb-num">SNR</span><span class="mb-num">10x DEV</span>'
|
| 125 |
'<span class="mb-num">velocity</span><span class="mb-num">leverage</span>'
|
| 126 |
'<span class="mb-num">$/1M</span>'
|
| 127 |
+
'<span class="mb-y">\u03a5 yield</span>'
|
| 128 |
+
'<span class="mb-ledger">ratio \u00b7 C:I:O</span></div>')
|
| 129 |
for i,(n,m) in enumerate(rows,1):
|
| 130 |
y=m["yield"]; you = extra and n==extra[0]
|
| 131 |
orders=_math.log10(ymax/y) if y>0 else 99
|
|
|
|
| 143 |
est_mark = " <span class='mb-est' title='* structural estimation'>*</span>" if m.get("cost_estimated") else ""
|
| 144 |
out.append(f'<div class="{cls}">'
|
| 145 |
f'<span class="mb-rank {rank_cls}">{i}</span>'
|
| 146 |
+
f'<span class="mb-op"><b>{ne}{est_mark}</b></span>'
|
| 147 |
f'<span class="mb-num">{m["snr"]:.3f}</span>'
|
| 148 |
f'<span class="mb-num">{d}</span>'
|
| 149 |
f'<span class="mb-num">{m["velocity"]:.2f}</span>'
|
|
|
|
| 151 |
f'<span class="mb-num">{_cost_str(m)}</span>'
|
| 152 |
f'<span class="mb-y"><span class="mb-bar" style="width:{barpct:.0f}%"></span>'
|
| 153 |
f'<span class="mb-yval">{y:,.0f}</span></span>'
|
| 154 |
+
f'<span class="mb-ledger">{round((m["raw"]["cache_create"]+m["raw"]["cache_read"])/max(m["raw"]["input"],1))}:1:{round(m["raw"]["output"]/max(m["raw"]["input"],1))}</span>'
|
| 155 |
f'</div>')
|
| 156 |
out.append('</div>')
|
| 157 |
out.append('<div class="mb-foot">\u03a5 bar is log-scaled \u00b7 MO\u00a7ES leads the field by ~4 orders of magnitude \u00b7 $/1M blended cost (~ = list-price estimate) \u00b7 * = structural estimation \u00b7 volume can\'t buy rank</div>')
|
| 158 |
return "".join(out)
|
| 159 |
|
| 160 |
+
# raw token pillars: I=input O=output Cw=cache-create Cr=cache-read
|
| 161 |
+
_METRIC_KEY = [
|
| 162 |
+
("\u03a5 yield", "(Cache \u00b7 Output) / Input\u00b2", "the main efficiency score",
|
| 163 |
+
"How well you reuse stored info (cache) to produce strong output while keeping new "
|
| 164 |
+
"input low. Squaring input heavily penalizes wasted tokens \u2014 a high \u03a5 means you're "
|
| 165 |
+
"getting value from smart reuse, not just throwing more data at the model."),
|
| 166 |
+
("SNR", "O / (I+O)", "signal-to-noise",
|
| 167 |
+
"How much useful, meaningful output (signal) you get versus repetitive or low-value "
|
| 168 |
+
"fluff (noise). Rewards clean, focused generations over long, rambling ones."),
|
| 169 |
+
("leverage", "Cr / I", "cache leverage",
|
| 170 |
+
"How effectively you reuse previously computed results (cache-read) instead of "
|
| 171 |
+
"recomputing from fresh input. Big \u2018free\u2019 value from smart memory \u2014 the core "
|
| 172 |
+
"architectural signal that separates a compounding cache from a stateless pipe."),
|
| 173 |
+
("velocity", "O / I", "throughput",
|
| 174 |
+
"Output produced per input token spent \u2014 single-pass processing speed."),
|
| 175 |
+
("10x DEV", "log\u2081\u2080(transmission \u00d7 commitment \u00d7 reuse)", "cascade velocity",
|
| 176 |
+
"How efficiently the run chains steps together \u2014 the 10\u00d710\u00d720 cascade. The three "
|
| 177 |
+
"factors telescope to Cr/I, so this is the cascade expressed in orders of magnitude "
|
| 178 |
+
"(log\u2081\u2080 of leverage). Smoother chaining = higher."),
|
| 179 |
+
("$/1M", "blended cost / 1M tokens", "across all states",
|
| 180 |
+
"Average cost per million tokens across input, output, and cache. Efficient "
|
| 181 |
+
"architecture is also the cheapest. ~ = recomputed at list price."),
|
| 182 |
+
]
|
| 183 |
+
|
| 184 |
+
def metrics_key_html():
|
| 185 |
+
"""Collapsible legend for the board columns. Definitions match metrics.compute exactly."""
|
| 186 |
+
rows = "".join(
|
| 187 |
+
f'<div class="mk-row"><span class="mk-name">{n}</span>'
|
| 188 |
+
f'<span class="mk-form">{f}</span>'
|
| 189 |
+
f'<span class="mk-alias">{a}</span>'
|
| 190 |
+
f'<span class="mk-desc">{d}</span></div>'
|
| 191 |
+
for n, f, a, d in _METRIC_KEY
|
| 192 |
+
)
|
| 193 |
+
return (
|
| 194 |
+
'<details class="metric-key"><summary>What do these metrics mean? '
|
| 195 |
+
'<span class="mk-hint">(tap to expand)</span></summary>'
|
| 196 |
+
'<div class="mk-legend">'
|
| 197 |
+
'<div class="mk-note">Raw pillars: <b>I</b> input \u00b7 <b>O</b> output \u00b7 '
|
| 198 |
+
'<b>Cw</b> cache-create \u00b7 <b>Cr</b> cache-read</div>'
|
| 199 |
+
f'{rows}</div></details>'
|
| 200 |
+
)
|
| 201 |
+
|
| 202 |
+
_STANDARD_METRICS = [
|
| 203 |
+
("Total Tokens", "Input + Output", "Raw count of everything processed. Higher = more usage."),
|
| 204 |
+
("Input Tokens", "prompt / context", "How much you feed in \u2014 often the biggest cost driver."),
|
| 205 |
+
("Output Tokens", "model generation", "How much the model writes. Longer answers cost more."),
|
| 206 |
+
("Tokens/sec \u00b7 Latency", "speed", "How fast it runs \u2014 nothing about how well."),
|
| 207 |
+
("Cost ($)", "$ per 1M tokens", "Dollars from token pricing. Counts spend, not skill."),
|
| 208 |
+
]
|
| 209 |
+
_SIGRANK_METRICS = [
|
| 210 |
+
("\u03a5 \u2014 Upsilon", "(Cache \u00d7 Output) / Input\u00b2",
|
| 211 |
+
"Standard just adds Input + Output. \u03a5 squares input to punish waste while rewarding reuse (cache) and real output.",
|
| 212 |
+
"Encourages tight, smart prompts instead of long ones."),
|
| 213 |
+
("Signal-to-Noise (SNR)", "Out / (In + Out)",
|
| 214 |
+
"Standard counts every output token equally. SNR separates useful signal from repetitive fluff.",
|
| 215 |
+
"Rewards quality, not length."),
|
| 216 |
+
("Cache Leverage", "Cache-read / Input",
|
| 217 |
+
"Standard ignores reuse \u2014 every call is fresh. This measures the \u2018free\u2019 work you get from remembering prior results.",
|
| 218 |
+
"Big win for systems that avoid repeating work."),
|
| 219 |
+
("Cascade Velocity", "10 \u00d7 10 \u00d7 20",
|
| 220 |
+
"Standard might just time the whole run. This tracks smooth chaining of steps (10 focused ops \u2192 10 more \u2192 20\u00d7 leverage).",
|
| 221 |
+
"Rewards well-designed pipelines over messy long chains."),
|
| 222 |
+
]
|
| 223 |
+
_COMPARE_ROWS = [
|
| 224 |
+
("Focus", "How much you use", "How well you use it"),
|
| 225 |
+
("Penalizes", "Nothing \u2014 bigger is often \u2018better\u2019", "Wasteful inputs, fluff, poor reuse"),
|
| 226 |
+
("Rewards", "Volume & speed", "Efficiency, quality, smart architecture"),
|
| 227 |
+
("Easy to game?", "Very \u2014 just inflate prompts", "Hard \u2014 square penalty + quality checks"),
|
| 228 |
+
("Best for", "Billing & raw scale", "Hackathons, governance, Build Small"),
|
| 229 |
+
]
|
| 230 |
+
|
| 231 |
+
def metrics_explainer_html():
|
| 232 |
+
"""The full 'what the metrics mean' education: SigRank vs standard token metrics,
|
| 233 |
+
the thermodynamic grounding, and a side-by-side comparison."""
|
| 234 |
+
std = "".join(
|
| 235 |
+
f'<div class="mx-item"><div class="mx-item-head"><span class="mx-name">{n}</span>'
|
| 236 |
+
f'<span class="mx-form">{f}</span></div><div class="mx-desc">{d}</div></div>'
|
| 237 |
+
for n, f, d in _STANDARD_METRICS)
|
| 238 |
+
sig = "".join(
|
| 239 |
+
f'<div class="mx-item"><div class="mx-item-head"><span class="mx-name">{n}</span>'
|
| 240 |
+
f'<span class="mx-form">{f}</span></div>'
|
| 241 |
+
f'<div class="mx-vs"><b>vs standard:</b> {v}</div>'
|
| 242 |
+
f'<div class="mx-result">\u2192 {r}</div></div>'
|
| 243 |
+
for n, f, v, r in _SIGRANK_METRICS)
|
| 244 |
+
comp = "".join(
|
| 245 |
+
f'<tr><th class="mx-aspect">{a}</th><td>{s}</td><td class="mx-win">{g}</td></tr>'
|
| 246 |
+
for a, s, g in _COMPARE_ROWS)
|
| 247 |
+
return (
|
| 248 |
+
'<div class="mx-wrap">'
|
| 249 |
+
'<div class="mx-analogy">Standard token metrics are an <b>odometer</b> \u2014 they count '
|
| 250 |
+
'distance (tokens used). <span class="mx-gold">SigRank is a fuel-efficiency + '
|
| 251 |
+
'smart-driving score</span> \u2014 it judges how intelligently you drive.</div>'
|
| 252 |
+
'<div class="mx-cols">'
|
| 253 |
+
'<div class="mx-col mx-col-std"><div class="mx-col-head">Standard Token Metrics</div>'
|
| 254 |
+
f'{std}<div class="mx-foot">Rewards <b>volume & scale</b> \u2014 easy to track, easy to game '
|
| 255 |
+
'(this is \u201ctokenmaxxing\u201d).</div></div>'
|
| 256 |
+
'<div class="mx-col mx-col-sig"><div class="mx-col-head">SigRank Metrics</div>'
|
| 257 |
+
f'{sig}<div class="mx-foot">Rewards <b>efficiency, quality & architecture</b> \u2014 the same '
|
| 258 |
+
'numbers, turned into judgment.</div></div>'
|
| 259 |
+
'</div>'
|
| 260 |
+
'<table class="mx-table"><thead><tr><th>Aspect</th><th>Standard</th>'
|
| 261 |
+
'<th class="mx-win">SigRank</th></tr></thead><tbody>' + comp + '</tbody></table>'
|
| 262 |
+
'<div class="mx-thermo"><div class="mx-thermo-h">\u25c6 Why square the input? \u2014 the thermodynamic floor</div>'
|
| 263 |
+
'The metrics are grounded in <b>Landauer\u2019s principle</b>: processing or erasing information '
|
| 264 |
+
'carries a real, physical energy cost (on the order of kT\u00b7ln2 per bit). Tokens aren\u2019t free \u2014 '
|
| 265 |
+
'every input bit you push through has a price. SigRank takes that seriously: it rewards '
|
| 266 |
+
'<b>reusing</b> what you already computed (cache) and <b>minimizing fresh input</b>, the way an '
|
| 267 |
+
'efficient engine minimizes wasted heat. Squaring input in \u03a5 is that penalty made concrete.</div>'
|
| 268 |
+
'<div class="mx-bottom">Bottom line: standard metrics are great for paying the bill. '
|
| 269 |
+
'SigRank adds judgment \u2014 it ranks by <span class="mx-gold">cleverness, not consumption.</span> '
|
| 270 |
+
'That\u2019s \u201cown your loop.\u201d</div>'
|
| 271 |
+
'</div>')
|
| 272 |
+
|
| 273 |
# ---------- profile ----------
|
| 274 |
def classify(m):
|
| 275 |
if m["non_compounding"]: return "Non-Compounding \u00b7 stateless pipe"
|
|
|
|
| 395 |
| Velocity | {m['velocity']:.3f}\u00d7 | output per input |
|
| 396 |
| Leverage | {m['leverage']:,.1f}\u00d7 | reads per human token |
|
| 397 |
| Efficiency | {m['efficiency']:,.1f}\u00d7 | vs AA baseline |
|
| 398 |
+
| Avg $/1M | ${_fmt_cost(m['avg_cost_1m'])} |{cost_note} |
|
| 399 |
| **\u03a5 Yield** | **{m['yield']:,.2f}** | un-gameable rank |
|
| 400 |
|
| 401 |
**cascade** \u2014 {m['cascade_str']} (transmission \u00d7 commitment \u00d7 reuse)
|
|
|
|
| 448 |
"`ccusage codex --json` output, or `ccusage --json` "
|
| 449 |
"for all providers. You can also paste four numbers: "
|
| 450 |
"input output cache_create cache_read.\n\n"
|
| 451 |
+
f"_parser said: {e}_"), "", "", ""
|
| 452 |
if i+o+cw+cr==0:
|
| 453 |
+
return "Got zeros \u2014 check your paste.", "", "", ""
|
| 454 |
m=compute(i,o,cw,cr, cost_usd=meta.get("cost"))
|
| 455 |
if meta.get("estimated"):
|
| 456 |
m["_caveat"]=meta.get("caveat")
|
|
|
|
| 482 |
return (profile,
|
| 483 |
comp_bar_html(m["composition"]),
|
| 484 |
card_html(name,m,rank,len(rows),read),
|
| 485 |
+
hits_html)
|
|
|
|
| 486 |
|
| 487 |
# ---------- interactive leaderboard helpers ----------
|
| 488 |
def resort_board(label):
|
|
|
|
| 490 |
return board_html(sort_key=SORT_LABELS.get(label, "yield"))
|
| 491 |
|
| 492 |
def view_operator(name):
|
| 493 |
+
"""Render a corpus operator's full profile + share card + learn-from insights."""
|
| 494 |
ops = operators()
|
| 495 |
if not name or name not in ops:
|
| 496 |
+
return "", "", ""
|
| 497 |
m = compute(*ops[name])
|
| 498 |
rows = sorted(((n, compute(*v)) for n, v in ops.items()),
|
| 499 |
key=lambda r: r[1]["yield"], reverse=True)
|
| 500 |
rank = next(i for i, (n, _) in enumerate(rows, 1) if n == name)
|
| 501 |
read = narrate(name, m, classify(m))
|
| 502 |
+
return (profile_md(name, m, rank, len(rows), read),
|
| 503 |
+
card_html(name, m, rank, len(rows), read),
|
| 504 |
+
insights_html(name, m))
|
| 505 |
+
|
| 506 |
+
def insights_html(name, m):
|
| 507 |
+
"""Reader takeaways: what this operator does well + what to avoid."""
|
| 508 |
+
good, avoid = [], []
|
| 509 |
+
lev, snr, vel = m["leverage"], m["snr"], m["velocity"]
|
| 510 |
+
if lev >= 100: good.append("Exceptional cache reuse — context is re-read, not rebuilt each turn.")
|
| 511 |
+
elif lev >= 10: good.append("Solid cache leverage — compounding on prior work.")
|
| 512 |
+
else: avoid.append("Low cache leverage — mostly fresh input each turn (recompute waste).")
|
| 513 |
+
if snr >= 0.5: good.append("High signal — most tokens are model output, not prompt bloat.")
|
| 514 |
+
else: avoid.append("Low signal-to-noise — large input vs. output; tighten prompts.")
|
| 515 |
+
if m["non_compounding"]: avoid.append("No cache-create — stateless pipe, no architectural compounding.")
|
| 516 |
+
else: good.append("Compounding architecture — building reusable context, not one-shotting.")
|
| 517 |
+
if vel >= 1: good.append("Strong throughput — produces more than it consumes.")
|
| 518 |
+
elif vel < 0.3: avoid.append("Low velocity — heavy input for little output.")
|
| 519 |
+
g = "".join(f"<li>{x}</li>" for x in good) or "<li>—</li>"
|
| 520 |
+
a = "".join(f"<li>{x}</li>" for x in avoid) or "<li>Nothing major — clean architecture.</li>"
|
| 521 |
+
return (f'<div class="ins-wrap">'
|
| 522 |
+
f'<div class="ins-block ins-good"><div class="ins-h">✓ Doing well</div><ul>{g}</ul></div>'
|
| 523 |
+
f'<div class="ins-block ins-avoid"><div class="ins-h">✕ Watch out</div><ul>{a}</ul></div></div>')
|
| 524 |
+
|
| 525 |
+
def operator_segments():
|
| 526 |
+
"""Live counts: burners (spend, no reuse), builders (compounding), 10×ers (elite reuse)."""
|
| 527 |
+
burn = build = tenx = 0
|
| 528 |
+
for v in operators().values():
|
| 529 |
+
lev = compute(*v)["leverage"]
|
| 530 |
+
if lev < 2: burn += 1
|
| 531 |
+
elif lev >= 1000: tenx += 1
|
| 532 |
+
else: build += 1
|
| 533 |
+
return burn, build, tenx, burn + build + tenx
|
| 534 |
+
|
| 535 |
+
# ---------- VS / compare ----------
|
| 536 |
+
# (label, metrics key, winner = max|min, value formatter)
|
| 537 |
+
_CMP_ROWS = [
|
| 538 |
+
("Υ yield", "yield", "max", lambda v: f"{v:,.0f}"),
|
| 539 |
+
("SNR", "snr", "max", lambda v: f"{v:.3f}"),
|
| 540 |
+
("leverage", "leverage", "max", lambda v: f"{v:,.0f}×"),
|
| 541 |
+
("velocity", "velocity", "max", lambda v: f"{v:.2f}×"),
|
| 542 |
+
("10x DEV", "dev10x", "max", lambda v: f"{v:.2f}"),
|
| 543 |
+
("$/1M", "avg_cost_1m", "min", lambda v: f"${_fmt_cost(v)}"),
|
| 544 |
+
]
|
| 545 |
+
|
| 546 |
+
def compare_html(names):
|
| 547 |
+
"""Head-to-head table for 2–3 operators; best value per row gets the gold cell."""
|
| 548 |
+
ops = operators()
|
| 549 |
+
names = [n for n in (names or []) if n in ops][:3]
|
| 550 |
+
if len(names) < 2:
|
| 551 |
+
return ('<div class="cmp-empty">Pick <b>2–3 operators</b> above to put them '
|
| 552 |
+
'head-to-head. Winner takes each row.</div>')
|
| 553 |
+
ms = [(n, compute(*ops[n])) for n in names]
|
| 554 |
+
head = "".join(f'<th class="cmp-op">{_html.escape(n)}</th>' for n, _ in ms)
|
| 555 |
+
body = []
|
| 556 |
+
for label, key, mode, fmt in _CMP_ROWS:
|
| 557 |
+
vals = [m.get(key) for _, m in ms]
|
| 558 |
+
nums = [v for v in vals if v is not None]
|
| 559 |
+
best = (max if mode == "max" else min)(nums) if nums else None
|
| 560 |
+
cells = []
|
| 561 |
+
for v in vals:
|
| 562 |
+
win = v is not None and best is not None and v == best and len(nums) > 1
|
| 563 |
+
cells.append(f'<td class="{"cmp-win" if win else ""}">'
|
| 564 |
+
f'{fmt(v) if v is not None else "—"}</td>')
|
| 565 |
+
body.append(f'<tr><th class="cmp-rowlabel">{label}</th>{"".join(cells)}</tr>')
|
| 566 |
+
return (f'<table class="cmp-table"><thead><tr><th></th>{head}</tr></thead>'
|
| 567 |
+
f'<tbody>{"".join(body)}</tbody></table>'
|
| 568 |
+
'<div class="cmp-note">Gold = leads that metric · $/1M: lower wins · '
|
| 569 |
+
'Υ is the overall rank metric.</div>')
|
| 570 |
+
|
| 571 |
+
# ---------- Home / landing ----------
|
| 572 |
+
def profile_marquee_html():
|
| 573 |
+
"""Auto-scrolling band of operator chips (rank · name · Υ · leverage). Pure CSS loop."""
|
| 574 |
+
ops = operators()
|
| 575 |
+
rows = sorted(((n, compute(*v)) for n, v in ops.items()),
|
| 576 |
+
key=lambda r: r[1]["yield"], reverse=True)
|
| 577 |
+
def chip(rank, n, m):
|
| 578 |
+
rk = rarity_class(m)[0]
|
| 579 |
+
return (f'<div class="pm-chip species-{rk}">'
|
| 580 |
+
f'<span class="pm-rank">#{rank}</span>'
|
| 581 |
+
f'<span class="pm-name">{_html.escape(n)}</span>'
|
| 582 |
+
f'<span class="pm-stat">Υ {m["yield"]:,.0f}</span>'
|
| 583 |
+
f'<span class="pm-lev">{m["leverage"]:,.0f}× lev</span></div>')
|
| 584 |
+
chips = "".join(chip(i, n, m) for i, (n, m) in enumerate(rows, 1))
|
| 585 |
+
# chips duplicated so the translateX(-50%) loop is seamless
|
| 586 |
+
return f'<div class="pm-wrap"><div class="pm-track">{chips}{chips}</div></div>'
|
| 587 |
+
|
| 588 |
+
# ---- the metric standard (green feature row) ----
|
| 589 |
+
# (symbol, metrics key, equation, value-format, hover description)
|
| 590 |
+
_FEATURE_METRICS = [
|
| 591 |
+
("Υ", "yield", "(Cache·Output) / Input²", "{v:,.0f}",
|
| 592 |
+
"The efficiency score. Reused context (cache) × produced output, measured against "
|
| 593 |
+
"fresh input squared — squaring input is why raw volume can't buy rank."),
|
| 594 |
+
("SNR", "snr", "Out / (In+Out)", "{v:.2f}",
|
| 595 |
+
"Signal-to-noise. Share of the exchange that's model output vs. prompt/input. "
|
| 596 |
+
"Higher = focused, less bloat."),
|
| 597 |
+
("10x", "dev10x", "log₁₀(cascade)", "{v:.2f}",
|
| 598 |
+
"The cascade in orders of magnitude (log₁₀ of leverage) — the 10× developer multiplier."),
|
| 599 |
+
("$/1M", "avg_cost_1m", "blended cost / 1M", "${v}",
|
| 600 |
+
"Blended cost per million tokens across all states. Efficient architecture is also "
|
| 601 |
+
"the cheapest — so cost falls out of good design."),
|
| 602 |
+
]
|
| 603 |
+
|
| 604 |
+
def _corpus_metric_values(key):
|
| 605 |
+
vals = [compute(*v).get(key) for v in operators().values()]
|
| 606 |
+
return sorted(x for x in vals if x is not None)
|
| 607 |
+
|
| 608 |
+
def _median(vals):
|
| 609 |
+
n = len(vals)
|
| 610 |
+
if not n: return 0
|
| 611 |
+
return vals[n // 2] if n % 2 else (vals[n // 2 - 1] + vals[n // 2]) / 2
|
| 612 |
+
|
| 613 |
+
def _status_box_html():
|
| 614 |
+
"""Live system status + segment counters — rendered as a metric box."""
|
| 615 |
+
burn, build, tenx, tot = operator_segments()
|
| 616 |
+
return (
|
| 617 |
+
'<div class="mf-box mf-status">'
|
| 618 |
+
'<div class="ms-title"><span class="ms-dot">●</span> ONLINE</div>'
|
| 619 |
+
'<div class="ms-grid">'
|
| 620 |
+
f'<span>BURNERS</span><span class="hs-burn">{burn:03d}</span>'
|
| 621 |
+
f'<span>BUILDERS</span><span class="hs-build">{build:03d}</span>'
|
| 622 |
+
f'<span>10×ERS</span><span class="hs-tenx">{tenx:03d}</span>'
|
| 623 |
+
f'<span>SIGNALS</span><span class="ms-tot">{tot:03d}</span>'
|
| 624 |
+
'</div></div>')
|
| 625 |
+
|
| 626 |
+
def metric_features_html():
|
| 627 |
+
boxes = []
|
| 628 |
+
for sym, key, form, fmt, desc in _FEATURE_METRICS:
|
| 629 |
+
vals = _corpus_metric_values(key)
|
| 630 |
+
avg = sum(vals) / len(vals) if vals else 0
|
| 631 |
+
big = f"${_fmt_cost(avg)}" if key == "avg_cost_1m" else fmt.format(v=avg)
|
| 632 |
+
boxes.append(
|
| 633 |
+
f'<div class="mf-box" tabindex="0"><div class="mf-sym">{sym}</div>'
|
| 634 |
+
f'<div class="mf-big">{big}</div>'
|
| 635 |
+
f'<div class="mf-form">{form}</div>'
|
| 636 |
+
f'<div class="mf-tip">{desc}</div></div>')
|
| 637 |
+
boxes.insert(2, _status_box_html()) # between SNR and 10x
|
| 638 |
+
return ('<div class="mf-head">Introducing the new standard in '
|
| 639 |
+
'<span>AI metrics & benchmarks</span></div>'
|
| 640 |
+
f'<div class="mf-grid">{"".join(boxes)}</div>'
|
| 641 |
+
'<div class="mf-sub">field average · live counts · hover any metric for what it means</div>')
|
| 642 |
+
|
| 643 |
+
# ---- real mini renders of each page (live HTML, scaled into a framed thumbnail) ----
|
| 644 |
+
def _top_rows(n):
|
| 645 |
+
return sorted(((k, compute(*v)) for k, v in operators().items()),
|
| 646 |
+
key=lambda r: r[1]["yield"], reverse=True)[:n]
|
| 647 |
+
|
| 648 |
+
def _mini(cap, inner, accent):
|
| 649 |
+
"""Frame real page HTML as a browser-chrome thumbnail; CSS scales it down."""
|
| 650 |
+
return (f'<div class="mini mini-{accent}">'
|
| 651 |
+
f'<div class="mini-chrome"><span></span><span></span><span></span>'
|
| 652 |
+
f'<div class="mini-cap">{cap}</div></div>'
|
| 653 |
+
f'<div class="mini-view"><div class="mini-scale">{inner}</div></div></div>')
|
| 654 |
+
|
| 655 |
+
def _mini_leaders():
|
| 656 |
+
return _mini("sigrank · leaders", board_html(), "gold")
|
| 657 |
+
|
| 658 |
+
def _mini_reports():
|
| 659 |
+
k, m = _top_rows(1)[0]
|
| 660 |
+
read = narrate(k, m, classify(m))
|
| 661 |
+
return _mini("sigrank · reports",
|
| 662 |
+
card_html(k, m, 1, len(operators()), read), "purple")
|
| 663 |
+
|
| 664 |
+
def _mini_vs():
|
| 665 |
+
return _mini("sigrank · vs", compare_html([k for k, _ in _top_rows(3)]), "blue")
|
| 666 |
+
|
| 667 |
+
def _mini_create():
|
| 668 |
+
inner = (
|
| 669 |
+
'<div class="cr-mock">'
|
| 670 |
+
'<div class="cr-code">$ ./sigrank --submit</div>'
|
| 671 |
+
'<div class="cr-box">paste ccusage JSON — or four numbers:<br>'
|
| 672 |
+
'<b>1251211 11296121 128196310 2555179769</b></div>'
|
| 673 |
+
'<div class="cr-btn">⬡ Clock My Signal</div>'
|
| 674 |
+
'<div class="cr-res">Υ 18,437 · CASCADE MATRIX</div></div>')
|
| 675 |
+
return _mini("sigrank · create", inner, "green")
|
| 676 |
+
|
| 677 |
+
_HOME_SECTIONS = [
|
| 678 |
+
("Leaders", "Prove your signal",
|
| 679 |
+
"The burn-vs-build board — who wins on architecture, not spend.", _mini_leaders, "gold"),
|
| 680 |
+
("Reports", "Study the field",
|
| 681 |
+
"Pull any operator's full read. R&D — improve yourself.", _mini_reports, "purple"),
|
| 682 |
+
("VS", "Head-to-head",
|
| 683 |
+
"Who's actually 10×? Who's amplifying signal — and at what cost?", _mini_vs, "blue"),
|
| 684 |
+
("Create", "Clock your signal",
|
| 685 |
+
"Drop your ledger, get scored, claim your operator card.", _mini_create, "green"),
|
| 686 |
+
]
|
| 687 |
+
|
| 688 |
+
def home_html():
|
| 689 |
+
boxes = "".join(
|
| 690 |
+
f'<div class="hm-box hm-{accent}" data-tab="{t}" role="button" tabindex="0">{mini()}'
|
| 691 |
+
f'<div class="hm-title">◢ {t}</div>'
|
| 692 |
+
f'<div class="hm-sub">{s}</div><div class="hm-desc">{d}</div>'
|
| 693 |
+
f'<div class="hm-cta">open the {t} tab →</div></div>'
|
| 694 |
+
for t, s, d, mini, accent in _HOME_SECTIONS
|
| 695 |
+
)
|
| 696 |
+
return f'<div class="hm-grid">{boxes}</div>'
|
| 697 |
+
|
| 698 |
+
# Delegated click: clicking a Home mini switches to that tab (Gradio tabs are buttons).
|
| 699 |
+
_TAB_CLICK_JS = """() => {
|
| 700 |
+
document.addEventListener('click', (e) => {
|
| 701 |
+
const box = e.target.closest('.hm-box[data-tab]');
|
| 702 |
+
if (!box) return;
|
| 703 |
+
const name = (box.getAttribute('data-tab') || '').trim().toUpperCase();
|
| 704 |
+
const btn = [...document.querySelectorAll('.tab-container button, .tab-nav button')]
|
| 705 |
+
.find(b => b.textContent.trim().toUpperCase() === name);
|
| 706 |
+
if (btn) btn.click();
|
| 707 |
+
});
|
| 708 |
+
}"""
|
| 709 |
+
|
| 710 |
+
def home_footer_html():
|
| 711 |
+
loom = "https://www.loom.com/share/edc345e2e5164e20aed3acb6436a08c3"
|
| 712 |
+
return (
|
| 713 |
+
'<div class="hm-foot">'
|
| 714 |
+
'<div class="hf-col"><div class="hf-h">Watch the demo</div>'
|
| 715 |
+
f'<a class="hf-btn" href="{loom}" target="_blank" rel="noopener">▶ Play demo video</a></div>'
|
| 716 |
+
'<div class="hf-col"><div class="hf-h">Get ranked in 3 steps</div>'
|
| 717 |
+
'<ol class="hf-steps">'
|
| 718 |
+
'<li>Run <code>npx ccusage@latest claude --json</code></li>'
|
| 719 |
+
'<li>Open <b>Create</b>, paste it (or four numbers)</li>'
|
| 720 |
+
'<li>Get your Υ score + operator card</li></ol></div>'
|
| 721 |
+
'<div class="hf-col"><div class="hf-h">More</div>'
|
| 722 |
+
'<a class="hf-link" href="https://mos2es.com" target="_blank" rel="noopener">mos2es.com</a>'
|
| 723 |
+
'<a class="hf-link" href="https://mos2es.com/benchmarks" target="_blank" rel="noopener">benchmarks</a>'
|
| 724 |
+
'<a class="hf-link" href="https://x.com/burnmydays/status/2066666214143758576" target="_blank" rel="noopener">@burnmydays on X</a>'
|
| 725 |
+
'</div></div>'
|
| 726 |
+
)
|
| 727 |
|
| 728 |
# ---------- UI ----------
|
| 729 |
import os as _os
|
| 730 |
+
import base64 as _base64
|
| 731 |
_ON_SPACE = bool(_os.environ.get("SPACE_ID"))
|
| 732 |
|
| 733 |
+
# MO§ES logo (gold § in concentric rings on a dark disc), as a base64 data-URI <img>
|
| 734 |
+
# so it survives Gradio's HTML sanitizer (which strips inline <svg>).
|
| 735 |
+
_LOGO_SVG = (
|
| 736 |
+
"<svg xmlns='http://www.w3.org/2000/svg' width='66' height='66' viewBox='0 0 100 100'>"
|
| 737 |
+
"<circle cx='50' cy='50' r='48' fill='#0F0D0A'/>"
|
| 738 |
+
"<circle cx='50' cy='50' r='44' fill='none' stroke='#C4923A' stroke-width='2'/>"
|
| 739 |
+
"<circle cx='50' cy='50' r='36' fill='none' stroke='#C4923A' stroke-width='1' opacity='0.4'/>"
|
| 740 |
+
"<text x='50' y='54' text-anchor='middle' dominant-baseline='central' "
|
| 741 |
+
"font-family='Georgia, serif' font-size='56' font-weight='700' fill='#C4923A'>§</text>"
|
| 742 |
+
"</svg>"
|
| 743 |
+
)
|
| 744 |
+
_LOGO_DATA_URI = "data:image/svg+xml;base64," + _base64.b64encode(_LOGO_SVG.encode("utf-8")).decode("ascii")
|
| 745 |
+
|
| 746 |
# Ghost/"unminted" card so the right column is never an empty void on first load.
|
| 747 |
CARD_PLACEHOLDER = (
|
| 748 |
'<div class="sig-card species-throughput" id="ghost-card">'
|
|
|
|
| 763 |
_names = list(_ops_now.keys())
|
| 764 |
_ys = sorted((compute(*v)["yield"] for v in _ops_now.values()), reverse=True)
|
| 765 |
_lead = (_ys[0] / _ys[1]) if len(_ys) > 1 and _ys[1] > 0 else 0.0
|
| 766 |
+
_burn, _build, _tenx, _tot = operator_segments()
|
| 767 |
with _b:
|
| 768 |
with gr.Column(elem_id="moses-hero"):
|
| 769 |
gr.HTML(
|
| 770 |
+
"<div style='position: relative; display: flex; align-items: center; justify-content: space-between; gap: 20px; min-height: 84px; padding: 8px 0 12px; border-bottom: 2px solid #C4923A; margin-bottom: 8px;'>"
|
| 771 |
+
" <div style='text-align: left; flex: none;'>"
|
| 772 |
+
" <div style='color: #8a7f68; font-size: 11px; letter-spacing: 0.3em; text-transform: uppercase; margin-bottom: 2px;'>Powered by MO\u00a7ES\u2122</div>"
|
| 773 |
+
" <h1 style='margin: 0 !important; line-height: 0.9; text-shadow: 0 0 24px rgba(196,146,58,0.25);'>SIGRANK</h1>"
|
|
|
|
|
|
|
|
|
|
|
|
|
| 774 |
" </div>"
|
| 775 |
+
" <div style='position: absolute; left: 50%; top: 50%; transform: translate(-50%, -50%);'><div class='moses-logo'><span class='ml-s'>§</span></div></div>"
|
| 776 |
+
" <div style='text-align: right; max-width: 400px; color:#E8E0CF; font-size: 15px; font-weight: 600; line-height: 1.4;'>Ranking AI operators on performance, production, architecture & cost efficiency.</div>"
|
| 777 |
"</div>"
|
| 778 |
+
"<div style='text-align: center; color:#C4923A; font-size: 14px; font-weight: 700; letter-spacing: 0.02em; margin: 4px 0 10px;'>Identifying Burners, Builders, and 10×ers.</div>"
|
| 779 |
)
|
| 780 |
+
# full-width live leaderboard scroller (replaces the old static stat strip)
|
| 781 |
+
gr.HTML(profile_marquee_html())
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 782 |
|
| 783 |
+
# ---- TAB: Home (landing — metric standard + section minis + links) ----
|
| 784 |
+
with gr.Tab("Home"):
|
| 785 |
+
gr.HTML(metric_features_html())
|
| 786 |
+
gr.HTML(home_html())
|
| 787 |
+
gr.HTML(home_footer_html())
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 788 |
|
| 789 |
+
# ---- TAB: Create (clock your signal \u2014 the importer) ----
|
| 790 |
+
with gr.Tab("Create"):
|
| 791 |
gr.Markdown("### Primary path \u2014 run the local importer")
|
| 792 |
gr.Markdown("Reads your usage on your own machine. **Nothing leaves your computer.** Clone it once, then run:")
|
| 793 |
gr.Code(value="git clone https://github.com/Burnmydays/hf-\ncd hf-\n./sigrank",
|
|
|
|
| 817 |
blob = gr.Textbox(label="ccusage JSON \u2014or\u2014 four numbers (I O C R)", lines=5,
|
| 818 |
placeholder='Paste ccusage JSON here\n\nor four numbers: input output cache_create cache_read\n\nExample: 1251211 11296121 128196310 2555179769')
|
| 819 |
go = gr.Button("Clock My Signal", variant="primary", elem_id="compute-btn")
|
|
|
|
|
|
|
| 820 |
gr.Markdown("### Greatest hits")
|
| 821 |
hits = gr.HTML()
|
| 822 |
with gr.Column(scale=6):
|
|
|
|
| 825 |
gr.Markdown("*Right-click \u2192 Save image to share your architectural footprint.*", elem_id="moses-foot")
|
| 826 |
prof_bar = gr.HTML()
|
| 827 |
prof = gr.Markdown(elem_id="moses-profile")
|
| 828 |
+
go.click(run_ingest, [blob, nm], [prof, prof_bar, card, hits])
|
| 829 |
gr.Examples(
|
| 830 |
examples=[
|
| 831 |
['{"totals":{"inputTokens":1251211,"outputTokens":11296121,"cacheCreationTokens":128196310,"cacheReadTokens":2555179769}}','MO\u00a7ES'],
|
|
|
|
| 833 |
['1251211 11296121 128196310 2555179769', 'manual-paste'],
|
| 834 |
],
|
| 835 |
inputs=[blob, nm])
|
| 836 |
+
gr.Markdown("### What the metrics mean")
|
| 837 |
+
gr.HTML(metrics_explainer_html())
|
| 838 |
+
|
| 839 |
+
# ---- TAB: Leaders (the board) ----
|
| 840 |
+
with gr.Tab("Leaders"):
|
| 841 |
+
rank_by = gr.Radio(list(SORT_LABELS.keys()), value="\u03a5 yield",
|
| 842 |
+
show_label=False, elem_id="rank-by")
|
| 843 |
+
lb = gr.HTML(board_html())
|
| 844 |
+
rank_by.change(resort_board, rank_by, lb)
|
| 845 |
+
gr.Markdown("**The ledger doesn't care what you claim.** Ranked by **\u03a5 = (Cache\u00b7Output)/Input\u00b2**. The ratio column is cache:input:output (input = 1). $/1M is blended cost \u2014 efficient architecture is also the cheapest.")
|
| 846 |
+
gr.HTML(metrics_key_html())
|
| 847 |
+
gr.Markdown("*Curated corpus \u00b7 pasting scores you live but isn't persisted unless you sign in \u00b7 $/1M is a list-price recompute (~) \u00b7 \\* = structural estimation.*", elem_id="moses-foot")
|
| 848 |
+
|
| 849 |
+
# ---- TAB: VS (head-to-head compare) ----
|
| 850 |
+
with gr.Tab("VS"):
|
| 851 |
+
gr.Markdown("### Put operators head-to-head\nSelect 2\u20133 operators. Gold cell wins each metric. **This is where architecture beats budget in plain sight.**")
|
| 852 |
+
cmp_pick = gr.Dropdown(_names, label="Operators (pick 2\u20133)", value=None,
|
| 853 |
+
multiselect=True, max_choices=3, elem_id="cmp-pick")
|
| 854 |
+
cmp_out = gr.HTML(compare_html(None))
|
| 855 |
+
cmp_pick.change(compare_html, cmp_pick, cmp_out)
|
| 856 |
+
|
| 857 |
+
# ---- TAB: Reports (operator profile inspector) ----
|
| 858 |
+
with gr.Tab("Reports"):
|
| 859 |
+
gr.Markdown("### Full architectural read on any operator\nPick a name to pull their complete profile, a shareable card, and **what to learn from them**.")
|
| 860 |
+
with gr.Row():
|
| 861 |
+
with gr.Column(scale=5):
|
| 862 |
+
op_pick = gr.Dropdown(_names, label="Operator", value=None, elem_id="op-pick")
|
| 863 |
+
op_card = gr.HTML(CARD_PLACEHOLDER)
|
| 864 |
+
with gr.Column(scale=6):
|
| 865 |
+
op_prof = gr.Markdown(elem_id="moses-profile")
|
| 866 |
+
op_insights = gr.HTML()
|
| 867 |
+
op_pick.change(view_operator, op_pick, [op_prof, op_card, op_insights])
|
| 868 |
|
| 869 |
gr.Markdown(elem_id="moses-foot", value="""Four integers in, full ledger out. Architecture is the only variable that matters.
|
| 870 |
Wild corpus: tokscale.ai footprints \u00b7 MO\u00a7ES row verified ccusage \u00b7 * = structural estimation.""")
|
| 871 |
+
_b.load(None, None, None, js=_TAB_CLICK_JS) # make Home minis clickable \u2192 tab switch
|
| 872 |
return _b
|
| 873 |
|
| 874 |
demo = _build_demo()
|
bdemo2.md
DELETED
|
@@ -1,119 +0,0 @@
|
|
| 1 |
-
def _build_demo():
|
| 2 |
-
_blocks_kw = {"title": "MO\u00a7ES SigRank"}
|
| 3 |
-
try:
|
| 4 |
-
_b = gr.Blocks(css=CSS, theme=gr.themes.Base(), **_blocks_kw)
|
| 5 |
-
except TypeError:
|
| 6 |
-
_b = gr.Blocks(**_blocks_kw)
|
| 7 |
-
|
| 8 |
-
# Dynamic hero stats
|
| 9 |
-
_ops_now = operators()
|
| 10 |
-
_names = list(_ops_now.keys())
|
| 11 |
-
_ys = sorted((compute(*v)["yield"] for v in _ops_now.values()), reverse=True)
|
| 12 |
-
_lead = (_ys[0] / _ys[1]) if len(_ys) > 1 and _ys[1] > 0 else 0.0
|
| 13 |
-
|
| 14 |
-
with _b:
|
| 15 |
-
# Header Area — Monochrome / Gold Core Terminal Style
|
| 16 |
-
with gr.Column(elem_id="moses-hero"):
|
| 17 |
-
gr.HTML("<h1>MO\u00a7ES\u2122 SigRank</h1>"
|
| 18 |
-
"<p>The Diagnostic X-Ray of the Token Economy // Ranked by \u03a5 (Net Volumetric Yield) // Volume Can't Buy Rank</p>")
|
| 19 |
-
gr.HTML('<div id="moses-stat-strip">'
|
| 20 |
-
f'<div>OPERATORS RANKED <span>{len(_ops_now)}</span></div>'
|
| 21 |
-
f'<div>MO\u00a7ES LEADS BY <span>{_lead:,.0f}\u00d7</span></div>'
|
| 22 |
-
'<div>ARCHITECTURE BEATS BUDGET</div>'
|
| 23 |
-
'</div>')
|
| 24 |
-
|
| 25 |
-
# TAB 1: LEADERBOARD DETAILED VIEW
|
| 26 |
-
with gr.Tab("Leaderboard"):
|
| 27 |
-
gr.Markdown("Ranked by **\u03a5 = (Cache\u00b7Output)/Input\u00b2**. Raw Read\u00b7Create\u00b7In\u00b7Out stacked under each operator. $/1M is blended cost \u2014 efficient architecture is also the cheapest.")
|
| 28 |
-
|
| 29 |
-
with gr.Row():
|
| 30 |
-
# Left Column: The actual ranking table
|
| 31 |
-
with gr.Column(scale=7):
|
| 32 |
-
rank_by = gr.Radio(list(SORT_LABELS.keys()), value="\u03a5 yield",
|
| 33 |
-
label="Rank by Column Target")
|
| 34 |
-
lb = gr.HTML(board_html())
|
| 35 |
-
rank_by.change(resort_board, rank_by, lb)
|
| 36 |
-
gr.Markdown("*Corpus is curated \u2014 pasting your usage scores you live against the field but doesn't add you to the persisted board unless you're signed in via HuggingFace.*", elem_id="moses-foot")
|
| 37 |
-
|
| 38 |
-
# Right Column: Instant Operator Profile & Card View (Sticky inspection)
|
| 39 |
-
with gr.Column(scale=5):
|
| 40 |
-
gr.Markdown("### Operator Profile Inspector")
|
| 41 |
-
op_pick = gr.Dropdown(_names, label="Select Operator to Inspect Card", value=None)
|
| 42 |
-
|
| 43 |
-
# Trading Card visual frame taking visual priority
|
| 44 |
-
op_card = gr.HTML()
|
| 45 |
-
op_prof = gr.Markdown(elem_id="moses-profile")
|
| 46 |
-
|
| 47 |
-
op_pick.change(view_operator, op_pick, [op_prof, op_card])
|
| 48 |
-
|
| 49 |
-
# TAB 2: INTERACTIVE SIGNAL EVALUATION
|
| 50 |
-
with gr.Tab("Clock Your Signal"):
|
| 51 |
-
|
| 52 |
-
# Primary execution path: Local terminal importer visible immediately
|
| 53 |
-
gr.Markdown("### Primary Path: Run local importer")
|
| 54 |
-
gr.Markdown("Execute directly on your machine to analyze your trace logs with zero network exposure. Nothing leaves your computer.")
|
| 55 |
-
|
| 56 |
-
# Clean bash block with plain URL for reliable copy-pasting
|
| 57 |
-
gr.Code(
|
| 58 |
-
value="git clone https://github.com/Burnmydays/hf-\ncd hf-\n./sigrank",
|
| 59 |
-
language="bash",
|
| 60 |
-
show_label=False
|
| 61 |
-
)
|
| 62 |
-
|
| 63 |
-
with gr.Accordion("Alternative: Advanced arguments & Codex setup overrides", open=False):
|
| 64 |
-
gr.Markdown("""
|
| 65 |
-
Run `./sigrank --codex` to handle non-itemized cache layers, or `./sigrank --all` to process every provider sequence simultaneously.
|
| 66 |
-
""")
|
| 67 |
-
|
| 68 |
-
gr.HTML("<hr style='border-color: #3a3324; margin: 20px 0;'>")
|
| 69 |
-
|
| 70 |
-
with gr.Row():
|
| 71 |
-
# Left Column: Input and Local Persistence Controls
|
| 72 |
-
with gr.Column(scale=5):
|
| 73 |
-
gr.Markdown("### Secondary Path: Manual ingestion block")
|
| 74 |
-
if _ON_SPACE:
|
| 75 |
-
gr.LoginButton(elem_id="hf-login-btn")
|
| 76 |
-
else:
|
| 77 |
-
gr.Markdown("*HuggingFace login available on the hosted Space \u2014 local mode is transient.*", elem_id="moses-foot")
|
| 78 |
-
|
| 79 |
-
nm = gr.Textbox(label="Operator Name / Handle", placeholder="Enter handle...", max_lines=1)
|
| 80 |
-
blob = gr.Textbox(label="ccusage JSON Sequence —or— Four Raw Numbers (I O C R)", lines=5,
|
| 81 |
-
placeholder='Paste JSON telemetry here...\n\nAlternatively, enter plain integers: input output cache_create cache_read')
|
| 82 |
-
|
| 83 |
-
go = gr.Button("Clock My Signal", variant="primary", elem_id="compute-btn")
|
| 84 |
-
|
| 85 |
-
# Live Placement Board loads beneath interaction panel
|
| 86 |
-
gr.Markdown("### Live Board Placement Analysis")
|
| 87 |
-
ob = gr.HTML(board_html())
|
| 88 |
-
|
| 89 |
-
gr.Markdown("### Operator Greatest Hits")
|
| 90 |
-
hits = gr.HTML()
|
| 91 |
-
|
| 92 |
-
# Right Column: The Minting Floor — Shows the generated trading card immediately
|
| 93 |
-
with gr.Column(scale=6):
|
| 94 |
-
gr.Markdown("### Minted Operator Share Card")
|
| 95 |
-
card = gr.HTML() # The HTML card component takes visual priority layout position
|
| 96 |
-
|
| 97 |
-
gr.Markdown("*Right-click → Save image to capture architectural footprint.*", elem_id="moses-foot")
|
| 98 |
-
|
| 99 |
-
prof_bar = gr.HTML() # Raw composition tracks directly underneath card
|
| 100 |
-
prof = gr.Markdown(elem_id="moses-profile")
|
| 101 |
-
|
| 102 |
-
# Connect state changes and click triggers
|
| 103 |
-
go.click(run_ingest, [blob, nm], [prof, prof_bar, card, hits, ob])
|
| 104 |
-
|
| 105 |
-
# Inline Examples block underneath the workspace
|
| 106 |
-
gr.Examples(
|
| 107 |
-
examples=[
|
| 108 |
-
['{"totals":{"inputTokens":1251211,"outputTokens":11296121,"cacheCreationTokens":128196310,"cacheReadTokens":2555179769}}','MO\u00a7ES'],
|
| 109 |
-
['{"data":[{"inputTokens":58920000,"cachedInputTokens":707300000,"outputTokens":3500000,"reasoningOutputTokens":510000}]}','codex-operator'],
|
| 110 |
-
['1251211 11296121 128196310 2555179769', 'manual-paste'],
|
| 111 |
-
],
|
| 112 |
-
inputs=[blob, nm])
|
| 113 |
-
|
| 114 |
-
# Fixed Footer
|
| 115 |
-
gr.Markdown(elem_id="moses-foot", value="""Four integers in, full ledger out.
|
| 116 |
-
Architecture is the only variable that matters.
|
| 117 |
-
Wild-corpus values provisional \u00b7 MO\u00a7ES row verified ccusage \u00b7 * = structural estimation \u00b7 [How it works \u2197](#)""")
|
| 118 |
-
|
| 119 |
-
return _b
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
builddemo.md
DELETED
|
@@ -1,225 +0,0 @@
|
|
| 1 |
-
def _build_demo():
|
| 2 |
-
_blocks_kw = {"title": "MO\u00a7ES SigRank"}
|
| 3 |
-
try:
|
| 4 |
-
_b = gr.Blocks(css=CSS, theme=gr.themes.Base(), **_blocks_kw)
|
| 5 |
-
except TypeError:
|
| 6 |
-
_b = gr.Blocks(**_blocks_kw)
|
| 7 |
-
|
| 8 |
-
# Dynamic hero stats
|
| 9 |
-
_ops_now = operators()
|
| 10 |
-
_names = list(_ops_now.keys())
|
| 11 |
-
_ys = sorted((compute(*v)["yield"] for v in _ops_now.values()), reverse=True)
|
| 12 |
-
_lead = (_ys[0] / _ys[1]) if len(_ys) > 1 and _ys[1] > 0 else 0.0
|
| 13 |
-
|
| 14 |
-
with _b:
|
| 15 |
-
# Header Area
|
| 16 |
-
with gr.Column(elem_id="moses-hero"):
|
| 17 |
-
gr.HTML("<h1>MO\u00a7ES\u2122 SigRank</h1>"
|
| 18 |
-
"<p>the diagnostic x-ray of the token economy \u00b7 ranked by \u03a5 (Net Volumetric Yield) \u00b7 volume can't buy rank</p>")
|
| 19 |
-
gr.HTML('<div id="moses-stat-strip">'
|
| 20 |
-
f'<div>operators ranked <span>{len(_ops_now)}</span></div>'
|
| 21 |
-
f'<div>MO\u00a7ES leads by <span>{_lead:,.0f}\u00d7</span></div>'
|
| 22 |
-
'<div>architecture beats budget</div>'
|
| 23 |
-
'</div>')
|
| 24 |
-
|
| 25 |
-
# TAB 1: LEADERBOARD DETAILED VIEW
|
| 26 |
-
with gr.Tab("Leaderboard"):
|
| 27 |
-
gr.Markdown("Ranked by **\u03a5 = (Cache\u00b7Output)/Input\u00b2**. Raw Read\u00b7Create\u00b7In\u00b7Out stacked under each operator. $/1M is blended cost \u2014 efficient architecture is also the cheapest.")
|
| 28 |
-
|
| 29 |
-
with gr.Row():
|
| 30 |
-
# Left Column: The actual ranking table
|
| 31 |
-
with gr.Column(scale=7):
|
| 32 |
-
rank_by = gr.Radio(list(SORT_LABELS.keys()), value="\u03a5 yield",
|
| 33 |
-
label="Rank by \u2014 pick a column to see its leaders")
|
| 34 |
-
lb = gr.HTML(board_html())
|
| 35 |
-
rank_by.change(resort_board, rank_by, lb)
|
| 36 |
-
gr.Markdown("*Corpus is curated \u2014 pasting your usage scores you live against the field but doesn't add you to the persisted board unless you're signed in via HuggingFace.*", elem_id="moses-foot")
|
| 37 |
-
|
| 38 |
-
# Right Column: Instant Operator Profile & Card View (Sticky inspection)
|
| 39 |
-
with gr.Column(scale=5):
|
| 40 |
-
gr.Markdown("### 🔍 Operator Profile Inspector")
|
| 41 |
-
op_pick = gr.Dropdown(_names, label="Select an operator to pull their card", value=None)
|
| 42 |
-
|
| 43 |
-
# Highlight the Card visual first!
|
| 44 |
-
op_card = gr.HTML()
|
| 45 |
-
op_prof = gr.Markdown(elem_id="moses-profile")
|
| 46 |
-
|
| 47 |
-
op_pick.change(view_operator, op_pick, [op_prof, op_card])
|
| 48 |
-
|
| 49 |
-
# TAB 2: INTERACTIVE SIGNAL EVALUATION
|
| 50 |
-
with gr.Tab("Clock Your Signal"):
|
| 51 |
-
# Collapsible Documentation panel to preserve vertical space
|
| 52 |
-
with gr.Accordion("📖 Setup Instructions & Terminal Commands", open=False):
|
| 53 |
-
gr.Markdown("""
|
| 54 |
-
**\u2460 Get the importer, then run it (the real path).** Paste these three lines into your terminal:
|
| 55 |
-
```bash
|
| 56 |
-
git clone [https://github.com/SunrisesIllNeverSee/moses-sigrank](https://github.com/SunrisesIllNeverSee/moses-sigrank)
|
| 57 |
-
cd moses-sigrank
|
| 58 |
-
./sigrank
|
| 59 |
-
```
|
| 60 |
-
`./sigrank --codex` for Codex \u00b7 `./sigrank --all` for both. **Nothing leaves your computer.**
|
| 61 |
-
|
| 62 |
-
**\u2461 No terminal? Paste instead (the backup).** Run one of these, copy the JSON, drop it in the box below:
|
| 63 |
-
```bash
|
| 64 |
-
npx ccusage@latest claude --json
|
| 65 |
-
```
|
| 66 |
-
""")
|
| 67 |
-
|
| 68 |
-
with gr.Row():
|
| 69 |
-
# Left Column: Input and Local Persistence Controls
|
| 70 |
-
with gr.Column(scale=5):
|
| 71 |
-
gr.Markdown("### 📥 Token Ingestion Control")
|
| 72 |
-
if _ON_SPACE:
|
| 73 |
-
gr.LoginButton(elem_id="hf-login-btn")
|
| 74 |
-
else:
|
| 75 |
-
gr.Markdown("*HuggingFace login available on the hosted Space \u2014 local mode is transient.*", elem_id="moses-foot")
|
| 76 |
-
|
| 77 |
-
nm = gr.Textbox(label="Operator Name / Handle", placeholder="your handle", max_lines=1)
|
| 78 |
-
blob = gr.Textbox(label="ccusage JSON Output —or— Four Raw Numbers (I O C R)", lines=5,
|
| 79 |
-
placeholder='Paste ccusage json here\n\nor raw sequence format: input output cache_create cache_read')
|
| 80 |
-
|
| 81 |
-
go = gr.Button("Clock My Signal ⚡", variant="primary", elem_id="compute-btn")
|
| 82 |
-
|
| 83 |
-
# Live Placement Board loads right beneath control actions
|
| 84 |
-
gr.Markdown("### 📊 Your Live Board Placement")
|
| 85 |
-
ob = gr.HTML(board_html())
|
| 86 |
-
|
| 87 |
-
gr.Markdown("### 📈 Session History & Records")
|
| 88 |
-
hits = gr.HTML()
|
| 89 |
-
|
| 90 |
-
# Right Column: The "Minting Floor" — Shows the generated trading card immediately
|
| 91 |
-
with gr.Column(scale=6):
|
| 92 |
-
gr.Markdown("### 🎴 Minted Operator Share Card")
|
| 93 |
-
card = gr.HTML() # The beautiful HTML card layout now takes immediate priority
|
| 94 |
-
|
| 95 |
-
gr.Markdown("*Right-click → Save Image to share your architectural footprint.*", elem_id="moses-foot")
|
| 96 |
-
|
| 97 |
-
prof_bar = gr.HTML() # Raw composition layout tracks directly underneath card
|
| 98 |
-
prof = gr.Markdown(elem_id="moses-profile")
|
| 99 |
-
|
| 100 |
-
# Inline Examples block underneath the column matrix
|
| 101 |
-
gr.Examples(
|
| 102 |
-
examples=[
|
| 103 |
-
['{"totals":{"inputTokens":1251211,"outputTokens":11296121,"cacheCreationTokens":128196310,"cacheReadTokens":2555179769}}','MO\u00a7ES'],
|
| 104 |
-
['{"data":[{"inputTokens":58920000,"cachedInputTokens":707300000,"outputTokens":3500000,"reasoningOutputTokens":510000}]}','codex-operator'],
|
| 105 |
-
['1251211 11296121 128196310 2555179769', 'manual-paste'],
|
| 106 |
-
],
|
| 107 |
-
inputs=[blob, nm])
|
| 108 |
-
|
| 109 |
-
# Fixed Footer
|
| 110 |
-
gr.Markdown(elem_id="moses-foot", value="""Four integers in, full ledger out.
|
| 111 |
-
Architecture is the only variable that matters.
|
| 112 |
-
Wild-corpus values provisional \u00b7 MO\u00a7ES row verified ccusage \u00b7 * = structural estimation \u00b7 [How it works \u2197](#)""")
|
| 113 |
-
|
| 114 |
-
return _b
|
| 115 |
-
|
| 116 |
-
-----
|
| 117 |
-
|
| 118 |
-
To push your submission from "functional hackathon entry" to "leaderboard favorite," we should focus on the **psychology of the hackathon judge**.
|
| 119 |
-
|
| 120 |
-
Judges look at dozens of Spaces, often spending less than 60 seconds on each. Since your backend math is incredibly robust, your goal now is to use the frontend to create an immediate "Wow" factor and drop a heavy dose of dopamine the second someone interacts with your tool.
|
| 121 |
-
|
| 122 |
-
Here are three high-impact, tactical design thoughts to implement before you lock down your submission:
|
| 123 |
-
|
| 124 |
-
---
|
| 125 |
-
|
| 126 |
-
### 1. Fix the "Empty State" with a Holographic Placeholder
|
| 127 |
-
|
| 128 |
-
Right now, when a user first switches to the "Clock Your Signal" tab or opens the Leaderboard, the right column (`op_card = gr.HTML()`) starts completely empty. A blank space makes a UI feel broken or unfinished.
|
| 129 |
-
|
| 130 |
-
Instead of initializing it as empty, pass a default HTML string that acts as a **"ghost" or "holographic" card placeholder**. It anchors the layout and shows the user exactly what they are about to build.
|
| 131 |
-
|
| 132 |
-
**The Fix:** Update your layout variables to initialize with a blueprint card placeholder:
|
| 133 |
-
|
| 134 |
-
```python
|
| 135 |
-
# Create a visual placeholder string
|
| 136 |
-
CARD_PLACEHOLDER = """
|
| 137 |
-
<div class="sig-card rarity-common" style="opacity: 0.4; border: 2px dashed #4b5563; filter: grayscale(100%);">
|
| 138 |
-
<div class="sig-card-watermark">MO§ES™ SIGRANK</div>
|
| 139 |
-
<div class="sig-card-rarity">UNMINTED</div>
|
| 140 |
-
<div class="sig-card-name">Awaiting Operator...</div>
|
| 141 |
-
<div class="sig-card-archetype">Signal Offline</div>
|
| 142 |
-
<div class="sig-card-yield">0,000</div>
|
| 143 |
-
<div class="sig-card-yield-label">Insert Token Ledger to Scan</div>
|
| 144 |
-
</div>
|
| 145 |
-
"""
|
| 146 |
-
|
| 147 |
-
# Then drop it into your Gradio blocks initialization:
|
| 148 |
-
op_card = gr.HTML(CARD_PLACEHOLDER)
|
| 149 |
-
card = gr.HTML(CARD_PLACEHOLDER)
|
| 150 |
-
|
| 151 |
-
```
|
| 152 |
-
|
| 153 |
-
---
|
| 154 |
-
|
| 155 |
-
### 2. Turn Up the Contrast on Rarity CSS (theme.py)
|
| 156 |
-
|
| 157 |
-
Your `rarity_class(m)` function maps operators to distinct visual keys (`mythic`, `epic`, `rare`, `common`). Since your theme handles custom CSS via `theme.py`, make sure those cards look distinct and visually striking. The `MYTHIC` tier should look like a rare drop in a video game.
|
| 158 |
-
|
| 159 |
-
Add these CSS overrides to your `theme.py` file to give the trading cards a premium, tactical terminal feel:
|
| 160 |
-
|
| 161 |
-
```css
|
| 162 |
-
/* Base card enhancements */
|
| 163 |
-
.sig-card {
|
| 164 |
-
position: relative;
|
| 165 |
-
border-radius: 12px;
|
| 166 |
-
padding: 24px;
|
| 167 |
-
background: #111827;
|
| 168 |
-
border: 1px solid #1f2937;
|
| 169 |
-
box-shadow: 0 10px 15px -3px rgba(0, 0, 0, 0.5);
|
| 170 |
-
transition: all 0.3s ease;
|
| 171 |
-
}
|
| 172 |
-
|
| 173 |
-
/* Mythic Tier: Iridescent Neon Glow */
|
| 174 |
-
.sig-card.rarity-mythic {
|
| 175 |
-
border: 2px solid #c084fc;
|
| 176 |
-
box-shadow: 0 0 20px rgba(192, 132, 252, 0.25), inset 0 0 12px rgba(192, 132, 252, 0.1);
|
| 177 |
-
background: linear-gradient(145deg, #111827, #1e1b4b);
|
| 178 |
-
}
|
| 179 |
-
.sig-card.rarity-mythic .sig-card-rarity {
|
| 180 |
-
background: linear-gradient(90deg, #a855f7, #ec4899);
|
| 181 |
-
color: white;
|
| 182 |
-
}
|
| 183 |
-
|
| 184 |
-
/* Epic Tier: Cyberpunk Cyan/Blue */
|
| 185 |
-
.sig-card.rarity-epic {
|
| 186 |
-
border: 2px solid #38bdf8;
|
| 187 |
-
box-shadow: 0 0 20px rgba(56, 189, 248, 0.2);
|
| 188 |
-
background: linear-gradient(145deg, #111827, #0c4a6e);
|
| 189 |
-
}
|
| 190 |
-
.sig-card.rarity-epic .sig-card-rarity {
|
| 191 |
-
background: #0284c7;
|
| 192 |
-
color: white;
|
| 193 |
-
}
|
| 194 |
-
|
| 195 |
-
/* Rare Tier: Amber Amber Alert */
|
| 196 |
-
.sig-card.rarity-rare {
|
| 197 |
-
border: 1px solid #fbbf24;
|
| 198 |
-
box-shadow: 0 0 15px rgba(251, 191, 36, 0.1);
|
| 199 |
-
}
|
| 200 |
-
.sig-card.rarity-rare .sig-card-rarity {
|
| 201 |
-
background: #d97706;
|
| 202 |
-
color: white;
|
| 203 |
-
}
|
| 204 |
-
|
| 205 |
-
```
|
| 206 |
-
|
| 207 |
-
---
|
| 208 |
-
|
| 209 |
-
### 3. Lean Hard Into Your "Small Model" Constraint
|
| 210 |
-
|
| 211 |
-
This is the **Build Small Hackathon**. Judges are actively looking for teams that didn't just throw raw compute at a problem. You are running a razor-sharp `openbmb/MiniCPM4-0.5B` model on ZeroGPU. **Flex that.** Add a small, explicit "Resource Efficiency Footprint" indicator right beneath your stat strip at the top of the app. It reminds the judges that your app is keeping its memory footprint low while computing complex equations like:
|
| 212 |
-
|
| 213 |
-
$$\Upsilon = \frac{\text{Cache} \cdot \text{Output}}{\text{Input}^2}$$
|
| 214 |
-
|
| 215 |
-
You can easily display this using a compact row of Gradio markdown components:
|
| 216 |
-
|
| 217 |
-
> ⚙️ **Compute Footprint:** 0.5B Parameters | **Latency:** Non-blocking Deterministic Fallback Active | **Resource Category:** Tiny Titan 🍄
|
| 218 |
-
|
| 219 |
-
---
|
| 220 |
-
|
| 221 |
-
### Your Next Step
|
| 222 |
-
|
| 223 |
-
If you drop the side-by-side layout we built into your file, along with a placeholder card to handle the blank space, you have a highly competitive, beautifully functional presentation.
|
| 224 |
-
|
| 225 |
-
How is your `theme.py` currently injecting its CSS—are you loading it as a raw string block, or do we need to format these card tier styles specifically to fit inside your existing design?
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
notes:.md.md
DELETED
|
@@ -1,10 +0,0 @@
|
|
| 1 |
-
notes:
|
| 2 |
-
|
| 3 |
-
the paste section... has a hard lined input format... which is different than how ccusage prints their numbers... so we will have to figure out a way to update that... and verify the numbers self reported...
|
| 4 |
-
|
| 5 |
-
second their needs to be some some sort of time stamp on submissions... also... in order ot block people from spammign the leaderboard... only huggingface users can submit and save... their profile can load all the systems from ccusage... however they only have one entry to the leaderboard... copy and paste numbers are not saved and only get a snap shot
|
| 6 |
-
|
| 7 |
-
|
| 8 |
-
-----
|
| 9 |
-
|
| 10 |
-
the importrt section or
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
theme.py
CHANGED
|
@@ -14,20 +14,23 @@ CSS = """
|
|
| 14 |
--species-cascade: #C4923A;
|
| 15 |
}
|
| 16 |
.gradio-container, .gradio-container * { font-family: ui-monospace, "SF Mono", Menlo, monospace !important; }
|
| 17 |
-
.gradio-container { background: var(--moses-bg) !important; max-width: 1100px !important; margin: 0 auto !important; }
|
| 18 |
.dark .gradio-container, body { background: var(--moses-bg) !important; }
|
| 19 |
|
| 20 |
#moses-hero {
|
| 21 |
border-bottom: 1px solid var(--moses-gold);
|
| 22 |
-
padding:
|
| 23 |
-
margin-bottom:
|
| 24 |
position: relative;
|
| 25 |
}
|
|
|
|
|
|
|
|
|
|
| 26 |
#moses-hero h1 {
|
| 27 |
color: var(--moses-gold) !important;
|
| 28 |
-
font-size:
|
| 29 |
-
letter-spacing: 0.
|
| 30 |
-
font-weight:
|
| 31 |
margin: 0 !important;
|
| 32 |
}
|
| 33 |
#moses-hero p { color: var(--moses-dim) !important; font-size: 12px !important; margin: 6px 0 0 !important; }
|
|
@@ -44,11 +47,14 @@ CSS = """
|
|
| 44 |
.tabitem {
|
| 45 |
background: transparent !important;
|
| 46 |
border: none !important;
|
| 47 |
-
padding:
|
| 48 |
}
|
| 49 |
-
.tabitem > div { gap:
|
| 50 |
button.selected { color: var(--moses-gold) !important; border-bottom: 2px solid var(--moses-gold) !important; }
|
| 51 |
-
|
|
|
|
|
|
|
|
|
|
| 52 |
|
| 53 |
.dataframe, table { background: var(--moses-card) !important; color: var(--moses-ink) !important;
|
| 54 |
border: 1px solid var(--moses-line) !important; font-size: 12px !important; width: 100% !important; }
|
|
@@ -83,9 +89,19 @@ button.primary:hover, #compute-btn:hover { background: #d8a449 !important; }
|
|
| 83 |
#moses-foot { border-top: 1px solid var(--moses-line); padding-top: 10px; margin-top: 16px; line-height: 1.7; }
|
| 84 |
|
| 85 |
/* Structural Board Alignment Layout */
|
| 86 |
-
.moses-board { font-family: ui-monospace, monospace; margin-top: 6px; width: 100% !important; box-sizing: border-box !important;
|
| 87 |
-
|
| 88 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 89 |
.mb-head { color: #C4923A; font-size: 10px; letter-spacing: 0.06em; text-transform: uppercase;
|
| 90 |
border-bottom: 1px solid #C4923A; }
|
| 91 |
.mb-row { border-bottom: 1px solid #3A3324; color: #8a7f68; font-size: 12px; }
|
|
@@ -109,11 +125,243 @@ button.primary:hover, #compute-btn:hover { background: #d8a449 !important; }
|
|
| 109 |
.mb-row b { color: #E8E0CF; font-family: var(--font-sans, sans-serif); font-size: 13px; }
|
| 110 |
.mb-raw { color: #7a7060; font-size: 9.5px; }
|
| 111 |
.mb-num { text-align: right; }
|
| 112 |
-
.mb-y { position: relative; display: flex; align-items: center; justify-content: flex-end; gap: 6px;
|
|
|
|
| 113 |
.mb-bar { position: absolute; left: 0; top: 50%; transform: translateY(-50%); height: 14px;
|
| 114 |
background: linear-gradient(90deg, rgba(196,146,58,0.28), rgba(196,146,58,0.72)); border-radius: 2px; }
|
| 115 |
.mb-row.you .mb-bar { background: linear-gradient(90deg, rgba(196,146,58,0.4), #C4923A); }
|
| 116 |
.mb-yval { position: relative; z-index: 2; color: #E8E0CF; font-weight: 700; font-size: 12px; padding-right: 4px; }
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 117 |
.mb-foot { color: #5f573f; font-size: 10.5px; padding: 10px 8px 0; line-height: 1.6; }
|
| 118 |
|
| 119 |
/* composition bar */
|
|
@@ -213,10 +461,11 @@ button.primary:hover, #compute-btn:hover { background: #d8a449 !important; }
|
|
| 213 |
|
| 214 |
/* "Rank by" radio -> horizontal pill / segmented control (not a gray form) */
|
| 215 |
#rank-by { border: none !important; background: transparent !important; padding: 0 !important; }
|
| 216 |
-
#rank-by .wrap { display: flex !important; flex-wrap: wrap; gap: 6px; }
|
| 217 |
#rank-by .wrap label {
|
|
|
|
| 218 |
background: var(--moses-card); border: 1px solid var(--moses-line);
|
| 219 |
-
border-radius: 16px; padding:
|
| 220 |
font-size: 11px; cursor: pointer; margin: 0 !important; }
|
| 221 |
#rank-by .wrap label.selected, #rank-by .wrap label:has(input:checked) {
|
| 222 |
border-color: var(--moses-gold) !important; color: var(--moses-gold) !important;
|
|
@@ -235,13 +484,64 @@ button.primary:hover, #compute-btn:hover { background: #d8a449 !important; }
|
|
| 235 |
|
| 236 |
footer { display: none !important; }
|
| 237 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 238 |
@media (max-width: 700px) {
|
|
|
|
|
|
|
|
|
|
| 239 |
.mb-head, .mb-row {
|
| 240 |
-
grid-template-columns: 22px 1fr
|
|
|
|
| 241 |
font-size: 11px;
|
| 242 |
}
|
| 243 |
-
|
| 244 |
-
.mb-head span:nth-child(
|
| 245 |
-
.mb-row span:nth-child(
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 246 |
}
|
| 247 |
"""
|
|
|
|
| 14 |
--species-cascade: #C4923A;
|
| 15 |
}
|
| 16 |
.gradio-container, .gradio-container * { font-family: ui-monospace, "SF Mono", Menlo, monospace !important; }
|
| 17 |
+
.gradio-container { background: var(--moses-bg) !important; max-width: 1100px !important; margin: 0 auto !important; overflow-x: hidden !important; }
|
| 18 |
.dark .gradio-container, body { background: var(--moses-bg) !important; }
|
| 19 |
|
| 20 |
#moses-hero {
|
| 21 |
border-bottom: 1px solid var(--moses-gold);
|
| 22 |
+
padding: 10px 0 4px;
|
| 23 |
+
margin-bottom: 0;
|
| 24 |
position: relative;
|
| 25 |
}
|
| 26 |
+
/* kill the dead space: Blocks root column adds a 16px gap between hero and tabs */
|
| 27 |
+
.column:has(> #moses-hero) { gap: 4px !important; }
|
| 28 |
+
.tab-wrapper { margin: 0 0 2px 0 !important; padding: 0 !important; }
|
| 29 |
#moses-hero h1 {
|
| 30 |
color: var(--moses-gold) !important;
|
| 31 |
+
font-size: 66px !important;
|
| 32 |
+
letter-spacing: 0.14em !important;
|
| 33 |
+
font-weight: 800 !important;
|
| 34 |
margin: 0 !important;
|
| 35 |
}
|
| 36 |
#moses-hero p { color: var(--moses-dim) !important; font-size: 12px !important; margin: 6px 0 0 !important; }
|
|
|
|
| 47 |
.tabitem {
|
| 48 |
background: transparent !important;
|
| 49 |
border: none !important;
|
| 50 |
+
padding: 2px 0px !important;
|
| 51 |
}
|
| 52 |
+
.tabitem > div { gap: 10px !important; }
|
| 53 |
button.selected { color: var(--moses-gold) !important; border-bottom: 2px solid var(--moses-gold) !important; }
|
| 54 |
+
/* centered nav links (Gradio 6.x uses .tab-container, not .tab-nav) */
|
| 55 |
+
.tab-nav, .tab-container { justify-content: center !important; gap: 6px; }
|
| 56 |
+
.tab-nav button, .tab-container > button { color: var(--moses-dim) !important; font-size: 14px !important;
|
| 57 |
+
letter-spacing: 0.08em; text-transform: uppercase; font-weight: 700 !important; padding: 8px 16px !important; }
|
| 58 |
|
| 59 |
.dataframe, table { background: var(--moses-card) !important; color: var(--moses-ink) !important;
|
| 60 |
border: 1px solid var(--moses-line) !important; font-size: 12px !important; width: 100% !important; }
|
|
|
|
| 89 |
#moses-foot { border-top: 1px solid var(--moses-line); padding-top: 10px; margin-top: 16px; line-height: 1.7; }
|
| 90 |
|
| 91 |
/* Structural Board Alignment Layout */
|
| 92 |
+
.moses-board { font-family: ui-monospace, monospace; margin-top: 6px; width: 100% !important; box-sizing: border-box !important;
|
| 93 |
+
border: 1px solid var(--moses-line); border-radius: 8px; overflow: hidden; }
|
| 94 |
+
.mb-head, .mb-row { display: grid; grid-template-columns: 26px 1.5fr 0.5fr 0.55fr 0.5fr 0.55fr 0.5fr 0.6fr 0.85fr;
|
| 95 |
+
align-items: center; gap: 8px; padding: 7px 12px; width: 100%; box-sizing: border-box; }
|
| 96 |
+
.mb-head > span, .mb-row > span { min-width: 0; } /* let cells shrink so nothing overflows */
|
| 97 |
+
.mb-row b { font-size: 12px !important; }
|
| 98 |
+
.mb-op b { white-space: nowrap; }
|
| 99 |
+
.mb-ledger { color: #7a7060; font-size: 10px; font-family: ui-monospace, monospace; text-align: right;
|
| 100 |
+
white-space: nowrap; overflow: hidden; text-overflow: ellipsis; border-left: 1px solid #2c2718; padding-left: 8px; }
|
| 101 |
+
.mb-head .mb-ledger { color: #C4923A; }
|
| 102 |
+
/* sharp tabular separators between numeric columns */
|
| 103 |
+
.mb-head .mb-num, .mb-row .mb-num, .mb-head .mb-y, .mb-row .mb-y {
|
| 104 |
+
border-left: 1px solid #2c2718; padding-left: 8px; }
|
| 105 |
.mb-head { color: #C4923A; font-size: 10px; letter-spacing: 0.06em; text-transform: uppercase;
|
| 106 |
border-bottom: 1px solid #C4923A; }
|
| 107 |
.mb-row { border-bottom: 1px solid #3A3324; color: #8a7f68; font-size: 12px; }
|
|
|
|
| 125 |
.mb-row b { color: #E8E0CF; font-family: var(--font-sans, sans-serif); font-size: 13px; }
|
| 126 |
.mb-raw { color: #7a7060; font-size: 9.5px; }
|
| 127 |
.mb-num { text-align: right; }
|
| 128 |
+
.mb-y { position: relative; display: flex; align-items: center; justify-content: flex-end; gap: 6px;
|
| 129 |
+
min-height: 20px; overflow: hidden; border-radius: 3px; }
|
| 130 |
.mb-bar { position: absolute; left: 0; top: 50%; transform: translateY(-50%); height: 14px;
|
| 131 |
background: linear-gradient(90deg, rgba(196,146,58,0.28), rgba(196,146,58,0.72)); border-radius: 2px; }
|
| 132 |
.mb-row.you .mb-bar { background: linear-gradient(90deg, rgba(196,146,58,0.4), #C4923A); }
|
| 133 |
.mb-yval { position: relative; z-index: 2; color: #E8E0CF; font-weight: 700; font-size: 12px; padding-right: 4px; }
|
| 134 |
+
/* warmer, more inviting rows: subtle gold wash on hover, breathing room for the ledger line */
|
| 135 |
+
.mb-row { transition: background 0.12s ease; }
|
| 136 |
+
.mb-row:hover { background: rgba(196,146,58,0.07); }
|
| 137 |
+
.mb-raw { display: inline-block; margin-top: 3px; letter-spacing: 0.02em; opacity: 0.82; }
|
| 138 |
+
/* warm focus ring on the operator pickers */
|
| 139 |
+
#op-pick input:focus, #cmp-pick input:focus { box-shadow: 0 0 0 1px var(--moses-gold) !important; }
|
| 140 |
+
|
| 141 |
+
/* ---------- VS / compare table ---------- */
|
| 142 |
+
.cmp-table { width: 100%; border-collapse: collapse; background: var(--moses-card);
|
| 143 |
+
border: 1px solid var(--moses-line); border-radius: 6px; overflow: hidden; margin-top: 6px; }
|
| 144 |
+
.cmp-table th, .cmp-table td { padding: 10px 12px; text-align: right; font-size: 13px;
|
| 145 |
+
border-bottom: 1px solid var(--moses-line); }
|
| 146 |
+
.cmp-table thead th { color: var(--moses-gold); text-transform: uppercase; font-size: 11px;
|
| 147 |
+
letter-spacing: 0.05em; border-bottom: 1px solid var(--moses-gold); }
|
| 148 |
+
.cmp-table th.cmp-op { color: var(--moses-ink); font-weight: 700; }
|
| 149 |
+
.cmp-rowlabel { text-align: left !important; color: var(--moses-dim); text-transform: uppercase;
|
| 150 |
+
font-size: 10px; letter-spacing: 0.05em; }
|
| 151 |
+
.cmp-win { color: var(--moses-bg) !important; background: var(--moses-gold) !important;
|
| 152 |
+
font-weight: 700; }
|
| 153 |
+
.cmp-empty { padding: 26px; text-align: center; color: var(--moses-dim);
|
| 154 |
+
border: 1px dashed var(--moses-line); border-radius: 6px; background: rgba(196,146,58,0.03); }
|
| 155 |
+
.cmp-note { color: var(--moses-dim); font-size: 10px; margin-top: 8px; }
|
| 156 |
+
@media (max-width: 700px) { .cmp-table th, .cmp-table td { padding: 7px 6px; font-size: 11px; } }
|
| 157 |
+
|
| 158 |
+
/* ---------- Home / landing ---------- */
|
| 159 |
+
.hm-lead { color: var(--moses-dim); font-size: 11px; letter-spacing: 0.04em;
|
| 160 |
+
text-transform: uppercase; margin: 2px 2px 6px; }
|
| 161 |
+
.pm-wrap { overflow: hidden; border: 1px solid var(--moses-line); border-radius: 6px;
|
| 162 |
+
background: var(--moses-card); padding: 8px 0; margin-bottom: 14px; }
|
| 163 |
+
.pm-track { display: flex; gap: 10px; width: max-content; animation: pm-scroll 70s linear infinite; }
|
| 164 |
+
.pm-wrap:hover .pm-track { animation-play-state: paused; }
|
| 165 |
+
@keyframes pm-scroll { from { transform: translateX(0); } to { transform: translateX(-50%); } }
|
| 166 |
+
.pm-chip { display: flex; align-items: center; gap: 8px; padding: 6px 12px; white-space: nowrap;
|
| 167 |
+
border-left: 3px solid var(--moses-line); background: rgba(196,146,58,0.04); border-radius: 4px; }
|
| 168 |
+
.pm-chip.species-throughput { border-left-color: var(--species-throughput); }
|
| 169 |
+
.pm-chip.species-converter { border-left-color: var(--species-converter); }
|
| 170 |
+
.pm-chip.species-architect { border-left-color: var(--species-architect); }
|
| 171 |
+
.pm-chip.species-cascade { border-left-color: var(--species-cascade); }
|
| 172 |
+
.pm-rank { color: var(--moses-dim); font-size: 10px; font-weight: 700; }
|
| 173 |
+
.pm-name { color: var(--moses-ink); font-size: 12px; font-weight: 700; }
|
| 174 |
+
.pm-stat { color: var(--moses-gold); font-size: 11px; font-weight: 700; }
|
| 175 |
+
.pm-lev { color: var(--moses-dim); font-size: 10px; }
|
| 176 |
+
|
| 177 |
+
.hm-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 12px; }
|
| 178 |
+
.hm-box { cursor: pointer; border: 1px solid var(--moses-line); border-radius: 6px; background: var(--moses-card);
|
| 179 |
+
padding: 16px 18px; transition: border-color 0.12s ease, background 0.12s ease; }
|
| 180 |
+
.hm-box:hover { border-color: var(--moses-gold); background: rgba(196,146,58,0.06); }
|
| 181 |
+
.hm-title { color: var(--moses-gold); font-size: 15px; font-weight: 800; letter-spacing: 0.04em; }
|
| 182 |
+
.hm-sub { color: var(--moses-ink); font-size: 12px; font-weight: 600; margin-top: 3px; }
|
| 183 |
+
.hm-desc { color: var(--moses-dim); font-size: 11px; margin-top: 6px; line-height: 1.45; }
|
| 184 |
+
.hm-cta { color: var(--moses-gold); font-size: 10px; text-transform: uppercase;
|
| 185 |
+
letter-spacing: 0.06em; margin-top: 12px; }
|
| 186 |
+
@media (max-width: 700px) { .hm-grid { grid-template-columns: 1fr; } }
|
| 187 |
+
|
| 188 |
+
/* metric standard (feature row) */
|
| 189 |
+
.mf-head { text-align: center; color: var(--moses-ink); font-size: 26px; font-weight: 800;
|
| 190 |
+
letter-spacing: 0.01em; margin: 0 0 14px; line-height: 1.2; }
|
| 191 |
+
.mf-head span { color: var(--moses-gold); text-shadow: 0 0 18px rgba(196,146,58,0.35); }
|
| 192 |
+
@media (max-width: 700px) { .mf-head { font-size: 20px; } }
|
| 193 |
+
.mf-grid { display: grid; grid-template-columns: repeat(5, 1fr); gap: 10px; margin-bottom: 14px; }
|
| 194 |
+
/* live-status box (sits between SNR and 10x) */
|
| 195 |
+
.mf-status { text-align: left; }
|
| 196 |
+
.ms-title { color: #4ade80; font-size: 12px; font-weight: 800; letter-spacing: 0.06em;
|
| 197 |
+
text-transform: uppercase; margin-bottom: 8px; }
|
| 198 |
+
.ms-dot { color: #22c55e; }
|
| 199 |
+
.ms-grid { display: grid; grid-template-columns: 1fr auto; gap: 3px 8px; font-size: 11px; align-items: baseline; }
|
| 200 |
+
.ms-grid > span:nth-child(odd) { color: var(--moses-dim); text-transform: uppercase; letter-spacing: 0.03em; }
|
| 201 |
+
.ms-grid > span:nth-child(even) { text-align: right; font-weight: 800; }
|
| 202 |
+
.ms-tot { color: var(--moses-ink); }
|
| 203 |
+
.mf-box { border: 1px solid var(--moses-gold); border-radius: 6px; background: rgba(196,146,58,0.06);
|
| 204 |
+
padding: 12px; text-align: center; }
|
| 205 |
+
.mf-sym { color: var(--moses-dim); font-size: 12px; font-weight: 700; text-transform: uppercase; letter-spacing: 0.08em; }
|
| 206 |
+
.mf-big { color: var(--moses-gold); font-size: 32px; font-weight: 800; line-height: 1.05; margin: 4px 0 2px;
|
| 207 |
+
text-shadow: 0 0 16px rgba(196,146,58,0.3); }
|
| 208 |
+
.mf-form { color: var(--moses-dim); font-size: 9.5px; font-family: ui-monospace, monospace; }
|
| 209 |
+
.mf-tag { color: var(--moses-dim); font-size: 10px; text-transform: uppercase; letter-spacing: 0.04em; margin-top: 4px; }
|
| 210 |
+
@media (max-width: 700px) { .mf-grid { grid-template-columns: 1fr 1fr; } }
|
| 211 |
+
|
| 212 |
+
/* mini samples inside section boxes */
|
| 213 |
+
.hm-sample { margin: 10px 0; padding: 8px 10px; border: 1px solid var(--moses-line);
|
| 214 |
+
border-radius: 4px; background: var(--moses-bg); font-size: 11px; }
|
| 215 |
+
.sm-row { display: flex; gap: 8px; align-items: center; padding: 2px 0; }
|
| 216 |
+
.sm-rk { color: var(--moses-dim); font-size: 10px; width: 22px; }
|
| 217 |
+
.sm-nm { color: var(--moses-ink); font-weight: 700; flex: 1; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
|
| 218 |
+
.sm-y { color: var(--moses-gold); font-weight: 700; }
|
| 219 |
+
.sm-y2 { color: var(--moses-dim); font-weight: 700; }
|
| 220 |
+
.sm-card .sm-nm { font-size: 12px; }
|
| 221 |
+
.sm-kv { color: var(--moses-dim); font-size: 10px; margin-top: 3px; }
|
| 222 |
+
.sm-vs { display: flex; gap: 6px; align-items: center; flex-wrap: wrap; }
|
| 223 |
+
.sm-vsx { color: var(--moses-gold); font-size: 10px; text-transform: uppercase; }
|
| 224 |
+
.sm-create { display: flex; gap: 6px; align-items: center; flex-wrap: wrap; }
|
| 225 |
+
.sm-create code { color: var(--moses-dim); font-size: 10px; }
|
| 226 |
+
.sm-arrow { color: var(--moses-gold); }
|
| 227 |
+
|
| 228 |
+
/* home footer: demo video + steps + links */
|
| 229 |
+
.hm-foot { display: grid; grid-template-columns: 1fr 1.4fr 0.8fr; gap: 16px; margin-top: 14px;
|
| 230 |
+
padding-top: 14px; border-top: 1px solid var(--moses-line); }
|
| 231 |
+
.hf-h { color: var(--moses-gold); font-size: 11px; text-transform: uppercase; letter-spacing: 0.05em; margin-bottom: 8px; }
|
| 232 |
+
.hf-btn { display: inline-block; background: var(--moses-gold); color: var(--moses-bg) !important;
|
| 233 |
+
padding: 8px 14px; border-radius: 5px; font-weight: 700; font-size: 12px; text-decoration: none; }
|
| 234 |
+
.hf-steps { margin: 0; padding-left: 18px; color: var(--moses-dim); font-size: 11px; line-height: 1.7; }
|
| 235 |
+
.hf-steps code { color: var(--moses-ink); font-size: 10px; }
|
| 236 |
+
.hf-steps b { color: var(--moses-gold); }
|
| 237 |
+
.hf-link { display: block; color: var(--moses-gold) !important; font-size: 12px; margin-bottom: 6px; text-decoration: none; }
|
| 238 |
+
.hf-link:hover { text-decoration: underline; }
|
| 239 |
+
@media (max-width: 700px) { .hm-foot { grid-template-columns: 1fr; } }
|
| 240 |
+
|
| 241 |
+
/* ---------- mini page thumbnails (real HTML scaled down) ---------- */
|
| 242 |
+
.mini { border-radius: 8px; overflow: hidden; background: var(--moses-card);
|
| 243 |
+
border: 1px solid var(--moses-line); box-shadow: 0 6px 20px rgba(0,0,0,0.5); margin-bottom: 12px; }
|
| 244 |
+
.mini-chrome { display: flex; align-items: center; gap: 5px; padding: 6px 9px;
|
| 245 |
+
border-bottom: 1px solid var(--moses-line); background: linear-gradient(90deg,#241f17,#15130f); }
|
| 246 |
+
.mini-chrome span { width: 7px; height: 7px; border-radius: 50%; background: #3A3324; flex: none; }
|
| 247 |
+
.mini-cap { margin-left: auto; font-size: 8.5px; text-transform: uppercase;
|
| 248 |
+
letter-spacing: 0.08em; color: var(--moses-dim); }
|
| 249 |
+
.mini-view { position: relative; height: 190px; overflow: hidden; background: var(--moses-bg); }
|
| 250 |
+
.mini-scale { position: absolute; top: 0; left: 0; width: 323%;
|
| 251 |
+
transform: scale(0.31); transform-origin: top left; pointer-events: none; }
|
| 252 |
+
/* per-section accent on the chrome dot + frame + glow */
|
| 253 |
+
.mini-gold { border-color: rgba(196,146,58,0.55); } .mini-gold .mini-chrome span:first-child { background: #C4923A; }
|
| 254 |
+
.mini-purple { border-color: rgba(139,92,246,0.55); } .mini-purple .mini-chrome span:first-child { background: #8b5cf6; }
|
| 255 |
+
.mini-blue { border-color: rgba(59,130,246,0.55); } .mini-blue .mini-chrome span:first-child { background: #3b82f6; }
|
| 256 |
+
.mini-green { border-color: rgba(34,197,94,0.55); } .mini-green .mini-chrome span:first-child { background: #22c55e; }
|
| 257 |
+
|
| 258 |
+
/* colorful section accents */
|
| 259 |
+
.hm-gold { border-top: 3px solid #C4923A; } .hm-gold .hm-title { color: #C4923A; }
|
| 260 |
+
.hm-purple { border-top: 3px solid #8b5cf6; } .hm-purple .hm-title { color: #a78bfa; }
|
| 261 |
+
.hm-blue { border-top: 3px solid #3b82f6; } .hm-blue .hm-title { color: #60a5fa; }
|
| 262 |
+
.hm-green { border-top: 3px solid #22c55e; } .hm-green .hm-title { color: #4ade80; }
|
| 263 |
+
.hm-gold:hover { box-shadow: 0 0 0 1px #C4923A, 0 10px 26px rgba(196,146,58,0.18); border-color: #C4923A; }
|
| 264 |
+
.hm-purple:hover { box-shadow: 0 0 0 1px #8b5cf6, 0 10px 26px rgba(139,92,246,0.18); border-color: #8b5cf6; }
|
| 265 |
+
.hm-blue:hover { box-shadow: 0 0 0 1px #3b82f6, 0 10px 26px rgba(59,130,246,0.18); border-color: #3b82f6; }
|
| 266 |
+
.hm-green:hover { box-shadow: 0 0 0 1px #22c55e, 0 10px 26px rgba(34,197,94,0.18); border-color: #22c55e; }
|
| 267 |
+
|
| 268 |
+
/* create-tab mock (rendered inside its thumbnail) */
|
| 269 |
+
.cr-mock { padding: 16px; font-size: 14px; }
|
| 270 |
+
.cr-code { color: #4ade80; background: #0f0d0a; padding: 10px 12px; border-radius: 5px;
|
| 271 |
+
font-family: ui-monospace, monospace; }
|
| 272 |
+
.cr-box { color: var(--moses-dim); border: 1px dashed var(--moses-line); padding: 12px;
|
| 273 |
+
margin: 10px 0; border-radius: 5px; }
|
| 274 |
+
.cr-box b { color: var(--moses-ink); }
|
| 275 |
+
.cr-btn { background: var(--moses-gold); color: var(--moses-bg); text-align: center;
|
| 276 |
+
padding: 10px; border-radius: 5px; font-weight: 800; }
|
| 277 |
+
.cr-res { color: var(--moses-gold); margin-top: 10px; font-weight: 800; text-align: center; }
|
| 278 |
+
|
| 279 |
+
/* ---------- metrics explainer (SigRank vs standard) ---------- */
|
| 280 |
+
.mx-wrap { margin-top: 8px; }
|
| 281 |
+
.mx-analogy { color: var(--moses-ink); font-size: 14px; line-height: 1.55; text-align: center;
|
| 282 |
+
max-width: 760px; margin: 0 auto 18px; }
|
| 283 |
+
.mx-analogy .mx-gold, .mx-bottom .mx-gold { color: var(--moses-gold); font-weight: 700; }
|
| 284 |
+
.mx-cols { display: grid; grid-template-columns: 1fr 1fr; gap: 14px; }
|
| 285 |
+
.mx-col { border: 1px solid var(--moses-line); border-radius: 8px; padding: 14px 16px; background: var(--moses-card); }
|
| 286 |
+
.mx-col-sig { border-color: rgba(196,146,58,0.5); background: rgba(196,146,58,0.05); }
|
| 287 |
+
.mx-col-head { font-size: 13px; font-weight: 800; letter-spacing: 0.05em; text-transform: uppercase;
|
| 288 |
+
margin-bottom: 12px; padding-bottom: 8px; border-bottom: 1px solid var(--moses-line); }
|
| 289 |
+
.mx-col-std .mx-col-head { color: var(--moses-dim); }
|
| 290 |
+
.mx-col-sig .mx-col-head { color: var(--moses-gold); }
|
| 291 |
+
.mx-item { padding: 9px 0; border-bottom: 1px solid #2c2718; }
|
| 292 |
+
.mx-item:last-of-type { border-bottom: 0; }
|
| 293 |
+
.mx-item-head { display: flex; justify-content: space-between; align-items: baseline; gap: 10px; flex-wrap: wrap; }
|
| 294 |
+
.mx-name { color: var(--moses-ink); font-weight: 700; font-size: 12.5px; }
|
| 295 |
+
.mx-form { color: var(--moses-gold); font-family: ui-monospace, monospace; font-size: 11px; }
|
| 296 |
+
.mx-desc { color: var(--moses-dim); font-size: 11.5px; line-height: 1.45; margin-top: 3px; }
|
| 297 |
+
.mx-vs { color: #a89e85; font-size: 11.5px; line-height: 1.45; margin-top: 4px; }
|
| 298 |
+
.mx-vs b { color: var(--moses-dim); }
|
| 299 |
+
.mx-result { color: var(--moses-gold); font-size: 11.5px; margin-top: 3px; font-weight: 600; }
|
| 300 |
+
.mx-foot { color: var(--moses-dim); font-size: 11px; margin-top: 12px; padding-top: 10px;
|
| 301 |
+
border-top: 1px dashed var(--moses-line); }
|
| 302 |
+
.mx-foot b { color: var(--moses-ink); }
|
| 303 |
+
.mx-table { width: 100%; border-collapse: collapse; margin: 18px 0; background: var(--moses-card);
|
| 304 |
+
border: 1px solid var(--moses-line); border-radius: 8px; overflow: hidden; }
|
| 305 |
+
.mx-table th, .mx-table td { padding: 10px 12px; text-align: left; font-size: 12px;
|
| 306 |
+
border-bottom: 1px solid var(--moses-line); }
|
| 307 |
+
.mx-table thead th { color: var(--moses-gold); text-transform: uppercase; font-size: 10.5px;
|
| 308 |
+
letter-spacing: 0.05em; border-bottom: 1px solid var(--moses-gold); }
|
| 309 |
+
.mx-table .mx-aspect { color: var(--moses-dim); font-weight: 700; text-transform: uppercase;
|
| 310 |
+
font-size: 10px; letter-spacing: 0.04em; }
|
| 311 |
+
.mx-table td { color: #a89e85; }
|
| 312 |
+
.mx-table .mx-win { color: var(--moses-ink); font-weight: 600; background: rgba(196,146,58,0.06); }
|
| 313 |
+
.mx-thermo { border-left: 3px solid var(--moses-gold); background: rgba(196,146,58,0.05);
|
| 314 |
+
border-radius: 0 6px 6px 0; padding: 12px 16px; margin: 16px 0; color: #a89e85; font-size: 12px; line-height: 1.6; }
|
| 315 |
+
.mx-thermo b { color: var(--moses-ink); }
|
| 316 |
+
.mx-thermo-h { color: var(--moses-gold); font-weight: 800; font-size: 12px; letter-spacing: 0.03em; margin-bottom: 6px; }
|
| 317 |
+
.mx-bottom { text-align: center; color: var(--moses-ink); font-size: 13px; line-height: 1.55;
|
| 318 |
+
max-width: 760px; margin: 16px auto 0; }
|
| 319 |
+
@media (max-width: 700px) { .mx-cols { grid-template-columns: 1fr; } .mx-analogy { font-size: 13px; } }
|
| 320 |
+
|
| 321 |
+
/* ---------- MO§ES logo (CSS-drawn: gold § in concentric rings on a dark disc) ---------- */
|
| 322 |
+
.moses-logo { position: relative; width: 82px; height: 82px; border-radius: 50%;
|
| 323 |
+
background: #0F0D0A; border: 2px solid var(--moses-gold); display: flex;
|
| 324 |
+
align-items: center; justify-content: center; box-shadow: 0 0 18px rgba(196,146,58,0.45); }
|
| 325 |
+
.moses-logo::before { content: ''; position: absolute; inset: 6px; border-radius: 50%;
|
| 326 |
+
border: 1px solid rgba(196,146,58,0.4); }
|
| 327 |
+
.ml-s { color: var(--moses-gold); font-family: Georgia, "Times New Roman", serif;
|
| 328 |
+
font-size: 48px; font-weight: 700; line-height: 1; }
|
| 329 |
+
|
| 330 |
+
/* ---------- middle nav link (Leaders) emphasized ---------- */
|
| 331 |
+
.tab-container > button:nth-child(3), .tab-nav > button:nth-child(3) {
|
| 332 |
+
color: var(--moses-gold) !important; font-size: 17px !important; font-weight: 800 !important;
|
| 333 |
+
text-shadow: 0 0 14px rgba(196,146,58,0.4); }
|
| 334 |
+
|
| 335 |
+
/* ---------- hero status + live counters (top-right) ---------- */
|
| 336 |
+
.hero-stat { text-align: right; font-size: 10px; letter-spacing: 0.06em; line-height: 1.65;
|
| 337 |
+
font-weight: 700; color: var(--moses-dim); white-space: nowrap; min-width: 196px;
|
| 338 |
+
margin-top: 34px; } /* clear the HF Space pill (burnmydays/sigrank ♡) in embedded view */
|
| 339 |
+
.hs-row { display: flex; justify-content: space-between; gap: 16px; }
|
| 340 |
+
.hs-div { height: 1px; background: var(--moses-line); margin: 5px 0; }
|
| 341 |
+
.hs-burn { color: #ef6b6b; } .hs-build { color: #4ade80; } .hs-tenx { color: var(--moses-gold); }
|
| 342 |
+
@media (max-width: 700px) { .hero-stat { display: none; } }
|
| 343 |
+
|
| 344 |
+
/* ---------- equation boxes: median/avg + hover description ---------- */
|
| 345 |
+
.mf-box { position: relative; cursor: help; }
|
| 346 |
+
.mf-stat { color: var(--moses-dim); font-size: 9.5px; margin-top: 5px; letter-spacing: 0.02em; }
|
| 347 |
+
.mf-tip { position: absolute; left: 50%; bottom: calc(100% + 8px); transform: translateX(-50%);
|
| 348 |
+
width: 220px; max-width: 70vw; background: #0f0d0a; color: var(--moses-ink);
|
| 349 |
+
border: 1px solid var(--moses-gold); border-radius: 6px; padding: 10px 12px; font-size: 11px;
|
| 350 |
+
line-height: 1.45; text-align: left; opacity: 0; visibility: hidden; transition: opacity 0.15s ease;
|
| 351 |
+
z-index: 60; box-shadow: 0 8px 24px rgba(0,0,0,0.6); }
|
| 352 |
+
.mf-box:hover .mf-tip, .mf-box:focus .mf-tip { opacity: 1; visibility: visible; }
|
| 353 |
+
.mf-sub { text-align: center; color: var(--moses-dim); font-size: 10px; margin: -4px 0 14px; }
|
| 354 |
+
|
| 355 |
+
/* ---------- reports: learn-from insights ---------- */
|
| 356 |
+
.ins-wrap { display: grid; grid-template-columns: 1fr 1fr; gap: 12px; margin-top: 14px; }
|
| 357 |
+
.ins-block { border: 1px solid var(--moses-line); border-radius: 6px; padding: 12px 14px; }
|
| 358 |
+
.ins-good { border-left: 3px solid #4ade80; background: rgba(34,197,94,0.05); }
|
| 359 |
+
.ins-avoid { border-left: 3px solid #ef6b6b; background: rgba(239,107,107,0.05); }
|
| 360 |
+
.ins-h { font-size: 11px; text-transform: uppercase; letter-spacing: 0.05em; font-weight: 800; margin-bottom: 6px; }
|
| 361 |
+
.ins-good .ins-h { color: #4ade80; } .ins-avoid .ins-h { color: #ef6b6b; }
|
| 362 |
+
.ins-block ul { margin: 0; padding-left: 16px; }
|
| 363 |
+
.ins-block li { color: var(--moses-dim); font-size: 11.5px; line-height: 1.5; margin-bottom: 4px; }
|
| 364 |
+
@media (max-width: 700px) { .ins-wrap { grid-template-columns: 1fr; } }
|
| 365 |
.mb-foot { color: #5f573f; font-size: 10.5px; padding: 10px 8px 0; line-height: 1.6; }
|
| 366 |
|
| 367 |
/* composition bar */
|
|
|
|
| 461 |
|
| 462 |
/* "Rank by" radio -> horizontal pill / segmented control (not a gray form) */
|
| 463 |
#rank-by { border: none !important; background: transparent !important; padding: 0 !important; }
|
| 464 |
+
#rank-by .wrap { display: flex !important; flex-wrap: wrap; gap: 6px; justify-content: center !important; }
|
| 465 |
#rank-by .wrap label {
|
| 466 |
+
flex: 1 1 0; max-width: 150px; text-align: center;
|
| 467 |
background: var(--moses-card); border: 1px solid var(--moses-line);
|
| 468 |
+
border-radius: 16px; padding: 5px 12px; color: var(--moses-dim);
|
| 469 |
font-size: 11px; cursor: pointer; margin: 0 !important; }
|
| 470 |
#rank-by .wrap label.selected, #rank-by .wrap label:has(input:checked) {
|
| 471 |
border-color: var(--moses-gold) !important; color: var(--moses-gold) !important;
|
|
|
|
| 484 |
|
| 485 |
footer { display: none !important; }
|
| 486 |
|
| 487 |
+
/* ---------- metrics key (collapsible legend under the board) ---------- */
|
| 488 |
+
.metric-key { margin: 10px 2px 0; border: 1px solid #3A3324; border-radius: 6px;
|
| 489 |
+
background: rgba(196,146,58,0.04); }
|
| 490 |
+
.metric-key summary { cursor: pointer; padding: 9px 12px; color: #C4923A;
|
| 491 |
+
font-size: 12px; font-weight: 700; letter-spacing: 0.04em; text-transform: uppercase;
|
| 492 |
+
list-style: none; }
|
| 493 |
+
.metric-key summary::-webkit-details-marker { display: none; }
|
| 494 |
+
.metric-key summary::before { content: "▸ "; color: #8a7f68; }
|
| 495 |
+
.metric-key[open] summary::before { content: "▾ "; }
|
| 496 |
+
.metric-key .mk-hint { color: #8a7f68; font-weight: 400; text-transform: none;
|
| 497 |
+
letter-spacing: 0; font-size: 11px; }
|
| 498 |
+
.mk-legend { padding: 4px 12px 12px; }
|
| 499 |
+
.mk-note { color: #8a7f68; font-size: 11px; margin: 2px 0 10px; }
|
| 500 |
+
.mk-note b { color: #C4923A; }
|
| 501 |
+
.mk-row { display: grid; grid-template-columns: 96px 150px 130px 1fr; gap: 8px;
|
| 502 |
+
align-items: baseline; padding: 6px 0; border-top: 1px solid #2c2718; }
|
| 503 |
+
.mk-name { color: #E8E0CF; font-weight: 700; font-size: 12px; }
|
| 504 |
+
.mk-form { color: #C4923A; font-family: ui-monospace, monospace; font-size: 11px; }
|
| 505 |
+
.mk-alias { color: #8a7f68; font-size: 11px; font-style: italic; }
|
| 506 |
+
.mk-desc { color: #a89e85; font-size: 11px; line-height: 1.45; }
|
| 507 |
+
@media (max-width: 700px) {
|
| 508 |
+
/* stack each metric into a card on phones */
|
| 509 |
+
.mk-row { grid-template-columns: 1fr; gap: 2px; }
|
| 510 |
+
.mk-form { font-size: 10px; }
|
| 511 |
+
}
|
| 512 |
+
|
| 513 |
@media (max-width: 700px) {
|
| 514 |
+
/* mobile: collapse both boards to rank · operator · Υ. The numeric middle
|
| 515 |
+
columns drop out entirely instead of being crushed into too-few tracks.
|
| 516 |
+
!important beats the slim board's inline grid-template-columns. */
|
| 517 |
.mb-head, .mb-row {
|
| 518 |
+
grid-template-columns: 22px 1fr 72px !important;
|
| 519 |
+
gap: 6px !important;
|
| 520 |
font-size: 11px;
|
| 521 |
}
|
| 522 |
+
.mb-num { display: none !important; }
|
| 523 |
+
.mb-head span:nth-child(3), .mb-head span:nth-child(4),
|
| 524 |
+
.mb-row span:nth-child(3), .mb-row span:nth-child(4) { display: none !important; }
|
| 525 |
+
.mb-op { min-width: 0; overflow-wrap: anywhere; }
|
| 526 |
+
.mb-raw { font-size: 9px; line-height: 1.35; }
|
| 527 |
+
.mb-ledger { display: none !important; }
|
| 528 |
+
.mb-y, .mb-yval { font-size: 11px !important; }
|
| 529 |
+
}
|
| 530 |
+
|
| 531 |
+
@media (max-width: 700px) {
|
| 532 |
+
/* Mobile overflow fix. Two real causes (found via live DOM inspection):
|
| 533 |
+
1) Gradio's fillable container + flex children (default min-width:auto) refuse
|
| 534 |
+
to shrink below content, pinning the page at ~1100px and scrolling sideways.
|
| 535 |
+
2) the marquee track is ~5000px wide; its wrapper must hard-clip.
|
| 536 |
+
min-width:0 lets the flex children collapse to the viewport. */
|
| 537 |
+
html, body { overflow-x: hidden !important; max-width: 100vw !important; }
|
| 538 |
+
.gradio-container, .main, .wrap, .contain, .column, .block {
|
| 539 |
+
max-width: 100% !important; min-width: 0 !important; }
|
| 540 |
+
.pm-wrap { max-width: 100% !important; overflow: hidden !important; }
|
| 541 |
+
.gradio-container { padding-left: 8px !important; padding-right: 8px !important; }
|
| 542 |
+
#moses-hero h1 { font-size: 34px !important; letter-spacing: 0.08em !important; }
|
| 543 |
+
#moses-hero { padding-top: 26px; } /* clear the HF Space pill on phones */
|
| 544 |
+
#moses-hero p { font-size: 12px !important; }
|
| 545 |
+
#rank-by, #rank-by .wrap { flex-wrap: wrap !important; } /* Rank-by chips wrap, not overflow */
|
| 546 |
}
|
| 547 |
"""
|