A

Commit History

  1. End Session gates: turn off end_session_gate (probe-count/20-min condition no longer blocks); demote revise_check to a one-shot warning (first click below the ~10% revision threshold shows the revision modal and blocks; every later click finalises regardless). Running

    Verified signature
    34ef029
  2. Update config.yaml

    Verified signature
    9c8989b

  1. Fix auto-restart watchdog (strptime parsing log filenames with new _<sessioncode> suffix), SyntaxWarning (\s in JS-inside-Python string), and pin python_version to 3.11 (avoids Python 3.14 asyncio cleanup noise with Gradio 6.x).

    Verified signature
    3c467b4
  2. Fix auto-restart watchdog strptime: log filenames now include _<sessioncode> suffix; parse only the YYYYMMDD_HHMMSS prefix so idle check succeeds.

    Verified signature
    fd3bf73

  1. explain-rationale Path 3: rewrite triggers to be semantic intent (not keyword phrase match) - illustrative phrases marked non-exhaustive, intent test added

    Verified signature
    85f1e6c
  2. explain-rationale: add Path 3 (frame-rejection / rhetorical pushback) - fires on single-turn pushback (Why are you focused on X) or accumulated 2+ engaging-default with gap-denial pattern; verified against 67404 T3 + 93400 T5/T7

    Verified signature
    cf41820

  1. revise-gate modal: reword body to "Please revise at least 10% ... before submitting your final version."

    Verified signature
    2e69ce8
  2. revise-gate modal: single-line body, no title, button -> Go back to argument

    Verified signature
    247e731
  3. revise-gate modal: quantified 90%/10% wording; Gate 1 timeout 20min -> 15min

    Verified signature
    8ad33ca

  1. app.py: simplify gr.Blocks title to single letter (A/B) for consistency with C

    Verified signature
    e10e5a0
  2. logger.py + app.py: batch-checkpoint refactor (push only on per-turn / submit_initial / recover_session / end_session_confirm).⁠

    Verified signature
    3d93dc5
  3. logger.py: batch-checkpoint refactor (see app.py commit for details)

    Verified signature
    2fbfc5e

  1. switch hf_dataset to AE-Talk-bot/log-A-Jun-18-2026 (split per-condition to relieve HF commit rate limit)

    Verified signature
    2106294
  2. recovery: rename localStorage keys to current condition names + JS namespace __SOC_RECOVERY -> __RECOVERY (clean up no_ai / socratic_frame legacy)

    Verified signature
    b9acdc0
  3. key-pool rotation: per-session OpenAI key assignment from OPENAI_KEY_01..10 (core/__init__.py)

    Verified signature
    28b9cc6
  4. key-pool rotation: per-session OpenAI key assignment from OPENAI_KEY_01..10 (core/logger.py)

    Verified signature
    bf4cb2e
  5. key-pool rotation: per-session OpenAI key assignment from OPENAI_KEY_01..10 (core/orchestrator.py)

    Verified signature
    af6a95d
  6. key-pool rotation: per-session OpenAI key assignment from OPENAI_KEY_01..10 (core/perfect_answer.py)

    Verified signature
    ae2eb77
  7. key-pool rotation: per-session OpenAI key assignment from OPENAI_KEY_01..10 (core/main_agent.py)

    Verified signature
    289ec6e
  8. key-pool rotation: per-session OpenAI key assignment from OPENAI_KEY_01..10 (core/manager_agent.py)

    Verified signature
    8d6d054
  9. key-pool rotation: per-session OpenAI key assignment from OPENAI_KEY_01..10 (core/config_loader.py)

    Verified signature
    7575444
  10. key-pool rotation: per-session OpenAI key assignment from OPENAI_KEY_01..10 (app.py)

    Verified signature
    a7d00d8
  11. main: add 2 scratch verify fields (msg_break + on_the_right_count) on transition-due to nudge bot to check Block 1 rendering

    Verified signature
    6ad0f54
  12. explain-rationale fires at most once per probe; continued confusion/fatigue after ER -> Path B with revision rec; Path B Block 1 has voice variation by trigger

    Verified signature
    cfeb954
  13. main_prompt: explain-rationale Block 2 must reference the first-pending Q on the CURRENT probe (banned overall question phrasing)

    Verified signature
    755db9f
  14. manager_prompt: fix explain-rationale Block 2 anchor (no overall question), add Choice-prompt BACK pick + KEEP-DIGGING pick classification rules

    Verified signature
    6be3d77
  15. main_prompt: add user-asks-off-topic to enum + soft-return section; update explain-rationale Block 2 (choice prompt vs soft return)

    Verified signature
    8782289
  16. manager_prompt: add user-asks-off-topic, anchor-rewrite rule, look-back/no-regression rules for needs-clarification, deeper-pass explain-rationale on continued sparse confusion

    Verified signature
    7d7bf7e
  17. Add user-asks-revision

    Verified signature
    183443c
  18. Add user-asks-revision

    Verified signature
    ce2ad2d

  1. switch to log-Jun-17-2026 dataset; rename mode_prefixes (B-non-ca->B-ans, C-non-ca->C-non)

    Verified signature
    b21f21e
  2. walkthrough: MSG2/MSG3 use AI assistant; 5 new tutorial images

    Verified signature
    ffb9838
  3. walkthrough: MSG2/MSG3 use AI assistant; 5 new tutorial images

    Verified signature
    47ba854
  4. walkthrough: MSG2/MSG3 use AI assistant; 5 new tutorial images

    Verified signature
    2fb6f7e
  5. walkthrough: MSG2/MSG3 use AI assistant; 5 new tutorial images

    Verified signature
    47214aa
  6. walkthrough: MSG2/MSG3 use AI assistant; 5 new tutorial images

    Verified signature
    cba07de
  7. walkthrough: MSG2/MSG3 use AI assistant; 5 new tutorial images

    Verified signature
    621918c

  1. Rename condition + mode_prefix to *-ca to match local folder rename. hf_dataset unchanged (legacy data stays in same dataset under new subfolder).

    Verified signature
    ab54556

  1. Auto-grow chat input: lines=1, max_lines=6; CSS splits chat-input from buttons (textarea grows 42-160px; buttons stay 42px); chat-row aligns flex-end so Send stays at the bottom of the input.

    Verified signature
    6925d99

  1. case + placeholder: 'chatbot' -> 'AI assistant' to match condition framing

    Verified signature
    95b1b9d
  2. case + placeholder: 'chatbot' -> 'AI assistant' to match condition framing

    Verified signature
    e4ff0e3
  3. manager_prompt: 4 new turn types + 2-pending count + 'next' hint surface⁠

    Verified signature
    6f7f496

  1. Rename page title to "A" for A/B blinding

    Verified signature
    c3f5236
  2. Update config.yaml

    Verified signature
    94ec300
  3. Update README.md

    Verified signature
    e7a506d
  4. Update README.md

    Verified signature
    bea7c21
  5. Update README.md

    Verified signature
    609746b
  6. Point A at new dataset (log-Jun-10-2026) with mode_prefix=A-soc

    Verified signature
    22bc0a1
  7. STEP 1 framework detection: mixed-drafts rule refined. Previous version of new STEP 1 hard-defaulted mixed drafts to consequence, which misclassified Kantian-explicit arguments that listed multiple harms before naming agency as the core (consistency went down from 7/9 to 3/5 on the pilot Kantian argument). Refined rule: when 2+ frameworks are load-bearing, pick the participant's CORE argument by (1) explicit emphasis markers like 'the most important reason' / 'the thing that is most ethically questionable is X' / 'perhaps for me' (highest priority), (2) argumentative weight (the most-defended claim), (3) 'remove the lens' decisive test. Consequence is only a last-resort default for genuinely balanced drafts with no detectable core. Re-tested: 5/5 Kantian argument now correctly → duty_rights (up from 3/5).

    Verified signature
    7c4aa67
  8. STEP 1 framework detection rewritten from keyword-matching to reasoning-mode diagnosis. Previous prompt used indicator keyword lists ('right to X', 'consent', 'privacy' → duty_rights, etc.), which would misclassify drafts that mention a topic but argue through a different framework (e.g., privacy mentioned but load-bearing logic is an outcome chain). New STEP 1 asks the LLM to (a) identify the load-bearing reasoning move, (b) ask 3 diagnostic questions in order (predicted outcomes / principles regardless of outcomes / character of an actor), (c) apply a topic-vs-load decoupling table, (d) verify via 'remove the lens' test. Mixed drafts are hard-defaulted to consequence (not soft tiebreak). Regression tested against 1 synthetic privacy+consequence case + 4 pilot consequence+privacy cases + 3 pilot duty_rights+privacy cases — 8/8 correct. Other downstream sections of perfect_answer_prompt.md (essay generation, discussion plan, hooks) unchanged.

    Verified signature
    b617402