research/Person
15,536 records · yaml · accepts undeclared fields
Fields
| Field | Type | Required | Meaning |
|---|---|---|---|
slug |
string matching /^[a-z0-9][a-z0-9-]*$/ | required | Unique record identity; also the filename and the person page URL segment. |
stub |
exactly true | optional | Marks a thin record: hidden from default listings and search, but still served at its own URL. |
renderings |
list of object (additional keys allowed) | required | Generated human-facing pages built from this record; regenerate them rather than editing them. |
↳ path |
non-empty string | optional | On-disk location of the generated page, omitted when it is rendered on demand. |
↳ published |
string | required | Public URL where the generated page is served. |
↳ kind |
non-empty string | required | Which kind of generated page this is. |
provenance |
object (additional keys allowed) | required | How this record was captured, including caveats that must survive into its renderings. |
↳ summary |
non-empty string | optional | Summary of how this record was captured. |
↳ caveats |
list of any shape (not yet constrained by the schema) | optional | Numbered caveats that must survive into renderings. |
edges |
list of object (additional keys allowed) | required | Typed links from this person to other Person records, such as coauthors. |
↳ name |
non-empty string | required | Display name of the entity at the far end of this link. |
↳ openalexId |
non-empty string | optional | OpenAlex identifier that disambiguates the linked entity. |
↳ kind |
non-empty string | required | What kind of relationship this link represents. |
↳ provenance |
any shape (not yet constrained by the schema) | optional | How this link was established. |
name |
non-empty string | required | Display name of this person. |
headline |
non-empty string | required | One-line description of who this person is. |
ids |
object (additional keys allowed) | required | External database identifiers for this person, keyed by source, used to disambiguate rather than by name. |
↳ provenance |
object (additional keys allowed) OR list of object (additional keys allowed) | required | Pointer to how these external identifiers were looked up and confirmed. |
↳ form 1 |
object (additional keys allowed) | required | |
↳ via |
non-empty string | required | Skill or tool that fetched the referenced payload. |
↳ holds |
non-empty string | required | Plain-language description of what the payload contains. |
↳ form 2 |
list of object (additional keys allowed) | required | |
↳ via |
non-empty string | required | Skill or tool that fetched the referenced payload. |
↳ holds |
non-empty string | required | Plain-language description of what the payload contains. |
papers |
object (additional keys allowed) | required | Pointer to every paper by this person, as a raw fetched payload; the curated subset lives as separate Paper records found by querying their authors. |
↳ via |
non-empty string | required | Skill or tool that fetched the referenced payload. |
↳ cacheKey |
non-empty string | optional | lib-cache key holding the full fetched response. |
↳ runDir |
non-empty string | optional | lib-runs directory holding the call and its provenance records. |
↳ command |
non-empty string | optional | Command that produced the referenced payload. |
↳ holds |
non-empty string | required | Plain-language description of what the payload contains. |
met |
object (additional keys allowed) | required | Skill-owned meeting log; the only place this information is recorded. |
↳ status |
boolean | required | Whether the user has met this person. |
↳ events |
list of any shape (not yet constrained by the schema) | required | One entry per meeting with this person, recording when, where, and what happened. |
why |
object (additional keys allowed) | required | Why this person matters to the user, with supporting evidence. |
↳ thesis |
non-empty string | required | One to two sentences stating why this person matters to the user. |
↳ evidence |
list of any shape (not yet constrained by the schema) | required | Individual facts that support the thesis. |
roles |
list of any shape (not yet constrained by the schema) | required | Hypothesized roles this person plays relative to the user's research (e.g. potential collaborator or mentor). |
interest_timeline |
list of any shape (not yet constrained by the schema) | required | This person's research interests over their career, organized era by era with time as the primary axis. |
connection_degrees |
list of any shape (not yet constrained by the schema) | required | How many hops of coauthorship or collaboration separate this person from people the user already knows. |
footprint |
object (additional keys allowed) | required | Legacy catch-all for this person's public presence; superseded by the dedicated sessions field for talks. |
sessions |
list of any shape (not yet constrained by the schema) | required | Talks this person has attended or given, the single store for both. |
credentials |
object (additional keys allowed) | optional | Verification status of this person's external research credentials, such as arXiv endorsement or reviewer standing. |
followups |
any shape (not yet constrained by the schema) | optional | Outstanding follow-up actions related to this person, such as a promised email. |
self |
exactly true | optional | Marks this record as the user's own canonical Person record. |
Rules
personIdentifierStringsAreNonBlank
Defects
Checked 200 of 15,536 records (the per-store cap is 200), so this is a sample, not a whole-store verdict.
No defects in the 200 record(s) checked.
Example record
/Users/eshao/.config/mnt/data/research-biography/people/arvind-narayanan.yaml
# Canonical person record. See _template.yaml for the Person schema and shared pointer grammar.
# This record remains canonical; references/arvind-narayanan.md is a generated rendering.
# FORMAT RULES: records are SINGLE-DOCUMENT spec YAML - never add Markdown
# frontmatter (`---`/`published:` mdd stamps split the stream and break
# yaml.safe_load consumers; browsing is the research-records viewer's job).
# Quote any scalar containing ": " anywhere, and quote any flow-sequence scalar
# containing a comma, e.g.
# works: [{title: "Netflix-Prize de-anonymization", venue: "IEEE S&P"}] - unquoted
# inner commas split into mangled list items.
# PROJECTION OVER DUPLICATION (research-loop Structured Data First): facts that came
# through query-openalex/query-arxiv already live in full under lib-cache/lib-runs, so
# this record stores field-level POINTERS + only the extracted fields a biography view
# needs, plus family-owned facts (met:, roles:) that exist nowhere upstream. It never
# re-stores whole API responses; the lists below are projections, re-derivable through their field pointers.
# Schema (minimal v0 - extend as later biographies demand, never silently):
# slug, name, headline: identity
# ids: {openalex, orcid, ...} - stable external identifiers
# POINTER SHAPE: {via, cacheKey?, runDir?, url?, command?, holds}. A `runId` key is BANNED -
# runDir already carries the run identity. Per-field provenance may be a SINGLE pointer
# OR a LIST of pointers; both are legal wherever a pointer is accepted.
# field provenance: mappings/lists on the fields they support; there is no envelope `sources:` list
# papers: pointer to the complete projected works collection
# met: {status: bool, events: [{when, where, what, confidence?, note?, provenance?}]} - FAMILY-OWNED;
# canonical event key order is when/where/what/confidence/note/provenance. `where` is the bare place;
# inference qualifiers belong in `confidence` + `note`, never inside `where`.
# Networking view is a query over this, not a second store.
# why: {thesis: 1-2 sentences, evidence: [{date?, claim, source?}]} - FAMILY-OWNED; the thesis is the
# claim about why this person matters, and each evidence row is one fact supporting it. `date` is
# present when the claim is a dated public act and absent when it is a standing property of the record.
# roles: [{role, confidence, note}] - FAMILY-OWNED hypothesis list (critic/reader/collaborator/lineage-node)
# interest_timeline: [{era, span, summary, works: [{title, year?, venue?, citations?, note?, paperSlug?}], provenance}]
# - field-backed PROJECTION; TIME is the primary axis. `paperSlug` links a $research-reader PaperRecord
# when one exists. A works row may NAME a talk as career narrative but MUST NOT restate its venue or
# date - sessions: is the single store for those.
# edges: [{name, openalexId, kind, works_total?, works_recent?, provenance}] - field-backed PROJECTION; typed graph substrate
# connection_degrees: [{name, openalexId, maxDegree, outcome, provenance, caveat?}] - FAMILY-OWNED resolved links to already-biographied people
# footprint: {homepage, x, substack, book, openalex, key_posts} - public sources (web, not query-*).
# Talks and keynotes live in sessions:, never here.
# sessions: [{conf, session, kind, media, transcript, note?, provenance?}] - the SINGLE store for
# attended and given talks. `kind` is keynote|talk|poster|workshop. `media` and `transcript` are
# structured refs {status: linked|pending, sessionId?} into $conf-talks; a linked ref renders as
# https://w.sh/media/<sessionId>.
# renderings: [{path, published, kind}] - generated human-facing surfaces; regenerate after record edits, never hand-edit
# provenance: {summary, caveats: [{n, text}]} - current evidence and numbered caveats only
# (namesake merges, unconfirmed dates); never tool-fix or migration history
slug: arvind-narayanan
name: Arvind Narayanan
headline: Professor of CS, Princeton; Director of CITP; co-author of AI Snake Oil
ids:
openalex: A5058102069
orcid: 0000-0001-7176-4479
provenance:
via: query-openalex
cacheKey: "authors:arvind narayanan:5"
runDir: runs/query-openalex/2026-07-28
holds: author disambiguation search result and lib-runs records for the capture session
papers:
via: query-openalex
cacheKey: "works-by-author:A5058102069"
runDir: runs/query-openalex/2026-07-28
holds: complete 174-work collection with venues, years, citations, and coauthors
met:
status: false
events: []
why:
thesis: >-
The most publicly credible skeptic of exactly the two things research-blog Entry #1 is about:
AI-text detectors deployed as accusation machines, and AI writing quality. Our duel's results
empirically bound both of his claims (surface tells removable without moving detection; detection
orthogonal to semantic depth), which makes him the natural first reader for the entry: someone who
has thought hard about the same detector from the other side.
evidence:
- date: 2025-12-09
claim: >-
Ran false-positive math against Pangram specifically - the same detector our prose hill-climb
holds out as its referee oracle - arguing a 1-in-10,000 FPR still falsely flags 5-10% of
students across a college career.
source: https://x.com/random_walker/status/1998407244438819149
- date: 2026-03-06
claim: >-
Posted the "hollowness" thesis: the real sign of AI writing is not surface tells but polished
prose around mundane ideas, diagnosed by whether a second read impresses less.
source: https://x.com/random_walker/status/2029898822327890231
- date: 2026-07-27
claim: >-
Ran his own attempt to write past Pangram, failed against a hardened detector (>0.99, no
gradient), and publicly conceded.
source: https://x.com/random_walker/status/2081713721785631202
- date: 2026-07-27
claim: >-
Named the lever his agent never found - stop whole-span rewriting, because it resamples the
LLM distribution - which is exactly our campaign's finding.
source: https://x.com/random_walker/status/2081713721785631202
roles:
- role: critic-reader
confidence: high
note: intended recipient of the Entry #1 outreach; his concession + hollowness threads are the entry's contrast
- role: lineage-node
confidence: confirmed
note: his agent-evaluation-rigor line (AI Agents That Matter, CORE-Bench, Holistic Agent Leaderboard, REFORMS) is upstream of interest area 6
- role: collaborator
confidence: speculative
note: agent-benchmark-rigor agenda overlaps our usage-survival methodology; no concrete hook yet
interest_timeline:
- era: privacy-and-de-anonymization
span: 2005-2016
summary: de-anonymization, web tracking, crypto
works:
- {title: Netflix-Prize de-anonymization, year: 2008, venue: "IEEE S&P", citations: 2.3k}
- {title: De-anonymizing Social Networks, year: 2009}
- {title: Bitcoin SoK, year: 2015}
- {title: Online Tracking, year: 2016}
provenance: &openalex_works
via: query-openalex
cacheKey: "works-by-author:A5058102069"
runDir: runs/query-openalex/2026-07-28
holds: complete 174-work collection with venues, years, citations, and coauthors
- era: algorithmic-society
span: 2017-2021
summary: bias in ML, dark patterns; AI snake oil talk goes viral (2019)
works:
- {title: Semantics derived from language corpora contain human-like biases, year: 2017, venue: Science, citations: 2.8k, note: his most-cited work}
- {title: Dark Patterns at Scale, year: 2019}
provenance: *openalex_works
- era: ml-science-rigor
span: 2022-2024
summary: reproducibility/leakage in ML-based science; AI Snake Oil book
works:
- {title: Leakage and the reproducibility crisis, year: 2023, venue: Patterns}
- {title: REF
Where it lives
| Declared in | /Users/eshao/.config/mnt/mdr/skills/research-records/assets/schemas/person.ts |
|---|---|
| Binding | personDataStore |
| Directory | /Users/eshao/.config/mnt/data/research-biography/people |
| Files | *.yaml |