Dissertation draft: chapters 1–3 and the two chapter manuscripts - #31
Open
Kwan-Jenny wants to merge 132 commits into
Open
Dissertation draft: chapters 1–3 and the two chapter manuscripts#31Kwan-Jenny wants to merge 132 commits into
Kwan-Jenny wants to merge 132 commits into
Conversation
This workflow renders the dissertation and manuscripts to docx format on every push to the thesis-draft branch and pull requests, ensuring reviewers can access the documents easily. It also uploads the rendered documents as artifacts for review.
Codecov Report✅ All modified and coverable lines are covered by tests. |
Contributor
There was a problem hiding this comment.
Pull request overview
Adds the full dissertation (Ch. 1–3) and two derived manuscript renders to
the repo under vignettes/articles/thesis/, along with supporting CSV
tables, formatting helpers, and CI to render docx artifacts for review.
Changes:
- Add a thesis-scoped Quarto project that renders the dissertation and
the two manuscripts to docx (separate from the package’s vignette
render settings). - Add generated analysis tables (CSVs) and Vancouver CSL styles used by
the Quarto documents. - Add rendering/formatting automation (Word table post-processing) and a
GitHub Actions workflow to render and upload docx artifacts.
Reviewed changes
Copilot reviewed 52 out of 82 changed files in this pull request and generated 5 comments.
Show a summary per file
| File | Description |
|---|---|
| vignettes/articles/thesis/vancouver.csl | Vancouver CSL used by the dissertation docx render |
| vignettes/articles/thesis/tab/table9_loo.csv | Chapter 2 LOO comparison table data |
| vignettes/articles/thesis/tab/table8_init_sensitivity.csv | Chapter 2 init sensitivity summary table data |
| vignettes/articles/thesis/tab/table8_init_filtered.csv | Filtered init sensitivity diagnostics table data |
| vignettes/articles/thesis/tab/table6_coverage.csv | Coverage simulation table data |
| vignettes/articles/thesis/tab/table2_coverage.csv | Coverage scheme comparison table data |
| vignettes/articles/thesis/tab/table10_discordance.csv | Discordance table data |
| vignettes/articles/thesis/tab/table1_cells.csv | Cell summary table data |
| vignettes/articles/thesis/tab/param_medians_two_banks.csv | Parameter-median table data (two banks) |
| vignettes/articles/thesis/tab/ch3_cascade.csv | Chapter 3 filter cascade table data |
| vignettes/articles/thesis/tab/ch2_table1.csv | Chapter 2 descriptive table data |
| vignettes/articles/thesis/tab/ch2_cascade.csv | Chapter 2 filter cascade table data |
| vignettes/articles/thesis/tab/ch1_table4_mae.csv | Chapter 1 MAE table data |
| vignettes/articles/thesis/tab/ch1_table3_age.csv | Chapter 1 age-stratified kinetics table data |
| vignettes/articles/thesis/tab/ch1_table2_kinetics.csv | Chapter 1 kinetics table data |
| vignettes/articles/thesis/tab/ch1_table1_population.csv | Chapter 1 population characteristics table data |
| vignettes/articles/thesis/fix_table_breaks.py | Post-process docx to reduce table/caption page splits |
| vignettes/articles/thesis/chapter3/vancouver.csl | Vancouver CSL used by the Chapter 3 manuscript render |
| vignettes/articles/thesis/chapter3/tab/table6_coverage.csv | Chapter 3 manuscript copy of coverage table data |
| vignettes/articles/thesis/chapter3/tab/table10_discordance.csv | Chapter 3 manuscript copy of discordance table data |
| vignettes/articles/thesis/chapter3/tab/table1_cells.csv | Chapter 3 manuscript copy of cell summary table data |
| vignettes/articles/thesis/chapter3/tab/param_medians_two_banks.csv | Chapter 3 manuscript copy of parameter-median table data |
| vignettes/articles/thesis/chapter3/tab/ch3_cascade.csv | Chapter 3 manuscript copy of filter cascade table data |
| vignettes/articles/thesis/chapter3/fix_table_breaks.py | Chapter 3 manuscript-local copy of docx table post-processor |
| vignettes/articles/thesis/chapter2/vancouver.csl | Vancouver CSL used by the Chapter 2 manuscript render |
| vignettes/articles/thesis/chapter2/tab/table9_loo.csv | Chapter 2 manuscript copy of LOO table data |
| vignettes/articles/thesis/chapter2/tab/table2_coverage.csv | Chapter 2 manuscript copy of coverage scheme table data |
| vignettes/articles/thesis/chapter2/tab/ch2_table1.csv | Chapter 2 manuscript copy of descriptive table data |
| vignettes/articles/thesis/chapter2/tab/ch2_cascade.csv | Chapter 2 manuscript copy of filter cascade table data |
| vignettes/articles/thesis/chapter2/fix_table_breaks.py | Chapter 2 manuscript-local copy of docx table post-processor |
| vignettes/articles/thesis/.gitignore | Ignore rendered docx outputs and Quarto working dirs |
| vignettes/articles/thesis/_quarto.yml | Thesis-scoped Quarto project definition and render list |
| inst/scripts/ch3/43_three_form_coverage.R | Analysis script to compare three likelihood forms’ coverage |
| inst/scripts/ch3/04_run_2x2.R | Analysis script to run the “2x2” design contrasts for Ch. 3 |
| inst/scripts/ch3/03_log_likelihood_joint.R | Joint/shared-tau likelihood implementation used by Ch. 3 scripts |
| inst/scripts/ch3/02_make_banks.R | Build parameter banks from Chapter 2 fits for downstream use |
| inst/scripts/ch3/01_make_xs_subset.R | Build the Chapter 3 cross-sectional analysis set |
| inst/scripts/ch2/stan_ch2_functions.R | Standalone R utilities to build Ch. 2 Stan data/priors and fit |
| inst/scripts/ch2/sim_ch2_seed.R | Chapter 2 simulation replicate runner |
| inst/scripts/ch2/run_ch2_461.R | Runner for the 461-subject Ch. 2 fits |
| inst/scripts/ch2/new_fIle.R | Empty placeholder file (likely accidental) |
| inst/scripts/ch2/chain_stacking.R | Chain-stacking script using PSIS-LOO |
| inst/scripts/ch2/ch2_report.R | Summarize simulation and real-data fit scoring across schemes |
| inst/extdata/model_ch2_v5.stan | Updated Ch. 2 Stan model v5 (rho_c unbounded; other updates) |
| inst/extdata/model_ch2_v4.stan | Ch. 2 Stan model v4 (bounded rho_c) retained for reference |
| .github/workflows/render-thesis-vignettes.yaml | CI workflow to render docx artifacts for dissertation/manuscripts |
Suppressed comments (1)
inst/scripts/ch3/04_run_2x2.R:88
- The sensitivity section sources
R/09_lod_age_sensitivity.Rand callsapply_sensitivity(), but neither the sourced file nor the function exists anywhere in this repo. This makes the script non-runnable as committed; either add the missing helper script/function, or remove/guard this block.
# --- sensitivity levers: LOD_STD and AGE_MAX --------------------------
# no-ops unless the environment variable is set. Both the data threshold
# and noise$y.low are changed together, and the helper verifies it.
source(file.path("R", "09_lod_age_sensitivity.R"))
.sens <- apply_sensitivity(xs, noise)
xs <- .sens$data
💡 Add a code-review agent skill or configure MCP servers for context-aware, tailored reviews. Learn more in the docs.
Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>
Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>
Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>
spellcheck reported fifteen words, none of them a misspelling. Twelve are people named in the acknowledgments -- Aiemjoy, Cheng, Jiang, Jiming, Jong, Lai, Richelle, Schildhauer, Seon, Tae, Vaidya, Yoon -- and two are terms the chapters use: immunosorbent, in "enzyme-linked immunosorbent assay", and SEAP. All fourteen go into inst/WORDLIST, which spelling::spell_check_package() already reads and which holds the same repository's existing accepted spellings; the file is byte-sorted, and re-sorting after the append leaves every existing entry in place. The fifteenth was "bdf", from the commit hash a925bdf in deferred.md's header. It is not a word and does not belong in a dictionary. The three hashes are now in backticks, which {spelling} strips from Markdown along with every other code span. That also matches what the file already does with every other identifier it names -- tbl-banks, sec-ch3-honest, @lee2026correlated -- so the header now follows the convention the entries do. Excluding the file through the reusable workflow's exclude input was the alternative and was not taken: it would stop the file being checked at all, where backticking keeps it checked and fails loudly if a future header update leaves a hash bare. Verified by running spelling::spell_check_package(".") locally: fifteen words before, zero after. The line-break check still passes on deferred.md, and it still renders as a fourteen-item list.
The rendered docx carried seventeen wp:docPr elements with descr="" -- the alt-text slots existed and were empty, and UC Davis requires them filled. Quarto's fig-alt does not reach docx; it is dropped entirely by that writer, confirmed by rendering a figure with it set and finding the string nowhere in document.xml. The one source route that does reach descr is text in the ![...] brackets, and that renders as a second visible caption on the pkgdown site, which publishes these files. So the alt text is applied after the render instead, in fix_submission.py, which touches the dissertation only and leaves both standalone manuscripts and the HTML output alone. The descriptions live in fig-alt.yml beside the script: build input for the submission step, read by nothing else, and found relative to __file__ so it works from either caller's working directory. It is hand-parsed rather than handed to PyYAML because the render workflow installs no Python packages and this script has no third-party imports; a cross-check confirms the parser and PyYAML agree on all seventeen keys and values. Matching is by figure id, never by position. Quarto writes each id into the document as a bookmark before its picture, so a description is tied to its own figure, and the match must be a bijection: no duplicate bookmarks, every picture claiming a distinct one, every id carrying an entry, every entry used. Anything short of that writes nothing and exits non-zero, following the precedent set by section_break() for a missing bookmark. A wrong description is invisible -- the page is unchanged and a screen reader reads it out with confidence -- so a silent partial write is the one outcome worth failing the build to prevent. Attribute values are escaped, ampersand first, and control characters are rejected rather than stripped. The substitution uses a lambda rather than a replacement string, or a backslash in a description would be read as a regex escape. Verified: the log reports "17 of 17 matched by id"; all seventeen descr values are non-empty and decode back byte-identical to fig-alt.yml through an XML parser, including the one carrying quotation marks; document.xml stays well-formed. Breaking one id on purpose reports the id, writes nothing, leaves the docx byte-identical and no temp file behind, and exits 1. The empty-diff invariant is untouched.
Applies the thirteen comments in which she supplied replacement prose, all of her tracked insertions and deletions, and the three typing errors inside her own text. Where she supplied wording or made a tracked edit, that wording stands as she wrote it. Chapter 2 only; the dissertation was filed from the pre-review version and the two are re-synchronised in one re-transplant later, so the empty-diff invariant now breaks for chapter 2 by intent and still holds for chapter 3 and Appendix C. Three deletions go beyond a direct substitution. The consequence clause of the composite-likelihood passage goes with the passage: her replacement removes its antecedent and her other comment on the same anchor says the material belongs in chapter 3. The cross-reference closing the excluded-participants comparison goes with the comparison she cut; its label is still used elsewhere. And where she deleted the sentence carrying the Ndungo and Chisenga citations but kept the citations, they are attached to the sentence they now follow. Of the Objectives section she cut, one sentence had no home elsewhere -- the framing of the nested comparison -- and it moves verbatim into that section. The twenty-five-parameter point is covered by the Methods paragraph she supplied for it; the out-of-sample, simulation and prior-sensitivity material already has its own Methods sections. Her rendered citation numbers are resolved against the reference list in her own file: [7] deGraaf2014, [8] teunis2016, [9] aiemjoy2022, [20] lee2026shigella, and Figure 1 is the participant-flow figure. Her [7,8,20] renders as [7,8,18] because her own deletion drops Lindsay and Varin from the chapter; the works cited are the three she named. A fourth typing error of the same class as the three noted: her replacement for the recency sentence begins "gA", the insertion having started one character after the deletion. Set as "IgA". Results and Discussion are untouched, including the sentence her new abstract phrases differently, because her review covers the abstract and part of the Methods and the rest is still to come. Verified: the chapter renders, cross-references and citations resolve, and "unremarkable", "throws away" and "not twenty-five" are gone. The two remaining matches are deliberate -- an interval bound inside the table data, and the Results sentence above.
Replaces the chapter 2 body region with the revised standalone from 0a56921, heading demotion reapplied. The region differed only where she changed something, so this carries her revision and nothing else; Appendix B's interior was already byte-identical and is untouched. The empty-diff invariant is restored for chapter 2 and Appendix B and still holds for chapter 3 and Appendix C. Wholesale replacement leaves the dissertation correct, on four dependencies checked rather than assumed. The composite-likelihood paragraph she removed took the only chapter 2 citations of lindsay1988 and varin2011 with it, but chapter 3 cites both, and chapter 3 already makes that argument -- her comment asking for the material to move there is satisfied by the dissertation's own structure. Eight of the nine lee2026seroincidence citations survive. The sec-ch2-res-pop reference she deleted was one of two, and the other is in the region. The bridge to chapter 3 rests on chapter 2 establishing that the kinetic parameters are correlated, which her revision still does. Her rename of "What the model requires of the data" to "Data requirements" keeps the sec-ch2-why anchor, and Quarto renders those references as section numbers rather than heading text, so all five resolve -- three in the chapter region and two in dissertation-only prose, the bridge from chapter 1 and the Conclusion. Both of those paraphrase the sentence she replaced and both remain true of what the section now says. The dissertation abstract is deliberately untouched. Its chapter 2 paragraph is a summary of a summary rather than a copy of hers, and how it should follow her revision is a separate decision. Verified: all four regions identical to their standalones, every section, figure, table and equation reference resolves to a definition, and the render is clean.
…2 relaxes The chapter 2 paragraph said "cross-isotype" without ever saying which isotypes of what, and reported the result without stating the assumption being relaxed. It now names hemolysin E IgG and IgA, and says that existing applications treat the two isotypes as independent and that relaxing this adds five correlations to the between-participant covariance -- which is what makes the nesting claim after it mean something rather than assert something. "All five are positive" is a fact the paragraph omitted. Both additions come from Kristen's rewritten chapter 2 abstract, compressed to the space a summary of a summary has. Most of her abstract is deliberately not carried over: the dissertation's own opening paragraph already defines enteric fever, says why post-infection antibody responses matter, and names all five kinetic parameters, so her "what 5?" was answered here before she asked it. Her four named participant-level summaries and the Spearman range are manuscript detail; the paragraph gives one number range per chapter. The last sentence is unchanged. It carries the simulation result and the observed-data check in one sentence, and her deletion of "with no model involved" has no target here -- the dissertation abstract already worded it differently. At 111 words against 89 and 106 for chapters 1 and 3, chapter 2 is now the longest of the three, which is accepted: it carries the methodological argument. Reading the three together, it also restores a parallelism -- chapter 1 names its antigens and chapter 3 its populations, where chapter 2 named neither its biomarker nor its assumption. Verified: the abstract minus this paragraph is byte-identical and so is the rest of the file; the empty-diff invariant is unchanged, this being dissertation-only prose; 0.525 stays at Results and Discussion and stays absent from the abstract; the render is clean.
Her August review carried ten comments on the abstract and 45 tracked changes across the chapter. The comments were applied in f3938c7 and 6fc32df; the tracked changes were never read. Sorted all 45 and applied the 17 whose target survives the rewrites since. Applied: the abstract's "and no epidemiological conclusion changed" and "held" -> "did not change"; the feasibility sentence; the alternative serological approaches paragraph; the two-sentence bridge; "Most serosurveys measure more than one antibody isotype"; "does"/"apparent" in "Adding log-likelihoods increases precision"; "However long ago that infection occurred"; "What the pair carries"; "A likelihood that integrates each isotype"; and the "visible inside the software itself" paragraph. Two changes are not hers and are mechanically forced by her deletions: the colon joining the abstract's two clauses was inside the span she deleted, so a sentence boundary is supplied; and run 19 removed the antecedent for "combines them", so it reads "combines isotypes". Not applied, and recorded rather than resolved: - 17 runs have no target. Five point at passages rewritten since (two renamed headings, a block quote replaced by eq-sumll, "in the companion analysis"). Twelve are drafting notes and placeholders rather than text -- content requests still outstanding, not dead edits. - 11 runs break a sentence if applied alone. Three are the abstract disagreement over whether to report the point-estimate shift, which the chapter argues against at two places and which is the author's and Kristen's to settle. One is a stray keystroke. Seven are halves of edits whose completing half is a draft note or has no target; the Methods sentence-1 rewrite in particular leaves a colon with nothing before it. The Introduction is now a single paragraph. The chapter's aim is unaffected -- it is stated in Objectives -- but the bridge into the first subsection is gone. arnold2019 is no longer cited; the bib entry is left in place. thesis_ch1_ch2_ch3.qmd still carries all of these passages inside chapter 3's transplanted region, so the empty-diff invariant is broken until that follows in a second commit.
Two of her four unclosed requests, written against the intentions recovered from her partial Methods rewrite rather than against her fragment, which does not parse. Methods, first sentence. "conducted alongside the SEES case cohorts" -> "conducted for the SEES study, described in detail previously", with the appositive she struck moved into an "In brief" sentence rather than dropped, which is what her note asked for. This also settles an internal disagreement: Objectives already said "the cross-sectional serosurveys of the SEES study" while Methods said "alongside the case cohorts". The citation moves onto the clause that needs a referent. Introduction, closing sentence. The paragraph ended on the strength of seroincidence and the next line was a section heading; her bridge went with the paragraphs she deleted. "What that estimate is worth depends on the kinetic model fitted to confirmed cases and on how it is combined with the survey data" closes the seam and names the model the sentence above leaves unnamed, without pre-empting the next section, which names the implementation in its first line. Two candidate sentences were dropped in review. One would have stated that the surveys collected one specimen per participant, which the baseline-visit restriction twelve lines later contradicts -- one specimen is a property of the analysis set, not of collection. The other opened with "whether that estimate is right", which is the question the chapter declines three times. deferred.md records her runs 38-39 and run 25 as considered and declined, under a new heading, since both were judged not real rather than deferred: the first breaks the clause it leads into and orphans the ELISA definition, and the second asks for a signpost the chapter already carries at the other end of the same paragraph. Chapter 2 and the dissertation are untouched, so the chapter 2 body, the chapter 2 appendix and the chapter 3 appendix are unaffected. Chapter 3's body still differs from its transplanted region, by these two sentences on top of the previous commit's; the dissertation follows separately.
…rst pass missed them Kristen's review left six notes that were not literal edits. Two were declined and are already recorded. The other four are open, and until now a reader arriving from her tracked-changes list would have found nothing said about any of them. Four under a new heading naming their source, so they are findable from the thing that sends a reader looking: - note A, the base method in the Introduction. Two of her three pieces belong to the section rather than the paragraph, and the third is done; closing the rest would mean writing the paragraph she deleted. - note C, the contrast she was drawing. The chapter establishes the separation and quantifies it at 76%, but the Introduction contrasts the pair with one marker where she wanted it contrasted with correlation. A sentence adding that contrast was drafted and dropped: L159's colon clause states the general point itself rather than only illustrating it, so the new sentence would have pre-empted its own conclusion to buy one word of new content. - note E, the longitudinal case data. Covered by chapters 1 and 2 in the dissertation and by nothing in the standalone manuscript. - note F, a Table 1. The rows exist across two tables and one clause; the single table needs participant-level data this repository does not hold. One under Process, because it is about how the text was reviewed rather than about the text, and it is why the other four exist: her comments were tracked as a numbered list and her edits were not, and the pass that applied the comments went in inside a 750-line rewrite whose message names neither her nor the abstract. One under the existing "not mine to decide", where it belongs: her abstract insertion and deletion are one move, reporting that the level went up, and the chapter argues the opposite in three places. That is a disagreement with a co-author. Header moved to cde69d6, since the entries cite line numbers from after that commit and a stale hash would send a reader to the wrong lines. deferred.md only. chapter3.qmd and the dissertation are untouched.
…anges Replaces the chapter 3 region wholesale, thesis[1730..2851] <- chapter3.qmd[137..1243] with headings demoted one level. The region diff before the replacement was exactly the two chapter commits and nothing else: the deleted feasibility sentence, the alternative-methods paragraph, the two-sentence bridge, "Most serosurveys measure", the "software itself" paragraph, "However long ago that infection occurred", "What the pair carries", "A likelihood that integrates", "does increase apparent precision", the seam sentence, and the Methods first sentence. Checked before applying: - No cross-reference points into a deleted passage. The three chapter 3 anchors referenced from dissertation-only prose -- sec-ch3-design, sec-ch3-sens, sec-ch3-numeric -- all survive, and no section was renamed or moved. - arnold2019 leaves the chapter 3 region with the alternative-methods paragraph but stays cited in the dissertation, in chapter 1's limitations and in chapter 2. - Two lines of dissertation-only prose quote or paraphrase sentences the chapter no longer carries, at L309 and L1697. They are bridges the transplant does not reach, neither is made wrong by the replacement, and both are left for a separate decision. Everything outside the replaced region is byte-identical to the previous commit, head and tail. The dissertation abstract is unchanged. Region state after the replacement: chapter 3's body is one contiguous identical block again, 1108 lines; chapter 2's body is identical and untouched at 1008 lines. Both appendix interiors carry the same heading-level difference they carried before -- appendix children stay at "##" in the dissertation where the blanket demotion would give "###" -- which is how they have always been transplanted, and their prose is identical. Renders clean, citeproc clean, all 120 cross-references resolve with no duplicate anchors.
… could not separate Two changes to chapter 3's paragraphs, which were written on 2 September, before Kristen's review reached the chapter. Paragraph 1 gains one sentence. "The product form" was used in the 89.7% sentence and appeared nowhere earlier in the abstract, so the paragraph's central number was stated against a baseline the reader had not been given. The new sentence names it and says what it assumes, using the chapter abstract's own image -- as though the two measurements came from two independently infected people -- which is Kristen's wording. It says the joint likelihood is "measured against" the product form rather than replacing it, because the chapter is explicit that the correction is not intended to displace the established estimator. Paragraph 2's last two sentences become one, correcting an error of ours that her review never reached. The abstract said the two explanations "could not be separated from censoring"; the chapter says they cannot be separated from each other, and censoring enters a step below, as the reason the age stratification that would have distinguished them came back inconclusive. The rewrite also folds away a duplication -- "milder disease" and "communities where most infection is milder" were the same explanation stated twice. Two things were considered and left out. The chapter abstract's "the point estimates are not in question" is the sentence Kristen deleted and we did not, recorded as an open disagreement; importing it would take a side in that disagreement and propagate into a second document a sentence that may not survive in the first. The single-biomarker equivalence check is a software validation step rather than a claim about the science, and the transplanted Objectives already carries it. Chapter 3 now runs 135 + 84 words against 89 for chapter 1 and 111 for chapter 2 -- two paragraphs, each within reach of chapter 2's, rather than one long block. Dissertation-only prose, so all four transplanted regions are unaffected: chapter 2's body and chapter 3's body are identical to their standalones, and both appendix interiors carry only the heading-level difference they have always carried.
The custom Table style draws a 1 pt rule above and below every caption container, and the same style sets tblCellMar left and right to 80 twips. LibreOffice aligns the cell text to the margin, which puts the border one cell margin outside it: the rule started at 0.9444 against a 1 in requirement, and measured 0.9433 at 300 dpi. Sets tblCellMar left and right to 0. tblBorders, tblW and jc are untouched, so the rule keeps its width and the frame stays -- with 43 float blocks in double-spaced prose it is what marks where a figure or table begins and ends, and removing it would leave them abutting the surrounding text. Measured on page 27 after a re-render: the rule starts at 1.0000 in and the width is unchanged at 6.4967. All 20 pages that carry the rule are now inside the margin; none is at 0.9400. The caption text did not move at all -- the first word sits at 72.10 pt before and after. The padding was never holding the text off the margin; only the border was outside it. Nine pages still measure 0.99 at 100 dpi. They are not tables. Cropping one shows the left side bearings of body glyphs antialiasing 0.0033 in outside the nominal origin, on every line of the column. pdftotext puts the leftmost word origin in the document at exactly 72.00 pt, and those nine measured 0.99 before this change as well. Correcting an earlier count of my own: 20 pages carried the rule, not 28. The other eight were at 0.99 throughout. I had printed the fifteen worst, found 0.94 in all of them, and generalised. The 26 data tables are identical before and after -- same widths, same columns, same tcBorders -- because they carry no tblStyle and take their rules from flextable. chapter2/reference.docx and chapter3/reference.docx are byte-identical, so the two manuscripts are unaffected. No .qmd changed, so all four transplanted regions are untouched by construction.
21d6d0f set tblCellMar left and right to 0 in the dissertation's copy of reference.docx so the caption rule falls inside the one-inch margin UC Davis requires of figures and tables. The two chapter copies still carry 80, correctly -- the journals impose no such rule. That divergence is now deliberate and invisible in the file names, so a future tidy-up that synchronises the three copies would silently reintroduce the overrun. The entry says so. Filed under a new heading rather than in the main list. The file's preamble describes items raised in review and deliberately not acted on before filing; nothing here is outstanding, and this is a note against a future mistake rather than a deferred item.
…ion does not carry Chapter 1 was written as a PLOS NTD manuscript whose supplementary material went to the journal as separate files. Only the S1 Text made it into the dissertation, as Appendix A; the four S-numbered tables and eight S-numbered figures did not. The body carried twenty pointers at that material, all inside the chapter 1 region and none elsewhere in the file. Five of the twenty point at the S1 Text and have a real target, so they are redirected rather than removed. The mapping is one to one: A1 to Section 8.1, B1 to 8.2, B2 to 8.3, B3 to 8.4, B4 to 8.5. Appendix A's sixth section, Priors and hyperpriors, has no counterpart in the supplement, which deferred.md already records. Of the remaining fifteen, two are redirected -- one to Appendix A's priors section, one to Section 2.3.9 -- and thirteen are removed, as eleven parentheticals, one clause and two sentences. Three judgements differ from the review this follows: - S4 Table does not become Table 2. Table 2 reports the parameters of the winning model; the sentence asks for comparisons across all approaches, which no table in the dissertation carries. The clause goes instead. - Only one of the two S3 Table references is redirected to Section 2.3.9. The other sits inside that section and would have cited itself. - The S1 Table after "scaled to observed assay limits of detection" is removed rather than redirected. Appendix A gives the prior families in symbols and does not mention detection limits, so pointing there would claim something it does not contain. Each of the thirteen removals was read without its pointer first. None is grammatically load-bearing: every one is a trailing parenthesis or a standalone "are reported in X" clause, and the two deleted sentences add no number, name or qualification that the surrounding text lacks. Section 2.3.9 gains an anchor so the redirect cannot go stale. It is the only anchored subheading in chapter 1, and the only one that needed to be referenced. Chapter 1 has no standalone source in this repository -- it exists in this file alone -- so the empty-diff invariant has no second copy to hold over it. Both transplanted chapter bodies are identical after this change and the region offsets are unmoved: three deletions against seven redirects leave the line count unchanged.
4eef524 redirected chapter 1's five S1 Text references to Appendix A. Four of them map cleanly. The fifth pointed at "Section B5", and the submitted supplement has A1 and B1 through B4 with no B5 -- so that reference was already dangling when the manuscript went to PLOS, and the dissertation is the first document in a position to resolve it. What it pointed at, in a sentence about Gamma and Wishart priors, is what Appendix A's Section 8.6 now holds. That section has no counterpart in the supplement, which this file already records under Appendix A. Filed under a new heading. It is not deferred work on the dissertation, which is fixed; it is a defect in a document we cannot edit until the journal round.
…le changes Her September review marked up a render of chapter3.qmd from before this week, so none of bc8fd64, cde69d6 or ce32284 is in the file she read. Her marks were reconciled against HEAD rather than applied as a patch. Tracked changes. Her 80 insertions and 90 deletions merge into 124 runs across 36 paragraphs; pairing each deletion with the insertion that replaces it gives 70 edits. Applied 43. Five have no target -- two were already applied in bc8fd64, two sit inside Objectives sentences her own comment replaces, and one is the Methods provenance sentence cde69d6 moved. Seven conflict and are recorded rather than resolved: the abstract's "contrasts held" rewrite, which undoes her own August edit; the second deletion of "The point estimates are not in question", which the chapter argues against at three places; a half-edit that leaves "measured by the same using a kinetic ELISA"; a rewrite that leaves "in each sites"; the deletion of the Pakistan sampling window, which is the antecedent of the next sentence and of 3.4.3; a stray "summing"; and the deletion of "and one vector of kinetic parameters; given both", which the derivation rests on. Four are placeholders and drafting notes rather than text, and join her content questions. Ten edits across five passages are held. Those are the passages where her August deletion and her September edit disagree, and only she can settle them. Two of the five carry the marks of someone keeping text rather than someone undecided: she added "typically" to the feasibility sentence, and made four separate edits inside the alternative-approaches paragraph. Comments. Fifteen of her comments carry a finished replacement rather than a complaint, and all fifteen had live targets. Where two of them rewrite the same idea, the one she labelled a "potential re-write" was taken and the other was not; deferred.md records that choice and its cost. Guide. Five headings renamed and Figure 1 retitled, taking the guide's wording over the markup where the two differ. No prose referred to any renamed section by title, and the anchors are unchanged. Objectives is replaced by the two sentences she drafted; its four method sentences were duplicates of 2.2, 2.3, 2.6, 2.8 and 2.9 and were dropped rather than moved. One change is not hers. "Adding log-likelihoods increases precision." restated the sentence above it and asserted flatly what the rest of the section denies; bc8fd64 introduced it by removing "apparent" from her original. Her own edit to the preceding sentence puts "apparent" back. Mechanically forced repairs and plain misspellings in her insertions are corrected, each one listed in the working notes: a full stop for her "/", a restored article, an initial capital, two Word-rendered section numbers resolved to anchors, a colon before a display equation, a citation kept that her sentence dropped, and eight spellings. thesis_ch1_ch2_ch3.qmd still carries the unrevised chapter inside chapter 3's transplanted region -- 31 hunks over 106 lines -- so the empty-diff invariant is broken until the re-transplant follows.
…t was mine Three entries in the main list. The cluster-robust result is no longer promised in advance -- her rule 8 removed both statements of it, and the chapter now describes what happened rather than recording what it would report. Results still says two conclusions were pre-specified in 2.9, and the paragraph in 2.9 that said so is gone. And @eq-contrasts and @sec-ch3-banks lost their only in-text reference; @tbl-design lost its too and was given one back, because a table in the List of Tables with no path to it is a reader's problem and an equation is not. One entry under "Settled". Two of her comments rewrite the same idea twenty-five lines apart, and both contain the same sentence. The one she labelled a "potential re-write" was taken. The entry says plainly that this was the author's decision rather than hers, and what reverting it would cost. The abstract disagreement gains a line rather than a second entry: she deleted "The point estimates are not in question" again, in a second independent pass, so the question to put to her is which of her two positions she meant.
Three of the seven conflicts recorded in 6bec844 are not disagreements. The revision timestamps in her file show each as a single editing moment she did not finish, the same shape as the Methods rewrite in her August round. The ELISA sentence. She inserted "using a kinetic" at 03:42:34 and deleted the trailing clause 32 seconds later, but never removed "by the same", leaving "measured by the same using a kinetic ELISA". Dropping "by the same" completes it. The clause she cut is kept: "so the parameter draws and the specimens they are applied to are on one scale" is the only statement in the chapter that the serosurvey specimens and the cohorts that produced the parameter draws were assayed on one platform, and nothing else carries it. The demographics sentence. "characteritics" is unambiguous. "in each sites" is not, and the chapter decides it: "the six sites" is its collective form, thirteen times, while "each site" appears three times and always distributively, for something computed separately per site. Her deletion took "six" with it only because it sat inside the run removing "country-by-endemicity". Her "Table 4" resolves: @tbl-cells renders as Table 4. "A summing participant". The insertion is at 03:54:11 and the deletion of "and one vector of kinetic parameters; given both" at 03:54:16, so these are one moment rather than a stray keystroke followed by a separate edit -- a correction to what 6bec844 recorded. Neither half can be completed without inventing what she meant, and the deletion would remove the conditioning on the kinetic parameters that @eq-truegen and the derivation in Appendix C rest on, so the paragraph is left as it stands. The remaining four conflicts are unchanged. The two abstract items are hers to settle. The Pakistan sampling window is deliberate rather than unfinished -- the insertion naming the 2020 gap and the deletion are sixteen seconds apart, and her comment on the next sentence says "move to discussion", which is a move and not a deletion.
New heading, "From Kristen's second round — content she asked for and we do not have", grouped by what each one needs rather than by where it appears, because the groups close in different ways. Needs the participant-flow figure regenerated on Mercury: three changes, and a warning that the third is not a relabelling. "community participants" to "single index participant per household" changes what the figure asserts about who was sampled, and the surrounding text and @tbl-cells describe a community sample. Whoever redraws it has to settle which is true first. Needs facts from Kristen or the SEES design paper: the two-phase sampling design, and the HlyE background with the references to Charles's work her note asks for. Needs numbers we can compute but did not report: the counts behind the sex percentages, and median age with IQR. Both are calculations on data that lives on Mercury, not missing facts. Needs a decision rather than a fact: her two comments on "the true seroincidence" in the abstract. The truth in the coverage study is the simulated lambda, so the word is correct; she is asking whether the abstract should say so. Neither comment proposes wording. Her question about the external benchmark is not recorded. Her own replacement sentence, applied in 6bec844, answers it.
Results says "Two conclusions were pre-specified in @sec-ch3-app", and since 6bec844 no sentence in that section says when they were fixed. The sentence that did say so was displaced by her replacement for the 2.9 opening, and she had no way to see that it was holding up a sentence eighty lines away. "two key conclusions" becomes "two pre-specified conclusions". One word, in her sentence, restoring a fact her replacement lost rather than changing how she put it. Editing the Results sentence instead would have made the chapter claim less than is true: the two conclusions were fixed in advance, and 2.9 would then be the only pre-specification in the chapter left unstated while 1.4, 2.5, 2.8 and 2.10 each record theirs.
The guide's "Clearer" column is a specification rather than illustration: twenty finished sentences written against this chapter's text, the same kind of artefact as the replacements in her comments. Working it as one leaves two that are open, have a live target, and collide with nothing. Rule 1 replaces the contrasts lead-in. "Two contrasts follow," is one of the four openings her comment on 2.8 names as notes about the analysis workflow, and one of the two sentences that came back when 401576599 was dropped in 6bec844. The guide carries its replacement, so that decision now costs one returned sentence rather than two. Her full stop becomes a colon: the contrasts equation follows immediately. Rule 3 replaces the opening of 3.1. The comment version and the guide version differ, and here the guide carries content the comment does not -- "which motivated two sensitivity analyses" connects the site differences to the analyses the chapter runs, and the next two sentences name them one at a time. The chapter runs exactly two: the detection limit and the age restriction, specified in 2.10 and reported in 3.5. The other seven divergences between the guide and an applied comment are phrasing, with the comment version fuller or better split, and are left as they are. Three of the guide's remaining sentences -- rules 1, 4 and 15 on the single-implementation paragraph -- are not applied because they would reproduce the duplication that 401576599 was dropped to avoid; the guide carries that sentence pair twice as well.
…han specification Three entries under "For the journal revision". The rule 11 caption structure, and why it was not applied. She demonstrated it once, by replacing Figure 1's title with a claim rather than restructuring the caption. Seventeen captions remain, eight of them with no title sentence at all, and writing a message title means deciding what each display is for. For fig-ch3-disc that decision is one the chapter declines to make. The entry also says not to bold the eight untitled captions as a substitute: it would satisfy house style, leave her rule unsatisfied, and look done. Five headings that fail her own rule 10 test and are not on her list, with the reason they are not: her marks stop at L753 inside 3.1 and the next heading is 3.2 at L761, so their absence is the seam rather than approval. The near-collision her renaming created between 2.9 and 3.4.2, which was left for the same reason.
…ed runs Word records text typed and immediately removed as a w:del nested inside a w:ins, which means nothing happened. Of the three paths used to read her second-round file, runs_of takes ins when both are open and would report such text as something she wrote; the other two discard it, but only because of the order their conditions are written. runs_of is the one every count in 6bec844 came from. chapter3_v3.docx contains no nested runs, so nothing was affected. The entry records what "no nesting" was checked against -- a tag-by-tag pass whose own parse was validated first, 0 unclosed elements, 0 mismatched closers, maximum depth 1 -- so that the next review file can be checked the same way rather than on the same assumption. It also records that 6bec844's "124 runs" is an artifact of merging inside paragraph boundaries. Merging over the whole document gives 122, the difference being two whole-paragraph deletions adjacent across a paragraph break. The 70-edit classification does not depend on it.
She deleted "The point estimates are not in question, and no published incidence estimate is shown to be wrong; what is too confident is the uncertainty around them." from the abstract in August and again in September, on a file that still carried it. It was held both times because the chapter appeared to argue the same thing in the body. It does not. 3.4.3 reports that the joint estimate exceeded the product estimate in six of six sites, by 14.2% to 42.4%, "not predicted and the simulation does not account for it", and the Discussion adds that until that is settled no claim about the level of incidence should rest on it. The sentence was true of the simulation and not of the surveys, and was already in tension with the chapter's own results. Removing it removes a tension rather than creating one. The abstract closes on her own sentence, which hedges with "suggests" and "likely", and keeps "every interval widened" and "the ranking of countries and the high- versus low-endemicity contrasts did not change" -- two of the three supports the Discussion gives. In the Discussion the framing sentence and the explicit "It does not claim that published incidence estimates are wrong" go; the findings and the conclusion stay. What is removed there is the stance, not the reservation. "Whatever is wrong with the product interval, it is not that it is centered in the wrong place." is unchanged, and not for reasons of tone. 2.8 binds the chapter to it: if the failure were bias-dominated, the sentence "the published intervals are too narrow" would not be supported. That line is the discharge of that constraint.
The entry under "Not mine to decide" is resolved and moves to "Settled". It was resolved in her favour, and the entry says the reason is 3.4.3 rather than her having asked twice: the chapter reports a 29% shift it cannot explain, so the sentence was true of the simulation and not of the surveys. The entry then records what did not go, because the deletion should not be read as the whole reservation going -- the abstract's two surviving supports and her hedged sentence, the Discussion's findings and conclusion, and chapter3.qmd:905 with the 2.8 constraint that binds the chapter to it. It also records that the abstract sentence carried two claims across a semicolon and that the two body passages take one each, so they were never two statements of one thing. The pair of line numbers the old entry carried had gone stale by about thirty lines. The new ones are stamped with the commit they are valid at, with a note to find the passages by their text.
Replaces the chapter 3 region with the demoted body of chapter3.qmd, the same way as ce32284. 31 hunks over 113 lines: her tracked changes and comment replacements from 6bec844, the three unfinished edits completed in 0c783ed, the pre-specification word in dd1b987, the two guide sentences in c2582cc, and the reservation dropped in 747c633. The empty-diff invariant is restored for the chapter 3 body and still holds for chapter 2. Appendix B and Appendix C differ by four heading levels each and by nothing else, which is the documented pre-existing difference: the appendices keep their children at one level above what the blanket demotion rule gives. Nothing in dissertation-only prose needed to follow. A similarity scan of the 72 sentences leaving the region against the 496 dissertation-only prose lines returned no match above 0.45, and nothing outside the region reads as a reassurance about the point estimates -- thesis:2894 says they moved by 29% and the simulation does not reproduce it, which is the opposite emphasis and agrees with the deletion. The two dissertation-only references into renamed sections, at thesis:335 and thesis:668, are anchor-only; no prose names a renamed section by its title, so the renames carry no consequence outside the region. thesis:309 and thesis:1697 are unchanged and outside the diff, which runs from 1737 to 2723. The dissertation abstract is untouched. Everything below the region moves up by 31 lines: Conclusion 2839 to 2808, Appendix A 2931 to 2900, Appendix B 3023 to 2992, Appendix C 3156 to 3125, Appendix D 3248 to 3217, References 3265 to 3234.
…nd the accuracy The chapter 3 paragraph was written this morning against a chapter abstract that Kristen has since largely rewritten. Where the two make the same point, hers is now the phrasing that stands. The ranking sentence was asserting something the chapter does not. "Without changing the ordering between sites" names the wrong unit and folds a qualified conclusion into an unqualified one: 3.4.2 claims the ranking of countries, Bangladesh above Pakistan above Nepal, and separately that the high- versus low-endemicity contrast "holds where it held before" -- Nepal's arms overlap under all three forms. Her abstract names both and names countries, and that is what the paragraph now says. The accuracy clause is new and fills a gap tonight's deletion opened. Her abstract makes the point-estimate point with numbers now that the reservation is gone; the dissertation Introduction at thesis:308 already claims the accuracy is almost unchanged in simulation; the abstract said nothing. Silence is not neutral when the introduction is making the claim. The clause takes her sentence without its decimals, which the dissertation abstract does not carry elsewhere. The product-form sentence takes her verb where the two overlap and keeps the naming clause she does not supply and the next sentence needs. Two things flagged and deliberately left: "rather than from the correlations" keeps an emphasis she dropped from her abstract but thesis:313 develops at length, and it is a dissertation-level argument; and the chapter's "about a quarter" against the dissertation's 46% are different quantities, simulation and observed, both correct. 135 to 154 words. The second paragraph is unchanged at 84: her revision never touched the discordance, and that paragraph is now the only place in either abstract where a limitation is stated.
The second chapter 3 paragraph, beginning "One observation remains unexplained", is removed. The reason is its opening sentence: an abstract says what was done and what was found, and a paragraph that begins by announcing a failure to explain reads as an apology in a place that has no room for one. Kristen's revised chapter 3 abstract makes no reservation either -- she removed the one it had. Nothing else in the abstract referred to it. None of the numbers, none of the discordance vocabulary, no back-reference, and the closing paragraph is general. Chapter 3 now ends on the decomposition, which is a finding rather than a hanging clause, and "Together, these chapters show" follows a result instead of a caveat. The abstract now claims a narrower thing: what the chapters did and found. The discordance is not among those findings -- it is an open question, and 3.4.3 and the conclusion are where open questions belong. Both still carry it in full, and neither was touched. Abstract 546 to 462 words: 84 opening, 89, 111, 154, 24 closing.
Under "Settled -- do not undo", so the deletion is not read later as the finding being dropped. The entry states the reason as a decision about what an abstract is for, names the two places the finding survives untouched -- 3.4.3 with the 29% separation and the 0.17-to-0.63 against 0.78-to-0.81 gap, and the conclusion's "The point estimates moved by 29% on the observed surveys and the simulation does not reproduce that" -- and records that the two arguments for keeping the paragraph were overturned knowingly. That last point is the one that matters: the paragraph was defended twice here, on the grounds that it was the only limitation stated in either abstract and that folding it into the results would bury it. Neither is a reason to restore it, and the entry says so, so nobody reinstates it from reasoning that is already in this history.
Stale in three ways rather than two. Chapter 2's hash was also out of date: a925bdf is from 2026-09-05, and chapter2.qmd's last change is 0a56921 on 2026-09-09. Nothing touched chapter2.qmd today -- its last change was two days ago -- so the hash was stale for a different reason than the other two. The three now name the commit that last changed each file rather than a single HEAD, which is what the entries were actually checked against: chapter 3 at 747c633, chapter 2 at 0a56921, dissertation at 3a97c6e. Two line numbers written today had already moved. The rule-10 entry cites where her marks stop and where 3.2 begins; both shifted by one when the abstract lost its reservation in 747c633, so L753 and L761 become L752 and L760. And the stamp in the point-estimates entry named 1da7e81, a deferred.md commit that cannot fix a line number in chapter3.qmd. The numbers in that entry are right -- it was written after 747c633 and the file has not moved since -- but the commit named was not the one they are valid at. It now names 747c633 and says why. The rest of the file's line numbers predate today and most are stale: chapter3.qmd moved about thirty lines through today's work, so L1147, L1192, L306, L156, L143, L304 and L1038 all point at unrelated text. Those are not corrected here. The entry that says to search by text rather than by line is the standing answer to them.
UC Davis requires a one-inch margin on every side and names figures
explicitly. The text column is 6.5 in and a figure written {width=100%}
resolves to exactly that, leaving nothing to spare: Quarto wraps every
captioned figure in a one-cell table, and where the cell's content box is
laid inside the column rather than around it, a full-width image
overflows to the right of the text boundary. Eight of the seventeen are
affected; the other nine are 6.175 in or narrower and already centre.
The cap is applied here rather than in the .qmd because those eight
picture lines are byte-identical to chapter2.qmd and chapter3.qmd under
the empty-diff invariant. Editing them would either break that invariant
or impose a UC Davis rule on two journal submissions that have no margin
rule to satisfy. deferred.md already records the same reasoning for the
dissertation's reference.docx. This script is the documented home for
submission mechanics that the .qmd cannot express, it is guarded to the
dissertation, and it runs inside quarto render, so the cap survives a
re-render without anyone remembering it.
Both members of each drawing's size pair are scaled -- wp:extent on the
inline and a:ext inside pic:spPr/a:xfrm -- and the counts are checked
against each other, because a split pair would leave the picture
disagreeing with its frame. Height scales with width, so aspect ratios
are unchanged: 6.500 x 4.800 becomes 6.350 x 4.689, and every capped
figure's height-to-width ratio still matches its PNG to four decimals.
Verified on the re-rendered docx: 17 images, none above 6.35, the nine
narrower ones untouched, and a second pass over the output caps nothing
and leaves document.xml byte-identical.
One thing I could not check. The XML as it now stands carries no 4pt cell
margin anywhere: docDefaults has no tblCellMar, the Table style's left and
right are 0 after 21d6d0f, and no wrapper table overrides it. 4pt is 80
twips, which is what that style held before 21d6d0f. Whether Word applies
a margin of its own regardless is not something this environment can
answer, and the cap holds either way.
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.
What this is
The full dissertation (chapters 1–3 with the overview, bridges and conclusion) and the two standalone manuscripts derived from chapters 2 and 3. CI renders all three to docx — the artifacts on the
Render thesischeck are the documents to read.Chapter 1 reproduces a manuscript already submitted to PLOS NTD (PNTD-D-26-01448) and is not open for prose revision. Chapters 2 and 3 are.
Files are under
vignettes/articles/thesis/, which.Rbuildignorealready excludes from the package build. A_quarto.ymlin that folder scopes the render to docx so the repository root config, which targets pdf for the vignettes, does not apply.What I would like checked
Mechanical and verifiable things:
@fig-,@tbl-,@eq-and@sec-resolves, and nothing is defined but never referenced.tab/.[@key]exists inreferences.bib.What I am not asking for
Prose style, sentence length or word choice — those are for the human review that follows.
Known gaps