SPB Git

spb/wp44_uqo

Public
112.4 KB · 1,827 lines latex
1% ============================================================================2% Part IV — Computational Methodology3% Written by Agent L (Part IV instance), 2026-11-03. Documents what the code in4% ingestion/, systematic_review/, taxonomy/, bibliometrics/, knowledge_graph/,5% econometrics/, embeddings/ and experiments/ actually does. Where the code and6% RESEARCH_PLAN.md differ, the code is described and the difference is stated.7% Corpus numbers only through macros of tables/numbers.tex.8% ============================================================================910\section{Notation and the corpus as a measurable object}11\label{sec:m-notation}1213Every quantity reported in Parts VIII and IX is a function of a finite set of14bibliographic records and of a small number of deterministic transformations15applied to them. This part states those transformations with enough precision16that an independent analyst could recompute the results from the raw snapshots17listed in Part III\@. The exposition follows the order of the pipeline18(\texttt{reproducibility/RUNBOOK.md}): record linkage, deduplication and19eligibility (Section~\ref{sec:m-linkage}), multi-label classification20(Section~\ref{sec:m-classification}), bibliometric indicators21(Section~\ref{sec:m-bibliometrics}), network measures (Section~\ref{sec:m-networks}),22semantic mapping (Section~\ref{sec:m-semantic}), structural change23(Section~\ref{sec:m-structural}), emerging-topic detection24(Section~\ref{sec:m-emerging}), knowledge-graph extraction25(Section~\ref{sec:m-kg}) and the treatment of uncertainty and reproducibility26(Section~\ref{sec:m-uncertainty}). Throughout, a design choice that departs from27the preregistered plan (\texttt{RESEARCH\_PLAN.md}, \texttt{protocol/PROTOCOL.md})28is stated as such, because the code, not the plan, is what produced the numbers.2930\subsection{Works, dates and periods}3132Let $\mathcal{W}_0$ denote the set of OpenAlex work records loaded from the33snapshot of 14~October 2026 (the records carrying at least one topic of the34Computer Science field, plus the second-pass records recovered through DBLP and35arXiv identifiers, Section~\ref{sec:m-linkage}). Each record $w \in \mathcal{W}_0$36carries an OpenAlex identifier, a type $\tau(w)$ drawn from the OpenAlex37controlled vocabulary, a publication date $d_{\mathrm{pub}}(w)$, a creation date38$d_{\mathrm{cr}}(w)$ (nominally the date at which the record entered OpenAlex;39Part III shows that for most records it reflects a re-ingestion in the second40half of 2025, so it is not used as an indexing date), a title, an41optional abstract, authorships, a primary source (venue), OpenAlex topics with42their subfield and field, a list of referenced works, and yearly citation counts.43Linked records from DBLP, arXiv and the ACL Anthology attach to $w$ a DBLP key,44an arXiv identifier with its arXiv creation date $d_{\mathrm{arx}}(w)$ and primary45category, and an ACL identifier.4647The temporal position of a work is its \emph{first date}, computed by48\texttt{systematic\_review/define\_corpus.py} from three candidate dates: the49publication date $d_{\mathrm{pub}}(w)$, the publication date50$d_{\mathrm{pub}}(\pi(w))$ of the preprint record $\pi(w)$ merged into $w$ by51the deduplication rule of Section~\ref{sec:m-dedup} when one exists, and the52arXiv creation date $d_{\mathrm{arx}}(w)$ of the linked arXiv record when one53exists. Let $A(w) \subseteq \{ d_{\mathrm{pub}}(\pi(w)),\, d_{\mathrm{arx}}(w) \}$54be the set of those two dates that are available for $w$. Then55\begin{equation}56  d(w) \;=\;57  \begin{cases}58    \min A(w) & \text{if } d_{\mathrm{pub}}(w) \text{ falls on 1 January and } A(w) \neq \emptyset,\\[2pt]59    \min\bigl( \{ d_{\mathrm{pub}}(w) \} \cup A(w) \bigr) & \text{otherwise.}60  \end{cases}61  \label{eq:first-date}62\end{equation}63The second branch is the minimum of the available dates. The first branch is64the override that matters: OpenAlex records a year-only publication date as65the first of January of that year, and when a preprint or arXiv date exists66the code \emph{drops} the 1~January date from the minimum instead of letting67a fictitious date win by construction. The first date can therefore be later68than the publication date, with a consequence for the period assignment69below: a record whose publication date is 1~January 2022 and whose linked70arXiv version was created in March 2023 is dated March 2023 and belongs to71the post period, although its OpenAlex year is 2022. The first date, not the72date of the version of record, is73the quantity that places a work on the time axis, because the research question74concerns when ideas entered the literature rather than when a publisher released75them. The publication year $y(w)$ used for citation normalisation is, in76contrast, the OpenAlex \texttt{publication\_year} of the surviving record,77because citation windows are defined in calendar years of the OpenAlex78\texttt{counts\_by\_year} table (Section~\ref{sec:m-citations}). The two79conventions are deliberately distinct and both are stored on every record.8081The observation window is $[t_0, t_1] = [\text{2018-01-01}, \text{2026-11-02}]$,82split at the reference date $t^{\ast} = \text{2022-11-30}$ into a baseline83period $B = [t_0, t^{\ast})$ and a post period $P = [t^{\ast}, t_1]$:84\begin{equation}85  \mathrm{period}(w) \;=\;86  \begin{cases}87    \text{pre}    & \text{if } d(w) < t_0,\\88    B             & \text{if } t_0 \le d(w) < t^{\ast},\\89    P             & \text{if } t^{\ast} \le d(w) \le t_1,\\90    \text{future} & \text{if } d(w) > t_1 .91  \end{cases}92\end{equation}93The eligibility predicate of Section~\ref{sec:m-eligibility} constrains94$d_{\mathrm{pub}}(w)$, not $d(w)$, to the window, so an eligible work whose95preprint or arXiv date precedes 2018 receives the label \emph{pre}96(\PrismaEligibleByPeriodPre{} eligible works); such works are counted in the97annual tables, which are keyed by publication year, but belong to neither98period and to no monthly series, since the series start in January 2018. The99label \emph{future} is defined for completeness and is empty in the current100corpus: it could arise only if an arXiv date later than the window end101rescued a year-only record. Monthly series use the month $m(w)$ of the first102date. Two facts about dates103constrain everything that follows. First, a substantial share of OpenAlex104records carry a publication date equal to the first of January of their year,105which is the database's convention for year-only precision rather than a real106date. The pipeline therefore attaches to every record a flag107\begin{equation}108  \mathrm{prec}(w) \;=\;109  \begin{cases}110    \text{year}  & \text{if } d_{\mathrm{pub}}(w) \text{ falls on 1 January and } A(w) = \emptyset,\\111    \text{month} & \text{otherwise},112  \end{cases}113\end{equation}114and every monthly series in this paper is computed on the month-precision115subset $\mathcal{W}^{\mathrm{m}} = \{w : \mathrm{prec}(w) = \text{month}\}$ only116(amendment A-002): \PrismaEligibleDatePrecisionMonth{} eligible works are at117month precision and \PrismaEligibleDatePrecisionYear{} at year precision. A118record whose 1~January date is overridden in equation~\eqref{eq:first-date}119counts as month precision, because the date that places it is a real one. Two120consequences follow. A genuine 1~January publication without a linked earlier121version is misclassified as year precision and dropped from the monthly122series. More importantly, the exclusion is not period-neutral: whether a123year-only record is rescued depends on whether it has a linked preprint or124arXiv version, and that linkage rate rises over the window with the growth of125arXiv deposit, so the fraction of eligible works that enter the monthly series126differs between the baseline and the post period, and Part III reports127year-only shares that vary by source and type. A change in level of a monthly128series could in principle be produced by a change in date precision alone.129The manuscript treats this as a maintained caveat rather than a solved130problem: the year-precision share is reported by year, source and type next to131the monthly series (Parts III and IX), and the annual series, which use all132eligible records, are the check that does not depend on precision. A133sensitivity run that redistributes year-only records over the months of their134year is not implemented. Second, the right end of the window is135censored: records published in the last months before the snapshot are136under-represented because OpenAlex indexes them with a lag. The treatment of this137right-truncation is specified in Section~\ref{sec:m-truncation}.138139\subsection{Categories, areas and the measurable structure}140141Let $\mathcal{K}$ be the set of the forty leaf categories of the ontology142(\texttt{taxonomy/ontology.yaml}, Part III and Appendix~A) and $\mathcal{A}$ the143set of its eight areas, with the surjection $a : \mathcal{K} \to \mathcal{A}$144assigning each leaf to its area. Seven leaves are additionally declared children145of another leaf (for instance \textit{llm} $\prec$ \textit{foundation\_models},146\textit{compilers} $\prec$ \textit{programming\_languages}); this partial order147$\prec$ is used only to break ties when a primary category is chosen. The148classifier of Section~\ref{sec:m-classification} assigns to each work a label set149$C(w) \subseteq \mathcal{K}$, possibly empty, and, when $C(w) \neq \emptyset$, a150primary category $\kappa^{\ast}(w) \in C(w)$. Multi-label counting and primary151counting give different answers to ``how many works are in category $k$'', and152both are reported: for a set of works $S$,153\begin{equation}154  N_k^{\mathrm{ml}}(S) = \bigl|\{ w \in S : k \in C(w) \}\bigr|, \qquad155  N_k^{\mathrm{pr}}(S) = \bigl|\{ w \in S : \kappa^{\ast}(w) = k \}\bigr| ,156\end{equation}157so that $\sum_k N_k^{\mathrm{pr}}(S) \le |S|$ with equality when every work is158classified, whereas $\sum_k N_k^{\mathrm{ml}}(S)$ exceeds $|S|$ by the number of159secondary labels. Flows between categories (Section~\ref{sec:m-networks}) and160the emerging-topic panel (Section~\ref{sec:m-emerging}) use the primary label;161co-classification statistics use the full label set.162163The eligible corpus $\mathcal{W} \subseteq \mathcal{W}_0$ is the set of records164passing the predicate $E(w)$ of Section~\ref{sec:m-eligibility}. For a month $t$165and a category $k$, the elementary counts are166\begin{equation}167  N_t = \bigl|\{ w \in \mathcal{W}^{\mathrm{m}} : m(w) = t \}\bigr|, \qquad168  N_{k,t} = \bigl|\{ w \in \mathcal{W}^{\mathrm{m}} : m(w) = t,\; \kappa^{\ast}(w) = k \}\bigr|,169  \qquad s_{k,t} = N_{k,t}/N_t .170  \label{eq:counts}171\end{equation}172Every estimand of Parts VIII and IX is a functional of these counts, of the173citation matrix of Section~\ref{sec:m-citations}, of the authorship lists, or of174the embedding vectors of Section~\ref{sec:m-semantic}. The corpus is finite and175fully enumerated, so the descriptive quantities are population quantities rather176than sample estimates; the inferential devices of Sections~\ref{sec:m-structural}177and~\ref{sec:m-emerging} address a different kind of uncertainty, namely whether178an observed temporal pattern is distinguishable from the ordinary fluctuations179of the series, and whether a predictor would have worked out of time.180181\subsection{Storage and computation}182183The pipeline keeps the raw snapshots immutable (per-file SHA-256 ledgers,184Section~\ref{sec:m-uncertainty}) and materialises all derived tables as Parquet185files queried through DuckDB \citep{raasveldt2019duckdb}; the linkage,186deduplication, eligibility, counting and citation-window steps are SQL187statements executed inside one database file, which makes every table in this188part a deterministic function of the raw inputs and of the script that produced189it. Python is used where SQL is inconvenient: the regular-expression classifier,190the structural-change toolkit, the embedding and clustering steps, and the191detector. The slim table of all OpenAlex works (\LinkSlimTotal{} rows: identifier,192DOI, year, type, primary topic hierarchy, citation count) is kept so that the193field of a cited work outside computer science can be resolved194(Section~\ref{sec:m-citgraph}); this is decision D2 of the plan.195196\section{Record linkage, deduplication and eligibility}197\label{sec:m-linkage}198199The four sources describe overlapping but differently delimited populations:200OpenAlex is the backbone, DBLP defines what counts as a computer-science venue,201arXiv contributes preprints and their categories, and the ACL Anthology serves as202a coverage check for natural-language processing. Combining them is a record203linkage problem in the classical sense of \citet{fellegi1969linkage}: two204records from different files must be declared the same work or not, on the205basis of comparison vectors computed from their fields. The pipeline uses a206deterministic cascade rather than a probabilistic model, because the dominant207comparison fields (DOI and arXiv identifier) are persistent identifiers whose208agreement is near-conclusive, and because a probabilistic model would require209labelled training pairs that the project does not possess before the human210checkpoint H-1. The cost of this choice is that the precision of the residual211title-based step must be estimated from a reviewed sample rather than derived212from the model; the design of that estimate is given in213Section~\ref{sec:m-linkprecision}.214215\subsection{Normalised keys and the linkage cascade}216\label{sec:m-cascade}217218For each source the script \texttt{ingestion/link\_sources.py} builds a key219table. A DOI is lower-cased. An arXiv identifier is lower-cased and stripped of220its version suffix (\texttt{v[0-9]+\$}); for DBLP records, which do not carry an221arXiv field, the identifier is extracted from the electronic-edition URLs by the222pattern \texttt{arxiv.org/abs/([\^{} ]+)}. A title is normalised by the map223\begin{equation}224  \eta(\text{title}) \;=\; \mathrm{delete}_{\,\neg[a\text{--}z\,0\text{--}9]}\bigl(\mathrm{lower}(\text{title})\bigr),225  \label{eq:ntitle}226\end{equation}227which lower-cases and deletes every character outside $[a$--$z0$--$9]$, so that228punctuation, whitespace, case and diacritics (which do not survive the ASCII229filter) no longer separate otherwise identical titles. The normalised title is230used only for records whose original title has at least 25 characters, a231threshold that removes the many short generic titles (``Introduction'',232``Editorial'', ``Preface'') for which equality of $\eta$ carries no evidence.233234DBLP records are restricted to the years 2018--2026 and to the record types235\textit{article}, \textit{inproceedings}, \textit{incollection}, \textit{book},236\textit{phdthesis} and \textit{data}. The DBLP--OpenAlex cascade is then237\begin{enumerate}238  \item \textbf{DOI}: join on equal lower-cased DOI; every matching pair is kept239        (a DBLP key may match several OpenAlex records sharing a DOI, and240        conversely; the many-to-many structure is resolved at the241        deduplication stage, not here);242  \item \textbf{arXiv}: among records unmatched on both sides, join on equal243        normalised arXiv identifier;244  \item \textbf{title--year}: among records still unmatched on both sides,245        restrict each side to normalised titles that are \emph{unique} within246        that side, join on equal $\eta$, and keep the pair if the years differ247        by at most one and the first-author surnames agree whenever both are248        available (the last whitespace-delimited token of the first author's249        name, lower-cased, taken from the DBLP author list and from the250        OpenAlex authorship at position zero).251\end{enumerate}252The uniqueness restriction in step 3 is the blocking device: it turns the join253into a one-to-one map and prevents a frequent title from generating a clique of254spurious pairs. The price is recall, since a genuine pair whose title appears255twice on either side (a journal version and a workshop version with the same256title, for instance) cannot be linked at this step; such pairs are usually caught257by the DOI step or by the preprint merge of Section~\ref{sec:m-dedup}. The258arXiv--OpenAlex cascade is analogous (arXiv identifier, then DOI, then unique259normalised title with a year tolerance of two, because the arXiv creation year260and the OpenAlex publication year of the version of record can legitimately261differ by more than one). The ACL--OpenAlex cascade uses DOI, then the ACL262identifier parsed from OpenAlex landing-page URLs of the form263\texttt{aclanthology.org/<id>}, then unique normalised title with a year264tolerance of one. Each link carries its method label, which is the stratification265variable of the precision sample.266267The counts of the first run are stored in \texttt{data/metadata/linkage\_report.json}268and reproduced in Part III; here it suffices to note the shape of the result.269Of the \LinkDblpTwoZeroOneEightTwoZeroTwoSix{} DBLP records in window,270\LinkDblpWithDoi{} carry a DOI, \LinkLinkDblpOaDoi{} are linked by DOI and271\LinkLinkDblpOaTitleYear{} by title and year, for \LinkDblpLinkedDistinct{}272distinct DBLP keys linked and \LinkDblpUnlinked{} unlinked. No DBLP record was273linked through the arXiv step (\LinkDblpWithArxiv{} DBLP keys with a parsable274arXiv identifier), a result consistent with DBLP recording arXiv e-prints275through their DataCite DOIs (prefix 10.48550), which the DOI step captures,276rather than through \texttt{arxiv.org/abs} URLs; the cause is to be confirmed277in the audit of Part III\@. The arXiv--OpenAlex cascade links \LinkArxivLinkedDistinct{} of the278\LinkArxivCreatedTwoZeroOneEightTwoZeroTwoSix{} arXiv \texttt{cs} records created279in window, almost all of them (\LinkLinkArxivOaArxivId{}) by identifier. The280\LinkDblpUnlinkedWithDoiInSlim{} unlinked DBLP records whose DOI does exist in the281slim table of all OpenAlex works are precisely the records that OpenAlex does282not label with any Computer Science topic; they motivate the second snapshot283pass, in which these identifiers (\LinkNeededOaIdsSecondPassDblpDoi{} from DBLP284and \LinkNeededOaIdsSecondPassArxivDoi{} from arXiv) are fetched in full and the285linkage is rerun with the union of both passes. The corpus is therefore not the286set of works that OpenAlex calls computer science: by the membership rule of287Section~\ref{sec:m-eligibility}, as amended by A-006, it is the union of the288works whose primary OpenAlex topic lies in computer science with the works289that DBLP indexes and the works whose authors filed them under an arXiv290\texttt{cs.*} primary category, which is the sense in which the mandate's291requirement to ``cover the complete breadth of computer science'' rather than292only the OpenAlex topic model is operationalised. The first version of the293rule required an OpenAlex computer-science topic \emph{in addition to} the294arXiv category, which made the arXiv clause unreachable for exactly the295second-pass works it was meant to admit; amendment A-006 removed that296requirement after the critic's audit found the records falling between core297and penumbra.298299\subsection{Preprint--publication deduplication}300\label{sec:m-dedup}301302A work that exists as an arXiv preprint and as a published version is two303OpenAlex records whenever OpenAlex has not merged them. Counting both would304double-count exactly the kind of work (AI preprints) whose growth is at issue305(CLAUDE.md §6.2). The script \texttt{systematic\_review/define\_corpus.py}306identifies such pairs within $\mathcal{W}_0$ by two routes. Let307$\mathcal{P} = \{ w : \tau(w) = \text{preprint} \text{ or } \text{DOI}(w)308\text{ starts with } \text{10.48550/arxiv} \}$ be the preprint-like set and309$\mathcal{B}$ the set of admissible published twins,310\begin{equation}311  \mathcal{B} \;=\; \bigl\{ b \notin \mathcal{P} :\ d_{\mathrm{pub}}(b) \in [t_0, t_1],\;312     \neg\,\text{is\_xpac}(b),\; \text{title}(b) \neq \emptyset,\;313     \tau(b) \in T_{\mathrm{keep}} \vee \text{in\_dblp}(b) \bigr\},314\end{equation}315that is, records that would themselves pass the window, XPAC, title and type316exclusions of Section~\ref{sec:m-eligibility} (otherwise the preprint stays317as the canonical record). With $|\eta(\cdot)| \ge 25$ required of both318normalised titles,319\begin{equation}320  (p, b),\ p \in \mathcal{P},\ b \in \mathcal{B},\ \text{is a candidate pair} \iff321  \bigl[\, \eta(p) = \eta(b) \wedge |y(p) - y(b)| \le 2 \,\bigr]322  \;\vee\; \bigl[\, \mathrm{arx}(p) = \mathrm{arx}(b) \neq \emptyset \,\bigr],323  \label{eq:duppair}324\end{equation}325where $\mathrm{arx}(\cdot)$ is the arXiv identifier of the record (the linked326one when the cascade of Section~\ref{sec:m-cascade} supplied it, otherwise the327identifier OpenAlex itself carries). The first route is labelled328\textit{title\_year} and the second \textit{arxiv\_id}; among eligible works329they account for \PrismaVersionRelationshipTitleYear{} and330\PrismaVersionRelationshipArxivId{} merged pairs respectively (Part III). A331preprint may match several published records and conversely; the rule keeps,332for each published record, the earliest-dated preprint and, for each preprint,333the earliest-dated published record, and discards any pair that is not the334first in both orderings (a pair found by both routes is counted once, and335which of the two labels it retains is not fixed by the rule). The surviving336pairs define the map $\pi$ of equation~\eqref{eq:first-date}: the published337record $b$ receives $\pi(b) = p$, $\text{preprint\_date}(b) = d_{\mathrm{pub}}(p)$338and the first date of equation~\eqref{eq:first-date}; the preprint $p$339receives the flag \textit{e5\_duplicate} and leaves the eligible corpus. The340version relationship is therefore kept on the surviving node, as the plan341requires, but a title match is exact. Two limitations follow. A preprint whose342title changed between versions is merged only if the two records share an343arXiv identifier, and otherwise survives as a second work; a preprint and an344unrelated published paper with an identical normalised title within two years345are wrongly merged. The second error is rare for titles of at least 25346characters; the first is the more consequential one and biases the preprint347share upward, which is the conservative direction for hypothesis H7.348Deduplication across the OpenAlex--DBLP boundary is not needed because DBLP349records are never counted as works: a DBLP record either links to an OpenAlex350record, in which case the OpenAlex record carries the flag \textit{in\_dblp}, or351it does not, in which case it is counted in the separate DBLP-only table used352for coverage assessment.353354\subsection{Eligibility predicate}355\label{sec:m-eligibility}356357Each record receives seven exclusion flags and two membership flags, computed358once and stored, so that every PRISMA count is a filter on the same table. With359$T_{\mathrm{keep}}$ = \{article, conference-paper, preprint, book-chapter, book,360dissertation, report, review, software-paper\}, $T_{\mathrm{hard}}$ = \{editorial,361erratum, retraction, peer-review, paratext, conference-abstract,362reference-entry, dataset, software, supplementary-materials, libguides, letter,363grant, standard\}, and $\mathcal{G}$ the list of generic deposit platforms364(Zenodo, Figshare, IRDB, LA Referencia, Dialnet, DOAJ-as-source, OSTI), the365flags are366\begin{align}367  e_1(w) &: d_{\mathrm{pub}}(w) \text{ missing or outside } [t_0, t_1];\\368  e_2(w) &: \tau(w) \notin T_{\mathrm{keep}} \;\wedge\; \neg\bigl(\text{in\_dblp}(w) \wedge \tau(w) \notin T_{\mathrm{hard}}\bigr);\\369  e_3(w) &: \text{is\_xpac}(w) \wedge \neg \text{in\_dblp}(w);\\370  e_4(w) &: \text{title empty};\\371  e_5(w) &: w \text{ is the preprint member of a pair of \eqref{eq:duppair}};\\372  e_6(w) &: \text{is\_retracted}(w);\\373  e_7(w) &: \text{source}(w) \in \mathcal{G} \wedge \neg\text{in\_dblp}(w) \wedge \text{no linked arXiv record}.374\end{align}375The membership flags encode the computer-science rule of the protocol:376\begin{align}377  \text{core}(w) &= \text{in\_dblp}(w) \;\vee\; \text{cs\_primary}(w) \;\vee\; \text{arxiv\_cs\_primary}(w),\\378  \text{penumbra}(w) &= \text{cs\_any}(w) \wedge \neg\,\text{core}(w),379\end{align}380where \text{cs\_primary} means that the primary OpenAlex topic belongs to field38117, \text{cs\_any} that some topic does, and \text{arxiv\_cs\_primary} that the382linked arXiv record's primary category starts with \texttt{cs.} (amendment383A-006; the earlier form of the third clause, $\text{cs\_any} \wedge384\text{arxiv\_cs\_primary}$, is discussed in Section~\ref{sec:m-cascade}). A385record that survives the exclusions but is neither core nor penumbra---no386computer-science topic at all, not DBLP-indexed, and no \texttt{cs.} arXiv387primary category, typically a second-pass work reached through an arXiv DOI388whose arXiv primary category lies outside computer science---forms a third389class of \PrismaNeitherCoreNorPenumbraAfterExclusions{} records, reported in390the PRISMA flow of Part III; the script asserts that the three classes391partition the surviving records. The eligibility predicate is392\begin{equation}393  E(w) \;=\; \neg e_1 \wedge \neg e_2 \wedge \neg e_3 \wedge \neg e_4 \wedge \neg e_5 \wedge \neg e_7 \wedge \text{core}(w).394  \label{eq:eligible}395\end{equation}396Three features of this predicate deserve comment. Retraction ($e_6$) is397\emph{not} part of $E$: retracted works stay in the mapping corpus with their398flag and are excluded only from impact-based selections399(Section~\ref{sec:m-kg}), as the protocol specifies (E6). The type rule $e_2$ is400asymmetric by amendment A-001: a DBLP-indexed record is kept whatever its401OpenAlex type unless that type is in the hard-exclusion list, because the402first run showed that OpenAlex typed more than a million DBLP conference papers403in ways the original list rejected; XPAC records (OpenAlex's expansion of404coverage from secondary sources) are likewise kept when DBLP-indexed and flagged405\textit{xpac\_kept\_dblp}. The deposit-platform rule $e_7$ was added by406amendment A-002 after Zenodo alone was found to contribute a six-figure number407of 2026 records typed as articles with almost no references; the protocol's408original E7 (penumbra) is now the membership flag rather than an exclusion, so409the reason code E7 in the protocol and the flag $e_7$ in the code denote410different things. This is a documentation discrepancy, not an analytical one,411but readers comparing the protocol and the PRISMA table should be aware of it.412The penumbra set---works with a secondary computer-science topic but neither413DBLP nor arXiv support---is counted separately and enters only sensitivity414analyses; the strict core used for the sensitivity analyses in the other415direction is $\{w : E(w) \wedge \text{in\_dblp}(w) \wedge \text{cs\_primary}(w)\}$.416417The PRISMA counts are computed both marginally (how many records carry each418flag) and sequentially (how many are removed by each flag after the previous419ones have been applied, in the order $e_1, e_2, e_3, e_4, e_5, e_7$), because420the flags overlap heavily and only the sequential version sums to the final421count. The order is a reporting convention; the final eligible set does not422depend on it.423424\subsection{Design of the linkage-precision estimate}425\label{sec:m-linkprecision}426427Precision of the deterministic cascade is estimated on a stratified sample of428500 DBLP--OpenAlex pairs drawn by \texttt{systematic\_review/linkage\_sample.py}:429250 pairs linked by DOI, 200 by title--year and 50 by arXiv identifier (the430last stratum is empty in the current run, for the reason given in431Section~\ref{sec:m-cascade}), selected by ordering each stratum on a hash of the432DBLP key salted with the seed 44 and taking the first records, which is a433reproducible simple random sample within stratum. For each pair the script434computes an automatic agreement vector: a string similarity between the two435titles after a normalisation close to $\eta$ (NFKD decomposition with436non-ASCII characters dropped, lower-casing, runs of non-alphanumeric437characters collapsed to one space), namely Python's \texttt{difflib} ratio438(twice the number of matched characters in the longest-matching-block439alignment divided by the total length), the absolute year difference, and440whether the last tokens of the two first-author names coincide (lower-cased,441diacritics stripped, DBLP's four-digit disambiguation suffix removed); a pair442is \textit{auto\_ok} if the similarity is at443least 0.9, the years differ by at most one and the surnames agree whenever both444are present. Two of every five pairs are reserved for the principal445investigator (\textit{pi\_review}), whose verdicts constitute the human446checkpoint H-1. Let $n_s$ be the stratum sizes and $\hat p_s$ the share of pairs447judged correct in stratum $s$; the overall precision of the link table is the448weighted estimate449\begin{equation}450  \hat p \;=\; \sum_s \frac{L_s}{L}\,\hat p_s, \qquad451  \widehat{\mathrm{Var}}(\hat p) = \sum_s \Bigl(\frac{L_s}{L}\Bigr)^2 \frac{\hat p_s(1-\hat p_s)}{n_s},452  \label{eq:linkprec}453\end{equation}454where $L_s$ is the number of links of method $s$ in the full table and $L$455their sum, so that each stratum is weighted by its share of the links; since456the DOI step produces the great majority of them, $\hat p$ is dominated by the457DOI stratum. This matters because the DOI stratum is not the error-free one.458The automatic check (\texttt{data/metadata/linkage\_sample\_summary.json})459passes every title--year pair of the sample but fails a small number of DOI460pairs, of two kinds: a DOI that covers an entire edited volume, so that a461chapter is linked to the record of the book or of another chapter, and a462version of record whose title differs from the DBLP title under the same DOI.463Only the first kind is a linkage error; the second is a correct link that464the title test rejects. An identifier match is thus near-conclusive for the465existence of a relation between the two records but not for the identity of466the work, and the principal investigator's verdicts (H-1), not the automatic467rate, settle the precision of each stratum. The estimate468\pending{linkage precision from the H-1 sample, data/metadata/linkage\_sample\_summary.json}469is reported in Part III once the checkpoint is signed; until then the automatic470agreement rate is the only available figure and is labelled as such. Recall is471not estimated by this design: a DBLP record without an OpenAlex counterpart may472be a true absence from OpenAlex or a missed link, and distinguishing the two473would require searching OpenAlex by title for a sample of unlinked DBLP records,474which is left to the robustness appendix.475476\section{Multi-label classification into the ontology}477\label{sec:m-classification}478479The ontology assigns works to forty categories by rules over four kinds of480metadata signals and one textual signal. A rule-based classifier was preferred481to a trained one for three reasons that are worth stating because they are482also its limitations. The rules are inspectable: every assignment can be traced483to the signals that produced it, and the mapping from OpenAlex topics, arXiv484categories and DBLP venues to categories is a document485(\texttt{taxonomy/ontology.yaml}, with provenance notes per category) that a486reader can contest line by line. The rules need no labelled training set, which487the project did not have before checkpoint H-2, and so cannot inherit the biases488of one. And the rules are cheap enough to run on every eligible work, whereas an489LLM rater at the quality used for validation would cost orders of magnitude490more. The corresponding limitations are that rules do not generalise beyond the491vocabulary they encode, that the weights are expert judgements rather than492estimates, and that validation against independent raters is therefore the only493evidence of their accuracy.494495\subsection{Signals and the score}496\label{sec:m-score}497498For a work $w$, let $T(w)$ be its set of OpenAlex topic identifiers (up to499three per work), $F(w)$ its set of subfield identifiers, $X(w)$ the set of arXiv500categories of its linked arXiv record (primary and cross-lists), $D(w)$ the set501of DBLP venue streams of its linked DBLP records, and $\text{title}(w)$,502$\text{abs}(w)$ its title and abstract. Each category $k$ specifies weight maps503$\omega^{\mathrm{T}}_k : T \to [0,1]$, $\omega^{\mathrm{F}}_k$,504$\omega^{\mathrm{X}}_k$, $\omega^{\mathrm{D}}_k$ over the respective505vocabularies (zero outside the listed entries), a list of keyword rules506$(r, \omega, \phi)$ consisting of a regular expression $r$, a weight $\omega$507and a field $\phi \in \{\text{title}, \text{abstract}, \text{both}\}$, and a list508of exclusion regular expressions $Z_k$. The score of $w$ for $k$ is509\begin{equation}510  s_k(w) \;=\; \sum_{\sigma \in \{\mathrm{T},\mathrm{F},\mathrm{X},\mathrm{D}\}}511      \min\Bigl\{1,\; \sum_{x \in \sigma(w)} \omega^{\sigma}_k(x)\Bigr\}512    \;+\; \min\Bigl\{1,\; \sum_{(r,\omega,\phi) \in R_k} \omega \cdot \mathbf{1}\bigl[r \text{ matches } \phi(w)\bigr]\Bigr\},513  \label{eq:score}514\end{equation}515where $\phi(w)$ is the title, the abstract, or their concatenation according to516the field of the rule. Each of the five signal types is thus capped at one517before the types are summed, so $s_k(w) \in [0, 5]$, and the assignment rule is518\begin{equation}519  k \in C(w) \iff s_k(w) \ge \theta \;\wedge\; \neg\, \exists\, z \in Z_k :\ z \text{ matches } \text{title}(w) \| \text{abs}(w),520  \qquad \theta = 1 .521  \label{eq:assign}522\end{equation}523The cap is what gives the weights their meaning. A single signal with weight524one (a topic that \emph{is} the category, a venue that publishes nothing else, a525keyword that names the object of study) suffices on its own; a signal with526weight below one is a partial indication that must be corroborated by a signal527of another type, because repetitions of the same type cannot push the capped sum528above one. The ontology uses this device deliberately: the six AI categories529that the OpenAlex topic model does not separate (large language models,530foundation models, multimodal AI, generative AI, agents, AI safety) rely on531keyword rules of weight one that fire on the name of the object, while their532topic and venue signals are fractional. The exclusion list is a veto applied533after the threshold: a category that would otherwise be assigned is removed if534any exclusion pattern matches the title or abstract (for instance a535cryptocurrency pattern vetoing applied cryptography). The veto is not a negative536weight; it cannot be outvoted.537538One discrepancy between the ontology document and the implementation must be539recorded. The notes of the \texttt{assignment\_rule} block state that the540classifier takes the \emph{maximum} over matched topics before capping, whereas541\texttt{taxonomy/classify.py} takes the \emph{sum} and then caps, as542equation~\eqref{eq:score} states. The two agree whenever at most one listed543topic matches or the matched weights already sum to at least one; they differ544when two fractional topics of the same category co-occur, in which case the545implemented rule is the more permissive. The unit tests in546\texttt{tests/test\_classify\_rules.py} fix the implemented behaviour (a topic547listed three times contributes its weight once, because the topic set is548deduplicated, and a 0.6 topic plus a 0.4 arXiv category reach exactly 1.0). The549manuscript describes the implemented rule.550551\subsection{Primary category}552553When $C(w) \neq \emptyset$ the primary category is554\begin{equation}555  \kappa^{\ast}(w) \;=\; \operatorname*{arg\,max}_{k \in C(w)} \bigl( s_k(w),\; -\mathbf{1}[k \text{ is a parent of some } k' \in C(w)],\; -\mathrm{number}(k) \bigr)556\end{equation}557in lexicographic order: the highest score wins; among equal scores a category558that is the declared parent of another assigned category loses to its child559(so that a work scoring equally on \textit{llm} and \textit{foundation\_models}560is primarily an LLM paper); among remaining ties the lower ontology number561wins. The last rule is arbitrary and is stated so that the reader can see that562it is. The number of assigned categories $|C(w)|$ and the primary score are563stored with every work; works with $C(w) = \emptyset$ (eligible works none of564whose signals reach the threshold) are counted and characterised in Part IX, and565their share is one of the quality indicators of the classification. The566classifier is run on the eligible corpus and on the penumbra, so that567sensitivity analyses on the wider set do not require a second run.568569\subsection{Validation design and metrics}570\label{sec:m-validation}571572The rules are validated against two independent LLM raters on a stratified573sample (\texttt{taxonomy/VALIDATION.md}, \texttt{taxonomy/validate\_sample.py}):574fifty eligible works with an abstract per rule-assigned primary category (forty575strata) plus two hundred works with no category, drawn by ordering each stratum576on a salted hash with seed 44; two hundred of the resulting works are reserved577for the principal investigator (checkpoint H-2). Each rater receives the forty578category definitions, and for each work the title, abstract, venue and year,579and returns under a JSON schema a label set of at most five categories, a580primary category or null, a confidence and a short rationale. The raters never581see the rule-based assignment, so there is no leakage from the rules to the582reference labels, and the rule revision policy (a category with consensus583$F_1 < 0.60$ triggers a mapping revision, logged as an amendment, and a re-run)584can be applied without re-rating. The two raters are different models of the585same family (\texttt{claude-haiku-5-5}, \texttt{claude-sonnet-5-5}); their586agreement therefore does not measure the agreement that two human experts would587reach, and the 200-work human subsample is the only anchor for that.588589With $\hat C(w)$ the rule label set, $C^{r}(w)$ the label set of rater $r$ and590$C^{\cap}(w) = C^{A}(w) \cap C^{B}(w)$ the consensus set, the per-category591confusion counts against a reference $C^{\mathrm{ref}}$ are592$\mathrm{TP}_k = |\{w : k \in \hat C(w) \wedge k \in C^{\mathrm{ref}}(w)\}|$,593$\mathrm{FP}_k = |\{w : k \in \hat C(w) \wedge k \notin C^{\mathrm{ref}}(w)\}|$,594$\mathrm{FN}_k = |\{w : k \notin \hat C(w) \wedge k \in C^{\mathrm{ref}}(w)\}|$,595with precision $P_k = \mathrm{TP}_k/(\mathrm{TP}_k+\mathrm{FP}_k)$, recall596$R_k = \mathrm{TP}_k/(\mathrm{TP}_k+\mathrm{FN}_k)$ and597$F_{1,k} = 2P_kR_k/(P_k+R_k)$, the standard label-wise decomposition of598multi-label evaluation \citep{zhang2014multilabel}. Micro-averages pool the599counts over categories before forming the ratios; the macro-$F_1$ is the600unweighted mean of $F_{1,k}$ over categories with at least one positive or601predicted label. Because the sample is stratified by rule-assigned primary602category, the per-category precision is estimated on roughly equal support for603every category, whereas recall is estimated only among works that the rules604placed somewhere; a category that the rules systematically miss (true members605scattered among other strata or among the unassigned) will show inflated recall606in this design. The 200 unassigned works partly address this, but a proper607recall estimate would require sampling from the whole corpus with weights, and608the per-category recall figures should be read with that caveat.609610Agreement on the primary category is measured by Cohen's $\kappa$611\citep{cohen1960kappa},612\begin{equation}613  \kappa \;=\; \frac{p_o - p_e}{1 - p_e}, \qquad614  p_o = \frac{1}{n}\sum_w \mathbf{1}[\kappa^{A}(w) = \kappa^{B}(w)], \qquad615  p_e = \sum_{k \in \mathcal{K} \cup \{\varnothing\}} \frac{n^{A}_k}{n}\,\frac{n^{B}_k}{n},616\end{equation}617where ``no category'' is treated as a forty-first label and $n^{r}_k$ counts618the works to which rater $r$ assigned primary $k$; $\kappa$ is computed between619the two raters and between the rules and each rater. Agreement on the label620sets is measured by the mean Jaccard index621$\bar J = n^{-1}\sum_w |C^{A}(w) \cap C^{B}(w)| / |C^{A}(w) \cup C^{B}(w)|$622(with the convention $0/0 = 0$), and by Krippendorff's $\alpha$ with the623MASI distance of \citet{passonneau2006masi} between the two raters' label624sets, in its interval form ($\alpha = 1 - D_o/D_e$ with squared MASI625distances, $D_o$ the mean observed distance over works and $D_e$ the mean626distance over all pairs of label sets); the derivation is in Appendix~C. A work is exported as a disagreement for human review when627the rules, rater~A and rater~B have no category in common although at least628one of them assigned one.629630\subsection{Known failure modes}631632The design makes some errors predictable, and they are listed here so that the633results of the validation can be read against expectations rather than as634surprises. Keyword rules on abstracts fire on mentions as well as on635contributions: a systems paper that evaluates its scheduler on a large language636model workload matches the LLM keyword and, since that keyword alone reaches637the threshold, acquires the \textit{llm} label; the exclusion lists remove the638most frequent such cases but cannot enumerate them. Venue signals are coarse:639general machine-learning venues carry fractional weights for several AI640categories at once, so a work with no abstract and a generic title can be641assigned to a parent-level category on venue evidence alone, or to none.642OpenAlex topics are themselves the output of a classifier with documented643error, and a work whose topics are wrong inherits that error with weight; the644protocol lists this among the limitations declared before analysis.645Multi-label assignment with a cap of one per type and a threshold of one tends646to over-assign categories to long abstracts that mention many objects, which647inflates $|C(w)|$ in the post period, when abstracts increasingly cite models648and benchmarks by name; the co-classification statistics of649Section~\ref{sec:m-networks} are affected by this in a direction that would650mimic convergence (hypothesis H4) and must be read together with the primary-label651flow statistics, which are not. Finally, works without an abstract (a known652share of the corpus) are classified from the title and the metadata only and653have lower recall for the keyword-dependent categories; the share of such654works is reported by year because it is not constant.655656\section{Bibliometric indicators}657\label{sec:m-bibliometrics}658659The indicators of this section are the estimands of research questions RQ1,660RQ3 and RQ6. They are standard in the scientometric literature, and the661definitions follow the review of \citet{waltman2016review} where a choice had662to be made; what is specific to this study is the citation-window discipline663imposed by the eight-year span of the corpus and the explicit treatment of the664two counting conventions. The scripts are \texttt{bibliometrics/01\_volume\_series.py},665\texttt{02\_collaboration.py}, \texttt{03\_citation\_impact.py} and666\texttt{04\_diversity\_cagr.py}.667668\subsection{Volume, composition and growth}669670The monthly count $N_t$ and the category counts $N_{k,t}$ of671equation~\eqref{eq:counts} are tabulated by first month, period, date precision,672type and source membership (DBLP-indexed, OpenAlex-primary, arXiv-linked), with673the numbers of works having an abstract, having at least one resolvable674reference, and being open access; the annual table adds the mean number of675authors, references and countries per work. Composition is the share676$s_{k,t}$; its annual counterpart uses the primary label on all eligible works.677Growth between two dates separated by $\Delta$ years is summarised by the678compound annual growth rate679\begin{equation}680  \mathrm{CAGR}(t_a, t_b) \;=\; \Bigl( \frac{N_{t_b}}{N_{t_a}} \Bigr)^{1/\Delta} - 1,681  \qquad \Delta = (t_b - t_a)\ \text{in years},682  \label{eq:cagr}683\end{equation}684applied to annual totals and to annual category totals; it is a descriptive685summary of two end points and says nothing about the path between them, which686is why the structural-change analysis of Section~\ref{sec:m-structural} works687on the full monthly series instead. The CAGR is computed by688\texttt{bibliometrics/04\_diversity\_cagr.py} on the annual primary-label689counts of each category (\texttt{results/graph/category\_counts\_yearly.csv})690over two spans of complete years, 2018 to 2022 ($\Delta = 4$) within the691baseline and 2023 to 2025 ($\Delta = 2$) within the post period, together with692the category's share of the year's classified works in 2018, 2022 and 2025;693it is undefined when the count of the start year is zero. The plan lists it694among the Phase-4 indicators; 2026 is excluded because it is right-censored695(Section~\ref{sec:m-truncation}). The two spans split the window at the696calendar year, so the whole of 2022 is counted in the baseline span, unlike the697periods of Section~\ref{sec:m-notation}.698699\subsection{Fixed citation windows}700\label{sec:m-citations}701702OpenAlex provides, for each work, the number of citations received in each703calendar year (\texttt{counts\_by\_year}). Let $c_{w}(u)$ be the citations704received by $w$ in calendar year $u$ and $y(w)$ its publication year. The705fixed-window counts are706\begin{equation}707  c^{(12)}_w = \sum_{u \le y(w)+1} c_w(u), \qquad708  c^{(36)}_w = \sum_{u \le y(w)+2} c_w(u), \qquad709  c^{(48)}_w = \sum_{u \le y(w)+3} c_w(u),710  \label{eq:windows}711\end{equation}712so that $c^{(12)}$ counts citations in the publication year and the following713calendar year, $c^{(36)}$ in the publication year and the two following years,714and so on. The superscripts are the names used in the code and in the tables715and must be read as calendar-year windows rather than as exact month counts: a716work published in January and one published in December of the same year717receive windows that differ by eleven months in effective length. This718granularity is imposed by the data (OpenAlex does not provide citation dates719below the year) and is the same for the baseline and the post period, so it720blurs comparisons within a year but does not bias comparisons between years.721Two further conventions of \texttt{03\_citation\_impact.py} govern every722impact statistic. The citations of a canonical node include those of its723merged preprint: the yearly counts of $\pi(w)$ are appended to those of $w$724before the windows are summed (the \texttt{CY} union in the script), so a725work that circulated as a preprint and was then published is credited with726the citations of both records. This is deliberate, since the two records are727one work, but it means that $c^{(h)}_w$ can exceed what the OpenAlex record of728the version of record shows on its own; the union applies only to pairs729found by the rule of Section~\ref{sec:m-dedup}, a preprint that OpenAlex has730already merged with its publication being a single record. And the population731is the set of eligible, \emph{non-retracted} works: retracted works stay in the732mapping corpus (Section~\ref{sec:m-eligibility}) but are excluded from the733window sums, from the reference classes below and from the inequality734statistics, so the yearly $n$ of the citation tables falls short of the735volume tables by the number of retracted works.736The window is the device that neutralises citation-age bias: comparing the737total citation count of a 2019 work with that of a 2025 work compares seven738years of exposure with one, whereas comparing $c^{(36)}$ compares equal739exposures. The cost is that the last window-length of the corpus cannot be740evaluated; $c^{(36)}$ is complete for publication years up to 2023 given a741snapshot taken late in 2026, and $c^{(12)}$ up to 2024. Tables flag the years742for which a window is incomplete, and the choice of window length follows the743evidence in \citet{wang2013citationwindow} that short windows rank works materially744differently from long ones in slow-moving fields, which is why two lengths are745reported rather than one.746747\subsection{Field normalisation}748749Raw citation counts differ across subfields and document types by factors that750have nothing to do with influence. The normalised citation score of a work is751its window count divided by the mean window count of its reference class752\citep{waltman2016review, waltman2019fieldnormalization}:753\begin{equation}754  \mathrm{NCS}^{(h)}_w \;=\; \frac{c^{(h)}_w}{\bar c^{(h)}\bigl(y(w), \tau(w), f(w)\bigr)}, \qquad755  \bar c^{(h)}(y, \tau, f) = \frac{1}{|\mathcal{W}_{y,\tau,f}|}\sum_{v \in \mathcal{W}_{y,\tau,f}} c^{(h)}_v ,756  \label{eq:ncs}757\end{equation}758where $f(w)$ is the primary OpenAlex subfield of $w$ and $\mathcal{W}_{y,\tau,f}$759the set of eligible, non-retracted works sharing year, type and subfield. The reference class760is computed on the eligible corpus, not on all of OpenAlex, so the761normalisation is relative to computer science as delimited here: an NCS of 2762means twice the mean of comparable computer-science works, not twice the world763mean. The score is undefined when the class mean is zero (very small classes in764the most recent years) and is then left missing rather than set to zero.765Normalisation by the mean of a heavy-tailed distribution is sensitive to a few766very highly cited works in the class; the median-based alternatives discussed767by \citet{waltman2016review} are not used because the median of $c^{(36)}$ is768zero in many classes of this corpus, which would make them uninformative.769770OpenAlex's own field-weighted citation impact (FWCI) is kept as a secondary771indicator. Its documentation defines it as ``citations received divided by772citations expected for works of the same type, year, and subfield'', with a773world average of one \citep{openalex2026fwci}. It differs from774equation~\eqref{eq:ncs} in three respects: the expected count is computed over775all of OpenAlex rather than over this corpus; the citation count is the total776to date rather than a fixed window, so that FWCI values of recent works are777based on a short and unequal exposure; and the computation is OpenAlex's,778recomputed nightly, so that the value depends on the snapshot date. For these779reasons FWCI is reported for comparison and never used to select works.780781\subsection{Inequality and concentration}782783Citation inequality within a publication year is measured by the Gini784coefficient of $c^{(36)}$ (and, as a secondary figure, of $c^{(12)}$) among785the $n$ eligible, non-retracted works of that year. With the786works sorted so that $c_{(1)} \le c_{(2)} \le \dots \le c_{(n)}$, the estimator787implemented in SQL is the rank form788\begin{equation}789  G \;=\; \frac{2\sum_{i=1}^{n} i\, c_{(i)}}{n \sum_{i=1}^{n} c_{(i)}} - \frac{n+1}{n},790  \label{eq:gini}791\end{equation}792which equals one minus twice the area under the Lorenz curve and lies in793$[0, 1 - 1/n]$; the coefficient is named after \citet{ceriani2012gini}'s794account of its origin. Uncited works (a large share within a three-year795window) contribute zero to the numerator and pull $G$ upward, so the share of796uncited works is reported next to it. The protocol (H5) refers to the Gini of79724-month citations; the implemented statistic uses the three-calendar-year798window $c^{(36)}$, which is complete for one more publication year than the799longer alternatives and less dominated by zeros than $c^{(12)}$. This is a800deviation from the protocol wording and is recorded as such.801802Venue concentration within a year is the Herfindahl--Hirschman index of the803distribution of works over sources,804\begin{equation}805  \mathrm{HHI}_y \;=\; \sum_{v} \sigma_{v,y}^2, \qquad806  \sigma_{v,y} = \frac{N_{v,y}}{\sum_{v'} N_{v',y}},807  \label{eq:hhi}808\end{equation}809where $N_{v,y}$ is the number of eligible works of year $y$ whose primary810source is $v$ \citep{hirschman1964paternity}; works without a source are811excluded from the denominator, and the number of distinct sources and the812largest single share are reported with the index. Because arXiv is a single813OpenAlex source, growth in preprints mechanically raises $\mathrm{HHI}_y$ even814when the journal and conference landscape becomes more dispersed; this is the815reason the protocol's H5 predicts a stable or falling HHI only ``because of816preprint growth'' with the preprint source treated separately. The817implemented table (\texttt{venue\_hhi\_yearly.csv}, written by818\texttt{02\_collaboration.py}) computes the index over all types in a single819pass; a variant that excludes the preprint type is not computed, so the820preprint contribution has to be judged from the largest single share reported821next to the index, which in the years when arXiv is the largest source is822arXiv's share.823824\subsection{Collaboration, countries and institutions}825826Team size is summarised by the mean and median number of authors per work and827by the shares of single-author works and of works with at least five or ten828authors. Two counting conventions are used for countries and institutions,829because they answer different questions \citep{waltman2016review}. Under full830counting a work contributes one unit to every country among its authors'831affiliations; under fractional counting it contributes $1/|K(w)|$ to each of832its $|K(w)|$ distinct countries, so that the fractional totals sum to the833number of works with at least one country. The same pair of conventions is834applied to institutions, with the fraction taken over the distinct institutions835of the work. The international collaboration share of year $y$ is836\begin{equation}837  \mathrm{ICS}_y \;=\; \frac{|\{w : y(w)=y,\ |K(w)| \ge 2\}|}{|\{w : y(w)=y,\ |K(w)| \ge 1\}|},838\end{equation}839that is, among works with at least one resolved country, the share with authors840from two or more countries; works without affiliation data are excluded from841the denominator and their share is reported, because affiliation completeness842in OpenAlex varies by source and year and a change in completeness would843otherwise masquerade as a change in collaboration. The industry share is the844share of works with at least one affiliation of OpenAlex institution type845\textit{company} among works with at least one typed affiliation. Country-pair846and institution-level tables apply minimum-support thresholds (fifty joint847works for a country pair, two hundred works for an institution within a period)848that keep the released tables to the robustly estimated part of the849distribution; these thresholds are reporting choices and are stated in the850table notes.851852\subsection{Diversity indices}853\label{sec:m-diversity}854855Interdisciplinarity is measured on a distribution over the categories of the856ontology; the protocol speaks of the distribution of a work's references or of857a category's citations, whereas the implemented pipeline applies the indices858to the \emph{category mix} of each year, the distribution of the year's859classified eligible works over their primary categories (the reference-based860variant is not computed). Let $p = (p_1, \dots, p_K)$ be such a distribution861and $\delta_{ij} \in [0,1]$ a dissimilarity between categories $i$ and $j$.862The Rao--Stirling index863\citep{rao1982diversity, stirling2007diversity}864\begin{equation}865  \Delta_{\mathrm{RS}}(p) \;=\; \sum_{i \ne j} p_i\, p_j\, \delta_{ij}866  \label{eq:rao-stirling}867\end{equation}868is the expected dissimilarity between two categories drawn at random from $p$;869it is zero when all mass sits on one category and increases with variety (the870number of categories present), balance (the evenness of $p$) and disparity (the871dissimilarity of the categories involved), the three components that872\citeauthor{stirling2007diversity} argues any diversity measure should respond873to. Its use in scientometrics follows \citet{rafols2010diversity}. Its known874weakness is that it saturates: for very even distributions over many875categories it approaches the mean dissimilarity and no longer discriminates876\citep{zhang2016diversity}. The Leinster--Cobbold family877\citep{leinster2012diversity} repairs this by defining, for a similarity matrix878$Z = (z_{ij})$ with $z_{ij} = 1 - \delta_{ij}$ and an order $q \ge 0$,879\begin{equation}880  {}^{q}D^{Z}(p) \;=\; \Bigl( \sum_{i : p_i > 0} p_i\, (Zp)_i^{\,q-1} \Bigr)^{1/(1-q)},881  \qquad (Zp)_i = \sum_j z_{ij}\, p_j ,882  \label{eq:leinster-cobbold}883\end{equation}884with the limit ${}^{1}D^{Z}(p) = \prod_i (Zp)_i^{-p_i}$ at $q = 1$. The quantity885$(Zp)_i$ is the ``ordinariness'' of category $i$ under $p$: how much of the886distribution is similar to $i$. The index is an effective number of887categories---it equals $K$ for the uniform distribution over $K$ mutually888dissimilar categories---and the order $q$ sets the weight given to rare889categories (large $q$ counts only the dominant ones). Following890\citet{zhang2016diversity} the manuscript reports $q = 2$, which has the891closed form ${}^{2}D^{Z}(p) = 1 / \sum_{i,j} p_i z_{ij} p_j = 1/(1 - \Delta_{\mathrm{RS}}(p))$892when $z_{ii} = 1$, so that the two families are monotone transforms of each893other at this order and differ only in scale and in their behaviour at the894saturation end. Both indices are computed for every year up to 2025 by895\texttt{bibliometrics/04\_diversity\_cagr.py} and reported in Part~IX\@. The896dissimilarity is $\delta_{ij} = 1 - z_{ij}$, where $z_{ij}$ is the cosine897similarity of the category centroids of Section~\ref{sec:m-novelty} when the898centroid matrix exists (the script takes the post-period matrix first and899the baseline matrix as a fallback) and, when no centroid matrix is available,900the co-classification Jaccard similarity $n_{ij} / (n_i + n_j - n_{ij})$901computed from the yearly co-occurrence counts of the full label sets902(Section~\ref{sec:m-networks}), with $n_i$ the multi-label total of category903$i$; the diagonal is set to one in both cases and the similarity source904actually used is written into the output table, because values computed from905the two sources are not on the same scale and must not be compared across906them. The disparity component is thus estimated from the corpus rather than907imposed. The Rao--Stirling index carries a percentile interval from $B = 500$908multinomial resamples of the year's works over the categories (seed 44), the909same resamples that give the yearly category-share intervals; the910Leinster--Cobbold index of order two is reported without an interval. The911multinomial bootstrap treats the category assignments of a year as912independent draws from the observed mix, so its interval reflects only that913sampling variability and not the classification error of914Section~\ref{sec:m-validation}, which is the larger source of uncertainty for915these indices.916917\section{Citation and collaboration networks}918\label{sec:m-networks}919920\subsection{The citation graph and its boundary}921\label{sec:m-citgraph}922923Citation edges come from the OpenAlex \texttt{referenced\_works} lists, which924are verified by construction in the sense that each edge is an assertion of the925source database rather than an inference of this study. The script926\texttt{knowledge\_graph/01\_citation\_graph.py} splits the references of927eligible works into two edge sets:928\begin{align}929  \mathcal{E}_{\mathrm{int}} &= \{ (w, v) : w \in \mathcal{W},\ v \in \mathcal{W},\ v \in \mathrm{refs}(w) \},\\930  \mathcal{E}_{\mathrm{ext}} &= \{ (w, v) : w \in \mathcal{W},\ v \notin \mathcal{W},\ v \in \mathrm{refs}(w),\ v \in \text{slim table} \},931\end{align}932the internal edges forming the citation graph of computer science proper and933the external edges recording what the corpus cites outside itself, with the934cited work's publication year, type and primary OpenAlex field resolved from the935slim table of all works. References that resolve to no OpenAlex record are936counted (the declared reference count of each work is stored) but cannot be937typed. The yearly tables derived from these sets are the inflows by cited938field (how much of each citing year's references go to mathematics, medicine,939the social sciences, and so on), the distribution of citation age940$y(w) - y(v)$ by citing year, and the reference coverage (declared, internal,941external) by year. Coverage matters for every network statistic that follows:942if the share of resolvable references rises over time, as it does in OpenAlex943because recent works are better matched, then internal edge counts rise for944reasons unrelated to citation behaviour, and all flow statistics are therefore945expressed as shares of resolved edges within the citing year.946947\subsection{Category flow matrices}948949For each citing year $t$ the script \texttt{knowledge\_graph/02\_category\_flows.py}950forms the $K \times K$ matrix951\begin{equation}952  F_t[i, j] \;=\; \bigl|\{ (w, v) \in \mathcal{E}_{\mathrm{int}} : y(w) = t,\ \kappa^{\ast}(w) = i,\ \kappa^{\ast}(v) = j \}\bigr| ,953  \label{eq:flow}954\end{equation}955the number of citations made in year $t$ by works whose primary category is $i$956to works whose primary category is $j$, together with the row-normalised957shares $F_t[i,j] / \sum_{j'} F_t[i,j']$. Works without a primary category958contribute no edges to $F_t$; their references are retained in959$\mathcal{E}_{\mathrm{int}}$ but fall outside the matrix. Aggregating rows and960columns by area through $a(\cdot)$ gives the $8 \times 8$ area flow matrix, and961the cross-area share of citing area $\alpha$ in year $t$ is962\begin{equation}963  X_{\alpha, t} \;=\; \frac{\sum_{i : a(i)=\alpha}\ \sum_{j : a(j) \ne \alpha} F_t[i,j]}{\sum_{i : a(i)=\alpha}\ \sum_{j} F_t[i,j]},964  \label{eq:cross-area}965\end{equation}966the fraction of an area's internal references that leave the area. This is the967statistic behind hypothesis H4. It is not a measure of interdisciplinarity in968the sense of Section~\ref{sec:m-diversity}, because it treats all other areas969as equally distant; it is a boundary-crossing rate, and its interpretation970depends on the stability of the boundaries, which the classifier fixes once971for all years. A co-classification matrix counts, for each year, the works972carrying both category $i$ and category $j$ in their full label set $C(w)$; it973is reported alongside the flows but, as noted in974Section~\ref{sec:m-classification}, it is sensitive to abstract length and975vocabulary in a way the primary-label flows are not.976977\subsection{Modularity of the yearly flow network}978979The degree to which citations stay within categories, or within areas, is980summarised by the modularity of the weighted directed graph with adjacency981$W = F_t$, evaluated at the fixed partition given by the categories themselves982(each category its own community) and at the coarser partition given by the983areas. The implemented statistic is984\begin{equation}985  Q(W, g) \;=\; \frac{1}{m} \sum_{i,j} \Bigl( W_{ij} - \frac{k^{\mathrm{out}}_i\, k^{\mathrm{in}}_j}{m} \Bigr)\, \mathbf{1}[g_i = g_j],986  \qquad m = \sum_{i,j} W_{ij},\quad k^{\mathrm{out}}_i = \sum_j W_{ij},\quad k^{\mathrm{in}}_j = \sum_i W_{ij},987  \label{eq:modularity}988\end{equation}989which is the directed generalisation by \citet{leicht2008directed} of the990Newman--Girvan modularity \citep{newman2004community}: the observed weight991within communities minus the weight expected if each citation were rewired at992random while preserving every node's out-strength and in-strength. Because the993partition is given rather than optimised, $Q$ is used here as a descriptive994index of assortativity by category, not as the objective of a community995detection algorithm; the resolution limit that affects optimised modularity996\citep{fortunato2007resolution, fortunato2010community} therefore does not997arise, but the index inherits the dependence of the flow matrix on the998classifier. Two values are reported per year, $Q_{\mathrm{cat}}$ with999$g_i = i$ and $Q_{\mathrm{area}}$ with $g_i = a(i)$, together with the self-share1000$\operatorname{tr}(F_t)/m$, which is the uncorrected fraction of citations1001staying within the citing category. Hypothesis H4 predicts a decrease in1002$Q_{\mathrm{area}}$ in the post period. A fall in $Q$ can also arise if the1003composition of citing works shifts toward categories that were always1004boundary-crossing (large language models citing natural-language processing1005and machine-learning theory), so Part IX reports $Q$ together with the1006composition-adjusted cross-area shares obtained by fixing the row weights at1007their baseline values.10081009\subsection{Co-authorship, institution and country networks}10101011The plan lists author, institution and country collaboration networks built1012with \texttt{igraph}. The implemented collaboration layer is tabular rather than1013graph-analytic: country pairs with at least fifty joint works per period1014(edges of the country network, with their weights), institution counts by1015period under full and fractional counting, and institution-type shares. The1016country network is thus available as an edge list from which the figures of1017Part VIII are drawn, and degree, strength and density can be computed from it;1018author-level co-authorship networks are not constructed in the current1019pipeline, because author disambiguation in OpenAlex is of uneven quality over1020the period and an author graph of this size would be dominated by that noise.1021This is a narrowing of the plan, recorded here; the country and institution1022tables are the collaboration estimands actually reported.10231024\section{Semantic mapping}1025\label{sec:m-semantic}10261027\subsection{Document embeddings}10281029Each eligible work with an abstract is represented by a dense vector computed1030by a scientific sentence-embedding model from the string1031``$\text{title}$. $\text{abstract}[1{:}2000]$'' (the abstract truncated to10322,000 characters), tokenised to at most 256 word pieces, and L2-normalised, so1033that the inner product of two vectors is their cosine similarity1034(\texttt{embeddings/embed\_corpus.py}). The primary model is SPECTER2 base1035\citep{singh2023scirepeval}, the successor of SPECTER1036\citep{cohan2020specter}, a transformer trained with a citation-informed1037triplet objective so that papers that cite one another are close in the1038embedding space; this inductive bias is the appropriate one for mapping a1039literature by its intellectual proximity rather than by lexical overlap. The1040protocol requires a second embedding family for comparison; the benchmark1041script evaluates SciNCL \citep{ostendorff2022scincl}, a general-purpose1042BGE model and a MiniLM sentence-transformer \citep{reimers2019sbert} for1043throughput and dimensionality on the same hardware, and the atlas script1044accepts any of them through its model argument, so the comparison is a1045re-run with a different tag. The embeddings are stored as float16 shards with1046their work identifiers and a per-host manifest (model name, maximum sequence1047length, device, timings), computed on several nodes of the cluster in1048parallel; float16 storage changes cosine similarities by less than1049$10^{-3}$, which is below any threshold used downstream.10501051Three assumptions underlie everything built on these vectors. The abstract is1052assumed to be a faithful summary of the work's content, which it is for most1053research articles and is not for extended abstracts and some proceedings1054papers. The embedding geometry is assumed stable across the period: a model1055trained on literature up to its release date represents 2026 work in a space1056shaped by earlier work, so genuinely new vocabulary is embedded by analogy to1057what the model knows, and the novelty statistic below measures distance in1058that space, not in some ideal space of ideas. And cosine similarity is assumed1059to be a sufficient proxy for topical proximity; this is the standard1060assumption of the field and is supported by the retrieval benchmarks on which1061these models are evaluated, with the caveat that all such benchmarks are1062dominated by pre-2023 literature.10631064\subsection{Atlas: projection and clustering}10651066The two-dimensional atlas and the cluster structure are computed on a uniform1067random sample of 200,000 eligible works with embeddings (seed 44), because1068density-based clustering of the full corpus in the native space is neither1069computationally practical nor, given the noise level of abstracts, more1070informative. UMAP \citep{mcinnes2018umap} with the cosine metric, 30 nearest1071neighbours and a minimum distance of zero projects the sample to 501072dimensions; HDBSCAN \citep{campello2013hdbscan, mcinnes2017hdbscan} with a1073minimum cluster size of 200 and a minimum sample count of 20 is run on the107450-dimensional projection; a second UMAP to two dimensions (minimum distance10750.1) is used for display only. The 50-dimensional intermediate step is what1076makes density-based clustering workable on 768-dimensional normalised vectors,1077whose pairwise distances concentrate; it is also a source of distortion, since1078UMAP preserves local neighbourhoods and not global distances, so cluster1079\emph{membership} is meaningful and the distances between clusters on the1080two-dimensional map are not. HDBSCAN labels points in low-density regions as1081noise ($-1$), and the noise share is reported with the cluster count. Each1082cluster is described by the twelve title terms with the highest mean TF--IDF1083weight (unigrams and bigrams, English stop words removed, minimum document1084frequency five), by its modal primary category and that category's share,1085and by the share of its members in the post period; these descriptors are1086how clusters are related to the ontology, and the comparison of the two1087partitions (bottom-up clusters against top-down categories) is one of the1088checks on the ontology reported in Part IX.10891090\subsection{Stability}10911092Cluster stability is measured by a split-half design. Five times, the sample1093is randomly permuted and divided into two halves; HDBSCAN (minimum cluster1094size 100, since each half has half the points) is run separately on the two1095halves of the \emph{same} 50-dimensional projection; a 5-nearest-neighbour1096classifier trained on the first half's labels predicts labels for the second1097half; and the adjusted Rand index \citep{hubert1985comparing}1098\begin{equation}1099  \mathrm{ARI} \;=\; \frac{\sum_{ij}\binom{n_{ij}}{2} - \bigl[\sum_i \binom{a_i}{2}\sum_j \binom{b_j}{2}\bigr]/\binom{n}{2}}1100                      {\tfrac12\bigl[\sum_i \binom{a_i}{2} + \sum_j \binom{b_j}{2}\bigr] - \bigl[\sum_i \binom{a_i}{2}\sum_j \binom{b_j}{2}\bigr]/\binom{n}{2}}1101\end{equation}1102between the transferred labels and the second half's own labels is recorded1103(here $n_{ij}$ is the contingency table of the two labellings and $a_i$, $b_j$1104its margins). The mean of the five values is the reported stability. Two1105caveats bound what this measures. The projection is fitted once on the full1106sample, so the design tests the stability of the clustering conditional on the1107projection and not the stability of UMAP itself, whose stochastic optimisation1108is fixed by the seed; the protocol's phrase ``bootstrap ARI'' describes this1109split-half procedure, which resamples without replacement. And the1110nearest-neighbour transfer is itself a smoothing step: it maps noise points of1111the first half to the majority label of their neighbours, which raises the1112index relative to a direct comparison of two independent clusterings of the1113same points.11141115\subsection{Category centroids, drift and novelty}1116\label{sec:m-novelty}11171118In the native embedding space, the centroid of category $k$ in year $y$ is1119the normalised mean vector1120\begin{equation}1121  \mu_{k,y} \;=\; \frac{\sum_{w : \kappa^{\ast}(w)=k,\ y(w)=y} e_w}{\bigl\|\sum_{w : \kappa^{\ast}(w)=k,\ y(w)=y} e_w\bigr\|},1122\end{equation}1123computed only for cells with at least 100 works, and the year-over-year drift1124of a category is the cosine distance $1 - \mu_{k,y}^{\top}\mu_{k,y-1}$. Period1125centroids average the yearly centroids over calendar years 2018--20221126(baseline) and 2023--2026 (post), and the inter-category cosine similarity1127matrices of the two periods are the semantic counterpart of hypotheses H4 and1128H5: convergence between two categories appears as an increase in the cosine1129similarity of their centroids. The period boundary used here is the calendar1130year, not the 30~November 2022 date of Section~\ref{sec:m-notation}; the1131eleven months of 2022 that belong to the baseline are kept in the baseline1132and December 2022 is attached to it rather than to the post period, a1133deliberate simplification at the level of yearly centroids that moves a1134single month across the boundary.11351136The novelty of a work is its distance to the recent past of its own category:1137\begin{equation}1138  \nu(w) \;=\; 1 - e_w^{\top}\,\bar\mu_{\kappa^{\ast}(w),\ m(w)-24\,:\,m(w)-1}, \qquad1139  \bar\mu_{k,\,a:b} = \frac{\sum_{t=a}^{b} \sum_{v : \kappa^{\ast}(v)=k,\ m(v)=t} e_v}{\bigl\|\,\cdot\,\bigr\|},1140  \label{eq:novelty}1141\end{equation}1142the cosine distance between the work's vector and the normalised sum of the1143vectors of all works of the same primary category whose first month lies in1144the 24 months strictly before the work's own month. A work in the first months1145of a category, with no trailing window, has no novelty value. The1146definition uses only information dated before the work, which is what allows1147it to serve as a signal in the out-of-time detector of1148Section~\ref{sec:m-emerging}; but the centroid is computed with the1149\emph{final} primary categories of the earlier works, assigned by rules fixed1150in 2026, so the category boundaries themselves are not out-of-time. This is a1151limitation shared by every category-conditional statistic in the paper and1152is discussed in Section~\ref{sec:m-emerging}. Novelty defined as distance to a1153category centroid rewards works that sit between categories as much as works1154that are new; the interpretation of high novelty as ``new'' rather than1155``interdisciplinary'' requires the clusters and the flow statistics as1156corroboration, and the literature on novelty indicators warns that1157citation-based and text-based novelty measures do not agree well1158\citep{uzzi2013novelty, wang2017novelty}.11591160\section{Structural change in monthly series}1161\label{sec:m-structural}11621163The question behind RQ2 and hypotheses H1 and H3 is whether the monthly1164series of computer-science output, in total and by category, changed level or1165slope around the reference date, and whether any such change stands out1166against the ordinary variability of the series. Four methods are applied to1167every series by \texttt{econometrics/run\_structural\_change.py}, using the1168pure functions of \texttt{econometrics/structural\_change.py} (unit-tested on a1169simulated series with a known break). None of them identifies a cause. An1170interrupted time series with a single pre-specified date answers ``did the1171series change at that date, net of trend and season?''; the placebo1172distribution answers ``is that date special?''; the multiple-break and1173changepoint methods answer ``where does the series change, if one does not1174specify a date?''; and the Bayesian online detector answers ``when would an1175observer following the series month by month have concluded that it had1176changed?''. The reference date is a historical marker, and the manuscript1177uses no causal vocabulary about it (CLAUDE.md §6.5).11781179\subsection{Series construction and truncation}1180\label{sec:m-truncation}11811182Each series is a vector of monthly counts $N_t$ on the month-precision1183subset, from February 2018 (the driver's default \texttt{--first}; the1184script documents no reason for omitting January 2018, the omission shortens1185every series by one baseline month, to \ItsSeriesTotalNMonths{} months for1186the default end, and the manuscript makes no claim about its effect beyond1187noting that the omitted month is the first of the baseline and enters only the1188pre-trend) to the last complete month1189$t_{\mathrm{L}}$, by default June 2026, with sensitivity runs at March and1190August 2026. Category series $N_{k,t}$ use the multi-label count restricted to1191month-precision works, and a series is analysed only if it has at least 481192non-zero months and at least 500 works in total; smaller series yield1193unstable fits and are reported descriptively. All methods operate on1194$y_t = \log(N_t + 1)$, the shift making the transform defined for empty months1195and immaterial for counts in the hundreds or thousands.11961197Right-truncation is handled by truncation, not by correction. The plan1198proposed to correct recent months by the indexing-delay profile estimated from1199the creation dates; the implemented pipeline estimates that profile1200(\texttt{indexing\_lag.csv}: for each publication month, the median and 90th1201percentile of $d_{\mathrm{cr}}(w) - d_{\mathrm{pub}}(w)$ and the shares indexed1202within 90 and after 180 days) and reports it, but the structural-change runs1203simply stop the series at $t_{\mathrm{L}}$ and vary $t_{\mathrm{L}}$. The1204reason is that an inflation correction based on the lag profile of earlier1205years assumes that the profile is stationary, and the profile is itself1206affected by the events under study (OpenAlex's own ingestion changed over the1207period); a correction would import that assumption into every test. Truncating1208to the last month at which the lag profile indicates near-complete indexing1209loses a few months of data but introduces no model. A donut specification is1210also run (\texttt{--donut}, default three): the ITS of Section~\ref{sec:m-its}1211is re-estimated for the reference date after removing the event month and the1212three months on each side of it (every month whose first day lies within1213$3 \times 31$ days of the first day of the event month, seven months in all,1214leaving \ItsSeriesTotalItsChatgptDonutN{} observations for the total series),1215so that the level and slope changes are identified from months at least a1216quarter away from the marker and not from the transition months themselves.1217For the total series the donut estimate of the level change is1218\ItsSeriesTotalItsChatgptDonutLevelChange{} in log points with HAC1219$p$-value \ItsSeriesTotalItsChatgptDonutLevelP{}, to be read against the1220full-sample estimate of Part IX\@. The alternative event dates of1221Section~\ref{sec:m-altdates} serve the related purpose of showing whether the1222estimated change is tied to a particular month.12231224\subsection{Interrupted time series with seasonality and HAC errors}1225\label{sec:m-its}12261227With $t = 0, 1, \dots, n-1$ indexing the months and $t_e$ the index of the1228event month, the segmented regression is1229\begin{equation}1230  y_t \;=\; \beta_0 + \beta_1\, t + \beta_2\, \mathbf{1}[t \ge t_e] + \beta_3\, (t - t_e)\,\mathbf{1}[t \ge t_e]1231           + \sum_{j=2}^{12} \gamma_j\, \mathbf{1}[\mathrm{month}(t) = j] + \varepsilon_t ,1232  \label{eq:its}1233\end{equation}1234the standard interrupted-time-series specification \citep{bernal2017its} with1235eleven month-of-year dummies (January as reference). The coefficient1236$\beta_2$ is the change in log level at the event, $\beta_3$ the change in1237monthly log slope, and $\beta_1$ the pre-event slope; since $y$ is a log count,1238$e^{\beta_2} - 1$ is the proportional level shift and $\beta_1$ and $\beta_3$1239are monthly growth rates. The event month is coded as the first full month1240after the reference date, December 2022 for the 30~November 2022 marker, and1241likewise for the alternative dates. Ordinary least squares estimates the1242coefficients; the covariance matrix is the heteroskedasticity- and1243autocorrelation-consistent estimator of \citet{newey1987hac} with a Bartlett1244kernel and bandwidth six months,1245\begin{equation}1246  \hat V = (X^{\top}X)^{-1} \Bigl( \hat\Gamma_0 + \sum_{\ell=1}^{6} \bigl(1 - \tfrac{\ell}{7}\bigr)(\hat\Gamma_\ell + \hat\Gamma_\ell^{\top}) \Bigr) (X^{\top}X)^{-1},1247  \qquad \hat\Gamma_\ell = \sum_{t} \hat\varepsilon_t \hat\varepsilon_{t-\ell}\, x_t x_{t-\ell}^{\top},1248\end{equation}1249which makes the reported standard errors robust to serial correlation of the1250residuals up to half a year. The bandwidth is fixed rather than chosen by the1251data-dependent rule of \citet{andrews1991hac}; with roughly one hundred1252observations the difference is immaterial and a fixed choice is easier to1253preregister. The fitted values are back-transformed as $e^{\hat y_t} - 1$ for1254the figures. The specification's known weaknesses are those of any single-break1255segmented regression: it assumes the change is immediate and permanent, it1256attributes to $\beta_2$ any curvature of the pre-trend that a linear1257$\beta_1 t$ cannot absorb, and with a reference date placed near the centre of1258the sample it is well identified only because the post period is long. The1259placebo analysis is the main guard against the second weakness.12601261\subsection{Placebo distribution}1262\label{sec:m-placebo}12631264The ITS of equation~\eqref{eq:its} is re-estimated with the event placed at1265every month $t'$ from the 25th month of the series to the 12th month before1266its end, yielding the $t$-statistics $\{ t^{(2)}_{t'} \}$ and $\{ t^{(3)}_{t'} \}$1267of the level and slope changes as a function of the hypothetical event date.1268The placebo $p$-value of the true event is its rank among these:1269\begin{equation}1270  p^{\mathrm{plac}}_{\beta_2} \;=\; \frac{1}{|\mathcal{T}'|}\sum_{t' \in \mathcal{T}'} \mathbf{1}\bigl[\, |t^{(2)}_{t'}| \ge |t^{(2)}_{t_e}| \,\bigr],1271  \label{eq:placebo}1272\end{equation}1273and likewise for $\beta_3$. The set $\mathcal{T}'$ contains the true event, so1274the smallest attainable value is $1/|\mathcal{T}'|$. A second rank,1275restricted to the candidate dates \emph{before} the true event (the plan's1276original wording), is computed alongside it; because that restriction removes1277the true event from the candidate set, the baseline-only rank can be exactly1278zero when no baseline date produces a larger $t$-statistic, and Part IX states1279this convention next to the two values. This statistic is the1280``placebo in time'' diagnostic recommended for interrupted time series1281\citep{bernal2018itscontrol}: if a level shift of comparable $t$-statistic is1282found at a quarter of all candidate dates, a conventional $p$-value from the1283HAC standard error of $\beta_2$ overstates the evidence, because the series1284has enough curvature and persistence that any date looks like a break. The1285value is not a $p$-value under a null hypothesis in the usual sense (the1286candidate dates are not exchangeable draws from a null distribution, and the1287regressions share the same data), and the manuscript calls it a placebo rank.1288Two implementation details depart from the plan's wording. The plan speaks of1289placebo breaks ``at every month of the baseline''; the primary implementation1290ranges over the baseline \emph{and} the post period, so that a change in 2023 or12912024 that is larger than the one at the reference date lowers the rank of the1292reference date, which is the conservative direction for hypothesis H1 and is1293why the wider range was kept. And the minimum of 24 pre-months and 121294post-months means that candidate dates near the ends of the series, where the1295level-change coefficient is poorly identified, are excluded from the1296comparison.12971298\subsection{Multiple breaks: dynamic programming with information criteria}1299\label{sec:m-bp}13001301The Bai--Perron framework \citep{bai1998breaks, bai2003breaks} estimates1302$m$ unknown break dates $\tau_1 < \dots < \tau_m$ as the global minimiser of1303the sum of squared residuals of a segment-wise regression. The implementation1304is the pure dynamic programme of \citet{bai2003breaks} on the log series1305with a segment-wise linear trend: for a segment $[i, j)$ of at least $h$1306observations,1307\begin{equation}1308  S(i, j) \;=\; \min_{a, b}\ \sum_{t=i}^{j-1} \bigl( y_t - a - b\,t \bigr)^2,1309\end{equation}1310and the optimal partition of the first $j$ observations into $m+1$ segments1311is obtained recursively,1312\begin{equation}1313  C_m(j) \;=\; \min_{\,m h \le i \le j - h}\ \bigl\{ C_{m-1}(i) + S(i, j) \bigr\}, \qquad C_0(j) = S(0, j),1314  \label{eq:bp-dp}1315\end{equation}1316with the break positions recovered by back-tracking. The minimum segment1317length is $h = \max\{8, \lfloor 0.15\, n \rfloor\}$ months, a trimming of 15 per1318cent that is the usual choice in this literature; it forbids breaks in the1319first and last $h$ months, which for the default window of1320\ItsSeriesTotalNMonths{} months ($h = 15$) means that no break can be placed1321after April 2025, and it also1322forbids two breaks closer than $h$ months. The number of breaks, up to three, is selected by two1323criteria computed on the global minima $\mathrm{SSR}_m = C_m(n)$,1324\begin{align}1325  \mathrm{BIC}(m) &= n \log\bigl(\mathrm{SSR}_m / n\bigr) + p_m \log n, \\1326  \mathrm{LWZ}(m) &= n \log\bigl(\mathrm{SSR}_m / (n - p_m)\bigr) + p_m\, c_0\, (\log n)^{2.1}, \qquad c_0 = 0.299,1327\end{align}1328with $p_m = 2(m+1) + m$ parameters (an intercept and a slope per segment plus1329the $m$ break dates). The BIC is Schwarz's criterion \citep{schwarz1978bic};1330the LWZ criterion of \citet{liu1997segmented}, in the form used by1331\citet{bai2003breaks}, penalises additional breaks more heavily and is1332known to select fewer spurious breaks when the errors are serially correlated,1333which they are in these series (the monthly residual autocorrelation is what1334the HAC errors of the ITS correct for). Both selections are reported. The1335sequential sup-$F$ tests of \citeauthor{bai1998breaks} are not implemented; in1336their absence the break dates carry no $p$-value, and their stability is1337assessed instead through the agreement of the two criteria, the sensitivity to1338$t_{\mathrm{L}}$, and the agreement with the two methods below. The regression1339in each segment contains no seasonal terms; instead the driver seasonally1340adjusts the log series before the search, subtracting from each month the1341mean deviation of its calendar month from the overall mean, both means1342computed on the baseline months only (before December 2022) so that the1343adjustment uses no post-period information. The same adjusted series is the1344input of the PELT and BOCPD methods below; only the ITS models seasonality1345inside the regression.13461347\subsection{PELT}13481349The pruned exact linear time algorithm \citep{killick2012pelt} finds the1350changepoint set $\mathcal{C}$ minimising a penalised cost,1351\begin{equation}1352  \min_{\mathcal{C}}\ \sum_{\text{segments } [i,j) \text{ induced by } \mathcal{C}}\ \sum_{t=i}^{j-1} (y_t - \bar y_{i:j})^2 \;+\; \lambda\, |\mathcal{C}| ,1353  \qquad \lambda = 2\, \widehat{\mathrm{Var}}(y)\, \log n ,1354  \label{eq:pelt}1355\end{equation}1356with the $\ell_2$ cost (piecewise constant mean) and a minimum segment length1357of six months, as implemented in the \texttt{ruptures} library1358\citep{truong2020ruptures}. The penalty is of the Schwarz type studied by1359\citet{yao1988schwarz} for the piecewise-constant Gaussian model, scaled by1360the sample variance of the series; it is a conservative choice in a trending1361series, because a piecewise-constant mean must spend changepoints to follow a1362trend, so the reported PELT dates should be read as the points where the level1363moves most, not as the Bai--Perron break dates of a trend model. The two1364methods are complementary for that reason: a date flagged by both is a change1365in level that is not explained by a change in slope, and a date flagged only1366by the trend model is a kink.13671368\subsection{Bayesian online changepoint detection}1369\label{sec:m-bocpd}13701371The online detector of \citet{adams2007bocpd} maintains, after each1372observation, a posterior distribution over the \emph{run length} $r_t$, the1373number of months since the last changepoint. Let $H$ be the constant hazard1374(the prior probability that a change occurs at any month, here $1/60$, a prior1375mean run length of five years), and let the observations within a run be1376modelled as $y \sim \mathcal{N}(\mu, \sigma^2)$ with the conjugate1377Normal--Inverse-Gamma prior1378$\mu \mid \sigma^2 \sim \mathcal{N}(\mu_0, \sigma^2/\kappa_0)$,1379$\sigma^2 \sim \mathrm{IG}(\alpha_0, \beta_0)$. After $r$ observations1380$y_1, \dots, y_r$ of the current run the hyperparameters update as1381\begin{equation}1382  \kappa_r = \kappa_0 + r, \quad1383  \mu_r = \frac{\kappa_0 \mu_0 + \sum_{i \le r} y_i}{\kappa_r}, \quad1384  \alpha_r = \alpha_0 + \frac{r}{2}, \quad1385  \beta_r = \beta_0 + \tfrac12 \sum_{i \le r}(y_i - \bar y)^2 + \frac{\kappa_0\, r\, (\bar y - \mu_0)^2}{2\,\kappa_r},1386\end{equation}1387which the code computes recursively, one observation at a time, as1388$\mu' = (\kappa\mu + y)/(\kappa+1)$, $\kappa' = \kappa + 1$, $\alpha' = \alpha + \tfrac12$,1389$\beta' = \beta + \kappa (y - \mu)^2 / (2(\kappa+1))$. The predictive1390distribution of the next observation given a run of length $r$ is the1391Student-$t$1392\begin{equation}1393  y_{t+1} \mid r_t = r \;\sim\; t_{2\alpha_r}\Bigl( \mu_r,\ \frac{\beta_r (\kappa_r + 1)}{\alpha_r \kappa_r} \Bigr),1394  \label{eq:predictive}1395\end{equation}1396and the run-length recursion is1397\begin{align}1398  P(r_{t+1} = r + 1,\ y_{1:t+1}) &= P(r_t = r,\ y_{1:t})\ p(y_{t+1} \mid r_t = r)\ (1 - H), \label{eq:rl-growth}\\1399  P(r_{t+1} = 0,\ y_{1:t+1})     &= \sum_{r} P(r_t = r,\ y_{1:t})\ p(y_{t+1} \mid r_t = r)\ H, \label{eq:rl-change}1400\end{align}1401normalised at each step to give the posterior $R_{t+1}(r) = P(r_{t+1} = r \mid y_{1:t+1})$.1402The hyperparameters are initialised from the first six months of the series1403($\mu_0$ their mean, $\beta_0$ their variance, $\kappa_0 = 1$, $\alpha_0 = 1$),1404an empirical-Bayes choice that uses the start of the series twice and whose1405effect vanishes after a few dozen observations. Two detection statistics are1406derived. Because a constant hazard places mass $H$ on $r = 0$ at every step by1407construction, the probability of a change ``at $t$'' is uninformative on its1408own; the code reports instead $P(r_t \le 3 \mid y_{1:t})$, the posterior1409probability that a change occurred within the last four months, and the1410maximum of this quantity over December 2022 to March 2023 is the statistic1411reported for the reference date. The second statistic is the sequence of1412maximum-a-posteriori run lengths $\hat r_t = \arg\max_r R_t(r)$; a1413\emph{reset} is declared at month $t$ when $\hat r_t \le 2$ after1414$\hat r_{t-1} > 12$, that is, when the most probable explanation of the data1415switches from a run of more than a year to a run that has just begun, and the1416list of reset months is the online detector's set of changepoints. The1417exact offline analogue \citep{fearnhead2006exact} would give the smoothed1418rather than the filtered posterior; the filtered version is used because the1419question it answers---when would a contemporaneous observer have detected the1420change---is the one relevant to the lead-time evaluation of1421Section~\ref{sec:m-emerging}.14221423\subsection{Alternative event dates}1424\label{sec:m-altdates}14251426The ITS is re-estimated for four alternative markers (June 2020 for GPT-3,1427May 2022 for DALL$\cdot$E~2, April 2023 for GPT-4, October 2024 for o1), each1428coded as the first full month after the public release, and an event is1429skipped when fewer than twelve months precede or follow it in the series. The1430exercise is not a horse race among causes. Its purpose is to show whether the1431estimated level and slope changes are specific to the November 2022 marker or1432whether the series exhibits similar changes at other dates associated with1433the same technological sequence, in which case the honest description is of a1434multi-year acceleration rather than a single break; the Bai--Perron dates are1435the data-driven complement to this pre-specified list. For the total series1436the sensitivity of the reference-date ITS and of the Bai--Perron dates to the1437truncation month $t_{\mathrm{L}}$ is also tabulated.14381439\section{Emerging-topic detection}1440\label{sec:m-emerging}14411442The framework of RQ10 asks whether signals observable at a month $T$ predict1443which topics will have grown unusually by $T + h$. Its scientific content lies1444less in the models, which are deliberately simple, than in the discipline of1445the evaluation: features are computed from data dated at or before $T$,1446labels from data strictly after $T$, training cutoffs end before test cutoffs1447begin, and the test labels are observed in a period the training never saw.1448The implementation is \texttt{experiments/emerging\_detection.py}.14491450\subsection{Units and panel}14511452The units are OpenAlex topics (the \texttt{rank 0} topic of each work) with at1453least fifty eligible works over the whole window. Topics are used rather than1454the forty ontology categories because the categories are too few and too1455broad to emerge, and rather than the semantic clusters of1456Section~\ref{sec:m-semantic} because a cluster defined on the full corpus is1457not an out-of-time object: it would be known to exist only because of works1458after $T$. The plan lists semantic clusters re-estimated at each cutoff and1459keyword $n$-grams as additional unit types; neither is implemented in the1460current pipeline, and the manuscript reports topic-level results only. Topics1461have their own limitation in this role: the OpenAlex topic model is itself1462fixed in 2026 and assigns 2019 works to topics defined with knowledge of14632019--2026 literature, so a topic that ``exists'' in 2019 with a handful of1464works may be a 2024 construct projected backward. The label definition below1465partly neutralises this, because it conditions on the topic having at least1466twenty works in the year before $T$, but the caveat applies to any1467retrospective evaluation with a fixed vocabulary and is stated as the first1468limitation of the framework.14691470The panel consists of two $K \times M$ matrices over topics $k$ and months1471$t$ from January 2018 to the last month (June 2026 by default, the driver's1472\texttt{--last-month}, which must be the last complete month of the panel): the volume1473$n_{k,t}$, the number of month-precision eligible works of topic $k$ with1474first month $t$, and the citation inflow $c_{k,t}$, the number of internal1475citation edges whose cited work belongs to topic $k$ and whose citing work has1476first month $t$. Citation inflow is dated by the citing work's first month,1477not by the OpenAlex calendar-year counts, which is what makes it usable at1478monthly resolution and out of time.14791480\subsection{Features at a cutoff}14811482Write $V_k(a, b] = \sum_{t = a+1}^{b} n_{k,t}$ for the volume of topic $k$ in1483the months $a < t \le b$ (and likewise $C_k$ for citations). At cutoff $T$ the1484feature vector of topic $k$ is1485\begin{align}1486  g^{12}_{k,T} &= \log\bigl(1 + V_k(T{-}12, T]\bigr) - \log\bigl(1 + V_k(T{-}24, T{-}12]\bigr), \\1487  \mathrm{acc}_{k,T} &= g^{12}_{k,T} - g^{12}_{k,T-12}, \\1488  z_{k,T} &= \frac{\tfrac13 V_k(T{-}3, T] - \bar n_{k,[T-27,\,T-3]}}{s_{k,[T-27,\,T-3]} + 10^{-6}}, \\1489  \mathrm{cit}_{k,T} &= \log\bigl(1 + C_k(T{-}12, T]\bigr) - \log\bigl(1 + C_k(T{-}24, T{-}12]\bigr), \\1490  \mathrm{share}_{k,T} &= V_k(T{-}12, T] \Big/ \sum_{k'} V_{k'}(T{-}12, T], \\1491  \mathrm{age}_{k,T} &= T - \min\{ t : \textstyle\sum_{u \le t} n_{k,u} \ge 5 \},1492\end{align}1493where $\bar n$ and $s$ are the mean and standard deviation of the monthly1494volumes over the 25 months from $T-27$ to $T-3$. The first is twelve-month1495log growth, the second its change over a year (acceleration), the third a1496$z$-score of the last quarter's monthly volume against the trailing two years1497(the ``abnormal growth'' signal, which also serves as the baseline detector),1498the fourth citation acceleration, the fifth a size control, the sixth the1499topic's age in months since it reached five works. Every window ends at $T$,1500and the quarter that the $z$-score evaluates ($T-2$ to $T$) does not overlap1501the trailing window ($T-27$ to $T-3$) against which it is standardised. The1502log-ratio form of growth with1503the $+1$ shift keeps the features finite for topics that were empty in the1504earlier window. Of the seven candidate signals of the mandate, the1505implemented set covers abnormal growth, citation acceleration and (through the1506panel of Section~\ref{sec:m-novelty}, which the script can merge but does not1507by default) semantic novelty; interdisciplinary connectivity is described in1508the script's documentation as a cross-area share but is not computed, and1509methodological adoption, benchmark proliferation and open-source activity are1510not implemented. These absences are recorded as scope limits of the current1511framework; the evaluation design does not depend on which features are1512present.15131514\subsection{Label at horizon \texorpdfstring{$h$}{h}}15151516For a horizon $h \in \{12, 24\}$ months, the future growth of topic $k$ after1517cutoff $T$ is1518\begin{equation}1519  g^{\mathrm{fut}}_{k,T,h} = \log\bigl(1 + V_k(T, T{+}h]\bigr) - \log\bigl(1 + V_k(T{-}h, T]\bigr),1520\end{equation}1521and the topic is \emph{eligible} at $T$ if $V_k(T{-}12, T] \ge 20$. The label is1522\begin{equation}1523  \ell_{k,T,h} \;=\; \mathbf{1}\Bigl[\, g^{\mathrm{fut}}_{k,T,h} \ge q_{0.9}\bigl(\{ g^{\mathrm{fut}}_{k',T,h} : k' \text{ eligible at } T \}\bigr)1524     \;\wedge\; V_k(T, T{+}h] \ge 2 \max\{ V_k(T{-}h, T],\, 1 \} \;\wedge\; k \text{ eligible} \Bigr],1525  \label{eq:label}1526\end{equation}1527the topic is in the top decile of future growth among eligible topics at that1528cutoff and at least doubles its volume. The decile is defined within cutoff,1529so that the positive rate is roughly ten per cent at every $T$ regardless of1530the overall growth of the corpus; the doubling condition removes topics that1531reach the top decile by growing from a small base in a quiet period. The1532protocol phrases the label as ``top-decile growth and citation share''; the1533implemented label uses volume growth only, and citation share is a feature1534rather than part of the outcome. This is a deliberate simplification---a1535citation-based outcome at a twelve-month horizon is dominated by the1536right-truncation of citations---and is recorded as a deviation. The label1537uses only $n_{k,t}$, so a topic can be ``emerging'' in this sense while its1538citation impact is unremarkable; Part IX reports the citation profile of the1539positives separately.15401541\subsection{Cutoffs, models and metrics}15421543Cutoffs are the months whose index from January 2018 is a multiple of three,1544that is, January, April, July and October of each year. Training cutoffs are1545those from December 2019 up to a horizon-dependent last month, December 20211546for $h = 12$ and December 2020 for $h = 24$, so that the realised training1547cutoffs run from January 2020 to October 2021 (eight cutoffs) at $h = 12$ and1548from January 2020 to October 2020 (four cutoffs) at $h = 24$; in both cases1549the last training label window closes in October 2022, before the reference1550date and before the first test cutoff. Test cutoffs are those from January15512023 to October 2024 whose label window $T + h$ lies within the panel: with1552the default last month of June 2026, January 2023 to October 2024 at $h = 12$1553and January 2023 to April 2024 at $h = 24$. No cutoff of either set falls in15542022, and the interval between the close of the last training label (October15552022) and the first test cutoff (January 2023) is the temporal separation of1556training from test in the sense of \citet{bergmeir2012crossval}. The plan1557proposed training cutoffs through 2022; the implementation stops earlier so1558that no training label is observed after the reference date, a stricter1559separation than the plan, bought at the price of few training cutoffs at1560$h = 24$. The realised cutoff lists are written to the metrics file of each1561horizon (\texttt{train\_cutoffs}, \texttt{test\_cutoffs}). Rows are the1562eligible (topic, cutoff) pairs; features are the six quantities above with1563non-finite values replaced by zero.15641565Three predictors are compared: the $z$-score baseline, which ranks topics by1566$z_{k,T}$ alone and involves no fitting; an $\ell_2$-regularised logistic1567regression (regularisation strength $C = 1$, on features standardised with a1568scaler fitted on the training cutoffs only, so that the penalty is1569scale-invariant and no test-period statistic enters the fit);1570and a gradient boosting classifier \citep{friedman2001gbm} with 300 trees of1571depth three and learning rate 0.05, seed 44, as implemented in scikit-learn1572\citep{pedregosa2011sklearn}. The metrics on the pooled test rows are the area1573under the ROC curve \citep{hanley1982auc}, which is the probability that a1574randomly chosen positive is ranked above a randomly chosen negative, and1575precision at $k \in \{20, 50\}$, computed within each test cutoff as the share1576of positives among the $k$ highest-ranked topics and averaged over cutoffs; the1577AUC is also reported per cutoff to show its stability. Hypothesis H8 sets the1578bar at an AUC above 0.70 and precision at 50 above 0.40 against the baseline.1579Because the positives are defined by a within-cutoff decile, precision at 501580has a chance level of about ten per cent, and a precision at 50 of 0.401581means that twenty of the fifty flagged topics were among the positives of1582that cutoff.15831584\subsection{Lead time and the preregistered known-emergence set}15851586The protocol fixes before estimation a list of twelve developments that1587anyone familiar with the period would call emergent (large language models,1588diffusion models, neural radiance fields, LLM agents, retrieval-augmented1589generation, state-space sequence models, vision--language models, mechanistic1590interpretability, speculative decoding, mixture of experts at scale,1591test-time compute and reasoning models, AI for code generation) and predicts1592that the detector flags each at least six months before its peak growth1593month. Under H8 the lead time of a development mapped to a topic $k$ would be1594the number of months between the first test cutoff at which $k$ ranks in the1595top 50 and the month of maximum $g^{12}_{k,t}$ over the window. That1596definition requires a mapping from each development to one or more OpenAlex1597topics, and the mapping cannot be made: the twelve developments have no1598topic of their own in the OpenAlex model (there is no topic for LLM agents,1599vision--language models, speculative decoding or mixture of experts), so a1600topic-level detector cannot be scored on them whatever its merits. The check1601actually run (\texttt{experiments/known\_set.py},1602\texttt{results/emerging/known\_set\_lead\_times.csv}) is therefore a1603separate lead-time check on the preregistered concepts, and it departs from1604the H8 definition in three respects that are stated wherever its results1605appear. First, the units are keyword series: each development is defined by1606a hand-written regular expression over title and abstract, listed in the1607script, and its monthly series counts the month-precision eligible works it1608matches. Second, the detector applied is the $z$-score baseline rule, not the1609trained models: a development is \emph{detected} in the first month $t$ at1610which the mean of months $t-2$ to $t$ exceeds the mean of months $t-26$ to1611$t-3$ by more than three of their standard deviations, the trailing1612twelve-month volume is at least thirty works, and that volume is at least1613twice the volume of the twelve months before. Third, the \emph{peak growth1614month} is the month of maximum twelve-month log growth over the whole1615series, chosen with full-sample knowledge, so the lead time (peak month minus1616detection month) is an ex-post quantity: a detection may precede a peak that1617no contemporaneous observer could have identified, and a negative lead time1618means that the series' fastest growth preceded the rule's firing. The1619regular expressions are themselves 2026 knowledge, since they name each1620development as it came to be called. The check thus measures whether a simple1621abnormal-growth rule on a named concept fires early relative to that1622concept's peak growth; it is not the H8 test of the trained detector, and1623Part IX reports it under that description1624(\pending{known-set lead times: no macro yet for results/emerging/known\_set\_lead\_times.csv}).16251626\subsection{Look-ahead safeguards and what they do not cover}16271628The safeguards are structural: features are functions of panel columns up to1629$T$ (enforced by index arithmetic, not by convention), labels of columns after1630$T$, cutoffs are separated by a gap, and the panel is built once from the1631corpus so that the same data serve all cutoffs. What they do not cover is1632information that entered the panel through steps performed in 2026 with full1633knowledge of the period: the topic vocabulary, the eligibility rules, the1634linkage, and the month-precision filter. A detector evaluated this way answers1635``given the 2026 topic model, would these signals have ranked the eventual1636winners early?'', which is a legitimate question about the signals and a1637weaker one about the deployability of the system. The semantic-cluster1638extension that the plan describes, with clusters re-estimated at each cutoff1639from embeddings of works dated before it, is the design that would address1640this, and it is left as the stated next step of the framework.16411642\section{Knowledge-graph extraction}1643\label{sec:m-kg}16441645\subsection{Structural and extracted layers}16461647The knowledge graph has two layers of very different epistemic status. The1648structural layer---works, authors, institutions, countries, sources, OpenAlex1649topics, arXiv categories, taxonomy categories, and the citation and1650classification edges among them---is derived from the source databases by the1651deterministic rules of Sections~\ref{sec:m-linkage}--\ref{sec:m-networks}; its1652errors are the errors of the sources and of the classifier, which are1653quantified. The extracted layer---methods, models, datasets, benchmarks,1654problems, metrics and claims, with typed edges to the works that introduce,1655use, evaluate on, extend, compare against or address them---is produced by a1656language model from abstracts, for the high-priority set only, and its1657errors are of a different kind: omissions, hallucinated entities, wrong1658roles, and claims paraphrased beyond what the abstract states. The mandate1659requires that every inferred relationship carry provenance, confidence and a1660verification status, and the extraction is designed so that these three1661fields are not decorative.16621663\subsection{High-priority and landmark sets}16641665The high-priority set is selected by \texttt{literature\_synthesis/select\_landmarks.py}1666from eligible, non-retracted works with a primary category: within each1667(primary category, publication year) cell the works are ranked by1668$\mathrm{NCS}^{(36)}$ (for 2025 and 2026, for which the window is empty, by1669$c^{(12)}$ divided by its year mean), and the top $\max\{25,\ \mathrm{round}(10{,}000\, n_{\mathrm{cell}} / n)\}$1670are taken, so that cells are represented in proportion to their size with a1671floor that keeps small categories and recent years present. The landmark set1672takes the top $\max\{15, \lfloor 1000/40 \rfloor\} = 25$ works of each category by1673the same score, adds the 200 works with the highest $c^{(36)}$ overall, and1674removes duplicates; it is flagged for human review (checkpoint H-3) in its1675entirety. Both selections are citation-based and inherit the biases of1676citation counts: they favour the categories and years whose works are cited1677early, and they cannot contain a work whose influence has not yet appeared in1678citations, which for 2025--2026 means that the ``high-priority'' recent works1679are the early-cited ones, not necessarily the important ones.16801681\subsection{Schema, provenance and machine verification}16821683For each work in the high-priority set with an abstract, the extractor1684(\texttt{knowledge\_graph/03\_extract\_entities.py}) submits the title, year and1685abstract (truncated to 3,000 characters), in batches of five works, to1686\texttt{claude-sonnet-5-5} with a JSON schema enforced by the API's structured1687output mode. The schema requires, per work, a contribution type from1688\{theory, method, empirical, benchmark, engineering, survey, other\}; a list of1689entities each with a name, a kind in \{method, model, dataset, benchmark,1690problem, metric\}, a role in \{introduced, used, evaluated\_on, extended,1691compared\_against, addressed\}, a supporting \emph{span} and a confidence; and1692a list of claims each with a text, a kind in \{result, improvement,1693negative\_result, reproduction, contradiction\}, a span and a confidence. The1694system prompt instructs the model to quote a verbatim span of at most 25 words1695from the abstract for every entity and claim, to use canonical names, and never1696to infer anything not stated. The role vocabulary maps onto the edge types of1697the mandate (\textit{introduces method}, \textit{uses dataset},1698\textit{evaluates}, \textit{extends}, \textit{addresses research problem});1699\textit{contradicts} and \textit{reproduces} are claim kinds rather than1700entity roles, because a contradiction or a reproduction is a relation between1701a work and a prior finding that an abstract rarely names as an entity.17021703Provenance is the pair (work identifier, span). Machine verification is the1704check that the span occurs verbatim, after lower-casing and trimming, in the1705abstract the model was given:1706\begin{equation}1707  \mathrm{status}(e) \;=\;1708  \begin{cases}1709    \text{machine-verified} & \text{if } \mathrm{lower}(\mathrm{span}(e)) \subseteq \mathrm{lower}(\mathrm{abs}(w)),\\1710    \text{unverified}       & \text{otherwise},1711  \end{cases}1712\end{equation}1713with \emph{human-verified} reserved for edges the principal investigator has1714reviewed. The check is weak in a precise sense: it establishes that the1715evidence quoted for an edge exists, not that it supports the edge. A model1716that quotes a genuine sentence and attaches the wrong role to it produces a1717machine-verified wrong edge. The confidence field is the model's own stated1718probability that the extraction is correct and is not calibrated by this1719study; it is stored so that downstream users can threshold it and so that its1720calibration can be estimated on the human-verified subsample. Every record1721carries \texttt{evidence\_type = abstract}, and the manuscript treats1722abstract-derived edges as what they are: evidence that an abstract asserts a1723relation, which is not a full-text review and is never cited as establishing1724a scientific finding (CLAUDE.md §1). Extractions are appended to a1725resumable file, requests that the model refuses are skipped and counted, and1726the cost is tracked against the budget of amendment A-004. What is and is not1727evidence can therefore be stated plainly: citation edges are evidence of1728citation; classification edges are evidence of rule firing with measured1729agreement; extracted edges are evidence that a language model, reading an1730abstract, asserted a relation and quoted a sentence that exists.17311732\section{Uncertainty, provenance and reproducibility}1733\label{sec:m-uncertainty}17341735\subsection{What is uncertain and how it is quantified}17361737The descriptive quantities of Sections~\ref{sec:m-bibliometrics}1738and~\ref{sec:m-networks} are computed on the whole eligible corpus and carry no1739sampling error; their uncertainty is measurement error, which enters through1740linkage (Section~\ref{sec:m-linkprecision}), classification1741(Section~\ref{sec:m-validation}), reference resolution and the completeness1742of affiliations and abstracts, each of which is estimated and reported as a1743rate rather than propagated into intervals. Propagating a classification1744precision of, say, 0.85 into an interval for a category share would require a1745model of how errors are distributed over time, and the honest statement is1746that a category's share is known up to the classifier's error, which is1747reported by category and, where the validation sample permits, by period.17481749Three families of quantities do carry explicit intervals. The ITS1750coefficients carry HAC standard errors and the placebo rank of1751Section~\ref{sec:m-placebo}; the Bai--Perron break dates carry no interval1752in the current implementation and are reported with the agreement of the two1753criteria and the sensitivity to truncation. The detector metrics carry1754per-cutoff values, whose dispersion across cutoffs is the relevant measure of1755stability, since the rows within a cutoff are not independent. And the1756cluster count and the category similarity matrices carry the split-half ARI\@.1757The only bootstrap in the pipeline is that of1758\texttt{bibliometrics/04\_diversity\_cagr.py} (Section~\ref{sec:m-diversity}):1759percentile intervals \citep{efron1979bootstrap} for the yearly Rao--Stirling1760index and the yearly category shares, from $B = 500$ multinomial resamples of1761each year's works over the categories with seed 44. No other corpus1762statistic---the Gini coefficients, the cross-area shares, the modularity1763values---carries a resampling interval, and the manuscript reports none for1764them; the protocol's commitment to ``bootstrap or HAC intervals'' is met by1765the diversity bootstrap and by the HAC errors of the ITS, and a reported1766figure without an interval is a population count for which none has been1767computed. The1768indicators of Section~\ref{sec:m-bibliometrics} that depend on OpenAlex's1769nightly recomputation (FWCI, total citation counts) are snapshot quantities1770and are dated.17711772\subsection{Seeds and determinism}17731774Every stochastic step is seeded with the constant 44: the validation and1775linkage samples (hash ordering salted with the seed), the atlas sample and the1776two UMAP fits, the split-half permutations, the gradient boosting classifier,1777and the diversity bootstrap. The regular-expression classifier, the SQL stages and the1778structural-change toolkit are deterministic. Two steps are deterministic only1779up to the platform: embedding on Apple-silicon GPUs with float16 storage1780produces vectors that differ at the fourth decimal from a CPU run, and UMAP's1781parallel optimisation is reproducible only with a fixed seed and a fixed1782thread count, which the runbook records. The LLM-based steps (two taxonomy1783raters, one extractor) are not deterministic even at zero temperature across1784model versions; their outputs are archived in full (the JSONL rating and1785extraction files, with the model identifier and the usage of every call) so1786that every downstream number can be recomputed from the archived outputs1787without re-querying the model, and a re-run with a later model version is a1788new experiment, not a replication.17891790\subsection{Ledgers, hashes and the chain of custody}17911792The raw inputs are pinned as follows. Each OpenAlex snapshot file downloaded1793from the public bucket is hashed with SHA-256 on arrival and the hash,1794record count, computer-science record count and malformed-record count are1795written to a SQLite ledger keyed by the file's URL and manifest entry; a file1796whose hash or count does not match the manifest is re-downloaded. The DBLP1797XML dump is identified by the MD5 published with it (verified before parsing)1798and its size; the ACL Anthology export by the SHA-256 of the file; the arXiv1799OAI-PMH harvest by the raw XML pages, kept verbatim, from which the Parquet1800table is rebuilt. Every derived table is written by a script whose1801invocation, inputs, outputs and measured wall time are listed in1802\texttt{reproducibility/RUNBOOK.md}, and the Python environment is locked1803(\texttt{reproducibility/environment\_M3U96b.txt}). Numbers enter the1804manuscript only through \texttt{manuscript/tables/numbers.tex}, generated by1805\texttt{tables/make\_numbers.py} from the result files, so that a number in1806the text can be traced to a macro, the macro to a result file, the result file1807to a script and the script to a ledger entry. The chain has one weak link,1808stated here: the result files on the compute node are not themselves hashed1809into the repository, so a reader verifying the chain must either re-run the1810pipeline or trust the node's copy; the release archive of Phase 9 will add1811their hashes.18121813\subsection{Human checkpoints and the status of conclusions}18141815Six checkpoints (H-0 to H-5, \texttt{reports/HUMAN\_REVIEW\_CHECKPOINTS.md})1816require the principal investigator's review of the plan, protocol and1817amendments (H-0), the linkage sample, the taxonomy validation sample, the1818landmark list, the structural-change results and the conclusions. Until a checkpoint is signed, the manuscript marks the1819conclusions that depend on it as pending human review, and the numbers that1820depend on it are rendered by the \texttt{\textbackslash pending} macro rather1821than typed. This is the mechanism by which the mandate's requirement that no1822agent approve its own findings is made visible in the text rather than1823asserted in a preface; it also means that a version of this manuscript1824compiled before the checkpoints are signed contains visibly incomplete1825statements, which is the intended behaviour.18261827
Files · 9decbb36a6f62baf413bbeb8f25918559b6ceba3
Menu

Theme