SPB Git

spb/wp44_uqo

Public
98.7 KB · 1,625 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$). The validation note announces Krippendorff's525$\alpha$ with the MASI distance for the multi-label agreement; the metrics526script computes the mean Jaccard index instead, and the manuscript reports527what is computed. A work is exported as a disagreement for human review when528the rules, rater~A and rater~B have no category in common although at least529one of them assigned one.530531\subsection{Known failure modes}532533The design makes some errors predictable, and they are listed here so that the534results of the validation can be read against expectations rather than as535surprises. Keyword rules on abstracts fire on mentions as well as on536contributions: a systems paper that evaluates its scheduler on a large language537model workload matches the LLM keyword and, since that keyword alone reaches538the threshold, acquires the \textit{llm} label; the exclusion lists remove the539most frequent such cases but cannot enumerate them. Venue signals are coarse:540general machine-learning venues carry fractional weights for several AI541categories at once, so a work with no abstract and a generic title can be542assigned to a parent-level category on venue evidence alone, or to none.543OpenAlex topics are themselves the output of a classifier with documented544error, and a work whose topics are wrong inherits that error with weight; the545protocol lists this among the limitations declared before analysis.546Multi-label assignment with a cap of one per type and a threshold of one tends547to over-assign categories to long abstracts that mention many objects, which548inflates $|C(w)|$ in the post period, when abstracts increasingly cite models549and benchmarks by name; the co-classification statistics of550Section~\ref{sec:m-networks} are affected by this in a direction that would551mimic convergence (hypothesis H4) and must be read together with the primary-label552flow statistics, which are not. Finally, works without an abstract (a known553share of the corpus) are classified from the title and the metadata only and554have lower recall for the keyword-dependent categories; the share of such555works is reported by year because it is not constant.556557\section{Bibliometric indicators}558\label{sec:m-bibliometrics}559560The indicators of this section are the estimands of research questions RQ1,561RQ3 and RQ6. They are standard in the scientometric literature, and the562definitions follow the review of \citet{waltman2016review} where a choice had563to be made; what is specific to this study is the citation-window discipline564imposed by the eight-year span of the corpus and the explicit treatment of the565two counting conventions. The scripts are \texttt{bibliometrics/01\_volume\_series.py},566\texttt{02\_collaboration.py} and \texttt{03\_citation\_impact.py}.567568\subsection{Volume, composition and growth}569570The monthly count $N_t$ and the category counts $N_{k,t}$ of571equation~\eqref{eq:counts} are tabulated by first month, period, date precision,572type and source membership (DBLP-indexed, OpenAlex-primary, arXiv-linked), with573the numbers of works having an abstract, having at least one resolvable574reference, and being open access; the annual table adds the mean number of575authors, references and countries per work. Composition is the share576$s_{k,t}$; its annual counterpart uses the primary label on all eligible works.577Growth between two dates separated by $\Delta$ years is summarised by the578compound annual growth rate579\begin{equation}580  \mathrm{CAGR}(t_a, t_b) \;=\; \Bigl( \frac{N_{t_b}}{N_{t_a}} \Bigr)^{1/\Delta} - 1,581  \qquad \Delta = (t_b - t_a)\ \text{in years},582  \label{eq:cagr}583\end{equation}584applied to annual totals and to annual category totals; it is a descriptive585summary of two end points and says nothing about the path between them, which586is why the structural-change analysis of Section~\ref{sec:m-structural} works587on the full monthly series instead. The CAGR is computed at table-making time588from the annual counts rather than by a dedicated script; the plan lists it589among the Phase-4 indicators and it is reported for complete years only, since5902026 is right-censored (Section~\ref{sec:m-truncation}).591592\subsection{Fixed citation windows}593\label{sec:m-citations}594595OpenAlex provides, for each work, the number of citations received in each596calendar year (\texttt{counts\_by\_year}). Let $c_{w}(u)$ be the citations597received by $w$ in calendar year $u$ and $y(w)$ its publication year. The598fixed-window counts are599\begin{equation}600  c^{(12)}_w = \sum_{u \le y(w)+1} c_w(u), \qquad601  c^{(36)}_w = \sum_{u \le y(w)+2} c_w(u), \qquad602  c^{(48)}_w = \sum_{u \le y(w)+3} c_w(u),603  \label{eq:windows}604\end{equation}605so that $c^{(12)}$ counts citations in the publication year and the following606calendar year, $c^{(36)}$ in the publication year and the two following years,607and so on. The superscripts are the names used in the code and in the tables608and must be read as calendar-year windows rather than as exact month counts: a609work published in January and one published in December of the same year610receive windows that differ by eleven months in effective length. This611granularity is imposed by the data (OpenAlex does not provide citation dates612below the year) and is the same for the baseline and the post period, so it613blurs comparisons within a year but does not bias comparisons between years.614The window is the device that neutralises citation-age bias: comparing the615total citation count of a 2019 work with that of a 2025 work compares seven616years of exposure with one, whereas comparing $c^{(36)}$ compares equal617exposures. The cost is that the last window-length of the corpus cannot be618evaluated; $c^{(36)}$ is complete for publication years up to 2023 given a619snapshot taken late in 2026, and $c^{(12)}$ up to 2024. Tables flag the years620for which a window is incomplete, and the choice of window length follows the621evidence in \citet{wang2013window} that short windows rank works materially622differently from long ones in slow-moving fields, which is why two lengths are623reported rather than one.624625\subsection{Field normalisation}626627Raw citation counts differ across subfields and document types by factors that628have nothing to do with influence. The normalised citation score of a work is629its window count divided by the mean window count of its reference class630\citep{waltman2016review, waltman2019fieldnorm}:631\begin{equation}632  \mathrm{NCS}^{(h)}_w \;=\; \frac{c^{(h)}_w}{\bar c^{(h)}\bigl(y(w), \tau(w), f(w)\bigr)}, \qquad633  \bar c^{(h)}(y, \tau, f) = \frac{1}{|\mathcal{W}_{y,\tau,f}|}\sum_{v \in \mathcal{W}_{y,\tau,f}} c^{(h)}_v ,634  \label{eq:ncs}635\end{equation}636where $f(w)$ is the primary OpenAlex subfield of $w$ and $\mathcal{W}_{y,\tau,f}$637the set of eligible works sharing year, type and subfield. The reference class638is computed on the eligible corpus, not on all of OpenAlex, so the639normalisation is relative to computer science as delimited here: an NCS of 2640means twice the mean of comparable computer-science works, not twice the world641mean. The score is undefined when the class mean is zero (very small classes in642the most recent years) and is then left missing rather than set to zero.643Normalisation by the mean of a heavy-tailed distribution is sensitive to a few644very highly cited works in the class; the median-based alternatives discussed645by \citet{waltman2016review} are not used because the median of $c^{(36)}$ is646zero in many classes of this corpus, which would make them uninformative.647648OpenAlex's own field-weighted citation impact (FWCI) is kept as a secondary649indicator. Its documentation defines it as ``citations received divided by650citations expected for works of the same type, year, and subfield'', with a651world average of one \citep{openalex2026fwci}. It differs from652equation~\eqref{eq:ncs} in three respects: the expected count is computed over653all of OpenAlex rather than over this corpus; the citation count is the total654to date rather than a fixed window, so that FWCI values of recent works are655based on a short and unequal exposure; and the computation is OpenAlex's,656recomputed nightly, so that the value depends on the snapshot date. For these657reasons FWCI is reported for comparison and never used to select works.658659\subsection{Inequality and concentration}660661Citation inequality within a publication year is measured by the Gini662coefficient of $c^{(36)}$ among the $n$ eligible works of that year. With the663works sorted so that $c_{(1)} \le c_{(2)} \le \dots \le c_{(n)}$, the estimator664implemented in SQL is the rank form665\begin{equation}666  G \;=\; \frac{2\sum_{i=1}^{n} i\, c_{(i)}}{n \sum_{i=1}^{n} c_{(i)}} - \frac{n+1}{n},667  \label{eq:gini}668\end{equation}669which equals one minus twice the area under the Lorenz curve and lies in670$[0, 1 - 1/n]$; the coefficient is named after \citet{ceriani2012gini}'s671account of its origin. Uncited works (a large share within a three-year672window) contribute zero to the numerator and pull $G$ upward, so the share of673uncited works is reported next to it. The protocol (H5) refers to the Gini of67424-month citations; the implemented statistic uses the three-calendar-year675window $c^{(36)}$, which is complete for one more publication year than the676longer alternatives and less dominated by zeros than $c^{(12)}$. This is a677deviation from the protocol wording and is recorded as such.678679Venue concentration within a year is the Herfindahl--Hirschman index of the680distribution of works over sources,681\begin{equation}682  \mathrm{HHI}_y \;=\; \sum_{v} \sigma_{v,y}^2, \qquad683  \sigma_{v,y} = \frac{N_{v,y}}{\sum_{v'} N_{v',y}},684  \label{eq:hhi}685\end{equation}686where $N_{v,y}$ is the number of eligible works of year $y$ whose primary687source is $v$ \citep{hirschman1964paternity}; works without a source are688excluded from the denominator, and the number of distinct sources and the689largest single share are reported with the index. Because arXiv is a single690OpenAlex source, growth in preprints mechanically raises $\mathrm{HHI}_y$ even691when the journal and conference landscape becomes more dispersed; this is the692reason the protocol's H5 predicts a stable or falling HHI only ``because of693preprint growth'' with the preprint source treated separately, and the tables694report the index with and without the preprint type.695696\subsection{Collaboration, countries and institutions}697698Team size is summarised by the mean and median number of authors per work and699by the shares of single-author works and of works with at least five or ten700authors. Two counting conventions are used for countries and institutions,701because they answer different questions \citep{waltman2016review}. Under full702counting a work contributes one unit to every country among its authors'703affiliations; under fractional counting it contributes $1/|K(w)|$ to each of704its $|K(w)|$ distinct countries, so that the fractional totals sum to the705number of works with at least one country. The same pair of conventions is706applied to institutions, with the fraction taken over the distinct institutions707of the work. The international collaboration share of year $y$ is708\begin{equation}709  \mathrm{ICS}_y \;=\; \frac{|\{w : y(w)=y,\ |K(w)| \ge 2\}|}{|\{w : y(w)=y,\ |K(w)| \ge 1\}|},710\end{equation}711that is, among works with at least one resolved country, the share with authors712from two or more countries; works without affiliation data are excluded from713the denominator and their share is reported, because affiliation completeness714in OpenAlex varies by source and year and a change in completeness would715otherwise masquerade as a change in collaboration. The industry share is the716share of works with at least one affiliation of OpenAlex institution type717\textit{company} among works with at least one typed affiliation. Country-pair718and institution-level tables apply minimum-support thresholds (fifty joint719works for a country pair, two hundred works for an institution within a period)720that keep the released tables to the robustly estimated part of the721distribution; these thresholds are reporting choices and are stated in the722table notes.723724\subsection{Diversity indices}725\label{sec:m-diversity}726727Interdisciplinarity is measured on the distribution of a work's references, or728of a category's citations, over the categories of the ontology. Let729$p = (p_1, \dots, p_K)$ be such a distribution and $\delta_{ij} \in [0,1]$ a730dissimilarity between categories $i$ and $j$. The Rao--Stirling index731\citep{rao1982diversity, stirling2007diversity}732\begin{equation}733  \Delta_{\mathrm{RS}}(p) \;=\; \sum_{i \ne j} p_i\, p_j\, \delta_{ij}734  \label{eq:rao-stirling}735\end{equation}736is the expected dissimilarity between two categories drawn at random from $p$;737it is zero when all mass sits on one category and increases with variety (the738number of categories present), balance (the evenness of $p$) and disparity (the739dissimilarity of the categories involved), the three components that740\citeauthor{stirling2007diversity} argues any diversity measure should respond741to. Its use in scientometrics follows \citet{rafols2010diversity}. Its known742weakness is that it saturates: for very even distributions over many743categories it approaches the mean dissimilarity and no longer discriminates744\citep{zhang2016diversity}. The Leinster--Cobbold family745\citep{leinster2012diversity} repairs this by defining, for a similarity matrix746$Z = (z_{ij})$ with $z_{ij} = 1 - \delta_{ij}$ and an order $q \ge 0$,747\begin{equation}748  {}^{q}D^{Z}(p) \;=\; \Bigl( \sum_{i : p_i > 0} p_i\, (Zp)_i^{\,q-1} \Bigr)^{1/(1-q)},749  \qquad (Zp)_i = \sum_j z_{ij}\, p_j ,750  \label{eq:leinster-cobbold}751\end{equation}752with the limit ${}^{1}D^{Z}(p) = \prod_i (Zp)_i^{-p_i}$ at $q = 1$. The quantity753$(Zp)_i$ is the ``ordinariness'' of category $i$ under $p$: how much of the754distribution is similar to $i$. The index is an effective number of755categories---it equals $K$ for the uniform distribution over $K$ mutually756dissimilar categories---and the order $q$ sets the weight given to rare757categories (large $q$ counts only the dominant ones). Following758\citet{zhang2016diversity} the manuscript reports $q = 2$, which has the759closed form ${}^{2}D^{Z}(p) = 1 / \sum_{i,j} p_i z_{ij} p_j = 1/(1 - \Delta_{\mathrm{RS}}(p))$760when $z_{ii} = 1$, so that the two families are monotone transforms of each761other at this order and differ only in scale and in their behaviour at the762saturation end. The dissimilarity $\delta_{ij}$ between categories is one763minus the cosine similarity of the category centroids of764Section~\ref{sec:m-semantic} in the baseline period, so that the disparity765component is estimated from the corpus rather than imposed. The current766pipeline computes the category flow matrices from which $p$ is formed767(Section~\ref{sec:m-networks}) and the centroid similarities, but the two768diversity indices are not yet produced by a script; they are defined here769because the protocol commits to them, and their values in Part IX are770\pending{Rao--Stirling and Leinster--Cobbold indices per category and period, not yet computed}771until the computation is added and audited.772773\section{Citation and collaboration networks}774\label{sec:m-networks}775776\subsection{The citation graph and its boundary}777\label{sec:m-citgraph}778779Citation edges come from the OpenAlex \texttt{referenced\_works} lists, which780are verified by construction in the sense that each edge is an assertion of the781source database rather than an inference of this study. The script782\texttt{knowledge\_graph/01\_citation\_graph.py} splits the references of783eligible works into two edge sets:784\begin{align}785  \mathcal{E}_{\mathrm{int}} &= \{ (w, v) : w \in \mathcal{W},\ v \in \mathcal{W},\ v \in \mathrm{refs}(w) \},\\786  \mathcal{E}_{\mathrm{ext}} &= \{ (w, v) : w \in \mathcal{W},\ v \notin \mathcal{W},\ v \in \mathrm{refs}(w),\ v \in \text{slim table} \},787\end{align}788the internal edges forming the citation graph of computer science proper and789the external edges recording what the corpus cites outside itself, with the790cited work's publication year, type and primary OpenAlex field resolved from the791slim table of all works. References that resolve to no OpenAlex record are792counted (the declared reference count of each work is stored) but cannot be793typed. The yearly tables derived from these sets are the inflows by cited794field (how much of each citing year's references go to mathematics, medicine,795the social sciences, and so on), the distribution of citation age796$y(w) - y(v)$ by citing year, and the reference coverage (declared, internal,797external) by year. Coverage matters for every network statistic that follows:798if the share of resolvable references rises over time, as it does in OpenAlex799because recent works are better matched, then internal edge counts rise for800reasons unrelated to citation behaviour, and all flow statistics are therefore801expressed as shares of resolved edges within the citing year.802803\subsection{Category flow matrices}804805For each citing year $t$ the script \texttt{knowledge\_graph/02\_category\_flows.py}806forms the $K \times K$ matrix807\begin{equation}808  F_t[i, j] \;=\; \bigl|\{ (w, v) \in \mathcal{E}_{\mathrm{int}} : y(w) = t,\ \kappa^{\ast}(w) = i,\ \kappa^{\ast}(v) = j \}\bigr| ,809  \label{eq:flow}810\end{equation}811the number of citations made in year $t$ by works whose primary category is $i$812to works whose primary category is $j$, together with the row-normalised813shares $F_t[i,j] / \sum_{j'} F_t[i,j']$. Works without a primary category814contribute no edges to $F_t$; their references are retained in815$\mathcal{E}_{\mathrm{int}}$ but fall outside the matrix. Aggregating rows and816columns by area through $a(\cdot)$ gives the $8 \times 8$ area flow matrix, and817the cross-area share of citing area $\alpha$ in year $t$ is818\begin{equation}819  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]},820  \label{eq:cross-area}821\end{equation}822the fraction of an area's internal references that leave the area. This is the823statistic behind hypothesis H4. It is not a measure of interdisciplinarity in824the sense of Section~\ref{sec:m-diversity}, because it treats all other areas825as equally distant; it is a boundary-crossing rate, and its interpretation826depends on the stability of the boundaries, which the classifier fixes once827for all years. A co-classification matrix counts, for each year, the works828carrying both category $i$ and category $j$ in their full label set $C(w)$; it829is reported alongside the flows but, as noted in830Section~\ref{sec:m-classification}, it is sensitive to abstract length and831vocabulary in a way the primary-label flows are not.832833\subsection{Modularity of the yearly flow network}834835The degree to which citations stay within categories, or within areas, is836summarised by the modularity of the weighted directed graph with adjacency837$W = F_t$, evaluated at the fixed partition given by the categories themselves838(each category its own community) and at the coarser partition given by the839areas. The implemented statistic is840\begin{equation}841  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],842  \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},843  \label{eq:modularity}844\end{equation}845which is the directed generalisation by \citet{leicht2008directed} of the846Newman--Girvan modularity \citep{newman2004community}: the observed weight847within communities minus the weight expected if each citation were rewired at848random while preserving every node's out-strength and in-strength. Because the849partition is given rather than optimised, $Q$ is used here as a descriptive850index of assortativity by category, not as the objective of a community851detection algorithm; the resolution limit that affects optimised modularity852\citep{fortunato2007resolution, fortunato2010community} therefore does not853arise, but the index inherits the dependence of the flow matrix on the854classifier. Two values are reported per year, $Q_{\mathrm{cat}}$ with855$g_i = i$ and $Q_{\mathrm{area}}$ with $g_i = a(i)$, together with the self-share856$\operatorname{tr}(F_t)/m$, which is the uncorrected fraction of citations857staying within the citing category. Hypothesis H4 predicts a decrease in858$Q_{\mathrm{area}}$ in the post period. A fall in $Q$ can also arise if the859composition of citing works shifts toward categories that were always860boundary-crossing (large language models citing natural-language processing861and machine-learning theory), so Part IX reports $Q$ together with the862composition-adjusted cross-area shares obtained by fixing the row weights at863their baseline values.864865\subsection{Co-authorship, institution and country networks}866867The plan lists author, institution and country collaboration networks built868with \texttt{igraph}. The implemented collaboration layer is tabular rather than869graph-analytic: country pairs with at least fifty joint works per period870(edges of the country network, with their weights), institution counts by871period under full and fractional counting, and institution-type shares. The872country network is thus available as an edge list from which the figures of873Part VIII are drawn, and degree, strength and density can be computed from it;874author-level co-authorship networks are not constructed in the current875pipeline, because author disambiguation in OpenAlex is of uneven quality over876the period and an author graph of this size would be dominated by that noise.877This is a narrowing of the plan, recorded here; the country and institution878tables are the collaboration estimands actually reported.879880\section{Semantic mapping}881\label{sec:m-semantic}882883\subsection{Document embeddings}884885Each eligible work with an abstract is represented by a dense vector computed886by a scientific sentence-embedding model from the string887``$\text{title}$. $\text{abstract}[1{:}2000]$'' (the abstract truncated to8882,000 characters), tokenised to at most 256 word pieces, and L2-normalised, so889that the inner product of two vectors is their cosine similarity890(\texttt{embeddings/embed\_corpus.py}). The primary model is SPECTER2 base891\citep{singh2023scirepeval}, the successor of SPECTER892\citep{cohan2020specter}, a transformer trained with a citation-informed893triplet objective so that papers that cite one another are close in the894embedding space; this inductive bias is the appropriate one for mapping a895literature by its intellectual proximity rather than by lexical overlap. The896protocol requires a second embedding family for comparison; the benchmark897script evaluates SciNCL \citep{ostendorff2022scincl}, a general-purpose898BGE model and a MiniLM sentence-transformer \citep{reimers2019sbert} for899throughput and dimensionality on the same hardware, and the atlas script900accepts any of them through its model argument, so the comparison is a901re-run with a different tag. The embeddings are stored as float16 shards with902their work identifiers and a per-host manifest (model name, maximum sequence903length, device, timings), computed on several nodes of the cluster in904parallel; float16 storage changes cosine similarities by less than905$10^{-3}$, which is below any threshold used downstream.906907Three assumptions underlie everything built on these vectors. The abstract is908assumed to be a faithful summary of the work's content, which it is for most909research articles and is not for extended abstracts and some proceedings910papers. The embedding geometry is assumed stable across the period: a model911trained on literature up to its release date represents 2026 work in a space912shaped by earlier work, so genuinely new vocabulary is embedded by analogy to913what the model knows, and the novelty statistic below measures distance in914that space, not in some ideal space of ideas. And cosine similarity is assumed915to be a sufficient proxy for topical proximity; this is the standard916assumption of the field and is supported by the retrieval benchmarks on which917these models are evaluated, with the caveat that all such benchmarks are918dominated by pre-2023 literature.919920\subsection{Atlas: projection and clustering}921922The two-dimensional atlas and the cluster structure are computed on a uniform923random sample of 200,000 eligible works with embeddings (seed 44), because924density-based clustering of the full corpus in the native space is neither925computationally practical nor, given the noise level of abstracts, more926informative. UMAP \citep{mcinnes2018umap} with the cosine metric, 30 nearest927neighbours and a minimum distance of zero projects the sample to 50928dimensions; HDBSCAN \citep{campello2013hdbscan, mcinnes2017hdbscan} with a929minimum cluster size of 200 and a minimum sample count of 20 is run on the93050-dimensional projection; a second UMAP to two dimensions (minimum distance9310.1) is used for display only. The 50-dimensional intermediate step is what932makes density-based clustering workable on 768-dimensional normalised vectors,933whose pairwise distances concentrate; it is also a source of distortion, since934UMAP preserves local neighbourhoods and not global distances, so cluster935\emph{membership} is meaningful and the distances between clusters on the936two-dimensional map are not. HDBSCAN labels points in low-density regions as937noise ($-1$), and the noise share is reported with the cluster count. Each938cluster is described by the twelve title terms with the highest mean TF--IDF939weight (unigrams and bigrams, English stop words removed, minimum document940frequency five), by its modal primary category and that category's share,941and by the share of its members in the post period; these descriptors are942how clusters are related to the ontology, and the comparison of the two943partitions (bottom-up clusters against top-down categories) is one of the944checks on the ontology reported in Part IX.945946\subsection{Stability}947948Cluster stability is measured by a split-half design. Five times, the sample949is randomly permuted and divided into two halves; HDBSCAN (minimum cluster950size 100, since each half has half the points) is run separately on the two951halves of the \emph{same} 50-dimensional projection; a 5-nearest-neighbour952classifier trained on the first half's labels predicts labels for the second953half; and the adjusted Rand index \citep{hubert1985comparing}954\begin{equation}955  \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}}956                      {\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}}957\end{equation}958between the transferred labels and the second half's own labels is recorded959(here $n_{ij}$ is the contingency table of the two labellings and $a_i$, $b_j$960its margins). The mean of the five values is the reported stability. Two961caveats bound what this measures. The projection is fitted once on the full962sample, so the design tests the stability of the clustering conditional on the963projection and not the stability of UMAP itself, whose stochastic optimisation964is fixed by the seed; the protocol's phrase ``bootstrap ARI'' describes this965split-half procedure, which resamples without replacement. And the966nearest-neighbour transfer is itself a smoothing step: it maps noise points of967the first half to the majority label of their neighbours, which raises the968index relative to a direct comparison of two independent clusterings of the969same points.970971\subsection{Category centroids, drift and novelty}972\label{sec:m-novelty}973974In the native embedding space, the centroid of category $k$ in year $y$ is975the normalised mean vector976\begin{equation}977  \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\|},978\end{equation}979computed only for cells with at least 100 works, and the year-over-year drift980of a category is the cosine distance $1 - \mu_{k,y}^{\top}\mu_{k,y-1}$. Period981centroids average the yearly centroids over calendar years 2018--2022982(baseline) and 2023--2026 (post), and the inter-category cosine similarity983matrices of the two periods are the semantic counterpart of hypotheses H4 and984H5: convergence between two categories appears as an increase in the cosine985similarity of their centroids. The period boundary used here is the calendar986year, not the 30~November 2022 date of Section~\ref{sec:m-notation}; the987eleven months of 2022 that belong to the baseline are kept in the baseline988and December 2022 is attached to it rather than to the post period, a989deliberate simplification at the level of yearly centroids that moves a990single month across the boundary.991992The novelty of a work is its distance to the recent past of its own category:993\begin{equation}994  \nu(w) \;=\; 1 - e_w^{\top}\,\bar\mu_{\kappa^{\ast}(w),\ m(w)-24\,:\,m(w)-1}, \qquad995  \bar\mu_{k,\,a:b} = \frac{\sum_{t=a}^{b} \sum_{v : \kappa^{\ast}(v)=k,\ m(v)=t} e_v}{\bigl\|\,\cdot\,\bigr\|},996  \label{eq:novelty}997\end{equation}998the cosine distance between the work's vector and the normalised sum of the999vectors of all works of the same primary category whose first month lies in1000the 24 months strictly before the work's own month. A work in the first months1001of a category, with no trailing window, has no novelty value. The1002definition uses only information dated before the work, which is what allows1003it to serve as a signal in the out-of-time detector of1004Section~\ref{sec:m-emerging}; but the centroid is computed with the1005\emph{final} primary categories of the earlier works, assigned by rules fixed1006in 2026, so the category boundaries themselves are not out-of-time. This is a1007limitation shared by every category-conditional statistic in the paper and1008is discussed in Section~\ref{sec:m-emerging}. Novelty defined as distance to a1009category centroid rewards works that sit between categories as much as works1010that are new; the interpretation of high novelty as ``new'' rather than1011``interdisciplinary'' requires the clusters and the flow statistics as1012corroboration, and the literature on novelty indicators warns that1013citation-based and text-based novelty measures do not agree well1014\citep{uzzi2013atypical, wang2017novelty}.10151016\section{Structural change in monthly series}1017\label{sec:m-structural}10181019The question behind RQ2 and hypotheses H1 and H3 is whether the monthly1020series of computer-science output, in total and by category, changed level or1021slope around the reference date, and whether any such change stands out1022against the ordinary variability of the series. Four methods are applied to1023every series by \texttt{econometrics/run\_structural\_change.py}, using the1024pure functions of \texttt{econometrics/structural\_change.py} (unit-tested on a1025simulated series with a known break). None of them identifies a cause. An1026interrupted time series with a single pre-specified date answers ``did the1027series change at that date, net of trend and season?''; the placebo1028distribution answers ``is that date special?''; the multiple-break and1029changepoint methods answer ``where does the series change, if one does not1030specify a date?''; and the Bayesian online detector answers ``when would an1031observer following the series month by month have concluded that it had1032changed?''. The reference date is a historical marker, and the manuscript1033uses no causal vocabulary about it (CLAUDE.md §6.5).10341035\subsection{Series construction and truncation}1036\label{sec:m-truncation}10371038Each series is a vector of monthly counts $N_t$ on the month-precision1039subset, from February 2018 (the default start of the driver script, which1040drops one month and is immaterial) to the last complete month1041$t_{\mathrm{L}}$, by default June 2026, with sensitivity runs at March and1042August 2026. Category series $N_{k,t}$ use the multi-label count restricted to1043month-precision works, and a series is analysed only if it has at least 481044non-zero months and at least 500 works in total; smaller series yield1045unstable fits and are reported descriptively. All methods operate on1046$y_t = \log(N_t + 1)$, the shift making the transform defined for empty months1047and immaterial for counts in the hundreds or thousands.10481049Right-truncation is handled by truncation, not by correction. The plan1050proposed to correct recent months by the indexing-delay profile estimated from1051the creation dates; the implemented pipeline estimates that profile1052(\texttt{indexing\_lag.csv}: for each publication month, the median and 90th1053percentile of $d_{\mathrm{cr}}(w) - d_{\mathrm{pub}}(w)$ and the shares indexed1054within 90 and after 180 days) and reports it, but the structural-change runs1055simply stop the series at $t_{\mathrm{L}}$ and vary $t_{\mathrm{L}}$. The1056reason is that an inflation correction based on the lag profile of earlier1057years assumes that the profile is stationary, and the profile is itself1058affected by the events under study (OpenAlex's own ingestion changed over the1059period); a correction would import that assumption into every test. Truncating1060to the last month at which the lag profile indicates near-complete indexing1061loses a few months of data but introduces no model. Donut windows (dropping1062the months adjacent to the event) are not implemented; the alternative event1063dates of Section~\ref{sec:m-altdates} serve the related purpose of showing1064whether the estimated change is tied to a particular month.10651066\subsection{Interrupted time series with seasonality and HAC errors}1067\label{sec:m-its}10681069With $t = 0, 1, \dots, n-1$ indexing the months and $t_e$ the index of the1070event month, the segmented regression is1071\begin{equation}1072  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]1073           + \sum_{j=2}^{12} \gamma_j\, \mathbf{1}[\mathrm{month}(t) = j] + \varepsilon_t ,1074  \label{eq:its}1075\end{equation}1076the standard interrupted-time-series specification \citep{bernal2017its} with1077eleven month-of-year dummies (January as reference). The coefficient1078$\beta_2$ is the change in log level at the event, $\beta_3$ the change in1079monthly log slope, and $\beta_1$ the pre-event slope; since $y$ is a log count,1080$e^{\beta_2} - 1$ is the proportional level shift and $\beta_1$ and $\beta_3$1081are monthly growth rates. The event month is coded as the first full month1082after the reference date, December 2022 for the 30~November 2022 marker, and1083likewise for the alternative dates. Ordinary least squares estimates the1084coefficients; the covariance matrix is the heteroskedasticity- and1085autocorrelation-consistent estimator of \citet{newey1987hac} with a Bartlett1086kernel and bandwidth six months,1087\begin{equation}1088  \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},1089  \qquad \hat\Gamma_\ell = \sum_{t} \hat\varepsilon_t \hat\varepsilon_{t-\ell}\, x_t x_{t-\ell}^{\top},1090\end{equation}1091which makes the reported standard errors robust to serial correlation of the1092residuals up to half a year. The bandwidth is fixed rather than chosen by the1093data-dependent rule of \citet{andrews1991hac}; with roughly one hundred1094observations the difference is immaterial and a fixed choice is easier to1095preregister. The fitted values are back-transformed as $e^{\hat y_t} - 1$ for1096the figures. The specification's known weaknesses are those of any single-break1097segmented regression: it assumes the change is immediate and permanent, it1098attributes to $\beta_2$ any curvature of the pre-trend that a linear1099$\beta_1 t$ cannot absorb, and with a reference date placed near the centre of1100the sample it is well identified only because the post period is long. The1101placebo analysis is the main guard against the second weakness.11021103\subsection{Placebo distribution}1104\label{sec:m-placebo}11051106The ITS of equation~\eqref{eq:its} is re-estimated with the event placed at1107every month $t'$ from the 25th month of the series to the 12th month before1108its end, yielding the $t$-statistics $\{ t^{(2)}_{t'} \}$ and $\{ t^{(3)}_{t'} \}$1109of the level and slope changes as a function of the hypothetical event date.1110The placebo $p$-value of the true event is its rank among these:1111\begin{equation}1112  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],1113  \label{eq:placebo}1114\end{equation}1115and likewise for $\beta_3$. The set $\mathcal{T}'$ contains the true event, so1116the smallest attainable value is $1/|\mathcal{T}'|$. This statistic is the1117``placebo in time'' diagnostic recommended for interrupted time series1118\citep{bernal2018controls}: if a level shift of comparable $t$-statistic is1119found at a quarter of all candidate dates, a conventional $p$-value from the1120HAC standard error of $\beta_2$ overstates the evidence, because the series1121has enough curvature and persistence that any date looks like a break. The1122value is not a $p$-value under a null hypothesis in the usual sense (the1123candidate dates are not exchangeable draws from a null distribution, and the1124regressions share the same data), and the manuscript calls it a placebo rank.1125Two implementation details depart from the plan's wording. The plan speaks of1126placebo breaks ``at every month of the baseline''; the implementation ranges1127over the baseline \emph{and} the post period, so that a change in 2023 or11282024 that is larger than the one at the reference date lowers the rank of the1129reference date, which is the conservative direction for hypothesis H1 and is1130why the wider range was kept. And the minimum of 24 pre-months and 121131post-months means that candidate dates near the ends of the series, where the1132level-change coefficient is poorly identified, are excluded from the1133comparison.11341135\subsection{Multiple breaks: dynamic programming with information criteria}1136\label{sec:m-bp}11371138The Bai--Perron framework \citep{bai1998breaks, bai2003computation} estimates1139$m$ unknown break dates $\tau_1 < \dots < \tau_m$ as the global minimiser of1140the sum of squared residuals of a segment-wise regression. The implementation1141is the pure dynamic programme of \citet{bai2003computation} on the log series1142with a segment-wise linear trend: for a segment $[i, j)$ of at least $h$1143observations,1144\begin{equation}1145  S(i, j) \;=\; \min_{a, b}\ \sum_{t=i}^{j-1} \bigl( y_t - a - b\,t \bigr)^2,1146\end{equation}1147and the optimal partition of the first $j$ observations into $m+1$ segments1148is obtained recursively,1149\begin{equation}1150  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),1151  \label{eq:bp-dp}1152\end{equation}1153with the break positions recovered by back-tracking. The minimum segment1154length is $h = \max\{8, \lfloor 0.15\, n \rfloor\}$ months, a trimming of 15 per1155cent that is the usual choice in this literature; it forbids breaks in the1156first and last $h$ months, which for the default window of 101 months1157($h = 15$) means that no break can be placed after April 2025, and it also1158forbids two breaks closer than $h$ months. The number of breaks, up to three, is selected by two1159criteria computed on the global minima $\mathrm{SSR}_m = C_m(n)$,1160\begin{align}1161  \mathrm{BIC}(m) &= n \log\bigl(\mathrm{SSR}_m / n\bigr) + p_m \log n, \\1162  \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,1163\end{align}1164with $p_m = 2(m+1) + m$ parameters (an intercept and a slope per segment plus1165the $m$ break dates). The BIC is Schwarz's criterion \citep{schwarz1978bic};1166the LWZ criterion of \citet{liu1997segmented}, in the form used by1167\citet{bai2003computation}, penalises additional breaks more heavily and is1168known to select fewer spurious breaks when the errors are serially correlated,1169which they are in these series (the monthly residual autocorrelation is what1170the HAC errors of the ITS correct for). Both selections are reported. The1171sequential sup-$F$ tests of \citeauthor{bai1998breaks} are not implemented; in1172their absence the break dates carry no $p$-value, and their stability is1173assessed instead through the agreement of the two criteria, the sensitivity to1174$t_{\mathrm{L}}$, and the agreement with the two methods below. The regression1175in each segment contains no seasonal terms, so a seasonal pattern can only be1176absorbed by the error; with a trimming of eight or more months per segment1177this cannot create a break by itself but it inflates $\mathrm{SSR}_m$ uniformly.11781179\subsection{PELT}11801181The pruned exact linear time algorithm \citep{killick2012pelt} finds the1182changepoint set $\mathcal{C}$ minimising a penalised cost,1183\begin{equation}1184  \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}| ,1185  \qquad \lambda = 2\, \widehat{\mathrm{Var}}(y)\, \log n ,1186  \label{eq:pelt}1187\end{equation}1188with the $\ell_2$ cost (piecewise constant mean) and a minimum segment length1189of six months, as implemented in the \texttt{ruptures} library1190\citep{truong2020ruptures}. The penalty is of the Schwarz type studied by1191\citet{yao1988schwarz} for the piecewise-constant Gaussian model, scaled by1192the sample variance of the series; it is a conservative choice in a trending1193series, because a piecewise-constant mean must spend changepoints to follow a1194trend, so the reported PELT dates should be read as the points where the level1195moves most, not as the Bai--Perron break dates of a trend model. The two1196methods are complementary for that reason: a date flagged by both is a change1197in level that is not explained by a change in slope, and a date flagged only1198by the trend model is a kink.11991200\subsection{Bayesian online changepoint detection}1201\label{sec:m-bocpd}12021203The online detector of \citet{adams2007bocpd} maintains, after each1204observation, a posterior distribution over the \emph{run length} $r_t$, the1205number of months since the last changepoint. Let $H$ be the constant hazard1206(the prior probability that a change occurs at any month, here $1/60$, a prior1207mean run length of five years), and let the observations within a run be1208modelled as $y \sim \mathcal{N}(\mu, \sigma^2)$ with the conjugate1209Normal--Inverse-Gamma prior1210$\mu \mid \sigma^2 \sim \mathcal{N}(\mu_0, \sigma^2/\kappa_0)$,1211$\sigma^2 \sim \mathrm{IG}(\alpha_0, \beta_0)$. After $r$ observations1212$y_1, \dots, y_r$ of the current run the hyperparameters update as1213\begin{equation}1214  \kappa_r = \kappa_0 + r, \quad1215  \mu_r = \frac{\kappa_0 \mu_0 + \sum_{i \le r} y_i}{\kappa_r}, \quad1216  \alpha_r = \alpha_0 + \frac{r}{2}, \quad1217  \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},1218\end{equation}1219which the code computes recursively, one observation at a time, as1220$\mu' = (\kappa\mu + y)/(\kappa+1)$, $\kappa' = \kappa + 1$, $\alpha' = \alpha + \tfrac12$,1221$\beta' = \beta + \kappa (y - \mu)^2 / (2(\kappa+1))$. The predictive1222distribution of the next observation given a run of length $r$ is the1223Student-$t$1224\begin{equation}1225  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),1226  \label{eq:predictive}1227\end{equation}1228and the run-length recursion is1229\begin{align}1230  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}\\1231  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}1232\end{align}1233normalised at each step to give the posterior $R_{t+1}(r) = P(r_{t+1} = r \mid y_{1:t+1})$.1234The hyperparameters are initialised from the first six months of the series1235($\mu_0$ their mean, $\beta_0$ their variance, $\kappa_0 = 1$, $\alpha_0 = 1$),1236an empirical-Bayes choice that uses the start of the series twice and whose1237effect vanishes after a few dozen observations. Two detection statistics are1238derived. Because a constant hazard places mass $H$ on $r = 0$ at every step by1239construction, the probability of a change ``at $t$'' is uninformative on its1240own; the code reports instead $P(r_t \le 3 \mid y_{1:t})$, the posterior1241probability that a change occurred within the last four months, and the1242maximum of this quantity over December 2022 to March 2023 is the statistic1243reported for the reference date. The second statistic is the sequence of1244maximum-a-posteriori run lengths $\hat r_t = \arg\max_r R_t(r)$; a1245\emph{reset} is declared at month $t$ when $\hat r_t \le 2$ after1246$\hat r_{t-1} > 12$, that is, when the most probable explanation of the data1247switches from a run of more than a year to a run that has just begun, and the1248list of reset months is the online detector's set of changepoints. The1249exact offline analogue \citep{fearnhead2006exact} would give the smoothed1250rather than the filtered posterior; the filtered version is used because the1251question it answers---when would a contemporaneous observer have detected the1252change---is the one relevant to the lead-time evaluation of1253Section~\ref{sec:m-emerging}.12541255\subsection{Alternative event dates}1256\label{sec:m-altdates}12571258The ITS is re-estimated for four alternative markers (June 2020 for GPT-3,1259May 2022 for DALL$\cdot$E~2, April 2023 for GPT-4, October 2024 for o1), each1260coded as the first full month after the public release, and an event is1261skipped when fewer than twelve months precede or follow it in the series. The1262exercise is not a horse race among causes. Its purpose is to show whether the1263estimated level and slope changes are specific to the November 2022 marker or1264whether the series exhibits similar changes at other dates associated with1265the same technological sequence, in which case the honest description is of a1266multi-year acceleration rather than a single break; the Bai--Perron dates are1267the data-driven complement to this pre-specified list. For the total series1268the sensitivity of the reference-date ITS and of the Bai--Perron dates to the1269truncation month $t_{\mathrm{L}}$ is also tabulated.12701271\section{Emerging-topic detection}1272\label{sec:m-emerging}12731274The framework of RQ10 asks whether signals observable at a month $T$ predict1275which topics will have grown unusually by $T + h$. Its scientific content lies1276less in the models, which are deliberately simple, than in the discipline of1277the evaluation: features are computed from data dated at or before $T$,1278labels from data strictly after $T$, training cutoffs end before test cutoffs1279begin, and the test labels are observed in a period the training never saw.1280The implementation is \texttt{experiments/emerging\_detection.py}.12811282\subsection{Units and panel}12831284The units are OpenAlex topics (the \texttt{rank 0} topic of each work) with at1285least fifty eligible works over the whole window. Topics are used rather than1286the forty ontology categories because the categories are too few and too1287broad to emerge, and rather than the semantic clusters of1288Section~\ref{sec:m-semantic} because a cluster defined on the full corpus is1289not an out-of-time object: it would be known to exist only because of works1290after $T$. The plan lists semantic clusters re-estimated at each cutoff and1291keyword $n$-grams as additional unit types; neither is implemented in the1292current pipeline, and the manuscript reports topic-level results only. Topics1293have their own limitation in this role: the OpenAlex topic model is itself1294fixed in 2026 and assigns 2019 works to topics defined with knowledge of12952019--2026 literature, so a topic that ``exists'' in 2019 with a handful of1296works may be a 2024 construct projected backward. The label definition below1297partly neutralises this, because it conditions on the topic having at least1298twenty works in the year before $T$, but the caveat applies to any1299retrospective evaluation with a fixed vocabulary and is stated as the first1300limitation of the framework.13011302The panel consists of two $K \times M$ matrices over topics $k$ and months1303$t$ from January 2018 to the last month (October 2026 by default): the volume1304$n_{k,t}$, the number of month-precision eligible works of topic $k$ with1305first month $t$, and the citation inflow $c_{k,t}$, the number of internal1306citation edges whose cited work belongs to topic $k$ and whose citing work has1307first month $t$. Citation inflow is dated by the citing work's first month,1308not by the OpenAlex calendar-year counts, which is what makes it usable at1309monthly resolution and out of time.13101311\subsection{Features at a cutoff}13121313Write $V_k(a, b] = \sum_{t = a+1}^{b} n_{k,t}$ for the volume of topic $k$ in1314the months $a < t \le b$ (and likewise $C_k$ for citations). At cutoff $T$ the1315feature vector of topic $k$ is1316\begin{align}1317  g^{12}_{k,T} &= \log\bigl(1 + V_k(T{-}12, T]\bigr) - \log\bigl(1 + V_k(T{-}24, T{-}12]\bigr), \\1318  \mathrm{acc}_{k,T} &= g^{12}_{k,T} - g^{12}_{k,T-12}, \\1319  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}}, \\1320  \mathrm{cit}_{k,T} &= \log\bigl(1 + C_k(T{-}12, T]\bigr) - \log\bigl(1 + C_k(T{-}24, T{-}12]\bigr), \\1321  \mathrm{share}_{k,T} &= V_k(T{-}12, T] \Big/ \sum_{k'} V_{k'}(T{-}12, T], \\1322  \mathrm{age}_{k,T} &= T - \min\{ t : \textstyle\sum_{u \le t} n_{k,u} \ge 5 \},1323\end{align}1324where $\bar n$ and $s$ are the mean and standard deviation of the monthly1325volumes over the 25 months from $T-27$ to $T-3$. The first is twelve-month1326log growth, the second its change over a year (acceleration), the third a1327$z$-score of the last quarter's monthly volume against the trailing two years1328(the ``abnormal growth'' signal, which also serves as the baseline detector),1329the fourth citation acceleration, the fifth a size control, the sixth the1330topic's age in months since it reached five works. Every window ends at $T$;1331the one-month overlap between the $z$-score's trailing window and the1332quarter it is compared with is immaterial. The log-ratio form of growth with1333the $+1$ shift keeps the features finite for topics that were empty in the1334earlier window. Of the seven candidate signals of the mandate, the1335implemented set covers abnormal growth, citation acceleration and (through the1336panel of Section~\ref{sec:m-novelty}, which the script can merge but does not1337by default) semantic novelty; interdisciplinary connectivity is described in1338the script's documentation as a cross-area share but is not computed, and1339methodological adoption, benchmark proliferation and open-source activity are1340not implemented. These absences are recorded as scope limits of the current1341framework; the evaluation design does not depend on which features are1342present.13431344\subsection{Label at horizon \texorpdfstring{$h$}{h}}13451346For a horizon $h \in \{12, 24\}$ months, the future growth of topic $k$ after1347cutoff $T$ is1348\begin{equation}1349  g^{\mathrm{fut}}_{k,T,h} = \log\bigl(1 + V_k(T, T{+}h]\bigr) - \log\bigl(1 + V_k(T{-}h, T]\bigr),1350\end{equation}1351and the topic is \emph{eligible} at $T$ if $V_k(T{-}12, T] \ge 20$. The label is1352\begin{equation}1353  \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)1354     \;\wedge\; V_k(T, T{+}h] \ge 2 \max\{ V_k(T{-}h, T],\, 1 \} \;\wedge\; k \text{ eligible} \Bigr],1355  \label{eq:label}1356\end{equation}1357the topic is in the top decile of future growth among eligible topics at that1358cutoff and at least doubles its volume. The decile is defined within cutoff,1359so that the positive rate is roughly ten per cent at every $T$ regardless of1360the overall growth of the corpus; the doubling condition removes topics that1361reach the top decile by growing from a small base in a quiet period. The1362protocol phrases the label as ``top-decile growth and citation share''; the1363implemented label uses volume growth only, and citation share is a feature1364rather than part of the outcome. This is a deliberate simplification---a1365citation-based outcome at a twelve-month horizon is dominated by the1366right-truncation of citations---and is recorded as a deviation. The label1367uses only $n_{k,t}$, so a topic can be ``emerging'' in this sense while its1368citation impact is unremarkable; Part IX reports the citation profile of the1369positives separately.13701371\subsection{Cutoffs, models and metrics}13721373Training cutoffs are every third month from December 2019 to December 2021;1374test cutoffs are every third month from January 2023 to October 2024 for1375which $T + h$ lies within the panel. With $h = 24$ the last training label1376uses data to December 2023, which is after the reference date but more than a1377year before the first test label window closes, and no test cutoff precedes13782023; the twelve months of 2022 are used by neither set as a cutoff, which1379is the temporal gap that separates training from test in the sense of1380\citet{bergmeir2012crossval}. The plan proposed training cutoffs through 2022;1381the implementation stops at December 2021 so that the training labels do not1382extend into the test period at $h = 24$, a stricter separation than the plan.1383Rows are the eligible (topic, cutoff) pairs; features are the six quantities1384above with non-finite values replaced by zero.13851386Three predictors are compared: the $z$-score baseline, which ranks topics by1387$z_{k,T}$ alone and involves no fitting; an $\ell_2$-regularised logistic1388regression (regularisation strength $C = 1$, on unstandardised features, so1389the penalty is not scale-invariant and acts most on the small-range features);1390and a gradient boosting classifier \citep{friedman2001gbm} with 300 trees of1391depth three and learning rate 0.05, seed 44, as implemented in scikit-learn1392\citep{pedregosa2011sklearn}. The metrics on the pooled test rows are the area1393under the ROC curve \citep{hanley1982auc}, which is the probability that a1394randomly chosen positive is ranked above a randomly chosen negative, and1395precision at $k \in \{20, 50\}$, computed within each test cutoff as the share1396of positives among the $k$ highest-ranked topics and averaged over cutoffs; the1397AUC is also reported per cutoff to show its stability. Hypothesis H8 sets the1398bar at an AUC above 0.70 and precision at 50 above 0.40 against the baseline.1399Because the positives are defined by a within-cutoff decile, precision at 501400has a chance level of about ten per cent, and a precision at 50 of 0.401401means that twenty of the fifty flagged topics were among the positives of1402that cutoff.14031404\subsection{Lead time and the preregistered known-emergence set}14051406The protocol fixes before estimation a list of twelve developments that1407anyone familiar with the period would call emergent (large language models,1408diffusion models, neural radiance fields, LLM agents, retrieval-augmented1409generation, state-space sequence models, vision--language models, mechanistic1410interpretability, speculative decoding, mixture of experts at scale,1411test-time compute and reasoning models, AI for code generation) and predicts1412that the detector flags each at least six months before its peak growth1413month. The evaluation requires a mapping from each development to one or1414more OpenAlex topics, and this mapping is the weak point of the design: it1415must be made by hand, after the taxonomy work, and a development that has no1416topic of its own (because the OpenAlex topic model folds it into a larger1417one) cannot be detected by a topic-level detector whatever its merits. The1418script reserves a table for this mapping and it is empty in the current1419version; the lead-time statistic is therefore1420\pending{known-emergence lead times, experiments/known\_set.csv not yet populated},1421and the mapping, when made, will be listed in the appendix with the reason1422for each choice. Lead time itself is defined, for a development mapped to1423topic $k$, as the number of months between the first test cutoff at which1424$k$ ranks in the top 50 and the month of maximum $g^{12}_{k,t}$ over the1425window; a development whose peak growth precedes the first test cutoff has1426undefined lead time and is reported as such rather than dropped.14271428\subsection{Look-ahead safeguards and what they do not cover}14291430The safeguards are structural: features are functions of panel columns up to1431$T$ (enforced by index arithmetic, not by convention), labels of columns after1432$T$, cutoffs are separated by a gap, and the panel is built once from the1433corpus so that the same data serve all cutoffs. What they do not cover is1434information that entered the panel through steps performed in 2026 with full1435knowledge of the period: the topic vocabulary, the eligibility rules, the1436linkage, and the month-precision filter. A detector evaluated this way answers1437``given the 2026 topic model, would these signals have ranked the eventual1438winners early?'', which is a legitimate question about the signals and a1439weaker one about the deployability of the system. The semantic-cluster1440extension that the plan describes, with clusters re-estimated at each cutoff1441from embeddings of works dated before it, is the design that would address1442this, and it is left as the stated next step of the framework.14431444\section{Knowledge-graph extraction}1445\label{sec:m-kg}14461447\subsection{Structural and extracted layers}14481449The knowledge graph has two layers of very different epistemic status. The1450structural layer---works, authors, institutions, countries, sources, OpenAlex1451topics, arXiv categories, taxonomy categories, and the citation and1452classification edges among them---is derived from the source databases by the1453deterministic rules of Sections~\ref{sec:m-linkage}--\ref{sec:m-networks}; its1454errors are the errors of the sources and of the classifier, which are1455quantified. The extracted layer---methods, models, datasets, benchmarks,1456problems, metrics and claims, with typed edges to the works that introduce,1457use, evaluate on, extend, compare against or address them---is produced by a1458language model from abstracts, for the high-priority set only, and its1459errors are of a different kind: omissions, hallucinated entities, wrong1460roles, and claims paraphrased beyond what the abstract states. The mandate1461requires that every inferred relationship carry provenance, confidence and a1462verification status, and the extraction is designed so that these three1463fields are not decorative.14641465\subsection{High-priority and landmark sets}14661467The high-priority set is selected by \texttt{literature\_synthesis/select\_landmarks.py}1468from eligible, non-retracted works with a primary category: within each1469(primary category, publication year) cell the works are ranked by1470$\mathrm{NCS}^{(36)}$ (for 2025 and 2026, for which the window is empty, by1471$c^{(12)}$ divided by its year mean), and the top $\max\{25,\ \mathrm{round}(10{,}000\, n_{\mathrm{cell}} / n)\}$1472are taken, so that cells are represented in proportion to their size with a1473floor that keeps small categories and recent years present. The landmark set1474takes the top $\max\{15, \lfloor 1000/40 \rfloor\} = 25$ works of each category by1475the same score, adds the 200 works with the highest $c^{(36)}$ overall, and1476removes duplicates; it is flagged for human review (checkpoint H-3) in its1477entirety. Both selections are citation-based and inherit the biases of1478citation counts: they favour the categories and years whose works are cited1479early, and they cannot contain a work whose influence has not yet appeared in1480citations, which for 2025--2026 means that the ``high-priority'' recent works1481are the early-cited ones, not necessarily the important ones.14821483\subsection{Schema, provenance and machine verification}14841485For each work in the high-priority set with an abstract, the extractor1486(\texttt{knowledge\_graph/03\_extract\_entities.py}) submits the title, year and1487abstract (truncated to 3,000 characters), in batches of five works, to1488\texttt{claude-sonnet-5-5} with a JSON schema enforced by the API's structured1489output mode. The schema requires, per work, a contribution type from1490\{theory, method, empirical, benchmark, engineering, survey, other\}; a list of1491entities each with a name, a kind in \{method, model, dataset, benchmark,1492problem, metric\}, a role in \{introduced, used, evaluated\_on, extended,1493compared\_against, addressed\}, a supporting \emph{span} and a confidence; and1494a list of claims each with a text, a kind in \{result, improvement,1495negative\_result, reproduction, contradiction\}, a span and a confidence. The1496system prompt instructs the model to quote a verbatim span of at most 25 words1497from the abstract for every entity and claim, to use canonical names, and never1498to infer anything not stated. The role vocabulary maps onto the edge types of1499the mandate (\textit{introduces method}, \textit{uses dataset},1500\textit{evaluates}, \textit{extends}, \textit{addresses research problem});1501\textit{contradicts} and \textit{reproduces} are claim kinds rather than1502entity roles, because a contradiction or a reproduction is a relation between1503a work and a prior finding that an abstract rarely names as an entity.15041505Provenance is the pair (work identifier, span). Machine verification is the1506check that the span occurs verbatim, after lower-casing and trimming, in the1507abstract the model was given:1508\begin{equation}1509  \mathrm{status}(e) \;=\;1510  \begin{cases}1511    \text{machine-verified} & \text{if } \mathrm{lower}(\mathrm{span}(e)) \subseteq \mathrm{lower}(\mathrm{abs}(w)),\\1512    \text{unverified}       & \text{otherwise},1513  \end{cases}1514\end{equation}1515with \emph{human-verified} reserved for edges the principal investigator has1516reviewed. The check is weak in a precise sense: it establishes that the1517evidence quoted for an edge exists, not that it supports the edge. A model1518that quotes a genuine sentence and attaches the wrong role to it produces a1519machine-verified wrong edge. The confidence field is the model's own stated1520probability that the extraction is correct and is not calibrated by this1521study; it is stored so that downstream users can threshold it and so that its1522calibration can be estimated on the human-verified subsample. Every record1523carries \texttt{evidence\_type = abstract}, and the manuscript treats1524abstract-derived edges as what they are: evidence that an abstract asserts a1525relation, which is not a full-text review and is never cited as establishing1526a scientific finding (CLAUDE.md §1). Extractions are appended to a1527resumable file, requests that the model refuses are skipped and counted, and1528the cost is tracked against the budget of amendment A-004. What is and is not1529evidence can therefore be stated plainly: citation edges are evidence of1530citation; classification edges are evidence of rule firing with measured1531agreement; extracted edges are evidence that a language model, reading an1532abstract, asserted a relation and quoted a sentence that exists.15331534\section{Uncertainty, provenance and reproducibility}1535\label{sec:m-uncertainty}15361537\subsection{What is uncertain and how it is quantified}15381539The descriptive quantities of Sections~\ref{sec:m-bibliometrics}1540and~\ref{sec:m-networks} are computed on the whole eligible corpus and carry no1541sampling error; their uncertainty is measurement error, which enters through1542linkage (Section~\ref{sec:m-linkprecision}), classification1543(Section~\ref{sec:m-validation}), reference resolution and the completeness1544of affiliations and abstracts, each of which is estimated and reported as a1545rate rather than propagated into intervals. Propagating a classification1546precision of, say, 0.85 into an interval for a category share would require a1547model of how errors are distributed over time, and the honest statement is1548that a category's share is known up to the classifier's error, which is1549reported by category and, where the validation sample permits, by period.15501551Three families of quantities do carry explicit intervals. The ITS1552coefficients carry HAC standard errors and the placebo rank of1553Section~\ref{sec:m-placebo}; the Bai--Perron break dates carry no interval1554in the current implementation and are reported with the agreement of the two1555criteria and the sensitivity to truncation. The detector metrics carry1556per-cutoff values, whose dispersion across cutoffs is the relevant measure of1557stability, since the rows within a cutoff are not independent. And the1558cluster count and the category similarity matrices carry the split-half ARI\@.1559Where the manuscript reports a bootstrap interval for a corpus statistic (the1560Gini coefficient by year, the cross-area shares), it is the percentile1561interval of the non-parametric bootstrap \citep{efron1979bootstrap} over1562works, with 1,000 replications and seed 44, computed by the table-making1563script at reporting time; the protocol's commitment to ``bootstrap or HAC1564intervals'' is met by these two devices, and a reported figure without an1565interval is a population count for which none is appropriate. The1566indicators of Section~\ref{sec:m-bibliometrics} that depend on OpenAlex's1567nightly recomputation (FWCI, total citation counts) are snapshot quantities1568and are dated.15691570\subsection{Seeds and determinism}15711572Every stochastic step is seeded with the constant 44: the validation and1573linkage samples (hash ordering salted with the seed), the atlas sample and the1574two UMAP fits, the split-half permutations, the gradient boosting classifier,1575and the bootstrap. The regular-expression classifier, the SQL stages and the1576structural-change toolkit are deterministic. Two steps are deterministic only1577up to the platform: embedding on Apple-silicon GPUs with float16 storage1578produces vectors that differ at the fourth decimal from a CPU run, and UMAP's1579parallel optimisation is reproducible only with a fixed seed and a fixed1580thread count, which the runbook records. The LLM-based steps (two taxonomy1581raters, one extractor) are not deterministic even at zero temperature across1582model versions; their outputs are archived in full (the JSONL rating and1583extraction files, with the model identifier and the usage of every call) so1584that every downstream number can be recomputed from the archived outputs1585without re-querying the model, and a re-run with a later model version is a1586new experiment, not a replication.15871588\subsection{Ledgers, hashes and the chain of custody}15891590The raw inputs are pinned as follows. Each OpenAlex snapshot file downloaded1591from the public bucket is hashed with SHA-256 on arrival and the hash,1592record count, computer-science record count and malformed-record count are1593written to a SQLite ledger keyed by the file's URL and manifest entry; a file1594whose hash or count does not match the manifest is re-downloaded. The DBLP1595XML dump is identified by the MD5 published with it (verified before parsing)1596and its size; the ACL Anthology export by the SHA-256 of the file; the arXiv1597OAI-PMH harvest by the raw XML pages, kept verbatim, from which the Parquet1598table is rebuilt. Every derived table is written by a script whose1599invocation, inputs, outputs and measured wall time are listed in1600\texttt{reproducibility/RUNBOOK.md}, and the Python environment is locked1601(\texttt{reproducibility/environment\_M3U96b.txt}). Numbers enter the1602manuscript only through \texttt{manuscript/tables/numbers.tex}, generated by1603\texttt{tables/make\_numbers.py} from the result files, so that a number in1604the text can be traced to a macro, the macro to a result file, the result file1605to a script and the script to a ledger entry. The chain has one weak link,1606stated here: the result files on the compute node are not themselves hashed1607into the repository, so a reader verifying the chain must either re-run the1608pipeline or trust the node's copy; the release archive of Phase 9 will add1609their hashes.16101611\subsection{Human checkpoints and the status of conclusions}16121613Five checkpoints (H-1 to H-5, \texttt{reports/HUMAN\_REVIEW\_CHECKPOINTS.md})1614require the principal investigator's review of the linkage sample, the1615taxonomy validation sample, the landmark list, the structural-change results1616and the conclusions. Until a checkpoint is signed, the manuscript marks the1617conclusions that depend on it as pending human review, and the numbers that1618depend on it are rendered by the \texttt{\textbackslash pending} macro rather1619than typed. This is the mechanism by which the mandate's requirement that no1620agent approve its own findings is made visible in the text rather than1621asserted in a preface; it also means that a version of this manuscript1622compiled before the checkpoints are signed contains visibly incomplete1623statements, which is the intended behaviour.16241625
Files · a549246b6e6d148c37f1b3b1d15a674cd2828d88
Menu

Theme