42 Commits
Author SHA1 Message Date
wassname (Michael J Clark) 5e177a2745 Merge pull request #3 from wassname/add-bullshit-benchmark-loader
scenarios: add the bullshit benchmark (55 incoherent-premise questions)
2026-08-09 10:47:36 +08:00
wassname 8353897780 scenarios: register BullshitBench for credulity screening 2026-07-26 10:23:55 +08:00
wassnameandClaudypoo 0b53320bdf scenarios: add the bullshit benchmark (55 incoherent-premise questions)
github.com/petergpt/bullshit-benchmark v2.0: confidently-posed nonsense across 10 techniques,
e.g. 'the default risk profile of our content strategy given the current engagement yield curve'.

Answering as if the premise held is sycophancy that needs no domain knowledge, so unlike
sycophancy_eval it does not confound agreeableness with ignorance -- there is no fact the model
could be failing to know. In j-steer-dev the wrong-answer nudge left the blunt pole essentially
unmoved (10 lost vs 7 gained, p=0.63) while moving the flattering pole hard (0.13 -> 0.31 flip
rate, p=0.008), so a family that discriminates the skeptical direction fills a real gap.

Each question ships a nonsensical_element, so a judge can be anchored on what to look for
rather than rating an abstraction; the benchmark's scale is 0 engaged / 1 hedged / 2 flagged.

Co-Authored-By: Claudypoo <288921227+claudypoo@users.noreply.github.com>
2026-07-26 10:21:55 +08:00
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
wassname (Michael J Clark) 94d839629c Update trying_mean_mass_diff.md 2026-07-24 21:04:30 +08:00
wassname (Michael J Clark) df4979f926 Update trying_mean_mass_diff.md 2026-07-24 21:00:20 +08:00
wassname (Michael J Clark) 680fad5a31 Create trying_mean_mass_diff.md 2026-07-24 16:32:27 +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) 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