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.
Glossary
Definitions of the project's terms, from LoRA and OCT stages to the exact Gram, the factor analysis vocabulary (PAF, oblimin, Tucker congruence, chart, best axis pair), the controls (null arms, seed floor, twin), the dose vocabulary (Fisher norm and spread), the data score, the stage-two objects and the judging setup.
currentverified 2026-09-16
Terms are grouped by where they arise. Pages that carry the numbers are linked.
The adapters
- LoRA. Low-rank adaptation: a weight update dW = s B A with A of shape (r, d_in), B of shape (d_out, r), scaling s = alpha / r. The zoo uses r = 64, alpha = 128, so s = 2.0, on every linear module of Qwen3.5-4B (248 modules in the Gram code). See Zoo training recipe.
- rsLoRA. A variant with s = alpha / sqrt(r). Off in the zoo; some early control arms were accidentally run with it and discarded (
.RSLORA-INVALIDlogs, The null control arms). - Shared LoRA-A init. Within one seed every adapter starts from the identical random A and B = 0. After stage-1 training A has drifted about 1.5 percent, so all 134 stage-1 adapters share almost the same input subspace. This is why cross-adapter cosines are dominated by the shared component and why the seed-paired control exists. See The seed floor, Adapter effect and LoRA-A drift.
- Stage 1 (distillation). OCT's first stage: DPO on pairs generated by a teacher model prompted with and against a trait constitution. Every geometric object in the post draft, on the companion and on this wiki is a stage-1 adapter unless it says otherwise. See Zoo training recipe.
- Stage 2 (introspection). OCT's second stage: SFT on self-generated reflection and interaction transcripts, producing a second LoRA whose A is one random draw shared by all 134 (different from stage one's draw), then merged with stage 1. See Stage-two geometry.
- Persona adapter; persona exact versus merged. The deployed OCT artefact, dW = dW_dpo + 0.25 dW_sft. The merged persona is what PEFT's linear merge of the two LoRAs produces, which adds a cross term that should not exist and is what the first Hub upload carried; the exact persona is the rank-128 concatenation of the two adapters with the stage-two block scaled by 0.25, which reproduces dW_dpo + 0.25 dW_sft to relative error 0.000329 (
fix_persona_merge.py, Hub folderpersona_exact). Every persona result on this wiki is on the exact persona unless it says otherwise. See The persona merge and its correction, Full OCT persona replication. - Stage one mean (grand mean). The average of all 134 stage-one weight updates, taken as a unit direction. It is the control direction for the stage-two shared direction and the diamond in Figure 11 of the post. See What the stage-two shared direction does, Fisher norms of the steering directions.
- Stage-two shared direction. The grand mean of the 134 stage-two (introspection) adapters: one direction carrying 15% of every stage-two adapter's squared norm, at cosine 0.39 to each. Steering along it moves the model from advising to being the character. See Structure of the stage-two adapter space, What the stage-two shared direction does.
- Constitution. The natural-language description of a trait given to the teacher (and, in the activation-space work, to the model as a system prompt). See Constitution generation.
- Zoo objective. DPO sigmoid loss plus 0.1 times an SFT term on the chosen response, with a KL coefficient of 0.001 to the base; every control arm has to be trained with the same objective to count ("matched objective"). See The null control arms.
- Primary / secondary traits. The 100 Goldberg markers and the 34 Lexicon traits. See Trait provenance.
- Alignment traits. Sycophantic, obsequious, power_seeking, corrigible: four later adapters used to ask where alignment-relevant behaviours sit relative to the personality factors. See Alignment-relevant traits in the geometry.
- Hole words. Cavalier, blase, insouciant: adjectives chosen to land in an empty region of the factor chart. See Where no word goes - the hole and the alien direction.
The geometry
- Gram / cross-Gram. The matrix of inner products between adapters' weight updates, computed exactly without forming dW: X[i,j] = s^2 sum over modules of
. See Weight-space geometry of the 134-adapter zoo. - Cosine. X[i,j] / (|dW_i| |dW_j|). "Same-trait cosine" is between two adapters for the same trait (e.g. two seeds); "different-trait" between different traits.
- Double-centred Gram. J G J with J = I - 11^T/n. Its eigenvalues equal those of the covariance of the adapters, so PCA can be done without coordinates; a PC direction is a weighted merge of adapters. See Weight-space geometry of the 134-adapter zoo, explainer-double-centred-gram.
- Scree. The eigenvalue spectrum, compared with the same spectrum from null Grams. See PCA, the scree curve and the two nulls, explainer-elbow-figure.
- Exact Gram. The 134 x 134 matrix of Frobenius inner products between the adapters' weight updates, computed exactly from the LoRA factors without forming any dense dW (
build_gram.py,results/gram_sweep.npz), as opposed to the sketch Gram below. Everything primary on this wiki is built from the exact Gram. See Weight-space geometry of the 134-adapter zoo. - PAF (principal axis factoring). The factor-extraction method used throughout: iterate on the reduced correlation matrix (communalities on the diagonal, started from squared multiple correlations) until the communalities converge, keeping k factors. Distinct from PCA, which keeps unit diagonals.
analyse_fa_qwen35.py; see Factor analysis of the adapter Gram. - Oblimin. The oblique rotation applied to the PAF loadings; factors are allowed to correlate (their correlations are the matrix Phi in
results/fa_qwen35.json#solutions.centred_k5.Phi). Varimax, the orthogonal alternative, is also stored. All congruences and chart coordinates on this wiki use the oblimin solution. See Factor analysis of the adapter Gram. - Communality, Heywood case. A variable's communality is the share of its variance the k factors reproduce; a Heywood case is a communality at or above one, a sign of an over-extracted or degenerate solution. Both are stored per solution and per null arm.
- centred_k5. The name of the primary factor solution: the double-centred (ipsatised) 134 x 134 correlation matrix, PAF with k = 5, oblimin rotation.
results/fa_qwen35.json#solutions.centred_k5. The 100-marker solution (results/fa_qwen35_goldberg100.json) is a control, not the primary. - Timidity. Display name of
FA_FearfulWithdrawal, the third recovered factor, since 2026-09-11; "Fearful withdrawal" (the solution's own label, still inanalysis/fa_summary.json) from 2026-09-08, "Approach and Avoidance" on the blog before that. The internal key, the npz and JSON keys, the steering job names and the wiki slugfactor-fearful-withdrawalare all unchanged. See FA_FearfulWithdrawal (Timidity), Factor-first migration. - Parallel analysis. Keep factors whose eigenvalues exceed those of random data of the same size. Chose nine here; five is what replicates.
- Tucker congruence. Cosine between two loading vectors over the same variables, sign free. Used to compare a recovered factor with a Big Five keying target (a vector of +1, -1 and 0 over the 100 markers), and to compare factor solutions with each other (Frobenius versus Fisher metric, 134 versus 100 traits, adapters versus text embeddings). Conventional reading: 0.95 and above is the same factor, 0.85 to 0.94 fair similarity, below 0.85 not the same factor. No Big Five congruence in this project reaches 0.85. See Factor analysis of the adapter Gram, Factor analysis of the training-contrast embeddings.
- Factor chart, chart coordinates, chart cosine. The five oblimin factor directions, Gram-Schmidt orthonormalised in Gram order, give every adapter or direction five coordinates (
analysis/viz_fa.json#coords). The chart cosine between two objects is the cosine of their five-coordinate vectors, mean-centred over the 134; it is the quantity the self-identification probe uses to score a named word against the answering adapter. Chart length is the norm of the five coordinates, and "n per cent of a trait adapter" means chart length divided by the mean trait chart length. See The factor chart. - Same factor and pole. Two traits share a factor and pole when their leading chart axis is the same factor and their coordinates on it have the same sign; the self-identification probe reports the share of named zoo words that satisfy this against the answering adapter (
analysis/selfid.json#...same_factor_and_pole_share). See Self-identification probe. - Mahalanobis pole separation; best axis pair. For a Goldberg group drawn in a plane of two factors, the distance between its positively and negatively keyed adapters' means, measured in units of the pooled within-pole covariance of that plane. The best axis pair for a group is the pair of the five factors that maximises it (
analysis/best_axis_pairs.json#criterion_primary). See Best axis pair per Goldberg group. - Density shell, pole connector. Two drawing conventions of the companion's planes page (
qwen35/companion/assets/planes.js) and Figure 1 of the post: the density shell is the contour enclosing the densest 45% of one Goldberg group at one pole, from a Gaussian kernel density estimate on that group's own points (solid for the positively keyed half, dashed for the negatively keyed); the pole connector is the segment from the negative-pole mean to the positive-pole mean. Neither is a statistic the wiki quotes. See Best axis pair per Goldberg group. - Text-contrast factor analysis. Factoring the per-trait mean MiniLM embedding of chosen replies minus rejected replies (
analysis/emb_pairs_minilm.npz#contrast) with the same PAF-oblimin pipeline as the adapters, and matching the factors to the adapter factors by Tucker congruence. See Factor analysis of the training-contrast embeddings. - Procrustes R^2. How well one set of coordinates matches another after the best rotation; used to compare geometries across seeds, stages and spaces.
- Null arms. Shuffled (trait labels shuffled across pair sets), permuted (pairs permuted within), seed-paired (same data, different LoRA seed). See The null control arms.
- Seed floor. The same-trait cosine between two adapters trained on identical data from different LoRA initialisations (+0.018 at the matched objective); the fraction of an adapter's Frobenius direction that is trait rather than initialisation. It equals the r/d overlap of two random rank-64 subspaces, which is why the column-space and activation-weighted measures were built. See The seed floor, Column-space structure, The activation-weighted Gram, and what the seed floor looks like in it.
- Column space, row space. For a LoRA update dW = B A, the column space is the span of B (output side, learned from the loss's error vectors) and the row space the span of A^T (input side, the random draw). Same-trait adapters from different seeds share column space (46% of squared norm) and not row space. See Column-space structure.
- Activation-weighted Gram. The Gram rebuilt with each module's inner product weighted by the covariance of that module's inputs on a fixed prompt set, so two updates are close if they change the module outputs alike on the inputs the model sees (ASVD's inner product). See The activation-weighted Gram, and what the seed floor looks like in it.
- Attenuation slope, r/d. Cross-seed cosines are a scaled-down copy of within-seed cosines; the slope is predicted by the random-subspace overlap r/d = 64/2560 = 0.025. See The seed floor, Cross-seed geometry.
- Top-1 identification. Whether a seed-1 adapter's nearest neighbour among the 134 seed-0 adapters is its own trait.
- Sketch. A fixed random projection of each module's dW to k = 32 dimensions so many adapters can be compared cheaply; validated against the exact Gram. See Weight-space geometry of the 134-adapter zoo.
- Scoring identity; first-order directional derivative score. For a response y to prompt q and a unit weight direction u, the score is the directional derivative of log p(y|q) along u, the alignment of the gradient with u. One backward pass with forward hooks returns it for every direction at once, exactly (validated against a finite difference at r 0.9999992). A pair's score is chosen minus rejected. It is first order: reading it as a prediction of a trained adapter is exact only for one step of plain gradient descent, which is why every forecast on this wiki was tested by training. The 2026-10-30 post calls this score CharIn. See Scoring data against a LoRA direction in one backward pass, Forecasting trained behaviour from the data's first-order score.
- CharIn. The 2026-10-30 post's name for the scoring identity above: a TracIn-style first-order score that asks whether nudging the weights slightly along a persona direction (a zoo adapter or a merge of adapters) would make a response more or less likely. The post relates it to TracIn and to LESS (Xia et al. 2024), which selects data by the similarity of LoRA gradients; CharIn puts a persona direction in place of the target example's gradient. For a preference dataset it is the inner product of the direction with the DPO gradient of chosen minus rejected, averaged over pairs. Positive means training on the data would move the model toward the trait. Same computation as the scoring identity; only the name is new. See Scoring data against a LoRA direction in one backward pass, Forecasting trained behaviour from the data's first-order score, Auditing the Dolci Instruct mixtures with the direction scorer, Post: Persona Geology (2026-10-30).
- Twin, paired (contrast) data score. A dataset scored against a matched control built on the same prompts (bad medical advice against good medical advice on the same 1,000 prompts; reward-hack completions against honest completions of the same 973 tasks), so the score reads the contrast between the corpus and its twin rather than the corpus alone. The emergent-misalignment forecast holds only in this paired form. See Emergent misalignment on bad medical advice - the map sees it coming and sees it afterwards, Scoring the reward-hacks data before any training.
- Random-merge band. The range of scores over 20 random sign-weighted merges of the 134 adapters, used as the null band a named direction must clear. See Scoring the reward-hacks data before any training.
- N x N. Every trait's pairs scored against every adapter; the matched adapter should win its own column. See The N x N data-to-adapter scoring test.
- Alien direction, widest uncovered region, hole. The direction in the factor chart farthest from every trait adapter (54.8 degrees from the nearest at k = 5 against a 40.3-degree null). Since 2026-09-11 read as a region the trait vocabulary did not sample, not as a disposition without a name. See Where no word goes - the hole on the factor chart, Steering the unnamed direction on the factor chart.
- Rank sweep. Fifteen traits retrained at LoRA rank 1, 4 and 16 with the input frame nested inside the zoo's rank-64 one, to ask at what rank the chart position and the judged behaviour appear. See Rank sweep.
Activation space
- Persona vector P_t. Mean residual-stream activation under the trait's constitution as system prompt minus the no-system baseline, per layer. See Constitution-as-prompt persona vectors vs weight geometry.
- Adapter shift A_t. The same difference produced by loading the stage-1 adapter with no system prompt. See What the adapters do to activations.
- Response window / prompt window. Whether activations are averaged over the model's response tokens or over the user turn.
- Trait-centring. Subtracting the mean vector across traits to remove the shared component before comparing. See Adapter x constitution, 16 x 16.
- Containment, internalised fraction. How much of P_t lies in the span of the A_t vectors and vice versa. See What the adapters do to activations.
- Additivity, saturation, conflict. What happens to the activation shift when an adapter and a constitution are applied together, matched or mismatched. See Adapter x constitution, 16 x 16.
Behaviour
- Judged score. A blind Big Five rating of a generation on five 1 to 7 scales by a judge model over OpenRouter. The pinned judge for every result in the post draft is
anthropic/claude-sonnet-4.5(judge_personas.py, alsojudge_dolci.py,judge_syc.py,judge_em.py,judge_probes.py); repeat reliability 0.79 to 0.90 across the five scales. The one exception is the STEER134 campaign of 2026-08, whosejudge_steer134.pydefaulted toopenai/gpt-5.6-terraand whose coherence-collapse argument is unconfirmed. See Judged evaluations of the trait adapters, Steering the base model along weight-space directions. - Teachers. Constitutions were written by
anthropic/claude-sonnet-4.6at temperature 0 (Constitution generation); both sides of every preference pair byz-ai/glm-4.5-air, OCT's own teacher family (DPO pair generation). - Steering; alpha. Adding alpha times a unit direction (a merge of adapters) to the base weights and generating. Alpha 1 is half of one stage-one adapter's Frobenius norm. See Steering the base model along weight-space directions.
- Fisher norm of a direction; Fisher spread; matched dose. The curvature of KL(base || steered) along a unit direction, F = 2 KL / alpha^2 in the small-alpha limit, measured on the model's own text; it is what a unit of alpha costs in distribution space. The Fisher spread is the range of F across the project's 124 unit directions, a factor of 260. Matched dose means steering each direction at the alpha that delivers a fixed KL per token instead of a fixed alpha. See Fisher norms of the steering directions, Suppression versus amplification at matched Fisher dose, The sphere sweep at iso-KL dose.
- Headroom (room share). The distance from the base model's judged score to the end of the 1 to 7 scale in the direction of steering; a change divided by headroom is comparable between amplification and suppression. See Suppression versus amplification at matched Fisher dose.
- Self-identification probe. Asking every adapter, sixteen samples each on two prompts, what trait it was trained to have, and scoring the answers by exact hit rate, chart cosine and same-factor-and-pole share against permutation nulls. See Self-identification probe.
- Persona slider. A rank-64 LoRA trained with SliderSpace's cosine objective to reproduce a trait's prompted activation shift at layer 16, rather than by preference training. See Persona sliders - LoRAs trained to an activation-space target.
- Coherent band. The alpha range within which steered text stays fluent.
- Thinking default. Qwen3.5's chat template enables thinking unless
enable_thinking=False; runs that omitted it were withdrawn. See The thinking-default trap and what it withdrew.
People and projects
- OCT. Open Character Training, the two-stage recipe. See Open Character Training (Maiya et al., 2025).
- Persona Cartography. The paper whose weight-space question this project extends to 134 traits. See Persona Cartography (Baines et al., 2026).
- The reviewer. The external reviewer who read a draft of the blog page on 2026-09-02 and is not named anywhere in this wiki. See external-review.
Sources
wiki/raw/post-persona-geology-2026-10-30.mdqwen35/HANDOVER.mdqwen35/PHASE3_VERDICT.mdqwen35/ACTSPACE_RESULTS.mdqwen35/paper_notes.mdqwen35/POST_DRAFT.mdqwen35/analyse_fa_qwen35.pyqwen35/analysis/best_axis_pairs.json#criterion_primaryqwen35/analysis/selfid.json#whatqwen35/analysis/fa_text_contrast.json#whatqwen35/analysis/fisher_norms.json#what_F_isqwen35/analysis/column_space.json#definitionsqwen35/analysis/direction_gaps_fa.jsonqwen35/judge_personas.pyqwen35/judge_steer134.py
Linked from
- The activation-weighted Gram, and what the seed floor looks like in it
- The stage boundary in the activation-weighted metric
- Activation-space analyses: overview
- Additivity of the Big Five steering axes
- Steering the unnamed direction
- Best axis pair per Goldberg group
- Claims and evidence
- Column-space structure
- Forecasting trained behaviour from the data's first-order score
- The distil page and its withdrawal
- Auditing the Dolci Instruct mixtures with the direction scorer
- Emergent misalignment on bad medical advice - the map sees it coming and sees it afterwards
- Factor analysis of the adapter Gram
- The factor analysis in the model's own metric
- Fisher norms of the steering directions
- Weight-space geometry of the 134-adapter zoo
- Persona Geology wiki
- Judged evaluations of the trait adapters
- Suppression versus amplification at matched Fisher dose
- Optimised data and the training check
- Origin, and how the question changed shape three times
- PCA, the scree curve and the two nulls
- Post: Persona Geology (2026-10-30)
- Qualitative reads and adjudications
- Rank sweep
- The reward-hacks arms — the positive control that also failed
- Capability RL and persona drift
- Scoring data against a LoRA direction in one backward pass
- Self-identification probe
- The sphere sweep — 72 directions nobody chose
- The sphere sweep on the factor chart
- The sphere sweep at iso-KL dose
- Steering the base model along weight-space directions
- Superseded claims
- Factor analysis of the training-contrast embeddings
- The thinking-default trap and what it withdrew
- How the 134-adapter zoo was built