docs: merge the duplicated printed-documents entry in AGENTS.md - #17
Merged
Merged
Conversation
AGENTS.md stated the printed-documents contract twice, in two paragraphs that disagreed about what it promises. This resolves them into one entry carrying every claim either made: - the general rule that a block too particular for a macro is a body fragment documents `\input`, with cv/header.tex and cv/supervision.tex named as its instances; - that only cv/cv.tex prints \cvAutoSections, that a variant is a curated subset, and that it still honours `printed: false` because it reaches every section through \cvpart; - that a section declared under `publications.sections` for one document's sake changes the full CV and the website, because each section subtracts the ones declared before it; - the layout/curation line, stated once. Every claim was checked against cv/cv.tex, cv/short.tex, cv/teaching.tex, cv/preamble.tex and scripts/build-cv-data.mjs; all still hold. No TeX, generator, content or check changed, and all three PDFs still match their baselines. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
eduardstan
added a commit
that referenced
this pull request
Jul 31, 2026
AGENTS.md stated the printed-documents contract twice, in two paragraphs that disagreed about what it promises. This resolves them into one entry carrying every claim either made: - the general rule that a block too particular for a macro is a body fragment documents `\input`, with cv/header.tex and cv/supervision.tex named as its instances; - that only cv/cv.tex prints \cvAutoSections, that a variant is a curated subset, and that it still honours `printed: false` because it reaches every section through \cvpart; - that a section declared under `publications.sections` for one document's sake changes the full CV and the website, because each section subtracts the ones declared before it; - the layout/curation line, stated once. Every claim was checked against cv/cv.tex, cv/short.tex, cv/teaching.tex, cv/preamble.tex and scripts/build-cv-data.mjs; all still hold. No TeX, generator, content or check changed, and all three PDFs still match their baselines.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Intent
AGENTS.md stated the printed-documents contract twice: two paragraphs both opening 'Three documents are printed: cv/cv.tex, cv/short.tex and cv/teaching.tex', which disagreed about what the contract promises. The user asked to resolve them into ONE entry with every claim from either paragraph surviving - explicitly NOT a plain deduplication. Required survivals, all preserved in the merged paragraph: (1) the second paragraph's GENERAL rule that a block too particular for a macro is a body fragment the documents \input, with cv/header.tex (contact block) and cv/supervision.tex (hand-set section) kept as its named instances - the general rule wins over the first paragraph's instance-only phrasing; (2) the first paragraph's constraint that only cv/cv.tex prints \cvAutoSections, that a variant is a curated subset, and that it still honours printed: false because it reaches every section through \cvpart; (3) the second paragraph's warning that a section declared under publications.sections for one document's sake changes the full CV AND the website, because each section subtracts the ones declared before it; (4) the layout-vs-curation line both paragraphs drew (entry count on \cvpart and a single-document \defbibfilter are layout; curation is marked on the fact, as selected is in content/publications.bib) - stated once instead of twice. Every claim was verified against the code before writing: cv/cv.tex:79 prints \cvAutoSections and neither variant does; cv/preamble.tex:243-249 shows \cvpart guards on \cvPrinted; scripts/build-cv-data.mjs:334-342 (afterEarlier) shows each section subtracts earlier ones; web/src/lib/cv-schema.ts:200-203 shows the website labels by first match, so the same declaration moves website labels too; cv/supervision.tex:4-7 states the body-fragment rule itself. No claim was found stale. Scope was deliberately limited to this one documentation entry: no TeX, generator, content or check was touched, and the printed PDFs must stay byte-identical. Verified locally: npm run check, npm test and npm run check:maintainer all exit 0, and all three built PDFs still match their data/cv-baseline/ entries. The diff is AGENTS.md only, 11 insertions and 18 deletions. Prose style intentionally follows the surrounding AGENTS.md voice (em dashes, the existing terminology), and AGENTS.md's own 'Maintaining this file' rule to prefer rewriting existing entries over appending is what this change carries out.
What Changed
Three documents are printed:paragraphs inAGENTS.mdinto one entry, keeping every claim either paragraph made rather than dropping one wholesale.\input(withcv/header.texandcv/supervision.texas its named instances), the constraint that onlycv/cv.texprints\cvAutoSectionswhile still honouringprinted: falsethrough\cvpart, and the warning that a section declared underpublications.sectionsfor one document changes the full CV and the website; the layout-versus-curation line is now stated once instead of twice.npm run check:maintainerstill matches all three built PDFs against theirdata/cv-baseline/entries.Risk Assessment
✅ Low: Single documentation paragraph merge in AGENTS.md with every claim verified against the code it describes and no executable file touched.
Testing
Ran the repository's own AGENTS.md path check and the full targeted test set (
npm test) after installing missing dependencies, then built all three printed documents with XeLaTeX and rannpm run check:maintainer, which confirmed every PDF still matches its recorded baseline — consistent with the diff touching only AGENTS.md, a file no build input reads. Because the change is prose, I also wrote a focused manual verification script proving the printed-documents entry now occurs exactly once, that all four required claims (general body-fragment rule with cv/header.tex and cv/supervision.tex as named instances, the \cvAutoSections-only-in-cv.tex constraint with its printed: false honouring, the publications.sections warning about the full CV and the website, and the layout-vs-curation line stated once) survive in the merged paragraph, and that each claim still matches the code it describes. Reviewer-visible visual evidence is a screenshot of the section rendered at both commits side by side, showing two contradicting entries before and one merged entry after. Everything passed; no findings./tmp/no-mistakes-evidence/01KYT21800MWRW550NAKXYKY5C/agents-md-before-after.png)Evidence: Same before/after render as standalone HTML
Evidence: Claim-survival and code-agreement verification transcript
entry occurrences: 1 (expected 1) surviving claims in the merged entry PASS 1. general body-fragment rule (2nd para) with both named instances PASS 2a. only cv/cv.tex prints \cvAutoSections; a variant is a curated subset PASS 2b. it still honours printed: false, reaching every section through \cvpart PASS 3. one document's publications.sections declaration changes the full CV AND the website PASS 4. layout vs curation, stated once PASS 5. no fact repeated per variant (both paragraphs) claims checked against the code they describe PASS cv/cv.tex prints \cvAutoSections and neither variant does PASS \cvpart guards on \cv<Key>Printed (so \cvAutoSections honours printed: false) PASS generator subtracts every earlier section predicate PASS website labels a publication by its FIRST matching section PASS cv/supervision.tex states the body-fragment rule itself ALL CHECKS PASSEvidence: Verification script used for the manual check
Evidence: Merged AGENTS.md entry as committed (plain text)
Claim-by-claim survival
The two paragraphs this change replaced, and the single paragraph that replaces them:
Every claim either paragraph made, where it survived, and the code that was read to confirm it is
still true today:
cv/cv.tex,cv/short.tex,cv/teaching.tex\begin{document}cv/preamble.texholds every shared package, style and macro\input{preamble.tex}\input(general rule)cv/supervision.tex:4-7states exactly this rule about itselfcv/header.texis the contact block;cv/supervision.texis that hand-set section (instances)cv/header.tex:1-2,cv/supervision.tex:2-7cv/cv.tex:8-14,cv/short.tex:9-13,cv/teaching.tex:9-12cv/short.tex:4-7,cv/teaching.tex:5-7\cvpart{...}{Appointments}onlycv/cv.texprints\cvAutoSections; a variant is a curated subset, and printing every unnamed section is what it exists not to docv/cv.tex:79prints it;cv/short.tex:17-24andcv/teaching.tex:16-23document not printing it, and neither doesprinted: false, because it reaches every section through\cvpartcv/preamble.tex:243-249—\cvpartcalls\cvdeclarethen guards on\ifnum\csname cv#3Printed\endcsname>0;scripts/build-cv-data.mjs:24,569-570emits0forprinted: false\cvpartand a\defbibfilteronly one document prints are layoutcv/short.tex:66,68(\cvpart[2]),cv/teaching.tex:50(\cvpart[3]),cv/short.tex:40(\defbibfilter{shortselected}, used by no other document)selectedis incontent/publications.bibcv/short.tex:29-31;selectedis a keyword on the entries themselvespublications.sectionsfor one document's sake changes the full CV and the website, because each section subtracts the ones declared before itscripts/build-cv-data.mjs:334-342(afterEarliersubtracts every earlier predicate,printed: falseones included);web/src/lib/cv-schema.ts:200-203labels an entry by the first matching section, so the same declaration moves website labels too;cv/short.tex:33-39is the worked warningNo claim was found stale. Every statement in both paragraphs is still true of the code as it
stands, so nothing had to be rewritten or dropped for accuracy — the merge is purely about saying
each thing once, in the stronger of the two phrasings.
Scope and proof
Scope was one documentation entry. No TeX, generator, content or check changed: the diff is
AGENTS.mdonly (11 insertions, 18 deletions).The printed documents are unchanged. All three were rebuilt with
latexmk -xelatex -cd cv/<doc>.texandnpm run check:maintainer— which compares every built PDFagainst its
data/cv-baseline/entry — exits0, socv.pdf,short.pdfandteaching.pdfallstill match their recorded baselines.
npm run check(adopter checks)0npm test(repository + website self-checks, generated-data freshness)0npm run check:maintainer(all three PDFs vsdata/cv-baseline/)0git status --porcelainafter all buildsM AGENTS.mdonlyPipeline
Updates from git push no-mistakes
✅ **intent** - passed
✅ No issues found.
✅ **Rebase** - passed
✅ No issues found.
✅ **Review** - passed
✅ No issues found.
✅ **Test** - passed
✅ No issues found.
npm ciandnpm --prefix web ci(dependencies were absent; setup fix only)node --test scripts/agents-md.test.mjs— the repository's own AGENTS.md check that every repository path named in the file exists (covers cv/cv.tex, cv/short.tex, cv/teaching.tex, cv/preamble.tex, cv/header.tex, cv/supervision.tex, content/publications.bib)npm test— website self-checks, generator contract tests, baseline-script tests and the generated-data freshness gatelatexmk -xelatex -cd cv/cv.tex,cv/short.tex,cv/teaching.texthennpm run check:maintainer— all three built PDFs compared against data/cv-baseline/ entries, exit 0node /tmp/no-mistakes-evidence/01KYT21800MWRW550NAKXYKY5C/verify-merge.mjs $PWD— manual check that the 'Three documents are printed' entry occurs exactly once, that all four required claims plus the no-fact-repeated line survive in the merged paragraph, and that each claim still holds in cv/cv.tex, cv/preamble.tex (\cvpart printed guard), scripts/build-cv-data.mjs (afterEarlier), web/src/lib/cv-schema.ts (bibSectionFor first-match) and cv/supervision.texgrep -con AGENTS.md confirming the layout-vs-curation line and the \defbibfilter clause each appear once in the whole filegit diff --name-only 1f205fe 9243845plus a grep of scripts/, web/, cv/, .github/ confirming no build input reads AGENTS.md, so no printed output can changeManual render of the AGENTS.md section at both commits to HTML, opened in Chrome and screenshotted for a reader-visible before/after✅ **Document** - passed
✅ No issues found.
✅ **Lint** - passed
✅ No issues found.
✅ **Push** - passed
✅ No issues found.