{% extends "base.html" %} {% from "_help.html" import info %} {% from "_job_status.html" import job_status %} {% block title %}Critique — Paperful{% endblock %} {% block body_attrs %}{% if poll_run %} data-poll-run="{{ poll_run }}"{% endif %}{% endblock %} {% block content %}

Critique

A local pre-submission / reading-aid pack. Deterministic checkers always run. Optional review lanes (reviewers, MARG-S, adversary, claims, verify, context) are separate suggested extras and can run together. There is no score, grade, or accept/reject. Uploads stay under state/critiques/uploads/ and are not written to out/ or Zotero.

{% if error == 'target' %}
Pick a library item or upload a file, not both and not neither.
{% endif %} {% if error == 'format' %}
That file type is not supported. Use pdf, txt, md, html, rtf, docx, odt, pptx (legacy .doc needs a converter on PATH).
{% endif %} {% if error == 'size' %}
The upload is larger than 40 MB.
{% endif %} {% if error and error not in ('target', 'format', 'size') %}
{{ error }}
{% endif %} {{ job_status(run_rec, 'Critique') }}

Library item

Scope follows the collection chip. Overlap and “cited but not in library” use that collection’s extracted text when state/rag/text/ exists.

{% if llm_on %} {% endif %} {{ info("Writes state/critiques///pack.json and pack.md. Does not fetch or attach.") }} {% if not items %}

No items in the current collection chip. Set a collection on Library, or upload a draft below.

{% endif %}

Upload a draft

Drop a manuscript you have not imported. The copy stays under state/critiques/uploads/. It is never a Zotero parent and never lands in out/.

{% if llm_on %} {% endif %} {{ info("Same checkers as --file. Collection chip is the overlap corpus when text is already cached.") }}
{% if result and result.counts %}

This pack

Findings: {{ result.findings or result.counts.findings or 0 }} {% if result.critique_id %}· id {{ result.critique_id }}{% endif %} {% if result.applied %}· child note written{% endif %}

{% if pack_md %}
{{ pack_md }}
{% endif %}
{% endif %} {% if recent %}

Recent packs

On disk under state/critiques/. Dismiss findings with paperful critique dismiss ID.

{% for row in recent %} {% endfor %}
TitleIdFindingsStamp
{{ row.title }} {{ row.critique_id }} {{ row.findings }} {{ row.stamp }}
{% endif %} {% endblock %}