Commit Graph
53 Commits
Author SHA1 Message Date
wassname 0cd781f8b9 Add parse_stage_a.py: rank Stage A templates by strict_pass_rate then axis_delta 2026-07-05 22:24:01 +08:00
wassname bbfc812f45 Add --n-per-source for stratified sampling + SKILL.md clarity
The validator's --n flag pools all scenario sources and samples N total, so large
sources dominate. For narrow axes this means most sampled scenarios don't afford
the axis. Add --n-per-source: takes N from EACH family (stratified, even sampling).

SKILL.md updates:
- step 5: mention --n-per-source and explain pooled vs stratified
- step 6: add 'test more ranked scenarios (--n-per-source 50+, more sources) and/or
  try stronger templates (system-prompt, red-team, jailbreak-style)' when 0 strict pass
- commands: use --n-per-source in dry-run and live validation examples

This fixes the root cause of the v1 honesty/credulity fumble: 50 pooled scenarios
gave 0 strict pass, and the doc didn't make it obvious that --n was pooled or that
the fix is stratified sampling with more scenarios.
2026-07-05 21:51:28 +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 f37cca55f3 Tighten pure authority selection 2026-07-01 00:29:31 +08:00
wassname 6450d5140b Use grammar-neutral authority templates 2026-06-30 20:02:35 +08:00
wassname f355b47ea9 Fix authority validation to one pure pair 2026-06-30 19:51:04 +08:00
wassname 3e7341478d Disable Qwen thinking in persona validation 2026-06-30 15:09:20 +08:00
wassname 0f1d35a24b Pin persona generator provider 2026-06-30 15:02:00 +08:00
wassname 2863482427 Validate authority axes through wrapper 2026-06-30 14:51:22 +08:00
wassname c489cf3a3e Filter selected authority scenarios by strict pass 2026-06-30 10:51:36 +08:00
wassname b4225336da Add authority steering selection exporter 2026-06-30 10:38:57 +08:00
wassname 4edabbc62d Add authority steering selection preparer 2026-06-30 10:14:33 +08:00
wassname db1a3f8b47 repo: move scenario sources and committed results 2026-06-30 09:45:32 +08:00
wassname 97c1ac3b0b organize persona and scenario data paths 2026-06-29 19:16:41 +08:00
wassname 0e2f331733 machiavelli: upload top moral-contrast scenarios 2026-06-28 22:25:06 +08:00
wassname-claudeandClaudypoo 11a43903f4 Add scenario_sources: public-dataset scenario loaders + screen workflow
Loaders that turn public moral-judgment datasets into short self-contained
scenario PROMPTS (not completions) for persona pair generation, affordance-
filtered (no prescribed-content / refusal-trap / single-answer QA) and length-
capped: AIRiskDilemmas (AI-seat), moral_stories_foundations, daily_dilemmas,
social_chemistry_101, ethics_qna commonsense (3p judgment), plus machiavelli via
an offline deepseek-v4-flash compressor cached to data/ (raw obs ~350 words).
Moral-RolePlay skipped (fiction/eval-leak). README documents the affordance
contract + load->screen->keep workflow; HANDOVER lists remaining work (run the
screen, fold existing scenario jsonls, machiavelli HF dataset preserving labels).

Also harden validate_persona_axes_openrouter.py: guard resp.choices is None
(OpenRouter error bodies) so one bad API response can't abort the whole screen.

Ported from wassname/w2schar-mini.

Co-Authored-By: Claudypoo <288921227+claudypoo@users.noreply.github.com>
2026-06-28 06:23:48 +00:00
wassname cd695c411b docs: improve quick-scroll README 2026-06-25 13:36:00 +08:00
wassname afbfbf514f docs: add interactive refusal tables 2026-06-25 13:23:34 +08:00
wassname cfcb57b9ce docs: use one Quarto source for README and Pages 2026-06-25 13:06:12 +08:00
wassname bcbc1d0f65 docs: render Pages with Quarto workflow 2026-06-25 12:44:39 +08:00
wassname 22dd2c2df9 docs: rank README result tables by t-stat 2026-06-25 12:33:11 +08:00
wassname caceaebbf0 docs: streamline README and add interactive Pages plot 2026-06-25 12:31:50 +08:00
wassname d31cac9068 docs: simplify model matrix visualization 2026-06-25 12:20:35 +08:00
wassname 026b22e131 docs: simplify model matrix ranking 2026-06-25 11:54:06 +08:00
wassname 2f62327acc docs: render README with Quarto 2026-06-25 11:44:04 +08:00
wassname 026a57e246 docs: make README tables rerenderable 2026-06-25 11:31:49 +08:00
wassname 2f7184f609 eval: summarize refusal probe model matrix 2026-06-25 11:12:12 +08:00
wassname 85b4a6f354 eval: refresh stress template results 2026-06-25 09:58:23 +08:00
wassname a88acae536 docs: add persona prior-art guide 2026-06-23 10:32:20 +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 f894a35fc3 fix: preserve template provenance in hf main 2026-06-13 20:54:21 +08:00
wassname d91eda0228 eval: test engineered prefixes as templates 2026-06-13 20:43:44 +08:00
wassname 671c6258ce docs: include engineered baseline in scoreboard 2026-06-13 20:05:19 +08:00
wassname 15d7caa607 eval: judge identical controls uniformly 2026-06-13 20:00:49 +08:00
wassname 45c0f24022 eval: clean axes and audit persona leakage 2026-06-13 19:46:24 +08:00
wassname 562c8fd0f0 docs: keep generated stats out of data 2026-06-13 19:12:24 +08:00
wassname 8dbc02066b eval: rerun dual judges and refresh results 2026-06-13 19:12:24 +08:00
wassname e2546fe0ab eval: refine judge rubric and README baselines 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 f55ba7576f misc 2026-06-13 17:36:16 +08:00
wassname 849b1de0b1 clarify persona template scoring 2026-06-13 15:28:53 +08:00
wassname 5b92bdf7a7 expand confound audit docs 2026-06-13 14:43:03 +08:00
wassname ae3fc096d7 add source urls and confound audits 2026-06-13 14:39:45 +08:00
wassname de071e79ca use normalized score components 2026-06-13 14:34:02 +08:00
wassname bce30daee9 make main dataset table human-facing 2026-06-13 14:28:10 +08:00
wassname 1461e930e5 simplify public readme 2026-06-13 14:23:47 +08:00
wassname 6a19b65e49 add clean score tables 2026-06-13 14:05:26 +08:00