cmos dev 2bd1bdf0d4 cli: parallelize formatter calls with thread pool
reformat_draft now uses concurrent.futures.ThreadPoolExecutor with a
default of 8 workers. OpenAI SDK calls are synchronous but network-
bound, so threads release the GIL during I/O and give real speedup.
ThreadPoolExecutor.map preserves input order regardless of completion
order, so output is deterministic.

Empirical: HML draft (134 entries) went from ~25 min serial to 1m55s
with concurrency=12. ~12x speedup; further increases hit OpenAI rate
limits.

CLI gains a --concurrency flag (default 8) for tuning per draft size /
rate limit headroom. concurrency=1 forces serial execution for
debugging. New test asserts that order is preserved when concurrent
calls finish out of input order (uses a sleep-by-index fake formatter).
2026-04-11 00:42:56 -04:00

cmos — Chicago Manual of Style 18 bibliography reformatter

A Python tool that reformats the bibliography section of an English-language markdown draft to CMOS 18th edition, notes-and-bibliography form.

Accuracy-first, iterative, built with a karpathy/autoresearch-style dev loop.

See program.md for the goal specification and /home/claudecode1/.claude/plans/pure-mixing-yao.md for the implementation plan.

Quick start

uv sync
uv run pytest
uv run cmos format path/to/draft.md > out.md

Layout

  • src/cmos/formatter.py — the iterable artifact (edited every loop iteration).
  • src/cmos/parser.py — extracts the bibliography section from a draft.
  • src/cmos/linter.py — deterministic CMOS 18 rule checks (versioned).
  • src/cmos/cli.pycmos format entry point.
  • harness/score.py, harness/diff.py — frozen scoring.
  • exemplars/ — TOML test corpus.
  • tests/ — pytest suite (linter, parser, formatter, cli).
  • rough_drafts/ — user-supplied messy drafts for ad-hoc iteration.
  • logs/ — per-run scores, model ids, linter version hashes.
S
Description
No description provided
Readme
209 KiB
Languages
Python 100%