SPB Git

spb/wp44_uqo

Public
99.3 KB · 1,634 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)$ (the date at which the record entered OpenAlex), a title, an39optional abstract, authorships, a primary source (venue), OpenAlex topics with40their subfield and field, a list of referenced works, and yearly citation counts.41Linked records from DBLP, arXiv and the ACL Anthology attach to $w$ a DBLP key,42an arXiv identifier with its arXiv creation date $d_{\mathrm{arx}}(w)$ and primary43category, and an ACL identifier.4445The temporal position of a work is its \emph{first date},46\begin{equation}47  d(w) \;=\; \min\bigl\{\, d_{\mathrm{pub}}(w),\; d_{\mathrm{pub}}(\pi(w)),\; d_{\mathrm{arx}}(w) \,\bigr\},48  \label{eq:first-date}49\end{equation}50where $\pi(w)$ is the preprint record merged into $w$ by the deduplication rule of51Section~\ref{sec:m-dedup} when one exists, and each missing term is replaced by52$d_{\mathrm{pub}}(w)$. The first date, not the date of the version of record, is53the quantity that places a work on the time axis, because the research question54concerns when ideas entered the literature rather than when a publisher released55them. The publication year $y(w)$ used for citation normalisation is, in56contrast, the OpenAlex \texttt{publication\_year} of the surviving record,57because citation windows are defined in calendar years of the OpenAlex58\texttt{counts\_by\_year} table (Section~\ref{sec:m-citations}). The two59conventions are deliberately distinct and both are stored on every record.6061The observation window is $[t_0, t_1] = [\text{2018-01-01}, \text{2026-11-02}]$,62split at the reference date $t^{\ast} = \text{2022-11-30}$ into a baseline63period $B = [t_0, t^{\ast})$ and a post period $P = [t^{\ast}, t_1]$:64\begin{equation}65  \mathrm{period}(w) \;=\;66  \begin{cases}67    B & \text{if } t_0 \le d(w) < t^{\ast},\\68    P & \text{if } t^{\ast} \le d(w) \le t_1 .69  \end{cases}70\end{equation}71Monthly series use the month $m(w)$ of the first date. Two facts about dates72constrain everything that follows. First, a substantial share of OpenAlex73records carry a publication date equal to the first of January of their year,74which is the database's convention for year-only precision rather than a real75date. The pipeline therefore attaches to every record a flag76\begin{equation}77  \mathrm{prec}(w) \;=\;78  \begin{cases}79    \text{year}  & \text{if } d_{\mathrm{pub}}(w) \text{ falls on 1 January},\\80    \text{month} & \text{otherwise},81  \end{cases}82\end{equation}83and every monthly series in this paper is computed on the month-precision84subset $\mathcal{W}^{\mathrm{m}} = \{w : \mathrm{prec}(w) = \text{month}\}$ only85(amendment A-002). A genuine 1~January publication is thereby misclassified as86year precision and dropped from monthly series; the loss is small and, more87importantly, it does not depend on the period, so it cannot manufacture a break.88Annual series use all eligible records. Second, the right end of the window is89censored: records published in the last months before the snapshot are90under-represented because OpenAlex indexes them with a lag. The treatment of this91right-truncation is specified in Section~\ref{sec:m-truncation}.9293\subsection{Categories, areas and the measurable structure}9495Let $\mathcal{K}$ be the set of the forty leaf categories of the ontology96(\texttt{taxonomy/ontology.yaml}, Part III and Appendix~A) and $\mathcal{A}$ the97set of its eight areas, with the surjection $a : \mathcal{K} \to \mathcal{A}$98assigning each leaf to its area. Seven leaves are additionally declared children99of another leaf (for instance \textit{llm} $\prec$ \textit{foundation\_models},100\textit{compilers} $\prec$ \textit{programming\_languages}); this partial order101$\prec$ is used only to break ties when a primary category is chosen. The102classifier of Section~\ref{sec:m-classification} assigns to each work a label set103$C(w) \subseteq \mathcal{K}$, possibly empty, and, when $C(w) \neq \emptyset$, a104primary category $\kappa^{\ast}(w) \in C(w)$. Multi-label counting and primary105counting give different answers to ``how many works are in category $k$'', and106both are reported: for a set of works $S$,107\begin{equation}108  N_k^{\mathrm{ml}}(S) = \bigl|\{ w \in S : k \in C(w) \}\bigr|, \qquad109  N_k^{\mathrm{pr}}(S) = \bigl|\{ w \in S : \kappa^{\ast}(w) = k \}\bigr| ,110\end{equation}111so that $\sum_k N_k^{\mathrm{pr}}(S) \le |S|$ with equality when every work is112classified, whereas $\sum_k N_k^{\mathrm{ml}}(S)$ exceeds $|S|$ by the number of113secondary labels. Flows between categories (Section~\ref{sec:m-networks}) and114the emerging-topic panel (Section~\ref{sec:m-emerging}) use the primary label;115co-classification statistics use the full label set.116117The eligible corpus $\mathcal{W} \subseteq \mathcal{W}_0$ is the set of records118passing the predicate $E(w)$ of Section~\ref{sec:m-eligibility}. For a month $t$119and a category $k$, the elementary counts are120\begin{equation}121  N_t = \bigl|\{ w \in \mathcal{W}^{\mathrm{m}} : m(w) = t \}\bigr|, \qquad122  N_{k,t} = \bigl|\{ w \in \mathcal{W}^{\mathrm{m}} : m(w) = t,\; \kappa^{\ast}(w) = k \}\bigr|,123  \qquad s_{k,t} = N_{k,t}/N_t .124  \label{eq:counts}125\end{equation}126Every estimand of Parts VIII and IX is a functional of these counts, of the127citation matrix of Section~\ref{sec:m-citations}, of the authorship lists, or of128the embedding vectors of Section~\ref{sec:m-semantic}. The corpus is finite and129fully enumerated, so the descriptive quantities are population quantities rather130than sample estimates; the inferential devices of Sections~\ref{sec:m-structural}131and~\ref{sec:m-emerging} address a different kind of uncertainty, namely whether132an observed temporal pattern is distinguishable from the ordinary fluctuations133of the series, and whether a predictor would have worked out of time.134135\subsection{Storage and computation}136137The pipeline keeps the raw snapshots immutable (per-file SHA-256 ledgers,138Section~\ref{sec:m-uncertainty}) and materialises all derived tables as Parquet139files queried through DuckDB \citep{raasveldt2019duckdb}; the linkage,140deduplication, eligibility, counting and citation-window steps are SQL141statements executed inside one database file, which makes every table in this142part a deterministic function of the raw inputs and of the script that produced143it. Python is used where SQL is inconvenient: the regular-expression classifier,144the structural-change toolkit, the embedding and clustering steps, and the145detector. The slim table of all OpenAlex works (\LinkSlimTotal{} rows: identifier,146DOI, year, type, primary topic hierarchy, citation count) is kept so that the147field of a cited work outside computer science can be resolved148(Section~\ref{sec:m-citgraph}); this is decision D2 of the plan.149150\section{Record linkage, deduplication and eligibility}151\label{sec:m-linkage}152153The four sources describe overlapping but differently delimited populations:154OpenAlex is the backbone, DBLP defines what counts as a computer-science venue,155arXiv contributes preprints and their categories, and the ACL Anthology serves as156a coverage check for natural-language processing. Combining them is a record157linkage problem in the classical sense of \citet{fellegi1969linkage}: two158records from different files must be declared the same work or not, on the159basis of comparison vectors computed from their fields. The pipeline uses a160deterministic cascade rather than a probabilistic model, because the dominant161comparison fields (DOI and arXiv identifier) are persistent identifiers whose162agreement is near-conclusive, and because a probabilistic model would require163labelled training pairs that the project does not possess before the human164checkpoint H-1. The cost of this choice is that the precision of the residual165title-based step must be estimated from a reviewed sample rather than derived166from the model; the design of that estimate is given in167Section~\ref{sec:m-linkprecision}.168169\subsection{Normalised keys and the linkage cascade}170\label{sec:m-cascade}171172For each source the script \texttt{ingestion/link\_sources.py} builds a key173table. A DOI is lower-cased. An arXiv identifier is lower-cased and stripped of174its version suffix (\texttt{v[0-9]+\$}); for DBLP records, which do not carry an175arXiv field, the identifier is extracted from the electronic-edition URLs by the176pattern \texttt{arxiv.org/abs/([\^{} ]+)}. A title is normalised by the map177\begin{equation}178  \eta(\text{title}) \;=\; \mathrm{delete}_{\,\neg[a\text{--}z\,0\text{--}9]}\bigl(\mathrm{lower}(\text{title})\bigr),179  \label{eq:ntitle}180\end{equation}181which lower-cases and deletes every character outside $[a$--$z0$--$9]$, so that182punctuation, whitespace, case and diacritics (which do not survive the ASCII183filter) no longer separate otherwise identical titles. The normalised title is184used only for records whose original title has at least 25 characters, a185threshold that removes the many short generic titles (``Introduction'',186``Editorial'', ``Preface'') for which equality of $\eta$ carries no evidence.187188DBLP records are restricted to the years 2018--2026 and to the record types189\textit{article}, \textit{inproceedings}, \textit{incollection}, \textit{book},190\textit{phdthesis} and \textit{data}. The DBLP--OpenAlex cascade is then191\begin{enumerate}192  \item \textbf{DOI}: join on equal lower-cased DOI; every matching pair is kept193        (a DBLP key may match several OpenAlex records sharing a DOI, and194        conversely; the many-to-many structure is resolved at the195        deduplication stage, not here);196  \item \textbf{arXiv}: among records unmatched on both sides, join on equal197        normalised arXiv identifier;198  \item \textbf{title--year}: among records still unmatched on both sides,199        restrict each side to normalised titles that are \emph{unique} within200        that side, join on equal $\eta$, and keep the pair if the years differ201        by at most one.202\end{enumerate}203The uniqueness restriction in step 3 is the blocking device: it turns the join204into a one-to-one map and prevents a frequent title from generating a clique of205spurious pairs. The price is recall, since a genuine pair whose title appears206twice on either side (a journal version and a workshop version with the same207title, for instance) cannot be linked at this step; such pairs are usually caught208by the DOI step or by the preprint merge of Section~\ref{sec:m-dedup}. The209arXiv--OpenAlex cascade is analogous (arXiv identifier, then DOI, then unique210normalised title with a year tolerance of two, because the arXiv creation year211and the OpenAlex publication year of the version of record can legitimately212differ by more than one). The ACL--OpenAlex cascade uses DOI, then the ACL213identifier parsed from OpenAlex landing-page URLs of the form214\texttt{aclanthology.org/<id>}, then unique normalised title with a year215tolerance of one. Each link carries its method label, which is the stratification216variable of the precision sample.217218The counts of the first run are stored in \texttt{data/metadata/linkage\_report.json}219and reproduced in Part III; here it suffices to note the shape of the result.220Of the \LinkDblpTwoZeroOneEightTwoZeroTwoSix{} DBLP records in window,221\LinkDblpWithDoi{} carry a DOI, \LinkLinkDblpOaDoi{} are linked by DOI and222\LinkLinkDblpOaTitleYear{} by title and year, for \LinkDblpLinkedDistinct{}223distinct DBLP keys linked and \LinkDblpUnlinked{} unlinked. No DBLP record was224linked through the arXiv step (\LinkDblpWithArxiv{} DBLP keys with a parsable225arXiv identifier), a result consistent with DBLP recording arXiv e-prints226through their DataCite DOIs (prefix 10.48550), which the DOI step captures,227rather than through \texttt{arxiv.org/abs} URLs; the cause is to be confirmed228in the audit of Part III\@. The arXiv--OpenAlex cascade links \LinkArxivLinkedDistinct{} of the229\LinkArxivCreatedTwoZeroOneEightTwoZeroTwoSix{} arXiv \texttt{cs} records created230in window, almost all of them (\LinkLinkArxivOaArxivId{}) by identifier. The231\LinkDblpUnlinkedWithDoiInSlim{} unlinked DBLP records whose DOI does exist in the232slim table of all OpenAlex works are precisely the records that OpenAlex does233not label with any Computer Science topic; they motivate the second snapshot234pass, in which these identifiers (\LinkNeededOaIdsSecondPassDblpDoi{} from DBLP235and \LinkNeededOaIdsSecondPassArxivDoi{} from arXiv) are fetched in full and the236linkage is rerun with the union of both passes. The corpus is therefore not the237set of works that OpenAlex calls computer science; it is the union of that set238with what DBLP and arXiv call computer science, which is the sense in which the239mandate's requirement to ``cover the complete breadth of computer science''240rather than only the OpenAlex topic model is operationalised.241242\subsection{Preprint--publication deduplication}243\label{sec:m-dedup}244245A work that exists as an arXiv preprint and as a published version is two246OpenAlex records whenever OpenAlex has not merged them. Counting both would247double-count exactly the kind of work (AI preprints) whose growth is at issue248(CLAUDE.md §6.2). The script \texttt{systematic\_review/define\_corpus.py}249identifies such pairs within $\mathcal{W}_0$ by a title rule:250\begin{equation}251  (p, b) \text{ is a candidate pair} \iff252  \eta(p) = \eta(b),\;\; |y(p) - y(b)| \le 2,\;\;253  p \in \mathcal{P},\;\; b \notin \mathcal{P},\;\; |\text{title}| \ge 25,254  \label{eq:duppair}255\end{equation}256where $\mathcal{P} = \{ w : \tau(w) = \text{preprint} \text{ or } \text{DOI}(w)257\text{ starts with } \text{10.48550/arxiv} \}$ is the preprint-like set. A258preprint may match several published records and conversely; the rule keeps,259for each published record, the earliest-dated preprint and, for each preprint,260the earliest-dated published record, and discards any pair that is not the261first in both orderings. The surviving pairs define the map $\pi$ of262equation~\eqref{eq:first-date}: the published record $b$ receives263$\pi(b) = p$, $\text{preprint\_date}(b) = d_{\mathrm{pub}}(p)$ and the earlier of264the two dates as its first date; the preprint $p$ receives the flag265\textit{e5\_duplicate} and leaves the eligible corpus. The version relationship266is therefore kept on the surviving node, as the plan requires, but the match is267by exact normalised title only. Two limitations follow. A preprint whose title268changed between versions is not merged, and the pair survives as two works; a269preprint and an unrelated published paper with an identical normalised title270within two years are wrongly merged. The second error is rare for titles of at271least 25 characters; the first is the more consequential one and biases the272preprint share upward, which is the conservative direction for hypothesis H7.273Deduplication across the OpenAlex--DBLP boundary is not needed because DBLP274records are never counted as works: a DBLP record either links to an OpenAlex275record, in which case the OpenAlex record carries the flag \textit{in\_dblp}, or276it does not, in which case it is counted in the separate DBLP-only table used277for coverage assessment.278279\subsection{Eligibility predicate}280\label{sec:m-eligibility}281282Each record receives seven exclusion flags and two membership flags, computed283once and stored, so that every PRISMA count is a filter on the same table. With284$T_{\mathrm{keep}}$ = \{article, conference-paper, preprint, book-chapter, book,285dissertation, report, review, software-paper\}, $T_{\mathrm{hard}}$ = \{editorial,286erratum, retraction, peer-review, paratext, conference-abstract,287reference-entry, dataset, software, supplementary-materials, libguides, letter,288grant, standard\}, and $\mathcal{G}$ the list of generic deposit platforms289(Zenodo, Figshare, IRDB, LA Referencia, Dialnet, DOAJ-as-source, OSTI), the290flags are291\begin{align}292  e_1(w) &: d_{\mathrm{pub}}(w) \text{ missing or outside } [t_0, t_1];\\293  e_2(w) &: \tau(w) \notin T_{\mathrm{keep}} \;\wedge\; \neg\bigl(\text{in\_dblp}(w) \wedge \tau(w) \notin T_{\mathrm{hard}}\bigr);\\294  e_3(w) &: \text{is\_xpac}(w) \wedge \neg \text{in\_dblp}(w);\\295  e_4(w) &: \text{title empty};\\296  e_5(w) &: w \text{ is the preprint member of a pair of \eqref{eq:duppair}};\\297  e_6(w) &: \text{is\_retracted}(w);\\298  e_7(w) &: \text{source}(w) \in \mathcal{G} \wedge \neg\text{in\_dblp}(w) \wedge \text{no linked arXiv record}.299\end{align}300The membership flags encode the computer-science rule of the protocol:301\begin{align}302  \text{core}(w) &= \text{in\_dblp}(w) \;\vee\; \text{cs\_primary}(w) \;\vee\;303      \bigl(\text{cs\_any}(w) \wedge \text{arxiv\_cs\_primary}(w)\bigr),\\304  \text{penumbra}(w) &= \text{cs\_any}(w) \wedge \neg\,\text{core}(w),305\end{align}306where \text{cs\_primary} means that the primary OpenAlex topic belongs to field30717, \text{cs\_any} that some topic does, and \text{arxiv\_cs\_primary} that the308linked arXiv record's primary category starts with \texttt{cs.}. The eligibility309predicate is310\begin{equation}311  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).312  \label{eq:eligible}313\end{equation}314Three features of this predicate deserve comment. Retraction ($e_6$) is315\emph{not} part of $E$: retracted works stay in the mapping corpus with their316flag and are excluded only from impact-based selections317(Section~\ref{sec:m-kg}), as the protocol specifies (E6). The type rule $e_2$ is318asymmetric by amendment A-001: a DBLP-indexed record is kept whatever its319OpenAlex type unless that type is in the hard-exclusion list, because the320first run showed that OpenAlex typed more than a million DBLP conference papers321in ways the original list rejected; XPAC records (OpenAlex's expansion of322coverage from secondary sources) are likewise kept when DBLP-indexed and flagged323\textit{xpac\_kept\_dblp}. The deposit-platform rule $e_7$ was added by324amendment A-002 after Zenodo alone was found to contribute a six-figure number325of 2026 records typed as articles with almost no references; the protocol's326original E7 (penumbra) is now the membership flag rather than an exclusion, so327the reason code E7 in the protocol and the flag $e_7$ in the code denote328different things. This is a documentation discrepancy, not an analytical one,329but readers comparing the protocol and the PRISMA table should be aware of it.330The penumbra set---works with a secondary computer-science topic but neither331DBLP nor arXiv support---is counted separately and enters only sensitivity332analyses; the strict core used for the sensitivity analyses in the other333direction is $\{w : E(w) \wedge \text{in\_dblp}(w) \wedge \text{cs\_primary}(w)\}$.334335The PRISMA counts are computed both marginally (how many records carry each336flag) and sequentially (how many are removed by each flag after the previous337ones have been applied, in the order $e_1, e_2, e_3, e_4, e_5, e_7$), because338the flags overlap heavily and only the sequential version sums to the final339count. The order is a reporting convention; the final eligible set does not340depend on it.341342\subsection{Design of the linkage-precision estimate}343\label{sec:m-linkprecision}344345Precision of the deterministic cascade is estimated on a stratified sample of346500 DBLP--OpenAlex pairs drawn by \texttt{systematic\_review/linkage\_sample.py}:347250 pairs linked by DOI, 200 by title--year and 50 by arXiv identifier (the348last stratum is empty in the current run, for the reason given in349Section~\ref{sec:m-cascade}), selected by ordering each stratum on a hash of the350DBLP key salted with the seed 44 and taking the first records, which is a351reproducible simple random sample within stratum. For each pair the script352computes an automatic agreement vector: a string similarity between the two raw353titles (Python's \texttt{difflib} ratio, twice the number of matched characters354in the longest-matching-block alignment divided by the total length), the absolute year difference, and whether the last tokens of the two355first-author names coincide; a pair is \textit{auto\_ok} if the similarity is at356least 0.9, the years differ by at most one and the surnames agree whenever both357are present. Two of every five pairs are reserved for the principal358investigator (\textit{pi\_review}), whose verdicts constitute the human359checkpoint H-1. Let $n_s$ be the stratum sizes and $\hat p_s$ the share of pairs360judged correct in stratum $s$; the overall precision of the link table is the361weighted estimate362\begin{equation}363  \hat p \;=\; \sum_s \frac{L_s}{L}\,\hat p_s, \qquad364  \widehat{\mathrm{Var}}(\hat p) = \sum_s \Bigl(\frac{L_s}{L}\Bigr)^2 \frac{\hat p_s(1-\hat p_s)}{n_s},365  \label{eq:linkprec}366\end{equation}367where $L_s$ is the number of links of method $s$ in the full table and $L$368their sum, so that the title--year stratum, which is the only one where errors369are plausible, is weighted by its small share of the links. The estimate370\pending{linkage precision from the H-1 sample, data/metadata/linkage\_sample\_summary.json}371is reported in Part III once the checkpoint is signed; until then the automatic372agreement rate is the only available figure and is labelled as such. Recall is373not estimated by this design: a DBLP record without an OpenAlex counterpart may374be a true absence from OpenAlex or a missed link, and distinguishing the two375would require searching OpenAlex by title for a sample of unlinked DBLP records,376which is left to the robustness appendix.377378\section{Multi-label classification into the ontology}379\label{sec:m-classification}380381The ontology assigns works to forty categories by rules over four kinds of382metadata signals and one textual signal. A rule-based classifier was preferred383to a trained one for three reasons that are worth stating because they are384also its limitations. The rules are inspectable: every assignment can be traced385to the signals that produced it, and the mapping from OpenAlex topics, arXiv386categories and DBLP venues to categories is a document387(\texttt{taxonomy/ontology.yaml}, with provenance notes per category) that a388reader can contest line by line. The rules need no labelled training set, which389the project did not have before checkpoint H-2, and so cannot inherit the biases390of one. And the rules are cheap enough to run on every eligible work, whereas an391LLM rater at the quality used for validation would cost orders of magnitude392more. The corresponding limitations are that rules do not generalise beyond the393vocabulary they encode, that the weights are expert judgements rather than394estimates, and that validation against independent raters is therefore the only395evidence of their accuracy.396397\subsection{Signals and the score}398\label{sec:m-score}399400For a work $w$, let $T(w)$ be its set of OpenAlex topic identifiers (up to401three per work), $F(w)$ its set of subfield identifiers, $X(w)$ the set of arXiv402categories of its linked arXiv record (primary and cross-lists), $D(w)$ the set403of DBLP venue streams of its linked DBLP records, and $\text{title}(w)$,404$\text{abs}(w)$ its title and abstract. Each category $k$ specifies weight maps405$\omega^{\mathrm{T}}_k : T \to [0,1]$, $\omega^{\mathrm{F}}_k$,406$\omega^{\mathrm{X}}_k$, $\omega^{\mathrm{D}}_k$ over the respective407vocabularies (zero outside the listed entries), a list of keyword rules408$(r, \omega, \phi)$ consisting of a regular expression $r$, a weight $\omega$409and a field $\phi \in \{\text{title}, \text{abstract}, \text{both}\}$, and a list410of exclusion regular expressions $Z_k$. The score of $w$ for $k$ is411\begin{equation}412  s_k(w) \;=\; \sum_{\sigma \in \{\mathrm{T},\mathrm{F},\mathrm{X},\mathrm{D}\}}413      \min\Bigl\{1,\; \sum_{x \in \sigma(w)} \omega^{\sigma}_k(x)\Bigr\}414    \;+\; \min\Bigl\{1,\; \sum_{(r,\omega,\phi) \in R_k} \omega \cdot \mathbf{1}\bigl[r \text{ matches } \phi(w)\bigr]\Bigr\},415  \label{eq:score}416\end{equation}417where $\phi(w)$ is the title, the abstract, or their concatenation according to418the field of the rule. Each of the five signal types is thus capped at one419before the types are summed, so $s_k(w) \in [0, 5]$, and the assignment rule is420\begin{equation}421  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),422  \qquad \theta = 1 .423  \label{eq:assign}424\end{equation}425The cap is what gives the weights their meaning. A single signal with weight426one (a topic that \emph{is} the category, a venue that publishes nothing else, a427keyword that names the object of study) suffices on its own; a signal with428weight below one is a partial indication that must be corroborated by a signal429of another type, because repetitions of the same type cannot push the capped sum430above one. The ontology uses this device deliberately: the six AI categories431that the OpenAlex topic model does not separate (large language models,432foundation models, multimodal AI, generative AI, agents, AI safety) rely on433keyword rules of weight one that fire on the name of the object, while their434topic and venue signals are fractional. The exclusion list is a veto applied435after the threshold: a category that would otherwise be assigned is removed if436any exclusion pattern matches the title or abstract (for instance a437cryptocurrency pattern vetoing applied cryptography). The veto is not a negative438weight; it cannot be outvoted.439440One discrepancy between the ontology document and the implementation must be441recorded. The notes of the \texttt{assignment\_rule} block state that the442classifier takes the \emph{maximum} over matched topics before capping, whereas443\texttt{taxonomy/classify.py} takes the \emph{sum} and then caps, as444equation~\eqref{eq:score} states. The two agree whenever at most one listed445topic matches or the matched weights already sum to at least one; they differ446when two fractional topics of the same category co-occur, in which case the447implemented rule is the more permissive. The unit tests in448\texttt{tests/test\_classify\_rules.py} fix the implemented behaviour (a topic449listed three times contributes its weight once, because the topic set is450deduplicated, and a 0.6 topic plus a 0.4 arXiv category reach exactly 1.0). The451manuscript describes the implemented rule.452453\subsection{Primary category}454455When $C(w) \neq \emptyset$ the primary category is456\begin{equation}457  \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)458\end{equation}459in lexicographic order: the highest score wins; among equal scores a category460that is the declared parent of another assigned category loses to its child461(so that a work scoring equally on \textit{llm} and \textit{foundation\_models}462is primarily an LLM paper); among remaining ties the lower ontology number463wins. The last rule is arbitrary and is stated so that the reader can see that464it is. The number of assigned categories $|C(w)|$ and the primary score are465stored with every work; works with $C(w) = \emptyset$ (eligible works none of466whose signals reach the threshold) are counted and characterised in Part IX, and467their share is one of the quality indicators of the classification. The468classifier is run on the eligible corpus and on the penumbra, so that469sensitivity analyses on the wider set do not require a second run.470471\subsection{Validation design and metrics}472\label{sec:m-validation}473474The rules are validated against two independent LLM raters on a stratified475sample (\texttt{taxonomy/VALIDATION.md}, \texttt{taxonomy/validate\_sample.py}):476fifty eligible works with an abstract per rule-assigned primary category (forty477strata) plus two hundred works with no category, drawn by ordering each stratum478on a salted hash with seed 44; two hundred of the resulting works are reserved479for the principal investigator (checkpoint H-2). Each rater receives the forty480category definitions, and for each work the title, abstract, venue and year,481and returns under a JSON schema a label set of at most five categories, a482primary category or null, a confidence and a short rationale. The raters never483see the rule-based assignment, so there is no leakage from the rules to the484reference labels, and the rule revision policy (a category with consensus485$F_1 < 0.60$ triggers a mapping revision, logged as an amendment, and a re-run)486can be applied without re-rating. The two raters are different models of the487same family (\texttt{claude-haiku-5-5}, \texttt{claude-sonnet-5-5}); their488agreement therefore does not measure the agreement that two human experts would489reach, and the 200-work human subsample is the only anchor for that.490491With $\hat C(w)$ the rule label set, $C^{r}(w)$ the label set of rater $r$ and492$C^{\cap}(w) = C^{A}(w) \cap C^{B}(w)$ the consensus set, the per-category493confusion counts against a reference $C^{\mathrm{ref}}$ are494$\mathrm{TP}_k = |\{w : k \in \hat C(w) \wedge k \in C^{\mathrm{ref}}(w)\}|$,495$\mathrm{FP}_k = |\{w : k \in \hat C(w) \wedge k \notin C^{\mathrm{ref}}(w)\}|$,496$\mathrm{FN}_k = |\{w : k \notin \hat C(w) \wedge k \in C^{\mathrm{ref}}(w)\}|$,497with precision $P_k = \mathrm{TP}_k/(\mathrm{TP}_k+\mathrm{FP}_k)$, recall498$R_k = \mathrm{TP}_k/(\mathrm{TP}_k+\mathrm{FN}_k)$ and499$F_{1,k} = 2P_kR_k/(P_k+R_k)$, the standard label-wise decomposition of500multi-label evaluation \citep{zhang2014multilabel}. Micro-averages pool the501counts over categories before forming the ratios; the macro-$F_1$ is the502unweighted mean of $F_{1,k}$ over categories with at least one positive or503predicted label. Because the sample is stratified by rule-assigned primary504category, the per-category precision is estimated on roughly equal support for505every category, whereas recall is estimated only among works that the rules506placed somewhere; a category that the rules systematically miss (true members507scattered among other strata or among the unassigned) will show inflated recall508in this design. The 200 unassigned works partly address this, but a proper509recall estimate would require sampling from the whole corpus with weights, and510the per-category recall figures should be read with that caveat.511512Agreement on the primary category is measured by Cohen's $\kappa$513\citep{cohen1960kappa},514\begin{equation}515  \kappa \;=\; \frac{p_o - p_e}{1 - p_e}, \qquad516  p_o = \frac{1}{n}\sum_w \mathbf{1}[\kappa^{A}(w) = \kappa^{B}(w)], \qquad517  p_e = \sum_{k \in \mathcal{K} \cup \{\varnothing\}} \frac{n^{A}_k}{n}\,\frac{n^{B}_k}{n},518\end{equation}519where ``no category'' is treated as a forty-first label and $n^{r}_k$ counts520the works to which rater $r$ assigned primary $k$; $\kappa$ is computed between521the two raters and between the rules and each rater. Agreement on the label522sets is measured by the mean Jaccard index523$\bar J = n^{-1}\sum_w |C^{A}(w) \cap C^{B}(w)| / |C^{A}(w) \cup C^{B}(w)|$524(with the convention $0/0 = 0$), and by Krippendorff's $\alpha$ with the525MASI distance of \citet{passonneau2006masi} between the two raters' label526sets, in its interval form ($\alpha = 1 - D_o/D_e$ with squared MASI527distances, $D_o$ the mean observed distance over works and $D_e$ the mean528distance over all pairs of label sets); the derivation is in Appendix~C. A work is exported as a disagreement for human review when529the rules, rater~A and rater~B have no category in common although at least530one of them assigned one.531532\subsection{Known failure modes}533534The design makes some errors predictable, and they are listed here so that the535results of the validation can be read against expectations rather than as536surprises. Keyword rules on abstracts fire on mentions as well as on537contributions: a systems paper that evaluates its scheduler on a large language538model workload matches the LLM keyword and, since that keyword alone reaches539the threshold, acquires the \textit{llm} label; the exclusion lists remove the540most frequent such cases but cannot enumerate them. Venue signals are coarse:541general machine-learning venues carry fractional weights for several AI542categories at once, so a work with no abstract and a generic title can be543assigned to a parent-level category on venue evidence alone, or to none.544OpenAlex topics are themselves the output of a classifier with documented545error, and a work whose topics are wrong inherits that error with weight; the546protocol lists this among the limitations declared before analysis.547Multi-label assignment with a cap of one per type and a threshold of one tends548to over-assign categories to long abstracts that mention many objects, which549inflates $|C(w)|$ in the post period, when abstracts increasingly cite models550and benchmarks by name; the co-classification statistics of551Section~\ref{sec:m-networks} are affected by this in a direction that would552mimic convergence (hypothesis H4) and must be read together with the primary-label553flow statistics, which are not. Finally, works without an abstract (a known554share of the corpus) are classified from the title and the metadata only and555have lower recall for the keyword-dependent categories; the share of such556works is reported by year because it is not constant.557558\section{Bibliometric indicators}559\label{sec:m-bibliometrics}560561The indicators of this section are the estimands of research questions RQ1,562RQ3 and RQ6. They are standard in the scientometric literature, and the563definitions follow the review of \citet{waltman2016review} where a choice had564to be made; what is specific to this study is the citation-window discipline565imposed by the eight-year span of the corpus and the explicit treatment of the566two counting conventions. The scripts are \texttt{bibliometrics/01\_volume\_series.py},567\texttt{02\_collaboration.py} and \texttt{03\_citation\_impact.py}.568569\subsection{Volume, composition and growth}570571The monthly count $N_t$ and the category counts $N_{k,t}$ of572equation~\eqref{eq:counts} are tabulated by first month, period, date precision,573type and source membership (DBLP-indexed, OpenAlex-primary, arXiv-linked), with574the numbers of works having an abstract, having at least one resolvable575reference, and being open access; the annual table adds the mean number of576authors, references and countries per work. Composition is the share577$s_{k,t}$; its annual counterpart uses the primary label on all eligible works.578Growth between two dates separated by $\Delta$ years is summarised by the579compound annual growth rate580\begin{equation}581  \mathrm{CAGR}(t_a, t_b) \;=\; \Bigl( \frac{N_{t_b}}{N_{t_a}} \Bigr)^{1/\Delta} - 1,582  \qquad \Delta = (t_b - t_a)\ \text{in years},583  \label{eq:cagr}584\end{equation}585applied to annual totals and to annual category totals; it is a descriptive586summary of two end points and says nothing about the path between them, which587is why the structural-change analysis of Section~\ref{sec:m-structural} works588on the full monthly series instead. The CAGR is computed at table-making time589from the annual counts rather than by a dedicated script; the plan lists it590among the Phase-4 indicators and it is reported for complete years only, since5912026 is right-censored (Section~\ref{sec:m-truncation}).592593\subsection{Fixed citation windows}594\label{sec:m-citations}595596OpenAlex provides, for each work, the number of citations received in each597calendar year (\texttt{counts\_by\_year}). Let $c_{w}(u)$ be the citations598received by $w$ in calendar year $u$ and $y(w)$ its publication year. The599fixed-window counts are600\begin{equation}601  c^{(12)}_w = \sum_{u \le y(w)+1} c_w(u), \qquad602  c^{(36)}_w = \sum_{u \le y(w)+2} c_w(u), \qquad603  c^{(48)}_w = \sum_{u \le y(w)+3} c_w(u),604  \label{eq:windows}605\end{equation}606so that $c^{(12)}$ counts citations in the publication year and the following607calendar year, $c^{(36)}$ in the publication year and the two following years,608and so on. The superscripts are the names used in the code and in the tables609and must be read as calendar-year windows rather than as exact month counts: a610work published in January and one published in December of the same year611receive windows that differ by eleven months in effective length. This612granularity is imposed by the data (OpenAlex does not provide citation dates613below the year) and is the same for the baseline and the post period, so it614blurs comparisons within a year but does not bias comparisons between years.615The window is the device that neutralises citation-age bias: comparing the616total citation count of a 2019 work with that of a 2025 work compares seven617years of exposure with one, whereas comparing $c^{(36)}$ compares equal618exposures. The cost is that the last window-length of the corpus cannot be619evaluated; $c^{(36)}$ is complete for publication years up to 2023 given a620snapshot taken late in 2026, and $c^{(12)}$ up to 2024. Tables flag the years621for which a window is incomplete, and the choice of window length follows the622evidence in \citet{wang2013window} that short windows rank works materially623differently from long ones in slow-moving fields, which is why two lengths are624reported rather than one.625626\subsection{Field normalisation}627628Raw citation counts differ across subfields and document types by factors that629have nothing to do with influence. The normalised citation score of a work is630its window count divided by the mean window count of its reference class631\citep{waltman2016review, waltman2019fieldnorm}:632\begin{equation}633  \mathrm{NCS}^{(h)}_w \;=\; \frac{c^{(h)}_w}{\bar c^{(h)}\bigl(y(w), \tau(w), f(w)\bigr)}, \qquad634  \bar c^{(h)}(y, \tau, f) = \frac{1}{|\mathcal{W}_{y,\tau,f}|}\sum_{v \in \mathcal{W}_{y,\tau,f}} c^{(h)}_v ,635  \label{eq:ncs}636\end{equation}637where $f(w)$ is the primary OpenAlex subfield of $w$ and $\mathcal{W}_{y,\tau,f}$638the set of eligible works sharing year, type and subfield. The reference class639is computed on the eligible corpus, not on all of OpenAlex, so the640normalisation is relative to computer science as delimited here: an NCS of 2641means twice the mean of comparable computer-science works, not twice the world642mean. The score is undefined when the class mean is zero (very small classes in643the most recent years) and is then left missing rather than set to zero.644Normalisation by the mean of a heavy-tailed distribution is sensitive to a few645very highly cited works in the class; the median-based alternatives discussed646by \citet{waltman2016review} are not used because the median of $c^{(36)}$ is647zero in many classes of this corpus, which would make them uninformative.648649OpenAlex's own field-weighted citation impact (FWCI) is kept as a secondary650indicator. Its documentation defines it as ``citations received divided by651citations expected for works of the same type, year, and subfield'', with a652world average of one \citep{openalex2026fwci}. It differs from653equation~\eqref{eq:ncs} in three respects: the expected count is computed over654all of OpenAlex rather than over this corpus; the citation count is the total655to date rather than a fixed window, so that FWCI values of recent works are656based on a short and unequal exposure; and the computation is OpenAlex's,657recomputed nightly, so that the value depends on the snapshot date. For these658reasons FWCI is reported for comparison and never used to select works.659660\subsection{Inequality and concentration}661662Citation inequality within a publication year is measured by the Gini663coefficient of $c^{(36)}$ among the $n$ eligible works of that year. With the664works sorted so that $c_{(1)} \le c_{(2)} \le \dots \le c_{(n)}$, the estimator665implemented in SQL is the rank form666\begin{equation}667  G \;=\; \frac{2\sum_{i=1}^{n} i\, c_{(i)}}{n \sum_{i=1}^{n} c_{(i)}} - \frac{n+1}{n},668  \label{eq:gini}669\end{equation}670which equals one minus twice the area under the Lorenz curve and lies in671$[0, 1 - 1/n]$; the coefficient is named after \citet{ceriani2012gini}'s672account of its origin. Uncited works (a large share within a three-year673window) contribute zero to the numerator and pull $G$ upward, so the share of674uncited works is reported next to it. The protocol (H5) refers to the Gini of67524-month citations; the implemented statistic uses the three-calendar-year676window $c^{(36)}$, which is complete for one more publication year than the677longer alternatives and less dominated by zeros than $c^{(12)}$. This is a678deviation from the protocol wording and is recorded as such.679680Venue concentration within a year is the Herfindahl--Hirschman index of the681distribution of works over sources,682\begin{equation}683  \mathrm{HHI}_y \;=\; \sum_{v} \sigma_{v,y}^2, \qquad684  \sigma_{v,y} = \frac{N_{v,y}}{\sum_{v'} N_{v',y}},685  \label{eq:hhi}686\end{equation}687where $N_{v,y}$ is the number of eligible works of year $y$ whose primary688source is $v$ \citep{hirschman1964paternity}; works without a source are689excluded from the denominator, and the number of distinct sources and the690largest single share are reported with the index. Because arXiv is a single691OpenAlex source, growth in preprints mechanically raises $\mathrm{HHI}_y$ even692when the journal and conference landscape becomes more dispersed; this is the693reason the protocol's H5 predicts a stable or falling HHI only ``because of694preprint growth'' with the preprint source treated separately, and the tables695report the index with and without the preprint type.696697\subsection{Collaboration, countries and institutions}698699Team size is summarised by the mean and median number of authors per work and700by the shares of single-author works and of works with at least five or ten701authors. Two counting conventions are used for countries and institutions,702because they answer different questions \citep{waltman2016review}. Under full703counting a work contributes one unit to every country among its authors'704affiliations; under fractional counting it contributes $1/|K(w)|$ to each of705its $|K(w)|$ distinct countries, so that the fractional totals sum to the706number of works with at least one country. The same pair of conventions is707applied to institutions, with the fraction taken over the distinct institutions708of the work. The international collaboration share of year $y$ is709\begin{equation}710  \mathrm{ICS}_y \;=\; \frac{|\{w : y(w)=y,\ |K(w)| \ge 2\}|}{|\{w : y(w)=y,\ |K(w)| \ge 1\}|},711\end{equation}712that is, among works with at least one resolved country, the share with authors713from two or more countries; works without affiliation data are excluded from714the denominator and their share is reported, because affiliation completeness715in OpenAlex varies by source and year and a change in completeness would716otherwise masquerade as a change in collaboration. The industry share is the717share of works with at least one affiliation of OpenAlex institution type718\textit{company} among works with at least one typed affiliation. Country-pair719and institution-level tables apply minimum-support thresholds (fifty joint720works for a country pair, two hundred works for an institution within a period)721that keep the released tables to the robustly estimated part of the722distribution; these thresholds are reporting choices and are stated in the723table notes.724725\subsection{Diversity indices}726\label{sec:m-diversity}727728Interdisciplinarity is measured on the distribution of a work's references, or729of a category's citations, over the categories of the ontology. Let730$p = (p_1, \dots, p_K)$ be such a distribution and $\delta_{ij} \in [0,1]$ a731dissimilarity between categories $i$ and $j$. The Rao--Stirling index732\citep{rao1982diversity, stirling2007diversity}733\begin{equation}734  \Delta_{\mathrm{RS}}(p) \;=\; \sum_{i \ne j} p_i\, p_j\, \delta_{ij}735  \label{eq:rao-stirling}736\end{equation}737is the expected dissimilarity between two categories drawn at random from $p$;738it is zero when all mass sits on one category and increases with variety (the739number of categories present), balance (the evenness of $p$) and disparity (the740dissimilarity of the categories involved), the three components that741\citeauthor{stirling2007diversity} argues any diversity measure should respond742to. Its use in scientometrics follows \citet{rafols2010diversity}. Its known743weakness is that it saturates: for very even distributions over many744categories it approaches the mean dissimilarity and no longer discriminates745\citep{zhang2016diversity}. The Leinster--Cobbold family746\citep{leinster2012diversity} repairs this by defining, for a similarity matrix747$Z = (z_{ij})$ with $z_{ij} = 1 - \delta_{ij}$ and an order $q \ge 0$,748\begin{equation}749  {}^{q}D^{Z}(p) \;=\; \Bigl( \sum_{i : p_i > 0} p_i\, (Zp)_i^{\,q-1} \Bigr)^{1/(1-q)},750  \qquad (Zp)_i = \sum_j z_{ij}\, p_j ,751  \label{eq:leinster-cobbold}752\end{equation}753with the limit ${}^{1}D^{Z}(p) = \prod_i (Zp)_i^{-p_i}$ at $q = 1$. The quantity754$(Zp)_i$ is the ``ordinariness'' of category $i$ under $p$: how much of the755distribution is similar to $i$. The index is an effective number of756categories---it equals $K$ for the uniform distribution over $K$ mutually757dissimilar categories---and the order $q$ sets the weight given to rare758categories (large $q$ counts only the dominant ones). Following759\citet{zhang2016diversity} the manuscript reports $q = 2$, which has the760closed form ${}^{2}D^{Z}(p) = 1 / \sum_{i,j} p_i z_{ij} p_j = 1/(1 - \Delta_{\mathrm{RS}}(p))$761when $z_{ii} = 1$, so that the two families are monotone transforms of each762other at this order and differ only in scale and in their behaviour at the763saturation end. The dissimilarity $\delta_{ij}$ between categories is one764minus the cosine similarity of the category centroids of765Section~\ref{sec:m-semantic} in the baseline period, so that the disparity766component is estimated from the corpus rather than imposed. The current767pipeline computes the category flow matrices from which $p$ is formed768(Section~\ref{sec:m-networks}) and the centroid similarities, but the two769diversity indices are not yet produced by a script; they are defined here770because the protocol commits to them, and their values in Part IX are771The yearly Rao--Stirling and Leinster--Cobbold indices of the category mix,772with bootstrap intervals from multinomial resampling of works over categories773($B = 500$, seed 44), are computed by \texttt{bibliometrics/04\_diversity\_cagr.py}774and reported in Part~IX; the dissimilarity $d_{ij}$ is one minus the cosine775similarity of category centroids when embeddings are available and one minus776the co-classification Jaccard similarity otherwise.777until the computation is added and audited.778779\section{Citation and collaboration networks}780\label{sec:m-networks}781782\subsection{The citation graph and its boundary}783\label{sec:m-citgraph}784785Citation edges come from the OpenAlex \texttt{referenced\_works} lists, which786are verified by construction in the sense that each edge is an assertion of the787source database rather than an inference of this study. The script788\texttt{knowledge\_graph/01\_citation\_graph.py} splits the references of789eligible works into two edge sets:790\begin{align}791  \mathcal{E}_{\mathrm{int}} &= \{ (w, v) : w \in \mathcal{W},\ v \in \mathcal{W},\ v \in \mathrm{refs}(w) \},\\792  \mathcal{E}_{\mathrm{ext}} &= \{ (w, v) : w \in \mathcal{W},\ v \notin \mathcal{W},\ v \in \mathrm{refs}(w),\ v \in \text{slim table} \},793\end{align}794the internal edges forming the citation graph of computer science proper and795the external edges recording what the corpus cites outside itself, with the796cited work's publication year, type and primary OpenAlex field resolved from the797slim table of all works. References that resolve to no OpenAlex record are798counted (the declared reference count of each work is stored) but cannot be799typed. The yearly tables derived from these sets are the inflows by cited800field (how much of each citing year's references go to mathematics, medicine,801the social sciences, and so on), the distribution of citation age802$y(w) - y(v)$ by citing year, and the reference coverage (declared, internal,803external) by year. Coverage matters for every network statistic that follows:804if the share of resolvable references rises over time, as it does in OpenAlex805because recent works are better matched, then internal edge counts rise for806reasons unrelated to citation behaviour, and all flow statistics are therefore807expressed as shares of resolved edges within the citing year.808809\subsection{Category flow matrices}810811For each citing year $t$ the script \texttt{knowledge\_graph/02\_category\_flows.py}812forms the $K \times K$ matrix813\begin{equation}814  F_t[i, j] \;=\; \bigl|\{ (w, v) \in \mathcal{E}_{\mathrm{int}} : y(w) = t,\ \kappa^{\ast}(w) = i,\ \kappa^{\ast}(v) = j \}\bigr| ,815  \label{eq:flow}816\end{equation}817the number of citations made in year $t$ by works whose primary category is $i$818to works whose primary category is $j$, together with the row-normalised819shares $F_t[i,j] / \sum_{j'} F_t[i,j']$. Works without a primary category820contribute no edges to $F_t$; their references are retained in821$\mathcal{E}_{\mathrm{int}}$ but fall outside the matrix. Aggregating rows and822columns by area through $a(\cdot)$ gives the $8 \times 8$ area flow matrix, and823the cross-area share of citing area $\alpha$ in year $t$ is824\begin{equation}825  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]},826  \label{eq:cross-area}827\end{equation}828the fraction of an area's internal references that leave the area. This is the829statistic behind hypothesis H4. It is not a measure of interdisciplinarity in830the sense of Section~\ref{sec:m-diversity}, because it treats all other areas831as equally distant; it is a boundary-crossing rate, and its interpretation832depends on the stability of the boundaries, which the classifier fixes once833for all years. A co-classification matrix counts, for each year, the works834carrying both category $i$ and category $j$ in their full label set $C(w)$; it835is reported alongside the flows but, as noted in836Section~\ref{sec:m-classification}, it is sensitive to abstract length and837vocabulary in a way the primary-label flows are not.838839\subsection{Modularity of the yearly flow network}840841The degree to which citations stay within categories, or within areas, is842summarised by the modularity of the weighted directed graph with adjacency843$W = F_t$, evaluated at the fixed partition given by the categories themselves844(each category its own community) and at the coarser partition given by the845areas. The implemented statistic is846\begin{equation}847  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],848  \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},849  \label{eq:modularity}850\end{equation}851which is the directed generalisation by \citet{leicht2008directed} of the852Newman--Girvan modularity \citep{newman2004community}: the observed weight853within communities minus the weight expected if each citation were rewired at854random while preserving every node's out-strength and in-strength. Because the855partition is given rather than optimised, $Q$ is used here as a descriptive856index of assortativity by category, not as the objective of a community857detection algorithm; the resolution limit that affects optimised modularity858\citep{fortunato2007resolution, fortunato2010community} therefore does not859arise, but the index inherits the dependence of the flow matrix on the860classifier. Two values are reported per year, $Q_{\mathrm{cat}}$ with861$g_i = i$ and $Q_{\mathrm{area}}$ with $g_i = a(i)$, together with the self-share862$\operatorname{tr}(F_t)/m$, which is the uncorrected fraction of citations863staying within the citing category. Hypothesis H4 predicts a decrease in864$Q_{\mathrm{area}}$ in the post period. A fall in $Q$ can also arise if the865composition of citing works shifts toward categories that were always866boundary-crossing (large language models citing natural-language processing867and machine-learning theory), so Part IX reports $Q$ together with the868composition-adjusted cross-area shares obtained by fixing the row weights at869their baseline values.870871\subsection{Co-authorship, institution and country networks}872873The plan lists author, institution and country collaboration networks built874with \texttt{igraph}. The implemented collaboration layer is tabular rather than875graph-analytic: country pairs with at least fifty joint works per period876(edges of the country network, with their weights), institution counts by877period under full and fractional counting, and institution-type shares. The878country network is thus available as an edge list from which the figures of879Part VIII are drawn, and degree, strength and density can be computed from it;880author-level co-authorship networks are not constructed in the current881pipeline, because author disambiguation in OpenAlex is of uneven quality over882the period and an author graph of this size would be dominated by that noise.883This is a narrowing of the plan, recorded here; the country and institution884tables are the collaboration estimands actually reported.885886\section{Semantic mapping}887\label{sec:m-semantic}888889\subsection{Document embeddings}890891Each eligible work with an abstract is represented by a dense vector computed892by a scientific sentence-embedding model from the string893``$\text{title}$. $\text{abstract}[1{:}2000]$'' (the abstract truncated to8942,000 characters), tokenised to at most 256 word pieces, and L2-normalised, so895that the inner product of two vectors is their cosine similarity896(\texttt{embeddings/embed\_corpus.py}). The primary model is SPECTER2 base897\citep{singh2023scirepeval}, the successor of SPECTER898\citep{cohan2020specter}, a transformer trained with a citation-informed899triplet objective so that papers that cite one another are close in the900embedding space; this inductive bias is the appropriate one for mapping a901literature by its intellectual proximity rather than by lexical overlap. The902protocol requires a second embedding family for comparison; the benchmark903script evaluates SciNCL \citep{ostendorff2022scincl}, a general-purpose904BGE model and a MiniLM sentence-transformer \citep{reimers2019sbert} for905throughput and dimensionality on the same hardware, and the atlas script906accepts any of them through its model argument, so the comparison is a907re-run with a different tag. The embeddings are stored as float16 shards with908their work identifiers and a per-host manifest (model name, maximum sequence909length, device, timings), computed on several nodes of the cluster in910parallel; float16 storage changes cosine similarities by less than911$10^{-3}$, which is below any threshold used downstream.912913Three assumptions underlie everything built on these vectors. The abstract is914assumed to be a faithful summary of the work's content, which it is for most915research articles and is not for extended abstracts and some proceedings916papers. The embedding geometry is assumed stable across the period: a model917trained on literature up to its release date represents 2026 work in a space918shaped by earlier work, so genuinely new vocabulary is embedded by analogy to919what the model knows, and the novelty statistic below measures distance in920that space, not in some ideal space of ideas. And cosine similarity is assumed921to be a sufficient proxy for topical proximity; this is the standard922assumption of the field and is supported by the retrieval benchmarks on which923these models are evaluated, with the caveat that all such benchmarks are924dominated by pre-2023 literature.925926\subsection{Atlas: projection and clustering}927928The two-dimensional atlas and the cluster structure are computed on a uniform929random sample of 200,000 eligible works with embeddings (seed 44), because930density-based clustering of the full corpus in the native space is neither931computationally practical nor, given the noise level of abstracts, more932informative. UMAP \citep{mcinnes2018umap} with the cosine metric, 30 nearest933neighbours and a minimum distance of zero projects the sample to 50934dimensions; HDBSCAN \citep{campello2013hdbscan, mcinnes2017hdbscan} with a935minimum cluster size of 200 and a minimum sample count of 20 is run on the93650-dimensional projection; a second UMAP to two dimensions (minimum distance9370.1) is used for display only. The 50-dimensional intermediate step is what938makes density-based clustering workable on 768-dimensional normalised vectors,939whose pairwise distances concentrate; it is also a source of distortion, since940UMAP preserves local neighbourhoods and not global distances, so cluster941\emph{membership} is meaningful and the distances between clusters on the942two-dimensional map are not. HDBSCAN labels points in low-density regions as943noise ($-1$), and the noise share is reported with the cluster count. Each944cluster is described by the twelve title terms with the highest mean TF--IDF945weight (unigrams and bigrams, English stop words removed, minimum document946frequency five), by its modal primary category and that category's share,947and by the share of its members in the post period; these descriptors are948how clusters are related to the ontology, and the comparison of the two949partitions (bottom-up clusters against top-down categories) is one of the950checks on the ontology reported in Part IX.951952\subsection{Stability}953954Cluster stability is measured by a split-half design. Five times, the sample955is randomly permuted and divided into two halves; HDBSCAN (minimum cluster956size 100, since each half has half the points) is run separately on the two957halves of the \emph{same} 50-dimensional projection; a 5-nearest-neighbour958classifier trained on the first half's labels predicts labels for the second959half; and the adjusted Rand index \citep{hubert1985comparing}960\begin{equation}961  \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}}962                      {\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}}963\end{equation}964between the transferred labels and the second half's own labels is recorded965(here $n_{ij}$ is the contingency table of the two labellings and $a_i$, $b_j$966its margins). The mean of the five values is the reported stability. Two967caveats bound what this measures. The projection is fitted once on the full968sample, so the design tests the stability of the clustering conditional on the969projection and not the stability of UMAP itself, whose stochastic optimisation970is fixed by the seed; the protocol's phrase ``bootstrap ARI'' describes this971split-half procedure, which resamples without replacement. And the972nearest-neighbour transfer is itself a smoothing step: it maps noise points of973the first half to the majority label of their neighbours, which raises the974index relative to a direct comparison of two independent clusterings of the975same points.976977\subsection{Category centroids, drift and novelty}978\label{sec:m-novelty}979980In the native embedding space, the centroid of category $k$ in year $y$ is981the normalised mean vector982\begin{equation}983  \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\|},984\end{equation}985computed only for cells with at least 100 works, and the year-over-year drift986of a category is the cosine distance $1 - \mu_{k,y}^{\top}\mu_{k,y-1}$. Period987centroids average the yearly centroids over calendar years 2018--2022988(baseline) and 2023--2026 (post), and the inter-category cosine similarity989matrices of the two periods are the semantic counterpart of hypotheses H4 and990H5: convergence between two categories appears as an increase in the cosine991similarity of their centroids. The period boundary used here is the calendar992year, not the 30~November 2022 date of Section~\ref{sec:m-notation}; the993eleven months of 2022 that belong to the baseline are kept in the baseline994and December 2022 is attached to it rather than to the post period, a995deliberate simplification at the level of yearly centroids that moves a996single month across the boundary.997998The novelty of a work is its distance to the recent past of its own category:999\begin{equation}1000  \nu(w) \;=\; 1 - e_w^{\top}\,\bar\mu_{\kappa^{\ast}(w),\ m(w)-24\,:\,m(w)-1}, \qquad1001  \bar\mu_{k,\,a:b} = \frac{\sum_{t=a}^{b} \sum_{v : \kappa^{\ast}(v)=k,\ m(v)=t} e_v}{\bigl\|\,\cdot\,\bigr\|},1002  \label{eq:novelty}1003\end{equation}1004the cosine distance between the work's vector and the normalised sum of the1005vectors of all works of the same primary category whose first month lies in1006the 24 months strictly before the work's own month. A work in the first months1007of a category, with no trailing window, has no novelty value. The1008definition uses only information dated before the work, which is what allows1009it to serve as a signal in the out-of-time detector of1010Section~\ref{sec:m-emerging}; but the centroid is computed with the1011\emph{final} primary categories of the earlier works, assigned by rules fixed1012in 2026, so the category boundaries themselves are not out-of-time. This is a1013limitation shared by every category-conditional statistic in the paper and1014is discussed in Section~\ref{sec:m-emerging}. Novelty defined as distance to a1015category centroid rewards works that sit between categories as much as works1016that are new; the interpretation of high novelty as ``new'' rather than1017``interdisciplinary'' requires the clusters and the flow statistics as1018corroboration, and the literature on novelty indicators warns that1019citation-based and text-based novelty measures do not agree well1020\citep{uzzi2013atypical, wang2017novelty}.10211022\section{Structural change in monthly series}1023\label{sec:m-structural}10241025The question behind RQ2 and hypotheses H1 and H3 is whether the monthly1026series of computer-science output, in total and by category, changed level or1027slope around the reference date, and whether any such change stands out1028against the ordinary variability of the series. Four methods are applied to1029every series by \texttt{econometrics/run\_structural\_change.py}, using the1030pure functions of \texttt{econometrics/structural\_change.py} (unit-tested on a1031simulated series with a known break). None of them identifies a cause. An1032interrupted time series with a single pre-specified date answers ``did the1033series change at that date, net of trend and season?''; the placebo1034distribution answers ``is that date special?''; the multiple-break and1035changepoint methods answer ``where does the series change, if one does not1036specify a date?''; and the Bayesian online detector answers ``when would an1037observer following the series month by month have concluded that it had1038changed?''. The reference date is a historical marker, and the manuscript1039uses no causal vocabulary about it (CLAUDE.md §6.5).10401041\subsection{Series construction and truncation}1042\label{sec:m-truncation}10431044Each series is a vector of monthly counts $N_t$ on the month-precision1045subset, from February 2018 (the default start of the driver script, which1046drops one month and is immaterial) to the last complete month1047$t_{\mathrm{L}}$, by default June 2026, with sensitivity runs at March and1048August 2026. Category series $N_{k,t}$ use the multi-label count restricted to1049month-precision works, and a series is analysed only if it has at least 481050non-zero months and at least 500 works in total; smaller series yield1051unstable fits and are reported descriptively. All methods operate on1052$y_t = \log(N_t + 1)$, the shift making the transform defined for empty months1053and immaterial for counts in the hundreds or thousands.10541055Right-truncation is handled by truncation, not by correction. The plan1056proposed to correct recent months by the indexing-delay profile estimated from1057the creation dates; the implemented pipeline estimates that profile1058(\texttt{indexing\_lag.csv}: for each publication month, the median and 90th1059percentile of $d_{\mathrm{cr}}(w) - d_{\mathrm{pub}}(w)$ and the shares indexed1060within 90 and after 180 days) and reports it, but the structural-change runs1061simply stop the series at $t_{\mathrm{L}}$ and vary $t_{\mathrm{L}}$. The1062reason is that an inflation correction based on the lag profile of earlier1063years assumes that the profile is stationary, and the profile is itself1064affected by the events under study (OpenAlex's own ingestion changed over the1065period); a correction would import that assumption into every test. Truncating1066to the last month at which the lag profile indicates near-complete indexing1067loses a few months of data but introduces no model. Donut windows (dropping1068the months adjacent to the event) are not implemented; the alternative event1069dates of Section~\ref{sec:m-altdates} serve the related purpose of showing1070whether the estimated change is tied to a particular month.10711072\subsection{Interrupted time series with seasonality and HAC errors}1073\label{sec:m-its}10741075With $t = 0, 1, \dots, n-1$ indexing the months and $t_e$ the index of the1076event month, the segmented regression is1077\begin{equation}1078  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]1079           + \sum_{j=2}^{12} \gamma_j\, \mathbf{1}[\mathrm{month}(t) = j] + \varepsilon_t ,1080  \label{eq:its}1081\end{equation}1082the standard interrupted-time-series specification \citep{bernal2017its} with1083eleven month-of-year dummies (January as reference). The coefficient1084$\beta_2$ is the change in log level at the event, $\beta_3$ the change in1085monthly log slope, and $\beta_1$ the pre-event slope; since $y$ is a log count,1086$e^{\beta_2} - 1$ is the proportional level shift and $\beta_1$ and $\beta_3$1087are monthly growth rates. The event month is coded as the first full month1088after the reference date, December 2022 for the 30~November 2022 marker, and1089likewise for the alternative dates. Ordinary least squares estimates the1090coefficients; the covariance matrix is the heteroskedasticity- and1091autocorrelation-consistent estimator of \citet{newey1987hac} with a Bartlett1092kernel and bandwidth six months,1093\begin{equation}1094  \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},1095  \qquad \hat\Gamma_\ell = \sum_{t} \hat\varepsilon_t \hat\varepsilon_{t-\ell}\, x_t x_{t-\ell}^{\top},1096\end{equation}1097which makes the reported standard errors robust to serial correlation of the1098residuals up to half a year. The bandwidth is fixed rather than chosen by the1099data-dependent rule of \citet{andrews1991hac}; with roughly one hundred1100observations the difference is immaterial and a fixed choice is easier to1101preregister. The fitted values are back-transformed as $e^{\hat y_t} - 1$ for1102the figures. The specification's known weaknesses are those of any single-break1103segmented regression: it assumes the change is immediate and permanent, it1104attributes to $\beta_2$ any curvature of the pre-trend that a linear1105$\beta_1 t$ cannot absorb, and with a reference date placed near the centre of1106the sample it is well identified only because the post period is long. The1107placebo analysis is the main guard against the second weakness.11081109\subsection{Placebo distribution}1110\label{sec:m-placebo}11111112The ITS of equation~\eqref{eq:its} is re-estimated with the event placed at1113every month $t'$ from the 25th month of the series to the 12th month before1114its end, yielding the $t$-statistics $\{ t^{(2)}_{t'} \}$ and $\{ t^{(3)}_{t'} \}$1115of the level and slope changes as a function of the hypothetical event date.1116The placebo $p$-value of the true event is its rank among these:1117\begin{equation}1118  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],1119  \label{eq:placebo}1120\end{equation}1121and likewise for $\beta_3$. The set $\mathcal{T}'$ contains the true event, so1122the smallest attainable value is $1/|\mathcal{T}'|$. This statistic is the1123``placebo in time'' diagnostic recommended for interrupted time series1124\citep{bernal2018controls}: if a level shift of comparable $t$-statistic is1125found at a quarter of all candidate dates, a conventional $p$-value from the1126HAC standard error of $\beta_2$ overstates the evidence, because the series1127has enough curvature and persistence that any date looks like a break. The1128value is not a $p$-value under a null hypothesis in the usual sense (the1129candidate dates are not exchangeable draws from a null distribution, and the1130regressions share the same data), and the manuscript calls it a placebo rank.1131Two implementation details depart from the plan's wording. The plan speaks of1132placebo breaks ``at every month of the baseline''; the implementation ranges1133over the baseline \emph{and} the post period, so that a change in 2023 or11342024 that is larger than the one at the reference date lowers the rank of the1135reference date, which is the conservative direction for hypothesis H1 and is1136why the wider range was kept. And the minimum of 24 pre-months and 121137post-months means that candidate dates near the ends of the series, where the1138level-change coefficient is poorly identified, are excluded from the1139comparison.11401141\subsection{Multiple breaks: dynamic programming with information criteria}1142\label{sec:m-bp}11431144The Bai--Perron framework \citep{bai1998breaks, bai2003computation} estimates1145$m$ unknown break dates $\tau_1 < \dots < \tau_m$ as the global minimiser of1146the sum of squared residuals of a segment-wise regression. The implementation1147is the pure dynamic programme of \citet{bai2003computation} on the log series1148with a segment-wise linear trend: for a segment $[i, j)$ of at least $h$1149observations,1150\begin{equation}1151  S(i, j) \;=\; \min_{a, b}\ \sum_{t=i}^{j-1} \bigl( y_t - a - b\,t \bigr)^2,1152\end{equation}1153and the optimal partition of the first $j$ observations into $m+1$ segments1154is obtained recursively,1155\begin{equation}1156  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),1157  \label{eq:bp-dp}1158\end{equation}1159with the break positions recovered by back-tracking. The minimum segment1160length is $h = \max\{8, \lfloor 0.15\, n \rfloor\}$ months, a trimming of 15 per1161cent that is the usual choice in this literature; it forbids breaks in the1162first and last $h$ months, which for the default window of 101 months1163($h = 15$) means that no break can be placed after April 2025, and it also1164forbids two breaks closer than $h$ months. The number of breaks, up to three, is selected by two1165criteria computed on the global minima $\mathrm{SSR}_m = C_m(n)$,1166\begin{align}1167  \mathrm{BIC}(m) &= n \log\bigl(\mathrm{SSR}_m / n\bigr) + p_m \log n, \\1168  \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,1169\end{align}1170with $p_m = 2(m+1) + m$ parameters (an intercept and a slope per segment plus1171the $m$ break dates). The BIC is Schwarz's criterion \citep{schwarz1978bic};1172the LWZ criterion of \citet{liu1997segmented}, in the form used by1173\citet{bai2003computation}, penalises additional breaks more heavily and is1174known to select fewer spurious breaks when the errors are serially correlated,1175which they are in these series (the monthly residual autocorrelation is what1176the HAC errors of the ITS correct for). Both selections are reported. The1177sequential sup-$F$ tests of \citeauthor{bai1998breaks} are not implemented; in1178their absence the break dates carry no $p$-value, and their stability is1179assessed instead through the agreement of the two criteria, the sensitivity to1180$t_{\mathrm{L}}$, and the agreement with the two methods below. The regression1181in each segment contains no seasonal terms, so a seasonal pattern can only be1182absorbed by the error; with a trimming of eight or more months per segment1183this cannot create a break by itself but it inflates $\mathrm{SSR}_m$ uniformly.11841185\subsection{PELT}11861187The pruned exact linear time algorithm \citep{killick2012pelt} finds the1188changepoint set $\mathcal{C}$ minimising a penalised cost,1189\begin{equation}1190  \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}| ,1191  \qquad \lambda = 2\, \widehat{\mathrm{Var}}(y)\, \log n ,1192  \label{eq:pelt}1193\end{equation}1194with the $\ell_2$ cost (piecewise constant mean) and a minimum segment length1195of six months, as implemented in the \texttt{ruptures} library1196\citep{truong2020ruptures}. The penalty is of the Schwarz type studied by1197\citet{yao1988schwarz} for the piecewise-constant Gaussian model, scaled by1198the sample variance of the series; it is a conservative choice in a trending1199series, because a piecewise-constant mean must spend changepoints to follow a1200trend, so the reported PELT dates should be read as the points where the level1201moves most, not as the Bai--Perron break dates of a trend model. The two1202methods are complementary for that reason: a date flagged by both is a change1203in level that is not explained by a change in slope, and a date flagged only1204by the trend model is a kink.12051206\subsection{Bayesian online changepoint detection}1207\label{sec:m-bocpd}12081209The online detector of \citet{adams2007bocpd} maintains, after each1210observation, a posterior distribution over the \emph{run length} $r_t$, the1211number of months since the last changepoint. Let $H$ be the constant hazard1212(the prior probability that a change occurs at any month, here $1/60$, a prior1213mean run length of five years), and let the observations within a run be1214modelled as $y \sim \mathcal{N}(\mu, \sigma^2)$ with the conjugate1215Normal--Inverse-Gamma prior1216$\mu \mid \sigma^2 \sim \mathcal{N}(\mu_0, \sigma^2/\kappa_0)$,1217$\sigma^2 \sim \mathrm{IG}(\alpha_0, \beta_0)$. After $r$ observations1218$y_1, \dots, y_r$ of the current run the hyperparameters update as1219\begin{equation}1220  \kappa_r = \kappa_0 + r, \quad1221  \mu_r = \frac{\kappa_0 \mu_0 + \sum_{i \le r} y_i}{\kappa_r}, \quad1222  \alpha_r = \alpha_0 + \frac{r}{2}, \quad1223  \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},1224\end{equation}1225which the code computes recursively, one observation at a time, as1226$\mu' = (\kappa\mu + y)/(\kappa+1)$, $\kappa' = \kappa + 1$, $\alpha' = \alpha + \tfrac12$,1227$\beta' = \beta + \kappa (y - \mu)^2 / (2(\kappa+1))$. The predictive1228distribution of the next observation given a run of length $r$ is the1229Student-$t$1230\begin{equation}1231  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),1232  \label{eq:predictive}1233\end{equation}1234and the run-length recursion is1235\begin{align}1236  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}\\1237  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}1238\end{align}1239normalised at each step to give the posterior $R_{t+1}(r) = P(r_{t+1} = r \mid y_{1:t+1})$.1240The hyperparameters are initialised from the first six months of the series1241($\mu_0$ their mean, $\beta_0$ their variance, $\kappa_0 = 1$, $\alpha_0 = 1$),1242an empirical-Bayes choice that uses the start of the series twice and whose1243effect vanishes after a few dozen observations. Two detection statistics are1244derived. Because a constant hazard places mass $H$ on $r = 0$ at every step by1245construction, the probability of a change ``at $t$'' is uninformative on its1246own; the code reports instead $P(r_t \le 3 \mid y_{1:t})$, the posterior1247probability that a change occurred within the last four months, and the1248maximum of this quantity over December 2022 to March 2023 is the statistic1249reported for the reference date. The second statistic is the sequence of1250maximum-a-posteriori run lengths $\hat r_t = \arg\max_r R_t(r)$; a1251\emph{reset} is declared at month $t$ when $\hat r_t \le 2$ after1252$\hat r_{t-1} > 12$, that is, when the most probable explanation of the data1253switches from a run of more than a year to a run that has just begun, and the1254list of reset months is the online detector's set of changepoints. The1255exact offline analogue \citep{fearnhead2006exact} would give the smoothed1256rather than the filtered posterior; the filtered version is used because the1257question it answers---when would a contemporaneous observer have detected the1258change---is the one relevant to the lead-time evaluation of1259Section~\ref{sec:m-emerging}.12601261\subsection{Alternative event dates}1262\label{sec:m-altdates}12631264The ITS is re-estimated for four alternative markers (June 2020 for GPT-3,1265May 2022 for DALL$\cdot$E~2, April 2023 for GPT-4, October 2024 for o1), each1266coded as the first full month after the public release, and an event is1267skipped when fewer than twelve months precede or follow it in the series. The1268exercise is not a horse race among causes. Its purpose is to show whether the1269estimated level and slope changes are specific to the November 2022 marker or1270whether the series exhibits similar changes at other dates associated with1271the same technological sequence, in which case the honest description is of a1272multi-year acceleration rather than a single break; the Bai--Perron dates are1273the data-driven complement to this pre-specified list. For the total series1274the sensitivity of the reference-date ITS and of the Bai--Perron dates to the1275truncation month $t_{\mathrm{L}}$ is also tabulated.12761277\section{Emerging-topic detection}1278\label{sec:m-emerging}12791280The framework of RQ10 asks whether signals observable at a month $T$ predict1281which topics will have grown unusually by $T + h$. Its scientific content lies1282less in the models, which are deliberately simple, than in the discipline of1283the evaluation: features are computed from data dated at or before $T$,1284labels from data strictly after $T$, training cutoffs end before test cutoffs1285begin, and the test labels are observed in a period the training never saw.1286The implementation is \texttt{experiments/emerging\_detection.py}.12871288\subsection{Units and panel}12891290The units are OpenAlex topics (the \texttt{rank 0} topic of each work) with at1291least fifty eligible works over the whole window. Topics are used rather than1292the forty ontology categories because the categories are too few and too1293broad to emerge, and rather than the semantic clusters of1294Section~\ref{sec:m-semantic} because a cluster defined on the full corpus is1295not an out-of-time object: it would be known to exist only because of works1296after $T$. The plan lists semantic clusters re-estimated at each cutoff and1297keyword $n$-grams as additional unit types; neither is implemented in the1298current pipeline, and the manuscript reports topic-level results only. Topics1299have their own limitation in this role: the OpenAlex topic model is itself1300fixed in 2026 and assigns 2019 works to topics defined with knowledge of13012019--2026 literature, so a topic that ``exists'' in 2019 with a handful of1302works may be a 2024 construct projected backward. The label definition below1303partly neutralises this, because it conditions on the topic having at least1304twenty works in the year before $T$, but the caveat applies to any1305retrospective evaluation with a fixed vocabulary and is stated as the first1306limitation of the framework.13071308The panel consists of two $K \times M$ matrices over topics $k$ and months1309$t$ from January 2018 to the last month (October 2026 by default): the volume1310$n_{k,t}$, the number of month-precision eligible works of topic $k$ with1311first month $t$, and the citation inflow $c_{k,t}$, the number of internal1312citation edges whose cited work belongs to topic $k$ and whose citing work has1313first month $t$. Citation inflow is dated by the citing work's first month,1314not by the OpenAlex calendar-year counts, which is what makes it usable at1315monthly resolution and out of time.13161317\subsection{Features at a cutoff}13181319Write $V_k(a, b] = \sum_{t = a+1}^{b} n_{k,t}$ for the volume of topic $k$ in1320the months $a < t \le b$ (and likewise $C_k$ for citations). At cutoff $T$ the1321feature vector of topic $k$ is1322\begin{align}1323  g^{12}_{k,T} &= \log\bigl(1 + V_k(T{-}12, T]\bigr) - \log\bigl(1 + V_k(T{-}24, T{-}12]\bigr), \\1324  \mathrm{acc}_{k,T} &= g^{12}_{k,T} - g^{12}_{k,T-12}, \\1325  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}}, \\1326  \mathrm{cit}_{k,T} &= \log\bigl(1 + C_k(T{-}12, T]\bigr) - \log\bigl(1 + C_k(T{-}24, T{-}12]\bigr), \\1327  \mathrm{share}_{k,T} &= V_k(T{-}12, T] \Big/ \sum_{k'} V_{k'}(T{-}12, T], \\1328  \mathrm{age}_{k,T} &= T - \min\{ t : \textstyle\sum_{u \le t} n_{k,u} \ge 5 \},1329\end{align}1330where $\bar n$ and $s$ are the mean and standard deviation of the monthly1331volumes over the 25 months from $T-27$ to $T-3$. The first is twelve-month1332log growth, the second its change over a year (acceleration), the third a1333$z$-score of the last quarter's monthly volume against the trailing two years1334(the ``abnormal growth'' signal, which also serves as the baseline detector),1335the fourth citation acceleration, the fifth a size control, the sixth the1336topic's age in months since it reached five works. Every window ends at $T$;1337the one-month overlap between the $z$-score's trailing window and the1338quarter it is compared with is immaterial. The log-ratio form of growth with1339the $+1$ shift keeps the features finite for topics that were empty in the1340earlier window. Of the seven candidate signals of the mandate, the1341implemented set covers abnormal growth, citation acceleration and (through the1342panel of Section~\ref{sec:m-novelty}, which the script can merge but does not1343by default) semantic novelty; interdisciplinary connectivity is described in1344the script's documentation as a cross-area share but is not computed, and1345methodological adoption, benchmark proliferation and open-source activity are1346not implemented. These absences are recorded as scope limits of the current1347framework; the evaluation design does not depend on which features are1348present.13491350\subsection{Label at horizon \texorpdfstring{$h$}{h}}13511352For a horizon $h \in \{12, 24\}$ months, the future growth of topic $k$ after1353cutoff $T$ is1354\begin{equation}1355  g^{\mathrm{fut}}_{k,T,h} = \log\bigl(1 + V_k(T, T{+}h]\bigr) - \log\bigl(1 + V_k(T{-}h, T]\bigr),1356\end{equation}1357and the topic is \emph{eligible} at $T$ if $V_k(T{-}12, T] \ge 20$. The label is1358\begin{equation}1359  \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)1360     \;\wedge\; V_k(T, T{+}h] \ge 2 \max\{ V_k(T{-}h, T],\, 1 \} \;\wedge\; k \text{ eligible} \Bigr],1361  \label{eq:label}1362\end{equation}1363the topic is in the top decile of future growth among eligible topics at that1364cutoff and at least doubles its volume. The decile is defined within cutoff,1365so that the positive rate is roughly ten per cent at every $T$ regardless of1366the overall growth of the corpus; the doubling condition removes topics that1367reach the top decile by growing from a small base in a quiet period. The1368protocol phrases the label as ``top-decile growth and citation share''; the1369implemented label uses volume growth only, and citation share is a feature1370rather than part of the outcome. This is a deliberate simplification---a1371citation-based outcome at a twelve-month horizon is dominated by the1372right-truncation of citations---and is recorded as a deviation. The label1373uses only $n_{k,t}$, so a topic can be ``emerging'' in this sense while its1374citation impact is unremarkable; Part IX reports the citation profile of the1375positives separately.13761377\subsection{Cutoffs, models and metrics}13781379Training cutoffs are every third month from December 2019 to December 20211380for the 12-month horizon and to December 2020 for the 24-month horizon, so1381that every training label is observable before the first test cutoff;1382test cutoffs are every third month from January 2023 to October 2024 for1383which $T + h$ lies within the panel. With $h = 24$ the last training label1384uses data to December 2023, which is after the reference date but more than a1385year before the first test label window closes, and no test cutoff precedes13862023; the twelve months of 2022 are used by neither set as a cutoff, which1387is the temporal gap that separates training from test in the sense of1388\citet{bergmeir2012crossval}. The plan proposed training cutoffs through 2022;1389the implementation stops at December 2021 so that the training labels do not1390extend into the test period at $h = 24$, a stricter separation than the plan.1391Rows are the eligible (topic, cutoff) pairs; features are the six quantities1392above with non-finite values replaced by zero.13931394Three predictors are compared: the $z$-score baseline, which ranks topics by1395$z_{k,T}$ alone and involves no fitting; an $\ell_2$-regularised logistic1396regression (regularisation strength $C = 1$, on features standardised with a1397scaler fitted on the training cutoffs only, so that the penalty is1398scale-invariant and no test-period statistic enters the fit);1399and a gradient boosting classifier \citep{friedman2001gbm} with 300 trees of1400depth three and learning rate 0.05, seed 44, as implemented in scikit-learn1401\citep{pedregosa2011sklearn}. The metrics on the pooled test rows are the area1402under the ROC curve \citep{hanley1982auc}, which is the probability that a1403randomly chosen positive is ranked above a randomly chosen negative, and1404precision at $k \in \{20, 50\}$, computed within each test cutoff as the share1405of positives among the $k$ highest-ranked topics and averaged over cutoffs; the1406AUC is also reported per cutoff to show its stability. Hypothesis H8 sets the1407bar at an AUC above 0.70 and precision at 50 above 0.40 against the baseline.1408Because the positives are defined by a within-cutoff decile, precision at 501409has a chance level of about ten per cent, and a precision at 50 of 0.401410means that twenty of the fifty flagged topics were among the positives of1411that cutoff.14121413\subsection{Lead time and the preregistered known-emergence set}14141415The protocol fixes before estimation a list of twelve developments that1416anyone familiar with the period would call emergent (large language models,1417diffusion models, neural radiance fields, LLM agents, retrieval-augmented1418generation, state-space sequence models, vision--language models, mechanistic1419interpretability, speculative decoding, mixture of experts at scale,1420test-time compute and reasoning models, AI for code generation) and predicts1421that the detector flags each at least six months before its peak growth1422month. The evaluation requires a mapping from each development to one or1423more OpenAlex topics, and this mapping is the weak point of the design: it1424must be made by hand, after the taxonomy work, and a development that has no1425topic of its own (because the OpenAlex topic model folds it into a larger1426one) cannot be detected by a topic-level detector whatever its merits. The1427script reserves a table for this mapping and it is empty in the current1428version; the lead-time statistic is therefore1429\pending{known-emergence lead times, experiments/known\_set.csv not yet populated},1430and the mapping, when made, will be listed in the appendix with the reason1431for each choice. Lead time itself is defined, for a development mapped to1432topic $k$, as the number of months between the first test cutoff at which1433$k$ ranks in the top 50 and the month of maximum $g^{12}_{k,t}$ over the1434window; a development whose peak growth precedes the first test cutoff has1435undefined lead time and is reported as such rather than dropped.14361437\subsection{Look-ahead safeguards and what they do not cover}14381439The safeguards are structural: features are functions of panel columns up to1440$T$ (enforced by index arithmetic, not by convention), labels of columns after1441$T$, cutoffs are separated by a gap, and the panel is built once from the1442corpus so that the same data serve all cutoffs. What they do not cover is1443information that entered the panel through steps performed in 2026 with full1444knowledge of the period: the topic vocabulary, the eligibility rules, the1445linkage, and the month-precision filter. A detector evaluated this way answers1446``given the 2026 topic model, would these signals have ranked the eventual1447winners early?'', which is a legitimate question about the signals and a1448weaker one about the deployability of the system. The semantic-cluster1449extension that the plan describes, with clusters re-estimated at each cutoff1450from embeddings of works dated before it, is the design that would address1451this, and it is left as the stated next step of the framework.14521453\section{Knowledge-graph extraction}1454\label{sec:m-kg}14551456\subsection{Structural and extracted layers}14571458The knowledge graph has two layers of very different epistemic status. The1459structural layer---works, authors, institutions, countries, sources, OpenAlex1460topics, arXiv categories, taxonomy categories, and the citation and1461classification edges among them---is derived from the source databases by the1462deterministic rules of Sections~\ref{sec:m-linkage}--\ref{sec:m-networks}; its1463errors are the errors of the sources and of the classifier, which are1464quantified. The extracted layer---methods, models, datasets, benchmarks,1465problems, metrics and claims, with typed edges to the works that introduce,1466use, evaluate on, extend, compare against or address them---is produced by a1467language model from abstracts, for the high-priority set only, and its1468errors are of a different kind: omissions, hallucinated entities, wrong1469roles, and claims paraphrased beyond what the abstract states. The mandate1470requires that every inferred relationship carry provenance, confidence and a1471verification status, and the extraction is designed so that these three1472fields are not decorative.14731474\subsection{High-priority and landmark sets}14751476The high-priority set is selected by \texttt{literature\_synthesis/select\_landmarks.py}1477from eligible, non-retracted works with a primary category: within each1478(primary category, publication year) cell the works are ranked by1479$\mathrm{NCS}^{(36)}$ (for 2025 and 2026, for which the window is empty, by1480$c^{(12)}$ divided by its year mean), and the top $\max\{25,\ \mathrm{round}(10{,}000\, n_{\mathrm{cell}} / n)\}$1481are taken, so that cells are represented in proportion to their size with a1482floor that keeps small categories and recent years present. The landmark set1483takes the top $\max\{15, \lfloor 1000/40 \rfloor\} = 25$ works of each category by1484the same score, adds the 200 works with the highest $c^{(36)}$ overall, and1485removes duplicates; it is flagged for human review (checkpoint H-3) in its1486entirety. Both selections are citation-based and inherit the biases of1487citation counts: they favour the categories and years whose works are cited1488early, and they cannot contain a work whose influence has not yet appeared in1489citations, which for 2025--2026 means that the ``high-priority'' recent works1490are the early-cited ones, not necessarily the important ones.14911492\subsection{Schema, provenance and machine verification}14931494For each work in the high-priority set with an abstract, the extractor1495(\texttt{knowledge\_graph/03\_extract\_entities.py}) submits the title, year and1496abstract (truncated to 3,000 characters), in batches of five works, to1497\texttt{claude-sonnet-5-5} with a JSON schema enforced by the API's structured1498output mode. The schema requires, per work, a contribution type from1499\{theory, method, empirical, benchmark, engineering, survey, other\}; a list of1500entities each with a name, a kind in \{method, model, dataset, benchmark,1501problem, metric\}, a role in \{introduced, used, evaluated\_on, extended,1502compared\_against, addressed\}, a supporting \emph{span} and a confidence; and1503a list of claims each with a text, a kind in \{result, improvement,1504negative\_result, reproduction, contradiction\}, a span and a confidence. The1505system prompt instructs the model to quote a verbatim span of at most 25 words1506from the abstract for every entity and claim, to use canonical names, and never1507to infer anything not stated. The role vocabulary maps onto the edge types of1508the mandate (\textit{introduces method}, \textit{uses dataset},1509\textit{evaluates}, \textit{extends}, \textit{addresses research problem});1510\textit{contradicts} and \textit{reproduces} are claim kinds rather than1511entity roles, because a contradiction or a reproduction is a relation between1512a work and a prior finding that an abstract rarely names as an entity.15131514Provenance is the pair (work identifier, span). Machine verification is the1515check that the span occurs verbatim, after lower-casing and trimming, in the1516abstract the model was given:1517\begin{equation}1518  \mathrm{status}(e) \;=\;1519  \begin{cases}1520    \text{machine-verified} & \text{if } \mathrm{lower}(\mathrm{span}(e)) \subseteq \mathrm{lower}(\mathrm{abs}(w)),\\1521    \text{unverified}       & \text{otherwise},1522  \end{cases}1523\end{equation}1524with \emph{human-verified} reserved for edges the principal investigator has1525reviewed. The check is weak in a precise sense: it establishes that the1526evidence quoted for an edge exists, not that it supports the edge. A model1527that quotes a genuine sentence and attaches the wrong role to it produces a1528machine-verified wrong edge. The confidence field is the model's own stated1529probability that the extraction is correct and is not calibrated by this1530study; it is stored so that downstream users can threshold it and so that its1531calibration can be estimated on the human-verified subsample. Every record1532carries \texttt{evidence\_type = abstract}, and the manuscript treats1533abstract-derived edges as what they are: evidence that an abstract asserts a1534relation, which is not a full-text review and is never cited as establishing1535a scientific finding (CLAUDE.md §1). Extractions are appended to a1536resumable file, requests that the model refuses are skipped and counted, and1537the cost is tracked against the budget of amendment A-004. What is and is not1538evidence can therefore be stated plainly: citation edges are evidence of1539citation; classification edges are evidence of rule firing with measured1540agreement; extracted edges are evidence that a language model, reading an1541abstract, asserted a relation and quoted a sentence that exists.15421543\section{Uncertainty, provenance and reproducibility}1544\label{sec:m-uncertainty}15451546\subsection{What is uncertain and how it is quantified}15471548The descriptive quantities of Sections~\ref{sec:m-bibliometrics}1549and~\ref{sec:m-networks} are computed on the whole eligible corpus and carry no1550sampling error; their uncertainty is measurement error, which enters through1551linkage (Section~\ref{sec:m-linkprecision}), classification1552(Section~\ref{sec:m-validation}), reference resolution and the completeness1553of affiliations and abstracts, each of which is estimated and reported as a1554rate rather than propagated into intervals. Propagating a classification1555precision of, say, 0.85 into an interval for a category share would require a1556model of how errors are distributed over time, and the honest statement is1557that a category's share is known up to the classifier's error, which is1558reported by category and, where the validation sample permits, by period.15591560Three families of quantities do carry explicit intervals. The ITS1561coefficients carry HAC standard errors and the placebo rank of1562Section~\ref{sec:m-placebo}; the Bai--Perron break dates carry no interval1563in the current implementation and are reported with the agreement of the two1564criteria and the sensitivity to truncation. The detector metrics carry1565per-cutoff values, whose dispersion across cutoffs is the relevant measure of1566stability, since the rows within a cutoff are not independent. And the1567cluster count and the category similarity matrices carry the split-half ARI\@.1568Where the manuscript reports a bootstrap interval for a corpus statistic (the1569Gini coefficient by year, the cross-area shares), it is the percentile1570interval of the non-parametric bootstrap \citep{efron1979bootstrap} over1571works, with 1,000 replications and seed 44, computed by the table-making1572script at reporting time; the protocol's commitment to ``bootstrap or HAC1573intervals'' is met by these two devices, and a reported figure without an1574interval is a population count for which none is appropriate. The1575indicators of Section~\ref{sec:m-bibliometrics} that depend on OpenAlex's1576nightly recomputation (FWCI, total citation counts) are snapshot quantities1577and are dated.15781579\subsection{Seeds and determinism}15801581Every stochastic step is seeded with the constant 44: the validation and1582linkage samples (hash ordering salted with the seed), the atlas sample and the1583two UMAP fits, the split-half permutations, the gradient boosting classifier,1584and the bootstrap. The regular-expression classifier, the SQL stages and the1585structural-change toolkit are deterministic. Two steps are deterministic only1586up to the platform: embedding on Apple-silicon GPUs with float16 storage1587produces vectors that differ at the fourth decimal from a CPU run, and UMAP's1588parallel optimisation is reproducible only with a fixed seed and a fixed1589thread count, which the runbook records. The LLM-based steps (two taxonomy1590raters, one extractor) are not deterministic even at zero temperature across1591model versions; their outputs are archived in full (the JSONL rating and1592extraction files, with the model identifier and the usage of every call) so1593that every downstream number can be recomputed from the archived outputs1594without re-querying the model, and a re-run with a later model version is a1595new experiment, not a replication.15961597\subsection{Ledgers, hashes and the chain of custody}15981599The raw inputs are pinned as follows. Each OpenAlex snapshot file downloaded1600from the public bucket is hashed with SHA-256 on arrival and the hash,1601record count, computer-science record count and malformed-record count are1602written to a SQLite ledger keyed by the file's URL and manifest entry; a file1603whose hash or count does not match the manifest is re-downloaded. The DBLP1604XML dump is identified by the MD5 published with it (verified before parsing)1605and its size; the ACL Anthology export by the SHA-256 of the file; the arXiv1606OAI-PMH harvest by the raw XML pages, kept verbatim, from which the Parquet1607table is rebuilt. Every derived table is written by a script whose1608invocation, inputs, outputs and measured wall time are listed in1609\texttt{reproducibility/RUNBOOK.md}, and the Python environment is locked1610(\texttt{reproducibility/environment\_M3U96b.txt}). Numbers enter the1611manuscript only through \texttt{manuscript/tables/numbers.tex}, generated by1612\texttt{tables/make\_numbers.py} from the result files, so that a number in1613the text can be traced to a macro, the macro to a result file, the result file1614to a script and the script to a ledger entry. The chain has one weak link,1615stated here: the result files on the compute node are not themselves hashed1616into the repository, so a reader verifying the chain must either re-run the1617pipeline or trust the node's copy; the release archive of Phase 9 will add1618their hashes.16191620\subsection{Human checkpoints and the status of conclusions}16211622Five checkpoints (H-1 to H-5, \texttt{reports/HUMAN\_REVIEW\_CHECKPOINTS.md})1623require the principal investigator's review of the linkage sample, the1624taxonomy validation sample, the landmark list, the structural-change results1625and the conclusions. Until a checkpoint is signed, the manuscript marks the1626conclusions that depend on it as pending human review, and the numbers that1627depend on it are rendered by the \texttt{\textbackslash pending} macro rather1628than typed. This is the mechanism by which the mandate's requirement that no1629agent approve its own findings is made visible in the text rather than1630asserted in a preface; it also means that a version of this manuscript1631compiled before the checkpoints are signed contains visibly incomplete1632statements, which is the intended behaviour.16331634
Files · 60571e8171dbb5d4288995db95f651f36b2f4875
Menu

Theme