A cluster in dialogue with the Eo1 collective

The schema

The fields the register holds, and the reason for each one.

What a schema is

The register is a shared grammar. Its rules are stated in a schema: a formal description of the fields every entry carries, published once on-chain and reused by every entry that follows. Anyone can read the schema and know exactly what shape a record will have before it appears.

The schema is registered once, on Celo, using the Ethereum Attestation Service. It cannot be altered after registration. If a new field is needed later, a new schema is registered alongside the old one. This immutability is a feature of on-chain records and enables the register built on it to be tamper-proof.

Schemas are public. Once registered, a schema is available to anyone: a record can be made under it without asking the registrar's permission. A registrar can attach a smart contract that limits who may record under it — restricting attestations to a list of wallet addresses, or to addresses that meet some other condition. The Eo1 register's schema has no such restriction. Any wallet can record a work under it.

Two schemas, one view

Commoning uses two schemas. The Eo1 base schema holds works that enter the register. The Commoning research schema holds the activity that produces them: reading notes, drafts, arguments, and decisions. Both schemas are registered on Celo. The records made under each are separate attestations, with separate fields, signed at different times.

On the register page, the two are shown together. A work recorded under one schema and the same work recorded under the other are linked by a sameAs relationship, and the entry names both registers. This is the cluster's main demonstration: a cluster can register its own schema alongside the base one, without modifying the base, and the two coexist in a single view. The relationship between the schemas is visible to anyone who reads the register.

Base fields

Every entry in the register carries the same fields. The base schema is deliberately thin.

contentHash
bytes32 — the SHA-256 fingerprint of the work
title
string — a short identifier for the work
contributors
string[] — identifiers for those who made it
licence
uint8 — a coded licence value
phase
uint8 — a coded stage value
uri
string — where the work can be found, if it is published
date
int256 — the work's own date, as a Unix timestamp
sourceUID
bytes32 — the attestation this work derives from

Four of these fields need explanation.

Licence is a coded value. It records the terms under which a work circulates. The codes are:

0
No Rights — dedicated to the commons
1
Public domain
2
External — governed by its own terms
3
Unknown

Phase is a coded value. It records a work's position in the register's lifecycle. The codes are:

0
Source — a work the register draws on
1
Interim — a work produced from sources
2
Iteration — developed from interim works
3
Edition — released beyond the cluster

Both are recorded as uint8. This keeps the record compact and forces a controlled vocabulary.

Date is the work's own date. A manuscript from 1890, registered today, carries 1890 here — and separately, EAS records today's block timestamp as the moment the attestation was written. The schema's date holds what the work claims about itself; the block timestamp holds when the record entered the register.

SourceUID is the parent link. Each entry names the attestation it derives from, by UID. A translation cites the original, a revival cites the edition, a response cites the paper. The chain of derivation is public and cannot be broken without invalidating the records that follow.

One limitation is worth noting. sourceUID is a single field, so a record carries exactly one parent. Many works have more than one (eg, a translation of one text, responding to another, drawing on a third). The register does not yet resolve this. Three approaches are possible: recording the work several times with different parents; carrying the primary parent in sourceUID and the rest in uri by convention; or adding a references field in a cluster schema.

The Commoning research schema

Where the works schema is for things that enter the register, the research schema is for the activity that produces them. It captures the granular flow — reading notes, drafts, design decisions, responses, revisions — as they happen. Commoning uses it to make the trajectory of research visible, and to record the reasoning behind the build.

contentHash
bytes32 — the SHA-256 fingerprint of the file
title
string — a short identifier for the record
workType
string — what kind of record this is
researchStage
string — where the work is in the process
contributors
string[] — identifiers for those who made it
summary
string — a one-line description
uri
string — where the file can be found
parentWorks
bytes32 — the record this one responds to or develops from
date
int256 — when the record was made

Three fields need explanation.

WorkType distinguishes one kind of record from another. The values in use are source, reading-note, draft, argument, response, design-decision, working-paper, paper, log-entry, and revision. This is the field that makes the schema granular: a design decision is a different kind of thing from a reading note, and the register now says so.

ResearchStage records where the work is in the process. The values are source, reading, drafting, revision, review, and publication. It replaces the works schema's phase, which tracks an iterative cycle rather than a research process. The two schemas carry different stage vocabularies because they describe different things.

Summary is a one-line description. For a design decision, this is the rationale — why this, and not the alternative. For a reading note, it is what was taken from the source. It is the field that carries the thinking, and it is what makes the trail legible to a reader who was not there.

parentWork has the same single-parent limitation as sourceUID. Research activity often has more than one antecedent — a draft responds to two reading notes and a design decision — and the same three approaches apply. The choice is not yet made.

Identifiers

The schemas and their supporting contracts are all public. Anyone can verify that a given attestation belongs to this cluster by checking the schema it cites.

Eo1 base schema UID
0x11cc3123d51989b3298a0b65e01d4b54ab920e375056b9e08fbe524a50876b63
Commoning research schema UID
0xa4d4e0973500c18f6c95623e7bc4e69d010f6e0f72b0b1ec852867afefabba81
EAS contract (Celo)
0x72E1d8ccf5299fb36fEfD8CC4394B8ef7e98Af92
ENS
commoning.amykellam.eth
Eo1 base schema
Commoning research schema
Full changelog

Provisional nature

The schema is registered once, on Celo, using the Ethereum Attestation Service. Its structure is fixed: the fields it defines, and their types, cannot be changed after registration. If a new field is needed, a new schema is registered alongside the old one, and records made under the new schema are distinct from those made under the old.

What is not fixed is the vocabulary the cluster uses to fill those fields. The workType and researchStage values are strings, not enums: new values can be introduced without registering a new schema. The lists given below are what is currently used, not the limit of what can be said.

This page is a snapshot. It describes the schemas as they stand at the time of writing, and the records page notes when the description changes.