From c757f74d8371f2a8dabf6f34bea85290b8f7f94b Mon Sep 17 00:00:00 2001 From: Daniel Meyer Date: Thu, 24 Sep 2026 10:22:22 -0700 Subject: [PATCH 1/7] docs(007): reconcile model card to morph78 pin --- specs/007-hyperlexical-model/model-card.draft.md | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/specs/007-hyperlexical-model/model-card.draft.md b/specs/007-hyperlexical-model/model-card.draft.md index b409deca..6f0fab64 100644 --- a/specs/007-hyperlexical-model/model-card.draft.md +++ b/specs/007-hyperlexical-model/model-card.draft.md @@ -1,4 +1,9 @@ # Model card Canonical draft for Hub shape: `hf-package/README.md`. -Do not upload. Name stays `hyperlex-encoder-modernbert-base-seed` until E2. + +**Current trained pin:** `seed-morph78` · soft_ceiling `PROMOTE_BEST` 2026-09-24 · broad OBSERVED **0.9883** n=256 vs PRIOR morph65 **0.8867** n=256 · trained trunk-forward E2 **PASS**. + +Do not upload. Do not rename the public model product yet. The remaining naming wall is explicit operator authorization: `name_gate=false` until Danny says `name_gate yes` or explicitly names Hyperlexical. + +Until that authorization, publish-shape identifiers remain `hyperlex-encoder-*`; weights stay off git. From 1961a37bc5e6054894572a419155ddf3c586f106 Mon Sep 17 00:00:00 2001 From: Daniel Meyer Date: Thu, 24 Sep 2026 10:22:24 -0700 Subject: [PATCH 2/7] docs(007): update Hub card shape for trained E2 PASS --- .../hf-package/README.md | 55 ++++++++++--------- 1 file changed, 30 insertions(+), 25 deletions(-) diff --git a/specs/007-hyperlexical-model/hf-package/README.md b/specs/007-hyperlexical-model/hf-package/README.md index 04ccd165..67afec40 100644 --- a/specs/007-hyperlexical-model/hf-package/README.md +++ b/specs/007-hyperlexical-model/hf-package/README.md @@ -13,7 +13,21 @@ tags: # hyperlex-encoder-modernbert-base-seed -**Do not treat this as Hyperlexical.** E2 has not passed. Name-gate is false. This card is the publish *shape*. Weights are produced on Spark and are not in git. +**Do not treat this as a publicly named Hyperlexical artifact yet.** Trained trunk-forward E2 has **PASSED**, but `name_gate=false` remains the explicit public-name/publish wall. This card is the publish *shape*. Weights are produced on Spark and are not in git. + +## Current pin + +- BEST: `seed-morph78` +- Promotion: `PROMOTE_BEST` via soft_ceiling ceiling escape on 2026-09-24 +- Broad OBSERVED: **0.9883**, n=256 +- PRIOR: morph65 **0.8867**, n=256 +- E2: **PASS** +- Force/hard: **236 / 277** +- Upsample freeze: **11+** +- `SECOND_SLOT=4`: forbidden +- `name_gate`: **false** +- Brier: **null** +- Hub: unpublished ## Model details @@ -25,14 +39,7 @@ tags: - Packet: `hyperlex.hyperlexical.inference.v0.1` - Brier: always null. Not a forecast. -Load the trunk from a local snapshot. Load heads from this directory (`model.safetensors` or `heads.pt`). There is no chat template. - -```python -from transformers import AutoModel, AutoTokenizer -tok = AutoTokenizer.from_pretrained(trunk_dir, local_files_only=True) -enc = AutoModel.from_pretrained(trunk_dir, local_files_only=True) -# heads: classify / role_head / filler_head in model.safetensors -``` +Load the trunk from a local snapshot. Load heads from the pinned Spark artifact. There is no chat template. ## Intended use @@ -48,31 +55,29 @@ Uncensored in the Hyperlex sense: no refusal head on civilian dialect. Dual-use ## Training data -Git-tracked seed `civilian.v0.1.jsonl` is an 883-row snapshot from fixtures, dialect atoms, registry (INFERRED), golden (INFERRED), and archive (INFERRED). It is **not** the train SoT. T1 train uses the local store / `--include-live` (operator 2026-09-10 PT evening: classify 2437). `name_gate` stays false until E2. - -Do not treat INFERRED typology/stage as gold. +Git-tracked seed `civilian.v0.1.jsonl` is an 883-row snapshot and is **not** the train SoT. T1 training uses the local store / `--include-live` under operator settlement rules. INFERRED typology/stage does not become gold merely by inclusion. -## Eval (pre-train / stub) +## Eval | Gate | Status | Note | |------|--------|------| -| E0 packet on `rizz` | PASS | stub infer, brier null | -| E1 classify vs fixture | NOT RUN | needs Spark weights | -| E2 unbind vs Spec 004 probe | FAIL | stub swap < probe swap. Required for the word Hyperlexical | -| E3 MiniLM control | NOT RUN | control only, not the card | -| E4 restricted surface drop | PASS | `__RESTRICTED_FIXTURE__` | -| E5 schema / walls | PASS | no semantic, no symbolic | -| E6 dialect no refusal | PASS | `no cap fr` | +| E0 packet | PASS | packet/schema path | +| E1 classify vs fixture | PARTIAL / receipt-bound | do not infer beyond receipts | +| E2 unbind vs Spec 004 probe | **PASS** | trained trunk-forward on pinned model | +| E3 MiniLM control | NOT_COMPUTABLE here | no current evidence added by this reconciliation | +| E4 restricted surface drop | PASS | existing governed surface | +| E5 schema / walls | PASS | no semantic/symbolic authority mint | +| E6 dialect no refusal | PASS | existing governed surface | -After Spark `--run`, replace this table with `train-receipt.json` val metrics and a new `eval_unbind` JSON. Do not flip E2 by editing the card. +This reconciliation updates stale pre-train wording only. It does not manufacture new eval evidence. -## Limitations +## Naming / publication gate -Small seed. Crude first-occurrence aligner if offset mapping is missing. Last-2 freeze not ablated. Encoded slang is US-internet heavy. Not a general NLU encoder. +E2 PASS does **not** flip the product name. Public `Hyperlexical` naming, Hub upload, and optional T13 promotion remain separate operator actions. Until explicit `name_gate` authorization, retain `hyperlex-encoder-*` naming and keep weights off git. -## Bias +## Limitations -Lineage families are Hyperlex registry families. They are not demographic labels. Registry rows are INFERRED. +Small/curated slang surface; US-internet-heavy distribution; registry families are project taxonomies, not demographic labels; no general NLU claim; no forecast authority. ## Citation / contact From 0ff906f2596a8179473e583e8063f840e63ed40a Mon Sep 17 00:00:00 2001 From: Daniel Meyer Date: Thu, 24 Sep 2026 10:22:26 -0700 Subject: [PATCH 3/7] docs(007): close morph78 climb in name-gate plan --- .../NAME-GATE-AND-NAMED-PHRASES.md | 127 ++++++------------ 1 file changed, 38 insertions(+), 89 deletions(-) diff --git a/specs/007-hyperlexical-model/NAME-GATE-AND-NAMED-PHRASES.md b/specs/007-hyperlexical-model/NAME-GATE-AND-NAMED-PHRASES.md index dd09979d..bef6903b 100644 --- a/specs/007-hyperlexical-model/NAME-GATE-AND-NAMED-PHRASES.md +++ b/specs/007-hyperlexical-model/NAME-GATE-AND-NAMED-PHRASES.md @@ -3,111 +3,60 @@ **Status:** DRAFT (does **not** flip `name_gate`) · **Date:** 2026-09-24 **Locks:** `name_gate=false` · no Hub · no invented OBSERVED · upsample freeze **11+** · no `SECOND_SLOT=4` · soft_ceiling spent (morph78 BEST) -Companion to `HYPERLEXICAL-PRODUCT-PLAN.md` workstreams A (climb/gold) and C (post–name_gate packaging). +Companion to `HYPERLEXICAL-PRODUCT-PLAN.md`. -### Operator name (ingest) — 2026-09-24 +## Current product boundary — 2026-09-24 -Danny: **`name neologist as in repo`**. Public ingest product = **`ne0l0gist`** (repo spelling with zeros). Receipt: `receipts/20260924-name-ne0l0gist-as-in-repo.md`. This does **not** flip Hyperlexical `name_gate`. +- BEST = `seed-morph78` +- soft_ceiling climb = **CLOSED / SPENT** +- broad OBSERVED = **0.9883** n=256 +- PRIOR morph65 = **0.8867** n=256 +- trained trunk-forward E2 = **PASS** +- next climb = **not authorized** +- `name_gate=false` +- Hub = unpublished +- T13 = not authorized ---- +Do not re-run the completed morph78 climb as if it were pending work. -## Two walls (do not conflate) +### Operator name (ingest) -| Wall | What it gates | Current state | -|------|----------------|---------------| -| **Dataset name-gate buckets** (`milestones.md`) | Settled gold floors before *planning* a T1 name | Gaps **0 / 0 / 0** on operator `--include-live` (classify ≥2k / unbind ≥200 / negatives ≥200) | -| **`name_gate` flag** | Public **Hyperlexical** name + Hub/T13 packaging | **false** — Danny explicit yes required. Trained E2 PASS on Spark does **not** flip this. Ingest **`ne0l0gist`** is already named (separate product). | +Danny: **`name neologist as in repo`**. Public ingest product = **`ne0l0gist`**. This does **not** flip Hyperlexical `name_gate`. -Volume readiness ≠ name. Seed smoke ≠ T1. Stub E2 FAIL remains expected. +## Two walls ---- +| Wall | Current state | +|------|---------------| +| Dataset readiness | bucket gaps 0/0/0 on the operator harvest surface | +| Public model name / publish | **BLOCKED** until Danny explicit `name_gate yes` or explicit Hyperlexical naming | -## Named phrases (gold authorize) +Volume readiness ≠ public naming. E2 PASS ≠ public naming. -Empty `authorize_card_phrases` → Jev **`cancel_empty_gold`**. Do not invent OBSERVED to fill a card. +## Gold / climb -### Last non-empty HOLD card (morph77 · already settled) +morph78 is already settled and promoted. Historical empty-gold and morph77 cards remain evidence, not reusable progress. -Receipt: `receipts/20260923-morph77-val-acquire-label-hold.md` · card `receipts/morph77-val-acquire-label-hold-20260923/HOLD_AUTHORIZE_CARD.json`. +Any future climb requires a **new** acquire/authorize card against morph78 as PRIOR. Do not invent OBSERVED, recycle settled phrases as new gold, use UPSAMPLE 11+, or use `SECOND_SLOT=4`. -| # | phrase | lineage (card) | -|--:|--------|----------------| -| 1 | `we're so back` | brainrot-aura | -| 2 | `clutch up` | gaming-meta | -| 3 | `bet that up` | kinship-address | -| 4 | `real talk` | kinship-address | +## `name_gate` flip plan — Danny only -`authorize val-settle` on morph77 **kept** these as OBSERVED `split=val` and grew force/hard **224→232 / 265→273**. Train was **CANCELLED_FAIR_CEILING** (fair stayed 1.0 n=164). See `receipts/20260923-morph77-val-settle-cancelled-fair-ceiling.md`. +Preconditions currently supported: -**Do not re-authorize / re-settle these four** — they are already OBSERVED. Re-listing them as “new gold” would be inventing progress. +- [x] Dataset bucket gaps 0/0/0 +- [x] Trained trunk-forward E2 PASS on `seed-morph78` +- [x] soft_ceiling climb closed with morph78 PROMOTE_BEST +- [x] product-state reconciliation drafted +- [ ] Danny explicit `name_gate yes` / “name Hyperlexical” -### Cards after morph77 - -| card | `authorize_card_phrases` | -|------|--------------------------| -| morph78 fresh acquire | **PROMOTE_BEST 2026-09-24:** settled phrases + soft_ceiling ceiling_escape (broad 0.9883 > 0.8867) | -| morph65 live broad residual reprobe | `[]` | - -Operator bare `authorize val-settle` → **CANCELLED_EMPTY_GOLD** (`receipts/20260923-authorize-val-settle-cancelled-empty-gold.md`). Force tip remains morph77 **232/273**. Live broad prior **0.88671875** n=256. - -### Authorize sentence shapes (required) - -One of: - -1. **Named phrases on a live empty card** — operator lists exact norms from that card’s acquire/qualify pool (not from memory, not morph77’s already-settled four unless the new card independently contains them as unsettled AUTHORIZE): - - `authorize val-settle: , , …` - - `authorize morph78: , , …` -2. **New acquire** that clears Jev `force_expand_safe` with a non-empty `authorize_card_phrases` after `card_high_conf_new` (or equivalent), then explicit authorize listing those phrases. -3. **Climb without new force-only gold** — under soft_ceiling, fair = 1.0 path is **broad OBSERVED > PRIOR** live + E2 (`gate_soft_ceiling_decide.py`), not another force-only morph at n=164. - -Still forbidden: empty settle, invented OBSERVED, UPSAMPLE 11+, `SECOND_SLOT=4`. - ---- - -## `name_gate` flip plan (Danny only) - -This section is a checklist. **No agent flips the flag.** - -### Preconditions (all must already be true or explicitly waved) - -- [x] Dataset bucket gaps 0/0/0 on the harvest surface (met 2026-09-10) -- [x] Trained trunk-forward E2 PASS on pinned BEST (`seed-morph78`) -- [x] Soft_ceiling climb closed: morph78 PROMOTE_BEST 2026-09-24 -- [ ] Operator product review of `HYPERLEXICAL-PRODUCT-PLAN.md` -- [x] Hygiene B2–B3 landed (`VERSION` ↔ `pyproject.toml`; stale “E2 Spark-blocked” scrubbed from operator ROADMAP/STATUS copies) -- [ ] Danny sentence that explicitly says **`name_gate` yes** (or “name Hyperlexical”) - -### On Danny yes (separate PRs / sentences) - -1. Set `name_gate` true in the locked operator surfaces only (STATUS / milestones note / dual-use gate as required by engineering.md) — not by silent agent edit. -2. Allow card rename path: `hyperlex-encoder-*` → Hyperlexical naming per `model-card.draft.md`. -3. Hub upload = **named** operator action (C2). Weights stay out of git until then. -4. Optional T13 promote of `scripts/shadow/hyperlexical/` into `src/hyperlex/` = separate authorize + tests. - -### Explicit non-goals - -- Flipping `name_gate` because E2 PASS, volume, or soft_ceiling ARMED -- Treating morph77’s four settled phrases as a name_gate unlock -- Hub / T13 without Danny - ---- - -## Sequencing - -``` -Hygiene (this branch) ──► operator review product plan - │ - ├──► named-phrase authorize OR new force_expand_safe acquire ──► soft_ceiling decide - │ - └──► Danny name_gate yes (only when ready) ──► card / Hub / optional T13 -``` - ---- +On Danny yes, keep actions separate: +1. change governed `name_gate` surfaces; +2. update public card naming; +3. Hub upload only on a separate named operator action; +4. optional T13 only on separate authorization + tests. ## Pointers - Product plan: `HYPERLEXICAL-PRODUCT-PLAN.md` -- Climb next: root `NEXT_MOVES_007.md` · this pack `NEXT_MOVES_007.md` -- morph77 card: `receipts/morph77-val-acquire-label-hold-20260923/` -- Empty morph78: `receipts/20260923-morph78-fresh-acquire-hold-empty.md` -- Soft ceiling: `receipts/20260923-authorize-gate-soft-ceiling.md` +- Current climb state: root `NEXT_MOVES_007.md` +- Naming SoT: `docs/NAMING.md` +- Historical soft-ceiling receipt: `receipts/20260923-authorize-gate-soft-ceiling.md` From 335bf37756cd22c8be93fa13d0134672d36f1e24 Mon Sep 17 00:00:00 2001 From: Daniel Meyer Date: Thu, 24 Sep 2026 10:22:28 -0700 Subject: [PATCH 4/7] docs(007): add reconciled Hyperlexical product completion plan --- HYPERLEXICAL-PRODUCT-PLAN.md | 117 +++++++++++++++++++++++++++++++++++ 1 file changed, 117 insertions(+) create mode 100644 HYPERLEXICAL-PRODUCT-PLAN.md diff --git a/HYPERLEXICAL-PRODUCT-PLAN.md b/HYPERLEXICAL-PRODUCT-PLAN.md new file mode 100644 index 00000000..baca9158 --- /dev/null +++ b/HYPERLEXICAL-PRODUCT-PLAN.md @@ -0,0 +1,117 @@ +# Hyperlexical model product — completion plan + +**Status:** DRAFT (operator review) · **Reconciled:** 2026-09-24 +**Naming:** repo **Hyperlex** = transitional shell. Public ingest = **ne0l0gist**. Public trained-model product = **Hyperlexical**, still gated. Hermes skill ≠ Hyperlexical. + +**Hard locks:** `name_gate=false` until Danny explicit yes · no Hub upload · no invented OBSERVED · upsample freeze **11+** · no `SECOND_SLOT=4` · schemes `positional|type_slot` only · Brier `null` on every 007 packet. + +This plan supersedes the 2026-09-23 morph65/empty-morph78 snapshot. It does not flip `name_gate`. + +## Current honest state + +| Layer | State | +|---|---| +| Hermes skill | **Ready** v0.4.0 | +| Spec 007 trained pin | **BEST=`seed-morph78`** | +| Promotion | **PROMOTE_BEST** via soft_ceiling ceiling escape | +| Broad OBSERVED | **0.9883 n=256** | +| PRIOR | morph65 **0.8867 n=256** | +| E2 | **PASS** on trained trunk-forward path | +| Force/hard | **236 / 277** | +| soft_ceiling | **SPENT / CLOSED for this climb** | +| name_gate | **false** | +| Hub | unpublished | +| T13 | not authorized | +| Model card | reconciliation required before publication | + +Verdict: training produced a viable pinned candidate. The remaining product boundary is naming/publication/integration authority, not proof that training can succeed. + +## Product completion states + +### TRAIN +`UNTRAINED → TRAINED → E2_PASS → BEST_PINNED` + +**Current:** `BEST_PINNED(seed-morph78)` + +### NAME +`UNNAMED_PUBLICLY → NAME_GATE_APPROVED` + +**Current:** `UNNAMED_PUBLICLY` + +### PUBLISH +`LOCAL_ONLY → CARD_READY → HUB_AUTHORIZED → HUB_PUBLISHED` + +**Current:** `LOCAL_ONLY` + +### INTEGRATION +`SHADOW → T13_AUTHORIZED → SRC_PROMOTED` + +**Current:** `SHADOW` + +## Definition of complete + +Hyperlexical is complete for this product cycle when: +1. a pinned BEST has receipts and E2 PASS; +2. dataset provenance remains honest; +3. the model card reflects the live pin without inventing metrics; +4. Danny explicitly approves `name_gate`; +5. any Hub upload is separately authorized; +6. any T13 promotion is separately authorized and tested. + +Until item 4, artifact naming remains `hyperlex-encoder-*`. + +## Workstreams + +### A. Training / gold — CLOSED FOR CURRENT CLIMB + +- [x] morph78 phrases settled +- [x] force/hard 236/277 +- [x] broad comparison on same n=256 surface +- [x] 0.9883 > 0.8867 PRIOR +- [x] E2 PASS +- [x] PROMOTE_BEST +- [x] BEST pin updated to morph78 + +**Rule:** do not start another climb without a new operator-authorized acquire/card. + +### B. Engineering hygiene + +- [x] VERSION ↔ pyproject = 0.4.0 +- [x] current STATUS/NEXT_MOVES show morph78 +- [ ] model-card publish shape updated from stale pre-train E2 wording +- [ ] Notion Operator Hub current-work block reconciled to morph78 +- [ ] verify no operator-facing page still calls morph65 current BEST + +### C. Product packaging — post-name_gate + +- [ ] operator reviews this reconciled plan +- [ ] Danny explicit `name_gate yes` / explicit Hyperlexical naming +- [ ] finalize public model card from pinned receipts +- [ ] separately authorize Hub upload or explicitly close cycle with no Hub +- [ ] optional T13 in separate PR + tests + +### D. Adjacent track + +HYPERLEX-Q1 remains separate from product naming. It stays **UNQUALIFIED** until its own evidence/review gate clears; Hyperlex → Noesis remains blocked by that track's requirements. + +## Explicit non-goals + +- restarting morph78 work already completed +- inventing OBSERVED fillers +- treating E2 PASS as automatic naming authority +- Hub upload without a named operator action +- T13 without separate authorization +- using Q1 qualification status as a substitute for Spec 007 product completion +- changing Brier from null on 007 packets + +## Definition of done — current cycle + +- [x] BEST pinned: morph78 +- [x] trained E2 PASS +- [x] soft_ceiling climb closed +- [x] version hygiene +- [ ] model card reflects live morph78 evidence +- [ ] Notion parity restored +- [ ] Danny `name_gate` decision +- [ ] Hub decision: upload authorized or explicit no-Hub this cycle +- [ ] optional T13 decision From ca0edc62103c5983feb3faf838707759cb353250 Mon Sep 17 00:00:00 2001 From: Daniel Meyer Date: Thu, 24 Sep 2026 10:40:36 -0700 Subject: [PATCH 5/7] docs(007): finish morph78 product-state reconciliation --- README.md | 8 ++++---- STATUS.md | 2 +- docs/CANONICAL.md | 5 ++++- docs/index.md | 6 +++--- docs/shadow-hyperlexical.md | 14 +++++++------- docs/specs/index.md | 4 ++-- docs/status.md | 2 +- specs/007-hyperlexical-model/AARON-SPARK-TRAIN.md | 2 +- 8 files changed, 23 insertions(+), 20 deletions(-) diff --git a/README.md b/README.md index 8e2f14e8..62082894 100644 --- a/README.md +++ b/README.md @@ -14,7 +14,7 @@ Hermes skill is what you **run today**. Spec 007 Hyperlexical encoder is **SHADO | **Owns** | memetic ingest · classify · receipts · virality / hyperstition signals · Spec 007 encoder specify | | **Honesty** | `OBSERVED` / `INFERRED` / `SPECULATIVE` (+ provenance; settled Brier only where calibrated) | | **Shape** | Hermes skill **live** (v0.4.0). Spec 007 T0→T1 **gated**. Not a chatbot mind. | -| **Anti** | Efficacy theater · inventing Brier · naming artifacts **Hyperlexical** before E2 · Hub without `ALLOW_HUB` | +| **Anti** | Efficacy theater · inventing Brier · naming artifacts **Hyperlexical** before `name_gate` · Hub without `ALLOW_HUB` | | **Lane** | Skill ready · encoder SHADOW · `name_gate` **false** · Hub not published | | **Version** | `0.4.0` — prefer [`STATUS.md`](STATUS.md) | @@ -24,7 +24,7 @@ Docs site: [scrimshawlife-ctrl.github.io/Hyperlex](https://scrimshawlife-ctrl.gi **OBSERVED dual-home:** this repository (`scrimshawlife-ctrl/Hyperlex`) is the canonical train and work remote. [`Zero-State-LLC/Hyperlex`](https://github.com/Zero-State-LLC/Hyperlex) is the company mirror and may lag. Do not treat the org Hyperlex as the train source of truth. -Pinned BEST receipt on `main`: [`specs/007-hyperlexical-model/receipts/20260915-morph36-promote-best.md`](specs/007-hyperlexical-model/receipts/20260915-morph36-promote-best.md) (`name_gate=false` / no Hub). +Pinned BEST receipt on `main`: [`specs/007-hyperlexical-model/receipts/20260924-morph78-soft-ceiling-promote-best.md`](specs/007-hyperlexical-model/receipts/20260924-morph78-soft-ceiling-promote-best.md) — `seed-morph78`, 2026-09-24 (`name_gate=false` / no Hub). Earlier pins (morph36, morph65) stay in `receipts/` as history. Funding and demo language must match Zero State [Public Claims & Boundaries](https://app.notion.com/p/ecd794b1226b4dd89abe1ccd928dd35c) (Notion) and [Core Model Spine](https://app.notion.com/p/3dc3e8ba2f5c810db2f6f72a8ffe50eb). Do not claim: Nemotron integrated, Hub Hyperlexical card, Abraxas-named 7B, or free Inception GPUs. @@ -53,14 +53,14 @@ Repo **Hyperlex** is the transitional monorepo shell. Do not use bare public **H | Local SoT classify volume (operator machine) | Full SoT in git | | Pages static run history / Phase 5 research hooks | Paid Firecrawl by default (Crawl4AI is default) | -## Current state (OBSERVED 2026-09-10/11 PT) +## Current state (harvest rows OBSERVED 2026-09-10/11 PT · Spec 007 row 2026-09-24) Snapshot — full scoreboard in [`STATUS.md`](STATUS.md). | Area | State | |------|-------| | Hermes skill | Ready **v0.4.0** | -| Spec 007 | SHADOW on main · T0 specified · T1 blocked on Spark E2 | +| Spec 007 | SHADOW · BEST `seed-morph78` (PROMOTE_BEST 2026-09-24) · trained E2 **PASS** · public T1 name blocked on `name_gate` | | `name_gate` | **false** (volume ≠ name) | | Hub | Not published | | Local SoT | `~/.hyperlex/hyperlexical/ingest_candidates.jsonl` — **4333** (**not in git**) | diff --git a/STATUS.md b/STATUS.md index 7a9bfc51..b55f637b 100644 --- a/STATUS.md +++ b/STATUS.md @@ -142,7 +142,7 @@ data/backfill/2026/ ## Recommended next -1. Spark BEST = **morph78**. Operator review `HYPERLEXICAL-PRODUCT-PLAN.md`; hold BEST or authorize a new acquire with named phrases (soft_ceiling compare vs morph78 broad 0.9883 n=256). `name_gate` needs Danny yes. Plan: `specs/007-hyperlexical-model/NAME-GATE-AND-NAMED-PHRASES.md`. +1. Spark BEST = **morph78**. Default **HOLD**. Operator review `specs/007-hyperlexical-model/HYPERLEXICAL-PRODUCT-PLAN.md`; a new climb needs a new named-phrase acquire card (compare vs morph78 broad 0.9883 n=256). `name_gate` needs Danny yes. Plan: `specs/007-hyperlexical-model/NAME-GATE-AND-NAMED-PHRASES.md`. 2. Burn-in offline runs + settle path (this is how Brier becomes real). 3. Do not Hub-upload. Do not promote `scripts/shadow/hyperlexical/` into `src/hyperlex/` (T13). Do not flip `name_gate`. diff --git a/docs/CANONICAL.md b/docs/CANONICAL.md index 8c85d431..05e5530e 100644 --- a/docs/CANONICAL.md +++ b/docs/CANONICAL.md @@ -26,7 +26,10 @@ see [Remotes](remotes.md). ## Current BEST receipt The pinned BEST promote receipt on `main` is -[20260915-morph36-promote-best.md](https://github.com/scrimshawlife-ctrl/Hyperlex/blob/main/specs/007-hyperlexical-model/receipts/20260915-morph36-promote-best.md). +[20260924-morph78-soft-ceiling-promote-best.md](https://github.com/scrimshawlife-ctrl/Hyperlex/blob/main/specs/007-hyperlexical-model/receipts/20260924-morph78-soft-ceiling-promote-best.md) +(`seed-morph78`, 2026-09-24). Earlier pins such as +[20260915-morph36-promote-best.md](https://github.com/scrimshawlife-ctrl/Hyperlex/blob/main/specs/007-hyperlexical-model/receipts/20260915-morph36-promote-best.md) +are history. That receipt records **`name_gate=false`** and **no Hub** publish. diff --git a/docs/index.md b/docs/index.md index 65401b7f..d57da8b1 100644 --- a/docs/index.md +++ b/docs/index.md @@ -29,10 +29,10 @@ Repo Hyperlex is the transitional monorepo shell. Public produc |-------|--------| | **Hermes skill** | Shipping v0.4.0 — ingest, 8-family lineage, receipts, settle → Brier | | **T0 encoder** | Specified baseline (`hyperlex-encoder-*`). Not a Hyperlexical name. | -| **T1 encoder** | Allowed to take the Hyperlexical name **only after E2** on Spark. Not there. | +| **T1 encoder** | Hyperlexical name needs trained E2 **and** Danny's `name_gate` yes. E2 passed on `seed-morph78` (2026-09-24); `name_gate` still false. | | **`name_gate` / Hub** | **false** / not published | -Classify volume is ready. E2 is Spark-blocked. [SHADOW encoder (007)](shadow-hyperlexical.md) · [Status](status.md). +Classify volume is ready. Spark BEST `seed-morph78` passes trained E2; the name is still gated. [SHADOW encoder (007)](shadow-hyperlexical.md) · [Status](status.md). ## What happens on a run @@ -47,7 +47,7 @@ flowchart LR B -.-> H[007 model path] ``` -Phase 5 is optional and always **SPECULATIVE** with `brier: null` — see [glossary](start/glossary.md#phase-5). Spec 007 is **SHADOW / advisory**: classify volume is ready; `name_gate` is false; E2 is Spark-blocked. Do not call the encoder Hyperlexical. +Phase 5 is optional and always **SPECULATIVE** with `brier: null` — see [glossary](start/glossary.md#phase-5). Spec 007 is **SHADOW / advisory**: classify volume is ready; trained E2 passed on `seed-morph78`; `name_gate` is false. Do not call the encoder Hyperlexical. | Stage | What you get | |-------|----------------| diff --git a/docs/shadow-hyperlexical.md b/docs/shadow-hyperlexical.md index 611d551a..19793ff1 100644 --- a/docs/shadow-hyperlexical.md +++ b/docs/shadow-hyperlexical.md @@ -1,10 +1,10 @@ # 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**). +**Naming:** this page is **Hyperlexical** (model / train / eval / E2 / `name_gate` claim). Harvest and live ingest are **ne0l0gist**. Repo **Hyperlex** is the transitional shell. Trained E2 passed on `seed-morph78` (2026-09-24). The public name still requires Danny's `name_gate` yes (`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. +Not on Hyperlex `API_V1`. Not a Hugging Face model. Not named **Hyperlexical** until Danny's `name_gate` yes. Trained E2 PASS alone does not name it. Specify is locked C1–C52 plus A5 milestones. Implement on `main` is the stub, harvest, eval harness, and gated Spark loop. @@ -14,10 +14,10 @@ Specify is locked C1–C52 plus A5 milestones. Implement on `main` is the stub, |------|---------|--------------|-------------| | 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. | +| T1 | Encoder + unbind heads; E2 vs Spec 004 | `hyperlex-structure-*` / Hyperlexical | Trained E2 **PASS** on `seed-morph78`; name **not** granted (`name_gate` false). | | T2 | Separate generative LoRA | out of this cycle | Not an implement target | -`name_gate` stays **false** until E2. Classify volume ready ≠ T1. +`name_gate` stays **false** until Danny yes. E2 PASS ≠ name. Classify volume ready ≠ T1. ## Honest gates (2026-09-10 PT evening) @@ -32,8 +32,8 @@ Danny ~2500 candidate bar: **met**. Hermes 913 / “gap to 2500” is **supersed | 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. | +| `name_gate` | **false**. Volume does not name the model. E2 PASS does not flip it; Danny yes required. | +| E2 vs Spec 004 | **FAIL** on the stub (expected). Trained E2 **PASS** on Spark BEST `seed-morph78` (updated 2026-09-24). 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. | @@ -64,7 +64,7 @@ Bring-up is procedure, not a product card. A seed smoke that ends with E2 failin | [HERMES-SPARK-RUN.md](https://github.com/scrimshawlife-ctrl/Hyperlex/blob/main/specs/007-hyperlexical-model/HERMES-SPARK-RUN.md) | Hermes run order | | [milestones.md](https://github.com/scrimshawlife-ctrl/Hyperlex/blob/main/specs/007-hyperlexical-model/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. +Trunk: `answerdotai/ModernBERT-base`. Local snapshot only. Recipe default: last 2 layers trainable (climb pins such as `seed-morph78` use LAST_TRAINABLE=8). 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 `name_gate` yes. ## Eval table (stub) diff --git a/docs/specs/index.md b/docs/specs/index.md index d2a65189..d6e91a75 100644 --- a/docs/specs/index.md +++ b/docs/specs/index.md @@ -17,11 +17,11 @@ Constitution: [`.specify/memory/constitution.md`](https://github.com/scrimshawli | 004 | Recoverable-structure probe | SPECIFY locked · implement SHADOW | `scripts/shadow/recoverable_structure/` | | 005 | Route labels | SPECIFY locked (Notion + branch `005-route-labels`) | not on main — [PR 18](https://github.com/scrimshawlife-ctrl/Hyperlex/pull/18) | | 006 | IsA | reserved — do not open from 007 | — | -| 007 | Hyperlexical model | SPECIFY locked C1–C52 · A5 milestones · SHADOW implement on main | `scripts/shadow/hyperlexical/` · E2 fail · `name_gate` false · no Hub | +| 007 | Hyperlexical model | SPECIFY locked C1–C52 · A5 milestones · SHADOW implement on main | `scripts/shadow/hyperlexical/` · stub E2 fail (expected) · trained E2 PASS on BEST `seed-morph78` · `name_gate` false · no Hub | ## Spec 007 (SHADOW) -Not on `API_V1`. Not a Hugging Face model. Not named **Hyperlexical** until E2 passes on Spark. +Not on `API_V1`. Not a Hugging Face model. Not named **Hyperlexical** until Danny's `name_gate` yes (trained E2 PASS on `seed-morph78` does not flip it). - Pages overview: [SHADOW encoder (007)](../shadow-hyperlexical.md) - Operator snapshot: [Status](../status.md) diff --git a/docs/status.md b/docs/status.md index 0041bfa1..4abaac0e 100644 --- a/docs/status.md +++ b/docs/status.md @@ -142,7 +142,7 @@ data/backfill/2026/ ## Recommended next -1. Spark BEST = **morph78**. Operator review `HYPERLEXICAL-PRODUCT-PLAN.md`; hold BEST or authorize a new acquire with named phrases (soft_ceiling compare vs morph78 broad 0.9883 n=256). `name_gate` needs Danny yes. Plan: `specs/007-hyperlexical-model/NAME-GATE-AND-NAMED-PHRASES.md`. +1. Spark BEST = **morph78**. Default **HOLD**. Operator review `specs/007-hyperlexical-model/HYPERLEXICAL-PRODUCT-PLAN.md`; a new climb needs a new named-phrase acquire card (compare vs morph78 broad 0.9883 n=256). `name_gate` needs Danny yes. Plan: `specs/007-hyperlexical-model/NAME-GATE-AND-NAMED-PHRASES.md`. 2. Burn-in offline runs + settle path (this is how Brier becomes real). 3. Do not Hub-upload. Do not promote `scripts/shadow/hyperlexical/` into `src/hyperlex/` (T13). Do not flip `name_gate`. diff --git a/specs/007-hyperlexical-model/AARON-SPARK-TRAIN.md b/specs/007-hyperlexical-model/AARON-SPARK-TRAIN.md index bbfe3924..fc793c23 100644 --- a/specs/007-hyperlexical-model/AARON-SPARK-TRAIN.md +++ b/specs/007-hyperlexical-model/AARON-SPARK-TRAIN.md @@ -6,7 +6,7 @@ Owner of this run: Aaron on the DGX Spark. Owner of the spec: Danny. Use current **`main`**. Do not use the old `007-hyperlexical-model` branch. -This is a **seed smoke** for harness wiring, not a Hyperlexical card. E2 has not passed. Name-gate is false. Do not upload to Hugging Face. Do not say the model is Hyperlexical. +This is a **seed smoke** for harness wiring, not a Hyperlexical card. A seed smoke is not an E2 result (trained E2 PASS lives on the climb BEST — see `STATUS.md`). Name-gate is false. Do not upload to Hugging Face. Do not say the model is Hyperlexical. **Train data:** T1 / E2 work uses the **local SoT** (`~/.hyperlex/hyperlexical/ingest_candidates.jsonl`). Export it with `PYTHONPATH=scripts/shadow python3 -m hyperlexical.export --include-live`. Train the same rows with an explicit opt-in — default remains the tracked/seed export (smoke-safe): From 9e3f7da5b61179669dd1c2b7aa6c10ec2e20b683 Mon Sep 17 00:00:00 2001 From: Daniel Meyer Date: Thu, 24 Sep 2026 10:43:54 -0700 Subject: [PATCH 6/7] docs(007): finish morph78 product-state reconciliation --- .../HYPERLEXICAL-PRODUCT-PLAN.md | 188 +++++++++--------- .../NAME-GATE-AND-NAMED-PHRASES.md | 43 +++- .../hf-package/README.md | 42 ++-- .../model-card.draft.md | 2 +- specs/007-hyperlexical-model/spec.md | 4 +- specs/007-hyperlexical-model/status.md | 5 +- specs/007-hyperlexical-model/tasks.md | 2 +- specs/007-hyperlexical-model/u3-recipe.md | 4 +- specs/README.md | 2 +- 9 files changed, 161 insertions(+), 131 deletions(-) diff --git a/specs/007-hyperlexical-model/HYPERLEXICAL-PRODUCT-PLAN.md b/specs/007-hyperlexical-model/HYPERLEXICAL-PRODUCT-PLAN.md index 583ee0f4..ced93850 100644 --- a/specs/007-hyperlexical-model/HYPERLEXICAL-PRODUCT-PLAN.md +++ b/specs/007-hyperlexical-model/HYPERLEXICAL-PRODUCT-PLAN.md @@ -1,131 +1,127 @@ # Hyperlexical model product — completion plan -**Status:** DRAFT (operator review) · **Date:** 2026-09-23 -**Naming:** repo **Hyperlex** = transitional shell. Public products: **Hyperlexical** (this plan) and **ne0l0gist** (ingest). Hermes skill ≠ Hyperlexical. -**Hard locks (unchanged):** `name_gate=false` until Danny yes · no Hub upload · no invented OBSERVED · upsample freeze **11+** · no `SECOND_SLOT=4` · schemes `positional|type_slot` only · Brier `null` on every 007 packet. +**Status:** DRAFT (operator review) · **Reconciled:** 2026-09-24 (PR #102) -This plan turns Spec 007 from a SHADOW Spark climb into a shippable Hyperlexical product. It does **not** flip `name_gate`. +**Naming:** repo **Hyperlex** = transitional shell. Public ingest = **ne0l0gist** (named). Public trained-model product = **Hyperlexical**, still gated. Hermes skill ≠ Hyperlexical. SoT: `docs/NAMING.md`. ---- +**Hard locks:** `name_gate=false` until Danny explicit yes · no Hub upload · no invented OBSERVED · upsample freeze **11+** · no `SECOND_SLOT=4` · schemes `positional|type_slot` only · Brier `null` on every 007 packet. -## Current honest state (2026-09-23) +This plan supersedes the 2026-09-23 draft (morph65 BEST, soft_ceiling ARMED, morph78 acquire empty). That draft was accurate on 2026-09-23 and remains in git history. This plan does not flip `name_gate`. -| Layer | State | -|-------|--------| -| Hermes skill (`SKILL.md`, CLI, `src/hyperlex/`) | **Ready** (v0.4.0; `pyproject.toml` aligned to `VERSION`) | -| Spec 007 shadow train/eval | **Ready enough to climb** — BEST=`seed-morph65`, E2 PASS on trained trunk | -| Force fair | **1.0** n=164 (classic promote wall) | -| soft_ceiling | **ARMED** — at fair 1.0, promote only if live broad OBSERVED **>** PRIOR morph65 (**0.88671875** n=256) + E2 | -| Gold path | morph78 acquire + residual reprobe → **empty gold**; `authorize val-settle` → **CANCELLED_EMPTY_GOLD** | -| Hyperlexical name / Hub / T13 promote into `src/hyperlex/` | **Blocked** | +## Current honest state -Verdict: skill is production-ready as a Hermes skill. The **Hyperlexical model product** is not — name wall, Hub, packaging, and live-gold path still open. +| Layer | State | Evidence | +|---|---|---| +| Hermes skill | **Ready** v0.4.0 | `VERSION`, `pyproject.toml` | +| Spec 007 lane | **SHADOW** | `spec.md`; code under `scripts/shadow/hyperlexical/` | +| Trained pin | **BEST=`seed-morph78`** | `receipts/morph78-val-settle-20260924/pin-promote-best.json` | +| Promotion | **PROMOTE_BEST**, soft_ceiling `ceiling_escape`, 2026-09-24 | `receipts/morph78-val-settle-20260924/GATE_LOCK.json` | +| Broad OBSERVED | **0.98828125** n=256 | `receipts/morph78-val-settle-20260924/broad-eval-morph78.json` | +| PRIOR | morph65 **0.88671875** n=256 (same live surface) | `receipts/morph78-val-settle-20260924/broad-eval-prior-morph65-at-finish.json` | +| E2 | **PASS** — trained trunk-forward, unbind_exact 1.0, n_unbind_eval 24 | `receipts/morph78-val-settle-20260924/e2-unbind-morph78.json` | +| Force fair (advisory at ceiling) | 1.0 n=164 | `receipts/morph78-val-settle-20260924/fair-eval-morph65-morph78.json` | +| Force/hard | **236 / 277** | `receipts/morph78-val-settle-20260924/ACQUIRE_SETTLE_SUMMARY.json` | +| soft_ceiling | **SPENT / CLOSED** for this climb | `receipts/20260924-morph78-soft-ceiling-promote-best.md` | +| E1 / E3 on `seed-morph78` | **NOT_COMPUTABLE** — no receipt | — | +| `name_gate` | **false** | STATUS, pin, E2 JSON | +| Hub | unpublished | — | +| T13 | not authorized | — | ---- +Verdict: training produced a pinned candidate that passes E2. What is left is naming, publication and integration authority. Training is no longer the blocker. -## Product definition (what “complete” means) +## Product state machines -Hyperlexical is complete when all of the following are true: +These are independent. Do not collapse them into one "product ready" flag. -1. **Train artifact** — pinned BEST checkpoint on Spark with receipts (fair surface + E2 + soft_ceiling decide if armed). -2. **Eval gates** — E2 PASS on the pin; stub FAIL still expected; seed smoke ≠ T1. -3. **Dataset honesty** — OBSERVED only from settled/authorized gold; no invent; force-train / hard-atoms are operator JSONL, not SoT. -4. **Name** — Danny explicit yes flips `name_gate`; card may then be called Hyperlexical (not before). -5. **Publish** — Hub upload is a **named** operator action after name_gate; weights stay out of git until then. -6. **Operator surface** — infer CLI + packet schema + model card shipped; optional later T13 promote into `src/hyperlex/` (separate sentence). +| Machine | Path | Current | +|---|---|---| +| TRAIN | `UNTRAINED → TRAINED → E2_PASS → BEST_PINNED` | `BEST_PINNED(seed-morph78)` | +| NAME | `UNNAMED_PUBLICLY → NAME_GATE_APPROVED` | `UNNAMED_PUBLICLY` | +| PUBLISH | `LOCAL_ONLY → CARD_READY → HUB_AUTHORIZED → HUB_PUBLISHED` | `LOCAL_ONLY` | +| INTEGRATION | `SHADOW → T13_AUTHORIZED → SRC_PROMOTED` | `SHADOW` | -Until (4), the artifact stays `hyperlex-encoder-*`. +Only an operator sentence advances NAME, PUBLISH past `CARD_READY`, or INTEGRATION. TRAIN advancing does not advance any other machine. ---- +## Definition of complete -## Workstreams - -### A. Climb / gold (Spark · soft_ceiling) +Hyperlexical is complete for this product cycle when: -| Step | Action | Exit | -|------|--------|------| -| A1 | Idle: do **not** re-burn empty settle / empty acquire | HOLD until named phrases | -| A2 | Operator `authorize morph78 …` or `authorize val-settle` **listing phrases**, **or** acquire that clears Jev `force_expand_safe` | Non-empty authorize card | -| A3 | Val-settle → force tip expand → fair baseline on new tip | Fair surface receipt | -| A4 | Train next morph under soft_ceiling; decide via `gate_soft_ceiling_decide.py` | PROMOTE or REJECT_VS_BEST | -| A5 | If PROMOTE: update BEST pin + PRIOR broad for next soft_ceiling compare | New BEST held | +1. a pinned BEST has receipts and E2 PASS; +2. dataset provenance remains honest (OBSERVED only from settled/authorized gold); +3. the model card reflects the live pin without inventing metrics; +4. Danny explicitly approves `name_gate`; +5. any Hub upload is separately authorized; +6. any T13 promotion is separately authorized and tested. -Constraints: upsample freeze 11+; no SECOND_SLOT=4; Qwen stopped unless re-enabled. +Until item 4, artifact naming remains `hyperlex-encoder-*`. -### B. Engineering hygiene (main / tip) +## Workstreams -| Step | Action | Exit | -|------|--------|------| -| B1 | Restore `apply_unbind_force_train` + tests on tip (#99 CI) | validate green (**done** · merged) | -| B2 | Align `VERSION` ↔ `pyproject.toml` version (0.4.0 vs 1.6.0 skew) | Single source of truth (**done** · 0.4.0) | -| B3 | Drop / quarantine stale probe files; scrub “E2 Spark-blocked” once trained E2 PASS is the pin | Docs match receipts (**done** on hygiene branch) | -| B4 | Keep force-train path env-only; val move ⇒ fair re-baseline | Receipt stats present | +### A. Training / gold — CLOSED FOR CURRENT CLIMB -### C. Product packaging (post–name_gate, separate authorize) +- [x] morph78 phrases settled OBSERVED `split=val`: `have fun staying poor`, `fr fr no cap` +- [x] force/hard 232/273 → 236/277 +- [x] broad comparison on the same n=256 surface: 0.98828125 > 0.88671875 +- [x] E2 PASS on `seed-morph78` +- [x] PROMOTE_BEST; Spark `BEST` → `seed-morph78` -| Step | Action | Exit | -|------|--------|------| -| C1 | Finalize `model-card.draft.md` / `hf-package/README.md` with pin metrics | Card ready, still no upload | -| C2 | Operator Hub upload sentence | Weights + card on Hub | -| C3 | Optional T13: promote shadow package into `src/hyperlex/` | Separate PR + tests | -| C4 | Flip `name_gate` only on Danny yes | Public Hyperlexical name | +**Rule:** do not start another climb without a new operator-authorized acquire/card. A future climb compares against morph78 as PRIOR. -### D. Adjacent Hyperlex PRs (skill track — not model name) +### B. Engineering hygiene -| PR | Role | Handle | -|----|------|--------| -| **#100** pytrends evidence | Skill route evidence | **Merged** to main. Independent of Hyperlexical name. | -| **#99** Spec 007 tip docs + climb | Model path | **Merged** to main. | -| **#95** HYPERLEX-Q1 | Epistemic interchange | Stay **draft**; rebase onto current `main`; remains UNQUALIFIED / pairwise BLOCKED. Spec-only. | +- [x] `VERSION` ↔ `pyproject.toml` = 0.4.0 +- [x] STATUS / NEXT_MOVES show morph78 +- [x] model-card publish shape updated from pre-train E2 wording (PR #102) +- [x] Notion Operator Hub has a 2026-09-24 morph78 block; 2026-09-23 block kept as history +- [x] operator-facing pages no longer present morph65 as current BEST (PR #102 audit) -Do **not** merge **#95** without explicit operator yes. +### C. Product packaging — post-`name_gate` ---- +- [ ] operator reviews this reconciled plan +- [ ] Danny explicit `name_gate yes` / "name Hyperlexical" +- [ ] finalize public model card from pinned receipts +- [ ] separately authorize Hub upload, or explicitly close the cycle with no Hub +- [ ] optional T13 in a separate PR with tests -## Sequencing (recommended) +### D. Adjacent tracks (not product naming) -``` -B1 (CI fix) ──► #100 operator check + merge authorize - │ - ├──► A2–A5 climb under soft_ceiling (needs gold) - │ - ├──► B2–B3 hygiene on tip / follow-up PR - │ - └──► #95 rebase only (no qualify claim) +| Track | State | +|---|---| +| HYPERLEX-Q1 (#95) | draft · **UNQUALIFIED** until its own evidence/review gate clears | +| Hyperlex → Noesis pairwise qualification | **BLOCKED** on Q1 | +| #99 / #100 / #101 | merged | -When climb + packaging ready: - Danny name_gate yes ──► C1–C2 Hub ──► optional C3 T13 -``` +Q1 status is not a substitute for Spec 007 product completion, and Spec 007 progress does not qualify Q1. -Climb (A) and skill PR #100 can proceed in parallel. Name/Hub (C) never parallel-jumps ahead of Danny yes. +## Default recommendation ---- +**HOLD morph78.** Resolve NAME and PUBLISH decisions before authorizing another training climb. ## Explicit non-goals -- Inventing OBSERVED fillers or empty-gold settles -- Hub upload or `name_gate` flip without Danny -- Warm-clone spam / upsample 11+ / SECOND_SLOT=4 -- Treating Hermes skill readiness as Hyperlexical product readiness -- Calling stub or seed smoke a T1 pass - ---- - -## Definition of done (product) - -- [ ] soft_ceiling path either PROMOTE’s a new BEST or operator closes climb with held morph65 -- [x] Tip CI green; force-train API present; version skew fixed -- [ ] Model card filled from live pin metrics -- [ ] Danny `name_gate` yes (or explicit hold) -- [ ] Hub upload done **or** explicit “no Hub this cycle” -- [x] STATUS / ROADMAP updated to match reality (no stale “E2 Spark-blocked” on operator ROADMAP once trained E2 PASS is the pin) - ---- +- restarting the completed morph78 climb +- inventing OBSERVED fillers or recycling settled phrases as new gold +- treating E2 PASS as naming authority +- Hub upload without a named operator action +- T13 without separate authorization +- changing Brier from `null` on 007 packets + +## Definition of done — current cycle + +- [x] BEST pinned: morph78 +- [x] trained E2 PASS +- [x] soft_ceiling climb closed +- [x] version hygiene +- [x] model card reflects live morph78 evidence (E1/E3 marked NOT_COMPUTABLE) +- [x] Notion Operator Hub parity +- [ ] operator product review +- [ ] Danny `name_gate` decision +- [ ] Hub decision: upload authorized, or explicit no-Hub this cycle +- [ ] optional T13 decision ## Pointers -- Climb next: root `NEXT_MOVES_007.md` -- Name gate / named phrases: `NAME-GATE-AND-NAMED-PHRASES.md` -- Soft_ceiling receipts: `receipts/20260923-authorize-gate-soft-ceiling.md`, `receipts/gate-soft-ceiling-20260923/` -- Empty gold: `receipts/20260923-authorize-val-settle-cancelled-empty-gold.md` -- Gates: `milestones.md`, `spec.md`, `dual-use-gate.md` +- Name gate + phrases: `NAME-GATE-AND-NAMED-PHRASES.md` +- Next moves: root `NEXT_MOVES_007.md` +- Promote receipt: `receipts/20260924-morph78-soft-ceiling-promote-best.md` +- Historical gate authorize: `receipts/20260923-authorize-gate-soft-ceiling.md` diff --git a/specs/007-hyperlexical-model/NAME-GATE-AND-NAMED-PHRASES.md b/specs/007-hyperlexical-model/NAME-GATE-AND-NAMED-PHRASES.md index bef6903b..615f6ac6 100644 --- a/specs/007-hyperlexical-model/NAME-GATE-AND-NAMED-PHRASES.md +++ b/specs/007-hyperlexical-model/NAME-GATE-AND-NAMED-PHRASES.md @@ -17,40 +17,61 @@ Companion to `HYPERLEXICAL-PRODUCT-PLAN.md`. - Hub = unpublished - T13 = not authorized -Do not re-run the completed morph78 climb as if it were pending work. +Receipt: `receipts/20260924-morph78-soft-ceiling-promote-best.md`. Do not re-run the completed morph78 climb as if it were pending work. ### Operator name (ingest) -Danny: **`name neologist as in repo`**. Public ingest product = **`ne0l0gist`**. This does **not** flip Hyperlexical `name_gate`. +Danny: **`name neologist as in repo`**. Public ingest product = **`ne0l0gist`** (repo spelling with zeros). Receipt: `receipts/20260924-name-ne0l0gist-as-in-repo.md`. This does **not** flip Hyperlexical `name_gate`. ## Two walls | Wall | Current state | |------|---------------| -| Dataset readiness | bucket gaps 0/0/0 on the operator harvest surface | +| Dataset readiness (`milestones.md`) | bucket gaps 0/0/0 on the operator `--include-live` surface | | Public model name / publish | **BLOCKED** until Danny explicit `name_gate yes` or explicit Hyperlexical naming | Volume readiness ≠ public naming. E2 PASS ≠ public naming. ## Gold / climb -morph78 is already settled and promoted. Historical empty-gold and morph77 cards remain evidence, not reusable progress. +morph78 is settled and promoted. Earlier empty-gold and morph77 cards are evidence, not reusable progress. -Any future climb requires a **new** acquire/authorize card against morph78 as PRIOR. Do not invent OBSERVED, recycle settled phrases as new gold, use UPSAMPLE 11+, or use `SECOND_SLOT=4`. +### Already OBSERVED — do not re-settle as new gold + +| phrase | settled by | receipt | +|--------|-----------|---------| +| `we're so back` | morph77 val-settle | `receipts/20260923-morph77-val-settle-cancelled-fair-ceiling.md` | +| `clutch up` | morph77 val-settle | same | +| `bet that up` | morph77 val-settle | same | +| `real talk` | morph77 val-settle | same | +| `have fun staying poor` | morph78 val-settle | `receipts/20260924-morph78-val-settle-soft-ceiling-inflight.md` | +| `fr fr no cap` | morph78 val-settle | same | + +### Future climb (not authorized) + +A future climb needs a **new** acquire/authorize card and compares against morph78 as PRIOR (broad 0.9883 n=256 + E2). Accepted sentence shapes: + +1. Named phrases from that new card's acquire/qualify pool: `authorize val-settle: , , …` +2. A new acquire that clears Jev `force_expand_safe` with non-empty `authorize_card_phrases`, then explicit authorize listing those phrases. + +Still forbidden: empty settle, invented OBSERVED, recycled settled phrases, UPSAMPLE 11+, `SECOND_SLOT=4`. ## `name_gate` flip plan — Danny only -Preconditions currently supported: +No agent flips the flag. -- [x] Dataset bucket gaps 0/0/0 +- [x] Dataset bucket gaps 0/0/0 (met 2026-09-10) - [x] Trained trunk-forward E2 PASS on `seed-morph78` - [x] soft_ceiling climb closed with morph78 PROMOTE_BEST -- [x] product-state reconciliation drafted -- [ ] Danny explicit `name_gate yes` / “name Hyperlexical” +- [x] Hygiene: `VERSION` ↔ `pyproject.toml`; stale "E2 Spark-blocked" current-state wording scrubbed (PR #102) +- [x] Product-state reconciliation drafted (PR #102) +- [ ] Operator product review of `HYPERLEXICAL-PRODUCT-PLAN.md` +- [ ] Danny explicit `name_gate yes` / "name Hyperlexical" On Danny yes, keep actions separate: + 1. change governed `name_gate` surfaces; -2. update public card naming; +2. update public card naming (`hyperlex-encoder-*` → Hyperlexical per `model-card.draft.md`); 3. Hub upload only on a separate named operator action; 4. optional T13 only on separate authorization + tests. @@ -59,4 +80,4 @@ On Danny yes, keep actions separate: - Product plan: `HYPERLEXICAL-PRODUCT-PLAN.md` - Current climb state: root `NEXT_MOVES_007.md` - Naming SoT: `docs/NAMING.md` -- Historical soft-ceiling receipt: `receipts/20260923-authorize-gate-soft-ceiling.md` +- Historical (2026-09-23): `receipts/20260923-authorize-gate-soft-ceiling.md` · `receipts/20260923-morph78-fresh-acquire-hold-empty.md` · `receipts/morph77-val-acquire-label-hold-20260923/` diff --git a/specs/007-hyperlexical-model/hf-package/README.md b/specs/007-hyperlexical-model/hf-package/README.md index 67afec40..af499c8f 100644 --- a/specs/007-hyperlexical-model/hf-package/README.md +++ b/specs/007-hyperlexical-model/hf-package/README.md @@ -21,10 +21,11 @@ tags: - Promotion: `PROMOTE_BEST` via soft_ceiling ceiling escape on 2026-09-24 - Broad OBSERVED: **0.9883**, n=256 - PRIOR: morph65 **0.8867**, n=256 -- E2: **PASS** +- Train val (force surface): best unbind_exact **1.0** n=164 at epoch 15 +- E2: **PASS** (trained trunk-forward, unbind_exact 1.0, n_unbind_eval 24) - Force/hard: **236 / 277** -- Upsample freeze: **11+** -- `SECOND_SLOT=4`: forbidden +- This pin: observed upsample **10**, second-slot weight **2.0**, LAST_TRAINABLE **8**, 40 epochs, warm from morph65 +- Upsample freeze: **11+** · `SECOND_SLOT=4`: forbidden - `name_gate`: **false** - Brier: **null** - Hub: unpublished @@ -33,13 +34,20 @@ tags: - Trunk: [`answerdotai/ModernBERT-base`](https://huggingface.co/answerdotai/ModernBERT-base) (~149M, Apache-2.0) - Adapter: classify `Linear(768, 9)` + unbind role/filler heads on last-layer token states -- Freeze: last 2 encoder layers trainable +- Freeze: last 8 encoder layers trainable on `seed-morph78` (recipe default for seed smoke is last 2) - Tokenizer: official ModernBERT BPE (`local_files_only`) - Train box: NVIDIA DGX Spark (GB10), aarch64, `sm_121` - Packet: `hyperlex.hyperlexical.inference.v0.1` - Brier: always null. Not a forecast. -Load the trunk from a local snapshot. Load heads from the pinned Spark artifact. There is no chat template. +Load the trunk from a local snapshot. Load heads from the pinned artifact directory (`model.safetensors`). Weights are on Spark only until a Hub upload is authorized. There is no chat template. + +```python +from transformers import AutoModel, AutoTokenizer +tok = AutoTokenizer.from_pretrained(trunk_dir, local_files_only=True) +enc = AutoModel.from_pretrained(trunk_dir, local_files_only=True) +# heads: classify / role_head / filler_head in model.safetensors +``` ## Intended use @@ -55,21 +63,21 @@ Uncensored in the Hyperlex sense: no refusal head on civilian dialect. Dual-use ## Training data -Git-tracked seed `civilian.v0.1.jsonl` is an 883-row snapshot and is **not** the train SoT. T1 training uses the local store / `--include-live` under operator settlement rules. INFERRED typology/stage does not become gold merely by inclusion. +Git-tracked seed `civilian.v0.1.jsonl` is an 883-row snapshot and is **not** the train SoT. T1 training uses the local store / `--include-live` under operator settlement rules (`seed-morph78`: live rows included 4258, train classify 4062, train unbind 15536). INFERRED typology/stage does not become gold merely by inclusion. ## Eval | Gate | Status | Note | |------|--------|------| -| E0 packet | PASS | packet/schema path | -| E1 classify vs fixture | PARTIAL / receipt-bound | do not infer beyond receipts | -| E2 unbind vs Spec 004 probe | **PASS** | trained trunk-forward on pinned model | -| E3 MiniLM control | NOT_COMPUTABLE here | no current evidence added by this reconciliation | -| E4 restricted surface drop | PASS | existing governed surface | -| E5 schema / walls | PASS | no semantic/symbolic authority mint | -| E6 dialect no refusal | PASS | existing governed surface | +| E0 packet on `rizz` | PASS (stub harness) | not re-run against `seed-morph78` weights | +| E1 classify vs fixture | NOT_COMPUTABLE | no E1 receipt for `seed-morph78`. Train-receipt val `classify_acc` 0.7733 n=516 is a train metric, not E1 | +| E2 unbind vs Spec 004 probe | **PASS** | `seed-morph78` trunk-forward: unbind_exact 1.0, token/slot F1 1.0, model_swap 1.0 ≥ probe_swap_min 0.5 | +| E3 MiniLM control | NOT_COMPUTABLE | control only; no receipt | +| E4 restricted surface drop | PASS (stub harness) | `__RESTRICTED_FIXTURE__`; not re-run against `seed-morph78` weights | +| E5 schema / walls | PASS (stub harness) | no semantic, no symbolic | +| E6 dialect no refusal | PASS (stub harness) | `no cap fr`; not re-run against `seed-morph78` weights | -This reconciliation updates stale pre-train wording only. It does not manufacture new eval evidence. +E2 source: `receipts/morph78-val-settle-20260924/e2-unbind-morph78.json`. That directory's `train-receipt.json` carries `e2_pass: false` because train does not run E2. The separate E2 eval and `GATE_LOCK.json` record the pass. Do not flip any gate by editing this card. ## Naming / publication gate @@ -77,7 +85,11 @@ E2 PASS does **not** flip the product name. Public `Hyperlexical` naming, Hub up ## Limitations -Small/curated slang surface; US-internet-heavy distribution; registry families are project taxonomies, not demographic labels; no general NLU claim; no forecast authority. +First-occurrence aligner fallback if offset mapping is missing (`seed-morph78` used `char_span + offset_mapping`). Small/curated slang surface; US-internet-heavy distribution; registry families are project taxonomies, not demographic labels; no general NLU claim; no forecast authority. + +## Bias + +Lineage families are Hyperlex registry families. They are not demographic labels. Registry rows are INFERRED. ## Citation / contact diff --git a/specs/007-hyperlexical-model/model-card.draft.md b/specs/007-hyperlexical-model/model-card.draft.md index 6f0fab64..a4e059b0 100644 --- a/specs/007-hyperlexical-model/model-card.draft.md +++ b/specs/007-hyperlexical-model/model-card.draft.md @@ -2,7 +2,7 @@ Canonical draft for Hub shape: `hf-package/README.md`. -**Current trained pin:** `seed-morph78` · soft_ceiling `PROMOTE_BEST` 2026-09-24 · broad OBSERVED **0.9883** n=256 vs PRIOR morph65 **0.8867** n=256 · trained trunk-forward E2 **PASS**. +**Current trained pin:** `seed-morph78` · soft_ceiling `PROMOTE_BEST` 2026-09-24 · broad OBSERVED **0.9883** n=256 vs PRIOR morph65 **0.8867** n=256 · trained trunk-forward E2 **PASS**. Receipt: `receipts/20260924-morph78-soft-ceiling-promote-best.md`. E1/E3 on this pin: NOT_COMPUTABLE. Do not upload. Do not rename the public model product yet. The remaining naming wall is explicit operator authorization: `name_gate=false` until Danny says `name_gate yes` or explicitly names Hyperlexical. diff --git a/specs/007-hyperlexical-model/spec.md b/specs/007-hyperlexical-model/spec.md index 764315f5..cb2a5d3a 100644 --- a/specs/007-hyperlexical-model/spec.md +++ b/specs/007-hyperlexical-model/spec.md @@ -2,7 +2,7 @@ **Feature**: Learned recoverable-structure encoder for slang atoms **Date**: 2026-09-09 -**Status**: SPECIFY locked C1–C52 / A5 milestones+engineering / SHADOW implement on main / E2 fail / no Hub +**Status**: SPECIFY locked C1–C52 / A5 milestones+engineering / SHADOW implement on main / stub E2 fail (expected) / trained E2 PASS on BEST `seed-morph78` (2026-09-24) / `name_gate` false / no Hub **Depends on**: constitution v1.0.0 I–X; specs 000, 001, 003, 004; 005 route-labels (do not claim `semantic`) **Does not open**: 006 IsA (reserved) **Clarify**: `clarify.md` + `locks-a4.md` + `locks-a5.md` @@ -15,7 +15,7 @@ **Packet**: `hyperlex.hyperlexical.inference.v0.1` **HF name reserved**: `hyperlex-encoder-*` until unbind gate passes; `hyperlex-structure-*` only after gate -**Naming:** this spec is the **Hyperlexical** model / train / eval / E2 / `name_gate` claim. Slang harvest and live ingest are **ne0l0gist**. Repo **Hyperlex** is the transitional monorepo shell. `name_gate` stays false until E2. +**Naming:** this spec is the **Hyperlexical** model / train / eval / E2 / `name_gate` claim. Slang harvest and live ingest are **ne0l0gist**. Repo **Hyperlex** is the transitional monorepo shell. `name_gate` stays false until Danny explicit yes; trained E2 PASS does not flip it. ## Intent diff --git a/specs/007-hyperlexical-model/status.md b/specs/007-hyperlexical-model/status.md index ca3f518d..f486b5b1 100644 --- a/specs/007-hyperlexical-model/status.md +++ b/specs/007-hyperlexical-model/status.md @@ -28,8 +28,9 @@ Operator scoreboard (Danny-locked harvest snapshot **2026-09-10**; climb pin **2 Next operator sentences that do work: -- Authorize with **named phrases** on a live empty card, or new `force_expand_safe` acquire — see `NAME-GATE-AND-NAMED-PHRASES.md` -- soft_ceiling decide / broad OBSERVED path (not force-only at fair 1.0 n=164) +- Default: **HOLD** `seed-morph78`; operator product review of `HYPERLEXICAL-PRODUCT-PLAN.md` +- Danny `name_gate` decision; Hub decision; optional T13 decision (each separate) +- A new climb only on a new named-phrase acquire card vs morph78 PRIOR — see `NAME-GATE-AND-NAMED-PHRASES.md` - `open 006 IsA` — separate spec There is no further specify work on 007 without an amendment. diff --git a/specs/007-hyperlexical-model/tasks.md b/specs/007-hyperlexical-model/tasks.md index b31fe784..eaaeb068 100644 --- a/specs/007-hyperlexical-model/tasks.md +++ b/specs/007-hyperlexical-model/tasks.md @@ -39,4 +39,4 @@ Live counts stay on Notion Tasks 007. Do not rewrite gates when a harvest number - Load ModernBERT in CI - Flip `name_gate` (Danny yes) - Open 006 -- Force-only climb past morph65 fair 1.0 n=164 (soft_ceiling armed instead) +- Force-only climb at fair 1.0 n=164 (soft_ceiling used instead; that climb closed with morph78 PROMOTE_BEST 2026-09-24) diff --git a/specs/007-hyperlexical-model/u3-recipe.md b/specs/007-hyperlexical-model/u3-recipe.md index bbe5f35a..48033474 100644 --- a/specs/007-hyperlexical-model/u3-recipe.md +++ b/specs/007-hyperlexical-model/u3-recipe.md @@ -1,6 +1,6 @@ # U3 recipe — Spark train / 004 eval (SHADOW) -Status: recipe + harness landed. Weights not trained. E2 not passed. +Status: recipe + harness landed. Trained climb pins exist on Spark; current BEST `seed-morph78` passes trained E2 (2026-09-24). See `STATUS.md`. ## Box @@ -22,7 +22,7 @@ PYTHONPATH=scripts/shadow python3 -m hyperlexical.export --include-live T1 / E2 trains from the **local SoT** (`~/.hyperlex/hyperlexical/ingest_candidates.jsonl`) via `--include-live`. Omit `--include-live` only for harness wiring against the tracked seed. Operator `--include-live` (2026-09-10 PT evening): n=6506 · classify 2437 · unbind 1345 · negatives 208 · gaps 0/0/0. -Name-gate is still false (E2 Spark-blocked). The word Hyperlexical stays off the card until E2 beats 004 on shared fixtures **and** civilian unbind rows exist. +Name-gate is still false (trained E2 PASS does not flip it; Danny yes required). The word Hyperlexical stays off the card until E2 beats 004 on shared fixtures **and** civilian unbind rows exist. Do not train on `split=reject`. Do not treat INFERRED typology/stage as OBSERVED gold. diff --git a/specs/README.md b/specs/README.md index 0374d997..d8b43599 100644 --- a/specs/README.md +++ b/specs/README.md @@ -11,7 +11,7 @@ Constitution: `.specify/memory/constitution.md` (v1.0.0, **SHADOW** until operat | 004 | Recoverable-structure probe | SPECIFY locked · implement SHADOW | `scripts/shadow/recoverable_structure/` | | 005 | Route labels | SPECIFY locked (Notion + branch `005-route-labels`) | not on main — PR 18 | | 006 | IsA | reserved — do not open from 007 | — | -| 007 | Hyperlexical model | SPECIFY locked C1–C52 · A5 milestones/engineering · SHADOW implement on main | `scripts/shadow/hyperlexical/` + Aaron Spark handoff. E2 fail. No Hub. | +| 007 | Hyperlexical model | SPECIFY locked C1–C52 · A5 milestones/engineering · SHADOW implement on main | `scripts/shadow/hyperlexical/` + Aaron Spark handoff. Stub E2 fail (expected); trained E2 PASS on BEST `seed-morph78`. `name_gate` false. No Hub. | 007 extras: `clarify.md`, `locks-a4.md`, `locks-a5.md`, `weights.md`, `hardware.md`, `uncensored.md`, `trunk.md`, `AARON-SPARK-TRAIN.md`, `milestones.md`, `engineering.md`, `hf-package/`, `schemas/`, `contracts/`. From 4c788adb1544fa28c73d0191a6a7897c80060f43 Mon Sep 17 00:00:00 2001 From: Daniel Meyer Date: Thu, 24 Sep 2026 10:44:02 -0700 Subject: [PATCH 7/7] docs(007): drop duplicate root product plan (canonical copy under specs/007) --- HYPERLEXICAL-PRODUCT-PLAN.md | 117 ----------------------------------- 1 file changed, 117 deletions(-) delete mode 100644 HYPERLEXICAL-PRODUCT-PLAN.md diff --git a/HYPERLEXICAL-PRODUCT-PLAN.md b/HYPERLEXICAL-PRODUCT-PLAN.md deleted file mode 100644 index baca9158..00000000 --- a/HYPERLEXICAL-PRODUCT-PLAN.md +++ /dev/null @@ -1,117 +0,0 @@ -# Hyperlexical model product — completion plan - -**Status:** DRAFT (operator review) · **Reconciled:** 2026-09-24 -**Naming:** repo **Hyperlex** = transitional shell. Public ingest = **ne0l0gist**. Public trained-model product = **Hyperlexical**, still gated. Hermes skill ≠ Hyperlexical. - -**Hard locks:** `name_gate=false` until Danny explicit yes · no Hub upload · no invented OBSERVED · upsample freeze **11+** · no `SECOND_SLOT=4` · schemes `positional|type_slot` only · Brier `null` on every 007 packet. - -This plan supersedes the 2026-09-23 morph65/empty-morph78 snapshot. It does not flip `name_gate`. - -## Current honest state - -| Layer | State | -|---|---| -| Hermes skill | **Ready** v0.4.0 | -| Spec 007 trained pin | **BEST=`seed-morph78`** | -| Promotion | **PROMOTE_BEST** via soft_ceiling ceiling escape | -| Broad OBSERVED | **0.9883 n=256** | -| PRIOR | morph65 **0.8867 n=256** | -| E2 | **PASS** on trained trunk-forward path | -| Force/hard | **236 / 277** | -| soft_ceiling | **SPENT / CLOSED for this climb** | -| name_gate | **false** | -| Hub | unpublished | -| T13 | not authorized | -| Model card | reconciliation required before publication | - -Verdict: training produced a viable pinned candidate. The remaining product boundary is naming/publication/integration authority, not proof that training can succeed. - -## Product completion states - -### TRAIN -`UNTRAINED → TRAINED → E2_PASS → BEST_PINNED` - -**Current:** `BEST_PINNED(seed-morph78)` - -### NAME -`UNNAMED_PUBLICLY → NAME_GATE_APPROVED` - -**Current:** `UNNAMED_PUBLICLY` - -### PUBLISH -`LOCAL_ONLY → CARD_READY → HUB_AUTHORIZED → HUB_PUBLISHED` - -**Current:** `LOCAL_ONLY` - -### INTEGRATION -`SHADOW → T13_AUTHORIZED → SRC_PROMOTED` - -**Current:** `SHADOW` - -## Definition of complete - -Hyperlexical is complete for this product cycle when: -1. a pinned BEST has receipts and E2 PASS; -2. dataset provenance remains honest; -3. the model card reflects the live pin without inventing metrics; -4. Danny explicitly approves `name_gate`; -5. any Hub upload is separately authorized; -6. any T13 promotion is separately authorized and tested. - -Until item 4, artifact naming remains `hyperlex-encoder-*`. - -## Workstreams - -### A. Training / gold — CLOSED FOR CURRENT CLIMB - -- [x] morph78 phrases settled -- [x] force/hard 236/277 -- [x] broad comparison on same n=256 surface -- [x] 0.9883 > 0.8867 PRIOR -- [x] E2 PASS -- [x] PROMOTE_BEST -- [x] BEST pin updated to morph78 - -**Rule:** do not start another climb without a new operator-authorized acquire/card. - -### B. Engineering hygiene - -- [x] VERSION ↔ pyproject = 0.4.0 -- [x] current STATUS/NEXT_MOVES show morph78 -- [ ] model-card publish shape updated from stale pre-train E2 wording -- [ ] Notion Operator Hub current-work block reconciled to morph78 -- [ ] verify no operator-facing page still calls morph65 current BEST - -### C. Product packaging — post-name_gate - -- [ ] operator reviews this reconciled plan -- [ ] Danny explicit `name_gate yes` / explicit Hyperlexical naming -- [ ] finalize public model card from pinned receipts -- [ ] separately authorize Hub upload or explicitly close cycle with no Hub -- [ ] optional T13 in separate PR + tests - -### D. Adjacent track - -HYPERLEX-Q1 remains separate from product naming. It stays **UNQUALIFIED** until its own evidence/review gate clears; Hyperlex → Noesis remains blocked by that track's requirements. - -## Explicit non-goals - -- restarting morph78 work already completed -- inventing OBSERVED fillers -- treating E2 PASS as automatic naming authority -- Hub upload without a named operator action -- T13 without separate authorization -- using Q1 qualification status as a substitute for Spec 007 product completion -- changing Brier from null on 007 packets - -## Definition of done — current cycle - -- [x] BEST pinned: morph78 -- [x] trained E2 PASS -- [x] soft_ceiling climb closed -- [x] version hygiene -- [ ] model card reflects live morph78 evidence -- [ ] Notion parity restored -- [ ] Danny `name_gate` decision -- [ ] Hub decision: upload authorized or explicit no-Hub this cycle -- [ ] optional T13 decision