Skip to content

process: add repo process docs and rewrite README - #30

Merged
phipsae merged 22 commits into
mainfrom
process/repo-shell
Sep 17, 2026
Merged

phipsae merged 22 commits into
mainfrom
process/repo-shell

Conversation

@phipsae

@phipsae phipsae commented Sep 14, 2026 •

Copy link
Copy Markdown
Collaborator

First of three pull requests implementing #29. This one adds the process docs, rewrites the README and switches the licence file to CC0. It touches no spec text.

What is here

File Covers
process/README.md What belongs here, what does not, and where a new spec should go
process/lifecycle.md The four stages, three side statuses, and the evidence gate for stable
process/front-matter.md The metadata schema, the indexing rule, versioning
process/intake.md Issue first then pull request, numbering, roles and approvals
process/spec-template.md Copyable skeleton with RFC 2119 wording and a fixtures note
process/governance.md The CC0 licence and where the approval rule lives

Decisions this settles

The repo is the home for Access Layer specs. A spec belongs here when it strengthens at least one of the Access Layer guarantees, censorship resistance, open source, privacy, security or self-sovereignty. The only things turned away at the door are work outside the Access Layer and changes to a standard someone else already owns. If a spec ever moves to another body later, it keeps its number and a pointer here.

Domains are a front-matter tag, nothing more. No domains/ folder and no generated domain pages. Yanis raised cross-category specs on 14 Sep, Semaphore is read, write and prove at once. Values are the five verbs read, write, prove, delegate, exit, which andyguzmaneth agreed to in this comment.

Spec numbers are assigned on merge, not taken from the pull request number. EIP-1, the ENSIP repo and PEP 1 all assign at merge, and 1/COSS already says specs carry an incremental number. A spec is merged as draft and gets its number then. Later stages are status changes on the merged file.

One rule for indexed entries. Every indexed entry names why it exists in index_reason, either dependency (a hosted spec lists it in depends_on) or moved (its text started here and now lives elsewhere, upstream set). CI checks the matching condition. There is no free-text route in, and a spec that is merely worth mentioning gets a plain link in prose.

Roles and approvals. Two roles, the editor named in the front matter and the maintainers with write access. Merging a new spec or moving one to review or stable needs one approval from a maintainer who is not the editor. Small text edits need none.

Licence is CC0, the same as the EIP repository. Specs 2 to 4 already end with the CC0 waiver, spec 1 keeps the GPL of the ZeroMQ COSS text it was copied from.

Still open from #29

A repo owner and named maintainers have had no answer since 23 August. Neither blocks this pull request.

Next

🤖 Generated with Claude Code

Philip Krause and others added 2 commits September 14, 2026 17:06
Adds the process/ folder that #29 proposes, playing the role EIP-1 plays
for EIPs, and rewrites the README around Access Layer scope rather than
zkspecs scope.

- lifecycle: idea, draft, review, stable, deprecated, plus stagnant,
  withdrawn and living, with the evidence gate for stable
- front matter: the id, role, type, status, domains and relationship
  fields, and the versioning rule agreed on #29
- intake: issue first, then PR, and the numbering rule
- spec template: copyable skeleton with RFC 2119 wording
- governance: the four pieces that cannot be retrofitted, licence open

No spec text is touched.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Specs here are already cited as 1/COSS and 3/SEMAPHORE-V4 in each other's
bodies, and three specs carry tags today. Dropping both would lose
information the repo already has, so document them as optional.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Philip Krause and others added 18 commits September 14, 2026 17:21
The rename asked for in #29 happened, so the pending note goes and the
old pull request links point at the new name. Old links still redirect.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Review found two contradictions in these docs.

lifecycle.md said a graduated spec keeps its content, while
front-matter.md called every indexed entry a stub. Graduation is now
named as the exception, and it gains an index_reason recording the move.

The indexing guardrail only accepted an entry a hosted spec depends on,
which blocked graduation outright, since a spec nothing depends on could
never flip to indexed. An entry now earns its place either that way or
by carrying index_reason.

replaced_by was documented as 'a spec id or external standard' while
being used for a repo path. All three forms are now written down, with
which of them the validator checks.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
The previous round fixed graduation by letting any non-empty
index_reason satisfy the guardrail. That is worse than the bug it
replaced, because 'index_reason: interesting' admits any external
standard while looking like the rule is enforced.

There are now exactly three ways an indexed entry qualifies, each with
something the validator can check. A hosted spec depending on it,
index_basis: graduated with replaced_by set, or index_basis:
formerly-hosted with upstream set. index_reason stays as the human
sentence required alongside index_basis. No other value is accepted and
there is no free-text route in.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
The repository file switches from MIT to CC0. Specs 2 to 5 already ended
with the CC0 waiver line, so this makes the repository match the specs.
governance.md drops the open-licence flag and the contributor-agreement
item, the waiver line in each spec is the agreement. Spec template now
carries the exact waiver line.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
- versioning example is Semaphore v3 to v4, there is no v5
- shortname: specs 2 to 4 cite 1/COSS, nothing cites each other
- registry.yaml and the README table: say the table is hand-edited until the generator lands
- folder is number plus slug, matching intake and the template
- graduated entries require upstream, not replaced_by, matching lifecycle.md
- replaced_by path form: reviewer confirms it opens, CI does not
- editor is accountable for the entry, not for upstream text
- governance: CC0 waiver is on specs 2 to 4, spec 5 is a stub
- README: spec 5 is indexed with status idea, raw is not a lifecycle status
- example front matter no longer repeats a domain value as a tag

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Both required upstream and differed only in whether the old text stays,
which depends on dependants and status, not on where the text went. One
value, moved, with the text kept when any spec depends on it or it had
reached stable.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
dependency or moved, always set when role is indexed. The reason no longer
lives only in another spec's depends_on, and a moved spec keeps its history
even when something depends on it. The dependency check now reads in the
right direction, a hosted spec must list the entry.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
The free-text line duplicated depends_on and upstream, so it goes. The
checked field keeps the name that says what it is.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
- interface and schema bullets say how each is proven
- shortname required, explained as citation handle and folder name
- replaced_by rewritten, plus a paragraph on replaced versus moved
- versioning section rewritten around the Semaphore v3 to v4 change

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Spec 1's licence origin corrected, it was copied from ZeroMQ's COSS text,
not derived from C4.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
- merge happens at draft, said explicitly in lifecycle.md and intake step 5
- two roles, editor and maintainer, and three approval rules replace the
  undefined reviewer
- folder placeholder is 0000 plus the lowercase shortname
- Labels section cut, step 1 already covers it

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
…ance

- idea removed, draft is the first status, spec 5 is living
- description field moved here from #32, where the generator needed it
- governance no longer names a tie-breaker or an open item
- zkID links point at the ethereum org
- process/README.md opening line in plain words

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
- decision chart is two questions, Access Layer scope and whether it
  changes a standard someone else owns, everything else is written here
- indexing promises removed, the front-matter rule is the only one
- profiles bullet in plain words, EIP process is now ERC process

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
The map listed other teams' specs, which the indexing rule says the repo
does not do. Spec 5's stub already says where its text lives.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
There is no slug field. The folder name is the number plus the shortname
in lowercase, which is what the shortname section already says, so the
opening line said it a second way with a word nothing else uses.
An indexed stub holds no text, so crediting contributors for it credits
them for a pointer. Their names stay on the spec upstream. The editor
row already says the editor owns the link and the context line, this
says it where the role is defined.
@Meyanis95

Copy link
Copy Markdown
Collaborator

Looks great!

Only have minor comments:

  • "If it later needs every wallet or client to implement it, it moves to the ERC process and keeps an entry here." -> This assumes this repo is a pre-step to ERCs, but AL specs could just live at that layer and don't necessarily need to be promoted to the protocol layer.
  • I'd add a mention of self-sovereignty and CROPS to the "What belongs here" section in process/README.md, making it easier to assess if a proposal should be included here or not.

phipsae and others added 2 commits September 16, 2026 10:55
The five existing specs write multi-word tags both ways, and spec 3 does
both in one line. Either reading is fine for a human, but a search or a
grouping would count "proof of membership" and "proof-of-membership" as
two different tags.
…tees

Moving to the ERC process is no longer described as the path a spec
takes, only as something that can happen. What belongs here now names
the Access Layer guarantees, censorship resistance, open source,
privacy, security and self-sovereignty, in the prose and in the chart.
Intake step 1 asks for the spec and its verbs, not for a case against
other bodies.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
phipsae added a commit that referenced this pull request Sep 16, 2026
The five existing specs go onto the schema #30 defines, and their folders
are renamed from a bare number to the number plus the spec's shortname in
lowercase. No spec text is rewritten, apart from spec 5's one-sentence
pointer.

Spec 5 is indexed rather than mirrored, because the file holds no copy of
the spec, only a pointer. It carries index_reason: moved with upstream
pointing at zkID, and status: draft, which is what the upstream calls
itself in its own front matter (COSS status: raw, and #30 has no raw).
Being a stub it has no contributors, and its editor is whoever keeps the
link correct here rather than the people who wrote the text upstream.

Specs 2, 3 and 4 do not list 1/COSS in depends_on. They declare
themselves governed by it, which is a governance link, not something
they cannot be used without. The governed-by line in each spec's prose
already says it, and #33 repoints those lines to process/.

The bare-number folders stay as one-line pointers so links made before
the rename keep resolving.

Pre-existing bugs fixed on the way, all in lines being touched anyway.
Spec 2's front matter sat below a heading so it never parsed. Specs 2 and
4 declared slug CS-02 and CS-04 against folders and titles saying 2 and 4.
Specs 2, 3 and 4 nested tags inside contributors, and specs 3 and 4
wrote multi-word tags with spaces where the others used hyphens. Spec 4 listed a literal
... as a contributor. Spec 3 linked to 1/COSS at the old zkspecs org and
spec 1 linked to itself at spec/1, a path that never existed.
@phipsae

phipsae commented Sep 16, 2026

Copy link
Copy Markdown
Collaborator Author

@Meyanis95 thx for the feedback, worked in your comments

phipsae added a commit that referenced this pull request Sep 16, 2026
#30 adds process/, which defines how this repository works. 1/COSS already defines that, differently, so two process documents govern one repository. This settles which one wins.

1/COSS goes to status: deprecated with replaced_by: process/ and gets a note at the top pointing at the current rules. Every word of the text stays in place, so links keep resolving and the specs written under it can still be read against it. Specs 2, 3 and 4 declared themselves governed by 1/COSS, so they now point at process/ while still naming COSS as what came before.

The two differ on the lifecycle stages, on the evidence required to reach stable, and on editorial control. They agree on incremental numbering and on a functional change getting a new number rather than an edit, both of which process/ inherited from COSS rather than replacing.

Folded in here rather than kept as its own pull request, because this branch already migrates every spec's front matter and rewrites the same three governed-by lines.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
@phipsae
phipsae requested a review from Meyanis95 September 17, 2026 14:07

@Meyanis95 Meyanis95 left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

lgtm

@phipsae
phipsae merged commit 44469bb into main Sep 17, 2026
1 check passed
phipsae added a commit that referenced this pull request Sep 17, 2026
The five existing specs go onto the schema #30 defines, and their folders
are renamed from a bare number to the number plus the spec's shortname in
lowercase. No spec text is rewritten, apart from spec 5's one-sentence
pointer.

Spec 5 is indexed rather than mirrored, because the file holds no copy of
the spec, only a pointer. It carries index_reason: moved with upstream
pointing at zkID, and status: draft, which is what the upstream calls
itself in its own front matter (COSS status: raw, and #30 has no raw).
Being a stub it has no contributors, and its editor is whoever keeps the
link correct here rather than the people who wrote the text upstream.

Specs 2, 3 and 4 do not list 1/COSS in depends_on. They declare
themselves governed by it, which is a governance link, not something
they cannot be used without. The governed-by line in each spec's prose
already says it, and #33 repoints those lines to process/.

The bare-number folders stay as one-line pointers so links made before
the rename keep resolving.

Pre-existing bugs fixed on the way, all in lines being touched anyway.
Spec 2's front matter sat below a heading so it never parsed. Specs 2 and
4 declared slug CS-02 and CS-04 against folders and titles saying 2 and 4.
Specs 2, 3 and 4 nested tags inside contributors, and specs 3 and 4
wrote multi-word tags with spaces where the others used hyphens. Spec 4 listed a literal
... as a contributor. Spec 3 linked to 1/COSS at the old zkspecs org and
spec 1 linked to itself at spec/1, a path that never existed.
phipsae added a commit that referenced this pull request Sep 17, 2026
#30 adds process/, which defines how this repository works. 1/COSS already defines that, differently, so two process documents govern one repository. This settles which one wins.

1/COSS goes to status: deprecated with replaced_by: process/ and gets a note at the top pointing at the current rules. Every word of the text stays in place, so links keep resolving and the specs written under it can still be read against it. Specs 2, 3 and 4 declared themselves governed by 1/COSS, so they now point at process/ while still naming COSS as what came before.

The two differ on the lifecycle stages, on the evidence required to reach stable, and on editorial control. They agree on incremental numbering and on a functional change getting a new number rather than an edit, both of which process/ inherited from COSS rather than replacing.

Folded in here rather than kept as its own pull request, because this branch already migrates every spec's front matter and rewrites the same three governed-by lines.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
phipsae added a commit that referenced this pull request Sep 17, 2026
…ame (#31)

* specs: normalise front matter and rename folders to number and shortname

The five existing specs go onto the schema #30 defines, and their folders
are renamed from a bare number to the number plus the spec's shortname in
lowercase. No spec text is rewritten, apart from spec 5's one-sentence
pointer.

Spec 5 is indexed rather than mirrored, because the file holds no copy of
the spec, only a pointer. It carries index_reason: moved with upstream
pointing at zkID, and status: draft, which is what the upstream calls
itself in its own front matter (COSS status: raw, and #30 has no raw).
Being a stub it has no contributors, and its editor is whoever keeps the
link correct here rather than the people who wrote the text upstream.

Specs 2, 3 and 4 do not list 1/COSS in depends_on. They declare
themselves governed by it, which is a governance link, not something
they cannot be used without. The governed-by line in each spec's prose
already says it, and #33 repoints those lines to process/.

The bare-number folders stay as one-line pointers so links made before
the rename keep resolving.

Pre-existing bugs fixed on the way, all in lines being touched anyway.
Spec 2's front matter sat below a heading so it never parsed. Specs 2 and
4 declared slug CS-02 and CS-04 against folders and titles saying 2 and 4.
Specs 2, 3 and 4 nested tags inside contributors, and specs 3 and 4
wrote multi-word tags with spaces where the others used hyphens. Spec 4 listed a literal
... as a contributor. Spec 3 linked to 1/COSS at the old zkspecs org and
spec 1 linked to itself at spec/1, a path that never existed.

* specs: retire 1/COSS in favour of process/

#30 adds process/, which defines how this repository works. 1/COSS already defines that, differently, so two process documents govern one repository. This settles which one wins.

1/COSS goes to status: deprecated with replaced_by: process/ and gets a note at the top pointing at the current rules. Every word of the text stays in place, so links keep resolving and the specs written under it can still be read against it. Specs 2, 3 and 4 declared themselves governed by 1/COSS, so they now point at process/ while still naming COSS as what came before.

The two differ on the lifecycle stages, on the evidence required to reach stable, and on editorial control. They agree on incremental numbering and on a functional change getting a new number rather than an edit, both of which process/ inherited from COSS rather than replacing.

Folded in here rather than kept as its own pull request, because this branch already migrates every spec's front matter and rewrites the same three governed-by lines.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>

* README: COSS row shows deprecated

Same change as the previous commit, in the hand-kept index table that #32 later replaces with a generated one.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>

---------

Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants