B

Commit History

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).
662807d
verified

linxinhua commited on

Fix auto-restart watchdog strptime: log filenames now include _<sessioncode> suffix; parse only the YYYYMMDD_HHMMSS prefix so idle check succeeds.
739d992
verified

linxinhua commited on

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

linxinhua commited on

revise-gate modal: single-line body, no title, button -> Go back to argument
f3196ba
verified

linxinhua commited on

revise-gate modal: quantified 90%/10% wording
309ec26
verified

linxinhua commited on

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

linxinhua commited on

logger.py + app.py: batch-checkpoint refactor (same shape as soc-ca).
7a166f7
verified

linxinhua commited on

logger.py: batch-checkpoint refactor (see app.py commit for details)
7f552fa
verified

linxinhua commited on

switch hf_dataset to AE-Talk-bot/log-B-Jun-18-2026 (split per-condition to relieve HF commit rate limit)
f0afbbe
verified

linxinhua commited on

recovery: rename localStorage keys to current condition names + JS namespace __SOC_RECOVERY -> __RECOVERY (clean up no_ai / socratic_frame legacy)
24c2d48
verified

linxinhua commited on

key-pool rotation: per-session OpenAI key assignment from OPENAI_KEY_01..10 (core/__init__.py)
06671d5
verified

linxinhua commited on

key-pool rotation: per-session OpenAI key assignment from OPENAI_KEY_01..10 (core/logger.py)
1e08cf7
verified

linxinhua commited on

key-pool rotation: per-session OpenAI key assignment from OPENAI_KEY_01..10 (core/perfect_answer.py)
f044ccc
verified

linxinhua commited on

key-pool rotation: per-session OpenAI key assignment from OPENAI_KEY_01..10 (core/config_loader.py)
836ea29
verified

linxinhua commited on

key-pool rotation: per-session OpenAI key assignment from OPENAI_KEY_01..10 (app.py)
a022f28
verified

linxinhua commited on

switch to log-Jun-17-2026 + B-ans
38bb053
verified

linxinhua commited on

walkthrough: MSG2 new wording (AI assistant generated version + optional chat); 5 new tutorial images from ans-ca/
f20ce2e
verified

linxinhua commited on

walkthrough: MSG2 new wording (AI assistant generated version + optional chat); 5 new tutorial images from ans-ca/
d25ff66
verified

linxinhua commited on

walkthrough: MSG2 new wording (AI assistant generated version + optional chat); 5 new tutorial images from ans-ca/
cc20da6
verified

linxinhua commited on

walkthrough: MSG2 new wording (AI assistant generated version + optional chat); 5 new tutorial images from ans-ca/
ae49f04
verified

linxinhua commited on

walkthrough: MSG2 new wording (AI assistant generated version + optional chat); 5 new tutorial images from ans-ca/
5ca16ae
verified

linxinhua commited on

walkthrough: MSG2 new wording (AI assistant generated version + optional chat); 5 new tutorial images from ans-ca/
cfca241
verified

linxinhua commited on

INTRO_MESSAGE: bold 'Read it carefully ...' clause; merge optional-chat sentence; close-session paragraph kept separate
2814ba1
verified

linxinhua commited on

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

linxinhua commited on

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.
bacd4db
verified

linxinhua commited on

general_chat_prompt: strip to vanilla — just case + initial_argument + perfect_answer, no behavior steering
42d0f27
verified

linxinhua commited on

general_chat_prompt: drop defensive "do not reveal discussion plan / probe / framework" rule since none are provided to the bot
6c3fd4a
verified

linxinhua commited on

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).
760a1f1
verified

linxinhua commited on

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).
aaf68e2
verified

linxinhua commited on

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).
0f143c5
verified

linxinhua commited on

Fix broken patch: full app.py from local no_ai with title=B
5be0721
verified

linxinhua commited on

INTRO_MESSAGE: B condition reframed for AI-assistant essay + optional chat
2a71eae
verified

linxinhua commited on

case + placeholder: B condition reframed as 'AI assistant generates + optional chat'
6329f3e
verified

linxinhua commited on

case + placeholder: B condition reframed as 'AI assistant generates + optional chat'
2e4c509
verified

linxinhua commited on

Rename page title to "B" for A/B blinding
81fbf0f
verified

linxinhua commited on

Update config.yaml
b662ba9
verified

linxinhua commited on

Update README.md
0112eef
verified

linxinhua commited on

Update README.md
cdf0e41
verified

linxinhua commited on

Update README.md
dcb7f6b
verified

linxinhua commited on

Update README.md
b78cf46
verified

linxinhua commited on

Point B at new dataset (log-Jun-10-2026) with mode_prefix=B-non-ca
497315e
verified

linxinhua commited on

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.
1ce0e2b
verified

linxinhua commited on

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.
9fda70f
verified

linxinhua commited on

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).
81f0f87
verified

linxinhua commited on

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.
2cf117d
verified

linxinhua commited on

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.
6774e16
verified

linxinhua commited on

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.
2021c0b
verified

linxinhua commited on

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.
4f0339d
verified

linxinhua commited on

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.
d7c1b05
verified

linxinhua commited on

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.
417dc48
verified

linxinhua commited on