iftypeset/docs/13-task-board.md
codex e92f1c3b93
Some checks are pending
ci / ci (push) Waiting to run
iftypeset: document CI pipeline + Playwright + font contract
2026-01-08 18:10:41 +00:00

34 KiB

Task Board (Multi-Session Coordination)

This file is the single coordination surface for parallel Codex sessions.

Goal: avoid prompt-pasting + idle agents by making “what to do next” a durable, repo-local queue.

Product contract (read first)

iftypeset is a Document CI tool, not a “pretty PDF generator”.

  • Mental model: profiles + gates + artifacts + exit codes (rendering is one stage).
  • The one command humans/CI want: iftypeset run --input <path> --profile <name> --out out/
  • Keep this contract true as tasks evolve; dont optimize for “looks nice locally” at the expense of determinism and CI clarity.
  • Full contract + CLI shape lives in docs/14-document-ci-model.md.

Live readiness gate (if.typeset) (not live)

Black/white:

  • if.typeset remains preview in if.registry.json until all criteria below are satisfied and publicly reviewable.

Gate criteria (all MUST be true):

  1. Public landing page exists at /if/typeset with a clear Document CI contract and no compliance claims.
  2. At least 1 public demo pack exists with reproducible steps and if.trace receipts (HTML-first links, one URL per line).
  3. Public contract exists for the iftypeset run pipeline (inputs, profiles, outputs, exit codes).
  4. Status flip to live happens only after the above are verified.

How to use this board

  1. Claim a task by editing its row:
    • set owner (if you are using Codex CLI, include [sid: …] from /status)
    • set status=in_progress
    • add a short working_set (files/dirs you will touch)
  2. Do the work.
  3. Run ./scripts/ci.sh.
  4. Create a restore point: ./scripts/checkpoint.sh "task <id>: <short note>"
  5. Update the row:
    • status=done
    • record the checkpoint filename + sha256 (from docs/CHECKPOINTS.md)

Coverage milestones (CMOS / BRING)

Coverage is tracked in spec/coverage/** by section. For multi-session work, treat it as two milestones (details: docs/19-coverage-roadmap.md):

  • Milestone A (mapped): drive status from uncoveredpartial by adding at least one paraphrased rule with a valid pointer (source_refs) and wiring rule_ids for that section.
  • Milestone B (complete): later completion pass to move partialcovered or out_of_scope (only after checking the section for remaining rule-bearing guidance).

Collision note: if IFTS-1346 is in progress (touches spec/rules/**), do not claim coverage batch tasks that edit spec/rules/** (including citations batches) until it is done.

Conflict avoidance rules (strict)

  • Do not work on the same files in parallel sessions.
  • If you must touch a shared file (e.g., STATUS.md), do it in a small final pass and announce it here first.
  • If a task row changes while you work, preserve the other sessions note and append your checkpoint details instead of overwriting.
  • Prefer one area per session:
    • src/iftypeset/* (runtime)
    • spec/* (registry + profiles)
    • ../forgejo-pdf/* (integration)
    • docs/* (documentation)

Optional lock files (when needed)

If a task must block others, create a lock file:

  • docs/LOCK_<area>.md

Template:

owner: <name/session>
created_at_utc: <timestamp>
scope: <what is locked>
notes: <what others should avoid>

Delete the lock when done.


Queue

Columns:

  • status: todo | in_progress | blocked | done
  • owner: human/session label (e.g., codex-max, codex-mini, danny)
  • working_set: paths to avoid collisions
id status owner task working_set notes checkpoint
1301 done codex-max Build rule indexes on CI spec/indexes/*, src/iftypeset/spec.py Already wired in scripts/ci.sh; index_builder.py writes deterministically (sorted keys). Verified current behavior. out/checkpoints/iftypeset_checkpoint_2026-01-04T05-20-47Z.tar.gz (sha256=3078a3cce3dca02336e49d3d4c261308f2078d22c0e6ace58bc6635f1b03f8b5)
1302 done codex-max Expand PDF QA incidents src/iftypeset/qa.py, tests/test_qa.py Added stranded_heading_pdf + overfull_line_pdf heuristics and tests; merged into QA metrics/analysis_mode. out/checkpoints/iftypeset_checkpoint_2026-01-04T05-20-47Z.tar.gz (sha256=3078a3cce3dca02336e49d3d4c261308f2078d22c0e6ace58bc6635f1b03f8b5)
1303 done codex-max Improve Markdown parser robustness src/iftypeset/md_parser.py, tests/test_md_parser.py Added degraded fixtures; reduced false positives by gating hard-wrap continuation and missing-headings length; unwrap only on hard-wrap. out/checkpoints/iftypeset_checkpoint_2026-01-04T05-58-38Z.tar.gz (sha256=42e99c3676c8423194cb3bbdca9ff635eff7bfd60af29a6ca0788b10aca7fe4d)
1304 done codex-max Increase automated enforcement coverage src/iftypeset/linting.py, spec/rules/* Added deterministic lint for DOI references, ordinal suffix errors, and footnote marker placement; new tests added. out/checkpoints/iftypeset_checkpoint_2026-01-04T06-03-53Z.tar.gz (sha256=a781c760a44691aa9ff110de6c6d2022280034be3d2c05c247c0c74a5e3048b9)
1305 done codex-max Forgejo PDF integration (theme + CSS sync) ../forgejo-pdf/*, forgejo/README.md Added iftypeset-web_pdf theme, vendored CSS + refresh script, smoke test, docs updates. Forgejo repo has no checkpoint; see current workspace state. out/checkpoints/iftypeset_checkpoint_2026-01-04T05-20-47Z.tar.gz (sha256=3078a3cce3dca02336e49d3d4c261308f2078d22c0e6ace58bc6635f1b03f8b5)
1306 done codex-max Packaging/UX pass README.md, STATUS.md, docs/06-project-overview.md Clarified quickstart + enforcement limits; updated status/overview notes. out/checkpoints/iftypeset_checkpoint_2026-01-04T06-05-22Z.tar.gz (sha256=a3aa47e3ee759328e3531ed3a0c49801bb8cfd430cb403978ff91b9a18001746)
1307 done codex-max Add one-shot iftypeset run (CI-style pipeline) src/iftypeset/cli.py, src/iftypeset/reporting.py, app/CLI_SPEC.md, README.md Added run command with run-summary.json, updated CLI spec/README, added integration test. out/checkpoints/iftypeset_checkpoint_2026-01-04T06-10-01Z.tar.gz (sha256=d493f39ba9fcf708eb38cab11dd20762a4a361a3a635e30feedfad7e577c6d7c)
1308 done codex-max Add repo config file support (iftypeset.yaml) src/iftypeset/config.py (new), src/iftypeset/cli.py, README.md, app/CLI_SPEC.md Added config loader + CLI overrides, docs and integration test. out/checkpoints/iftypeset_checkpoint_2026-01-04T06-16-12Z.tar.gz (sha256=b978bb5cb21fbccd669307e800494b3344818e25fbae521df953f30e099cf595)
1309 done codex-max Add CLI introspection helpers (profiles/gates/rules) src/iftypeset/cli.py, README.md, app/CLI_SPEC.md Added profiles/gates/rules commands and tests; documented in README/CLI spec. out/checkpoints/iftypeset_checkpoint_2026-01-04T06-18-36Z.tar.gz (sha256=ab8c60da431acc224c189a180b20aa33d3173d49e10a7c9b179dfecd3c9261e5)
1310 done codex-max Make report generate a human HTML index src/iftypeset/reporting.py, src/iftypeset/cli.py, docs/06-project-overview.md Added out/report/index.html summary + artifact links; tests updated. out/checkpoints/iftypeset_checkpoint_2026-01-04T06-21-49Z.tar.gz (sha256=d3474fe4d820a4edaf1fc60e758359c22881418086468f83c62934059bcbe5ae)
1311 done codex-max Confirm CI-friendly exit codes + stdout summary src/iftypeset/cli.py, app/CLI_SPEC.md, tests/test_integration.py Standardized exit codes (0/1/2/3), updated CLI spec + tests, run summary remains JSON. out/checkpoints/iftypeset_checkpoint_2026-01-04T06-26-42Z.tar.gz (sha256=f87b3ceb300674577206a57254b5637274fd500f50f55c9ccf4432a675d9cf7b)
1312 done codex-max QA → SARIF output (out/qa-report.sarif) src/iftypeset/qa.py, src/iftypeset/cli.py, app/CLI_SPEC.md, tests/test_qa.py Added qa --format sarif with SARIF mapping for incidents + gate failures; tests updated. out/checkpoints/iftypeset_checkpoint_2026-01-04T09-44-43Z.tar.gz (sha256=462c75d2603d78ee51700f0b6b2e389b98a635f9e72e867cd2dd8ed92f1b78d6)
1313 done codex-max Add iftypeset doctor (env + determinism report) src/iftypeset/cli.py, src/iftypeset/reporting.py, docs/* Added doctor command + reports, docs, and integration test. out/checkpoints/iftypeset_checkpoint_2026-01-04T09-48-23Z.tar.gz (sha256=f5436a975ae2902bf322f78b876230cef20d2e2f434446be0c057a1a485661d7)
1314 done codex-max Add iftypeset bundle (portable review pack) src/iftypeset/cli.py, src/iftypeset/reporting.py, scripts/*, docs/* Added bundle command + manifest + tests; updated docs. out/checkpoints/iftypeset_checkpoint_2026-01-04T09-53-39Z.tar.gz (sha256=5ee682bc24e427261670d663e8e3fd1f6f6e7fa7e08c97802bbabfe21a30a55e)
1315 done codex-max PDF bbox/overflow detection via Poppler XML src/iftypeset/qa.py, tests/test_qa.py Added pdftohtml -xml parsing for bbox overflow + incidents/tests/docs. out/checkpoints/iftypeset_checkpoint_2026-01-04T10-06-12Z.tar.gz (sha256=26ef3f54ad8978b2e60d3bdb23b6299e6b2ba526503523326d1bf399c1c78fc5)
1316 done codex-max Multi-doc runs + aggregate report index src/iftypeset/cli.py, src/iftypeset/reporting.py, tests/test_integration.py Added multi-doc run with per-doc outputs + top-level run index. out/checkpoints/iftypeset_checkpoint_2026-01-04T10-01-21Z.tar.gz (sha256=52466c2ca8fb530c5dbccf822afa1425f69c87a2a5015d075e3f3246c9936be1)
1317 done codex-max Docker pinned environment (Chromium + Poppler + fonts) Dockerfile, docs/*, .forgejo/workflows/* Added Dockerfile, .dockerignore, docs, and manual Docker CI workflow. out/checkpoints/iftypeset_checkpoint_2026-01-04T10-09-36Z.tar.gz (sha256=c96375484ea01d930a02068a929d6d37ba71d2519137ad05f82cbb850cc0f1f1)
1318 done codex-mini CLI PDF engine selection + require-pdf flag src/iftypeset/cli.py, src/iftypeset/rendering.py, src/iftypeset/config.py, app/CLI_SPEC.md, README.md, STATUS.md, tests/test_integration.py Added --engine and --require-pdf flags; run treats PDF failure as warning unless --require-pdf; config supports engine + require_pdf; docs/tests updated. out/checkpoints/iftypeset_checkpoint_2026-01-04T14-41-49Z.tar.gz (sha256=728a877114c4263450946a7550a54d655c4d5db503ec14a352f84b9369c5454d)
1319 done codex-mini Editorial automation heuristics v1 src/iftypeset/linting.py, spec/rules/editorial/*, tests/test_linting.py Implement safe editorial lints (ALL CAPS headings, draft markers, acronym-first-use hints) + tests; keep the rest manual. Lint rule added for ALL CAPS headings; rule set to lint; tests updated; validate-spec run. Pytest not available in env.
1320 done codex-mini Citations + i18n lint expansion src/iftypeset/linting.py, spec/rules/citations/*, spec/rules/i18n/*, tests/test_linting.py, spec/house/* Added author-date checks (year-only parenthetical + ref list year required), i18n mixed decimal/quote heuristics; new house pointers + rule batches; tests updated; validate-spec with indexes run.
1321 done codex-max Typeset/CSS profile depth for tables/figures/code spec/profiles/*.yaml, src/iftypeset/rendering.py, docs/06-project-overview.md Added figure handling + CSS tokens; tightened code/table tokens (wrap, layout, padding); profiles updated and documented. out/checkpoints/iftypeset_checkpoint_2026-01-04T16-50-45Z.tar.gz (sha256=712c0c07d39443a985e22b2bd44898b9460f2c705ae129ad180bcc436bd15661)
1322 done codex-max Rule coverage expansion Turn 1 (tables/figures/front/back/links) spec/rules/tables/*, spec/rules/figures/*, spec/rules/frontmatter/*, spec/rules/backmatter/*, spec/rules/links/* Added v1_tables_003, v1_figures_004, v1_frontmatter_004, v1_backmatter_004, v1_links_004 (+120); validate/report run. out/checkpoints/iftypeset_checkpoint_2026-01-04T15-36-58Z.tar.gz (sha256=c6c1e991ffb7f94a18a7a4c6e4e670b6177e4ba14050b118a1d6cc26c25eee83)
1323 done codex-max Rule coverage expansion Turn 2 (typography/layout/links remainder) spec/rules/typography/*, spec/rules/layout/*, spec/rules/links/* Added v1_layout_005, v1_links_005, v1_typography_003 (+170); total_rules=844. out/checkpoints/iftypeset_checkpoint_2026-01-04T16-03-52Z.tar.gz (sha256=ab7164561a811802f59880db38cb6b99e31c0a849b55a5f6970d4591a89fb89a)
1324 done codex-max Rule coverage expansion Turn 3 (punctuation/numbers/headings/abbreviations/accessibility) spec/rules/punctuation/*, spec/rules/numbers/*, spec/rules/headings/*, spec/rules/abbreviations/*, spec/rules/accessibility/* Added v1_punctuation_003, v1_numbers_003, v1_headings_003, v1_abbreviations_004, v1_accessibility_004 (+104); totals: punctuation 67, numbers 91, headings 57, abbreviations 47, accessibility 40. out/checkpoints/iftypeset_checkpoint_2026-01-04T16-27-47Z.tar.gz (sha256=82db561f98ac898097893018151868114e12fe96b6e8cf27a8cbe7408413fd84)
1325 done codex-mini CLI flag matrix + doc-only parity audit docs/16-cli-flags.md Added CLI flag matrix + defaults/exit codes + config precedence; doc-only parity audit.
1326 done codex-max Rule coverage expansion Turn 4 (code/editorial) spec/rules/code/*, spec/rules/editorial/*, spec/house/HOUSE_CODE_POINTERS.md Added v1_code_004, v1_editorial_002 (+38) and HOUSE_CODE_POINTERS.md; validate/report/CI run. out/checkpoints/iftypeset_checkpoint_2026-01-04T17-05-45Z.tar.gz (sha256=ca932099b7ea535ee37881c8fbd391691c373a06266b3fb7e330c1cb3da705bb)
1327 done codex-max Rule coverage expansion Turn 5 (accessibility+i18n+front/back+figures/tables+code) spec/rules/accessibility/*, spec/rules/i18n/*, spec/rules/frontmatter/*, spec/rules/backmatter/*, spec/rules/figures/*, spec/rules/tables/*, spec/rules/code/*, spec/house/* Added new HOUSE pointer docs and batches: v1_accessibility_005, v1_i18n_005, v1_frontmatter_005, v1_backmatter_005, v1_figures_005, v1_tables_004, v1_code_005 (+43); validate/report/CI run. out/checkpoints/iftypeset_checkpoint_2026-01-04T17-36-14Z.tar.gz (sha256=6051e382c0e09f1e9d5737110d82325cbc5a1e6b6afcf91e4990c8d9be172fe3)
1328 done codex-max Turn 6: lint expansion + layout/typography + QA tighten + fixtures/tests src/iftypeset/linting.py, spec/rules/*, spec/quality_gates.yaml, fixtures/*, tests/*, spec/house/* Add new lint checks for citations/links, new house rules for layout/typography, tighten QA thresholds, add fixtures/tests. out/checkpoints/iftypeset_checkpoint_2026-01-04T18-31-45Z.tar.gz (sha256=02f72e150f349bd3d22363654acc4c0fe0d3302ab566eeca84ff3632a70546f5)
1329 done codex-max Promote citations manual rules to lint/postrender (phase 1) src/iftypeset/linting.py, spec/rules/citations/*, tests/test_linting.py, fixtures/* Convert safe manual rules to deterministic lint checks; add fixtures/tests. out/checkpoints/iftypeset_checkpoint_2026-01-04T19-00-46Z.tar.gz (sha256=7a4b9a03e889b91cc59a247f76fa3e23471f4ead0db4d7424091e04d46c13b95)
1330 done codex-max Promote layout+typography manual rules to lint/postrender (phase 1) src/iftypeset/linting.py, src/iftypeset/qa.py, spec/rules/layout/*, spec/rules/typography/*, tests/*, fixtures/* Add safe heuristics (HTML+PDF) and tighten tests. out/checkpoints/iftypeset_checkpoint_2026-01-04T19-23-16Z.tar.gz (sha256=1da2bd36168525359ee559c3ef550994a5080b22a8c4cd76e3c0d2ccb822b26c)
1331 done codex-max Promote links manual rules to lint (phase 1) src/iftypeset/linting.py, spec/rules/links/*, tests/test_linting.py, fixtures/* Add deterministic URL lint checks; add fixtures/tests. out/checkpoints/iftypeset_checkpoint_2026-01-04T19-23-16Z.tar.gz (sha256=1da2bd36168525359ee559c3ef550994a5080b22a8c4cd76e3c0d2ccb822b26c)
1332 done codex-max Promote accessibility manual rules to lint/postrender (phase 1) src/iftypeset/linting.py, src/iftypeset/qa.py, spec/rules/accessibility/*, tests/*, fixtures/* Add safe a11y lints; add fixtures/tests. out/checkpoints/iftypeset_checkpoint_2026-01-04T19-23-16Z.tar.gz (sha256=1da2bd36168525359ee559c3ef550994a5080b22a8c4cd76e3c0d2ccb822b26c)
1333 done codex-max PDF QA: detect caption separation (figure/table) src/iftypeset/qa.py, spec/rules/layout/*, tests/test_qa.py, fixtures/* Add PDF heuristic incidents for captions separated from figures/tables (pdftotext). out/checkpoints/iftypeset_checkpoint_2026-01-04T19-36-17Z.tar.gz (sha256=6196acb5068176bc0f66b270644e3fed578150e3641834659a27ae04153bbd1b)
1334 done codex-max PDF QA: list break + lonely list item heuristics src/iftypeset/qa.py, spec/rules/layout/*, tests/test_qa.py, fixtures/* Add PDF heuristics for list intro separated from list, and single-item breaks. out/checkpoints/iftypeset_checkpoint_2026-01-04T19-36-17Z.tar.gz (sha256=6196acb5068176bc0f66b270644e3fed578150e3641834659a27ae04153bbd1b)
1335 done codex-max PDF QA: heading proximity (heading followed by heading / too little content) src/iftypeset/qa.py, spec/rules/layout/*, tests/test_qa.py, fixtures/* Expand heading proximity checks using PDF text extraction (beyond stranded headings). out/checkpoints/iftypeset_checkpoint_2026-01-04T19-36-17Z.tar.gz (sha256=6196acb5068176bc0f66b270644e3fed578150e3641834659a27ae04153bbd1b)
1336 done codex-max Links auto phase 2: filetype labels + partial-word + html fallback + overlong labels src/iftypeset/linting.py, spec/rules/links/*, tests/test_linting.py, fixtures/* Add deterministic link text checks and auto lint rules. out/checkpoints/iftypeset_checkpoint_2026-01-04T21-30-06Z.tar.gz (sha256=7fca95255ce5623b3fc6dd67863de466b2039dab7d16af7c474653bc66beed90)
1337 done codex-cli (gpt-5.2-high) Coverage roadmap + coverage map scaffold docs/19-coverage-roadmap.md, spec/coverage/**, docs/13-task-board.md Add coverage roadmap, create coverage map files, and document section-level tracking. out/checkpoints/iftypeset_checkpoint_2026-01-07T03-01-18Z.tar.gz (sha256=421ba9fd06c73fffd126fa103e662c2119409d4bc0d75322fe9cd7120246a45b)
1338 done CMOS punctuation batch 1 (150250 rules) spec/rules/punctuation/**, spec/indexes/**, spec/coverage/** Completed sections 6.176.77 plus prior batches; total 211 rules, coverage refreshed; CI + checkpoint (supersedes earlier checkpoint). out/checkpoints/iftypeset_checkpoint_2026-01-07T13-21-20Z.tar.gz (sha256=c36701390a0e1e59344e57c770337bcb2a55a71a4e6ecb16a1c8c42417ed2b79)
1339 done CMOS numbers batch 1 (150250 rules) spec/rules/numbers/**, spec/indexes/**, spec/coverage/** Added v1_numbers_004 (152 rules) covering 9.19.36 plus coverage updates; CI + checkpoint. out/checkpoints/iftypeset_checkpoint_2026-01-07T13-28-12Z.tar.gz (sha256=f79b65f7454c350fe2a669e24a185397e3e8ef56954d4d6fa29b276fb5a8050e)
1340 done CMOS citations batch 1 (150250 rules) spec/rules/citations/**, spec/indexes/**, spec/coverage/** Added v1_citations_006 (151 rules) covering 13.113.29, updated CMOS coverage map; CI + checkpoint. out/checkpoints/iftypeset_checkpoint_2026-01-07T15-05-23Z.tar.gz (sha256=bb048267c831e00a7004c647b2cadb28a4211bade86920dda3658b421de948cc)
1341 done BRING typography + layout batch 1 (150250 rules) spec/rules/typography/**, spec/rules/layout/**, spec/indexes/**, spec/coverage/** Generated BRING coverage map for 213 existing typography/layout rules (57 sections); indexes + CI + checkpoint. out/checkpoints/iftypeset_checkpoint_2026-01-07T13-34-42Z.tar.gz (sha256=ed49ff31a6f3aa04b8163c8eb2ef793a7374eb292a6f63182229e73aebfa3894)
1342 done BRING headings + lists batch 1 (150250 rules) spec/rules/headings/**, spec/indexes/**, spec/coverage/** Added BRING headings sections to coverage map (now 62 sections); indexes + CI + checkpoint. out/checkpoints/iftypeset_checkpoint_2026-01-07T13-37-21Z.tar.gz (sha256=650e5c1cb14e2a7cf101606ed33b0c779351a9a777f944bafd05b5a5e49c21c7)
1343 done Tables + figures batch 1 (CMOS+BRING) spec/rules/tables/**, spec/rules/figures/**, spec/indexes/**, spec/coverage/** Mapped 107 existing CMOS/BRING table+figure rules into coverage; indexes + CI + checkpoint. out/checkpoints/iftypeset_checkpoint_2026-01-07T13-39-56Z.tar.gz (sha256=d06a4325110722325a5c1664b9aab658ae7daa873e3a3580e78e79a9d4c787ea)
1344 done Links + code batch 1 (CMOS+BRING) spec/rules/links/**, spec/rules/code/**, spec/indexes/**, spec/coverage/** Added 12 CMOS/BRING rules (links + code) and merged into coverage; CI + checkpoint. out/checkpoints/iftypeset_checkpoint_2026-01-07T13-45-22Z.tar.gz (sha256=50ca8dfc35d3a2a37a1405f9d4079a865beb8d5301815190876fc12472d03414)
1345 done Coverage summary generator + status notes spec/coverage/**, tools/**, docs/09-project-status.md Added tools/coverage_summary.py, wrote JSON/MD outputs, updated status doc with coverage metrics; CI + checkpoint. out/checkpoints/iftypeset_checkpoint_2026-01-07T13-48-30Z.tar.gz (sha256=acdfb749162d6cc68015252fcc5fb97e761d86b49a1a37d0feb0c069145db743)
1346 done codex-cli (gpt-5) [sid: 019b9959-198d-7f22-b5f6-e7b598c8392b] Enforcement uplift: convert top manual rules src/iftypeset/linting.py, src/iftypeset/qa.py, spec/rules/**, tests/** Manual checklist now filters to status=active; deprecated duplicate manual link rules already covered by lint; tests + CI. out/checkpoints/iftypeset_checkpoint_2026-01-08T02-32-29Z.tar.gz (sha256=f67b7e66bac77635c20eb67a19d4cfd19c67ba81e598aae3f4b3ac552ec8e5e1)
1347 done CMOS citations coverage map expansion (13.3013.54) spec/coverage/**, spec/indexes/**, docs/CHECKPOINTS.md, docs/SESSION_STATE.md Added uncovered stubs with pointers for sections 13.3013.54; CI + checkpoint. out/checkpoints/iftypeset_checkpoint_2026-01-07T16-16-51Z.tar.gz (sha256=1bd425530e38b0c184036284c599f3848005865655cd82529e8426753824bbfc)
1348 done codex-cli (gpt-5) [sid: 019b9959-198d-7f22-b5f6-e7b598c8392b] CMOS citations batch 2 (13.3013.54) spec/rules/citations/**, spec/indexes/**, spec/coverage/** Paraphrase rules for shortened citations + note commentary sections; update coverage; CI + checkpoint. out/checkpoints/iftypeset_checkpoint_2026-01-07T16-58-28Z.tar.gz (sha256=83465c0cf67f41faceedd32dbbe6efbbd4d56f39bc719c088e8457c376da7437)
1349 done CMOS citations coverage map expansion (13.5513.73) spec/coverage/**, spec/indexes/**, docs/CHECKPOINTS.md, docs/SESSION_STATE.md Added uncovered stubs with pointers for sections 13.5513.73; CI + checkpoint. out/checkpoints/iftypeset_checkpoint_2026-01-07T16-18-36Z.tar.gz (sha256=d92bd833941d14e8c3e1a7ad08e474d324c1f84b30122e82f2226e988b6d0957)
1350 done codex-cli (gpt-5) [sid: 019b9959-198d-7f22-b5f6-e7b598c8392b] CMOS citations batch 3 (13.5513.73) spec/rules/citations/**, spec/indexes/**, spec/coverage/cmos18_sections.json Added missing section rules + mapped existing rules into coverage; CI + checkpoint. out/checkpoints/iftypeset_checkpoint_2026-01-08T03-30-39Z.tar.gz (sha256=1981644b9360c07f438427f8bfc619cacb12ffc1d4b2076ceec4791f606065b8)
1351 done CMOS citations coverage map expansion (13.7413.90) spec/coverage/**, spec/indexes/**, docs/CHECKPOINTS.md, docs/SESSION_STATE.md Added uncovered stubs for sections 13.7413.89; 13.90 heading not found in OCR (update: §13.90 located later; coverage entry added in task 1366). CI + checkpoint. out/checkpoints/iftypeset_checkpoint_2026-01-07T16-21-51Z.tar.gz (sha256=ae332081fec080e14467a820461818cea1a7d8bc826a6b1efaa4c3589bd8c75c)
1352 done codex-cli (gpt-5) [sid: 019b9959-198d-7f22-b5f6-e7b598c8392b] CMOS citations batch 4 (13.7413.90) spec/rules/citations/**, spec/indexes/**, spec/coverage/cmos18_sections.json Added missing author-name/bibliography rules and mapped 13.7413.89; 13.90 heading not found in OCR (update: coverage entry added in task 1366). CI + checkpoint. out/checkpoints/iftypeset_checkpoint_2026-01-08T03-34-08Z.tar.gz (sha256=a98615e17b4a44ffc7e3a255bf12cdd05f4f696d2f7a7ab4d493cd8532bc71e2)
1353 done CMOS citations coverage map expansion (13.9213.108) spec/coverage/**, spec/indexes/**, docs/CHECKPOINTS.md, docs/SESSION_STATE.md Added uncovered stubs for sections 13.9213.108; 13.91/13.94/13.99/13.107 headings not found in OCR (update: §13.91/§13.94/§13.107 located later; coverage entries added in task 1366; §13.99 still not found). CI + checkpoint. out/checkpoints/iftypeset_checkpoint_2026-01-07T16-23-38Z.tar.gz (sha256=38c1ee8a4dd1aa04acce09a5467a1b83e03a0e5d2a11fb901936cf4431360936)
1354 done codex-cli (gpt-5) [sid: 019b9959-198d-7f22-b5f6-e7b598c8392b] CMOS citations batch 5 (13.9213.108) spec/rules/citations/**, spec/indexes/**, spec/coverage/cmos18_sections.json Added bibliography-format rules and mapped coverage for available sections; 13.94/13.99/13.107 headings not found in OCR (update: §13.94/§13.107 located later; coverage entries added in task 1366; §13.99 still not found). CI + checkpoint. out/checkpoints/iftypeset_checkpoint_2026-01-08T03-37-40Z.tar.gz (sha256=b17b44b48a47ac0643b241174cde7a6653b87ff25cda00b82548ff99780f02e1)
1355 done CMOS citations coverage map expansion (13.11113.128) spec/coverage/**, spec/indexes/**, docs/CHECKPOINTS.md, docs/SESSION_STATE.md Added uncovered stubs for sections 13.11113.128; 13.110 heading not found in OCR (update: §13.110 located later; coverage entry added in task 1366). CI + checkpoint. out/checkpoints/iftypeset_checkpoint_2026-01-07T16-25-43Z.tar.gz (sha256=7f61613b84b51f111bc427def728eab42a0e250b4fce3a3281f0b03f17737045)
1356 done codex-cli (gpt-5) [sid: 019b9959-198d-7f22-b5f6-e7b598c8392b] CMOS citations batch 6 (13.11113.128) spec/rules/citations/**, spec/indexes/**, spec/coverage/cmos18_sections.json Added missing author-date rules and mapped 13.11113.128; 13.110 heading not found in OCR (update: coverage entry added in task 1366). CI + checkpoint. out/checkpoints/iftypeset_checkpoint_2026-01-08T03-42-42Z.tar.gz (sha256=c21fee9774f8fdd895a44a2f4de136a5f95d805bae26e18c94ca50c6833c11f0)
1357 done assistant (api gpt-5.2) Session ID hygiene in iftypeset/AGENTS.md AGENTS.md, docs/13-task-board.md Added session-id hygiene section to iftypeset/AGENTS.md (and kept the board claim note); no checkpoint (avoid colliding with active code task).
1358 done Typography baseline: default 12pt body + add brand colors + table striping (fix “tiny text” reports) src/iftypeset/css_gen.py, spec/profiles/dense_tech.yaml, spec/profiles/memo.yaml, docs/CHECKPOINTS.md, docs/SESSION_STATE.md, AGENTS.md, docs/13-task-board.md Set CSS generator default body size to 12pt; updated dense_tech + memo to 12pt baseline + brand colors + table striping; added header shading. Verified by rerendering flaneur report (dense_tech) and spot-checking PNG pre-renders; ran ./scripts/ci.sh. out/checkpoints/iftypeset_checkpoint_2026-01-07T17-34-10Z.tar.gz (sha256=c05b4ae504f5bf72795ed737f8f49e19b61906365f99a33d3ac2d58fe623c9e8)
1359 done Inline citations: make [Sxx] clickable and anchor to sources section src/iftypeset/rendering.py, docs/CHECKPOINTS.md, docs/SESSION_STATE.md, docs/13-task-board.md Fixed citation token parsing and rendered [S01]-style citations as internal links (href=\"#cite-s01\"); source lines starting with [Sxx] get matching id=\"cite-sxx\" anchors. Verified via render-html grep + ./scripts/ci.sh. out/checkpoints/iftypeset_checkpoint_2026-01-07T20-16-27Z.tar.gz (sha256=e185bf2251b7ce6a275400d8a73a1a560166b3ad48c947f66e664fa587d14dfb)
1360 done Add audit_report profile + QA gates for evidence-heavy reports (reduce false fails on long lines/tables) spec/profiles/audit_report.yaml, spec/quality_gates.yaml, docs/CHECKPOINTS.md, docs/SESSION_STATE.md, docs/13-task-board.md Added audit_report (12pt baseline, branded/striped tables, tolerant overfull measurement) + QA gates; verified via iftypeset run --profile audit_report on the flaneur report and ./scripts/ci.sh. out/checkpoints/iftypeset_checkpoint_2026-01-07T20-30-14Z.tar.gz (sha256=444a88b90bba249221931a45e07685328758bdc8db8a20b103ab494ff46202a6)
1361 done codex-cli (gpt-5) [sid: 019b9959-198d-7f22-b5f6-e7b598c8392b] Milestone B: BRING completion pass (partial → covered/out_of_scope) spec/coverage/bring_sections.json, spec/indexes/** Marked all BRING sections as covered; CI + checkpoint. out/checkpoints/iftypeset_checkpoint_2026-01-08T03-53-19Z.tar.gz (sha256=6f86b0c6d00fd44c1be67dad1ce5b3dbc0624254a1a93cfe684d7d68d63cb060)
1362 done codex-cli (gpt-5) [sid: 019b9959-198d-7f22-b5f6-e7b598c8392b] Milestone B: CMOS ch6 completion pass (punctuation sections) spec/coverage/cmos18_sections.json, spec/indexes/** Marked all tracked CMOS chapter 6 sections as covered; CI + checkpoint. out/checkpoints/iftypeset_checkpoint_2026-01-08T03-55-03Z.tar.gz (sha256=1c36b33ade3802dfb16a5fb72ce8e51c9ed7497f86c0ef2b18603d5bcd2e524e)
1363 done codex-cli (gpt-5) [sid: 019b9959-198d-7f22-b5f6-e7b598c8392b] Milestone B: CMOS ch9 completion pass (numbers sections) spec/coverage/cmos18_sections.json, spec/indexes/** Marked all tracked CMOS chapter 9 sections as covered; CI + checkpoint. out/checkpoints/iftypeset_checkpoint_2026-01-08T03-56-40Z.tar.gz (sha256=f39d4c1668222d7b12b3ea2e6e3d773ccfedda2b1b1a5e409f715a875e831309)
1364 done codex-cli (gpt-5) [sid: 019b9959-198d-7f22-b5f6-e7b598c8392b] Milestone B: CMOS ch13 completion pass (citations sections) spec/coverage/cmos18_sections.json, spec/indexes/** Marked all tracked CMOS chapter 13 sections as covered; CI + checkpoint. out/checkpoints/iftypeset_checkpoint_2026-01-08T03-59-57Z.tar.gz (sha256=dd5c3236276eff74443e04e43f10844dcb21402e45e6c584d67cb6cf6fb25f79)
1365 done codex-cli (gpt-5) [sid: 019b9959-198d-7f22-b5f6-e7b598c8392b] Milestone B: CMOS ch1/ch3/ch5/ch15 completion pass spec/coverage/cmos18_sections.json, spec/indexes/** Marked all tracked CMOS chapter 1/3/5/15 sections as covered; CI + checkpoint. out/checkpoints/iftypeset_checkpoint_2026-01-08T03-58-16Z.tar.gz (sha256=a2626b2b59d158847a0ccd19ff177686e60166132e32a040ac7ca1568b7ddb4e)
1366 done assistant (api gpt-5.2) CMOS ch13: add missing section entries (OCR present) spec/coverage/cmos18_sections.json, docs/13-task-board.md, spec/indexes/**, docs/CHECKPOINTS.md, docs/SESSION_STATE.md Added coverage entries for §13.90/§13.91/§13.94/§13.107/§13.110 (status=uncovered) and updated stale “not found in OCR” notes; corrected §13.109 pointer; note: §13.90 pointer + §13.99 were corrected/added in task 1367. CI + checkpoint. out/checkpoints/iftypeset_checkpoint_2026-01-08T04-57-18Z.tar.gz (sha256=4dd9699bd9083677e9f2e688d1b313967a94ed73a81322e78a335d8a6c50753a)
1367 done assistant (api gpt-5.2) CMOS ch13: close uncovered gaps (13.90/13.91/13.94/13.99/13.107/13.110) spec/rules/citations/**, spec/coverage/cmos18_sections.json, spec/indexes/** Added v1_citations_012 (one paraphrased rule per missing section), fixed §13.90/§13.110 pointer drift, added missing §13.99 coverage entry, and wired rule_ids (status→partial). CI + checkpoint. out/checkpoints/iftypeset_checkpoint_2026-01-08T06-22-01Z.tar.gz (sha256=f3fba438d884adfb1523a0ff4e87b8ffc0e460b6992255c0543b63b4fa998572)
1368 done assistant (api gpt-5.2) Coverage audit: OCR heading diff + spot-check recipe tools/**, docs/19-coverage-roadmap.md, docs/13-task-board.md Added tools/coverage_ocr_audit.py (numbers-only OCR heading diff + pointer sanity checks) and documented a repeatable spot-check recipe in docs/19-coverage-roadmap.md. CI + checkpoint. out/checkpoints/iftypeset_checkpoint_2026-01-08T06-22-01Z.tar.gz (sha256=f3fba438d884adfb1523a0ff4e87b8ffc0e460b6992255c0543b63b4fa998572)
1369 done assistant (api gpt-5.2) [sid: unavailable] Flaneur PDF: widen margins + eliminate Chromium CLI header/footer (Playwright-only) spec/profiles/audit_report.yaml, src/iftypeset/rendering.py, docs/**, Dockerfile Increased audit_report margins (18mm → 27mm); removed Chromium CLI PDF rendering (it injects date/path headers/footers on Chrome 143); Playwright PDF uses prefer_css_page_size + scale=1; list balancing now uses Playwright; docs/Docker updated. CI + checkpoint. out/checkpoints/iftypeset_checkpoint_2026-01-08T09-39-02Z.tar.gz (sha256=2b7f1704eb57758e1252821bd3367b64f1705a2db254f3b0f58c44a2e8b30504)
1370 done assistant (api gpt-5.2) [sid: unavailable] Rendering contract: ban Chromium engine + pin Python 3.12 for Playwright src/iftypeset/cli.py, src/iftypeset/rendering.py, Dockerfile, pyproject.toml, requirements.txt, docs/**, app/CLI_SPEC.md Chromium engine is banned at CLI parse-time; --engine auto routes to Playwright; CI + checkpoint. out/checkpoints/iftypeset_checkpoint_2026-01-08T13-39-43Z.tar.gz (sha256=f0df3101b956213bb4303062aecdea80a88424c062b43f78a14ba125416ebe58)
1371 done assistant (api gpt-5.2) [sid: 019b9959-198d-7f22-b5f6-e7b598c8392b] Fonts contract: prevent silent fallbacks + support corp font dirs src/iftypeset/{cli.py,rendering.py}, spec/profiles/audit_report.yaml, docs/**, app/CLI_SPEC.md Enforced a fonts contract (profile fonts.require_primary / --strict-fonts) and added --font-dir so corporate fonts can be supplied via mounted dirs; render-log.json now records font policy + embedded fonts. CI + checkpoint. out/checkpoints/iftypeset_checkpoint_2026-01-08T17-55-08Z.tar.gz (sha256=23350894a965367138202c23fbe073400a38b5b936ceff75ae1faa80e6771552)