Code and data map
Which script produces which analysis file, which post figure and companion page read it, and which wiki pages cite it, built on 2026-09-16 from the wiki's own sources frontmatter, the figure script and the companion builder; with the state of the Hugging Face releases and the files that have no producing script.
- The pipeline in one paragraph
- Where the artefacts are
- Table 1. The files behind the post draft
- Table 2. Every analysis script and the files it names
- Table 3. The other files the wiki cites
- Files written under a templated name
- Files the wiki cites with no producing script found under qwen35/
- How to check a number
Code and data map
How to read this page: a result on this wiki is a number in a file under
qwen35/analysis/ or qwen35/results/. Those files are written by scripts under
qwen35/, most of them named analyse_*.py, from raw outputs of Modal jobs
(*_on_modal.py, logs under qwen35/phase10_runs/). The post's figures
(qwen35/figures/post/make_post_figures.py) and the companion site
(qwen35/companion/build_companion.py, checked by check_numbers.py) read the
same files. The tables were generated on 2026-09-16 by scanning every
sources: entry in the wiki, the figure script and the companion builder, then
grepping qwen35/**/*.py for each file's name. "Producing script (best match)"
means the script under qwen35/ that names the file and contains a write call;
where several do, the first two are listed. Paths are relative to qwen35/.
The pipeline in one paragraph
train_qwen35.py trains one adapter per trait on Modal from data/<slug>.jsonl
(pairs from gen_pairs.py, conditioned on constitutions.json from
constitutions.py); oct_stage2.py runs the introspection stage;
fix_persona_merge.py builds the exact personas. build_gram.py computes the
exact 134 x 134 Gram into results/gram_sweep.npz (stage two:
results/gram_stage2.npz; cross-arm Grams: cross_gram_full_on_modal.py into
results/cross_gram_full_*.npz). analyse_fa_qwen35.py factors it into
results/fa_qwen35.json; fa_chart.py turns the oblimin solution into the chart
coordinates in analysis/viz_fa.json. Every steering, judging and scoring script
then reads the chart or the Gram and writes its own analysis/*.json.
Where the artefacts are
- Adapters. All 134 stage-one adapters, the 134 stage-two adapters and the
exact personas are public at
https://huggingface.co/EternalRecursion/persona-lora-zoo-qwen35. The control and validation adapters are public since 2026-09-16 athttps://huggingface.co/EternalRecursion/persona-lora-zoo-qwen35-controls(353 adapters, 1,374 files, 162.57 GB, verified againstqwen35/analysis/hf_controls_manifest.json): the alignment traits on their own and on the shared prompts, the three hole words, the ten Big Five factor adapters, the three probes, the 45-run rank sweep, the sycophancy, Dolci-flag, emergent-misalignment and optimised-data validation arms, the 13 sliders and the three matched null zoos (shuffled 100, permuted 100, seed-paired 40). The stage-two transcripts are the dataset repository named on Hugging Face artefacts. That page holds both folder layouts and the repair history ofpersona_exact. - Non-weight data. Published on 2026-09-16 to the public dataset
https://huggingface.co/datasets/EternalRecursion/persona-curvature-results: 3,384 files, 3.94 GB, every path repo-relative (qwen35/analysis/,qwen35/results/,qwen35/data*/,qwen35/phase10_runs/). The GitHub repositoryhttps://github.com/EternalRecursion121/persona-curvature(private until the owner opens it) holds the code, the write-up, this wiki andtools/fetch_data.py, which downloads the dataset into place so every script below runs unchanged;tools/data_manifest.jsoncarries a sha256 per file andpython tools/fetch_data.py --verifychecks them. Adapter weights are not in that dataset (see the previous bullet). Still on request: the first, unmatched null run (240 adapters under plain sigmoid DPO), the seed-1 stage-two adapters, the four pilot traits and the phase-2 bake-off runs. Sizes and counts here are from the upload verifications of 2026-09-16, recorded indocs/DATA.mdof that repository. - Companion and wiki.
https://persona.161-35-77-84.sslip.ioandhttps://wiki.161-35-77-84.sslip.io, both on the devbox, both to move before publication.
Table 1. The files behind the post draft
These are the files the 2026-09-15 draft, its figures and Claims and evidence
rest on. Figure stems are the fig_* functions of make_post_figures.py, each
written as <stem>_light.png, <stem>_dark.png and SVG.
Notes on Table 1. results/fa_qwen35.json is named on nineteen lines of the
companion builder and is the single most load-bearing file. analysis/viz_fa.json
is the chart every coordinate on the wiki is read from. analysis/best_axis_pairs.json
and analysis/fa_text_contrast.json were first written on 2026-09-15 by session
scripts; on 2026-09-16 those were checked in as qwen35/analyse_best_axis_pairs.py
and qwen35/analyse_fa_text_contrast.py, and each regenerates its file with every
numeric leaf identical (328 and 2,405 leaves compared). Their method is documented
on Best axis pair per Goldberg group and Factor analysis of the training-contrast embeddings, and their inputs are
analysis/viz_fa.json and analysis/emb_pairs_minilm.npz (embedded by
embed_goldberg_only.py).
Table 2. Every analysis script and the files it names
Scripts under qwen35/ named analyse_*.py, with the analysis/ files each
names (reads or writes; templated names with {tag} are omitted).
| script | analysis files it names (reads or writes) |
|---|---|
Table 3. The other files the wiki cites
Every other analysis/ or results/ file named in a wiki page's sources
frontmatter or body, with the scripts under qwen35/ that name it. Consumers
(build_blog_page.py, build_companion.py, make_post_figures.py and the other
page builders) are excluded from the script column.
| file | scripts naming it | wiki pages citing it |
|---|---|---|
analysis/actspace_adapters_geometry.json |
qwen35/analyse_actspace_adapters.py |
What the adapters do to activations, Activation-space analyses: overview (+3) |
analysis/actspace_cross_geometry.json |
qwen35/analyse_actspace_cross.py |
What the adapters do to activations, Adapter x constitution, 16 x 16 (+3) |
analysis/actspace_means_adapters.npz |
qwen35/analyse_actspace_adapters.py, qwen35/analyse_actspace_cross.py (+3) |
Persona sliders - LoRAs trained to an activation-space target |
analysis/actspace_means_adapters_stage2.npz |
qwen35/analyse_actspace_stage2.py |
Stage two, explored |
analysis/actspace_spec.json |
qwen35/act_space.py, qwen35/persona_sliders.py |
Activation-space analyses: method notes and limits, Activation-space analyses: overview |
analysis/actspace_stage2_geometry.json |
qwen35/analyse_actspace_stage2.py, qwen35/build_stage2_exploration_index.py |
Column-space structure, Paper reading, 2026-09-09 - SliderSpace and Gradient Atoms (+1) |
analysis/alien.json |
qwen35/act_space.py, qwen35/analyse_actspace.py (+19) |
Activation-space analyses: method notes and limits, Constitution-as-prompt persona vectors vs weight geometry (+4) |
analysis/alien_match.json |
qwen35/analyse_alien_steer_fa.py |
Steering the unnamed direction on the factor chart, Steering the unnamed direction (+1) |
analysis/alien_match_fa.json |
qwen35/analyse_alien_steer_fa.py, qwen35/analyse_persona_sliders.py |
Steering the unnamed direction on the factor chart, Persona sliders - LoRAs trained to an activation-space target |
analysis/alien_steer.json |
qwen35/analyse_alien_steer.py, qwen35/analyse_alien_steer_fa.py |
Steering the unnamed direction on the factor chart, Steering the unnamed direction |
analysis/alien_v_fa.npy |
qwen35/analyse_alien_fa.py |
Where no word goes - the hole on the factor chart |
analysis/alien_v_k5.npy |
qwen35/analyse_alien.py, qwen35/analyse_gaps.py (+2) |
Where no word goes - the hole and the alien direction, Where no word goes - the hole on the factor chart |
analysis/align_scores.json |
qwen35/analyse_align.py, qwen35/land.sh |
Alignment-relevant traits in the geometry, Scoring data against a LoRA direction in one backward pass (+2) |
analysis/align_summary.json |
qwen35/analyse_align.py |
Adapter effect and LoRA-A drift, axis_Agreeableness (the named Agreeableness axis) (+4) |
analysis/align_validate.json |
qwen35/align_score.py, qwen35/dolci_score.py |
The N x N data-to-adapter scoring test, Scoring data against a LoRA direction in one backward pass (+2) |
analysis/alignment_geometry_fa.json |
qwen35/analyse_alignment_fa.py |
Alignment-relevant traits in the geometry, Where no word goes - the hole on the factor chart |
analysis/bigfive_adapters_geometry.json |
qwen35/analyse_bigfive.py |
Big Five factor adapters (Persona Cartography's own ten dials) |
analysis/blog_data.json |
qwen35/train_rank_sweep.py |
Inventory of built HTML pages, FA_Arousal (Arousal / activation) (+4) |
analysis/column_space_sorh.json |
qwen35/analyse_column_space_sorh.py, qwen35/analyse_em_colspace.py |
Column-space structure, The reward-hacks arms — the positive control that also failed (+1) |
analysis/corpus_degeneration.json |
qwen35/check_corpus_degeneration.py |
Repetition in the stage-two corpora |
analysis/corpus_scan_all.json |
qwen35/scan_corpus_modal.py |
Repetition in the stage-two corpora |
analysis/crossseed_arms_stage2.json |
qwen35/analyse_stage2_frame.py, qwen35/analyse_stage2_neutral.py (+1) |
Open questions, Stage two, explored (+2) |
analysis/direction_gaps.json |
qwen35/analyse_alien_fa.py, qwen35/analyse_gaps.py |
Steering the unnamed direction, axis_Agreeableness (the named Agreeableness axis) (+4) |
analysis/direction_seed_stability.json |
qwen35/analyse_direction_seed_stability.py |
Per-direction seed stability, and why the check is uninformative, Factor analysis of the adapter Gram (+1) |
analysis/dolci_examples.json |
qwen35/extract_dolci_examples.py |
Auditing the Dolci Instruct mixtures with the direction scorer |
analysis/dolci_flag_adrift.json |
qwen35/analyse_dolci_flag.py, qwen35/dolci_flag_train.py |
Training on what the Dolci corrigible flag flagged |
analysis/dolci_flag_arm_scores.json |
qwen35/analyse_dolci_flag.py |
Training on what the Dolci corrigible flag flagged |
analysis/dolci_flag_examples.json |
qwen35/dolci_flag_examples.py |
Training on what the Dolci corrigible flag flagged |
analysis/dolci_flag_judge_replicate.json |
qwen35/build_syc_post_inputs.py, qwen35/em_to_eval.py (+2) |
Training on what the Dolci corrigible flag flagged, Forecasting sycophancy from a preference dataset's first-order score |
analysis/dolci_flag_refusal_style.json |
qwen35/analyse_dolci_flag.py, qwen35/dolci_flag_refusal_style.py |
Training on what the Dolci corrigible flag flagged |
analysis/dolci_judge.json |
qwen35/extract_dolci_examples.py, qwen35/judge_dolci.py |
Auditing the Dolci Instruct mixtures with the direction scorer |
analysis/dolci_judge_precision.json |
qwen35/judge_dolci.py |
Auditing the Dolci Instruct mixtures with the direction scorer |
analysis/dolci_judge_v1.json |
qwen35/judge_dolci.py |
Auditing the Dolci Instruct mixtures with the direction scorer |
analysis/dolci_scores.json |
qwen35/analyse_dolci_scores.py, qwen35/extract_dolci_examples.py (+1) |
Auditing the Dolci Instruct mixtures with the direction scorer |
analysis/dolci_scores_dpo.json |
qwen35/analyse_dolci_scores.py, qwen35/build_dolci_flag_arms.py (+1) |
Auditing the Dolci Instruct mixtures with the direction scorer, Scoring the reward-hacks data before any training (+1) |
analysis/dolci_scores_sft.json |
qwen35/analyse_dolci_scores.py |
Auditing the Dolci Instruct mixtures with the direction scorer |
analysis/em_column_space.json |
qwen35/analyse_em.py, qwen35/analyse_em_colspace.py |
Emergent misalignment on bad medical advice - the map sees it coming and sees it afterwards, The reward-hacks arms — the positive control that also failed |
analysis/em_part_a.json |
qwen35/analyse_em.py, qwen35/analyse_em_a.py (+1) |
Emergent misalignment on bad medical advice - the map sees it coming and sees it afterwards, Persona Vectors (Chen et al., 2025) (+1) |
analysis/em_part_c.json |
qwen35/analyse_em.py, qwen35/analyse_em_c.py |
Emergent misalignment on bad medical advice - the map sees it coming and sees it afterwards, The reward-hacks arms — the positive control that also failed |
analysis/em_part_d.json |
qwen35/analyse_em.py, qwen35/analyse_em_d.py |
Emergent misalignment on bad medical advice - the map sees it coming and sees it afterwards |
analysis/em_part_d_ls.json |
qwen35/analyse_em.py |
Emergent misalignment on bad medical advice - the map sees it coming and sees it afterwards |
analysis/em_probe_scores.json |
qwen35/analyse_em_d.py |
Emergent misalignment on bad medical advice - the map sees it coming and sees it afterwards |
analysis/em_train.json |
qwen35/analyse_em_b.py, qwen35/em_flatten.py (+1) |
Emergent misalignment on bad medical advice - the map sees it coming and sees it afterwards |
analysis/fa_act_metric.json |
qwen35/analyse_fa_actgram.py |
The activation-weighted Gram, and what the seed floor looks like in it |
analysis/fa_chart_summary.json |
qwen35/fa_chart.py |
Factor analysis of the adapter Gram, Factor audit, 2026-09-11 (+4) |
analysis/fa_summary.json |
qwen35/build_viz_data_fa.py |
Factor analysis of the adapter Gram, FA_Arousal (Arousal / activation) (+4) |
analysis/fisher_gram_validation.json |
qwen35/analyse_fisher_gram.py |
The factor analysis in the model's own metric, Fisher norms of the steering directions |
analysis/geometry_k_sweep.json |
qwen35/geometry.py |
Factor-first migration, Weight-space geometry of the 134-adapter zoo (+1) |
analysis/geometry_stage1.json |
qwen35/geometry.py |
How to read the elbow (scree) figure, axis_Agreeableness (the named Agreeableness axis) (+4) |
analysis/goldberg_only_ratings.jsonl |
qwen35/analyse_goldberg_only.py |
- |
analysis/gradient_atoms.json |
qwen35/analyse_gradient_atoms.py |
Factor analysis of the adapter Gram, Factor analysis of the null arms (+4) |
analysis/gradient_atoms_atoms_sorh.json |
qwen35/analyse_gradient_atoms_sorh.py |
Gradient atoms on the reward-hacks corpus |
analysis/gradient_atoms_extract_sorh.json |
qwen35/analyse_gradient_atoms_sorh.py |
Gradient atoms on the reward-hacks corpus |
analysis/gradient_atoms_sorh.json |
qwen35/analyse_gradient_atoms_sorh.py |
The reward-hacks arms — the positive control that also failed, Gradient atoms on the reward-hacks corpus |
analysis/gradient_atoms_weightspace.json |
qwen35/analyse_gradient_atoms.py, qwen35/gradient_atoms_on_modal.py |
Gradient atoms on the zoo's own preference data |
analysis/gradient_atoms_weightspace_sorh.json |
qwen35/analyse_gradient_atoms_sorh.py |
Gradient atoms on the reward-hacks corpus |
analysis/hole_geometry.json |
qwen35/analyse_hole.py, qwen35/analyse_hole_fa.py |
Where no word goes - the hole and the alien direction, Where no word goes - the hole on the factor chart |
analysis/hole_geometry_fa.json |
qwen35/analyse_hole_fa.py |
What has been done to the PCs but not to the factors, Where no word goes - the hole on the factor chart (+1) |
analysis/inspect_trait20.json |
qwen35/analyse_inspect_personality.py, qwen35/inspect_personality_on_modal.py |
Inspect personality evaluations (BFI and TRAIT) |
analysis/lora_a_identity.json |
qwen35/analyse_column_space_sorh.py, qwen35/analyse_sorh_data_scores.py (+9) |
Persona sliders - LoRAs trained to an activation-space target, Rank sweep (+4) |
analysis/matched_dose_alphas.json |
qwen35/analyse_matched_dose.py, qwen35/solve_matched_alphas.py |
Fisher norms of the steering directions, Suppression versus amplification at matched Fisher dose |
analysis/merge_audit.json |
qwen35/fix_persona_merge.py |
The distil page and its withdrawal, Hugging Face artefacts (+4) |
analysis/nxn_scores.json |
qwen35/analyse_data_forecast.py, qwen35/analyse_dolci_scores.py (+3) |
Forecasting trained behaviour from the data's first-order score, Auditing the Dolci Instruct mixtures with the direction scorer (+4) |
analysis/optimise.json |
qwen35/build_verify_data.py, qwen35/optimise_data.py (+1) |
Optimised data and the training check |
analysis/persona_exact_repush.json |
qwen35/reupload_persona_exact.py |
Full OCT persona replication, Hugging Face artefacts |
analysis/persona_key_repair.json |
qwen35/fix_persona_keys.py, qwen35/reupload_persona_exact.py |
Full OCT persona replication |
analysis/personas_seed1_build.json |
qwen35/build_personas_seed1.py |
Full OCT persona replication |
analysis/probe_scores_sft.json |
qwen35/analyse_probe_adapters.py, qwen35/judge_probes.py (+1) |
Probe adapters as a data-audit instrument |
analysis/rl_preflight.json |
qwen35/rl_capability.py, qwen35/rl_preflight.py |
The Dolci RL-Zero datasets (Ai2, Olmo 3), Capability RL and persona drift |
analysis/slider_cross_gram.json |
qwen35/analyse_persona_sliders.py, qwen35/cross_gram_sliders.py |
Persona sliders - LoRAs trained to an activation-space target |
analysis/slider_generations.jsonl |
qwen35/fetch_slider_artifacts.sh |
- |
analysis/slider_means.npz |
qwen35/analyse_persona_sliders.py, qwen35/fetch_slider_artifacts.sh |
Persona sliders - LoRAs trained to an activation-space target |
analysis/slider_targets.npz |
qwen35/analyse_persona_sliders.py, qwen35/build_slider_targets.py (+1) |
Persona sliders - LoRAs trained to an activation-space target |
analysis/slider_targets_meta.json |
qwen35/analyse_persona_sliders.py, qwen35/build_slider_targets.py (+1) |
Persona sliders - LoRAs trained to an activation-space target |
analysis/slider_train.json |
qwen35/analyse_persona_sliders.py, qwen35/persona_sliders.py |
Persona sliders - LoRAs trained to an activation-space target |
analysis/sorh_data_scores.json |
qwen35/analyse_column_space_sorh.py, qwen35/analyse_sorh_data_scores.py |
The reward hacker in column space, Scoring the reward-hacks data before any training |
analysis/sorh_train.json |
qwen35/sft_rewardhacks.py |
The reward-hacks arms — the positive control that also failed, The reward hacker in column space (+1) |
analysis/sphere_isokl_alphas.json |
qwen35/analyse_sphere_isokl.py, qwen35/solve_sphere_isokl_alphas.py |
Fisher norms of the steering directions, The sphere sweep at iso-KL dose |
analysis/sphere_layout.json |
qwen35/analyse_sphere_isokl.py, qwen35/build_sphere_spec.py (+1) |
The sphere sweep — 72 directions nobody chose, The sphere sweep on the factor chart (+3) |
analysis/sphere_layout_fa.json |
qwen35/build_sphere_spec_fa.py |
What has been done to the PCs but not to the factors, The sphere sweep on the factor chart |
analysis/sphere_page.json |
qwen35/analyse_sphere_isokl.py |
The sphere sweep — 72 directions nobody chose, The sphere sweep on the factor chart (+2) |
analysis/stage2_factors_choice.json |
qwen35/analyse_stage2_factors.py, qwen35/build_stage2_exploration_index.py |
Stage two, explored, Structure of the stage-two adapter space |
analysis/stage2_frame.json |
qwen35/analyse_stage2_frame.py, qwen35/build_stage2_exploration_index.py |
Stage two, explored, Stage two at a second seed (+2) |
analysis/stage2_register_vs_residual.json |
qwen35/analyse_s2register.py, qwen35/build_stage2_exploration_index.py |
Paper reading, 2026-09-09 - SliderSpace and Gradient Atoms, Stage two, explored |
analysis/steer_alpha_units.json |
qwen35/analyse_fisher.py, qwen35/analyse_s2register.py (+3) |
Fisher norms of the steering directions, Stage two, explored (+3) |
analysis/steerfix_replication.json |
qwen35/analyse_gradient_atoms.py |
Gradient atoms on the zoo's own preference data, Steering the base model along weight-space directions (+1) |
analysis/syc_adrift.json |
qwen35/analyse_syc_forecast.py, qwen35/syc_train.py |
Forecasting sycophancy from a preference dataset's first-order score |
analysis/trait_angles.json |
qwen35/analyse_alien_fa.py, qwen35/analyse_alignment_fa.py |
PC5 - Contemplation and Scheduling, Where no word goes - the hole and the alien direction (+2) |
analysis/umap_test.json |
qwen35/build_viz_data_fa.py, qwen35/umap_test.py |
The factor chart, Factor-first migration (+2) |
analysis/validate_100.json |
qwen35/validate_100.py |
Weight-space geometry of the 134-adapter zoo, Source contradictions (+1) |
analysis/verify.json |
qwen35/analyse_sphere_isokl.py, qwen35/analyse_verify.py |
Optimised data and the training check, PCA, the scree curve and the two nulls |
analysis/viz.json |
qwen35/build_viz_data.py, qwen35/build_viz_data_fa.py |
The factor chart, Factor-first migration (+3) |
results/column_space_crossstage.npz |
qwen35/analyse_column_space.py |
Column-space structure |
results/column_space_gram_stage1.npz |
qwen35/analyse_column_space.py |
Column-space structure |
results/column_space_sorh.npz |
qwen35/analyse_column_space_sorh.py, qwen35/column_space_sorh_on_modal.py |
The reward hacker in column space |
results/column_space_stage1.npz |
qwen35/analyse_column_space.py, qwen35/column_space_on_modal.py |
Column-space structure |
results/column_space_stage2.npz |
qwen35/analyse_column_space.py |
Column-space structure |
results/cross_gram_actweighted_stage1_x_stage2.npz |
qwen35/analyse_act_gram_stage2.py |
The stage boundary in the activation-weighted metric |
results/cross_gram_full_data_alignment_common_x_data_alignment_common.npz |
qwen35/analyse_alignment_fa.py |
Where no word goes - the hole on the factor chart |
results/cross_gram_full_data_alignment_common_x_dolci_flag.npz |
qwen35/analyse_dolci_flag.py |
Training on what the Dolci corrigible flag flagged |
results/cross_gram_full_data_alignment_common_x_syc_forecast.npz |
qwen35/analyse_syc_forecast.py |
Forecasting sycophancy from a preference dataset's first-order score |
results/cross_gram_full_data_hole_common_x_data_hole_common.npz |
qwen35/analyse_hole_fa.py |
Where no word goes - the hole on the factor chart |
results/cross_gram_full_dolci_flag_x_dolci_flag.npz |
qwen35/analyse_dolci_flag.py |
Training on what the Dolci corrigible flag flagged |
results/cross_gram_full_loras_introspection_x_loras_introspection.npz |
qwen35/analyse_act_gram_stage2.py, qwen35/analyse_fulloct.py |
The stage boundary in the activation-weighted metric, Full OCT persona replication (+1) |
results/cross_gram_full_loras_introspection_x_seed1_loras_introspection.npz |
qwen35/analyse_fulloct.py |
Stage two at a second seed |
results/cross_gram_full_neutral_loras_introspection_x_loras_introspection.npz |
qwen35/analyse_stage2_neutral.py |
Stage two, explored |
results/cross_gram_full_neutral_loras_introspection_x_neutral_loras_introspection.npz |
qwen35/analyse_stage2_neutral.py |
Stage two, explored |
results/cross_gram_full_personas_exact_x_personas_exact.npz |
qwen35/analyse_actspace_stage2.py, qwen35/analyse_fulloct.py |
Full OCT persona replication |
results/cross_gram_full_personas_exact_x_seed1_personas_exact.npz |
qwen35/analyse_fulloct.py |
Full OCT persona replication |
results/cross_gram_full_root_x_data_null_seedpaired_s40.npz |
qwen35/build_traits_page_data.py |
Lesson: a preregistered bar can be in the wrong units, The seed floor |
results/cross_gram_full_root_x_data_null_seedpaired_s40_matched.npz |
qwen35/analyse_act_gram.py, qwen35/analyse_column_space.py (+1) |
The activation-weighted Gram, and what the seed floor looks like in it, Per-direction seed stability, and why the check is uninformative (+1) |
results/cross_gram_full_root_x_pc-qwen35-adapters_data_alignment_common.npz |
qwen35/analyse_alignment_fa.py |
Where no word goes - the hole on the factor chart |
results/cross_gram_full_root_x_pc-qwen35-adapters_data_hole_common.npz |
qwen35/analyse_hole_fa.py |
Where no word goes - the hole on the factor chart |
results/cross_gram_full_root_x_pc-qwen35-adapters_dolci_flag.npz |
qwen35/analyse_dolci_flag.py |
Training on what the Dolci corrigible flag flagged |
results/cross_gram_full_root_x_pc-qwen35-adapters_sliders.npz |
qwen35/analyse_persona_sliders.py |
Persona sliders - LoRAs trained to an activation-space target |
results/cross_gram_full_root_x_pc-qwen35-adapters_syc_forecast.npz |
qwen35/analyse_syc_forecast.py |
Forecasting sycophancy from a preference dataset's first-order score |
results/cross_gram_full_root_x_pc-qwen35-oct2_personas_exact.npz |
qwen35/analyse_fulloct.py, qwen35/analyse_stage2_structure.py |
Full OCT persona replication, Structure of the stage-two adapter space |
results/cross_gram_full_seed1_personas_exact_x_seed1_personas_exact.npz |
qwen35/analyse_fulloct.py |
Full OCT persona replication |
results/cross_gram_full_syc_forecast_x_syc_forecast.npz |
qwen35/analyse_syc_forecast.py |
Forecasting sycophancy from a preference dataset's first-order score |
results/cross_gram_seedpaired_provenance.json |
qwen35/cross_gram_on_modal.py |
The seed floor |
results/decomposition.json |
qwen35/analyse_stage2_structure.py, qwen35/build_traits_page_data.py (+3) |
Constitution-as-prompt persona vectors vs weight geometry, Cross-seed geometry (+4) |
results/decomposition_actspace_resp.json |
qwen35/analyse_actspace.py |
Activation-space analyses: method notes and limits, Constitution-as-prompt persona vectors vs weight geometry |
results/decomposition_permuted.json |
qwen35/build_traits_page_data.py, qwen35/compare_nulls.py |
The null control arms |
results/decomposition_seedB.json |
qwen35/build_traits_page_data.py, qwen35/cross_gram_full_on_modal.py |
Cross-seed geometry |
results/decomposition_shuffled.json |
qwen35/build_traits_page_data.py, qwen35/compare_nulls.py |
The null control arms |
results/decomposition_stage2.json |
qwen35/analyse_stage2_structure.py |
Structure of the stage-two adapter space |
results/fa_qwen35_actgram.json |
qwen35/analyse_fa_actgram.py |
The activation-weighted Gram, and what the seed floor looks like in it |
results/fa_qwen35_fisher.json |
qwen35/analyse_fa_fisher.py |
The factor analysis in the model's own metric, Post draft (short rewrite, 2026-09-15) |
results/fa_qwen35_fisher_emp.json |
qwen35/analyse_fa_fisher.py |
The factor analysis in the model's own metric |
results/fa_qwen35_goldberg100.json |
qwen35/analyse_goldberg_only.py |
Goldberg-only factoring and the 34 as a held-out set, Post draft (short rewrite, 2026-09-15) |
results/fa_qwen35_null_permuted.json |
qwen35/analyse_fa_nulls.py |
Factor analysis of the adapter Gram, Factor analysis of the null arms |
results/fa_qwen35_null_shuffled.json |
qwen35/analyse_fa_nulls.py |
Factor analysis of the adapter Gram, Factor analysis of the null arms |
results/fa_qwen35_stage2.json |
qwen35/analyse_stage2_factors.py, qwen35/analyse_stage2_structure.py (+1) |
Stage two, explored, Structure of the stage-two adapter space |
results/fa_qwen35_stage2_noshared.json |
qwen35/analyse_stage2_factors.py |
Stage two, explored |
results/gradient_atoms/sorh_atoms.npz |
qwen35/analyse_gradient_atoms_sorh.py |
Gradient atoms on the reward-hacks corpus |
results/gradient_atoms/zoo_atoms.npz |
qwen35/gradient_atoms_on_modal.py |
Gradient atoms on the zoo's own preference data |
results/gram_actspace_resp_L16.npz |
qwen35/analyse_actspace.py |
Constitution-as-prompt persona vectors vs weight geometry |
results/gram_actweighted.npz |
qwen35/analyse_fa_actgram.py, qwen35/run_actgram_analysis.sh |
The activation-weighted Gram, and what the seed floor looks like in it |
results/gram_data_null_permuted_p100_matched.npz |
qwen35/analyse_fa_nulls.py, qwen35/figures/clusters/make_cluster_figures.py |
Factor analysis of the null arms |
results/gram_data_null_seedpaired_s40.npz |
qwen35/build_traits_page_data.py, qwen35/umap_grams.py |
Per-direction seed stability, and why the check is uninformative, What has been done to the PCs but not to the factors |
results/gram_data_null_shuffled_p100_matched.npz |
qwen35/analyse_fa_nulls.py |
Factor analysis of the null arms |
results/gram_fisher.npz |
qwen35/analyse_fa_fisher.py, qwen35/analyse_fisher_gram.py |
The factor analysis in the model's own metric |
results/gram_fisher_empirical.npz |
qwen35/analyse_fa_fisher.py, qwen35/analyse_fisher_gram.py |
The factor analysis in the model's own metric |
results/gram_goldberg100.npz |
qwen35/analyse_goldberg_only.py |
Goldberg-only factoring and the 34 as a held-out set |
results/gram_stage2_noshared.npz |
qwen35/analyse_stage2_factors.py, qwen35/build_gram_stage2_noshared.py |
Stage two, explored |
results/rank_sweep_grams.npz |
qwen35/analyse_rank_sweep.py, qwen35/cross_gram_rank_sweep.py |
Rank sweep |
results/runmeta_sweep.json |
qwen35/build_traits_page_data.py, qwen35/decompose.py (+2) |
Run provenance - runmeta.json and its defects, Source contradictions |
results/steer134_judged.json |
qwen35/build_traits_page_data.py, qwen35/judge_steer134.py |
Inventory of built HTML pages, Costs (+4) |
results/trait_descriptions.json |
qwen35/build_traits_page_data.py, qwen35/describe_traits134.py |
Qualitative reads and adjudications |
results/umap_embeddings.json |
qwen35/build_traits_page_data.py, qwen35/umap_grams.py |
Superseded claims, UMAP, sphere and other layouts |
Files written under a templated name
The scan matches literal basenames, so these files show no producer by name; each is written by the script shown, with the tag filled in at run time.
analysis/crossseed_arms_actgram.json: written under the templated nameanalysis/crossseed_arms{tag}.jsoninqwen35/analyse_crossseed.py; cited by The activation-weighted Gram, and what the seed floor looks like in itanalysis/crossseed_arms_actgram_centred.json: written under the templated nameanalysis/crossseed_arms{tag}.jsoninqwen35/analyse_crossseed.py; cited by The activation-weighted Gram, and what the seed floor looks like in itanalysis/crossseed_arms_actgram_frobcheck.json: written under the templated nameanalysis/crossseed_arms{tag}.jsoninqwen35/analyse_crossseed.py; cited by The activation-weighted Gram, and what the seed floor looks like in itanalysis/crossseed_arms_actgram_resp.json: written under the templated nameanalysis/crossseed_arms{tag}.jsoninqwen35/analyse_crossseed.py; cited by The activation-weighted Gram, and what the seed floor looks like in itanalysis/gradient_atoms_atoms_zoo.json: written under the templated nameanalysis/gradient_atoms_atoms_{a.tag}.jsoninqwen35/analyse_gradient_atoms.py,analysis/gradient_atoms_atoms_{out_tag}.jsoninqwen35/gradient_atoms_on_modal.py; cited by Gradient atoms on the zoo's own preference dataanalysis/gradient_atoms_extract_zoo.json: written under the templated nameanalysis/gradient_atoms_extract_{a.tag}.jsoninqwen35/analyse_gradient_atoms.py,analysis/gradient_atoms_extract_{out_tag}.jsoninqwen35/gradient_atoms_on_modal.py; cited by Gradient atoms on the zoo's own preference dataanalysis/qual_axes.json: written under the templated nameanalysis/qual_*.jsoninqwen35/analyse_fisher.py; cited by axis_Agreeableness (the named Agreeableness axis), axis_Conscientiousness (the named Conscientiousness axis), axis_EmotionalStability (the named Emotional Stability axis) (+3)analysis/qual_fa.json: written under the templated nameanalysis/qual_*.jsoninqwen35/analyse_fisher.py; cited by Factor analysis of the adapter Gram, FA_Arousal (Arousal / activation), Factor audit, 2026-09-11 (+3)analysis/qual_identity.json: written under the templated nameanalysis/qual_*.jsoninqwen35/analyse_fisher.py; cited by Qualitative reads and adjudications, Steering the base model along weight-space directionsanalysis/qual_pairs.json: written under the templated nameanalysis/qual_*.jsoninqwen35/analyse_fisher.py; cited by Qualitative reads and adjudicationsanalysis/qual_pc.json: written under the templated nameanalysis/qual_*.jsoninqwen35/analyse_fisher.py; cited by PC1 - Flooding and Composure, PC2 - Hedging and Bluntness, PC3 - Theory and Plain Speech (+3)analysis/rl_sketches_sorh_control.json: written under the templated nameanalysis/rl_sketches_{tag}.jsoninqwen35/analyse_sorh.py; cited by The reward-hacks arms — the positive control that also failedanalysis/rl_sketches_sorh_hack.json: written under the templated nameanalysis/rl_sketches_{tag}.jsoninqwen35/analyse_sorh.py; cited by The reward-hacks arms — the positive control that also failed
Files the wiki cites with no producing script found under qwen35/
Provenance gaps: the file exists, pages quote it, and no checked-in script names
it (consumers excluded). Eight of these were already recorded on
Open questions under "Provenance gaps" on 2026-09-07 (module_holography,
polarity_deflation, adapter_effect, intrinsic_coords, steerfix_replication,
judged_ceiling, functional_probe, qual_pairs); page_data.json and
monitor_page_data.json are read by the old page builders and written by nothing
checked in. The rl_* files belong to the 2026-08 RL arm
(Capability RL and persona drift); that page's sources name rl_capability.py,
rl_preflight.py, eval_rl_persona.py and analyse_rl.py under qwen35/, but
none of those names the rl_*.json files literally (they build the names at run
time), so they appear here. scree_null.json and scree_null_matched.json are
named only by build_blog_page.py, a consumer; no producing script is checked
in, and #real is byte-identical in both files (see Open questions,
"Provenance gaps").
analysis/adapter_effect.json(cited by Adapter effect and LoRA-A drift, Judged evaluations of the trait adapters)analysis/alignment_geometry.json(cited by Alignment-relevant traits in the geometry, axis_Agreeableness (the named Agreeableness axis), PC4 - Affirmation and Self-Concern (+1))analysis/alignment_geometry_aligncommon.json(cited by Alignment-relevant traits in the geometry, Where no word goes - the hole on the factor chart)analysis/best_axis_pairs.json(cited by Best axis pair per Goldberg group, Post draft (short rewrite, 2026-09-15), Start here for collaborators)analysis/blog_corpus.json(cited by Steering the unnamed direction, Inventory of built HTML pages, The distil page and its withdrawal)analysis/distil_data.json(cited by Inventory of built HTML pages, The distil page and its withdrawal, Judged evaluations of the trait adapters (+3))analysis/fa_text_contrast.json(cited by Claims and evidence, Start here for collaborators, Factor analysis of the training-contrast embeddings)analysis/functional_probe.json(cited by Judged evaluations of the trait adapters, Capability RL and persona drift, The seed floor)analysis/hf_dataset_audit.json(cited by Hugging Face artefacts, Open questions)analysis/intrinsic_coords.json(cited by Factor-first migration, PCA, the scree curve and the two nulls)analysis/judged_ceiling.json(cited by Judged evaluations of the trait adapters)analysis/live_components.json(cited by Inventory of built HTML pages, Judged evaluations of the trait adapters)analysis/live_results.json(cited by Inventory of built HTML pages, The distil page and its withdrawal, Judged evaluations of the trait adapters (+1))analysis/manifold_ideas.json(cited by Inventory of built HTML pages)analysis/module_holography.json(cited by Module holography, Open questions)analysis/monitor_page_data.json(cited by Inventory of built HTML pages, Judged evaluations of the trait adapters, Steering the base model along weight-space directions)analysis/olmo_envs.json(cited by Capability RL and persona drift)analysis/page_data.json(cited by Inventory of built HTML pages, Judged evaluations of the trait adapters, Steering the base model along weight-space directions)analysis/pc_loadings.json(cited by Factor-first migration, PC1 - Flooding and Composure, PC2 - Hedging and Bluntness (+3))analysis/persona_merge_audit.json(cited by The distil page and its withdrawal, The persona merge and its correction)analysis/polarity_deflation.json(cited by Polarity, bipolarity and the trait graph, Source contradictions, stage-two-geometry (+1))analysis/rank_sweep_mechanism.json(cited by Column-space structure, Rank sweep)analysis/rl_behavioural.json(cited by Capability RL and persona drift)analysis/rl_bigfive_coords.json(cited by Capability RL and persona drift)analysis/rl_correct_null.json(cited by Capability RL and persona drift)analysis/rl_module_profile.json(cited by Capability RL and persona drift)analysis/rl_probe.json(cited by Capability RL and persona drift)analysis/rl_probe_vllm.json(cited by Capability RL and persona drift)analysis/rl_projection.json(cited by Capability RL and persona drift)analysis/rl_score.json(cited by Capability RL and persona drift)analysis/rl_score_code.json(cited by Capability RL and persona drift)analysis/rl_sketches.json(cited by Post draft (short rewrite, 2026-09-15), Capability RL and persona drift)analysis/rl_train.json(cited by Capability RL and persona drift)analysis/scree_null.json(cited by Open questions, PCA, the scree curve and the two nulls, Superseded claims (+1))analysis/scree_null_matched.json(cited by Inventory of built HTML pages, Factor analysis of the null arms, What has been done to the PCs but not to the factors (+3))analysis/slider_probe.json(cited by Persona sliders - LoRAs trained to an activation-space target, Post draft (short rewrite, 2026-09-15))analysis/trait_graph.json(cited by Polarity, bipolarity and the trait graph, Source contradictions, stage-two-geometry)results/cross_gram_actweighted_root_x_data_null_seedpaired_s40_matched.npz(cited by The activation-weighted Gram, and what the seed floor looks like in it)results/cross_gram_full_data_null_seedpaired_s40_x_data_null_seedpaired_s40_matched.npz(cited by The seed floor)results/cross_gram_full_seed1_loras_introspection_x_seed1_loras_introspection.npz(cited by Stage two at a second seed)results/decomposition_permuted_matched.json(cited by The null control arms)results/decomposition_seed1.json(cited by Cross-seed geometry, Per-direction seed stability, and why the check is uninformative)results/decomposition_shuffled_matched.json(cited by The null control arms, Open questions)results/gradient_atoms/zoo_dict_real_200_0.1.npz(cited by Gradient atoms on the zoo's own preference data)results/gram_sketch100.npz(cited by PCA, the scree curve and the two nulls)
Files cited by history pages under other subprojects (sweep100/results/,
drift/results/, teacherscreen/results/) are outside this map; the pages that
cite them (The 100-trait sweep on Qwen2.5-3B, The drift experiment — weight-space control of a trait fails, The teacher screen) name the scripts.
How to check a number
- Find the number's
file#keyon the wiki page (or on Claims and evidence). - Open the file under
qwen35/and read the key. Never recompute. - If the value differs from the page, record it on Source contradictions and do not pick one silently.
- If you need the figure, run
python qwen35/figures/post/make_post_figures.py; it reads only the files in Table 1 and writes underqwen35/figures/post/. The companion is rebuilt by its own systemd timer from the same files and must not be run from a session;check_numbers.pyis its regression test.
Sources
qwen35/figures/post/make_post_figures.pyqwen35/companion/build_companion.pyqwen35/companion/check_numbers.pyqwen35/analyse_fa_qwen35.pyqwen35/build_gram.pywiki/pages/**/*.mdqwen35/POST_DRAFT.md
Linked from
- Hugging Face artefacts
- persona-curvature wiki
- How to read and maintain this wiki
- Open questions
- Start here for collaborators
- Superseded claims
- Timeline
File
pages/overview/code-and-data-map.md