Commit Graph
36 Commits
Author SHA1 Message Date
wassnameandClaudypoo 3593189142 refactor: replace 4 per-axis shell scripts with run_axis.py + data/axes/<id>/config.yaml
Two of the four were broken: run_credulous_skeptical_stage_b_strat.sh called
validate_persona_axes_openrouter.py (deleted in the Inspect conversion) and
run_honesty_credulity_stage_b.sh had 'UV run python' plus a hardcoded absolute path.

The two working stage-A scripts differed only by --exclude-confound-dims, which you
could not see without diffing them. Per-axis argv is now readable data.

Resolved stage-A argv is unchanged except --out drops the _strat_v3 suffix.

Co-Authored-By: Claudypoo <288921227+claudypoo@users.noreply.github.com>
2026-07-25 10:12:01 +08:00
wassnameandClaudypoo 93d9ed165e personas: add government_authority pair (deference/disrespect to governmental authority)
For j-steer-dev: decouples the +C authority pole from AI-lab safety-policy deference
(refusal confound). wassname-approved wording, 2026-07-19. -- Claude

Co-Authored-By: Claudypoo <288921227+claudypoo@users.noreply.github.com>
2026-07-19 13:32:45 +08:00
wassname 958f3c7973 Export credulity strict-pass (24) + fix export for missing confound_judgment 2026-07-06 07:37:43 +08:00
wassname 0096b87450 Add export_selections.py + honesty top-50 selections
Recomputes overall_score from stored per-dim likerts (no re-run needed).
Exports top-N by score with // provenance keys.
Honesty top-50: 24 strict-pass at thr 2.0 + on-axis dim exclusion.
2026-07-06 06:12:03 +08:00
wassname 48e5596730 Mirror honesty/credulity selections into library data/selections/
Score-ranked exports (--min-score 0 --keep-per-source 10) for both axes, 46 rows each,
6 sources. Stage B produced 0/50 strict pass for both axes (authority-calibrated gate
too tight for epistemic axes); see docs/20260705_persona_library_user_perspective.md
papercut #1. These mirror the selections shipped to steering-lite.
2026-07-05 13:44:26 +08:00
wassname 8ee98a0126 Per-axis persona jsonl + Stage B launcher for honesty/credulity
Stage A (bounded_thinking judge, 120 pairs, 0 errors, 0 judge-did-not-commit):
- truth_over_approval winner: 'Speak with the priorities of someone {persona}.' (axisD=3.00)
- credulous_skeptical winner: 'Judge the case as someone {persona} would.' (33.3% strict pass)

Stage B launched for both axes (n=50, 6 sources). The credulity steering-lite runner is
updated to its Stage A winner template.
2026-07-05 13:19:06 +08:00
wassname a949cd248e Thread provider_only to bounded axis judge; add Stage A template candidates
Route the bounded-thinking axis judge to the same DeepInfra provider as the
generator (DeepInfra is known to support qwen3 thinking, per the liveproof), so
the reasoning judge does not land on a provider that ignores thinking params.
2026-07-05 12:55:17 +08:00
wassname 6b3a4b062a Add bounded-thinking judge: phase-1 bounded thinking + phase-2 force-answer
Port of the gist (wassname/72eed3a1ddfc286c5e12a118dfa30161) adapted to this repo's
openrouter_wrapper client (no inspect-ai dep). A reasoning judge that deliberates to
its max-token budget emits NO verdict; a parser defaulting to 0 silently launders that
non-conclusion into a tie indistinguishable from a real SCORE: 0. Fix:
- scripts/bounded_thinking_judge.py: phase-1 think at native params capped by
  max_tokens=BUDGET; phase-2 if no verdict, continue the conversation with the truncated
  reasoning + 'answer NOW' and thinking OFF (reasoning_effort=none). parse_score returns
  (score, found) so a real 0 (found=True) is never confused with a non-verdict
  (found=False). N-sample averaging (reproducibility from N, not OOD greedy temp0).
- validate_persona_axes_openrouter.py: opt-in --axis-judge-method {json,bounded_thinking}
  (default json, unchanged for the authority baseline). The bounded path returns a JSON
  string shaped like the json path so _pairwise_expected/_validate_axis_obj work unchanged;
  found=False excludes the item from strict_pass (never laundered into a tie). SCORE -5..+5
  maps to the 1..5 A_more_target_than_B scale as 3.0 + 0.4*SCORE.
- bounded_thinking_judge_liveproof.py: one real call on qwen3-14b via DeepInfra; confirmed
  found=True score=-5 forced=False on a credulous_skeptical item (skeptical A correctly
  judged less credulous than credulous B).
- data/personas/persona_pairs_honesty_credulity.jsonl: the two fixed axes for this work.
2026-07-05 12:53:24 +08:00
wassname 82c1599e7a Add credulous_skeptical axis pair for honesty x credulity steering map
Mirrors the authority pair lineage (pure_authority, dignity_over_authority) with a
new epistemic-trust axis distinct from truth_over_approval (honesty). Word-boundary
audit confirms no honesty/authority/care/tradition vocabulary leaks into the
credulity poles; an oracle four-pole confound review finds the axes conceptually
orthogonal (output-side honesty vs input-side credulity), with the caveat that
the sycophant pole of truth_over_approval and the credulous pole here can produce
identical surface agreement, so scenario selection must avoid items where
agreement is the only observable.
2026-07-05 12:38:38 +08:00
wassname f37cca55f3 Tighten pure authority selection 2026-07-01 00:29:31 +08:00
wassname f355b47ea9 Fix authority validation to one pure pair 2026-06-30 19:51:04 +08:00
wassname 2863482427 Validate authority axes through wrapper 2026-06-30 14:51:22 +08:00
wassname 7ecdfea07e Add strict authority scenario selection 2026-06-30 10:52:21 +08:00
wassname db1a3f8b47 repo: move scenario sources and committed results 2026-06-30 09:45:32 +08:00
wassname a919adcb8a scenario_sources: add sycophancy genies and valuebench 2026-06-30 09:19:02 +08:00
wassname 6d4b1d0bff templates: add formatting stress persona prompts 2026-06-30 08:50:23 +08:00
wassname 488dc1c1c3 scenario_sources: add capped source scenario samples 2026-06-30 08:48:51 +08:00
wassname 76d8fde10b scenario_sources: export machiavelli scenario jsonl 2026-06-30 08:43:40 +08:00
wassname 97c1ac3b0b organize persona and scenario data paths 2026-06-29 19:16:41 +08:00
wassname da435ccb67 eval: add refusal probe axes 2026-06-25 10:30:33 +08:00
wassname a2b0bcbc76 eval: add roleplay context stress templates 2026-06-25 10:24:20 +08:00
wassname fffab4e25a fix: normalize new stress templates 2026-06-25 09:52:46 +08:00
wassname (Michael J Clark)andGitHub 3745b280f2 Update template_catalog.yaml 2026-06-24 21:01:29 +08:00
wassname-claudeandClaudypoo 6b272b8c86 Make validator honor self-contained scenario prompts (fixes 3p suffix clash)
The 52 3p-observer scenarios carry their own question + length
("...what does the actor do next? Answer in one or two sentences."),
but _generation_prompt always appended a 1p "What do you do? Answer in
80-140 words." -- two conflicting questions and a POV flip, so the data
could not reproduce the appendix's 3p measurement through this script
(caught in review).

Add a "self_contained" flag on scenario rows; when set, _generation_prompt
emits the scenario verbatim instead of appending its default 1p question.
Bare-vignette families without the flag are unchanged. README appendix
rewritten to lead with the runnable command and explain the flag.

Co-Authored-By: Claudypoo <288921227+claudypoo@users.noreply.github.com>
2026-06-21 04:25:13 +00:00
wassname-claudeandClaudypoo d2441ad3a8 Add w2schar-mini character axes + 3p-observer prompts + axis-generability finding
27 character persona axes synthesized from the Forethought AI-character essay
(Appendix 2) and a character-inspirations doc, plus 52 third-person-observer
scenario prompts (tiny-mfv / Clifford-2015 vignettes) they were measured on.

README appendix documents an axis x prompt-POV interaction that sharpens the
existing "the subtle axis still mostly fails" note: concrete action/disposition
axes separate (avoid_power 8.0, honest_when_uncomfortable 8.0, action_over_talk
3.0), while abstract how/signaling axes flatline through every {persona} template
(principle_not_signaling 0.0, weigh_who_is_affected 0.0, perspective_taking
0.75). Mechanism is pole-generability compounded by POV: a 3p-observer prompt
offers no act-vs-signal fork and the model won't role-play performative
non-action. Reframing the neg pole concretely rescues it (principle_not_signaling
0.0 -> action_over_talk 3.0, same idea, behaviour vs abstraction).

Separate in-house measurement (qwen3.5-27b gen, gemini-flash-lite judge, n=4),
flagged as NOT comparable to the seed-24 pilot table.

Co-Authored-By: Claudypoo <288921227+claudypoo@users.noreply.github.com>
2026-06-21 04:04:20 +00:00
wassname d91eda0228 eval: test engineered prefixes as templates 2026-06-13 20:43:44 +08:00
wassname 562c8fd0f0 docs: keep generated stats out of data 2026-06-13 19:12:24 +08:00
wassname ede354f07a eval: add dual judges and controls 2026-06-13 19:12:24 +08:00
wassname d1ee948760 tidy 2026-06-13 19:12:24 +08:00
wassname 4675e9782f tidy and image 2026-06-13 17:45:50 +08:00
wassname 849b1de0b1 clarify persona template scoring 2026-06-13 15:28:53 +08:00
wassname ae3fc096d7 add source urls and confound audits 2026-06-13 14:39:45 +08:00
wassname 9b1a6e7573 simplify public docs and parquet upload 2026-06-13 13:55:43 +08:00
wassname 2c86dee10f add measured v2 pilot stats 2026-06-13 10:13:14 +08:00
wassname 4e27617821 add v2 candidate persona library 2026-06-13 10:09:32 +08:00
wassname 97ceaf5908 release persona steering template library 2026-06-13 10:05:35 +08:00