Building the zoo

  • Constitution generation current Each trait's training data is conditioned on a 120-200 word second-person character document written by claude-sonnet-4.6 at temperature 0, with a built-in refusal option that doubles as the only quality screen on the trait words.
  • DPO pair generation current One paired-teacher call per trait and prompt returned both sides of a preference pair; glm-4.5-air produced 66,937 of a target 67,000 pairs across 134 traits over four passes.
  • How the 134-adapter zoo was built current 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.
  • How the build was governed current Pre-registration before results, gates in front of spend, a written runner procedure that was never spawned, and a standing rule that a treatment must be verified from what the container recorded rather than from the launch command.
  • Hugging Face artefacts current Two public-namespace repositories under EternalRecursion hold the adapters and the stage-two transcripts; the adapter repo carries four subfolders and the transcript repo reached all 536 files on 2026-08-30, while several cards and audits record smaller counts from earlier dates.
  • Modal volumes and what lives on each current Four persistent volumes carry the zoo - pc-qwen35-sweep for stage-one adapters and null arms, pc-qwen35-adapters for later arms, pc-qwen35-oct2 for stage two, pc-qwen35-probe for activation-space means.
  • Phase 2 and how the training recipe was chosen current A bake-off over eight four-trait runs found that plain DPO collapsed to a trivial discriminator, that OCT's NLL-on-chosen term at 0.1 fixed it, and that plain LoRA at alpha 128 gives OCT's effective scale of 2.0; seven gates then stood in front of the main sweep.
  • Repetition in the stage-two corpora current Negatively keyed adapters repeat 2.21x more in generation, but the matched corpus scan finds only a 1.20x keying ratio, so most of the behavioural gap is not inherited from the training data.
  • Run provenance - runmeta.json and its defects current Each container writes a runmeta.json beside its adapter carrying seeds, hyperparameters, corpus hashes and the full trl log history; 234 of 234 were recovered into git, and the stage-two loss_last field is wrong for any resumed run.
  • Stage two - introspection SFT and the 0.25 persona merge current Open Character Training's second stage, run bug-faithfully on all 134 traits - 12,000 self-generated transcripts per trait, a rank-64 SFT LoRA on the DPO-merged base, then a linear merge of DPO at 1.0 with SFT at 0.25.
  • Stage-one training configuration current The 134 DPO adapters were trained at rank 64, alpha 128, plain LoRA (effective scale 2.0), beta 0.1, loss_type sigmoid plus sft at weights 1.0 and 0.1, KL 0.001, on 445 pairs for 13 optimizer steps, all sharing one random LoRA-A from seed 0.
  • The 100 Goldberg primary traits current The primary trait set is Goldberg's 100 unipolar Big Five markers, copied unchanged from the earlier sweep100 experiment and verified by five mechanical checks before use.
  • The 34 Lexicon traits and how they were drawn current Forty adjectives were drawn from Condon et al.'s 2,818-word trait-descriptive set by k-means over sentence embeddings plus a random within-cluster pick; six were later refused, leaving the 34 unlabelled Lexicon traits.
  • The alignment and hole traits current Seven adapters trained after the zoo - four alignment-relevant traits and three candidate names for the widest unnamed direction - on the same recipe but their own corpora, and not part of the 134.
  • The anchor block and its 2026-08-19 revision current Every constitution carries a cross-trait anchoring paragraph; the original enumerated one Goldberg marker per Big Five factor, which could have manufactured the result under test, and was replaced by a generic block with the enumerated form retained as an ablation arm.
  • The persona merge and its correction current PEFT's linear adapter combination sums LoRA factors, not deltas, so the published personas carry a cross term worth 0.795 to 0.823 of the merged delta's Frobenius norm across all 134 traits; the project measured it and published an exact concatenation merge alongside.
  • The shared prompt pool and the 445-prompt intersection current All 134 traits were asked one byte-identical 500-prompt pool; per-trait drops were correlated with the trait, so the corpus was intersected to the 445 prompts every trait retained, and that intersection is what the zoo was trained on.
  • The six refused traits current Nine of 140 trait words were refused by the constitution writer as not naming a disposition; three Goldberg markers were re-screened on their inventory sense and accepted, leaving six refusals and 134 trainable traits.
  • The two discarded secondary draws historical Draws 1 and 2 both sampled Allport and Odbert's 1936 word list; the first had no semantic constraint and returned 14 of 40 unusable words, the second added WordNet-gloss filters that were worse, and the source was replaced rather than filtered further.
  • Trait provenance current Hub page. Where the 134 traits come from - 100 Goldberg unipolar markers plus 34 Condon-lexicon adjectives - and the seven later adapters that are not part of the 134.
  • What the zoo cost current The recorded ledger figure of $195.90 under-reported by about $175 and was superseded by a measured ~$370.65; the container-minute meter reads $2,240.52 against a $2,400 budget as of 2026-09-07.
  • Where the recipe diverges from the two source papers current paper_notes.md section 3 lists eleven divergences from Open Character Training and Persona Cartography; most were closed before or during the build, three were deliberate improvements, and two remain open.
  • Zoo training recipe current Hub page. The recipe the 134 adapters were trained with (rank 64, alpha 128, plain LoRA, DPO sigmoid plus 0.1 SFT, KL 0.001, 445 pairs, 13 steps, shared LoRA-A) and where each part is documented.