Files
hips/vocabulary.json
zeekayandHanzo Dev b9948cc2a5 How far the code has got, per runtime
status: is one word for a whole proposal. It cannot say that Go has a thing and
Rust does not, so a HIP may now also carry implementation-go,
implementation-cpp and implementation-rust, each reading shipped, partial or
none. The three languages and the three words live in vocabulary.json beside
status, type and category, because a value is only in that file because a
proposal needs it and both the Python and the TypeScript read it there.

The keys are flat and hyphenated like every other field: the front-matter
readers here take one line at a time, so a nested block under implementation:
would be invisible to them, and a claim nothing can read is a claim nothing
checks.

An absent key means nobody has assessed that runtime. none means somebody read
it and found nothing. The index counts the two apart, and every HIP is
unassessed today, which is what it reports.

FM010 refuses a word outside the three. FM011 refuses status: Final together
with implementation-go: none, because Final says the thing a HIP specifies
exists in the code and both cannot hold at once. Each has a case in
test-lint-hips.py, which fails the build if a declared check has no test, and
the generator refuses the same two rather than projecting a value it cannot
render.

HIP-0010 stated the same thing a second way, as a Status column reading
Production and In Progress. That column is gone: the table says where the code
is, the front matter says how far it has got.

Two faults that predate this and stood in the way: hip-0114 carried no H1, and
README had not been reprojected since HIP-1327 landed.

Co-authored-by: Hanzo Dev <[email protected]>
2026-09-05 14:57:13 -07:00

99 lines
3.7 KiB
JSON

{
"$comment": [
"The closed vocabularies of this corpus, in ONE place.",
"",
"Python reads it (scripts/lint.py, scripts/index.py). TypeScript imports it",
"(docs/lib/status.ts). Before this file the same lists were written out by",
"hand in nine places -- the linter, the README prose, a status union in",
"docs/lib/source.ts, and badge colours hard-coded in five page components --",
"and they disagreed. docs/lib/source.ts admitted a 'Stagnant' no file has",
"ever carried and omitted the status 52 files DID carry, so every one of",
"those rendered with the fallback badge and counted toward nothing.",
"",
"A value is only in this file because a proposal needs it. Adding one is a",
"decision about the corpus, not about a renderer."
],
"status": {
"Draft": {
"means": "Proposed. Nothing implements it yet, or the document itself describes work still ahead. Argue with it; do not build against it.",
"tone": "amber"
},
"Final": {
"means": "The thing it specifies exists in the code. The spec is settled -- changing it takes a new HIP.",
"tone": "green"
},
"Living": {
"means": "A document that never finishes: governance and process, amended in place rather than replaced.",
"tone": "blue"
}
},
"type": {
"Standards Track": "describes a thing we build and maintain",
"Process": "how we work: numbering, branch names, what is public",
"Meta": "governance, principles and commitments",
"Informational": "guidance that normatively requires nothing"
},
"category": [
"Core",
"Interface",
"Infrastructure",
"Security",
"Cryptography",
"Operator",
"Bridge",
"Governance",
"Meta",
"Application",
"Platform"
],
"implementation": {
"$comment": [
"How far the code has got, per runtime. `status:` is one word for the whole",
"proposal and cannot say that Go has a thing and Rust does not, so a HIP may",
"also carry implementation-go, implementation-cpp and implementation-rust.",
"",
"Flat and hyphenated like every other field, because the front-matter readers",
"here take one line at a time: a nested block under `implementation:` is",
"invisible to them, and a claim nothing can read is a claim nothing checks.",
"",
"An ABSENT key means nobody has assessed that runtime. `none` means somebody",
"looked and found nothing. The index counts the two apart -- folding the first",
"into the second reports an unread corpus as an unimplemented one.",
"",
"HIP-0010 stated the same thing a second way, as a Status column in a prose",
"table. One question, one place: that table says where the code is, and these",
"keys say how far it has got."
],
"language": {
"go": "Go",
"cpp": "C++",
"rust": "Rust"
},
"progress": {
"shipped": "The runtime implements what the HIP specifies.",
"partial": "Some of it is there. The HIP names what is not.",
"none": "Somebody read this runtime and found none of it."
}
},
"folded": {
"$comment": "Every spelling this corpus has carried, and the value it is now. Kept so a reader of an old commit, an old PR or an external link can tell what happened. Nothing may be written back into a HIP from this map.",
"Proposed": "Draft",
"Review": "Draft",
"Last Call": "Draft",
"Accepted": "Final",
"Implemented": "Final",
"Active": "Final for a Standards Track spec; Living for Meta and Process",
"Superseded": "deleted -- the successor carries the text",
"Retired": "deleted",
"Withdrawn": "deleted",
"Stagnant": "never written in a HIP; existed only in the site's type"
}
}