Question
What is the Convex schema for articles and their revisions?
Settled going in (see the map's standing decisions): articles are stored fully processed — sanitized, list-nesting fixed, headings id'd, syntax-highlighted, plus the section tree and extracted plain text. Every revision is kept indefinitely. Storage is the architecture; revision browsing is not.
Decide:
- Table shape. One
articles table with a pointer to the current revision plus a revisions table? Or revisions only, with latest derived? What is keyed by version id vs revision id? - What a revision holds — processed HTML, section tree, plain text, content hash, fetched-at, the raw body as fetched (do we keep it, for reprocessing without re-fetching Mojang?).
- What lives on the article rather than the revision — the manifest entry fields (title, type, image, date,
shortText, contentPath). Note that shortText currently gets a regex spacing fix applied at parse time (src/server/java/versions.ts); decide whether that stays a parse-time transform. processorVersion. Where it is stored, how a re-process pass finds stale revisions, whether re-processing creates a new revision or mutates in place. This matters: a content change and a processor change are different events and annotations must be able to tell them apart.- Content hashing. What exactly is hashed — the raw fetched body, so a processor change does not look like a content change.
- Indexes, including the full-text search index. Constrained by the Convex FTS research.
- Manifest/version list storage — the sidebar needs the ordered version list; is that a query over articles or a separately maintained document?
Do not preclude the out-of-scope futures the map names: semantic search embeddings, Bedrock changelogs, mcmeta deep links (#6), and the mcdoc viewer (#5). Say explicitly what each would need and confirm the schema leaves room.
Use /domain-modeling — the vocabulary settled here (article, revision, section, anchor) is what every later ticket speaks.
Question
What is the Convex schema for articles and their revisions?
Settled going in (see the map's standing decisions): articles are stored fully processed — sanitized, list-nesting fixed, headings id'd, syntax-highlighted, plus the section tree and extracted plain text. Every revision is kept indefinitely. Storage is the architecture; revision browsing is not.
Decide:
articlestable with a pointer to the current revision plus arevisionstable? Or revisions only, with latest derived? What is keyed by version id vs revision id?shortText,contentPath). Note thatshortTextcurrently gets a regex spacing fix applied at parse time (src/server/java/versions.ts); decide whether that stays a parse-time transform.processorVersion. Where it is stored, how a re-process pass finds stale revisions, whether re-processing creates a new revision or mutates in place. This matters: a content change and a processor change are different events and annotations must be able to tell them apart.Do not preclude the out-of-scope futures the map names: semantic search embeddings, Bedrock changelogs, mcmeta deep links (#6), and the mcdoc viewer (#5). Say explicitly what each would need and confirm the schema leaves room.
Use
/domain-modeling— the vocabulary settled here (article, revision, section, anchor) is what every later ticket speaks.