# Paragraph and section architecture

Use this guide before sentence polishing. A fluent sentence cannot repair a paragraph with no argumentative role.

## Paragraph contract

Every paragraph must have four traceable parts:

1. **Role** — background, gap, claim, mechanism, evidence, interpretation, limitation, or transition.
2. **Topic sentence** — states the paragraph's message, not merely its topic.
3. **Development** — supplies reasoning, evidence, or decomposition needed for that message.
4. **Exit** — establishes why the next paragraph is needed.

Do not force all four into separate sentences. The contract describes functions, not a rigid template.

## Reverse outline

After drafting, create this table from the actual text:

| Paragraph | Role | One-sentence message | Evidence/reasoning | Link to paper claim | Next-paragraph bridge |
|---|---|---|---|---|---|

Repair any paragraph that:

- contains two unrelated messages;
- has a topic sentence that only names a subject;
- introduces evidence without interpreting it;
- repeats a previous paragraph's role;
- cannot be mapped to a paper-level claim;
- ends without advancing the argument.

## Sentence flow test

Label the relation between adjacent sentences: `CAUSE`, `CONTRAST`, `DETAIL`, `EVIDENCE`, `CONSEQUENCE`, or `QUALIFICATION`. If no relation is defensible, reorder, add the missing reasoning, or delete one sentence. Avoid adding a transition word when the logical relation itself is absent.

## Information order

Prefer known-to-new order:

1. connect to an entity already introduced;
2. state the new action or distinction;
3. place the highest-value new information near the sentence end.

Define a term before using its abbreviation, property, or pronoun. Keep one stable name for each method, module, dataset, and metric.

## Output contract

When revising a section, return:

1. a reverse outline of the original;
2. structural problems ranked by scientific impact;
3. the revised text;
4. a reverse outline of the revision;
5. claims weakened or marked `AUTHOR_INPUT_NEEDED`.

