Workflow 4: Rebuttal
Prepare and maintain a grounded, venue-compliant rebuttal for: $ARGUMENTS
Scope
This skill is optimized for:
- ICML-style text-only rebuttal
- strict character limits
- multiple reviewers
- follow-up rounds after the initial rebuttal
- safe drafting with no fabrication, no overpromise, and full issue coverage
This skill does not:
- run new experiments automatically
- generate new theorem claims automatically
- edit or upload a revised PDF
- submit to OpenReview / CMT / HotCRP
If the user already has new results, derivations, or approved commitments, the skill can incorporate them as user-confirmed evidence.
Lifecycle Position
Workflow 1: idea-discovery
Workflow 1.5: experiment-bridge
Workflow 2: auto-review-loop (pre-submission)
Workflow 3: paper-writing
Workflow 4: rebuttal (post-submission external reviews)
Constants
- VENUE =
ICML — Default venue. Override if needed.
- RESPONSE_MODE =
TEXT_ONLY — v1 default.
- REVIEWER_MODEL =
gpt-5.5 — Used via Codex MCP for internal stress-testing.
- REVIEWER_BACKEND =
codex — Default: Codex xhigh stress tester. Use --reviewer: oracle-pro only when explicitly requested; if Oracle is unavailable, warn and fall back to Codex xhigh. See ../shared-references/reviewer-routing.md.
- MAX_INTERNAL_DRAFT_ROUNDS = 2 — draft → lint → revise.
- MAX_STRESS_TEST_ROUNDS = 1 — One Codex MCP critique round.
- MAX_FOLLOWUP_ROUNDS = 3 — per reviewer thread.
- AUTO_EXPERIMENT = false — When
true, automatically invoke /experiment-bridge to run supplementary experiments when the strategy plan identifies reviewer concerns that require new empirical evidence. When false (default), pause and present the evidence gap to the user for manual handling.
- QUICK_MODE = false — When
true, only run Phase 0-3 (parse reviews, atomize concerns, build strategy). Outputs ISSUE_BOARD.md + STRATEGY_PLAN.md and stops — no drafting, no stress test. Useful for quickly understanding what reviewers want before deciding how to respond.
- REBUTTAL_DIR =
rebuttal/
- RENDER_HTML = true — When
true (default), auto-render rebuttal/REBUTTAL_DRAFT_rich.md to HTML after Phase 6 / Phase 8 finalization via /render-html. Uses full review gate (reviewer-facing pre-submission deliverable). The plain-text PASTE_READY.txt is NOT rendered (it's character-counted plain text by design). Set false to skip, or pass — render html: false. Non-blocking: failures don't invalidate the rebuttal.
Override: /rebuttal "paper/" — venue: NeurIPS, character limit: 5000
Required Inputs
- Paper source — PDF, LaTeX directory, or narrative summary
- Raw reviews — pasted text, markdown, or PDF with reviewer IDs
- Venue rules — venue name, character/word limit, text-only or revised PDF allowed
- Current stage — initial rebuttal or follow-up round
If venue rules or limit are missing, stop and ask before drafting.
Safety Model
Three hard gates — if any fails, do NOT finalize:
- Provenance gate — every factual statement maps to:
paper, review, user_confirmed_result, user_confirmed_derivation, or future_work. No source = blocked.
- Commitment gate — every promise maps to:
already_done, approved_for_rebuttal, or future_work_only. Not approved = blocked.
- Coverage gate — every reviewer concern ends in:
answered, deferred_intentionally, or needs_user_input. No issue disappears.
Workflow
Phase 0: Resume or Initialize
- If
rebuttal/REBUTTAL_STATE.md exists → resume from recorded phase
- Otherwise → create
rebuttal/, initialize all output documents
- Load paper, reviews, venue rules, any user-confirmed evidence
Phase 1: Validate Inputs and Normalize Reviews
- Validate venue rules are explicit
- Normalize all reviewer text into
rebuttal/REVIEWS_RAW.md (verbatim)
- Record metadata in
rebuttal/REBUTTAL_STATE.md
- If ambiguous, pause and ask
Phase 2: Atomize and Classify Reviewer Concerns
Create rebuttal/ISSUE_BOARD.md.
For each atomic concern:
issue_id (e.g., R1-C2)
reviewer, round, raw_anchor (short quote)
issue_type: assumptions / theorem_rigor / novelty / empirical_support / baseline_comparison / complexity / practical_significance / clarity / reproducibility / other
severity: critical / major / minor
reviewer_stance: positive / swing / negative / unknown
response_mode: direct_clarification / grounded_evidence / nearest_work_delta / assumption_hierarchy / narrow_concession / future_work_boundary
status: open / answered / deferred / needs_user_input
Phase 3: Build Strategy Plan
Create rebuttal/STRATEGY_PLAN.md.
- Identify 2-4 global themes resolving shared concerns
- Choose response mode per issue
- Build character budget (10-15% opener, 75-80% per-reviewer, 5-10% closing)
- Identify blocked claims (ungrounded or unapproved)
- If unresolved blockers → pause and present to user
QUICK_MODE exit: If QUICK_MODE = true, stop here. Present ISSUE_BOARD.md + STRATEGY_PLAN.md to the user and summarize: how many issues per reviewer, shared vs unique concerns, recommended priorities, and evidence gaps. The user can then decide to continue with full rebuttal (/rebuttal — quick mode: false) or write manually.
Phase 3.5: Evidence Sprint (when AUTO_EXPERIMENT = true)
Skip entirely if AUTO_EXPERIMENT is false — instead, pause and present the evidence gaps to the user.
If the strategy plan identifies issues that require new empirical evidence (tagged response_mode: grounded_evidence with evidence_source: needs_experiment):
Generate a mini experiment plan from the reviewer concerns:
- What to run (ablation, baseline comparison, scale-up, condition check)
- Success criterion (what result would satisfy the reviewer)
- Estimated GPU-hours
Invoke /experiment-bridge with the mini plan:
/experiment-bridge "rebuttal/REBUTTAL_EXPERIMENT_PLAN.md"
Wait for results, then update ISSUE_BOARD.md:
- Tag completed experiments as
user_confirmed_result
- Update evidence source for relevant issue cards
If experiments fail or are inconclusive:
- Switch response mode to
narrow_concession or future_work_boundary
- Do NOT fabricate positive results
Save experiment results to rebuttal/REBUTTAL_EXPERIMENTS.md for provenance tracking.
Time guard: If estimated GPU-hours exceed rebuttal deadline, skip and flag for manual handling.
Phase 4: Draft Initial Rebuttal
Create rebuttal/REBUTTAL_DRAFT_v1.md.
Structure:
- Short opener — thank reviewers + 2-4 global resolutions
- Per-reviewer numbered responses — answer → evidence → implication
- Short closing — resolved / remaining / acceptance case
Default reply pattern per issue:
- Sentence 1: direct answer
- Sentence 2-4: grounded evidence
- Last sentence: implication for the paper
Heuristics from 5 successful rebuttals:
- Evidence > assertion
- Global narrative first, per-reviewer detail second
- Concrete numbers for counter-intuitive points
- Name closest prior work + exact delta for novelty disputes
- Concede narrowly when reviewer is right
- For theory: separate core vs technical assumptions
- Answer friendly reviewers too
Hard rules:
- NEVER invent experiments, numbers, derivations, citations, or links
- NEVER promise what user hasn't approved
- If no strong evidence exists, say less not more
Also generate rebuttal/PASTE_READY.txt (plain text, exact character count).
Also generate rebuttal/REVISION_PLAN.md — the overall revision checklist.
This document is the single source of truth for every paper revision promised (explicitly or implicitly) in the rebuttal draft. It exists so the author can track follow-through after the rebuttal is submitted, and so the commitment gate in Phase 5 has a concrete artifact to validate against.
Structure:
Header
- Paper title, venue, character limit, rebuttal round
- Links back to
ISSUE_BOARD.md, STRATEGY_PLAN.md, REBUTTAL_DRAFT_v1.md
Overall checklist — a single flat GitHub-style checklist covering every revision item, so the author can tick items off as they land in the camera-ready / revised PDF:
## Overall Checklist
- [ ] (R1-C2) Add assumption hierarchy table to Section 3.1 — commitment: `approved_for_rebuttal` — owner: author — status: pending
- [ ] (R2-C1) Clarify novelty delta vs. Smith'24 in Section 2 related work — commitment: `already_done` — status: verify wording
- [ ] (R3-C4) Add runtime breakdown figure to Appendix B — commitment: `future_work_only` — status: deferred, note in camera-ready
- ...
Checklist items must be atomic (one paper edit per line) and each must reference its issue_id so it maps back to ISSUE_BOARD.md.
Grouped view — the same items regrouped by (a) paper section/location and (b) severity, so the author can plan the revision pass efficiently.
Commitment summary — counts of already_done / approved_for_rebuttal / future_work_only, plus any needs_user_input items that are blocking.
Out-of-scope log — reviewer concerns that will not trigger a paper revision (e.g. deferred_intentionally, narrow_concession with no edit), with a one-line reason each. This keeps the checklist honest: nothing silently disappears.
Rules for REVISION_PLAN.md:
- Every checklist item must map to at least one
issue_id from ISSUE_BOARD.md.
- Every promise in
REBUTTAL_DRAFT_v1.md that implies a paper edit must appear as a checklist item — if it is not in the plan, it is a commitment-gate violation.
- Never add items that are not backed by the draft or by user-confirmed evidence.
- On rerun / follow-up rounds, update checkbox state in place rather than regenerating from scratch.
Phase 5: Safety Validation
Run all lints:
- Coverage — every issue maps to draft anchor
- Provenance — every factual sentence has source
- Commitment — promises are approved AND every paper-edit promise in the draft appears as a checklist item in
REVISION_PLAN.md (and vice versa — no orphan items in the plan)
- Tone — flag aggressive/submissive/evasive phrases
- Consistency — no contradictions across reviewer replies
- Limit — exact character count, compress if over (redundancy → friendly → opener → wording, never drop critical answers)
Phase 6: Codex Reviewer Stress Test
spawn_agent:
reasoning_effort: xhigh
message: |
Stress-test this rebuttal draft:
[raw reviews + issue board + draft + venue rules]
1. Unanswered or weakly answered concerns?
2. Unsupported factual statements?
3. Risky or unapproved promises?
4. Tone problems?
5. Paragraph most likely to backfire with meta-reviewer?
6. Minimal grounded fixes only. Do NOT invent evidence.
Verdict: safe to submit / needs revision
Save full response to rebuttal/MCP_STRESS_TEST.md. If hard safety blocker → revise before finalizing.
Phase 7: Finalize — Two Versions
Produce two outputs for different purposes:
rebuttal/PASTE_READY.txt — the strict version
- Plain text, exact character count, fits venue limit
- Ready to paste directly into OpenReview / CMT / HotCRP
- No markdown formatting, no extras
rebuttal/REBUTTAL_DRAFT_rich.md — the extended version
- Same structure but with more detail: fuller explanations, additional evidence, optional paragraphs
- Marked with
[OPTIONAL — cut if over limit] for sections that exceed the strict version
- Author can read this to understand the full reasoning, then manually decide what to keep/cut/rewrite
- Useful for follow-up rounds — the extra material is pre-written
Update rebuttal/REBUTTAL_STATE.md
Refresh rebuttal/REVISION_PLAN.md so the overall checklist matches the final draft (add items, mark already_done as checked, carry forward any pending items)
Present to user:
PASTE_READY.txt character count vs venue limit
REBUTTAL_DRAFT_rich.md for review and manual editing
REVISION_PLAN.md checklist — counts of pending / approved / deferred
- Remaining risks + lines needing manual approval
Phase 8: Follow-Up Rounds
When new reviewer comments arrive:
- Append verbatim to
rebuttal/FOLLOWUP_LOG.md
- Link to existing issues or create new ones
- Draft delta reply only (not full rewrite)
- Update
rebuttal/REVISION_PLAN.md in place — add any new checklist items introduced by the follow-up, tick off items the author has already completed, and keep existing items' status current
- Re-run safety lints
- Use Codex MCP reply for continuity if useful
- Rules: escalate technically not rhetorically; concede if reviewer is correct; stop arguing if reviewer is immovable and no new evidence exists
Phase 9: Render HTML view (auto, when RENDER_HTML = true, default)
After Phase 6 (initial rebuttal) or Phase 8 (follow-up rounds) finalize rebuttal/REBUTTAL_DRAFT_rich.md, invoke:
/render-html "rebuttal/REBUTTAL_DRAFT_rich.md"
Full review gate (reviewer-facing pre-submission deliverable). Do NOT render rebuttal/PASTE_READY.txt (it's exact-character-count plain text by design).
Non-blocking: if /render-html fails, log the failure and treat the rebuttal phase as complete — the PASTE_READY.txt and REBUTTAL_DRAFT_rich.md are the canonical outputs.
Skip if RENDER_HTML = false.
Key Rules
- Large file handling: If Write fails, retry with Bash heredoc silently.
- Never fabricate. No invented evidence, numbers, derivations, citations, or links.
- Never overpromise. Only promise what user explicitly approved.
- Full coverage. Every reviewer concern tracked and accounted for.
- Preserve raw records. Reviews and MCP outputs stored verbatim.
- Global + per-reviewer structure. Shared concerns in opener.
- Answer friendly reviewers too. Reinforce supportive framing.
- Meta-reviewer closing. Summarize resolved/remaining/why accept.
- Evidence > rhetoric. Derivations and numbers over prose.
- Concede selectively. Narrow honest concessions > broad denials.
- Don't waste space on unwinnable arguments. Answer once, move on.
- Respect the limit. Character budget is a hard constraint.
- Resume cleanly. Continue from REBUTTAL_STATE.md on rerun.
- Anti-hallucination citations. Any reference added must go through DBLP → CrossRef → [VERIFY].
Review Tracing
After each spawn_agent or send_input reviewer call, save the trace following ../shared-references/review-tracing.md. Write files directly to .aris/traces/rebuttal/<date>_run<NN>/. Respect the --- trace: parameter when present (default: full).
1---2name: rebuttal-23description: Workflow 4: Submission rebuttal pipeline. Parses external reviews, enforces coverage and grounding, drafts a safe text-only rebuttal under venue limits, and manages follow-up rounds. Use when user says "rebuttal", "reply to reviewers", "ICML rebuttal", "OpenReview response", or wants to answer external reviews safely.4---5
6# Workflow 4: Rebuttal
7
8Prepare and maintain a grounded, venue-compliant rebuttal for: **$ARGUMENTS**
9
10## Scope
11
12This skill is optimized for:
13- ICML-style **text-only rebuttal**
14- strict **character limits**
15- **multiple reviewers**
16- **follow-up rounds** after the initial rebuttal
17- safe drafting with **no fabrication**, **no overpromise**, and **full issue coverage**
18
19This skill does **not**:
20- run new experiments automatically
21- generate new theorem claims automatically
22- edit or upload a revised PDF
23- submit to OpenReview / CMT / HotCRP
24
25If the user already has new results, derivations, or approved commitments, the skill can incorporate them as **user-confirmed evidence**.
26
27## Lifecycle Position
28
29```text
30Workflow 1: idea-discovery
31Workflow 1.5: experiment-bridge
32Workflow 2: auto-review-loop (pre-submission)
33Workflow 3: paper-writing
34Workflow 4: rebuttal (post-submission external reviews)
35```
36
37## Constants
38
39- **VENUE = `ICML`** — Default venue. Override if needed.
40- **RESPONSE_MODE = `TEXT_ONLY`** — v1 default.
41- **REVIEWER_MODEL = `gpt-5.5`** — Used via Codex MCP for internal stress-testing.
42- **REVIEWER_BACKEND = `codex`** — Default: Codex xhigh stress tester. Use `--reviewer: oracle-pro` only when explicitly requested; if Oracle is unavailable, warn and fall back to Codex xhigh. See `../shared-references/reviewer-routing.md`.
43- **MAX_INTERNAL_DRAFT_ROUNDS = 2** — draft → lint → revise.
44- **MAX_STRESS_TEST_ROUNDS = 1** — One Codex MCP critique round.
45- **MAX_FOLLOWUP_ROUNDS = 3** — per reviewer thread.
46- **AUTO_EXPERIMENT = false** — When `true`, automatically invoke `/experiment-bridge` to run supplementary experiments when the strategy plan identifies reviewer concerns that require new empirical evidence. When `false` (default), pause and present the evidence gap to the user for manual handling.
47- **QUICK_MODE = false** — When `true`, only run Phase 0-3 (parse reviews, atomize concerns, build strategy). Outputs `ISSUE_BOARD.md` + `STRATEGY_PLAN.md` and stops — no drafting, no stress test. Useful for quickly understanding what reviewers want before deciding how to respond.
48- **REBUTTAL_DIR = `rebuttal/`**
49- **RENDER_HTML = true** — When `true` (default), auto-render `rebuttal/REBUTTAL_DRAFT_rich.md` to HTML after Phase 6 / Phase 8 finalization via `/render-html`. Uses **full review gate** (reviewer-facing pre-submission deliverable). The plain-text `PASTE_READY.txt` is NOT rendered (it's character-counted plain text by design). Set `false` to skip, or pass `— render html: false`. **Non-blocking**: failures don't invalidate the rebuttal.
50
51> Override: `/rebuttal "paper/" — venue: NeurIPS, character limit: 5000`
52
53## Required Inputs
54
551. **Paper source** — PDF, LaTeX directory, or narrative summary
562. **Raw reviews** — pasted text, markdown, or PDF with reviewer IDs
573. **Venue rules** — venue name, character/word limit, text-only or revised PDF allowed
584. **Current stage** — initial rebuttal or follow-up round
59
60If venue rules or limit are missing, **stop and ask** before drafting.
61
62## Safety Model
63
64Three hard gates — if any fails, do NOT finalize:
65
661. **Provenance gate** — every factual statement maps to: `paper`, `review`, `user_confirmed_result`, `user_confirmed_derivation`, or `future_work`. No source = blocked.
672. **Commitment gate** — every promise maps to: `already_done`, `approved_for_rebuttal`, or `future_work_only`. Not approved = blocked.
683. **Coverage gate** — every reviewer concern ends in: `answered`, `deferred_intentionally`, or `needs_user_input`. No issue disappears.
69
70## Workflow
71
72### Phase 0: Resume or Initialize
73
741. If `rebuttal/REBUTTAL_STATE.md` exists → resume from recorded phase
752. Otherwise → create `rebuttal/`, initialize all output documents
763. Load paper, reviews, venue rules, any user-confirmed evidence
77
78### Phase 1: Validate Inputs and Normalize Reviews
79
801. Validate venue rules are explicit
812. Normalize all reviewer text into `rebuttal/REVIEWS_RAW.md` (verbatim)
823. Record metadata in `rebuttal/REBUTTAL_STATE.md`
834. If ambiguous, pause and ask
84
85### Phase 2: Atomize and Classify Reviewer Concerns
86
87Create `rebuttal/ISSUE_BOARD.md`.
88
89For each atomic concern:
90- `issue_id` (e.g., R1-C2)
91- `reviewer`, `round`, `raw_anchor` (short quote)
92- `issue_type`: assumptions / theorem_rigor / novelty / empirical_support / baseline_comparison / complexity / practical_significance / clarity / reproducibility / other
93- `severity`: critical / major / minor
94- `reviewer_stance`: positive / swing / negative / unknown
95- `response_mode`: direct_clarification / grounded_evidence / nearest_work_delta / assumption_hierarchy / narrow_concession / future_work_boundary
96- `status`: open / answered / deferred / needs_user_input
97
98### Phase 3: Build Strategy Plan
99
100Create `rebuttal/STRATEGY_PLAN.md`.
101
1021. Identify 2-4 **global themes** resolving shared concerns
1032. Choose **response mode** per issue
1043. Build **character budget** (10-15% opener, 75-80% per-reviewer, 5-10% closing)
1054. Identify **blocked claims** (ungrounded or unapproved)
1065. If unresolved blockers → pause and present to user
107
108**QUICK_MODE exit**: If `QUICK_MODE = true`, stop here. Present `ISSUE_BOARD.md` + `STRATEGY_PLAN.md` to the user and summarize: how many issues per reviewer, shared vs unique concerns, recommended priorities, and evidence gaps. The user can then decide to continue with full rebuttal (`/rebuttal — quick mode: false`) or write manually.
109
110### Phase 3.5: Evidence Sprint (when AUTO_EXPERIMENT = true)
111
112**Skip entirely if `AUTO_EXPERIMENT` is `false` — instead, pause and present the evidence gaps to the user.**
113
114If the strategy plan identifies issues that require new empirical evidence (tagged `response_mode: grounded_evidence` with `evidence_source: needs_experiment`):
115
1161. Generate a mini experiment plan from the reviewer concerns:
117 - What to run (ablation, baseline comparison, scale-up, condition check)
118 - Success criterion (what result would satisfy the reviewer)
119 - Estimated GPU-hours
120
1212. Invoke `/experiment-bridge` with the mini plan:
122 ```
123 /experiment-bridge "rebuttal/REBUTTAL_EXPERIMENT_PLAN.md"
124 ```
125
1263. Wait for results, then update `ISSUE_BOARD.md`:
127 - Tag completed experiments as `user_confirmed_result`
128 - Update evidence source for relevant issue cards
129
1304. If experiments fail or are inconclusive:
131 - Switch response mode to `narrow_concession` or `future_work_boundary`
132 - Do NOT fabricate positive results
133
1345. Save experiment results to `rebuttal/REBUTTAL_EXPERIMENTS.md` for provenance tracking.
135
136**Time guard**: If estimated GPU-hours exceed rebuttal deadline, skip and flag for manual handling.
137
138### Phase 4: Draft Initial Rebuttal
139
140Create `rebuttal/REBUTTAL_DRAFT_v1.md`.
141
142Structure:
1431. **Short opener** — thank reviewers + 2-4 global resolutions
1442. **Per-reviewer numbered responses** — answer → evidence → implication
1453. **Short closing** — resolved / remaining / acceptance case
146
147Default reply pattern per issue:
148- Sentence 1: direct answer
149- Sentence 2-4: grounded evidence
150- Last sentence: implication for the paper
151
152Heuristics from 5 successful rebuttals:
153- Evidence > assertion
154- Global narrative first, per-reviewer detail second
155- Concrete numbers for counter-intuitive points
156- Name closest prior work + exact delta for novelty disputes
157- Concede narrowly when reviewer is right
158- For theory: separate core vs technical assumptions
159- Answer friendly reviewers too
160
161Hard rules:
162- NEVER invent experiments, numbers, derivations, citations, or links
163- NEVER promise what user hasn't approved
164- If no strong evidence exists, say less not more
165
166Also generate `rebuttal/PASTE_READY.txt` (plain text, exact character count).
167
168Also generate `rebuttal/REVISION_PLAN.md` — the **overall revision checklist**.
169
170This document is the single source of truth for every paper revision promised (explicitly or implicitly) in the rebuttal draft. It exists so the author can track follow-through after the rebuttal is submitted, and so the commitment gate in Phase 5 has a concrete artifact to validate against.
171
172Structure:
173
1741. **Header**
175 - Paper title, venue, character limit, rebuttal round
176 - Links back to `ISSUE_BOARD.md`, `STRATEGY_PLAN.md`, `REBUTTAL_DRAFT_v1.md`
177
1782. **Overall checklist** — a single flat GitHub-style checklist covering **every** revision item, so the author can tick items off as they land in the camera-ready / revised PDF:
179
180 ```markdown
181 ## Overall Checklist
182
183 - [ ] (R1-C2) Add assumption hierarchy table to Section 3.1 — commitment: `approved_for_rebuttal` — owner: author — status: pending
184 - [ ] (R2-C1) Clarify novelty delta vs. Smith'24 in Section 2 related work — commitment: `already_done` — status: verify wording
185 - [ ] (R3-C4) Add runtime breakdown figure to Appendix B — commitment: `future_work_only` — status: deferred, note in camera-ready
186 - ...
187 ```
188
189 Checklist items must be **atomic** (one paper edit per line) and each must reference its `issue_id` so it maps back to `ISSUE_BOARD.md`.
190
1913. **Grouped view** — the same items regrouped by (a) paper section/location and (b) severity, so the author can plan the revision pass efficiently.
192
1934. **Commitment summary** — counts of `already_done` / `approved_for_rebuttal` / `future_work_only`, plus any `needs_user_input` items that are blocking.
194
1955. **Out-of-scope log** — reviewer concerns that will **not** trigger a paper revision (e.g. `deferred_intentionally`, `narrow_concession` with no edit), with a one-line reason each. This keeps the checklist honest: nothing silently disappears.
196
197Rules for `REVISION_PLAN.md`:
198- Every checklist item must map to at least one `issue_id` from `ISSUE_BOARD.md`.
199- Every promise in `REBUTTAL_DRAFT_v1.md` that implies a paper edit must appear as a checklist item — if it is not in the plan, it is a commitment-gate violation.
200- Never add items that are not backed by the draft or by user-confirmed evidence.
201- On rerun / follow-up rounds, update checkbox state in place rather than regenerating from scratch.
202
203### Phase 5: Safety Validation
204
205Run all lints:
2061. **Coverage** — every issue maps to draft anchor
2072. **Provenance** — every factual sentence has source
2083. **Commitment** — promises are approved AND every paper-edit promise in the draft appears as a checklist item in `REVISION_PLAN.md` (and vice versa — no orphan items in the plan)
2094. **Tone** — flag aggressive/submissive/evasive phrases
2105. **Consistency** — no contradictions across reviewer replies
2116. **Limit** — exact character count, compress if over (redundancy → friendly → opener → wording, never drop critical answers)
212
213### Phase 6: Codex Reviewer Stress Test
214
215```
216spawn_agent:
217 reasoning_effort: xhigh
218 message: |
219 Stress-test this rebuttal draft:
220 [raw reviews + issue board + draft + venue rules]
221
222 1. Unanswered or weakly answered concerns?
223 2. Unsupported factual statements?
224 3. Risky or unapproved promises?
225 4. Tone problems?
226 5. Paragraph most likely to backfire with meta-reviewer?
227 6. Minimal grounded fixes only. Do NOT invent evidence.
228
229 Verdict: safe to submit / needs revision
230```
231
232Save full response to `rebuttal/MCP_STRESS_TEST.md`. If hard safety blocker → revise before finalizing.
233
234### Phase 7: Finalize — Two Versions
235
236Produce **two outputs** for different purposes:
237
2381. **`rebuttal/PASTE_READY.txt`** — the strict version
239 - Plain text, exact character count, fits venue limit
240 - Ready to paste directly into OpenReview / CMT / HotCRP
241 - No markdown formatting, no extras
242
2432. **`rebuttal/REBUTTAL_DRAFT_rich.md`** — the extended version
244 - Same structure but with **more detail**: fuller explanations, additional evidence, optional paragraphs
245 - Marked with `[OPTIONAL — cut if over limit]` for sections that exceed the strict version
246 - Author can read this to understand the full reasoning, then manually decide what to keep/cut/rewrite
247 - Useful for follow-up rounds — the extra material is pre-written
248
2493. Update `rebuttal/REBUTTAL_STATE.md`
2504. Refresh `rebuttal/REVISION_PLAN.md` so the overall checklist matches the final draft (add items, mark `already_done` as checked, carry forward any `pending` items)
2515. Present to user:
252 - `PASTE_READY.txt` character count vs venue limit
253 - `REBUTTAL_DRAFT_rich.md` for review and manual editing
254 - `REVISION_PLAN.md` checklist — counts of pending / approved / deferred
255 - Remaining risks + lines needing manual approval
256
257### Phase 8: Follow-Up Rounds
258
259When new reviewer comments arrive:
260
2611. Append verbatim to `rebuttal/FOLLOWUP_LOG.md`
2622. Link to existing issues or create new ones
2633. Draft **delta reply only** (not full rewrite)
2644. Update `rebuttal/REVISION_PLAN.md` in place — add any new checklist items introduced by the follow-up, tick off items the author has already completed, and keep existing items' status current
2655. Re-run safety lints
2666. Use Codex MCP reply for continuity if useful
2677. Rules: escalate technically not rhetorically; concede if reviewer is correct; stop arguing if reviewer is immovable and no new evidence exists
268
269### Phase 9: Render HTML view (auto, when `RENDER_HTML = true`, default)
270
271After Phase 6 (initial rebuttal) or Phase 8 (follow-up rounds) finalize `rebuttal/REBUTTAL_DRAFT_rich.md`, invoke:
272
273```
274/render-html "rebuttal/REBUTTAL_DRAFT_rich.md"
275```
276
277Full review gate (reviewer-facing pre-submission deliverable). Do NOT render `rebuttal/PASTE_READY.txt` (it's exact-character-count plain text by design).
278
279**Non-blocking**: if `/render-html` fails, log the failure and treat the rebuttal phase as complete — the `PASTE_READY.txt` and `REBUTTAL_DRAFT_rich.md` are the canonical outputs.
280
281Skip if `RENDER_HTML = false`.
282
283## Key Rules
284
285- **Large file handling**: If Write fails, retry with Bash heredoc silently.
286- **Never fabricate.** No invented evidence, numbers, derivations, citations, or links.
287- **Never overpromise.** Only promise what user explicitly approved.
288- **Full coverage.** Every reviewer concern tracked and accounted for.
289- **Preserve raw records.** Reviews and MCP outputs stored verbatim.
290- **Global + per-reviewer structure.** Shared concerns in opener.
291- **Answer friendly reviewers too.** Reinforce supportive framing.
292- **Meta-reviewer closing.** Summarize resolved/remaining/why accept.
293- **Evidence > rhetoric.** Derivations and numbers over prose.
294- **Concede selectively.** Narrow honest concessions > broad denials.
295- **Don't waste space on unwinnable arguments.** Answer once, move on.
296- **Respect the limit.** Character budget is a hard constraint.
297- **Resume cleanly.** Continue from REBUTTAL_STATE.md on rerun.
298- **Anti-hallucination citations.** Any reference added must go through DBLP → CrossRef → [VERIFY].
299
300## Review Tracing
301
302After each `spawn_agent` or `send_input` reviewer call, save the trace following `../shared-references/review-tracing.md`. Write files directly to `.aris/traces/rebuttal/<date>_run<NN>/`. Respect the `--- trace:` parameter when present (default: `full`).