Skip to content

SHADOW — Spec 007 model path

Naming: this page is Hyperlexical (model / train / eval / E2 / name_gate claim). Harvest and live ingest are ne0l0gist. Repo Hyperlex is the transitional shell. The earned Hub name still requires E2 (name_gate is false).

The Hermes skill is the current operator surface. This page is the model path: a learned encoder that starts as T0 and may become T1 after E2.

Not on Hyperlex API_V1. Not a Hugging Face model. Not named Hyperlexical until eval gate E2 passes on Spark.

Specify is locked C1–C52 plus A5 milestones. Implement on main is the stub, harvest, eval harness, and gated Spark loop.

Trajectory (T0 → T1)

Tier Meaning Name allowed State today
Skill Hermes CLI + package Hyperlex (the skill) Shipping v0.4.0
T0 Base encoder + classify heads hyperlex-encoder-* only Specified. Not Hyperlexical.
T1 Encoder + unbind heads; E2 vs Spec 004 hyperlex-structure-* / Hyperlexical Not earned. E2 Spark-blocked.
T2 Separate generative LoRA out of this cycle Not an implement target

name_gate stays false until E2. Classify volume ready ≠ T1.

Honest gates (2026-09-10 PT evening)

Surface n Notes
Local SoT 4333 402 OBSERVED / 3931 INFERRED. Not in git.
--include-live export 6506 classify 2437 · unbind 1345 · negatives 208 · gaps 0/0/0
Tracked seed civilian.v0.1.jsonl 883 Snapshot only. Not the train SoT.

Danny ~2500 candidate bar: met. Hermes 913 / “gap to 2500” is superseded. Afternoon store family-labeled 1789 is the blanket-yes receipt figure.

Gate State
Classify volume Ready — operator --include-live family classify 2437.
name_gate false. Volume does not name the model. Gate stays false until E2 passes on Spark.
E2 vs Spec 004 FAIL on the stub (expected). A trained E2 is Spark-blocked. Seed smoke is not a pass.
Hub No upload. Skeleton only. Weights stay on Spark.
Families 8. No ninth family.
Brier null on every packet.

Commands

PYTHONPATH=scripts/shadow python3 -m hyperlexical.infer --text rizz --offline
PYTHONPATH=scripts/shadow python3 -m hyperlexical.ingest_tap --dry-run
PYTHONPATH=scripts/shadow python3 -m hyperlexical.export
PYTHONPATH=scripts/shadow python3 -m hyperlexical.export --include-live
PYTHONPATH=scripts/shadow python3 -m hyperlexical.eval_unbind
PYTHONPATH=scripts/shadow python3 -m hyperlexical.preflight
PYTHONPATH=scripts/shadow python3 -m hyperlexical.train --offline

eval_unbind exit 3 on the stub is expected (E2 fail). train without Spark env exits 2.

Spark

Bring-up is procedure, not a product card. A seed smoke that ends with E2 failing and a receipt written is a successful harness check — not a Hyperlexical name.

Doc Role
SPARK-BRINGUP.md Box procedure (#28)
AARON-SPARK-TRAIN.md Train spec (Danny)
HERMES-SPARK-RUN.md Hermes run order
milestones.md A5 name-gate / tier table (#33)

Trunk: answerdotai/ModernBERT-base. Local snapshot only. Last 2 layers trainable. Span aligner + val metrics. HF-shaped dump (config.json, model.safetensors or heads.pt). No Hub upload from the recipe. Card name stays hyperlex-encoder-modernbert-base-seed until E2.

Eval table (stub)

Gate Status
E0 packet PASS
E1 classify NOT RUN
E2 vs Spec 004 FAIL
E3 MiniLM control NOT RUN
E4 restricted PASS
E5 schema walls PASS
E6 dialect PASS

pipeline_tag is text-classification.

Live ingest tap

Current slang atoms from pipeline / analyze / scan / inbox write INFERRED rows to ~/.hyperlex/hyperlexical/ingest_candidates.jsonl (local SoT; 4333 rows as of 2026-09-10 PT evening). They do not become OBSERVED and do not mint Brier unless an operator settles them. Spec: ingest-tap.md.

Spark trains from this local store / --include-live, not from the tracked 883-row seed.

Live rows with an invalid split are coerced to a lexical train/val/test assignment (#38). That is export hygiene, not an E2 pass.