---
name: light0305/light-review-rebuttal
source: https://app.decimal.ai/s/light0305-light-review-rebuttal@1/SKILL.md
source_sha256: bf1d939e61ce
---

# Review and rebuttal

Build a source-preserving review registry, issue matrix, revision plan,
evidence/change map, response draft, commitment ledger, unknown/failure record,
and delivery package. Treat prose generation as the last layer, not the first.

Read [`review-rebuttal-resource-map.md`](review-rebuttal-resource-map.md) before
a real run. Read
[`references/workflow_contract.md`](references/workflow_contract.md) before
creating or consuming canonical JSON. Read [`references.md`](references.md)
when selecting review/rule sources. The competitor evidence is
[`../../docs/competitors/review-rebuttal.md`](../../docs/competitors/review-rebuttal.md).

## Non-negotiable boundaries

1. Consume venue-matching's selected handoff and review context. Verify selected
   identity, `selected_at` timezone, `selection_basis`, user/delegated
   authorization, chosen candidate ID, fit/risk row, unmodified rule envelopes,
   source evidence path/as-of/source IDs, manuscript profile, and PDF
   path/hash/pages/page size/profile/compliance. Never switch venue, reorder
   tiers, or turn venue `UNKNOWN` into a fact.
2. Keep reviewer, editor, decision, and meta-review text verbatim in the
   canonical registry. Atom labels, root causes, strategies, and generated
   prose are interpretation layers; they never replace source text.
3. Record fetch time, source URL/type, round, reviewer ID, attachments and
   `AVAILABLE|UNKNOWN|UNAVAILABLE|STALE`. A 401/403/429/5xx, timeout, login,
   private invitation or network failure is `UNAVAILABLE`, not “no review.”
4. Never invent an experiment, analysis, citation, change, line number,
   reviewer identity, venue rule or result. `PLANNED` and `IN_PROGRESS` may not
   be phrased as completed. `DONE` requires a real change locator; completed
   experiment/analysis additionally requires verifiable run provenance with a
   matching SHA-256, not merely a local path.
   Before marking a response package ready, run the atom/action contract gate so
   source spans, reconstruction hashes, policy/ethics authorization and
   perspective-specific self-review are machine-checked rather than trusted.
5. Paper-writing owns manuscript claims and edits. Result-analysis owns
   evidence strength. Citation owns new-reference identity and claim support.
   Figure owns visual honesty. Typesetting owns PDF rebuild/compliance. This
   skill records and routes work; it does not impersonate those producers.
6. Stage 13 critical is narrow: only a routable root cause
   (`novelty|experiment|writing`) explicitly marked `rejection_driving=true`
   with a complete decision/meta-review/reviewer evidence envelope may become
   critical. Major labels or an overall Reject alone do not make every comment
   critical.
7. `reviewer_classify` and `reroute` produce advice only. Stop after presenting
   evidence and alternatives. Run `passport add-back-edge` only after the user
   chooses the root cause/back-edge. Never mutate the passport automatically.

## Canonical workflow

### 1. Verify upstream identity

Require:

- `light.selected_venue_handoff.v1`;
- `light.review_rebuttal_venue_context.v1`;
- `light.paper_claims.v1`;
- `light.evidence_strength.v1`;
- citation registry when any new citation is proposed;
- the actual delivered PDF and its stage-11 facts.

Run:

```bash
python scripts/review_workflow.py \
  --spec review-input.json \
  --outdir review-delivery
```

If venue identity, rule envelopes, PDF hash, compliance, claims or evidence IDs
do not agree, stop and repair the producer artifact. Do not “normalize” a
conflict away.

The selected handoff must also retain A32's audit fields: timezone-bearing
`selected_at` that is not in the future, non-empty `selection_basis`,
`decision_authority=user`, coherent `selected_by/status`, delegated
`user_authorization` when applicable,
unchanged `fit_risk`, and a readable `source_evidence.path` whose SHA-256
matches the selected handoff and whose `as_of/source_ids` cover every sourced
venue rule.

### 2. Capture reviews and decisions

For user-provided/private material, copy the text into `reviews[].raw_text`
without correction and record `reviews[].raw_sha256` plus a timezone-aware
`captured_at`; the workflow re-computes the hash and blocks future/naive capture
times. For a public OpenReview forum:

```bash
python scripts/fetch_openreview.py \
  --forum <forum-id> \
  --out openreview-capture.json
```

If the live API is unavailable but a fixed public PeerRead/OpenReview snapshot
is the declared evidence source, capture that exact commit-pinned JSON instead:

```bash
python scripts/fetch_openreview.py \
  --peerread-url <raw-fixed-commit-json-url> \
  --out peerread-capture.json
```

The capture is calibration/source evidence. Do not redistribute restricted
reviews. If capture is unavailable, continue only with material the user
provided and retain the failure record.

### 3. Atomize without erasing source

Create one atom for each distinct `request`, `claim`, `question`,
`misunderstanding`, or `editorial` item. Each atom must contain an exact
contiguous source span copied from `raw_text`, with start/end offsets, span
text and SHA-256. Also create addressable coverage units and a reconstruction
hash for the reviewer units that require a response.

Assign one root cause such as `novelty`, `experiment`, `writing`,
`clarification`, `citation`, `ethics`, `scope`, or `editorial`. Add a separate
interpretation explaining the inferred concern. If a sentence contains two
independent asks, create two atoms pointing to the same or overlapping source
span; do not paraphrase the reviewer into a new source quote.

Run the stricter losslessness/response-action gate before drafting:

```bash
python scripts/review_response_contract.py \
  --input templates/review-response-contract.example.json
```

Replace the template with the real contract. The example is intentionally
non-passing until current venue policy, ethics state and user authorization are
verified. This gate catches missing reviewer units, duplicate atom/action
coverage, fake DONE wording, incomplete evidence kinds, policy-forbidden
reviewer requests, missing reviewer competence/conflict cards, and missing
`domain|method|statistics|ethics|cold_reader` self-review perspectives.

### 4. Bind issues to owned evidence and actions

For every atom:

- bind exact paper `claim_id` values or leave the list empty;
- bind only real result-analysis evidence IDs;
- choose one strategy:
  `acknowledge_and_fix`, `rebut_with_evidence`, `clarify`,
  `downgrade_claim`, or `request_editor_ruling`;
- assign an owner and `PLANNED|IN_PROGRESS|DONE|DECLINED|NOT_APPLICABLE`;
- add change locator only after paper-writing actually edits the manuscript;
- add run provenance only after an experiment/analysis actually runs; for
  `DONE` experiment/analysis the artifact path must exist and match
  `run_provenance.sha256`;
- route new references through citation and keep them out until `CONFIRMED`.

Reviewer error is not permission to ignore a comment. Clarify with manuscript
locator and evidence, or request editor ruling when the disagreement is
material.

When a reviewer request itself conflicts with venue policy, ethics approval,
data rights, consent, budget authorization or editor instructions, do not
silently comply. Mark the action as `DECLINED` or `REQUEST_RULING`, bind the
policy/ethics evidence, and keep the reviewer wording intact.

### 5. Budget from the selected venue only

Run:

```bash
python scripts/rebuttal_budget.py \
  review-delivery/response-draft.md \
  --context review-rebuttal-context.json
```

An `AVAILABLE` current authoritative rule can yield PASS/FAIL. `UNKNOWN`,
`UNAVAILABLE`, `STALE`, or a page-only rule stays non-passing and explicit.
Never apply an ICLR/CVPR/other venue preset to JORS or vice versa.

For every reviewer request for new numbers/experiments, classify it before any
run as reanalysis/minimal/adapted/new-data plus feasibility and intended action:

```bash
python scripts/experiment_request_gate.py \
  --input templates/experiment_request.example.json
```

The template is intentionally `UNKNOWN` and non-passing until current official
rules and a real user authorization replace its placeholders.
`RUN` requires a VERIFIED current venue rule with `source_type=OFFICIAL`, a real
source and ISO check date that allows new results, plus feasible scope, protocol,
budget and user authorization. Tier-D new data/human study/
large sweep needs separate authorization. This gate only permits a run;
`DONE` still requires run manifest + result artifact hash, and only then may
the response use completed tense.

### 6. Check commitment truth

Run:

```bash
python scripts/check_commitments.py \
  --ledger review-delivery/commitment-ledger.json \
  --issues review-delivery/issue-matrix.json \
  --change-map review-delivery/evidence-change-map.json
```

Repair every critical finding. A valid locator proves only that a claimed
change is traceable, not that the scientific response is adequate; perform a
human re-review against the actual revised artifact.

### 7. Gate and pause

Run:

```bash
python scripts/reviewer_classify.py \
  --issues review-delivery/issue-matrix.json \
  --out reviewer-findings.json
python ../light-orchestrator/scripts/run_checkpoint.py \
  --file .light/passport.yaml --stage 13 \
  --findings reviewer-findings.json --ts <ISO-8601> --write
python ../light-orchestrator/scripts/reroute.py \
  --findings reviewer-findings.json --stage 13 \
  --passport .light/passport.yaml
```

If the gate fails, present each evidenced option:

- 13→3 for rejection-driving novelty;
- 13→5 for rejection-driving experiment/design;
- 13→8 for rejection-driving writing/presentation;
- rebut with evidence;
- downgrade the claim or record a limitation;
- request editor ruling.

Stop for the user's choice. Only then run:

```bash
python ../light-orchestrator/scripts/passport.py add-back-edge \
  --to <3|5|8> --from 13 --root-cause "<user-approved reason>" \
  --evidence-ptr <issue/evidence locator> --file .light/passport.yaml
```

## Resource ownership

| Resource | Responsibility |
|---|---|
| `review-rebuttal-resource-map.md` | execution order, source/access layers, cross-skill routing |
| `references/workflow_contract.md` | schemas, statuses, invariants and artifact semantics |
| `references.md` | live source policy, OpenReview/JORS caveats, verification guidance |
| `templates/*` | blank author inputs and human-readable response/re-review shapes |
| `scripts/review_workflow.py` | canonical validation and package emission |
| `scripts/review_response_contract.py` | source-span/reconstruction, atom coverage, response-action evidence, policy/ethics, reviewer-card and self-review gate |
| `scripts/fetch_openreview.py` | live API or fixed public snapshot capture; honest unavailable state and duplicate accounting |
| `scripts/reviewer_classify.py` | only evidenced rejection-driving stage-13 findings |
| `scripts/check_commitments.py` | coverage and PLANNED/DONE/provenance gate |
| `scripts/rebuttal_budget.py` | selected-context budget assessment; no venue presets |
| `scripts/experiment_request_gate.py` | venue-policy/feasibility/tier/authorization gate; never runs experiments |

## Self-check

- [ ] Selected venue/context, user-selection audit fields, source-evidence hash and actual PDF facts agree byte-for-byte.
- [ ] Reviewer/editor/meta-review source text is preserved and every atom points
  to an exact source span with offset and hash.
- [ ] Every available review source has timezone-aware `captured_at` and
  `raw_sha256`; the registry hash matches the exact `raw_text`.
- [ ] Addressable reviewer units reconstruct to the expected hash; no unit is
  omitted or duplicated unless explicitly justified.
- [ ] Every issue has type, root cause, strategy, owner and truthful status.
- [ ] Every response action declares evidence kind; `DONE` rows have real
  locators; completed scientific actions have run provenance path + SHA-256
  match; proposed citations are citation-confirmed.
- [ ] Reviewer competence/conflict cards are recorded but never used to dismiss
  comments without editor ruling.
- [ ] Domain, method, statistics, ethics and cold-reader self-review all pass or
  have unresolved blockers surfaced before package-ready.
- [ ] Current venue response limits are sourced, or remain `UNKNOWN`.
- [ ] Commitment coverage passes and no planned action is written as done.
- [ ] Every experiment ask has tier/feasibility/action; RUN is venue-verified and user-authorized.
- [ ] Critical findings have explicit rejection-driving evidence.
- [ ] Reroute advice was shown to the user and no passport edge was added before
  the user's choice.

## Honest capability boundary

Atomization, triage, point-by-point drafting, tone guidance, reviewer priority,
budgeting, change locators, promise tracking and venue adaptation are common in
peer skills; do not claim them as unique. Light's narrower machine contribution
is verified consumption of upstream venue/PDF/claim/evidence/citation
contracts, immutable source versus interpretation layers, strict
PLANNED/DONE/run-provenance checks, and evidence-gated stage-13 routing that
cannot execute without a user decision. Classification and response quality
still require expert judgment.