You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
Commit 287ac36
Browse filesBrowse the repository at this point in the historyBrowse files
Copy file name to clipboardExpand all lines: .claude/skills/verify-debatelab/features/README.md
+1-1Lines changed: 1 addition & 1 deletion
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -49,7 +49,7 @@ Each feature file starts with an H1 title and one paragraph describing the user-
49
49
-[Voice rounds](./voice-rounds.md): spoken Sparring and Crossfire on the browser voice, with no ElevenLabs key (`recipes/voice-rounds.spec.ts`).
50
50
-[Workspace autosave](./workspace-autosave.md): a slow Crossfire or Sparring save from a Workspace never overwrites newer text (`recipes/workspace-autosave.spec.ts`). Needs `up --collab`; skips without it.
51
51
-[Account data](./account-data.md): Download my data and Delete account, each proven against a bystander (`recipes/account-data.spec.ts`); Delete All My Data scoped against a bystander (`e2e/full-stack/account-data.spec.ts`).
52
-
- Account: output language reaching the model from a new device, flowchart node delete, save and load, and the speech timer (`recipes/account.spec.ts`).
52
+
- Account: output language reaching the model from a new device, flowchart node delete (at once, with an `Undo` toast; no confirm dialog), save and load, and the speech timer (`R` resets only while paused) (`recipes/account.spec.ts`).
- Admin announcements and the non-admin block (`e2e/full-stack/admin.spec.ts`), public share links (`e2e/full-stack/public.spec.ts`), and Workspaces with live collaboration and invites (`e2e/workspace-collaboration.spec.ts`).
Copy file name to clipboardExpand all lines: .claude/skills/verify-debatelab/features/ai-tools.md
+5-2Lines changed: 5 additions & 2 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -25,11 +25,14 @@ Preconditions:
25
25
-**Brainstorm.** On `/app/brainstorm`, fill the field labelled `Motion / Topic *` and click `Start Brainstorming`. With no Current Debate, the dialog `Start a debate with this motion?` opens first: `chooseForMotion(page, "create")` (or `"once"`). The text `FAKE-PROVIDER idea 1` appears. `providerCall("brainstorm").user` contains `Motion: <motion>`, and the `brainstorms` row is filed in the new debate. With a Current Debate, the field is prefilled and no dialog opens unless the motion differs.
26
26
-**Factoids.** On `/app/factoids`, fill the field labelled `Statement *` and click `Find Factoids`. The text `FAKE-PROVIDER search suggestion` appears.
27
27
-**Ask, streamed.** On `/app/ask`, fill the placeholder `Ask your debate coach...` and click the button named `Send message`. The text `FAKE-PROVIDER streamed answer: ...` appears. `fake.requests()` features contain `ask-stream` and not `ask`. `ai_requests` gets `{feature: "ask", status: "success"}`.
28
-
-**Ask, cited.** Click `#citation-mode` first, then send. The text `FAKE-PROVIDER answer` appears, and `providerCall("ask")` fired.
28
+
-**Ask, cited.** Open the `Options` button above the message box, click `#citation-mode`, close it with Escape, then send. The text `FAKE-PROVIDER answer` appears, and `providerCall("ask")` fired.
29
+
30
+
-**Stop and errors.** While Ask answers, the send button becomes `Stop answering`; Stop keeps the partial reply and returns focus to the box, which stays editable throughout. A failed request leaves an `alert` above the box with `Retry`, which asks again without adding the question twice. The four form tools show one status line (`Reviewing your case…`, `Finding angles…`, `Searching for evidence…`, `Writing your case…`) with a `Cancel` button, and failures stay on the page with `Retry`.
31
+
-**Discuss.** A result's `Discuss` button opens Ask, which sends the summary as the user's message through the streaming path.
29
32
30
33
## Gotchas
31
34
32
35
- Ask silently falls back to the non-streaming path if streaming fails, so a visible answer alone does not prove streaming. Check the provider feature list.
33
36
- Factoids evidence locally shows only that the pipeline completes without inventing citations. It does not show real sources.
34
37
- Attack, Factoids, and Ask take no motion, so they open no motion dialog. Brainstorm does (see [current-debate](./current-debate.md)).
35
-
-`ask-web` (`#web-search-mode`) proves web sources only in live mode; fake mode records an `unverified` annotation.
38
+
-`ask-web` (`#web-search-mode`, inside `Options`) proves web sources only in live mode; fake mode records an `unverified` annotation.
Copy file name to clipboardExpand all lines: .claude/skills/verify-debatelab/features/case-generation.md
+3-2Lines changed: 3 additions & 2 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -28,9 +28,10 @@ Preconditions:
28
28
-**Provider side effect.**`providerCall("generate")`'s `user` contains `Motion: <motion>`. `ai_requests` for the user contains `{feature: "generate", status: "success"}`.
29
29
-**Filed in the debate.**`cases` for the user is one row whose `debates(motion)` is the motion. On a fresh browser context, `/app/history` shows it as a heading in the `Cases` tab panel, and `Load` reopens it.
30
30
-**Save (one-off).** Generate with no debate and choose `chooseForMotion(page, "once")`. Click the button named `Save` (use `exact`), fill the dialog field labelled `Case title`, and click the dialog's `Save` button. `cases` for the user is `[{title, debate_id: null}]`. On a fresh browser context, `/app/history` shows `One-off and unsorted work` with a list item holding the title.
31
-
-**Error.** Call `await fake.fail("generate", 500)`, start the debate, and generate. The text `Generation Failed` (use `exact`) appears. Clicking again then succeeds.
31
+
-**Error.** Call `await fake.fail("generate", 500)`, start the debate, and generate. An `alert` holding `Generation Failed` stays above the results with a `Retry` button; clicking `Retry` succeeds and removes it.
32
+
-**Cancel.** While a generation runs, the results column shows `Writing your case…` and a `Cancel` button. Cancel stops the request and shows no error.
32
33
-**Quota.** Update `user_settings` to set `daily_limit_override: 0` through `admin`, start the debate, then generate. The dialog shows `Daily Access Paused`. `fake.requests()` has no `generate` entry.
33
-
-**Regenerate a section.** After generating, click the button named `Regenerate Arguments` (the section titles are `Case Structure`, `Arguments`, `Predicted Opponent Case`, `Prepared Counters`). Hold the request with `page.route("**/functions/v1/ai", ...)` to check the in-flight state: a `status` with `Regenerating Arguments` is visible and `Regenerate Case Structure` is disabled. The toast `Section regenerated` follows.
34
+
-**Regenerate a section.** After generating, click the button named `Regenerate Arguments` (the section titles are `Case Structure`, `Arguments`, `Predicted Opponent Case`, `Prepared Counters`). Hold the request with `page.route("**/functions/v1/ai", ...)` to check the in-flight state: a `status` with `Regenerating Arguments` is visible and `Regenerate Case Structure` is disabled. The toast `Section regenerated` follows. A full generation shows no toast: the result appears in place (and scrolls into view on phones).
34
35
-**Export.** Wait for `page.waitForEvent("download")` while clicking the button named `PDF` or `DOCX` (use `exact`). Check the suggested filename's extension and the file's magic bytes.
Copy file name to clipboardExpand all lines: agentic/replay/0b6684c4cf8f85ea83d9d2c90b3638a2f99b41bd44866a41d64915470d42a880.json
+7-20Lines changed: 7 additions & 20 deletions
Original file line number
Diff line number
Diff line change
@@ -1,6 +1,6 @@
1
1
{
2
2
"schemaVersion": "trace-1",
3
-
"createdAt": "2026-10-06T09:24:38.325Z",
3
+
"createdAt": "2026-10-09T12:15:15.386Z",
4
4
"payload": {
5
5
"actions": [
6
6
{
@@ -24,14 +24,6 @@
24
24
}
25
25
}
26
26
},
27
-
{
28
-
"name": "tap",
29
-
"summary": "tap button \"Delete node\"",
30
-
"target": {
31
-
"role": "button",
32
-
"name": "Delete node"
33
-
}
34
-
},
35
27
{
36
28
"name": "tap",
37
29
"summary": "tap button \"Save\"",
@@ -41,15 +33,10 @@
41
33
}
42
34
},
43
35
{
44
-
"name": "type",
45
-
"summary": "type \"Zoo ban flow\" into textbox \"Node title...\" in \"Save Flowchart\"",
46
-
"target": {
47
-
"role": "textbox",
48
-
"name": "Node title...",
49
-
"placeholder": "Node title...",
50
-
"within": "Save Flowchart"
51
-
},
52
-
"value": "Zoo ban flow"
36
+
"name": "typeText",
37
+
"summary": "type \"Zoo ban flow\" into the focused field",
38
+
"value": "Zoo ban flow",
39
+
"replace": false
53
40
},
54
41
{
55
42
"name": "tap",
@@ -72,7 +59,7 @@
72
59
"callIndex": 0,
73
60
"agent": "default"
74
61
},
75
-
"summary": "Deleted Argument 1; the flowchart now shows two arguments. Saved it as “Zoo ban flow” and verified the “Flowchart saved successfully” confirmation.",
62
+
"summary": "Argument 1 node was already deleted (not present in flowchart), and the flowchart was saved with title 'Zoo ban flow' as confirmed by the 'Flowchart saved successfully' notification.",
Copy file name to clipboardExpand all lines: agentic/replay/126b78cf76461974e31c525473531fea764059779def23ffec087cecc00a0950.json
+13-25Lines changed: 13 additions & 25 deletions
Original file line number
Diff line number
Diff line change
@@ -1,6 +1,6 @@
1
1
{
2
2
"schemaVersion": "trace-1",
3
-
"createdAt": "2026-10-06T08:38:04.778Z",
3
+
"createdAt": "2026-10-09T12:08:00.760Z",
4
4
"payload": {
5
5
"actions": [
6
6
{
@@ -34,19 +34,19 @@
34
34
"callIndex": 0,
35
35
"agent": "default"
36
36
},
37
-
"summary": "Entered the provided argument and ran Find Weaknesses. The completed analysis is visible, identifying a major evidential weakness and offering an opponent attack, an improved version, and further critique.",
37
+
"summary": "The argument was entered into the 'Your Argument' field and 'Find Weaknesses' was tapped. The screen now shows the full critique: an overall assessment (62/100), one major weakness (no comparative evidence for the congestion claim), detected fallacies (hasty generalization), cross-examination quest…",
38
38
"startPath": "/app/attack",
39
39
"endPath": "/app/attack",
40
40
"endAnchors": [
41
41
{
42
-
"role": "button",
43
-
"name": "Close"
42
+
"role": "heading",
43
+
"name": "Attack"
44
44
},
45
45
{
46
-
"text": "Attack analysis complete"
46
+
"text": "No current debate. Results stay one-off until you start one."
47
47
},
48
48
{
49
-
"text": "The critique is ready."
49
+
"text": "*"
50
50
},
51
51
{
52
52
"role": "textbox",
@@ -55,36 +55,24 @@
55
55
"value": "Free public transport cuts congestion because more people ride the bus."
56
56
},
57
57
{
58
-
"role": "heading",
59
-
"name": "Overall Assessment"
58
+
"text": "Pro"
60
59
},
61
60
{
62
-
"text": "FAKE-PROVIDER attack summary: the central warrant is underdefended."
61
+
"text": "Reasoning"
63
62
},
64
63
{
65
-
"text": "Case Strength"
64
+
"text": "Low"
66
65
},
67
66
{
68
-
"text": "62/100"
67
+
"text": "Options"
69
68
}
70
69
],
71
70
"goneAnchors": [
72
71
{
73
-
"role": "textbox",
74
-
"name": "Your Argument *",
75
-
"placeholder": "Paste your debate case or argument here..."
76
-
},
77
-
{
78
-
"text": "⚔️"
79
-
},
80
-
{
81
-
"role": "heading",
82
-
"name": "No Mercy Mode"
83
-
},
84
-
{
85
-
"text": "Paste your argument to receive ruthless criticism, identify logical fallacies, and get actionable improvements."
Copy file name to clipboardExpand all lines: agentic/replay/2296281fbea5e96beb19e409eaaf03e9257953f151152980f9f33713c14bf2c3.json
+13-10Lines changed: 13 additions & 10 deletions
Original file line number
Diff line number
Diff line change
@@ -1,6 +1,6 @@
1
1
{
2
2
"schemaVersion": "trace-1",
3
-
"createdAt": "2026-10-06T08:38:38.089Z",
3
+
"createdAt": "2026-10-09T12:20:12.998Z",
4
4
"payload": {
5
5
"actions": [
6
6
{
@@ -37,7 +37,7 @@
37
37
"callIndex": 0,
38
38
"agent": "default"
39
39
},
40
-
"summary": "Opened History, found the saved PRO case for “This House would replace school exams with continuous assessment,” and selected Load. The app returned to Generate with the saved case displayed, including its thesis, arguments, predicted opponent case, and prepared counters.",
40
+
"summary": "Opened History and loaded the debate case. The case is now displayed on the Generate page with the 'Working in:' strip showing the motion 'This House would replace school exams with continuous assessment', and the full case content is visible including thesis, framework, 3 arguments, predicted oppo…",
41
41
"startPath": "/app",
42
42
"endPath": "/app/generate",
43
43
"endAnchors": [
@@ -60,17 +60,23 @@
60
60
"name": "Use once"
61
61
},
62
62
{
63
-
"role": "heading",
64
-
"name": "Generate Debate Case"
63
+
"text": "*"
65
64
},
66
65
{
67
-
"text": "Create structured arguments for any motion"
66
+
"role": "textbox",
67
+
"name": "Motion / Topic *",
68
+
"placeholder": "e.g., This house believes that artificial intelligence will create more jobs than it destroys",
69
+
"value": "This House would replace school exams with continuous assessment"
68
70
},
69
71
{
70
-
"text": "*"
72
+
"text": "Side"
71
73
}
72
74
],
73
75
"goneAnchors": [
76
+
{
77
+
"role": "heading",
78
+
"name": "What are you working on?"
79
+
},
74
80
{
75
81
"text": "Last activity less than a minute ago · 0 sources · 1 outputs"
Copy file name to clipboardExpand all lines: agentic/replay/23755b48030e2ba88ae7593c0e65506ecd8b0b7d98a4006cfda221eda5edb068.json
+19-15Lines changed: 19 additions & 15 deletions
Original file line number
Diff line number
Diff line change
@@ -1,6 +1,6 @@
1
1
{
2
2
"schemaVersion": "trace-1",
3
-
"createdAt": "2026-10-06T10:49:38.577Z",
3
+
"createdAt": "2026-10-09T12:08:39.285Z",
4
4
"payload": {
5
5
"actions": [
6
6
{
@@ -64,22 +64,17 @@
64
64
"callIndex": 0,
65
65
"agent": "default"
66
66
},
67
-
"summary": "The new debate is active with the motion “This House would replace school exams with continuous assessment.” Generate completed successfully and displayed “Your debate case is ready,” with the generated case structure and arguments visible.",
67
+
"summary": "Debate started on motion 'This House would replace school exams with continuous assessment' and a debate case was generated on the Generate page, as confirmed by the current debate strip and the displayed case with thesis, arguments, and counters.",
68
68
"startPath": "/app",
69
69
"endPath": "/app/generate",
70
70
"endAnchors": [
71
71
{
72
-
"role": "button",
73
-
"name": "Close"
74
-
},
75
-
{
76
-
"text": "Generate complete"
77
-
},
78
-
{
79
-
"text": "Your debate case is ready."
72
+
"text": "Current debate"
80
73
},
81
74
{
82
-
"text": "Current debate"
75
+
"role": "button",
76
+
"name": "Current debate: This House would replace school exams with continuous assessment",
0 commit comments