C

Commit History

  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). Running

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

    Verified signature
    f0e53d6

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

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

    Verified signature
    29c350b
  3. revise-gate modal: quantified 90%/10% wording

    Verified signature
    a68694b

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

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

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

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

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

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

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

    Verified signature
    ce3746d

  1. switch to log-Jun-17-2026 + C-non

    Verified signature
    e7e7053
  2. Update README.md

    Verified signature
    ccfcb84

  1. Initial deploy of C (non-ca): no post-essay chat. Stripped chat additions from answer-ca base.

    Verified signature
    0a1d57f
  2. 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
    a9c08ce

  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
    20986b6

  1. general_chat_prompt: strip to vanilla — just case + initial_argument + perfect_answer, no behavior steering

    Verified signature
    bf30a9b
  2. general_chat_prompt: drop defensive "do not reveal discussion plan / probe / framework" rule since none are provided to the bot

    Verified signature
    3b27385
  3. B condition: add post-essay general chat. After perfect_answer is shown, msg_input + send_btn become interactive; on_send builds messages from case + initial_argument + perfect_answer (NOT discussion_plan) and calls LLM. Logs each chat turn via SessionLogger.add_turn(manager_verdict=None).

    Verified signature
    3e182ec
  4. B condition: add post-essay general chat. After perfect_answer is shown, msg_input + send_btn become interactive; on_send builds messages from case + initial_argument + perfect_answer (NOT discussion_plan) and calls LLM. Logs each chat turn via SessionLogger.add_turn(manager_verdict=None).

    Verified signature
    ba91955
  5. B condition: add post-essay general chat. After perfect_answer is shown, msg_input + send_btn become interactive; on_send builds messages from case + initial_argument + perfect_answer (NOT discussion_plan) and calls LLM. Logs each chat turn via SessionLogger.add_turn(manager_verdict=None).

    Verified signature
    478f607
  6. INTRO_MESSAGE: B condition reframed for AI-assistant essay + optional chat

    Verified signature
    1476e93
  7. case + placeholder: B condition reframed as 'AI assistant generates + optional chat'

    Verified signature
    4734173
  8. case + placeholder: B condition reframed as 'AI assistant generates + optional chat'

    Verified signature
    44c251f

  1. STEP 1 framework detection: full reasoning-mode diagnosis with refined mixed-drafts rule. STEP 1 replaces keyword indicator lists with (a) identify load-bearing reasoning move, (b) 3 diagnostic questions in order (predicted outcomes / principles regardless of outcomes / character of an actor), (c) topic-vs-load decoupling table, (d) 'remove the lens' verification test. Mixed drafts rule: NOT a hard consequence default. Instead, pick the participant's CORE argument by explicit emphasis markers ('the most important reason' / 'perhaps for me' / 'the thing that is most ethically questionable is X') (highest priority), argumentative weight, then 'remove the lens' decisive test. Consequence is last-resort fallback only. Tested against pilot Kantian argument 5/5 correctly → duty_rights. Other downstream sections (essay, plan, hooks) unchanged.

    Verified signature
    1ce0e2b
  2. 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. 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 hard-default to consequence. Regression tested in socratic_frame (8/8 cases including 1 synthetic privacy+consequence, 4 pilot consequence+privacy, 3 pilot duty_rights+privacy). Other downstream sections (essay generation, discussion plan, hooks) unchanged.

    Verified signature
    9fda70f

  1. Session-recovery propagated from socratic: hidden gr.Textbox (#recovery-payload) + Gradio .then(js=...) chains write/clear localStorage; on_submit_initial / on_end_session yield JSON events on their CONFIRM yields. RECOVERY_HEAD adds modal styling + window.__SOC_RECOVERY helpers; storage key no_ai_session_v1; touch-observer adapted (no chat input — watches chatbot clicks + arg_input edits). on_recover_session rebuilds chatbot as [case_display, user_arg, INTRO_MESSAGE, perfect_answer.text] (mirrors on_submit_initial yield 2) and re-activates the 60s snapshot_timer. SessionLogger.from_dict restores dominant_framework (no_ai's logger lacks argument_submitted_at, so that field is skipped).

    Verified signature
    81f0f87

  1. UI parity with socratic/socratic-frame: (1) hide Gradio Chatbot top chrome via show_label=False + CSS for share/clear/delete/trash; (2) strip the '# Case: ...' H1 from the initial chatbot message via display-only CASE_TEXT_DISPLAY; (3) hide the left yellow feedback-hint column (guide-col visible=False) so chatbot expands left, and drop the bottom-row mirror column to keep action buttons aligned under right-col.

    Verified signature
    2cf117d
  2. UI parity with socratic/socratic-frame: (1) hide Gradio Chatbot top chrome via show_label=False + CSS for share/clear/delete/trash; (2) strip the '# Case: ...' H1 from the initial chatbot message via display-only CASE_TEXT_DISPLAY; (3) hide the left yellow feedback-hint column (guide-col visible=False) so chatbot expands left, and drop the bottom-row mirror column to keep action buttons aligned under right-col.

    Verified signature
    6774e16
  3. UI parity with socratic/socratic-frame: (1) hide Gradio Chatbot top chrome via show_label=False + CSS for share/clear/delete/trash; (2) strip the '# Case: ...' H1 from the initial chatbot message via display-only CASE_TEXT_DISPLAY; (3) hide the left yellow feedback-hint column (guide-col visible=False) so chatbot expands left, and drop the bottom-row mirror column to keep action buttons aligned under right-col.

    Verified signature
    2021c0b
  4. UI parity with socratic/socratic-frame: (1) hide Gradio Chatbot top chrome via show_label=False + CSS for share/clear/delete/trash; (2) strip the '# Case: ...' H1 from the initial chatbot message via display-only CASE_TEXT_DISPLAY; (3) hide the left yellow feedback-hint column (guide-col visible=False) so chatbot expands left, and drop the bottom-row mirror column to keep action buttons aligned under right-col.

    Verified signature
    4f0339d
  5. UI parity with socratic/socratic-frame: (1) hide Gradio Chatbot top chrome via show_label=False + CSS for share/clear/delete/trash; (2) strip the '# Case: ...' H1 from the initial chatbot message via display-only CASE_TEXT_DISPLAY; (3) hide the left yellow feedback-hint column (guide-col visible=False) so chatbot expands left, and drop the bottom-row mirror column to keep action buttons aligned under right-col.

    Verified signature
    d7c1b05

  1. UI parity with socratic/socratic-frame: (1) hide Gradio Chatbot top chrome via show_label=False + CSS for share/clear/delete/trash; (2) strip the '# Case: ...' H1 from the initial chatbot message via display-only CASE_TEXT_DISPLAY; (3) hide the left yellow feedback-hint column (guide-col visible=False) so chatbot expands left, and drop the bottom-row mirror column to keep action buttons aligned under right-col.

    Verified signature
    417dc48

  1. Record walkthrough_started_at client-side, pass to on_submit_initial via js= wrapper at submit

    Verified signature
    02dcc00
  2. Move walkthrough_started_at + start_session to walkthrough END Start click (with JS retry)

    Verified signature
    9387dbd
  3. Format walkthrough_started_at + argument_submitted_at as ISO 8601 in payload

    Verified signature
    a25ff64
  4. Add walkthrough_started_at field to logger (top of payload, preserved across start_session)

    Verified signature
    152dcfe
  5. Record walkthrough_started_at on Start walkthrough click (first click only)

    Verified signature
    278e578
  6. Bump chatbot to 65vh and argument textbox to 55vh

    Verified signature
    fd7055a
  7. Add welcome overlay before walkthrough; make image walkthrough full-screen; rename Done -> Start

    Verified signature
    fa60166
  8. Tutorial image 04.webp

    Verified signature
    3a10908
  9. Tutorial image 03.webp

    Verified signature
    51aad86
  10. Tutorial image 02.webp

    Verified signature
    5ff206a
  11. Tutorial image 01.webp

    Verified signature
    8887b8f
  12. Remove old PNG tutorial samples

    Verified signature
    05d570b
  13. Remove old PNG tutorial samples

    Verified signature
    d2dd89f
  14. Remove old PNG tutorial samples

    Verified signature
    704905b

  1. Add tutorial image 03.png

    Verified signature
    f156b5a
  2. Add tutorial image 02.png

    Verified signature
    96fb606