Document
Codebook, version 2
Codebook, version 2
How each coded unit is coded. Written 2026-09-30 and revised
2026-10-01 (amendment A14), 2026-10-12 (amendment A28) and 2026-10-18
(amendment A29, tip intake) from docs/methodology-v2.md
section 2, which is the authority; this file turns its rules into
decisions with examples. Changes go in docs/amendments.md
first.
Version 1 (the single stance code and the six-value
question_frame) is retired. Rows coded under version 1 were
recoded from their sources, not mapped (amendment A2).
About the examples. Examples marked constructed are invented to show a rule and must never be cited as quotes.
0. One unit, and how to read it
A unit is one statement by one speaker on one occasion; one occasion can give several units, since each distinct passage of an essay, talk or interview is its own row (decided 2026-10-18; amendment A28). Code only what the quoted words and their immediate context say. Don't use what the speaker is known for, what they said elsewhere, or what the article around the quote implies.
Read the source, not just the stored quote. The stored quote (60
words or fewer) is evidence for the codes. If a code depends on a
sentence outside the stored quote, either change the quote to include it
or code unexpressed / ambiguous.
1. target_capability: what capability is the unit about?
| code | the capability | typical words |
|---|---|---|
conversation |
passes as human in conversation | Turing test, can't tell it from a person |
narrow_task |
one specific task or domain | chess, driving, radiology, coding contests |
broad_competence |
most economically valuable or intellectual work; "AGI", "human-level AI" when used this way | AGI, human-level, do any job a person can |
superintelligence |
exceeds humans broadly | superintelligence, smarter than us at everything, the Singularity (when it means AI beyond humans) |
si_assist |
AI helps humans build AI | AI speeds up our researchers, copilots for ML engineers |
si_research |
AI does parts of AI research on its own | AI runs experiments, writes the training code, automated AI researcher for some tasks |
si_modify |
AI changes its own code or weights | rewrites itself, modifies its own weights |
si_sustained |
successive improvements with little human involvement | intelligence explosion, recursive self-improvement, "takeoff", each generation builds the next |
none |
no capability is claimed | a statement about the word "AGI", about hype, about policy with no capability in view |
Choosing among them. Pick the capability the
speaker's claim is about. If they name two (for example "human-level by
2029, Singularity by 2045"), code the one the unit leads with and record
the other in definition_note.
The four self-improvement levels. Ask two questions in order:
- Who does the improving? Humans with AI help →
si_assist. The AI itself → go on. - How far does it go?
- A part of the research pipeline, with humans still steering →
si_research. - The system edits itself (its own code or weights) →
si_modify. - Repeated rounds, each better system making the next, with little
human role →
si_sustained.
- A part of the research pipeline, with humans still steering →
"Takeoff" and loose self-improvement words (ruling 12,
A14). Code the lowest level the words support and set
ambiguous: yes; put any speed the speaker gives ("slow",
"fast", "gentle") in timeline_text. The lowest level
depends on the answer to question 1 above:
When the words don't say who does the improving (a bare "takeoff" or "hard takeoff", "FOOM", "large jumps in intelligence"), the lowest level is
si_assist(A15 ruling 3 confirms this for a bare "takeoff").When the words do say the AI improves itself ("the AI will improve itself", "a machine improves itself", "a self-improving system", "improve their own capabilities", "recursive self-improvement"), question 1 is answered and the lowest level those words support is
si_modify. Decided 2026-10-12 (A28): an earlier version of this paragraph listed "the AI will improve itself" among the words that don't say who improves, which contradicted question 1.Code
si_sustainedonly when the words themselves describe repeated rounds with little human role ("each generation builds the next", "an intelligence explosion with no one in the loop", "reprogram itself to be smarter and iterate ... 24 hours a day"). The labels "recursive self-improvement" and "intelligence explosion" alone don't do that: they say the system improves itself, sosi_modify.Rejections and doubts. When the speaker rejects or doubts runaway growth ("there will not be the run away exponential growth", "intelligence explosion is impossible", "a hard takeoff scenario is very unlikely"), keep the level the speaker is rejecting (the words describe it) rather than the lowest level. Coding
si_assistwould turn a rejection of runaway growth into a rejection of AI helping people build AI, which the speaker never said. Decided 2026-10-12 (A28).Seed example,
altman-2023-04: Altman told the New York Times it would be a "very slow takeoff". The words don't say who improves the systems or how, sotarget_capability: si_assist,ambiguous: yes,timeline_text: "very slow takeoff".Constructed: "Our engineers now write most of their code with model help." →
si_assist.Constructed: "The model ran the ablation studies overnight without anyone." →
si_research.Constructed: "Once a system can rewrite its own weights, all bets are off." →
si_modify,present_capability: hypothetical.Constructed: "Each generation will design the next, faster than we can follow." →
si_sustained.
2. frame_primary and frames_present: which questions does the unit raise?
| code | the question |
|---|---|
possibility |
Can it be built at all, in principle? |
timeline |
When will it arrive? |
capability_now |
Is a current system already it, or close? |
self_improvement |
Can current or imminent systems improve themselves? |
definition |
What would count? |
consequences |
What happens if or when it arrives (risk, economy, society)? |
governance |
What should be done about it (regulation, pauses, safety work, coordination)? |
other_concern |
A different AI question leads: jobs, reliability, privacy, bias, misinformation, military, consciousness, ownership |
frame_primaryis the question the unit leads with: what the speaker is mainly answering, usually what they were asked or what the headline claim is about.frames_presentlists every question raised, separated by;, and always includesframe_primary. A question counts as present when the unit raises it, whatever answer is given ("it's not close" raisescapability_now).concern_tagis required whenother_concernis present (one ofjobs,reliability,privacy,bias,misinformation,military,consciousness,ownership,other), and blank otherwise.- A unit framed as self-improvement should normally have an
si_*target; if it doesn't, say why in notes.
Test for possibility against timeline:
delete every date from the unit. If the claim still stands and is about
whether it can be done, it's possibility.
3. endorsement: does the speaker endorse that the target capability will exist?
Endorsement is about the future: whether the
capability will exist, ever or by the horizon the speaker names (ruling
9, A14). Whether it exists now is a different field,
present_capability.
| code | meaning |
|---|---|
accepts |
says it will happen (or has already happened). Needs "will", "expect", "I think", "predict", "going to", "almost certainly", a stated probability of 50% or more, a bet, "decades away", "at least N years", or a firm, unhedged first-person date ("I'm still saying 2029") (A14 rulings 10 and 11; A15 rulings 1, 5 and 6) |
rejects |
says it won't happen, ever or by the horizon given. "It isn't here yet" is not a rejection (ruling 9) |
uncertain |
explicitly says they don't know, gives a probability below 50%, or hedges the date with "may", "might" or "could" (ruling 10). "Probably", "likely" and "perhaps" are not hedges of this kind: see the A28 rule below |
conditional |
endorses it only if a stated condition holds ("if scaling continues", "if we solve X") |
unexpressed |
discusses it without taking a position |
Silence is never acceptance. Endorsement is coded
only from words the speaker actually said. Every code other than
unexpressed needs an anchor: the exact words in the stored
quote that carry the position, recorded in notes as
basis: "<words copied from the quote>".
scripts/validate.py checks that the anchor appears in the
quote. If you can't point to such words, the code is
unexpressed.
Rulings of 2026-10-01 (A14), with examples from the seed data:
- Not here yet (ruling 9). Denying that the
capability exists now is
present_capability: disputed. Endorsement then comes from what the speaker says about the future, or isunexpressedif they say nothing about it. Seed example,lecun-2017-02: "We're very far from having machines that can learn the most basic things about the world in the way humans and animals can do." This denies present capability and says nothing about whether such machines will come, sopresent_capability: disputed,endorsement: unexpressed(it wasrejectsbefore the ruling). - Hedged dates (ruling 10). "May", "might" or "could"
with a date is
uncertain. Fill the timeline fields anyway and keep the hedge intimeline_text. When a hedge and an acceptance word govern the same date, the hedge decides (agent interpretation, noted in A14). Seed example,hinton-2023-06: "Now, I think we may be much closer, maybe only five years away from that." →endorsement: uncertain(basis"maybe only five years away"),timeline_type: qualitative,timeline_year: 2028(computed: 2023 + 5),timeline_text: "maybe only five years away". - "Decades away" (ruling 11) is
acceptswithtimeline_type: qualitative; leavetimeline_yearblank unless a number of decades is given. Seed example,marcus-2022-04: "we are still likely decades away from general-purpose, human-level AI" →endorsement: accepts(basis"still likely decades away"),present_capability: disputed,timeline_type: qualitative,timeline_text: "still likely decades away", andambiguous: yesfor the "likely" (A28). - Self-improvement words (ruling 12): see section 1.
- "Probably", "likely" and "perhaps" (A28, decided
2026-10-12). A position resting on one of these words is
acceptswithambiguous: yes(field: endorsement), whether the word governs the arrival claim ("it's likely that machines will be smarter than us") or its timing ("still probably decades away", "likely before too long"). If "may", "might" or "could" governs the same claim, ruling 10 wins and the code isuncertain. Agent reading (2026-10-12): the rule covers a positive position; a negative one ("unlikely", "perhaps we are just not smart enough") is not an acceptance and keeps its own code (rejectsoruncertain), and a word that governs something other than the claim ("algorithms, likely yet to be invented") does not trigger the rule. Seed example,marcus-2013-01: "It's likely that machines will be smarter than us before the end of the century" →endorsement: accepts(basis"It's likely that machines will be smarter than us before the end of the century"),ambiguous: yes.
Hard cases:
- Giving a date usually carries endorsement, but check the
words. "AGI by 2029" with "will" or "I think" anchors
accepts. "People say 2029; who knows" isuncertain(basis"who knows") orunexpressed. - Worrying about something is not endorsing it. "If
superintelligence arrives it could end us" is
conditionalat most, andunexpressedif no arrival claim is made. Writing about regulation does not establish that the author accepts feasibility. - Rejecting a near date is not rejecting the
capability. "Not by 2027" →
rejectsfor that horizon only; record the year with thenot_bytag (section 5) and say in notes whether the speaker accepts it eventually. If the same unit also says "but it will come eventually", codeacceptswith the hedge intimeline_text; setambiguous: yesif the two are balanced. - Rejecting a route is not rejecting the capability (A15
ruling 4). "Language models are not a road to AGI" says nothing
about whether AGI will exist. Code
unexpressed, and keep the route claim inclaim_summaryand notes. Seed example,lecun-2024-02: "They're not a road towards what people call 'AGI.'" →endorsement: unexpressed. - Minimum years are acceptance (A15 ruling 5). "At
least a decade" or "at least thirty or fifty years" asserts arrival with
a minimum:
accepts,timeline_type: rangewithtimeline_yearset to the minimum,timeline_year_highleft blank, thelower_boundtag, and "at least" kept intimeline_text. Seed example,marcus-2016-01: "aren't going to be for at least thirty or fifty years" (2016) →accepts,range,timeline_year: 2046, high bound open. - Probabilities. A stated probability of 50% or more
by a date →
acceptswithtimeline_probfilled (ruling 10). Below 50%, or a wide spread stated as such →uncertain. - Jokes and sarcasm →
unexpressedandambiguous: yes, unless the speaker explains the joke.
One row per capability (A15 ruling 13)
When one statement makes distinct claims about distinct target
capabilities, it gets one row per capability. The rows share the quote,
source and date; their ids carry a one-letter suffix
(marcus-2026-04a, marcus-2026-04b); each row
is coded for its own capability.
Seed example 1, marcus-2026-04: "it's great for
example at (some) code optimizations, but not even (as the blog makes
clear) actual RSI, which remains speculative." Two claims:
marcus-2026-04a: AI helping build AI exists →target_capability: si_assist,present_capability: demonstrated,endorsement: accepts(basis "it's great for example at (some) code optimizations").marcus-2026-04b: recursive self-improvement does not exist yet →si_sustained,present_capability: disputed,endorsement: unexpressed(nothing said about the future).
Seed example 2, altman-2025-06: "We are past
the event horizon; the takeoff has started. Humanity is close to
building digital superintelligence…"
altman-2025-06a: "the takeoff has started" → the lowest self-improvement level the words support (si_assist),present_capability: claimed,ambiguous: yes.altman-2025-06b: superintelligence →frame_primary: timeline,endorsement: accepts,timeline_type: qualitative,timeline_text: "close".
4. present_capability: does it exist now, in the speaker's view?
| code | meaning |
|---|---|
demonstrated |
the speaker says it already exists and points to it |
claimed |
the speaker says it exists, without pointing to evidence |
disputed |
the speaker says current systems do not have it |
hypothetical |
discussed as a future or possible capability |
na |
no capability in view (target none) |
na exactly when target_capability is
none.
5. Timeline fields
As in version 1, with three tags (in notes) for claims that aren't arrival dates:
| field | rule |
|---|---|
timeline_type |
point_year, range,
prob_by_year, qualitative,
none |
timeline_year |
an absolute year; for "in 10 years" add it to the statement year and
record computed: 2023 + 10 in notes |
timeline_year_high |
only for range |
timeline_prob |
0 to 1, only when the source gives a probability. "Soon" is never converted to a number |
timeline_text |
the speaker's own words for the timing, always filled when a hedge is present |
not_by: YYYYfor "it won't happen by YYYY". Leavetimeline_yearblank and codetimeline_type: qualitative. These are not arrival dates and charts must not plot them as such.lower_boundfor "at least N years" or "no sooner than YYYY". Filltimeline_yearwith the bound and add the tag. Withtimeline_type: range, the high bound may be left blank (open-ended minimum, A15 ruling 5).- Proximity (distant, medium, near, present) is worked out when charts are drawn, never stored.
6. Consequences, affect and agency
| field | codes | rule |
|---|---|---|
consequence_type |
existential, economic,
social, mixed, unspecified |
the kind of consequence the unit expects. unspecified
when none is named |
consequence_valence |
beneficial, harmful, mixed,
unspecified |
whether those consequences are good or bad in the speaker's words |
affect |
enthusiasm, fear,
resignation, neutral, mixed,
unexpressed |
emotional posture, only from explicit cues
("exciting", "scary", "I'm worried", "nothing we can do"). A plain
forecast is unexpressed, not neutral; use
neutral only when the speaker signals detachment ("I'm just
reporting the trend") |
agency |
can_influence, cannot_influence,
unexpressed |
does the speaker say the outcome can be shaped? "We must regulate" →
can_influence; "it's coming whatever we do" →
cannot_influence |
These are separate on purpose. Someone who expects AGI in five years can be thrilled, frightened, resigned or organizing.
- Constructed: "AGI by 2030, and frankly it terrifies me, but
good policy can still steer it." →
accepts(basis"AGI by 2030"),affect: fear,agency: can_influence. - Constructed: "It's coming whether we like it or not." →
accepts(basis"It's coming"),affect: resignation,agency: cannot_influence.
7. elicitation: how did the statement come about?
| code | meaning |
|---|---|
unprompted |
the speaker chose to say it: their own blog, post, book, essay, talk |
interview |
answering a question in an interview, podcast or hearing |
survey |
answering a survey item |
quoted |
the unit is a claim quoted inside someone else's article, without the full exchange available |
Secondhand rows are usually quoted.
8. Other fields
definition_note: what the speaker means by AGI in this unit, if they say.coding_confidence:highwhen the codes are clear and the source is primary;mediumwhen one needed judgment;lowwhen several did, or the source is secondhand.ambiguous:yeswhen the words support two codes equally. Kept as a code, never resolved by guessing. Say which field in notes.datemust matchdate_precision:YYYY-MM-DD,YYYY-MMorYYYY.quote: verbatim, 60 words or fewer, "..." only within one passage.- Primary and secondhand. Primary = the speaker's own
words in something they produced or took part in (their writing, a
transcript, a recorded talk, an interview with direct quotes by the
outlet that did it). Secondhand = someone else's report or paraphrase,
or a quote not traced to where it was said. Secondhand rows carry the
secondhandtag andcoding_confidence: low. coder:john,claude-agent(version 1, retired),claude-agent-v2,claude-agent-v2.1(rows coded or changed under the A14 rulings, including the full panel collection), orclaude-session-frontier-traces-2026-10-17(the frontier-lab traces of Musk, Amodei, Hassabis and Sutskever folded in from pull request 13, coded under this codebook unchanged).
9. Notes tags
Notes start with any of these tags, separated by ; ,
then free text:
| tag | meaning |
|---|---|
secondhand |
see section 8 |
incidental |
found while searching for a different speaker |
sampled |
kept under the every-third rule for a busy year |
computed: <working> |
how an absolute year was worked out |
basis: "<words>" |
the words carrying the endorsement (required unless
unexpressed) |
not_by: YYYY |
"won't happen by YYYY" (section 5) |
lower_bound |
the timeline year is a minimum (section 5) |
tip |
entered through tip intake (docs/tip-intake.md), not
found first by a full pass or the weekly reading (A29); counted in every
figure and shown as "added from a tip" (A32) |
tip_missed |
a tip row whose source the fixed searches did not find
when the tip arrived; counted like any other row, and it starts a better
search for everyone (A32, which retired tip_only on
2026-10-21). Always with tip |
asr_unverified |
the quote comes from machine captions and two automatic transcripts
did not both carry it; coding_confidence no higher than
medium (A29) |
10. Mapping to Fast and Horvitz 2017
Methodology-v2 section 5 asks for the categories of Fast and Horvitz's 2017 study of New York Times AI coverage to be reconciled with these codes before the media stream starts. That reconciliation belongs to the media stream and has not been done yet.
Rendered from docs/codebook.md at version a7bd17a.