Monorepo for Aesthetic.Computer aesthetic.computer
core papers QUALITY-RUBRIC.md
10.0 kB

The Quality Rubric for AC Papers #

What a finished paper on papers.aesthetic.computer has to clear before it counts as done. This is the companion to VOICE.md (how a paper sounds) and HAND.md (how code reads) — this file is how a paper is built and checked. It was reverse-engineered from the publishing stack itself: cli.mjs, tools/check-columns.mjs, the three .sty files, bin/gen-cover.mjs, and the figure-rich exemplar arxiv-keymaps/keymaps.tex. When the tooling and this doc disagree, the tooling wins — fix this file.

The exemplar to hold a flagship paper against is arxiv-keymaps. When in doubt, open it.

Two of these gates are enforced by tools today; everything else is enforced by reading the paper next to keymaps. The two hard gates are flagged [HARD].


A — Voice & argument (VOICE.md) #

  • A1 First person, plain. "i built this," not "the author implemented." Grep the .tex for we propose, the authors, it should be noted, a novel approach to, in this paper we → zero hits.
  • A2 Conviction, quiet but absolute. The conclusion states a belief plainly. No "results suggest potential viability."
  • A3 Em dashes for asides, short sentences, fragments that land. ---, not semicolon or parenthesis chains.
  • A4 Cite when it matters, never to prove you read things. No paragraph is a bare pile of \citep{}.
  • A5 The register gradient holds: abstract formal-ish but ends on a line that lands; intro opens on the thing, not a lit survey; body is whiteboard-precise; limitations say what's broken before anyone asks; conclusion is yours.
  • A6 One source file for cards + arxiv. Never maintain divergent content across formats.

B — Structure #

  • B1 Abstract in a \begin{quote}…\textbf{Abstract.} block after the title. One dense paragraph, lands on its last line.
  • B2 Introduction names the object first — often "Figure 1 is…" — and ends with a one-line roadmap of the movements to come.
  • B3 Numbered body sections carry \label{sec:…} and cross-reference each other by label.
  • B4 A limitations pass, or an honest counter-case, that argues against the paper's own favored object at least once — without minimizing or dramatizing.
  • B5 Conclusion restates the contribution and the belief.
  • B6 \section*{Acknowledgments} when there's a residency or venue context, with the pals badge.

C — Citations #

  • C1 natbib + plainnat. Every .bib entry is actually \cited; every \cite resolves. Build shows no "undefined citation."
  • C2 Load-bearing citations are real and read — the theoretical anchor is cited repeatedly, not name-dropped once.
  • C3 Diversity is a quality axis, not an afterthought. The house target from the arxiv-diversity audit: ≥30% women authors, ≥20% non-Western authors. A cluster of citations that is all-male or all-Western is a defect to fix before publishing, the same as a broken build. Verify each new citation's metadata against a primary source — guessed page numbers and years are how wrong citations ship.
  • C4 Prefer the platter reading corpus (system/public/assets/papers/ readings/) as the scholarly foundation where it fits.

D — Figures (the keymaps standard) #

Keymaps carries 7 figures (2 full-width figure*), 2 tables, and 28 QR tiles. A flagship paper is expected to show its argument, not just state it.

  • D1 Real figures built from the argument — hand-built TikZ diagrams, or captured screenshots of the actual thing under discussion (a UI, a piece, a real user comment) — not decorative filler.
  • D2 Wide content spans both columns via figure*[t] / table*[p].
  • D3 Captions are dense and explanatory. A caption says what to read and what it proves. "Figure 1: the system" fails.
  • D4 Where the paper catalogs external objects, each resolves to a canonical home via a \qrc{} QR tile.
  • D5 Inline micro-glyphs (\key{}, keycap chips, etc.) used consistently when they aid reading.
  • D6 Screenshots are legitimate evidence: the coarse UI being criticized, the AC piece being praised, the user comment proving demand. Caption them like exhibits — say what the reader is looking at and why it is in the paper.

E — Cover (bin/gen-cover.mjs) #

  • E1 A hand-rendered emblem on cream paper (colored pencil + gouache, silkscreen imperfection) generated by gen-cover.mjs (OpenAI gpt-image-2). Reads like a record-label seal or a band-tee print.
  • E2 ONE singular subject, floating in the central two-thirds, periphery dissolving to bare paper. No frame, no border, no background scene, no clusters.
  • E3 Never spell the subject's name. Identity is carried by emblem, silhouette, color, era.
  • E4 Muted natural palette, square 1:1.
  • E5 Prompt lives at figures/cover-prompt.txt; output figures/cover.png.
  • E6 Included in the title block at width=0.5–0.7\textwidth, centered.
  • E7 The cover feeds the index tile (genCoverTile); a paper with a figures/cover.png gets a designed tile instead of a page-1 render.

F — Typography & layout #

  • F1 \documentclass[10pt,letterpaper,twocolumn]{article}, % !TEX program = xelatex. (Essays use ac-paper-essay.sty; cards use ac-paper-cards.sty.)
  • F2 Geometry 0.75in margins, folio clear of the sheet edge.
  • F3 Body is Latin Modern (Roman/Sans/Mono, mono Scale=0.85). YWFT Processing (\acbold/\aclight) is reserved for the title and header only — its punctuation glyphs are unreliable in body text.
  • F4 AC palette exact: acpink 180,72,135 · acpurple 120,80,180 · acdark 64,56,74 · acgray 119,119,119. Diagram chips (acgreen/etc.) allowed.
  • F5 \section = bold, normalsize, UPPERCASE, \thesection., tight spacing.
  • F6 hyperref links colored acpurple; xurl loaded; pdftitle/pdfauthor set.
  • F7 Long identifiers/paths wrap via a \code{}-style command so they never overflow. Two-column breaking tuned (\tolerance, \emergencystretch, \hyphenpenalty). Use \raggedbottom so short paragraphs don't get their inter-paragraph glue stretched into false "title" spacing.
  • F8 [HARD] Nothing may break the columnar arrangement. node papers/cli.mjs check reports zero Overfull \hbox > 0.5pt. This is the rule: nothing ships that breaks the columns.
  • F9 Title block: \acbold title in acdark, cover, italic subtitle in acpink, byline @jeffrey · Aesthetic.Computer · ORCID 0009-0007-4460-4913, language bar, then a pink rule. Every dot in "Aesthetic.Computer" is the pink \acdot.

G — Build & publish hygiene (cli.mjs) #

  • G1 [HARD] Build is xelatex 3-pass + bibtex (xelatex; bibtex; xelatex; xelatex). Success = a real PDF exists, not exit code.
  • G2 [HARD] No silent failure: the .log contains no ! Package fontspec Error and no nullfont. A stub PDF from a font fallback is a broken build even though xelatex exits 0.
  • G3 Deterministic PDFs: SOURCE_DATE_EPOCH from newest source mtime. Same bytes in → same bytes out (this is what keeps the oven from auto-commit loops).
  • G4 Version stamp: \InputIfFileExists{version} pulls \paperhash (git short hash, + if the paper dir is dirty) and \paperrev, with a dev/? fallback, rendered in a colophon badge.
  • G5 History stamp: \InputIfFileExists{history} renders an in-PDF changelog from the git log of the paper's own .tex.
  • G6 Draft watermark on by default (45° pink "WORKING DRAFT" + the "Working Draft — not for citation" header). A print edition turns it off.
  • G7 Registered in PAPER_MAP: { base, siteName, title }, siteName ending -26-arxiv (or -essay / -deck / -dossier-26-arxiv).
  • G8 In exactly one CATEGORIES lane (platform / essays / audits / decks / dossiers / software). Uncategorized triggers a WARN.
  • G9 Has an IMPORTANCE rank (missing → 99, sinks to the bottom of the index).
  • G10 metadata.json entry with a real created date; revisions increments on each publish.
  • G11 Thumbnail generated in thumbs/{siteName}.jpg (cover tile preferred).
  • G12 Index + Atom feed regenerated; verify reports zero broken PDF links.
  • G13 PAPER_COPY entry with a detail line and an abstract for the index card and the feed.
  • G14 Optional lanes if present: cards ({base}-cards.tex), translations (da/es/zh/ja/ru), a PODCASTS reading.

The review pass (run this before calling a paper done) #

  1. Voice — grep the banned phrases (A1); the conclusion states a belief (A2, B5).
  2. Structure — abstract-quote, object-first intro with roadmap, honest limitations, conclusion, acknowledgments (B1–B6).
  3. Citations — every entry cited and resolving; metadata verified against primary sources; ≥30% women / ≥20% non-Western (C1–C3).
  4. Figures — real diagrams and captured exhibits with dense captions; wide ones as figure*; QR tiles resolve (D1–D6).
  5. Cover — single emblem, cream paper, no name, 1:1; included at 0.5–0.7\textwidth (E1–E6).
  6. Layout — 10pt twocolumn, Latin Modern body + ywft title, palette exact, node papers/cli.mjs check = 0 overflows (F1–F9).
  7. Build/publish — xelatex 3-pass+bibtex clean, .log free of fontspec Error/nullfont, watermark on for drafts, registered in PAPER_MAP / CATEGORIES / IMPORTANCE / PAPER_COPY / metadata.json, thumbnail + feed
    • no broken links (G1–G13).

The teeth today are F8 and G1–G2 — the column check and a clean, non-stub xelatex build. Everything else is enforced by holding the paper up next to keymaps and being honest about the difference.


Maintained alongside VOICE.md. Update this when the tooling changes.