docs: name OHM as the corpus, "Human" as the first RFC

Reframe the Open Human Model in SPEC.md and PHILOSOPHY.md from "the
first RFC the framework will produce" to "the corpus of RFCs the
framework produces, of which the first defines *human*." Earlier
phrasing collapsed the project (OHM) and the first entry into one
name; this teases them apart.

Also surface the OpenXML APIs / UX downstream-consumer point: OHM is
English-first by design — the markdown bodies are canonical, and the
structured artifacts downstream systems need to actually let humans
and machines interact are derived from that English source, not
authored alongside it. This is part of why markdown round-trip
fidelity matters structurally (cf. the Phase 1 CM6 swap).

Updates the obvious example renames — slug `open-human-model` →
`human`, title "Open Human Model" → "Human", PR-list / breadcrumb /
notification examples — so the SPEC's worked-example consistently
shows OHM-as-corpus with Human as a member. Test fixtures and the
README seed-script invocation still carry the old slug; those are
left for a separate pass.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
Ben Stull
2026-05-25 10:06:30 -07:00
parent 13d59b5d26
commit 5dbcac8906
2 changed files with 42 additions and 28 deletions
+20 -15
View File
@@ -14,11 +14,14 @@ The Wiggleverse RFC framework is a standardization process for natural-
language vocabulary, modeled on the way ISO C, POSIX, and the IETF RFCs
produced the standards that underwrite modern computing. Each RFC defines
one word: its meaning, its relationships to other defined words, and the
protocol by which humans and machines interact with it. The Open Human
Model is the first specification this process will produce. Together,
the graduated RFCs form a stack — a shared vocabulary that digital
representations of humans, and the systems that interact with them, can
be built on without re-litigating what every word means.
protocol by which humans and machines interact with it. The first RFC
defines *human*. Together, the corpus of RFCs the process produces is
the **Open Human Model** — a shared English-language vocabulary that
digital representations of humans, and the systems that interact with
them, can be built on without re-litigating what every word means. The
English is canonical; the OpenXML APIs and UX surfaces a downstream
system needs to actually let humans and machines interact are derived
from it, not authored alongside it.
This is public work. Humans and machines are both invited and both
required. The shared understanding the framework is reaching for — how
@@ -87,11 +90,12 @@ could agree on. HTTP does not implement any particular web server; it
specifies the surface every web server has to honor.
The Wiggleverse RFC framework is the standardization process. The RFCs
it produces are the specifications. The Open Human Model is the first
of them. Together they form a stack — a shared vocabulary that every
digital representation of a human, and every system that interacts with
one, can be built on without re-litigating what *consent*, *trait*, or
*agency* means each time.
it produces are the specifications. The corpus of those specifications
is the **Open Human Model** — the shared vocabulary that every digital
representation of a human, and every system that interacts with one,
can be built on without re-litigating what *consent*, *trait*, or
*agency* means each time. The first RFC defines *human* itself; the
rest define the constellation around it.
The analogy stretches in one important way, and the stretch is worth
naming. POSIX worked because it codified convention that already
@@ -184,11 +188,12 @@ service of the philosophy above.
humans reading later, and to machines computing against the current
state.
The first RFC the framework will produce is the Open Human Model: a
shared definition of what we mean by *human*, and the constellation of
words around it — *trait*, *preference*, *consent*, *harm*, *agency*.
This is not a small project. It is, in the most literal sense, the
dictionary that everything else built here will stand on.
The first RFC defines *human*. The constellation around it — *trait*,
*preference*, *consent*, *harm*, *agency* — follows. Together, the
corpus the process produces is the Open Human Model: the dictionary
that everything else built here will stand on, and the English source
from which the OpenXML APIs and UX surfaces of downstream systems can
be derived. This is not a small project.
## An invitation
+22 -13
View File
@@ -1,5 +1,14 @@
# RFC App — Specification
This app hosts the **Open Human Model (OHM)**, the corpus of RFCs the
Wiggleverse framework produces. Each RFC defines one word; the first
defines *human*. OHM is English-first by design: the markdown bodies
are canonical, and the OpenXML APIs and UX surfaces a downstream
system needs to actually let humans and machines interact are derived
from that English source, not authored alongside it. The framework's
*why* lives in [`PHILOSOPHY.md`](./PHILOSOPHY.md); this document is
the binding *what* for the app that hosts OHM.
This is the agreed-upon model for the rewrite of the Wiggleverse RFC Contributor app.
It captures the structural decisions made before any UX work on the main document
pane, per-RFC conversations, revisions, and PRs. Those areas are deliberately
@@ -39,7 +48,7 @@ delegated ownership, per-user capability overrides) without contorting Gitea.
The meta repo's `main` branch contains:
- `rfcs/` — exactly one markdown file per RFC entry, regardless of state.
Filenames are the entry's slug, e.g. `rfcs/open-human-model.md`. Slugs are
Filenames are the entry's slug, e.g. `rfcs/human.md`. Slugs are
the stable identifier from the moment an idea is proposed; integer
`RFC-NNNN` IDs are only assigned at graduation (see §13).
- `PHILOSOPHY.md` — the framework's mission and rationale. Hand-authored.
@@ -65,11 +74,11 @@ live in the meta repo — they live in the app database (see §5).
```markdown
---
slug: open-human-model
title: Open Human Model
slug: human
title: Human
state: super-draft # super-draft | active | withdrawn
id: null # null until graduated; then "RFC-0042"
repo: null # null until graduated; then "wiggleverse/rfc-0042-open-human-model"
repo: null # null until graduated; then "wiggleverse/rfc-0042-human"
proposed_by: ben@wiggleverse.org
proposed_at: 2026-05-22
graduated_at: null
@@ -569,8 +578,8 @@ a hierarchy on the user that gets in the way of finding by title.
### 7.2 The list rows
Active entries render as `RFC-0042 · Open Human Model`. Super-drafts
render as `super-draft · Open Human Model` (no integer ID, by design).
Active entries render as `RFC-0042 · Human`. Super-drafts
render as `super-draft · Human` (no integer ID, by design).
A small star icon on the row left-edge for any RFC the signed-in
user has starred — starred RFCs pin to the top of the current sort
order. A small unseen-activity dot — binary, not a count — appears on
@@ -633,7 +642,7 @@ The RFC view inherits the three-column shape from the prototype:
branch, with a change-card panel below it in contexts where editing
is enabled (see §8.3).
The center column's breadcrumb reads, for example: `OHM main ▾ · 3
The center column's breadcrumb reads, for example: `Human main ▾ · 3
branches · 1 PR`. The chevron opens a dropdown listing `main` at the
top, then open branches sorted by recent activity (with a visibility
indicator for any private ones), then open PRs with their status, and
@@ -1083,8 +1092,8 @@ The modal collects four fields:
contributor types, inline-editable. Validated for uniqueness
against `rfcs/` on the meta-repo main *and* against the slugs of
any open idea PRs, so concurrent proposers cannot collide. A
collision surfaces inline ("`open-human-model` is taken — try
`open-human-model-2`?"). The API re-checks atomically at submit.
collision surfaces inline ("`human` is taken — try `human-2`?"). The
API re-checks atomically at submit.
- **Pitch** — required textarea. One or two paragraphs answering
"why this RFC is needed," contributor-typed. Becomes the entry
file's body per §2.1.
@@ -1123,8 +1132,8 @@ the standard `On-behalf-of:` trailer per §6.5 names the proposer.
The PR title and the file-add commit subject share a fixed pattern:
**`Propose: <Title>`**. Mechanical, scannable — an owner viewing the
meta-repo's PR list sees "Propose: Open Human Model," "Propose:
Trait," "Propose: Consent" and triages at a glance.
meta-repo's PR list sees "Propose: Human," "Propose: Trait,"
"Propose: Consent" and triages at a glance.
The PR description is AI-drafted from the pitch — two or three
sentences in spec voice making the *case for catalog admission*,
@@ -1770,7 +1779,7 @@ The dialog renders the sequence in flight as a stack of the five
named steps with per-step states — `pending`, `running`, `done`,
`failed`, `not reached` — and a one-line caption beneath the current
step naming the concrete operation ("Creating repository
wiggleverse/rfc-0042-open-human-model…"). The stack streams from
wiggleverse/rfc-0042-human…"). The stack streams from
the server via the SSE surface in §17, one event per step
transition. On success, a brief "Graduation complete" frame holds
for a moment before the dialog closes and the catalog row
@@ -2310,7 +2319,7 @@ per the clarification folded into §6.2 in this section's pass.
Notifications surface the **underlying user** as actor, not the
bot. The `notifications.actor_user_id` column holds the underlying
user's id for any event produced by a human gesture; the inbox row
reads "@alice opened PR #4 on RFC-0042 (Open Human Model)," and
reads "@alice opened PR #4 on RFC-0042 (Human)," and
the email subject reads "[Wiggleverse] @alice opened PR #4:
<title>." Triage requires the human's name in the noun slot — the
reader's first question is "whose work is this?" and surfacing the