Skip to content

[FEATURE] IETF author affiliation extraction (RFC XML <organization> + Datatracker JSON) #1211

Description

@SteveLLamb

Summary

Now that authors[] accepts the schema-2.3.0 object form { name, affiliation? } and the IETF extractor emits that shape (per #1196), capture per-author affiliation data from the IETF source paths so the 52 IETF docs in the registry surface organization-level metadata the way SMPTE journal articles do post-#1196's HIGHWIRE backfill.

Rationale

  • RFC XML carries <author> blocks with <organization> child elements — primary, structured, free to harvest at parse time.
  • Datatracker JSON likewise exposes per-author organization data on the doc.json endpoint.
  • RFC HTML citation_author meta and Datatracker HTML have author cards that often include affiliation.
  • Today the IETF extractor drops all of this — only the name string survives.
  • The 52 IETF docs in the registry currently land as [{name}] after the [FEATURE] Migrate authors[] to object form + update extractors to populate bio/affiliation #1196 shape migration. Affiliation enrichment closes the gap.

Implementation thoughts

What to harvest, where

source author field shape affiliation field
RFC body XML (rfc-editor.org/rfc/{rfcN}.xml) <author fullname="X" initials="X" surname="X"> <organization> child element
RFC index XML (rfc-index.xml) <author><name>X</name></author> (none — older format)
Datatracker /api/v1/doc/document/{slug}/?format=json authors: [{name, email, affiliation}] authors[].affiliation (verify field name)
RFC HTML citation_author meta <meta name="citation_author" content="X"> citation_author_institution meta when present
Datatracker HTML author cards .author-name + .author-affil DOM-traversal

Extractor changes (src/main/scripts/providers/ietf.parse.js)

  1. RFC body XML parser (~line 689) — pull <organization> per author, return {name, affiliation?} instead of name string.
  2. normalizeAuthorNames — currently flattens object input to strings; flip to preserve {name, affiliation?}.
  3. citationBundle / infoBundle / trackerBundle — harvest from citation_author_institution meta or equivalent; emit object form.
  4. pickFirstArrayWithSource is already polymorphic per [FEATURE] Migrate authors[] to object form + update extractors to populate bio/affiliation #1196 — no change.
  5. Final emit boundaries (~line 1008 + ~line 1327) — already wrap strings as {name}; pass objects through unchanged.

Schema research first

The actual field name on Datatracker's doc.json for affiliation needs verification — affiliation vs organization vs affil vs nested. Worth a quick curl https://datatracker.ietf.org/api/v1/doc/document/rfc8446/?format=json | jq .authors before coding.

Apply

Once the extractor emits {name, affiliation?}, run npm run extract-ietf to refresh the 52 IETF docs in the registry. Each doc's authors$meta will reflect the affiliation source.

Acceptance

  • Datatracker JSON author schema verified (manual curl check or quick reference doc)
  • RFC body XML parser returns {name, affiliation?} from <organization> child
  • At least one HTML/Datatracker source path also harvests affiliation
  • npm run extract-ietf against, e.g., RFC9000 produces object-form authors with affiliation populated
  • All 52 existing IETF docs in registry get refreshed via a single re-extract run
  • Sample-verify: RFC8446 (Eric Rescorla, Mozilla) and similar high-profile RFCs land with correct affiliation

Related

Metadata

Metadata

Assignees

Labels

claudeGenerated via Claude agentenhancementNew feature or requestextractietfPublisher - IETFjavascriptPull requests that update javascript code

Type

No type

Fields

No fields configured for issues without a type.

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions