@researai/deepscientist 1.5.0 → 1.5.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (163) hide show
  1. package/AGENTS.md +26 -0
  2. package/README.md +19 -179
  3. package/assets/connectors/lingzhu/openclaw-bridge/README.md +124 -0
  4. package/assets/connectors/lingzhu/openclaw-bridge/index.ts +162 -0
  5. package/assets/connectors/lingzhu/openclaw-bridge/openclaw.plugin.json +145 -0
  6. package/assets/connectors/lingzhu/openclaw-bridge/package.json +35 -0
  7. package/assets/connectors/lingzhu/openclaw-bridge/src/cli.ts +180 -0
  8. package/assets/connectors/lingzhu/openclaw-bridge/src/config.ts +196 -0
  9. package/assets/connectors/lingzhu/openclaw-bridge/src/debug-log.ts +111 -0
  10. package/assets/connectors/lingzhu/openclaw-bridge/src/events.ts +4 -0
  11. package/assets/connectors/lingzhu/openclaw-bridge/src/http-handler.ts +1133 -0
  12. package/assets/connectors/lingzhu/openclaw-bridge/src/image-cache.ts +75 -0
  13. package/assets/connectors/lingzhu/openclaw-bridge/src/lingzhu-tools.ts +246 -0
  14. package/assets/connectors/lingzhu/openclaw-bridge/src/transform.ts +541 -0
  15. package/assets/connectors/lingzhu/openclaw-bridge/src/types.ts +131 -0
  16. package/assets/connectors/lingzhu/openclaw-bridge/tsconfig.json +14 -0
  17. package/assets/connectors/lingzhu/openclaw.lingzhu.config.template.json +39 -0
  18. package/bin/ds.js +233 -53
  19. package/docs/en/00_QUICK_START.md +134 -0
  20. package/docs/en/01_SETTINGS_REFERENCE.md +1104 -0
  21. package/docs/en/02_START_RESEARCH_GUIDE.md +404 -0
  22. package/docs/en/03_QQ_CONNECTOR_GUIDE.md +325 -0
  23. package/docs/en/04_LINGZHU_CONNECTOR_GUIDE.md +216 -0
  24. package/docs/en/05_TUI_GUIDE.md +141 -0
  25. package/docs/en/06_RUNTIME_AND_CANVAS.md +679 -0
  26. package/docs/en/07_MEMORY_AND_MCP.md +253 -0
  27. package/docs/en/08_FIGURE_STYLE_GUIDE.md +97 -0
  28. package/docs/en/09_DOCTOR.md +108 -0
  29. package/docs/en/90_ARCHITECTURE.md +245 -0
  30. package/docs/en/91_DEVELOPMENT.md +195 -0
  31. package/docs/en/99_ACKNOWLEDGEMENTS.md +29 -0
  32. package/docs/zh/00_QUICK_START.md +134 -0
  33. package/docs/zh/01_SETTINGS_REFERENCE.md +1137 -0
  34. package/docs/zh/02_START_RESEARCH_GUIDE.md +414 -0
  35. package/docs/zh/03_QQ_CONNECTOR_GUIDE.md +324 -0
  36. package/docs/zh/04_LINGZHU_CONNECTOR_GUIDE.md +230 -0
  37. package/docs/zh/05_TUI_GUIDE.md +128 -0
  38. package/docs/zh/06_RUNTIME_AND_CANVAS.md +271 -0
  39. package/docs/zh/07_MEMORY_AND_MCP.md +235 -0
  40. package/docs/zh/08_FIGURE_STYLE_GUIDE.md +97 -0
  41. package/docs/zh/09_DOCTOR.md +112 -0
  42. package/docs/zh/99_ACKNOWLEDGEMENTS.md +29 -0
  43. package/install.sh +32 -8
  44. package/package.json +4 -2
  45. package/pyproject.toml +1 -1
  46. package/src/deepscientist/artifact/guidance.py +9 -2
  47. package/src/deepscientist/artifact/service.py +482 -22
  48. package/src/deepscientist/bash_exec/monitor.py +27 -5
  49. package/src/deepscientist/bash_exec/runtime.py +639 -0
  50. package/src/deepscientist/bash_exec/service.py +99 -16
  51. package/src/deepscientist/bridges/base.py +3 -0
  52. package/src/deepscientist/bridges/connectors.py +292 -13
  53. package/src/deepscientist/channels/qq.py +19 -2
  54. package/src/deepscientist/channels/relay.py +1 -0
  55. package/src/deepscientist/cli.py +32 -25
  56. package/src/deepscientist/config/models.py +28 -2
  57. package/src/deepscientist/config/service.py +201 -6
  58. package/src/deepscientist/connector_runtime.py +2 -0
  59. package/src/deepscientist/daemon/api/handlers.py +50 -5
  60. package/src/deepscientist/daemon/api/router.py +1 -0
  61. package/src/deepscientist/daemon/app.py +442 -15
  62. package/src/deepscientist/doctor.py +444 -0
  63. package/src/deepscientist/home.py +1 -0
  64. package/src/deepscientist/latex_runtime.py +17 -4
  65. package/src/deepscientist/lingzhu_support.py +182 -0
  66. package/src/deepscientist/mcp/server.py +49 -2
  67. package/src/deepscientist/prompts/builder.py +181 -58
  68. package/src/deepscientist/quest/layout.py +1 -0
  69. package/src/deepscientist/quest/service.py +63 -2
  70. package/src/deepscientist/quest/stage_views.py +19 -1
  71. package/src/deepscientist/runtime_tools/__init__.py +16 -0
  72. package/src/deepscientist/runtime_tools/builtins.py +19 -0
  73. package/src/deepscientist/runtime_tools/models.py +29 -0
  74. package/src/deepscientist/runtime_tools/registry.py +40 -0
  75. package/src/deepscientist/runtime_tools/service.py +59 -0
  76. package/src/deepscientist/runtime_tools/tinytex.py +25 -0
  77. package/src/deepscientist/tinytex.py +276 -0
  78. package/src/prompts/connectors/lingzhu.md +12 -0
  79. package/src/prompts/connectors/qq.md +121 -0
  80. package/src/prompts/system.md +177 -33
  81. package/src/skills/analysis-campaign/SKILL.md +22 -6
  82. package/src/skills/baseline/SKILL.md +5 -4
  83. package/src/skills/decision/SKILL.md +4 -3
  84. package/src/skills/experiment/SKILL.md +5 -4
  85. package/src/skills/finalize/SKILL.md +5 -4
  86. package/src/skills/idea/SKILL.md +5 -4
  87. package/src/skills/intake-audit/SKILL.md +277 -0
  88. package/src/skills/intake-audit/references/state-audit-template.md +41 -0
  89. package/src/skills/rebuttal/SKILL.md +407 -0
  90. package/src/skills/rebuttal/references/action-plan-template.md +63 -0
  91. package/src/skills/rebuttal/references/evidence-update-template.md +30 -0
  92. package/src/skills/rebuttal/references/response-letter-template.md +113 -0
  93. package/src/skills/rebuttal/references/review-matrix-template.md +55 -0
  94. package/src/skills/review/SKILL.md +293 -0
  95. package/src/skills/review/references/experiment-todo-template.md +29 -0
  96. package/src/skills/review/references/review-report-template.md +83 -0
  97. package/src/skills/review/references/revision-log-template.md +40 -0
  98. package/src/skills/scout/SKILL.md +5 -4
  99. package/src/skills/write/SKILL.md +7 -3
  100. package/src/tui/dist/components/WelcomePanel.js +17 -43
  101. package/src/tui/dist/components/messages/BashExecOperationMessage.js +3 -2
  102. package/src/tui/package.json +1 -1
  103. package/src/ui/dist/assets/{AiManusChatView-7v-dHngU.js → AiManusChatView-w5lF2Ttt.js} +109 -575
  104. package/src/ui/dist/assets/{AnalysisPlugin-B_Xmz-KE.js → AnalysisPlugin-DJOED79I.js} +1 -1
  105. package/src/ui/dist/assets/{AutoFigurePlugin-Cko-0tm1.js → AutoFigurePlugin-DaG61Y0M.js} +63 -8
  106. package/src/ui/dist/assets/{CliPlugin-BsU0ht7q.js → CliPlugin-CV4LqUB_.js} +43 -609
  107. package/src/ui/dist/assets/{CodeEditorPlugin-DcMMP0Rt.js → CodeEditorPlugin-DylfAea4.js} +8 -8
  108. package/src/ui/dist/assets/{CodeViewerPlugin-BqoQ5QyY.js → CodeViewerPlugin-F7saY0LM.js} +5 -5
  109. package/src/ui/dist/assets/{DocViewerPlugin-D7eHNhU6.js → DocViewerPlugin-COP0c7jf.js} +3 -3
  110. package/src/ui/dist/assets/{GitDiffViewerPlugin-DLJN42T5.js → GitDiffViewerPlugin-CAS05pT9.js} +1 -1
  111. package/src/ui/dist/assets/{ImageViewerPlugin-gJMV7MOu.js → ImageViewerPlugin-Bco1CN_w.js} +5 -6
  112. package/src/ui/dist/assets/{LabCopilotPanel-B857sfxP.js → LabCopilotPanel-CvMlCD99.js} +12 -15
  113. package/src/ui/dist/assets/LabPlugin-BYankkE4.js +2676 -0
  114. package/src/ui/dist/assets/LabPlugin-D9jVIo0A.css +2698 -0
  115. package/src/ui/dist/assets/{LatexPlugin-DWKEo-Wj.js → LatexPlugin-LDSMR-t-.js} +16 -16
  116. package/src/ui/dist/assets/{MarkdownViewerPlugin-DBzoEmhv.js → MarkdownViewerPlugin-B7o80jgm.js} +4 -4
  117. package/src/ui/dist/assets/{MarketplacePlugin-DoHc-8vo.js → MarketplacePlugin-CM6ZOcpC.js} +3 -3
  118. package/src/ui/dist/assets/{NotebookEditor-CKjKH-yS.js → NotebookEditor-Dc61cXmK.js} +3 -3
  119. package/src/ui/dist/assets/{PdfLoader-zFoL0VPo.js → PdfLoader-DWowuQwx.js} +1 -1
  120. package/src/ui/dist/assets/{PdfMarkdownPlugin-DXPaL9Nt.js → PdfMarkdownPlugin-BsJM1q_a.js} +3 -3
  121. package/src/ui/dist/assets/{PdfViewerPlugin-DhK8qCFp.js → PdfViewerPlugin-DB2eEEFQ.js} +10 -10
  122. package/src/ui/dist/assets/{SearchPlugin-CdSi6krf.js → SearchPlugin-CraThSvt.js} +1 -1
  123. package/src/ui/dist/assets/{Stepper-V-WiDQJl.js → Stepper-CgocRTPq.js} +1 -1
  124. package/src/ui/dist/assets/{TextViewerPlugin-hIs1Efiu.js → TextViewerPlugin-B1JGhKtd.js} +4 -4
  125. package/src/ui/dist/assets/{VNCViewer-DG8b0q2X.js → VNCViewer-CclFC7FM.js} +9 -10
  126. package/src/ui/dist/assets/{bibtex-HDac6fVW.js → bibtex-D3IKsMl7.js} +1 -1
  127. package/src/ui/dist/assets/{code-BnBeNxBc.js → code-BP37Xx0p.js} +1 -1
  128. package/src/ui/dist/assets/{file-content-IRQ3jHb8.js → file-content-BAJSu-9r.js} +1 -1
  129. package/src/ui/dist/assets/{file-diff-panel-DZoQ9I6r.js → file-diff-panel-DUGeCTuy.js} +1 -1
  130. package/src/ui/dist/assets/{file-socket-BMCdLc-P.js → file-socket-CXc1Ojf7.js} +1 -1
  131. package/src/ui/dist/assets/{file-utils-CltILB3w.js → file-utils-2J21jt7M.js} +1 -1
  132. package/src/ui/dist/assets/{image-Boe6ffhu.js → image-CMMmgvcn.js} +1 -1
  133. package/src/ui/dist/assets/{index-BlplpvE1.js → index-BaVumsQT.js} +2 -2
  134. package/src/ui/dist/assets/{index-DZqJ-qAM.js → index-CWgMgpow.js} +60 -2154
  135. package/src/ui/dist/assets/{index-DO43pFZP.js → index-DmwmJmbW.js} +6372 -8434
  136. package/src/ui/dist/assets/{index-Bq2bvfkl.css → index-KGt-z-dD.css} +225 -2920
  137. package/src/ui/dist/assets/{index-2Zf65FZt.js → index-s7aHnNQ4.js} +1 -1
  138. package/src/ui/dist/assets/{message-square-mUHn_Ssb.js → message-square-CQRfX0Am.js} +1 -1
  139. package/src/ui/dist/assets/{monaco-fe0arNEU.js → monaco-B4TbdsrF.js} +1 -1
  140. package/src/ui/dist/assets/{popover-D_7i19qU.js → popover-B8Rokodk.js} +1 -1
  141. package/src/ui/dist/assets/{project-sync-DyVGrU7H.js → project-sync-D_i96KH4.js} +2 -8
  142. package/src/ui/dist/assets/{sigma-BzazRyxQ.js → sigma-D12PnzCN.js} +1 -1
  143. package/src/ui/dist/assets/{tooltip-DN_yjHFH.js → tooltip-B6YrI4aJ.js} +1 -1
  144. package/src/ui/dist/assets/trash-Bc8jGp0V.js +32 -0
  145. package/src/ui/dist/assets/{useCliAccess-DV2L2Qxy.js → useCliAccess-mXVCYSZ-.js} +12 -42
  146. package/src/ui/dist/assets/{useFileDiffOverlay-DyTj-p_V.js → useFileDiffOverlay-Bg6b9H9K.js} +1 -1
  147. package/src/ui/dist/assets/{wrap-text-ozYHtUwq.js → wrap-text-Drh5GEnL.js} +1 -1
  148. package/src/ui/dist/assets/{zoom-out-BN9MUyCQ.js → zoom-out-CJj9DZLn.js} +1 -1
  149. package/src/ui/dist/index.html +2 -2
  150. package/assets/fonts/Inter-Variable.ttf +0 -0
  151. package/assets/fonts/NotoSerifSC-Regular-C94HN_ZN.ttf +0 -0
  152. package/assets/fonts/NunitoSans-Variable.ttf +0 -0
  153. package/assets/fonts/Satoshi-Medium-ByP-Zb-9.woff2 +0 -0
  154. package/assets/fonts/SourceSans3-Variable.ttf +0 -0
  155. package/assets/fonts/ds-fonts.css +0 -83
  156. package/src/ui/dist/assets/Inter-Variable-VF2RPR_K.ttf +0 -0
  157. package/src/ui/dist/assets/LabPlugin-bL7rpic8.js +0 -43
  158. package/src/ui/dist/assets/NotoSerifSC-Regular-C94HN_ZN-C94HN_ZN.ttf +0 -0
  159. package/src/ui/dist/assets/NunitoSans-Variable-B_ZymHAd.ttf +0 -0
  160. package/src/ui/dist/assets/Satoshi-Medium-ByP-Zb-9-GkA34YXu.woff2 +0 -0
  161. package/src/ui/dist/assets/SourceSans3-Variable-CD-WOsSK.ttf +0 -0
  162. package/src/ui/dist/assets/info-CcsK_htA.js +0 -18
  163. package/src/ui/dist/assets/user-plus-BusDx-hF.js +0 -79
@@ -0,0 +1,407 @@
1
+ ---
2
+ name: rebuttal
3
+ description: Use when a quest already has a paper, draft, or review package and the task is to map reviewer feedback into experiments, manuscript deltas, and a durable rebuttal / revision response.
4
+ ---
5
+
6
+ # Rebuttal
7
+
8
+ Use this skill when the quest is in review, revision, or rebuttal mode.
9
+
10
+ This is not the same as ordinary `write`.
11
+ The task is no longer “draft the paper from evidence”.
12
+ The task is “respond to concrete reviewer pressure with the smallest honest set of experiments, text changes, claim adjustments, and response artifacts”.
13
+
14
+ ## Interaction discipline
15
+
16
+ - Treat `artifact.interact(...)` as the main long-lived communication thread across TUI, web, and bound connectors.
17
+ - If `artifact.interact(...)` returns queued user requirements, treat them as the highest-priority user instruction bundle before continuing the rebuttal pass.
18
+ - Immediately follow any non-empty mailbox poll with another `artifact.interact(...)` update that confirms receipt; if the request is directly answerable, answer there, otherwise say the current subtask is paused, give a short plan plus nearest report-back point, and handle that request first.
19
+ - Emit `artifact.interact(kind='progress', reply_mode='threaded', ...)` only when there is real user-visible progress: the first meaningful signal of the rebuttal pass, a meaningful checkpoint, or an occasional keepalive during truly long work. Do not update by tool-call cadence.
20
+ - Keep progress updates chat-like and easy to understand: say what changed, what it means, and what happens next.
21
+ - Default to plain-language summaries. Do not mention file paths, artifact ids, branch/worktree ids, session ids, raw commands, or raw logs unless the user asks or needs them to act.
22
+ - Message templates are references only. Adapt to the actual context and vary wording so updates feel natural and non-robotic.
23
+ - Use `reply_mode='blocking'` only for real user decisions that cannot be resolved from local evidence.
24
+ - For any blocking decision request, provide 1 to 3 concrete options, put the recommended option first, explain each option's actual content plus pros and cons, wait up to 1 day when feasible, then choose the best option yourself and notify the user of the chosen option if the timeout expires.
25
+ - If a threaded user reply arrives, interpret it relative to the latest rebuttal progress update before assuming the task changed completely.
26
+ - When the rebuttal plan, the main supplementary-evidence package, or the final response bundle becomes durable, send one richer `artifact.interact(kind='milestone', reply_mode='threaded', ...)` update that says what reviewer concerns are now addressed, what still remains open, and what happens next.
27
+
28
+ ## Purpose
29
+
30
+ `rebuttal` is an auxiliary orchestration skill for review-driven work.
31
+
32
+ It should convert reviewer material into a durable response workflow:
33
+
34
+ 1. parse and normalize the review package
35
+ 2. split comments into stable atomic items and classify what they actually require
36
+ 3. decide which concerns need literature/positioning analysis, which need experiments, which need text, and which require claim downgrades
37
+ 4. route supplementary runs to `analysis-campaign` only after the analysis step says they are truly needed
38
+ 5. route manuscript edits to `write`
39
+ 6. assemble the response letter and revision ledger
40
+
41
+ Default rebuttal stance: analysis before execution.
42
+ Do not jump from “reviewer asked for more evidence” straight to experiments.
43
+ Do not invent rebuttal-only special tools or side workflows.
44
+ Stay inside the normal DeepScientist surface: `memory`, `artifact`, `bash_exec`, plus ordinary stage/companion skills.
45
+ First decide whether the issue is actually:
46
+
47
+ - a wording / clarity gap
48
+ - a literature / novelty / positioning gap
49
+ - an evidence-presentation gap
50
+ - a missing baseline or comparator
51
+ - a genuinely new experiment gap
52
+
53
+ ## Use when
54
+
55
+ - `startup_contract.custom_profile = revision_rebuttal`
56
+ - the quest already has:
57
+ - reviewer comments
58
+ - a meta-review
59
+ - a revision request
60
+ - a decision letter
61
+ - a list of required extra experiments for a submitted paper
62
+ - the user says:
63
+ - “补实验并写 rebuttal”
64
+ - “根据 review 修改论文”
65
+ - “先整理 reviewer comments 再决定实验”
66
+
67
+ ## Do not use when
68
+
69
+ - the paper does not yet exist and the task is ordinary paper drafting
70
+ - there are no concrete review materials
71
+ - the work is actually a fresh ideation or baseline quest
72
+
73
+ ## Non-negotiable rules
74
+
75
+ - Do not invent experiment results, response claims, or manuscript changes that have not been made.
76
+ - Do not promise “we will add” unless the work is truly planned and the response format explicitly allows future-work statements.
77
+ - Do not silently ignore hard reviewer concerns because they are inconvenient.
78
+ - Do not answer a reviewer with rhetoric when the issue actually requires evidence.
79
+ - Do not run supplementary experiments without first mapping them to named reviewer concerns.
80
+ - Do not keep the original claim scope if the new evidence no longer supports it.
81
+ - If a reviewer request cannot be fully satisfied, say so clearly and explain the honest limitation.
82
+
83
+ ## Primary inputs
84
+
85
+ Use, in roughly this order:
86
+
87
+ - the current paper or draft
88
+ - the selected outline if one exists
89
+ - review comments, meta-review, or editor letter
90
+ - recent main and analysis experiment results
91
+ - prior decision and writing memory
92
+ - existing figures, tables, and claim-evidence maps
93
+
94
+ If the current paper/result state is still unclear, open `intake-audit` first before continuing the rebuttal workflow.
95
+
96
+ ## Core outputs
97
+
98
+ The rebuttal pass should usually leave behind:
99
+
100
+ - `paper/rebuttal/review_matrix.md`
101
+ - `paper/rebuttal/action_plan.md`
102
+ - `paper/rebuttal/response_letter.md`
103
+ - `paper/rebuttal/text_deltas.md`
104
+ - `paper/rebuttal/evidence_update.md`
105
+
106
+ Use the templates in `references/` when needed:
107
+
108
+ - `review-matrix-template.md`
109
+ - `action-plan-template.md`
110
+ - `response-letter-template.md`
111
+ - `evidence-update-template.md`
112
+
113
+ ## Atomic reviewer-item contract
114
+
115
+ Before any rebuttal experiment or major rewrite, normalize reviewer pressure into stable atomic items.
116
+
117
+ For each item:
118
+
119
+ - give it a stable id such as `R1-C1`, `R1-C2`, `R2-C1`
120
+ - preserve the reviewer wording as faithfully as possible
121
+ - if the original text is too long or noisy, controlled head/tail ellipsis is allowed
122
+ - do not rewrite the reviewer's meaning
123
+ - record whether the item is explicit or inferred
124
+ - inferred items are allowed only when comments are incomplete or the user gave only rough prose
125
+ - mark them clearly as inferred
126
+ - attach at least one evidence anchor:
127
+ - manuscript location
128
+ - existing result / table / figure
129
+ - literature comparison note
130
+ - or `missing_evidence` if the gap is still real
131
+ - decide one primary route:
132
+ - `text_revision`
133
+ - `evidence_repackaging`
134
+ - `literature_positioning`
135
+ - `baseline_recovery`
136
+ - `supplementary_experiment`
137
+ - `claim_downgrade`
138
+ - `explicit_limitation`
139
+
140
+ Do not let one vague reviewer paragraph remain as one vague work item.
141
+ The point is to make downstream routing auditable.
142
+
143
+ ## Comment classes
144
+
145
+ Every substantive reviewer comment should be classified as one or more of:
146
+
147
+ - `editorial`
148
+ - wording, organization, typo, presentation
149
+ - `text_only`
150
+ - explanation gap, related-work gap, clarity gap, missing discussion
151
+ - `evidence_gap`
152
+ - the paper is missing a table, figure, comparison, or stronger analysis already latent in existing results
153
+ - `experiment_gap`
154
+ - genuinely new supplementary runs are required
155
+ - `claim_scope`
156
+ - the current claim is too broad and must be narrowed or downgraded
157
+ - `cannot_fully_address`
158
+ - the request is currently infeasible, out of scope, or impossible within the real evidence budget
159
+
160
+ Do not blur these categories.
161
+ The whole point is to route work correctly.
162
+
163
+ Useful stance values for draft replies:
164
+
165
+ - `agree`
166
+ - `partially_agree`
167
+ - `clarify`
168
+ - `respectful_disagree`
169
+
170
+ Useful concern-type labels when the simple class list is not enough:
171
+
172
+ - `non_experimental`
173
+ - `experimental`
174
+ - `writing_logic`
175
+ - `scope_novelty`
176
+
177
+ ## Workflow
178
+
179
+ ### 1. Normalize the review package
180
+
181
+ Collect reviewer inputs into a durable matrix using `references/review-matrix-template.md`.
182
+
183
+ For each comment, record:
184
+
185
+ - reviewer id if known
186
+ - original comment summary
187
+ - class
188
+ - severity
189
+ - whether it affects:
190
+ - acceptance risk
191
+ - the main claim
192
+ - only presentation
193
+ - recommended action
194
+ - stable item id such as `R1-C1`
195
+ - reviewer wording or a source-faithful clipped quote
196
+ - whether the item is explicit or inferred
197
+ - preliminary route:
198
+ - text
199
+ - literature
200
+ - baseline
201
+ - experiment
202
+ - claim scope
203
+ - limitation
204
+
205
+ If the user gave only rough prose rather than a structured review package, build that matrix yourself before planning experiments or edits.
206
+
207
+ ### 2. Decide what must change
208
+
209
+ For each reviewer issue, decide whether the right answer is:
210
+
211
+ - explanation only
212
+ - existing evidence repackaging
213
+ - new supplementary experiment
214
+ - claim downgrade
215
+ - explicit limitation response
216
+
217
+ Then write one durable rebuttal plan in `paper/rebuttal/action_plan.md`.
218
+ That plan should explicitly include the analysis-experiment TODO list for reviewer-linked follow-up work.
219
+
220
+ The action plan should be the main thinking draft before execution.
221
+ For each serious item, record:
222
+
223
+ - item id
224
+ - concern type
225
+ - stance
226
+ - chosen route
227
+ - why that route is sufficient
228
+ - what evidence already exists
229
+ - what is still missing
230
+
231
+ For experimental items, do not stop at “run experiment”.
232
+ Write at least:
233
+
234
+ - hypothesis
235
+ - minimal success criterion
236
+ - required metric(s)
237
+ - MVP plan
238
+ - Enhanced plan
239
+ - fallback response wording if the experiment cannot be completed in time
240
+
241
+ For novelty / comparison / positioning complaints, do not default to experiments.
242
+ First decide whether the issue is better answered by a focused literature audit and clearer paper positioning.
243
+
244
+ ### 3. Route experiments only when genuinely needed
245
+
246
+ If one or more comments truly require new runs:
247
+
248
+ 1. if the complaint is mainly about novelty, related work, or scope positioning, open `scout` first instead of treating it as an experiment request
249
+ 2. if the complaint requires an extra comparator baseline that is not yet available, open `baseline` first
250
+ 3. record a `decision(action='launch_analysis_campaign')`
251
+ 4. open `analysis-campaign`
252
+ 5. create a campaign where each slice is tied to one or more reviewer concerns
253
+ 6. after each slice finishes, immediately `artifact.record_analysis_slice(...)`
254
+ 7. update the review matrix and evidence update note
255
+
256
+ Do not launch a free-floating ablation batch.
257
+ Every supplementary run should answer a named reviewer issue.
258
+ Every slice should reference one or more stable reviewer item ids.
259
+ After each completed reviewer-linked slice, record the result, the implication for the manuscript, and the concrete modification advice in `paper/rebuttal/evidence_update.md`.
260
+ Use the same shared supplementary-experiment protocol as ordinary analysis work; do not invent a rebuttal-only experiment system.
261
+ If ids or refs are unclear, recover them first with `artifact.resolve_runtime_refs(...)`, `artifact.get_analysis_campaign(...)`, or `artifact.list_paper_outlines(...)`.
262
+
263
+ ### 4. Route manuscript changes explicitly
264
+
265
+ If the paper text, structure, or claim scope must change:
266
+
267
+ - open `write`
268
+ - revise the selected outline when the narrative or claim map changed materially
269
+ - keep `text_deltas.md` explicit:
270
+ - section
271
+ - old claim / weakness
272
+ - new wording or new scope
273
+ - evidence basis
274
+ - keep the revision reader-first:
275
+ - direct answer to reviewer concern
276
+ - manuscript change
277
+ - evidence basis
278
+ - remaining limitation if still unresolved
279
+
280
+ If a reviewer request forces a narrower story, revise the outline before polishing prose.
281
+
282
+ ### 5. Assemble the response letter
283
+
284
+ Use `references/response-letter-template.md` when helpful.
285
+
286
+ The response should be:
287
+
288
+ - professional
289
+ - calm
290
+ - specific
291
+ - evidence-backed
292
+ - non-defensive
293
+
294
+ Good response structure:
295
+
296
+ - short appreciation / acknowledgement
297
+ - direct answer to the reviewer concern
298
+ - keep stable item ids visible when helpful
299
+ - restate reviewer wording faithfully before answering
300
+ - what changed:
301
+ - experiment
302
+ - table / figure
303
+ - text section
304
+ - claim scope
305
+ - if not fully addressed, why not and what honest limitation remains
306
+
307
+ If details are still genuinely unknown, use explicit placeholders such as `[[AUTHOR TO FILL]]` rather than inventing specifics.
308
+
309
+ Avoid:
310
+
311
+ - empty politeness
312
+ - evasive wording
313
+ - pretending a limitation is solved when it is only reframed
314
+
315
+ ### 6. Final revision handoff
316
+
317
+ When the rebuttal package is durably ready:
318
+
319
+ - update the review matrix statuses
320
+ - update the response letter
321
+ - update text deltas and evidence update
322
+ - if the revised manuscript bundle is genuinely ready, route through `artifact.submit_paper_bundle(...)`
323
+
324
+ If a combined rebuttal note is useful, make sure the total package still covers:
325
+
326
+ - overview and revision strategy
327
+ - draft responses to reviewers
328
+ - point-to-point triage
329
+ - experiment action plan
330
+ - manuscript revision suggestions
331
+ - evidence mapping
332
+ - unresolved items and risk notes
333
+
334
+ ## Companion skill routing
335
+
336
+ Open additional skills only when the rebuttal workflow requires them:
337
+
338
+ - `intake-audit`
339
+ - when the current draft/result/review state is still unclear
340
+ - `scout`
341
+ - when reviewer pressure is mainly about novelty, positioning, related work, or comparison framing
342
+ - `baseline`
343
+ - when the rebuttal requires an extra comparator baseline that is not yet trusted
344
+ - `analysis-campaign`
345
+ - when reviewer concerns require supplementary runs
346
+ - `write`
347
+ - when claims, outline, sections, or figures must be revised
348
+ - `figure-polish`
349
+ - when a new figure or revised figure will be part of the rebuttal or manuscript update
350
+ - `decision`
351
+ - when the rebuttal route is non-trivial, for example:
352
+ - whether to spend budget on a hard reviewer request
353
+ - whether to downgrade the claim
354
+ - whether to treat one concern as appendix-only
355
+
356
+ ## Artifact routing guidance
357
+
358
+ Use these tools deliberately:
359
+
360
+ - `artifact.record(kind='decision', ...)`
361
+ - route choice, claim downgrade, literature-audit launch, baseline-recovery launch, supplementary-experiment launch, rebuttal completion recommendation
362
+ - `artifact.create_analysis_campaign(...)`
363
+ - multi-slice reviewer-driven supplementary work
364
+ - `artifact.record_analysis_slice(...)`
365
+ - one completed reviewer-facing supplementary slice
366
+ - `artifact.submit_paper_outline(mode='revise', ...)`
367
+ - when review changes the active paper blueprint
368
+ - `artifact.submit_paper_bundle(...)`
369
+ - when the revised manuscript package is durably ready
370
+ - `artifact.interact(...)`
371
+ - user-visible progress and rebuttal milestones
372
+
373
+ ## Memory discipline
374
+
375
+ Stage-start requirement:
376
+
377
+ - run `memory.list_recent(scope='quest', limit=5)`
378
+ - run at least one `memory.search(...)` for:
379
+ - paper title
380
+ - main method name
381
+ - reviewer / rebuttal / revision
382
+ - key criticized claim or figure
383
+
384
+ Stage-end requirement:
385
+
386
+ - if the rebuttal pass produced a durable lesson, claim downgrade, or reviewer-driven route change, write at least one `memory.write(...)`
387
+
388
+ Useful tags include:
389
+
390
+ - `stage:rebuttal`
391
+ - `type:review-matrix`
392
+ - `type:claim-downgrade`
393
+ - `type:revision-lesson`
394
+ - `type:reviewer-request`
395
+
396
+ ## Success condition
397
+
398
+ `rebuttal` is successful when:
399
+
400
+ - reviewer concerns are normalized into a durable matrix
401
+ - each serious concern has an explicit action class
402
+ - supplementary experiments, if needed, are routed cleanly
403
+ - manuscript deltas are explicit
404
+ - the response letter is evidence-backed and honest
405
+
406
+ The goal is not just “write a nicer response”.
407
+ The goal is to convert review pressure into a durable, auditable revision workflow.
@@ -0,0 +1,63 @@
1
+ # Rebuttal Action Plan Template
2
+
3
+ ## Overview & Revision Strategy
4
+
5
+ - top reviewer risks:
6
+ - current strongest evidence:
7
+ - current weakest evidence:
8
+ - global revision strategy:
9
+
10
+ ## Item-by-item plan
11
+
12
+ ### Item R1-C1
13
+
14
+ - class:
15
+ - concern type:
16
+ - stance:
17
+ - primary route:
18
+ - why this route is sufficient:
19
+ - existing evidence:
20
+ - missing evidence:
21
+ - manuscript delta needed:
22
+ - owner / next action:
23
+
24
+ **If supplementary experiment is needed**
25
+
26
+ - hypothesis:
27
+ - required metric(s):
28
+ - minimal success criterion:
29
+ - MVP plan:
30
+ - enhanced plan:
31
+ - fallback wording if unfinished:
32
+
33
+ ### Item R1-C2
34
+
35
+ - class:
36
+ - concern type:
37
+ - stance:
38
+ - primary route:
39
+ - why this route is sufficient:
40
+ - existing evidence:
41
+ - missing evidence:
42
+ - manuscript delta needed:
43
+ - owner / next action:
44
+
45
+ ## Experiment Action Plan
46
+
47
+ - reviewer items that require new runs:
48
+ - which items only need analysis of existing results:
49
+ - which items first require baseline recovery:
50
+ - which items first require literature / positioning audit:
51
+
52
+ ## Claim-scope changes
53
+
54
+ - claim to keep:
55
+ - claim to narrow:
56
+ - claim to defer:
57
+ - limitation to state explicitly:
58
+
59
+ ## Unresolved Items & Risk Notes
60
+
61
+ - unresolved item:
62
+ - blocker:
63
+ - best honest response if unresolved at deadline:
@@ -0,0 +1,30 @@
1
+ # Rebuttal Evidence Update Template
2
+
3
+ ## Evidence Mapping Table
4
+
5
+ | Item ID | Evidence source | Evidence anchor | How it supports the reply | Remaining gap |
6
+ | --- | --- | --- | --- | --- |
7
+ | R1-C1 | | | | |
8
+ | R1-C2 | | | | |
9
+ | R2-C1 | | | | |
10
+
11
+ ## Newly completed rebuttal evidence
12
+
13
+ - experiment / analysis slice:
14
+ - figure / table:
15
+ - manuscript section:
16
+ - key result:
17
+ - reviewer items covered:
18
+
19
+ ## Still missing
20
+
21
+ - item id:
22
+ - what is still missing:
23
+ - why it matters:
24
+ - whether to downgrade claim / state limitation:
25
+
26
+ ## Revision-ready summary
27
+
28
+ - strongest issues now addressed:
29
+ - issues still partially open:
30
+ - manuscript sections that must be updated next:
@@ -0,0 +1,113 @@
1
+ # Response Letter Template
2
+
3
+ ## Cover note
4
+
5
+ We thank the reviewers for the careful reading and constructive feedback. Below we respond point by point and indicate the corresponding manuscript changes and supplementary evidence when applicable.
6
+
7
+ ## Reviewer 1
8
+
9
+ ### Item R1-C1
10
+
11
+ **Reviewer concern (verbatim or source-faithful clip)**
12
+
13
+ -
14
+
15
+ **Concern type**
16
+
17
+ - non_experimental / experimental / writing_logic / scope_novelty
18
+
19
+ **Stance**
20
+
21
+ - agree / partially_agree / clarify / respectful_disagree
22
+
23
+ **Response**
24
+
25
+ -
26
+
27
+ **What changed**
28
+
29
+ - experiment / figure / table / section:
30
+ - evidence basis:
31
+ - claim-scope effect:
32
+ - remaining limitation:
33
+
34
+ **If an experiment is still pending**
35
+
36
+ - MVP plan:
37
+ - Enhanced plan:
38
+ - fallback wording if unfinished:
39
+
40
+ ### Item R1-C2
41
+
42
+ **Reviewer concern (verbatim or source-faithful clip)**
43
+
44
+ -
45
+
46
+ **Concern type**
47
+
48
+ - non_experimental / experimental / writing_logic / scope_novelty
49
+
50
+ **Stance**
51
+
52
+ - agree / partially_agree / clarify / respectful_disagree
53
+
54
+ **Response**
55
+
56
+ -
57
+
58
+ **What changed**
59
+
60
+ - experiment / figure / table / section:
61
+ - evidence basis:
62
+ - claim-scope effect:
63
+ - remaining limitation:
64
+
65
+ **If an experiment is still pending**
66
+
67
+ - MVP plan:
68
+ - Enhanced plan:
69
+ - fallback wording if unfinished:
70
+
71
+ ## Reviewer 2
72
+
73
+ ### Item R2-C1
74
+
75
+ **Reviewer concern (verbatim or source-faithful clip)**
76
+
77
+ -
78
+
79
+ **Concern type**
80
+
81
+ - non_experimental / experimental / writing_logic / scope_novelty
82
+
83
+ **Stance**
84
+
85
+ - agree / partially_agree / clarify / respectful_disagree
86
+
87
+ **Response**
88
+
89
+ -
90
+
91
+ **What changed**
92
+
93
+ - experiment / figure / table / section:
94
+ - evidence basis:
95
+ - claim-scope effect:
96
+ - remaining limitation:
97
+
98
+ **If an experiment is still pending**
99
+
100
+ - MVP plan:
101
+ - Enhanced plan:
102
+ - fallback wording if unfinished:
103
+
104
+ ## Remaining limitations
105
+
106
+ - what could not be fully addressed:
107
+ - why:
108
+ - how the manuscript now reflects that limitation:
109
+
110
+ ## Author placeholders
111
+
112
+ - If a concrete number, setup detail, or result is still unknown, use `[[AUTHOR TO FILL]]`.
113
+ - Do not fabricate missing details just to make the letter sound complete.
@@ -0,0 +1,55 @@
1
+ # Review Matrix Template
2
+
3
+ Use stable atomic item ids such as `R1-C1`, `R1-C2`, `R2-C1`.
4
+
5
+ | Reviewer | Item ID | Reviewer comment (verbatim or source-faithful clip) | Concern summary | Class | Concern type | Severity | Stance | Primary route | Required action | Evidence anchor / gap | Status | Notes |
6
+ | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- |
7
+ | R1 | R1-C1 | | | | | | | | | | pending | |
8
+ | R1 | R1-C2 | | | | | | | | | | pending | |
9
+ | R2 | R2-C1 | | | | | | | | | | pending | |
10
+
11
+ ## Class guide
12
+
13
+ - `editorial`
14
+ - `text_only`
15
+ - `evidence_gap`
16
+ - `experiment_gap`
17
+ - `claim_scope`
18
+ - `cannot_fully_address`
19
+
20
+ ## Status guide
21
+
22
+ - `pending`
23
+ - `in_progress`
24
+ - `addressed`
25
+ - `declined_with_reason`
26
+
27
+ ## Concern type guide
28
+
29
+ - `non_experimental`
30
+ - `experimental`
31
+ - `writing_logic`
32
+ - `scope_novelty`
33
+
34
+ ## Stance guide
35
+
36
+ - `agree`
37
+ - `partially_agree`
38
+ - `clarify`
39
+ - `respectful_disagree`
40
+
41
+ ## Primary route guide
42
+
43
+ - `text_revision`
44
+ - `evidence_repackaging`
45
+ - `literature_positioning`
46
+ - `baseline_recovery`
47
+ - `supplementary_experiment`
48
+ - `claim_downgrade`
49
+ - `explicit_limitation`
50
+
51
+ ## Notes
52
+
53
+ - If the user gave only rough prose, build atomic items yourself and mark inferred items clearly.
54
+ - Preserve reviewer wording as faithfully as possible; controlled ellipsis is allowed, semantic rewriting is not.
55
+ - `Evidence anchor / gap` should name the current manuscript/result/literature anchor, or say `missing_evidence`.