SPB Git

spb/wp44_uqo

Public

WP44: Parts III and IV fixed after critique; Unicode-safe tables; compile 258 pages, 0 undefined citations

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Simon-Pierre Boucher committed (Nov 3, 2026) parent 1c3517a Browse files

10 changed files +118 −40

added agents/briefs/WRITER_PART01_10_11.md +12 −0
@@ -0,0 +1,12 @@
1 +# Brief — Part I (Introduction), Part X (Frontiers), Part XI (Discussion & Conclusion) + abstract
2 +Files: manuscript/sections/part01_introduction.tex (12–18 pp), part10_frontiers.tex (15–25 pp), part11_discussion.tex (10–15 pp),
3 +sections/abstract.tex (≤ 300 words, no \cite). Follow WRITER_COMMON.md. Read first: CLAUDE.md, RESEARCH_PLAN.md, protocol/PROTOCOL.md,
4 +reports/PHASE1_CORPUS.md, reports/PHASE4_STRUCTURAL_CHANGE_TOTAL.md, reports/*.md, and the written parts (II–IX, specialist
5 +syntheses V–VII if present) — the introduction states the research problem, the contributions (corpus, ontology, knowledge graph,
6 +structural-change evidence, emerging-topic framework, release), the scope and the structure of the paper; the frontiers part
7 +(X) consolidates the open problems collected in literature_synthesis/*/open_problems.csv and Part IX's unresolved questions into
8 +testable research directions and competing hypotheses, with explicit statements of what the corpus cannot decide; the discussion
9 +(XI) states contributions, limitations (coverage, classifier noise, right truncation, LLM extraction, no full text, no Semantic
10 +Scholar), generalisability, implications, and the human-review status (which checkpoints H-0…H-5 remain unsigned — read
11 +reports/HUMAN_REVIEW_CHECKPOINTS.md). Numbers only via macros. No causal language about ChatGPT. The abstract summarises corpus
12 +size, methods and the main verified findings with macros (the title page uses it).
modified manuscript/appendices/appH_reproducibility.tex +1 −1
@@ -233,7 +233,7 @@ to be bit-identical across hardware.
233 233 \label{app:repro-amendments}
234 234
235 235 The protocol was frozen on 2026-11-02 before any analysis of the corpus, and every later change is an
236 −amendment with an identifier, a reason and an approver (\texttt{protocol/\allowbreak amendments.\allowbreak csv}). All six amendments
236 +amendment with an identifier, a reason and an approver (\texttt{protocol/\allowbreak amendments.\allowbreak csv}). All seven amendments (A-000 to A-006)
237 237 of Table~\ref{tab:appH-amendments} are approved by the executing agent and pending the principal
238 238 investigator's signature at the checkpoint of the corresponding phase; the manuscript marks the affected
239 239 conclusions accordingly.
modified manuscript/main.pdf +0 −0

Binary file not shown.

modified manuscript/sections/part03_data.tex +1 −1
@@ -1,6 +1,6 @@
1 1 % ============================================================================
2 2 % Part III — Data and Systematic Review Protocol
3 −% Written by Agent L (Part III instance), 2026-11-03. Every corpus number is a macro from tables/numbers.tex
3 +% Written by Agent L (Part III instance), 2026-11-03; revised by Agent L/M (fixer) 2026-11-03 after Agent K critique (K-20 to K-36, corpus v3, A-006). Every corpus number is a macro from tables/numbers.tex
4 4 % (generated by tables/make_numbers.py from data/metadata/prisma_counts.json and linkage_report.json).
5 5 % Sources of truth: RESEARCH_PLAN.md §2–§3, protocol/PROTOCOL.md, protocol/amendments.csv,
6 6 % reports/PHASE0_FEASIBILITY.md, data/raw/README.md, ingestion/*.py, systematic_review/define_corpus.py.
modified manuscript/tables/numbers.tex +51 −0
@@ -616,3 +616,54 @@
616 616 \newcommand{\IncrementTruncatedSlices}{1}
617 617 \newcommand{\IncrementSlicesDone}{64}
618 618 \newcommand{\IncrementCostUsd}{0.100}
619 +\newcommand{\KnownLargeLanguageModelsTotalWorks}{131{,}927}
620 +\newcommand{\KnownLargeLanguageModelsDetectionMonth}{2020-12}
621 +\newcommand{\KnownLargeLanguageModelsPeakGrowthMonth}{2023-10}
622 +\newcommand{\KnownLargeLanguageModelsLeadMonths}{34}
623 +\newcommand{\KnownDiffusionModelsTotalWorks}{21{,}014}
624 +\newcommand{\KnownDiffusionModelsDetectionMonth}{2023-01}
625 +\newcommand{\KnownDiffusionModelsPeakGrowthMonth}{2023-10}
626 +\newcommand{\KnownDiffusionModelsLeadMonths}{9}
627 +\newcommand{\KnownNeuralRadianceFieldsTotalWorks}{3{,}282}
628 +\newcommand{\KnownNeuralRadianceFieldsDetectionMonth}{2021-04}
629 +\newcommand{\KnownNeuralRadianceFieldsPeakGrowthMonth}{2021-06}
630 +\newcommand{\KnownNeuralRadianceFieldsLeadMonths}{2}
631 +\newcommand{\KnownLlmAgentsTotalWorks}{6{,}809}
632 +\newcommand{\KnownLlmAgentsDetectionMonth}{2023-10}
633 +\newcommand{\KnownLlmAgentsPeakGrowthMonth}{2024-04}
634 +\newcommand{\KnownLlmAgentsLeadMonths}{6}
635 +\newcommand{\KnownRetrievalAugmentedGenerationTotalWorks}{12{,}895}
636 +\newcommand{\KnownRetrievalAugmentedGenerationDetectionMonth}{2023-10}
637 +\newcommand{\KnownRetrievalAugmentedGenerationPeakGrowthMonth}{2024-10}
638 +\newcommand{\KnownRetrievalAugmentedGenerationLeadMonths}{12}
639 +\newcommand{\KnownStateSpaceSequenceModelsTotalWorks}{8{,}040}
640 +\newcommand{\KnownStateSpaceSequenceModelsDetectionMonth}{2024-07}
641 +\newcommand{\KnownStateSpaceSequenceModelsPeakGrowthMonth}{2025-01}
642 +\newcommand{\KnownStateSpaceSequenceModelsLeadMonths}{6}
643 +\newcommand{\KnownVisionLanguageModelsTotalWorks}{18{,}664}
644 +\newcommand{\KnownVisionLanguageModelsDetectionMonth}{2022-06}
645 +\newcommand{\KnownVisionLanguageModelsPeakGrowthMonth}{2023-03}
646 +\newcommand{\KnownVisionLanguageModelsLeadMonths}{9}
647 +\newcommand{\KnownMechanisticInterpretabilityTotalWorks}{629}
648 +\newcommand{\KnownMechanisticInterpretabilityDetectionMonth}{2024-10}
649 +\newcommand{\KnownMechanisticInterpretabilityPeakGrowthMonth}{2023-04}
650 +\newcommand{\KnownMechanisticInterpretabilityLeadMonths}{-18}
651 +\newcommand{\KnownSpeculativeDecodingTotalWorks}{679}
652 +\newcommand{\KnownSpeculativeDecodingDetectionMonth}{2024-04}
653 +\newcommand{\KnownSpeculativeDecodingPeakGrowthMonth}{2024-09}
654 +\newcommand{\KnownSpeculativeDecodingLeadMonths}{5}
655 +\newcommand{\KnownMixtureOfExpertsTotalWorks}{4{,}282}
656 +\newcommand{\KnownMixtureOfExpertsDetectionMonth}{2024-06}
657 +\newcommand{\KnownMixtureOfExpertsPeakGrowthMonth}{2024-11}
658 +\newcommand{\KnownMixtureOfExpertsLeadMonths}{5}
659 +\newcommand{\KnownReasoningModelsTotalWorks}{6{,}206}
660 +\newcommand{\KnownReasoningModelsDetectionMonth}{2023-06}
661 +\newcommand{\KnownReasoningModelsPeakGrowthMonth}{2025-11}
662 +\newcommand{\KnownReasoningModelsLeadMonths}{29}
663 +\newcommand{\KnownAiCodeGenerationTotalWorks}{8{,}775}
664 +\newcommand{\KnownAiCodeGenerationDetectionMonth}{2023-11}
665 +\newcommand{\KnownAiCodeGenerationPeakGrowthMonth}{2024-09}
666 +\newcommand{\KnownAiCodeGenerationLeadMonths}{10}
667 +\newcommand{\KnownSetMedianLeadMonths}{7}
668 +\newcommand{\KnownSetNDetected}{12}
669 +\newcommand{\KnownSetNPositiveLead}{11}
modified manuscript/tables/tab_linkage.tex +10 −10
@@ -5,18 +5,18 @@
5 5 \toprule
6 6 \textbf{Quantity} & \textbf{Count} \\
7 7 \midrule
8 −DBLP records 2018–2026 & 4{,}347{,}365 \\
9 −… with DOI & 4{,}052{,}326 \\
10 −DBLP ↔ OpenAlex links by DOI & 3{,}639{,}848 \\
11 −… by normalised title + year (+ first author) & 141{,}062 \\
8 +DBLP records 2018--2026 & 4{,}347{,}365 \\
9 +\ldots{} with DOI & 4{,}052{,}326 \\
10 +DBLP $\leftrightarrow$ OpenAlex links by DOI & 3{,}639{,}848 \\
11 +\ldots{} by normalised title + year (+ first author) & 141{,}062 \\
12 12 DBLP records linked (distinct) & 3{,}774{,}184 \\
13 13 DBLP records without OpenAlex record & 573{,}181 \\
14 −arXiv cs records created 2018–2026 & 890{,}852 \\
15 −arXiv ↔ OpenAlex by arXiv id & 914{,}406 \\
16 −… by DOI & 783 \\
17 −… by title + year & 1{,}768 \\
18 −ACL entries 2018–2026 & 85{,}625 \\
19 −ACL ↔ OpenAlex linked (2018–2026) & 72{,}949 \\
14 +arXiv cs records created 2018--2026 & 890{,}852 \\
15 +arXiv $\leftrightarrow$ OpenAlex by arXiv id & 914{,}406 \\
16 +\ldots{} by DOI & 783 \\
17 +\ldots{} by title + year & 1{,}768 \\
18 +ACL entries 2018--2026 & 85{,}625 \\
19 +ACL $\leftrightarrow$ OpenAlex linked (2018--2026) & 72{,}949 \\
20 20 \bottomrule
21 21 \end{tabular}
22 22 \end{threeparttable}\end{table}
modified manuscript/tables/tab_prisma.tex +1 −1
@@ -5,7 +5,7 @@
5 5 \toprule
6 6 \textbf{Stage} & \textbf{Records} \\
7 7 \midrule
8 −Identified: OpenAlex works with a CS topic, 2018–2026 (snapshot 2026-10-14, both passes) & 16{,}592{,}966 \\
8 +Identified: OpenAlex works with a CS topic, 2018--2026 (snapshot 2026-10-14, both passes) & 16{,}592{,}966 \\
9 9 Excluded E1 outside the window & 59{,}453 \\
10 10 Excluded E2 non-research document type & 3{,}994{,}472 \\
11 11 Excluded E3 XPAC expansion record (not DBLP-linked) & 1{,}430{,}851 \\
modified reports/critic/resolutions.csv +26 −26
@@ -15,7 +15,7 @@ issue_id,file,action,note
15 15 "K-33","manuscript/sections/part03_data.tex","fixed","\AclParsedEntries used."
16 16 "K-34","manuscript/sections/part03_data.tex","fixed","E1 now also described as removing out-of-window second-pass records loaded by identifier (also stated in the second-pass subsection)."
17 17 "K-35","manuscript/sections/part03_data.tex","fixed","date_precision = year only when YYYY-01-01 and no preprint/arXiv date; first-date override of YYYY-01-01 dates stated in sec:data-dedup and sec:data-dates."
18 −"K-36","manuscript/sections/part03_data.tex","fixed","Switched cites to the main-bib keys martinmartin2021coverage, radev2013aclanthology, kinney2023s2ag and to fortunato2018sos (part02 key; neither key is in references.bib, part02 cites sos); deleted the four duplicate entries from references_part03.bib; kept culbert2025openalex (journal version with DOI) for Part II to adopt per K-05."
18 +"K-36","manuscript/sections/part03_data.tex","fixed","Switched every duplicated work to the key of references.bib: martinmartin2021coverage, radev2013aclanthology, kinney2023s2ag, fortunato2018scienceofscience, culbert2025openalexcoverage, scheidsteger2023magopenalex, page2021prismaexplanation, wang2013citationwindow, lin2020arxivcs; deleted the nine duplicate entries from references_part03.bib (9 entries remain, all unique DOIs); merge_bibs rerun (735 entries, 1 DOI conflict = matsakis2014rust in part02, not mine). Part II should cite culbert2025openalexcoverage (journal version) per K-05."
19 19 K-01,manuscript/sections/part02_evolution.tex,fixed,"Bornmann & Mutz 2015 re-verified via Crossref abstract (10.1002/asi.23329): three phases <1 % / 2-3 % / 8-9 % to 2010; sentence now reports all three and a modern doubling time of about nine years."
20 20 K-02,manuscript/sections/part02_evolution.tex,fixed,"Lin et al. 2020 verified via the arXiv version's abstract (2308.01899; Crossref/OpenAlex carry no abstract): 66 % published under unchanged titles + 11 % under changed titles for arXiv CS preprints 2008-2017. 'Majority unmatched' reversed to 'about a quarter unmatched' at l.55 and l.151, flagged as abstract-based; unsupported 'median delay' claim removed."
21 21 K-03,manuscript/sections/part02_evolution.tex,fixed,"Seasonality now described as a single set of eleven month dummies common to both periods (as _design() fits it); amplitude change stated as absorbed by residuals, a limitation."
@@ -46,28 +46,28 @@ K-110,manuscript/appendices/appH_reproducibility.tex,fixed,"'28 cores' removed f
46 46 K-111,manuscript/appendices/appH_reproducibility.tex,fixed,"Typed provenance counts replaced by macros (\PrismaIdentifiedOpenalexPassOneCsTopicFilter, \LinkSlimTotal, \DblpParsedRecords, \LinkArxivCsRecords, \AclParsedEntries) in the steps table, prose and raw-sources table."
47 47 K-112,manuscript/appendices/appH_reproducibility.tex,fixed,"Same-environment statement for M5M36/M4M64c/M3U96a now declared an assumption (no capture under reproducibility/)."
48 48 K-113,manuscript/appendices/appH_reproducibility.tex,fixed,"arXiv licence wording harmonised with Part III ('arXiv metadata terms', CC0 for the metadata) in prose and in tab:appH-raw."
49 −K-40,manuscript/sections/part04_methodology.tex,fixed,macro \LinkNeededOaIdsSecondPassArxivDoi now emitted by make_numbers.py (regenerated 617 macros); usage kept
50 −K-41,manuscript/sections/part04_methodology.tex,fixed,"garbled diversity paragraph rewritten from 04_diversity_cagr.py: category mix per year <= 2025, delta = 1 - centroid cosine (post then baseline) else 1 - co-classification Jaccard, RS percentile CI from B=500 multinomial resamples seed 44, LC q=2 without CI, similarity source recorded"
51 −K-42,manuscript/sections/part04_methodology.tex,fixed,eq:first-date rewritten as the two-branch rule of define_corpus.py (1-January date dropped when a preprint/arXiv date exists); consequence stated (year-only 2022 record with 2023 arXiv date -> post period)
52 −K-43,manuscript/sections/part04_methodology.tex,fixed,prec = year only when no preprint/arXiv date; 'cannot manufacture a break' removed; period-dependence of the rescue stated as a maintained caveat with macros \PrismaEligibleDatePrecisionMonth/Year; sensitivity redistributing year-only records declared not implemented
53 −K-44,manuscript/sections/part04_methodology.tex,fixed,"eq:duppair now has both routes (title+year within 2 years, shared arXiv id), the admissible-twin set B (in window, non-XPAC, titled, kept type or DBLP), length test on normalised titles, macros \PrismaVersionRelationshipTitleYear/ArxivId"
54 −K-45,manuscript/sections/part04_methodology.tex,fixed,period cases pre/future added; pre = \PrismaEligibleByPeriodPre works outside both periods and monthly series; future empty (prisma_counts eligible_by_period has no such key)
55 −K-46,manuscript/sections/part04_methodology.tex,fixed,first-author surname condition of link_sources.py added to step 3 of the DBLP cascade
56 −K-47,manuscript/sections/part04_methodology.tex,fixed,membership rule rewritten per A-006 (in_dblp OR cs_primary OR arxiv_cs_primary); old clause and its unreachability explained; third class reported with \PrismaNeitherCoreNorPenumbraAfterExclusions
57 −K-48,manuscript/sections/part04_methodology.tex,fixed,"weighting sentence replaced: DOI stratum dominates p-hat; automatic check passes all title pairs and fails some DOI pairs (book-level DOIs = error, retitled versions = correct link); PI verdicts settle precision"
58 −K-49,manuscript/sections/part04_methodology.tex,fixed,"linkage_sample.py normalisation (NFKD ASCII fold, lower-case, non-alphanumerics collapsed to a space) and surname normalisation (DBLP 4-digit suffix stripped) described"
59 −K-50,manuscript/sections/part04_methodology.tex,fixed,"donut specification described from run_structural_change.py (--donut 3: event month + 3 months each side, 7 months removed) and reported with \ItsSeriesTotalItsChatgptDonutN/LevelChange/LevelP"
60 −K-51,manuscript/sections/part04_methodology.tex,fixed,"1,000-replication bootstrap claim removed; only bootstrap stated = 04_diversity_cagr.py (B=500 multinomial, RS and category shares); Gini, cross-area shares, modularity carry no interval"
61 −K-52,manuscript/sections/part04_methodology.tex,fixed,"CAGR attributed to 04_diversity_cagr.py (2018->2022 and 2023->2025 on primary counts, shares 2018/2022/2025, undefined if start count 0); script added to the list"
62 −K-53,manuscript/sections/part04_methodology.tex,fixed,"'with and without the preprint type' removed; venue_hhi_yearly.csv is all-types only, top-1 share is the only preprint gauge"
63 −K-54,manuscript/sections/part04_methodology.tex,fixed,"cutoff rule stated (index = 0 mod 3 from 2018-01; train 2020-01..2021-10 for h=12, 2020-01..2020-10 for h=24, last label closes 2022-10; test 2023-01..2024-10 for h=12, 2023-01..2024-04 for h=24 with last month 2026-06); metrics JSON absent so the rule is described; Appendix C (K-90/K-91) is for its own fixer"
64 −K-55,manuscript/sections/part04_methodology.tex,fixed,--last-month default corrected to June 2026
65 −K-56,manuscript/sections/part04_methodology.tex,fixed,overlap sentence deleted; non-overlap of (T-2..T) and (T-27..T-3) stated
66 −K-57,manuscript/sections/part04_methodology.tex,fixed,"known_set.py described as a separate preregistered-concept lead-time check (keyword regexes, z>3 and doubling with >=30 works, ex-post peak month), explicitly not the H8 test; numbers left as \pending (no macro for known_set_lead_times.csv in make_numbers.py)"
67 −K-58,manuscript/sections/part04_methodology.tex,fixed,"six checkpoints H-0 to H-5, H-0 described"
68 −K-59,manuscript/sections/part04_methodology.tex,fixed,"created_date qualified (2025 re-ingestion, not used as an indexing date) consistent with Part III"
69 −K-60,manuscript/sections/part04_methodology.tex,fixed,"seasonality remark replaced by the driver's baseline-month-mean seasonal adjustment of the log series, also the input of PELT and BOCPD"
70 −K-61,manuscript/sections/part04_methodology.tex,fixed,"Gini and NCS populations = eligible, non-retracted works; retracted exclusion and preprint-citation CY union (B4) now owned by the citation-windows subsection"
71 −K-62,manuscript/sections/part04_methodology.tex,fixed,"baseline-only placebo rank described (excludes the true event, can be 0) next to the full-range rank"
72 −K-63,manuscript/sections/part04_methodology.tex,fixed,"'immaterial' removed; driver gives no reason for --first 2018-02, omission stated as one baseline month (\ItsSeriesTotalNMonths months)"
73 −bib-part04,manuscript/references_part04.bib,fixed,"duplicate-DOI keys removed from references_part04.bib (waltman2019fieldnorm, wang2013window, uzzi2013atypical, bernal2018controls, bai2003computation) and replaced in part04 \cite by the references.bib keys; merge_bibs.py re-run (741 entries)"
49 +K-40,manuscript/sections/part04_methodology.tex,fixed,macro \LinkNeededOaIdsSecondPassArxivDoi now emitted by make_numbers.py (regenerated 617 macros); usage kept
50 +K-41,manuscript/sections/part04_methodology.tex,fixed,"garbled diversity paragraph rewritten from 04_diversity_cagr.py: category mix per year <= 2025, delta = 1 - centroid cosine (post then baseline) else 1 - co-classification Jaccard, RS percentile CI from B=500 multinomial resamples seed 44, LC q=2 without CI, similarity source recorded"
51 +K-42,manuscript/sections/part04_methodology.tex,fixed,eq:first-date rewritten as the two-branch rule of define_corpus.py (1-January date dropped when a preprint/arXiv date exists); consequence stated (year-only 2022 record with 2023 arXiv date -> post period)
52 +K-43,manuscript/sections/part04_methodology.tex,fixed,prec = year only when no preprint/arXiv date; 'cannot manufacture a break' removed; period-dependence of the rescue stated as a maintained caveat with macros \PrismaEligibleDatePrecisionMonth/Year; sensitivity redistributing year-only records declared not implemented
53 +K-44,manuscript/sections/part04_methodology.tex,fixed,"eq:duppair now has both routes (title+year within 2 years, shared arXiv id), the admissible-twin set B (in window, non-XPAC, titled, kept type or DBLP), length test on normalised titles, macros \PrismaVersionRelationshipTitleYear/ArxivId"
54 +K-45,manuscript/sections/part04_methodology.tex,fixed,period cases pre/future added; pre = \PrismaEligibleByPeriodPre works outside both periods and monthly series; future empty (prisma_counts eligible_by_period has no such key)
55 +K-46,manuscript/sections/part04_methodology.tex,fixed,first-author surname condition of link_sources.py added to step 3 of the DBLP cascade
56 +K-47,manuscript/sections/part04_methodology.tex,fixed,membership rule rewritten per A-006 (in_dblp OR cs_primary OR arxiv_cs_primary); old clause and its unreachability explained; third class reported with \PrismaNeitherCoreNorPenumbraAfterExclusions
57 +K-48,manuscript/sections/part04_methodology.tex,fixed,"weighting sentence replaced: DOI stratum dominates p-hat; automatic check passes all title pairs and fails some DOI pairs (book-level DOIs = error, retitled versions = correct link); PI verdicts settle precision"
58 +K-49,manuscript/sections/part04_methodology.tex,fixed,"linkage_sample.py normalisation (NFKD ASCII fold, lower-case, non-alphanumerics collapsed to a space) and surname normalisation (DBLP 4-digit suffix stripped) described"
59 +K-50,manuscript/sections/part04_methodology.tex,fixed,"donut specification described from run_structural_change.py (--donut 3: event month + 3 months each side, 7 months removed) and reported with \ItsSeriesTotalItsChatgptDonutN/LevelChange/LevelP"
60 +K-51,manuscript/sections/part04_methodology.tex,fixed,"1,000-replication bootstrap claim removed; only bootstrap stated = 04_diversity_cagr.py (B=500 multinomial, RS and category shares); Gini, cross-area shares, modularity carry no interval"
61 +K-52,manuscript/sections/part04_methodology.tex,fixed,"CAGR attributed to 04_diversity_cagr.py (2018->2022 and 2023->2025 on primary counts, shares 2018/2022/2025, undefined if start count 0); script added to the list"
62 +K-53,manuscript/sections/part04_methodology.tex,fixed,"'with and without the preprint type' removed; venue_hhi_yearly.csv is all-types only, top-1 share is the only preprint gauge"
63 +K-54,manuscript/sections/part04_methodology.tex,fixed,"cutoff rule stated (index = 0 mod 3 from 2018-01; train 2020-01..2021-10 for h=12, 2020-01..2020-10 for h=24, last label closes 2022-10; test 2023-01..2024-10 for h=12, 2023-01..2024-04 for h=24 with last month 2026-06); metrics JSON absent so the rule is described; Appendix C (K-90/K-91) is for its own fixer"
64 +K-55,manuscript/sections/part04_methodology.tex,fixed,--last-month default corrected to June 2026
65 +K-56,manuscript/sections/part04_methodology.tex,fixed,overlap sentence deleted; non-overlap of (T-2..T) and (T-27..T-3) stated
66 +K-57,manuscript/sections/part04_methodology.tex,fixed,"known_set.py described as a separate preregistered-concept lead-time check (keyword regexes, z>3 and doubling with >=30 works, ex-post peak month), explicitly not the H8 test; numbers left as \pending (no macro for known_set_lead_times.csv in make_numbers.py)"
67 +K-58,manuscript/sections/part04_methodology.tex,fixed,"six checkpoints H-0 to H-5, H-0 described"
68 +K-59,manuscript/sections/part04_methodology.tex,fixed,"created_date qualified (2025 re-ingestion, not used as an indexing date) consistent with Part III"
69 +K-60,manuscript/sections/part04_methodology.tex,fixed,"seasonality remark replaced by the driver's baseline-month-mean seasonal adjustment of the log series, also the input of PELT and BOCPD"
70 +K-61,manuscript/sections/part04_methodology.tex,fixed,"Gini and NCS populations = eligible, non-retracted works; retracted exclusion and preprint-citation CY union (B4) now owned by the citation-windows subsection"
71 +K-62,manuscript/sections/part04_methodology.tex,fixed,"baseline-only placebo rank described (excludes the true event, can be 0) next to the full-range rank"
72 +K-63,manuscript/sections/part04_methodology.tex,fixed,"'immaterial' removed; driver gives no reason for --first 2018-02, omission stated as one baseline month (\ItsSeriesTotalNMonths months)"
73 +bib-part04,manuscript/references_part04.bib,fixed,"duplicate-DOI keys removed from references_part04.bib (waltman2019fieldnorm, wang2013window, uzzi2013atypical, bernal2018controls, bai2003computation) and replaced in part04 \cite by the references.bib keys; merge_bibs.py re-run (741 entries)"
modified tables/make_numbers.py +12 −0
@@ -56,5 +56,17 @@ for f, key in [("data/metadata/dblp_parse_report.json", "dblp"), ("data/metadata
56 56 emit("dblp parsed records", d.get("rows_written", 0)); [emit(f"dblp type {k}", v) for k, v in d.get("counts_by_type", {}).items()]
57 57 elif key == "acl":
58 58 emit("acl parsed entries", d.get("entries", 0))
59 +p = os.path.join(R, "results/emerging/known_set_lead_times.csv")
60 +if os.path.exists(p):
61 + for row in csv.DictReader(open(p)):
62 + for k in ("total_works", "detection_month", "peak_growth_month", "lead_months"):
63 + v = row.get(k)
64 + if v in ("", None): continue
65 + try: v = int(float(v)) if re.fullmatch(r"-?\d+(\.0)?", v) else v
66 + except ValueError: pass
67 + emit(f"known {row['concept']} {k}", v)
68 + leads = [int(float(r["lead_months"])) for r in csv.DictReader(open(p)) if r.get("lead_months") not in ("", None)]
69 + if leads:
70 + import statistics; emit("known set median lead months", int(statistics.median(leads))); emit("known set n detected", len(leads)); emit("known set n positive lead", sum(1 for l in leads if l > 0))
59 71 open(os.path.join(R, "manuscript/tables/numbers.tex"), "w").write("% machine-generated by tables/make_numbers.py — do not edit\n" + "\n".join(out) + "\n")
60 72 print(len(out), "macros")
modified tables/make_tables.py +4 −1
@@ -8,7 +8,10 @@ OUT = os.path.join(R, "manuscript/tables"); os.makedirs(OUT, exist_ok=True); INV
8 8
9 9
10 10 def tex_escape(s):
11 − return str(s).replace("&", "\\&").replace("%", "\\%").replace("_", "\\_").replace("#", "\\#")
11 + s = str(s).replace("&", "\\&").replace("%", "\\%").replace("_", "\\_").replace("#", "\\#")
12 + for a, b in (("↔", "$\\leftrightarrow$"), ("→", "$\\rightarrow$"), ("…", "\\ldots{}"), ("∨", "$\\vee$"), ("∧", "$\\wedge$"), ("≥", "$\\geq$"), ("≤", "$\\leq$"), ("–", "--"), ("—", "---"), ("×", "$\\times$")):
13 + s = s.replace(a, b)
14 + return s
12 15
13 16
14 17 def write(name, df, caption, label, sources, fmt=None, col_names=None, longtable=False, note=None):
15 18
Menu

Theme