Timeline

A dated chronology of the project from the three Discord messages of 2026-08-12 to the wiki build of 2026-09-07.

currentverified 2026-09-07timelinehistory

Timeline

One line per event. Times are UTC where a source gives one. Where nothing but a file's modification time dates an event, the line says so.

On the start date. This page was commissioned as running "from 2026-08-08 (first session)". Nothing in this project's record supports 08-08: the earliest dated artefact of any kind is Samuel's message of 2026-08-12 00:23:17, and the project record opens "eternalrecursion's idea from #ideas, 2026-08-12". 2026-08-02 is when the agent harness itself was started, and the archived Discord export contains other channels' messages from 2026-08-01 onward. The chronology below therefore begins on 08-12. Flagged in _report_history.md.

Week 1 — control, and reading

date / time event
08-12 00:23:17 Samuel, in #ideas: "Persona cartography + model to act on gradient"
08-12 00:23:50 "But look up persona cartography lesswrong"
08-12 00:24:04 "And think about a model that takes in a gradient and spits out a gradient" — Origin, and how the question changed shape three times
08-12 00:29:23 The LessWrong post is located: arXiv 2607.07916, 10 Jul 2026 — Persona Cartography (Baines et al., 2026)
08-12 02:46:18 drift/results/drift_report.md generated: the model organism passes, base 1.81 to plain 9.20 — The drift experiment — weight-space control of a trait fails
08-12 ~06:10 The "constraints were never binding" explanation is falsified by the A-GEM run and replaced
08-12 06:13:22 drift/results/drift_scores.json generated: all 19 regimes scored; every weight-space constraint null, KL at 1.93
08-12 17:30 pooling_check.py run: the pooling artefact dies, the "97-99% orthogonal" reading is corrected, and the oracle direction's design flaw is found — Lesson: know which way a shared term pushes before you read the sign
08-12 18:14:27 Gradient-probe reports generated: pooled +0.0489, layer 34 MRR 0.5080 — The gradient-content probe — reading works, but only during acquisition
08-12 (late) Register probe: the trait is about twice as legible as a planted fact; and the saturation result, from existing sketches at zero cost
08-12 LoRA rank spectra measured: rank 1 keeps ~49% of energy, effective rank ~3.8 — Early LoRA structure — the 34 OCEAN adapters
08-13 Interpolability: 47.7% of a held-out trait spanned by the other four, of which their mean direction alone gives 46.6%
08-13 Rank-truncation leave-one-out resolves the rank-1 puzzle (0.284 to 0.477, monotone)
08-14 17:26:21 The project channel #persona-cartography is created; the #ideas thread becomes read-only history
08-14 17:56:59 Samuel: "Is there any existing work on pca over LoRAs"
08-14 17:58:50 CONTEXT.md written and pinned, organised by current truth with superseded claims marked
08-14 17:59:55 Samuel asks the cost of running OCT over the 683-trait ideonomy list (corrected to 638)
08-14 18:25-18:50 Cost estimates rebuilt from measured invoices for 3B and 8B; RunPod and model-size ladder; better trait lists recommended
08-14 22:55:32 Samuel: "Go for it" — the teacher screen is approved
08-14 22:57:39 Samuel commissions the 100-trait sweep, then goes to sleep
08-14 23:01 / 23:16 Teacher-screen generations and judgements written; the analysis was never producedThe teacher screen
08-14 ~23:10 Pair generation for the 100-trait sweep launched — The 100-trait sweep on Qwen2.5-3B
08-14 23:23 Samuel: "Wait also please do full open character training pipeline overnight" — stage 2 added
08-14 23:31 The Goldberg 100 verified against the paper's own table; the Emotional Stability 6/14 asymmetry recorded

Week 2 — the 100-trait sweep

date / time event
08-15 00:00-00:05 Generation complete: 25,554 pairs, $1.82, zero errors; balanced to a 214-prompt intersection at a deliberate 16.3% cut; stage 1 launched 00:04
08-15 08:45 The PCA result: PC1 evaluative (F=194 on keyed sign against 17.5 on factor), PC3 is Extraversion at 0.950, polarity test passes
08-15 08:35-13:36 Stage 2 hangs twice and is cancelled; the detection lesson is log mtime, not pgrep
08-15 14:31 The interactive page is built — and sits undeployed for four hours because nobody checked
08-15 Factor analysis revises the headline: all five factors recovered one-to-one under oblimin, none clearing 0.85; the evaluative axis largely dissolves
08-15 23:36 sweep100/results/steer.md generated: 12% bad-but-lucid at alpha +4 on PC1 against 0% for the matched control
08-15 Stage-2 transcripts inspected and found trait-free; the long-owed behavioural verification arrives as "these are weak persona directions that become personas when amplified"
08-15 The re-judge settles the judge criticism: the headline does not move
08-15 ~23:40 Epoch calibration (2 to 9 epochs changes nothing) and the initialisation finding (cross-init same-trait cosine 0.024, geometry RSA 0.995)
08-16 00:28 Three-seed result (later superseded by a clean rerun)
08-16 00:43 Behaviour gate at n=96 stops at 97 of 105 adapters: OpenRouter credits exhausted (HTTP 402)
08-16 "LoRAcles" corrected: the paper Samuel meant is De Schamphelaere et al., ICML 2026 workshop, not the security paper first cited
08-16 11:30 Contamination found in seed 1: four adapters were the 9-epoch calibration runs, skipped by a resume guard. Retrained rather than argued away
08-16 11:54 Behaviour gate, final: 71 of 105 pass, mean win rate 0.670
08-16 12:08 Three-seed clean rerun supersedes 00:28; every headline unchanged to three decimals
08-16 13:42 / 14:27 Text-to-LoRA reported as losing to retrieval by about 2x
08-16 ~18:40 The learning curve is launched, with two of its own design errors caught first
08-16 ~23:00 The learning curve overturns the conclusion: 0.513 at n=80, the same model and data
08-17 00:25 Expanded 148-trait sweep trained, $2.77
08-17 01:46 Converged at ~16.6k steps: hypernetwork 0.599 against retrieval 0.564. The earlier "loses 2x" was a statement about the step budget, three times over
08-18 The deciding test: weights recover the Big Five no better than the training text (0.750 against 0.731, 0/5 clearing 0.85)
08-18 Stage 2 found alive — 100 __sft adapters had existed all along; stacking them moves the geometry not at all (RSA +0.999)
08-18 19:12 Second base model: 100 adapters on Qwen3-4B, verified by tensor shape not metadata
08-18 19:30 The null replicates on the second base model (0.742 against text 0.731)

Week 3 — the Qwen3.5-4B experiment

date / time event
08-19 Samuel waives comparability with the old corpora ("feel free to upgrade packages to whatever makes sense")
08-19 Qwen3.5-4B module layout enumerated from the model: 248 adaptable linear modules; a conventional q/k/v/o + MLP list would have missed 120
08-19 rsLoRA adopted for the new corpus on Samuel's instruction
08-19 The new standalone experiment is commissioned: "this isn't a replication, want to do things properly with qwen 3.5 4b"
08-19 The learning-rate problem found by a docs check: 5e-05 had been used since the first sweep where guidance is ~5e-06
08-19 13:49-14:06 Trait sets drawn; two draws discarded (traits_secondary_DISCARDED_draw1/2.json) before the third is kept — The two discarded secondary draws
08-19 15:30 Phase 1 recorded as PAUSED, not open at $4: a $0.63 smoke test showed the estimate wrong by ~100x
08-19 18:56 Phase 1 reopened at a measured $19.17 on z-ai/glm-4.5-air; the $420 / $793 / $19 sequence recorded — Lesson: Qwen3.5's chat template defaults thinking ON
08-19 19:10 Three of Goldberg's published 100 (Verbal, Prompt, Complex) refused by the constitution writer, which had screened the dictionary sense of each word
08-19 19:20 Phase 1 killed at $1.44 over a circularity in the anchor block: it named one Goldberg marker per Big Five factor in every training document
08-19 The plan page goes live at plan.161-35-77-84.sslip.io
08-20 00:14 base_config_snapshot.json written (file mtime)
08-20 00:53 - 10:43 Nine phase-2 arms run: rsLoRA scale 16, alpha 16 (twice), beta 0.5, NLL, KL, plain LoRA, gate-clear — Phase 2 — the recipe search
08-20 11:29:57 The 134-trait main sweep completes (qwen35/phase5_sweep.log)
08-20 12:31 PREREGISTRATION_phase3.md written while the null arms are still training
08-20 Phase 6: a cluster test returns +0.015 on structure a signed axis test scores +0.175 on — Lesson: a test shaped like the wrong hypothesis returns a confident null
08-21 13:00-17:00 Six hand-launched Modal apps named oct-continue-persona-curvature, $8.7978, never placed on an arm — Costs
08-21 The harness blackout: 631 turns attempted, all failed at zero cost
08-22 Phase 3 closed; both nulls pass flat; the seed-paired floor fails at 0.0167 against a bar of 0.2447 and the trait-level claim is withdrawn
08-22 22:40 Phase 3 reversed: the bar was in the wrong units — Lesson: a preregistered bar can be in the wrong units, The seed floor. STEER134_DESIGN.md written the same hour
08-22 23:34 Phase 7 steering runs and is judged: $40.05 of judging, 15,944 calls, against a $35 phase budget
08-22 23:42 Phase 10 v1 launched (oct_stage2.py, three traits)
08-23 00:05 The ledger correction: recorded $195.90 against measured ~$370.65
08-23 00:23:16 The project tree becomes a git repository (commit ba4d89b)
08-23 00:40 The bare $195.90 is deleted rather than annotated (commit f2e02b4)
08-23 ~04:25 Phase 10 v1 dies at a three-hour function timeout having billed $27.90
08-23 04:59 Per-run provenance recovered: 234 of 234 runmeta records, up from 8 (commit fd27c2e)
08-23 05:10 / 05:17 Commits 9d5785e and cab9aff: "a phase costs its failures", and "quote the tool, never an instance"
08-23 09:50 Phase 7 results finally read: the emergent-misalignment prediction fails on PC1, and at |alpha| >= 4 the model is not producing sentences at all
08-23 10:16 Phase 10 complete and settled at $65.27, FINAL: true

Week 4 — reading what had been paid for

date / time event
08-24 12:26 personality_lora_zoo_experimental_plan.md last modified — the only date it has — The experimental plan, and what was done against it
08-24 20:36 The trait_curves read: the adapters do steer their own trait, signed and monotone, with a flat same-alpha random control. It cost nothing; all 17,654 judge calls served from cache
08-24 PHASE3_VERDICT.md addendum: objective mismatch in every control arm — all 240 control adapters trained under plain sigmoid DPO — Lesson: verify the treatment reached the container, not just the outcome
08-24 20:36 Last message in the archived #persona-cartography channel
08-25 11:44 The agent harness is stopped and disabled on Samuel's instruction; token consumption too high
08-28 03:07 POST-BATCH3-TODO.md written (file mtime): merge-record verification, disk, eval, upload, card fixes
08-28 04:31 PENDING-CONTENT-REVIEW.md written (file mtime): a content decision escalated to Samuel, with the uploader quarantining the affected files and continuing
08-29 The Qwen3.5 thinking-default trap found: three runs silently invalidated, 1,512 steering generations regenerated — Lesson: Qwen3.5's chat template defaults thinking ON
08-29 The HuggingFace 128-commits-per-hour limit found, presenting as a hang — Lesson: HuggingFace caps repository commits at 128 per hour
08-29 17:56 PREREG_steerfix.md written before any corrected generation exists
08-29 The meter budget is raised to $2,400 against a $5,000 grant, with $956 already spent; the app prefix widened to pc-qwen35 after detached steering apps were found outside the kill switch
08-31 The guild is archived (3,062 messages, 153 containers), emptied, and rebuilt as v3 — How the work was done

September

date event
09-01 The blog-post day: lexicon-coverage geometry, the unnamed direction and its controls, the data-alignment scorer, the evolutionary search and a verification training run. Spend ~$1,915 of $2,400; the day's whole program about $20
09-02 17:58 / 18:00 traits_alignment.json and PREREG_alignment.md written (file mtimes) — the four alignment-relevant traits
09-03 21:28/21:29 Matched-objective retrains land: pure seed floor +0.0181 (was +0.0166 with the objective confounded in), and the objective alone at the same seed gives +0.954. The seed does everything
09-04 ~13:00 Four jobs launched as systemd units: the two matched null arms, the three hole-word traits (David Africa's candidate names), and N x N
09-04 The fourth silent non-travelling treatment is caught — by a print line designed for it
09-04 A $20-25 quote for the stage-2 arm corrected to about $15 per trait; 10 traits = $151; not launched without Samuel's word
09-05 N x N lands: 134 of 134 own-adapter rank 1
09-05 Matched null arms analysed: shuffled +0.0001, permuted +0.0080 — identical to the confounded arms
09-05 The activation-space arm is built and run in an afternoon — Activation-space analyses: overview
09-05 Samuel asks where the 134 words come from; the answer is in plan.json and a provenance paragraph is added to the page — The 34 Lexicon traits and how they were drawn
09-05 12:2x Stage-2 seed-1 arm launched, 15 traits, plan $226.28 against a $240 budget; lands under budget with same-trait 0.067, 15/15 top-1 of 134, geometry across seeds r 0.98
09-07 This wiki is built

Related: Origin, and how the question changed shape three times, The 100-trait sweep on Qwen2.5-3B, Phase 2 — the recipe search, Costs, How the work was done, Method lessons.

Sources

  • CONTEXT.md
  • /home/vibe12/projects/agent-harness/archive/discord-2026-08-31/rendered/notebook--ideas.md
  • /home/vibe12/projects/agent-harness/archive/discord-2026-08-31/rendered/projects--persona-cartography.md
  • /home/vibe12/projects/agent-harness/memory/projects/persona-curvature.md
  • /home/vibe12/projects/agent-harness/memory/server/maintenance-log.md
  • qwen35/PHASE3_VERDICT.md
  • qwen35/HANDOVER.md
  • qwen35/plan.json
  • .garden/journal/2026-09-01.md
  • .garden/journal/2026-09-03.md
  • .garden/journal/2026-09-04.md
  • .garden/journal/2026-09-05.md
  • /home/vibe12/projects/.garden/journal/2026-08-31.md

Linked from

File

pages/history/timeline.md