Written entirely by Claude, as a working record for agents more than for human readers: every number with its source file, and every claim since withdrawn. Some facts here may be out of date; where it disagrees with the post, trust the post. For the readable version, see the companion.

How the 134-adapter zoo was built

End-to-end account of the construction pipeline, from 140 trait words to 134 stage-one LoRA adapters, stage-two personas and the Hugging Face release.

currentverified 2026-09-16

The zoo is 134 LoRA adapters on Qwen/Qwen3.5-4B, one per personality-trait adjective. This page is the spine: each step links to the page that carries its numbers and its sources.

The pipeline in numbers

step count source
Goldberg unipolar Big Five markers, copied unchanged 100 qwen35/traits_primary.json
adjectives drawn from the Condon lexicon 40 qwen35/traits_secondary.json
trait words sent to the constitution writer 140 qwen35/genpairs.log:4
refused as not naming a disposition, first pass 9 qwen35/backups/constitutions.json.pre-generic-anchor.bak
re-screened on the inventory sense and accepted 3 qwen35/regen_goldberg_senses.py
refused after the second screen 6 qwen35/constitutions.json
traits with a constitution, hence trainable 134 qwen35/genpairs.log:4
target preference pairs (134 x 500) 67,000 qwen35/genpairs.log:4
pairs actually generated after three retry passes 66,937 qwen35/genpairs_retry3.log
prompts common to all 134 traits 445 of 500 qwen35/genpairs_retry3.log
stage-one DPO adapters 134 qwen35/phase2_runs/archive/phase5_sweep_134.json
stage-two introspection adapters 134 qwen35/analysis/merge_audit.json

The steps

  1. Trait selection. 100 Goldberg markers copied byte-for-byte from the earlier sweep100 experiment (The 100 Goldberg primary traits); 40 more adjectives drawn by k-means over sentence embeddings of a curated lexicon (The 34 Lexicon traits and how they were drawn), after two earlier draws were thrown away (The two discarded secondary draws).
  2. Constitutions. A teacher model writes a 120-200 word character document per trait, and is allowed to refuse (Constitution generation). Six refusals stand (The six refused traits). Every accepted constitution then carries a cross-trait anchoring paragraph, which was rewritten once to remove a circularity (The anchor block and its 2026-08-19 revision).
  3. Preference pairs. One paired-teacher call per (trait, prompt) produces both sides of a DPO pair (DPO pair generation) over a prompt pool shared byte-identically across traits (The shared prompt pool and the 445-prompt intersection).
  4. Stage one: DPO. The recipe was chosen by a phase-2 bake-off (Phase 2 and how the training recipe was chosen) and is recorded per run in the container's own metadata (Stage-one training configuration, Run provenance - runmeta.json and its defects).
  5. Stage two: introspection SFT plus a 0.25 linear merge. Open Character Training's second stage, run bug-faithfully (Stage two - introspection SFT and the 0.25 persona merge). The merge PEFT actually performs is not the merge the papers describe, and the project measured and corrected it (The persona merge and its correction).
  6. Release. Two Hugging Face repositories under the EternalRecursion namespace (Hugging Face artefacts), built from four Modal volumes (modal-volumes), at a metered cost recorded in zoo-spend-ledger.

How the build was run — pre-registration, gates, the runner procedure and the traps each rule answers — is zoo-build-governance. Repetition in the stage-two corpora, a confound for comparing those adapters, is Repetition in the stage-two corpora.

Later additions outside the 134 — four alignment-relevant traits and three candidate names for an unnamed direction — are in The alignment and hole traits.

What the construction is for

The design constraint behind almost every choice above is that two adapters must differ by trait and by nothing else. That is why the prompt pool is shared and asserted byte-identical, why all 134 adapters share one random LoRA-A, why the anchoring paragraph was rewritten to stop naming Big Five markers, and why the nulls exist. The geometric claims that rest on it are in Weight-space geometry of the 134-adapter zoo; the control arms are in The null control arms and The seed floor. The two source papers are Open Character Training (Maiya et al., 2025) and Persona Cartography (Baines et al., 2026); where this project's recipe departs from them is recorded in Where the recipe diverges from the two source papers. Terms are defined in Glossary.

Sources

  • qwen35/select_traits.py
  • qwen35/constitutions.py
  • qwen35/gen_pairs.py
  • qwen35/make_common_pool.py
  • qwen35/train_qwen35.py
  • qwen35/oct_stage2.py
  • qwen35/HANDOVER.md
  • qwen35/phase2_runs/archive/phase5_sweep_134.json
  • qwen35/genpairs.log
  • qwen35/genpairs_retry3.log

Linked from