Skip to content

Dissertation draft: chapters 1–3 and the two chapter manuscripts - #31

Open
Kwan-Jenny wants to merge 132 commits into
mainfrom
thesis-draft
Open

Dissertation draft: chapters 1–3 and the two chapter manuscripts#31
Kwan-Jenny wants to merge 132 commits into
mainfrom
thesis-draft

Conversation

@Kwan-Jenny

Copy link
Copy Markdown
Collaborator

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 thesis check 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 .Rbuildignore already excludes from the package build. A _quarto.yml in 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:

  1. Cross-references. Every @fig-, @tbl-, @eq- and @sec- resolves, and nothing is defined but never referenced.
  2. Numbers. Any figure quoted in prose that disagrees with the table or CSV it comes from. The CSVs are in tab/.
  3. Citations. Every [@key] exists in references.bib.
  4. Internal consistency. The same quantity reported with two different values in two places.
  5. The two manuscripts. They are generated from the dissertation by a script that rewrites cross-chapter references into citations. Any place that still reads as though the other chapters were present.

What I am not asking for

Prose style, sentence length or word choice — those are for the human review that follows.

Known gaps

  • The title page is added in Word from the Graduate Studies template

Copilot AI lite review requested due to automatic review settings August 24, 2026 17:08
@codecov

codecov Bot commented Aug 24, 2026

Copy link
Copy Markdown

Codecov Report

✅ All modified and coverable lines are covered by tests.

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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.R and calls apply_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.

Comment thread .github/workflows/render-thesis-vignettes.yaml Outdated
Comment thread .github/workflows/render-thesis-vignettes.yaml Outdated
Comment thread inst/scripts/ch3/04_run_2x2.R
Comment thread inst/scripts/ch2/new_fIle.R Outdated
Comment thread inst/extdata/model_ch2_v5.stan Outdated
Kwan-Jenny and others added 5 commits August 24, 2026 17:36
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.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

5 participants