"""Canonical manuscript content, assembled against verified analysis outputs."""
import csv, pathlib, json
ROOT=pathlib.Path(__file__).resolve().parents[1]
def read(name):
 with open(ROOT/'results'/name) as f:return list(csv.DictReader(f))
def f(x,d=2):return format(float(x),f'.{d}f')
COMMON='Unreviewed AI-assisted computational research | Version 1.0 | 5 September 2026'
DISCLOSURE='Prepared using OpenAI Codex for Australis Biogenetics. AI assistance covered question selection, literature retrieval, programming, numerical checks, drafting and formatting. No human scientific author, institutional affiliation, ethics approval, external peer review or expert endorsement is asserted. Numerical cross-checks were performed by a second implementation, not by an independent human reviewer. Publication on a company website is not scientific peer review.'
HAGR='de Magalhães JP, Abidi Z, Dos Santos GA, Avelar RA, Barardo D, Chatsirisupachai K, Clark P, De-Souza EA, Johnson EJ, Lopes I, Novoa G, Senez L, Talay A, Thornton D, To PKP. Human Ageing Genomic Resources: updates on key databases in ageing research. Nucleic Acids Research. 2024;52(D1):D900-D908. https://doi.org/10.1093/nar/gkad927'
A=[];D=[]
def add(B,kind,text=None,**kw):B.append(dict(type=kind,**({'text':text} if text else {}),**kw))
add(A,'h2','Abstract')
add(A,'p','Background: developmental timing and longevity covary across mammals, but the size of an association can depend strongly on taxonomic adjustment. Hypothesis: later female maturity is associated with greater maximum longevity after adjustment for adult mass and mammalian order. Methods: we analyzed a frozen official AnAge export using a locally recorded prospective plan, complete-case filters, family-clustered inference and family-blocked internal prediction checks. Results: 801 species from 116 families and 24 orders were eligible. A doubling of maturity age was associated with 18.20% greater maximum longevity (95% CI 13.44% to 23.16%; log coefficient 0.241, two-paper Holm-adjusted p = 1.66 × 10⁻¹²). The coefficient fell to 0.118 with family intercepts. In 760 species eligible for prediction assessment, adding maturity reduced log-scale RMSE from 0.366 to 0.328. The high-quality-only estimate was imprecise and its interval included zero. Conclusion: the known maturation-longevity relationship persists in this export but its magnitude depends on taxonomic resolution. These comparative associations do not establish that delaying maturation extends life.')
add(A,'h2','Background and hypothesis')
add(A,'p','AnAge provides curated life-history and longevity records for comparative research [1,2]. The developmental-timing hypothesis is not new: de Magalhães, Costa and Church analyzed developmental schedules with phylogenetic independent contrasts in 2007 [3]. This paper asks a narrower reproducibility question: how stable is the maturity association to different taxonomic controls, record-quality restrictions and prediction across held-out families in a later downloadable snapshot? The contribution is an auditable robustness analysis, not a novel biological mechanism or an independent replication in newly collected animals.')
add(A,'p','We specified a positive association between log female maturity age and log maximum longevity, conditional on log adult mass and order. Female maturity provides one consistently defined sex-specific predictor; maximum longevity is generally a species record and is not necessarily female-specific. The outcome represents observed longevity, not a direct estimate of biological aging rate.')
add(A,'h2','Methods')
add(A,'p','Data and provenance. The official AnAge ZIP was acquired on 5 September 2026 at 08:07:32 UTC from the www.genomics.senescence.info host. Its SHA-256 is e3ddb66e32e973a79932859ba53013e8f60d957c6ec01c6eb573e3ea3018d630. The enclosed release notes identify build 15, released 3 July 2023. The export parses to 4,645 records, whereas the release page states 4,671 entries [4]; the discrepancy remains unresolved and no missing records were synthesized. The included manifest records the hashes of the ZIP and extracted files. HAGR permits attributed reuse under CC BY 3.0 [5].')
add(A,'p','Eligibility and quality control. We retained Mammalia records with positive finite female maturity in days, adult mass in grams and maximum longevity in years; nonmissing order and family; and acceptable or high longevity quality. Missing values were not imputed. There were no duplicated HAGRIDs. All 801 eligible species had maturity age below their longevity record. Species names, original source rows, fields, eligibility flags, Cook distances and leverage are provided. The quality indicator concerns longevity evidence and does not independently validate every maturity or mass measurement. According to HAGR, some life-history traits derive from compilations rather than original measurements [6].')
add(A,'p','Primary analysis. We fitted ordinary least squares: log(longevity) = intercept + β log(female maturity) + γ log(adult mass) + order intercepts. Each species received equal weight. Standard errors use a family-clustered sandwich covariance with correction G/(G−1) × (N−1)/(N−K), and confidence limits and two-sided tests use a t distribution with G−1 degrees of freedom. Here G is the number of families, N the number of species and K the model rank. The interpretable effect for a doubling of maturity is 100 × (2^β−1). The two primary p values from this paper and the accompanying DrugAge paper were adjusted together with Holm’s method [7]. Confidence intervals are pointwise 95% intervals, not simultaneous intervals.')
add(A,'p','Robustness. Planned alternatives were unadjusted and mass-only models, family intercepts, exclusion of humans, exclusion of bats and primates, high-quality-only and captivity-only subsets, and leave-one-order-out refits. An adjustment for sample-size category and specimen origin was documented after schema inspection but before fitting. These categories address recorded observation effort without measuring its exact value. The analysis did not use a phylogenetic tree; order or family controls and clustered uncertainty cannot replace a phylogenetic comparative model or remove all shared-ancestry dependence.')
add(A,'p','Internal prediction assessment. Families were assigned to five shared folds within order with seed 20260905. Only orders with at least two families were eligible, ensuring the test data never contained an order absent from training. Mass-plus-order and maturity-plus-mass-plus-order models were evaluated on the same held-out species. This evaluates prediction for unseen families within represented orders, not for new orders or independently collected data. A post-hoc bootstrap resampled held-out families 10,000 times for uncertainty in the pooled paired squared-error difference; this conditional interval does not capture the variation from repeating the fold allocation or refitting each bootstrap sample.')
add(A,'p','Verification. Base R 4.6.1 performed the analyses. A Python/NumPy implementation independently read the raw file and reproduced the primary coefficient and clustered standard error within 10⁻¹⁰; direct numerical integration verified the t-tail probabilities. The first, middle and last eligible species alphabetically were checked against live HAGR pages. These checks agreed on maturity, mass and longevity for Acinonyx jubatus, Macaca sinica and Zapus hudsonius. Original source monographs were not re-extracted; the checks verify export-to-database consistency only. The plan was committed locally before download (commit 7aaad8b), not registered in an independent registry.')
add(A,'h2','Results')
add(A,'p','Of 1,349 mammalian records, 1,003 had acceptable/high quality, 1,021 had positive maturity, 1,337 had positive adult mass and 1,029 had positive longevity. These counts overlap and must not be added as sequential exclusions. Their intersection with taxonomic completeness contained 801 species (59.38% of mammals). Complete-case availability therefore limits the target population.')
add(A,'table',headers=['Model / subset','Species','β (95% CI)'],rows=[[r['model'].replace('_',' '),r['n'],f"{f(r['beta'],3)} ({f(r['lo'],3)}, {f(r['hi'],3)})"] for r in read('anage_models.csv') if r['model']!='no_flagged'],caption='Table 1. Log maturity associations. Intervals use family clustering. Sensitivity models estimate different conditional associations and are not independent replications.')
add(A,'p','The primary coefficient was 0.241 (SE 0.030; 95% CI 0.182 to 0.301), corresponding to an 18.20% longevity difference per doubling of maturity. The unadjusted coefficient was 0.584 and the mass-adjusted coefficient 0.443, showing substantial attenuation when taxonomic context was added. With family intercepts, β was 0.118 (95% CI 0.055 to 0.180), equivalent to an 8.49% difference per doubling. These contrasts show that a single species-wide coefficient is sensitive to what between-group variation the model removes.')
add(A,'figure',path='anage_adjusted.png',caption='Figure 1. Residual association after removing adult mass and order from both log maturity and log longevity. Each point is a species; the line has the primary regression slope. The display does not remove fine-scale phylogenetic dependence.',alt='Scatter of mass- and order-adjusted log maturity against adjusted log longevity, with a positive fitted slope.')
add(A,'p','Excluding humans or both bats and primates changed β to 0.239 and 0.232, respectively. The observation-effort/origin model yielded 0.245. Leave-one-order-out estimates ranged from 0.204 to 0.259. The high-quality-only subset contained 99 species in 33 families and yielded β = 0.273 with a wide interval (−0.009 to 0.555); it does not independently exclude a null association. No record was discarded because of Cook distance or an unfavorable effect direction.')
add(A,'figure',path='anage_robustness.png',caption='Figure 2. Planned models and sample restrictions, plus the pre-fitting observation-effort adjustment. The no-flagged result is identical to primary because no species failed the maturity-versus-longevity check. High-quality-only uncertainty crosses zero.',alt='Forest plot showing a positive primary coefficient, smaller family-intercept coefficient, and a broad high-quality-only confidence interval crossing zero.')
add(A,'p','Internal prediction included 760 species, 107 families and 15 orders, excluding 41 species from nine orders with only one represented family. Log-longevity RMSE declined from 0.3664 to 0.3275, a 10.60% relative reduction, after adding maturity. The mean paired squared-error difference was −0.02695 squared natural-log units (post-hoc family-bootstrap 95% interval −0.04579 to −0.01030). This is evidence of internal predictive information, not external validation or a guarantee for an unobserved lineage.')
add(A,'h2','Discussion and limitations')
add(A,'p','The results are consistent with the previously reported relationship between developmental timing and longevity [3]. They also show why adjustment matters: the coefficient is less than half as large with family intercepts as with order intercepts. Neither coefficient should be interpreted as an intervention effect. A taxonomic comparison cannot distinguish correlated ecological strategies, inherited biology, or measurement practices from a causal effect of maturation.')
add(A,'p','Several limitations materially restrict interpretation. The data are a curated convenience sample rather than a random sample of mammal species. Longevity records depend on numbers observed and captive conditions; coarse categories can only partially address that bias. Maximum recorded age does not directly measure mortality acceleration, and the maturity predictor is not measured in the same individuals. Body mass, maturity and longevity contain measurement error. The study uses no dated phylogeny and may retain correlated errors across families. Family fixed effects also change the estimand toward within-family contrasts. Missing traits can select distinctive species, and source compilations overlap earlier comparative studies. Consequently this is neither independent biological validation nor evidence that a molecular pathway has been identified.')
add(A,'p','The prediction result supports including developmental context in exploratory comparative bioinformatics. A stronger follow-up would use a reconciled dated mammal tree, multiple phylogenetic realizations, independently curated traits and predeclared external taxa. Those analyses were not performed here. No result supports deliberately delaying human maturation or predicts a benefit from a longevity treatment.')
add(A,'h2','Data, code and research transparency')
add(A,'p','The accompanying reproduction archive contains the original public exports, CC BY 3.0 attribution, hashes, prospective plan and deviations, R scripts, independent Python verifier, every included record, fold assignments, coefficient tables, plots and environment information. Run Rscript scripts/robustness.R and then python3 scripts/verify.py (NumPy 2.3.5). The main R analysis requires only base/recommended R packages. Run from the archive root; no network access is needed for frozen-data reproduction. Reference retrieval and refresh are separate optional scripts. Data acquisition involved no private participant records or new animal experiments. No ethics approval was obtained or asserted for this secondary analysis.')
add(A,'p',DISCLOSURE+' The commercial website requested the work; no funding award, outside sponsor, or investigator conflict-of-interest declaration has been supplied. HAGR’s curators and cited authors did not participate in or endorse this analysis.')
add(A,'h2','References')
for text in [HAGR,'de Magalhães JP, Costa J. A database of vertebrate longevity records and their relation to other life-history traits. Journal of Evolutionary Biology. 2009;22(8):1770-1774. https://doi.org/10.1111/j.1420-9101.2009.01783.x','de Magalhães JP, Costa J, Church GM. An analysis of the relationship between metabolism, developmental schedules, and longevity using phylogenetic independent contrasts. Journals of Gerontology A. 2007;62(2):149-160. https://doi.org/10.1093/gerona/62.2.149','Human Ageing Genomic Resources. AnAge build 15 release notes. 3 July 2023; accessed 5 September 2026. https://genomics.senescence.info/species/release.html','Human Ageing Genomic Resources. Disclaimers, credits, and copyright: CC BY 3.0. Accessed 5 September 2026. https://genomics.senescence.info/legal.html','Human Ageing Genomic Resources. Using HAGR: AnAge documentation. Accessed 5 September 2026. https://genomics.senescence.info/help.html','Holm S. A simple sequentially rejective multiple test procedure. Scandinavian Journal of Statistics. 1979;6(2):65-70. https://www.jstor.org/stable/4615733']:add(A,'ref',text)
add(D,'h2','Abstract')
add(D,'p','Background: a gain in average or median lifespan need not imply the same proportional gain near the upper end of survival. Hypothesis: among DrugAge records with both endpoints, maximum/upper-tail changes are smaller than average/median changes. Methods: a prospective local plan specified paired differences, equal weighting of publication-source groups, 10,000 publication bootstrap samples and sensitivity checks. Results: after removing seven exact duplicates, 990 paired records from 248 source identifiers and 298 compounds were eligible. The publication-balanced difference was −2.77 percentage points (95% bootstrap CI −4.02 to −1.58; two-paper Holm-adjusted p = 9.68 × 10⁻⁶). Median publication difference was −1.95 points; 149 groups had negative differences and 94 positive differences. Excluding a mismatched source identifier yielded −2.77 points. Maximum values were absent in 70.55% of deduplicated records. Conclusion: in this selected database subset, central and upper-tail lifespan changes are not interchangeable. The estimate is a descriptive synthesis of curated experiments, not a pooled causal drug effect or evidence of human life extension.')
add(D,'h2','Background and hypothesis')
add(D,'p','DrugAge assembles experimental lifespan effects of compounds across model organisms [1,2]. Its original publication already reported a correlation between average/median and maximum lifespan changes [1]. Correlation does not imply agreement: two endpoints can be correlated while differing systematically. We therefore examine their paired difference under publication-balanced weighting and document missingness and source-data limitations. This is an updated robustness analysis of an existing question, not a new drug discovery or a comprehensive systematic review.')
add(D,'p','We hypothesized a negative within-record difference, defined as maximum/upper-tail percent change minus average/median percent change. The comparison is in percentage points; a difference of −3 points does not mean that lifespan itself fell by 3%. A later methodological appraisal of DrugAge highlighted substantial reporting and selection concerns [3]. Our estimand explicitly concerns records selected into DrugAge and further selected by availability of both endpoints.')
add(D,'h2','Methods')
add(D,'p','Provenance. We downloaded the official DrugAge ZIP on 5 September 2026 at 08:07:34 UTC. Its SHA-256 is d12f59717de60a207748f53bdbcdb484ed07e30d8608eb8e4a101e2a08d7fa80. The export contains 3,423 records, matching the enclosed build 5 notes dated 29 November 2024 [4]. This is a frozen release, not an assertion of literature coverage through September 2026. HAGR data are reused with attribution under CC BY 3.0 [5]. The manifest preserves source URLs, dates, file sizes and checksums.')
add(D,'p','Eligibility and cleaning. We removed seven exact duplicate rows before adding source-row identifiers. Species names were trimmed and lowercased to reconcile capitalization variants; raw labels were retained. Eligible paired rows had finite numeric average/median and maximum values and a nonmissing source identifier. Blanks were missing rather than zero. No paired change was ≤ −100%, so all could also enter a log-response-ratio sensitivity. No eligibility requirement used statistical significance. Dose, strain, sex and treatment-start variants were retained as distinct rows; they were not assumed statistically independent.')
add(D,'p','Endpoint definitions. DrugAge uses median instead of mean when available, so the central endpoint mixes these summaries [6]. Its maximum field can refer to upper-tail survival, including the 90th percentile in mouse studies [7,8]. We use maximum/upper-tail to acknowledge this heterogeneity. The data do not provide harmonized survival curves or sampling variances. The contrast compares percent changes relative to each endpoint’s own control value; it does not estimate years gained, a hazard ratio, or a change in the aging rate.')
add(D,'p','Primary estimand and uncertainty. First we calculated a paired difference for each eligible record. We then averaged differences within each source key in the pubmed_id field and averaged these source means, giving each group equal weight. We use publication-source group rather than verified publication because one audited key was mismatched. The primary confidence interval resamples the 248 groups with replacement 10,000 times, using seed 20260905 and percentile endpoints. The two-sided primary p value is a one-sample t test on the group means. Holm correction spans the primary tests of both papers [9]. The bootstrap treats source groups as exchangeable and cannot remove dependence between publications from the same laboratory or underlying cohort.')
add(D,'p','Sensitivity and subgroup analyses. Planned checks used row-weighted and compound-balanced estimates, the median source difference, leave-one-source-out estimates, and a mean log-response-ratio contrast. Worm, fly and mouse subgroup tests each used publication-source means; Holm correction was applied across these three two-sided tests. These subgroup tests assess a difference from zero within species and do not test differences between species. Compound-level confidence intervals are descriptive because compounds share publications. A post-hoc ITP-labelled mouse analysis probes a more standardized study program; it is not an independent dataset, and ITP versus non-ITP was not randomized.')
add(D,'p','Source and numerical audits. Independent Python parsing reproduced row counts, the primary mean and its standard error; an independent NumPy random stream gave a similar bootstrap interval (−3.99 to −1.58 points). R t probabilities were checked by numerical integration. NCBI metadata were retrieved for all 248 keys and titles inspected for obvious mismatch. The first, middle and last keys numerically were selected for a closer source check: 101039, 24245565 and 38753230. Key 101039 links to an unrelated radiology article, despite DrugAge rows describing 2-SeCD. A relevant 2-SeCD paper was found at DOI 10.1039/C7RA07210D, but its numeric table was not fully verified. The original key was retained in the prespecified analysis and excluded in a post-hoc sensitivity. The bibliography flags the mismatch rather than presenting the radiology article as a lifespan source.')
add(D,'p','For source 24245565, the acarbose central changes (male 22%, female 5%) and upper-tail changes (11%, 9%) agree with the primary abstract [7]. For source 38753230, the checked male 16-hydroxyestriol and late-start canagliflozin central changes agree with the primary paper [8]. Its treatment name differs from the export’s 16-alpha-hydroxyestradiol label, and source-table values are rounded in DrugAge. These checks are sampled; they do not certify every record, chemical label or experiment. The locally committed plan predates download, but there was no independent registry registration or external data re-extraction.')
add(D,'h2','Results')
add(D,'p','Of 3,416 deduplicated rows, 990 (28.98%) had both endpoints. These represented 248 source identifiers, 298 normalized compound names and 20 species. Maximum values were missing from 2,410 rows (70.55%) and average/median values from 51 rows (1.49%); no source identifiers were missing. Complete-pair availability was 293/1,579 in C. elegans, 217/981 in D. melanogaster and 298/373 in M. musculus. The source-weighted mean central change was 13.43%, compared with 10.66% for the maximum/upper-tail endpoint. These are properties of the included records and not expected benefits of taking a drug.')
add(D,'figure',path='drugage_paired.png',caption='Figure 1. Each point is one source group’s mean of paired DrugAge records. The dashed identity line represents equal percent changes at both endpoints. The point cloud describes curated published experiments, not the universe of tested compounds.',alt='Scatter plot of central versus maximum or upper-tail lifespan changes, with the identity line for endpoint equality.')
add(D,'p','The mean paired contrast was −2.7698 percentage points (SE 0.6131; t-based 95% CI −3.9773 to −1.5623; bootstrap 95% CI −4.0247 to −1.5805). The raw and two-paper Holm-adjusted p values were both 9.68 × 10⁻⁶. Of 248 source means, 149 were negative, five were exactly zero and 94 were positive. The median was −1.95 points. Thus the average contrast does not describe every study or compound.')
add(D,'table',headers=['Subset','Rows / sources','Difference, pp (95% bootstrap CI)','Holm p'],rows=[[{'caenorhabditis elegans':'C. elegans','drosophila melanogaster':'D. melanogaster','mus musculus':'M. musculus'}[r['species']],f"{r['paired_rows']} / {r['units']}",f"{f(r['estimate'])} ({f(r['boot_lo'])}, {f(r['boot_hi'])})",f(r['p_holm'],4)] for r in read('drugage_species.csv')],caption='Table 1. Species-specific publication-source contrasts. Holm correction covers the three subgroup t tests; bootstrap confidence intervals are pointwise and unadjusted.')
add(D,'figure',path='drugage_forest.png',caption='Figure 2. The overall contrast and three prespecified species contrasts. Intervals resample publication-source groups. Negative differences indicate smaller changes in the maximum/upper-tail field, not shorter treated lifespans than controls.',alt='Forest plot with negative overall, worm, fly and mouse endpoint differences and 95 percent bootstrap intervals.')
add(D,'p','The row-weighted contrast was −2.44 points and the compound-balanced contrast −1.53 points (descriptive bootstrap interval −2.42 to −0.69). Leave-one-source-out estimates ranged from −2.886 to −2.594 points. The publication-balanced log-response-ratio contrast was −0.02378 (95% bootstrap interval −0.03441 to −0.01381). These estimates use different weighting or scales; their agreement in direction is a robustness observation, not multiple independent confirmations.')
add(D,'p','Excluding key 101039 retained 247 source groups and yielded −2.7681 points (95% bootstrap CI −3.9908 to −1.5848). The post-hoc mouse subset labelled ITP contained 15 sources and gave −1.82 points (−3.06 to −0.82); the other 51 mouse sources gave −2.08 points (−4.08 to −0.07). For the latter, the t-based interval crosses zero (−4.16 to 0.01); this method sensitivity should discourage binary claims about subgroup significance. These subsets share the same curated source and are not external validation.')
add(D,'h2','Discussion and limitations')
add(D,'p','The study addresses agreement rather than correlation. A negative central-versus-upper-tail contrast is compatible with earlier DrugAge findings that the endpoints are correlated [1]. Publication balancing prevents a paper with many dose, sex or strain records from dominating the overall mean, but it gives a small experiment and a large experiment equal weight. Without sampling variances, this is not an inverse-variance meta-analysis and should not be represented as one.')
add(D,'p','The main limitation is selection. DrugAge historically favored compounds with at least one significant lifespan extension and later incorporated conflicting results [1]. Within that selected resource, fewer than one third of deduplicated records supply both endpoints. Neither the bootstrap nor a small p value corrects publication bias, database selection, endpoint missingness, correlated studies, or extraction errors. The missingness table shows different coverage across species and describes central effects in paired and unpaired records; it does not establish that missingness is random.')
add(D,'p','The meaning of maximum varies across source papers, and central summaries mix mean and median. Dose, treatment initiation, sex, strain, shared controls and measurement conventions vary. Within-record pairing holds those conditions fixed for the endpoint contrast, but comparisons across records still reflect their mix. Rounded percentages may blur small differences. Compound names are normalized only for capitalization and whitespace, not chemically reconciled. The source-ID and chemical-label audit findings demonstrate that manual verification remains necessary. The analysis uses no independent external cohort and makes no causal inference about altering aging.')
add(D,'p','The defensible implication is methodological: report central and upper-tail survival outcomes separately and retain their definitions. A stronger study would re-extract survival curves, exact endpoint definitions and uncertainties from primary experiments under a registered systematic-review protocol. This analysis neither ranks treatments for human use nor establishes safety, efficacy, or human lifespan extension.')
add(D,'h2','Data, code and research transparency')
add(D,'p','The reproduction archive includes the frozen official export, hashes and CC BY 3.0 attribution; the prospective plan and all deviations; screened and paired rows; source means; subgroup, missingness and leave-one-out tables; plots; metadata bibliography with the mismatched key flagged; base-R analysis scripts; and the independent NumPy verifier. Reproduce offline from the archive root with Rscript scripts/robustness.R, then python3 scripts/verify.py using NumPy 2.3.5. Reference fetching is optional and separate from numerical reproduction. No participant-level private data or new animal experiments were used. No ethics approval is asserted.')
add(D,'p',DISCLOSURE+' The website commissioned the work; no funding award, outside sponsor, or human conflict-of-interest declaration has been supplied. Dataset curators and cited investigators did not endorse this synthesis.')
add(D,'h2','References')
for text in ['Barardo D, Thornton D, Thoppil H, Walsh M, Sharifi S, Ferreira S, Anzic A, Fernandes M, Monteiro P, Grum T, Cordeiro R, De-Souza EA, Budovsky A, Araujo N, Gruber J, Petrascheck M, Fraifeld VE, Zhavoronkov A, Moskalev A, de Magalhães JP. The DrugAge database of aging-related drugs. Aging Cell. 2017;16(3):594-597. https://doi.org/10.1111/acel.12585',HAGR,'Parish A, Ioannidis JPA, Zhang K, Barardo D, Swindell WR, de Magalhães JP. Reporting quality, effect sizes, and biases for aging interventions: a methodological appraisal of the DrugAge database. npj Aging. 2025;11:96. https://doi.org/10.1038/s41514-025-00287-0','Human Ageing Genomic Resources. DrugAge build 5 release notes. 29 November 2024; accessed 5 September 2026. https://genomics.senescence.info/drugs/release.html','Human Ageing Genomic Resources. Disclaimers, credits, and copyright: CC BY 3.0. Accessed 5 September 2026. https://genomics.senescence.info/legal.html','Human Ageing Genomic Resources. Using HAGR: DrugAge documentation. Accessed 5 September 2026. https://genomics.senescence.info/help.html','Harrison DE, Strong R, Allison DB, et al. Acarbose, 17-α-estradiol, and nordihydroguaiaretic acid extend mouse lifespan preferentially in males. Aging Cell. 2014;13(2):273-282. https://doi.org/10.1111/acel.12170','Miller RA, Harrison DE, Cortopassi GA, et al. Lifespan effects in male UM-HET3 mice treated with sodium thiosulfate, 16-hydroxyestriol, and late-start canagliflozin. GeroScience. 2024;46:4657-4670. https://doi.org/10.1007/s11357-024-01176-2','Holm S. A simple sequentially rejective multiple test procedure. Scandinavian Journal of Statistics. 1979;6(2):65-70. https://www.jstor.org/stable/4615733']:add(D,'ref',text)
PAPERS=[dict(id='maturation-longevity',title='Maturation and mammalian longevity: sensitivity to taxonomic adjustment in AnAge',short_title='Maturation and mammalian longevity',subtitle='A reproducible comparative analysis of 801 mammalian species',status=COMMON,blocks=A),dict(id='lifespan-endpoints',title='Average and upper-tail lifespan gains are not interchangeable: a publication-balanced DrugAge analysis',short_title='Comparing lifespan endpoints in DrugAge',subtitle='Paired endpoint differences across 990 curated experimental records',status=COMMON,blocks=D)]
if __name__=='__main__':
 for p in PAPERS:(ROOT/'papers'/f"{p['id']}.json").write_text(json.dumps(p,indent=2,ensure_ascii=False)+'\n')
