SRT-Adapter v1.0
A 14.5M-parameter adapter on a frozen Qwen/Qwen2.5-7B that exposes per-token semiotic readouts β community vector, divergence vectors, reflexivity estimate $\hat{r}$, regime classification β and produces a sentence-embedding space that competes on English STS while preserving the v8a interpretability surface.
v1.0 = the v15a checkpoint. v15a warm-starts from v8a and adds one epoch of InfoNCE on 396K English public sentence pairs (NLI + Quora). It is the first SRT-Adapter that is simultaneously a useful embedding model and a semiotic readout.
Custom-code model. Not
AutoModel-loadable. Clone this repo and load through the bundledSRTAdapterclass. See How to get started.
Training source code is held back during patent and publication review. Inference, evaluation, capability bench, and reproduction scripts are included.
What changed since v8a
v8a's headline claims were interpretability claims (calibrated $\hat{r}$, community recall, regime AUROC on internal validation). They survive in v1.0 β we re-measured every external benchmark and they reproduce within 0.003. What v8a did not do was produce a usable sentence-embedding space: external STS Spearman was around 0.21 averaged across 40 multilingual splits.
v1.0 fixes that without breaking anything else.
| Axis | v8a (2026-04-26) | v1.0 / v15a (2026-05-01) | Ξ |
|---|---|---|---|
| STS, English mean Spearman (17 splits, MTEB 2.12) | 0.20 | 0.5894 | +0.39 |
| STS, all-40-split mean | 0.21 | 0.3634 | +0.15 |
| STS top-line (HUMESICK-R) | 0.55 | 0.7973 | +0.25 |
| Cap-A community NMI vs Banking77 (3-seed mean) | 0.4427 Β± 0.005 | 0.5391 Β± 0.008 | +0.10 (~13Ο) |
| Cap-C paraphrase invariance (mean cos ΞΌ Β± Ο, n=162) | 0.874 Β± 0.144 | 0.913 Β± 0.066 | ΞΌ +0.04, Ο halved |
| TruthfulQA hallucination AUROC (mean_r_hat, n=1476) | 0.5747 | 0.5762 | +0.001 (preserved) |
| TruthfulQA mean_ce AUROC | 0.4150 | 0.4148 | unchanged |
| BEN regime fractions (Banking77, n=6156 positions) | 96.9% sup / 3.1% sub | 96.9% / 3.1% | identical |
| MAH boundary F1 (concat probe, n=200) | 0.309 | 0.315 | +0.006 (within noise) |
| Trainable params | 14,562,627 | 14,562,627 | same architecture |
Read. v1.0 dominates v8a on every embedding-quality axis (STS, NMI, paraphrase invariance) and matches it on every interpretability axis (hallucination AUROC, regime distribution, MAH boundaries). Same forward pass. Same 4 readouts. Same VRAM and latency.
Honest scope
What v1.0 is good at:
- English sentence similarity (HUMESICK-R 0.797, STS17 0.740, SICK-R 0.644, mean 0.589 across 17 English splits)
- Per-token diagnostics that come for free from the same forward pass β community vector, divergence norms, $\hat{r}$, regime logits
- Cluster discovery on intent-labelled corpora (Banking77 NMI 0.54)
- Paraphrase-invariant embedding (cos 0.913 Β± 0.066 on STSB high-similarity pairs)
What v1.0 is not good at, despite what v8a's model card suggested:
- Retrieval. SciFact nDCG@10 = 0.028, NFCorpus = 0.011, ArguAna = 0.20. STS-only training did not produce a retrievable embedding space. If you need retrieval, use
mxbai-embed-large-v1(SciFact 0.733). - Cross-lingual STS (12 IndicCrosslingual splits all near zero or negative β training data was English-only)
- Hallucination detection at production thresholds. The TruthfulQA AUROCs (0.57β0.58 best channel) reproduce v8a's number but are not a deployable detector. They are an honest non-trivial-vs-chance signal, not a SOTA hallucination filter.
- BEN regime classification as a discriminative tool. The classifier is stuck at ~97% supercritical on most modern English text. The continuous $\hat{r}$ varies (ΞΌ β 0.55, Ο β 0.39); the binary head does not.
The framing for v1.0 is: "a frozen 7B + 14M-param side-net that learns interpretable community structure, with a real English STS embedding space attached." Not a general-purpose SOTA encoder, not a hallucination detector. A diagnostic instrument that now also embeds usefully.
Capability bench (this release)
Four-task probe of the SRT-specific readouts, evaluated bf16 on a single GPU. Reproducible with scripts/capability_eval.py.
| Task | What it measures | v8a | v1.0 | Notes |
|---|---|---|---|---|
| Cap-A community NMI vs Banking77 (n=1000, K=77) | Can community_encoded recover known intent labels via K-means? | 0.443 Β± 0.005 | 0.539 Β± 0.008 | 3-seed mean Β± SD. Ξ = +0.10, ~13Ο |
| Cap-B MAH boundary F1 on 5-sentence concatenations (n=200) | Does last-MAH divergence-norm peak at sentence boundaries? | 0.309 | 0.315 | Tied; weak signal β likely tokenizer-driven, not recommended as headline |
| Cap-C paraphrase mean cos on STSB β₯ 4.5 (n=162) | Embedding stability under paraphrase | 0.874 Β± 0.144 | 0.913 Β± 0.066 | ΞΌ +0.04, Ο halved |
| Cap-D BEN regime coverage on Banking77 (n=6156 positions) | Distribution of binary regime predictions | 96.9% sup / 3.1% sub | 96.9% / 3.1% | Stuck. Diagnostic only. Reported as honest negative. |
Cap-A is the headline. It is the only capability metric with both (a) a clear tie to the SRT thesis (community structure as the learned representation) and (b) a robust seed-stable separation from baseline.
STS evaluation (MTEB 2.12, 40 splits, full results)
Run with mteb==2.12.30, task type STS. See mteb/summary.json for the per-split JSON.
English-only (17 splits, dev + test combined):
| Spearman | Task |
|---|---|
| 0.7973 | HUMESICK-R |
| 0.7413 | SemRel24STS (eng) |
| 0.7397 | STS17 (en-en) |
| 0.6898 | STSBenchmarkMultilingualSTS (en-dev) |
| 0.6555 | STS15 |
| 0.6441 | SICK-R |
| 0.6148 | HUMESTS22 (en) |
| 0.5994 | HUMESTS12 |
| mean = 0.5894 across all 17 English splits |
All 40 splits (English + multilingual): mean 0.3634, median 0.4867. The 12 IndicCrosslingual splits are all near zero or negative β expected, training data was English-only.
For comparison, v8a's published mean across the same 40-split cohort is +0.21.
Per-token readouts (preserved from v8a)
A single forward pass returns four readouts at every token position. None of these heads were retrained for v1.0; they are bit-stable with v8a within 3 decimals on the same input.
- Community vector β 64-D continuous output of the CDH community head. Use cosine similarity for clustering, k-NN, or as a sentence embedding (mean-pool then L2-normalize).
- Divergence vectors β per-MAH-layer residuals between the community-conditioned prediction and the actual hidden state. L2 norm is a per-token "where does meaning fork" signal.
- Reflexivity estimate $\hat{r}$ β continuous BEN scalar (ΞΌ β 0.55, Ο β 0.39 on Banking77). Tracks information density and contestation. Do not use the binary regime head.
- Regime logits β 2-class subcritical/supercritical. Stuck at ~97% supercritical on modern English. Reported for completeness, not recommended for use.
External hallucination-AUROC numbers reproduce v8a's published figures (TruthfulQA, n=1476): max_r_hat 0.536, mean_r_hat 0.576, mean_ce 0.415. These are honest non-trivial-vs-chance signals, not deployable detectors.
Lineage
v1.0 is the production embedding-quality stage of a multi-year program on computational semiotics.
- Stages 1β2 (synthetic + Supabase, 2026-03): core architectural claims (subspace specialization, community differentiation, divergence tracking, bifurcation detection) validated. See
VALIDATION_HISTORY.mdin the v8a release. - Stage 3 Phase 1 (TinyLlama-1.1B, 2026-03/04): 105 training rounds; community detection silhouette 6.93Γ, $\hat{r}$βpolarization Pearson 0.66, regime accuracy 85% on curated. Plateau on 2-community Supabase data triggered the data-first pivot.
- v5 β v8a (Qwen 2.5-7B + Reddit, 2026-04): scalable adapter at 0.19% parameter overhead. v8a is canonical for the interpretability claims in the original SRT paper.
- v9 β v14 (2026-04): target-norm, MARINA exploration, contrastive data assembly. Several negative results documented.
- v15a (this release, 2026-05-01): v8a + 1 epoch InfoNCE on NLI + Quora (396K pairs), 12,373 steps on a single A6000. The first checkpoint that is simultaneously a useful embedding and a semiotic instrument.
- v16 β v22c, v23 (2026-05): alternative recipes (gte distillation, model souping, beyond-STS retrieval). All non-improving on the v15a Pareto frontier; v22c won multilingual STS at the cost of English STS and Cap-A NMI. Documented as ablations; not shipped.
For the program-level theoretical foundation see Lancaster (2025), "The Treachery of Signs," SSRN 5987495. For the Stage 1 + Stage 2 spec see Lancaster (2026a), SSRN 6349978.
Package contents
srt-adapter-v1.0/
βββ README.md β you are here
βββ LICENSE β Apache-2.0
βββ config.json β v15a hyperparameters
βββ adapter.pt β v15a weights (~28 MB, PyTorch state-dict)
βββ adapter.safetensors β same weights, safetensors format
βββ SHA256SUMS β integrity hashes for weights + config
βββ requirements.txt β torch + transformers + numpy + safetensors
βββ src/srt/ β inference-only model code (CDH, MAH, RRM, BEN)
βββ examples/
β βββ README.md
β βββ load_and_score.py β per-token readouts demo
β βββ encode_sentences.py β sentence-embedding demo
βββ scripts/
β βββ reproduce_capability.sh β rerun Cap-A/B/C/D on this checkpoint
β βββ capability_eval.py β capability bench source
β βββ run_mteb.py β English STS reproduction
β βββ hallucination_probe.py β TruthfulQA AUROC reproduction
βββ benchmarks/
β βββ capability_summary.json β Cap-A/B/C/D results, this checkpoint
β βββ capability_seed_s{0,1,2}.json β 3-seed Cap-A sweep
β βββ mteb_summary.json β English STS suite results
β βββ hallucination_tqa.json β TruthfulQA AUROCs
βββ data/
βββ val_200.jsonl β held-out validation samples
How to get started
pip install -r requirements.txt
cd examples
python load_and_score.py --text "Vaccine mandates are an obvious public health win."
python encode_sentences.py --sentences "A man is playing guitar." "Someone is performing music."
First run downloads Qwen/Qwen2.5-7B (~15 GB).
Reproduce the capability bench
bash scripts/reproduce_capability.sh
# Expected (3-seed mean):
# Cap-A NMI = 0.539 Β± 0.008
# Cap-C cos = 0.913 Β± 0.066
Reproduce the STS evaluation
python scripts/run_mteb.py --output benchmarks/mteb_summary.json
# Expected:
# English-mean Spearman β 0.589
# HUMESICK-R β 0.797
Citation
@misc{lancaster2026srtadapter,
title = {SRT-Adapter v1.0: Frozen-Backbone Semiotic Readouts with Contrastive Embedding},
author = {Lancaster, James Burton},
year = {2026},
doi = {10.57967/hf/8560},
url = {https://huggingface.co/RiverRider/srt-adapter-v1.0}
}
Changelog from v8a
- + contrastive embedding head β
community_output.encodedis now usable as a sentence embedding (mean-pooled, L2-normalized). English STS mean 0.21 β 0.589. - + capability bench (
scripts/capability_eval.py) β Cap-A/B/C/D probes for community structure, MAH boundaries, paraphrase invariance, regime coverage. - = preserved interpretability surface β TruthfulQA AUROCs and BEN regime distribution match v8a within noise.
- β removed claims that did not reproduce β calibrated $\hat{r}$βr_true Pearson on curated probe (was 0.005, never had signal in v8a either), HaluEval AUROC (0.635 best channel was a max-over-tokens artifact), retrieval claims (never made for v8a, but ablated and disconfirmed for v15a so we say so explicitly).
- = same architecture, same VRAM, same latency β 14,562,627 trainable params, ~+5β8% latency on A6000 bf16.
- Downloads last month
- 37
Model tree for RiverRider/srt-adapter-v1.0
Base model
Qwen/Qwen2.5-7B