Skip to content

Retire the documentation's pre-implementation status - #17

Merged
wolpert merged 3 commits into
mainfrom
retire-pre-implementation-status
Sep 19, 2026
Merged

wolpert merged 3 commits into
mainfrom
retire-pre-implementation-status

Conversation

@wolpert

@wolpert wolpert commented Sep 19, 2026 •

Copy link
Copy Markdown
Contributor

Every status paragraph in the corpus was written before a port existed and said so. The Java port
now reaches every conformance level and declares all of them in conformance/declarations/java.json,
so a reader was told that no implementation exists by the same paragraph that went on to describe
one. A review of the whole corpus then found thirteen further statements the tree contradicts, plus
three register and justification defects the style check does not read.

Commit 1: the status paragraphs

The status lines of 00-overview.md, 05-glossary.md, 10-specification.md,
20-topology-format.md, 30-conformance.md, 40-java-binding.md, 90-open-questions.md, and
99-roadmap.md now name ports/java/ as the one implementation. Each keeps the part that is still
true: a second port has not been started, nothing is published, and the requirements still state
what a conforming implementation does rather than what one did.

README.md, docs/README.md, and CLAUDE.md carry the same repair. README.md gains the JMH
benchmark caveat that ports/java/README.md and 40-java-binding.md already state.

style.md and CONTRIBUTING.md carried the worse defect. Both closed their enforcement section
saying neither documentation check exists and that every rule is enforced at review until the first
Java implementation lands. Both checks have run in that port's check task since 157472a, over
every Markdown file in the repository, and style.md contradicted itself within one section by
opening with a table of two checks that run.

Two RFC 2119 leaks outside 10-specification.md are repaired with them, both reported by
verifyDocStyle. ADR 0070 argued an alternative in terms of MUST and MAY; it now says
requiring and permitting. ADR 0078 and style.md each quote a keyword as a keyword, so both are
marked as code spans.

Commit 2: ten claims the tree contradicts

Where Claim Contradicted by
CLAUDE.md:24 regenerating the suite is the only build in the repository ports/java/ is a Gradle build, documented fifty lines below
CONTRIBUTING.md:3 the library "is being implemented" the same stale register retired elsewhere
CONTRIBUTING.md:5 "it reaches the every conformance level" a broken edit that survived
docs/README.md:156 "the Gradle projects", "what each split lets a consumer avoid" adr/0081 left one artifact and one module
docs/README.md:161 "the build check that is to enforce it" verifyUnsignedComparisons is registered and wired into check
99-roadmap.md:234 sharder-api, sharder-core, sharder-migrate, sharder-provider-file adr/0081 records these names as unpublished and free
35-port-conventions.md:124 ./gradlew :sharder-conformance:test no such Gradle project; a second port copies this example
40-java-binding.md:1103 this binding "has not been written" core/internal/hash/SipHash24.java
40-java-binding.md:1373 verifyDocLinks walks docs/, ports/, and README.md the include list also carries CONTRIBUTING.md
90-open-questions.md:236 the probe counter and budget window, "and neither takes a lock" RetryBudget.permitted and .account are synchronized

The roadmap one is the highest value: naming superseded artifact coordinates inside the one-way
doors section puts them where the document says nothing can move.

The retry budget one is the subtlest. The probe counter is an AtomicInteger, but RetryBudget
holds its window under one lock deliberately, because FAIL-031 counts to the millisecond and a
bucketed counter answers differently at a bucket boundary. ports/java/README.md and the class
javadoc both record that difference. The open question asks whether a requirement should forbid a
lock on these counters, so the port is evidence bearing on it, and the entry now states that rather
than contradicting it.

Commit 3: register and justification, and one stale open question

verifyDocStyle reads four mechanical rules and does not read register, justification, or
terminology, so a green check does not clear these.

35-port-conventions.md:41 and adr/0082:20 each asked what the repository wants from a port's
build in the second person, "build yourself, and exit non-zero where you failed". The Register
section admits second person only in the numbered steps of a procedure, and this is expository
prose in both. The ADR is not exempt: the Justification carve-out covers what a record may discuss,
not how it may sound. Both now ask whether the port builds and whether it exits non-zero. No second
person now remains in docs/, conformance/, or the root documents outside DESIGN_PROMPT.md and
the examples style.md quotes in order to forbid them.

conformance/generator/README.md argued that a hand-written vector file is worse than no vector at
all "because no correct implementation can pass it and every implementer assumes the defect is
theirs". The second clause is about the reader's assumptions, and the argument belongs in a
decision record rather than a directory's entry point. The fact it protects is already the sentence
before it, so one plain sentence remains.

OQ-11 asked whether the reference implementation checks the specification or only itself, and
named as its settling evidence a Java port written from the specification reaching core without
forcing a vector to move. That port has since reached every level, and it did force vectors to
move: adr/0084 and adr/0085 each record a place the reference and the specification disagreed.
The entry read as though none of it had happened. It now records the outcome and keeps the question
open on the release column's own terms, a second port being what shows the specification reads the
same way twice, rather than re-deciding its status.

Checks

  • ./gradlew verifyDocLinks resolves every cross-reference across 99 documents.
  • ./gradlew verifyDocStyle reports no findings, down from five.
  • ./gradlew build green, including every other gate.
  • verify_withdrawals.py, verify_declarations.py, and coverage.py --check pass.
  • No generated file is touched; the change is Markdown only.

No decision record accompanies this, because nothing here turns on a judgement somebody could
reasonably make the other way. Every edit corrects a statement the tree already contradicted or a
rule style.md already states.

🤖 Generated with Claude Code

wolpert and others added 3 commits September 19, 2026 06:59
Every status paragraph in the corpus was written before a port existed and
said so. The Java port now reaches every conformance level and declares all
of them in conformance/declarations/java.json, so a reader was told that no
implementation exists by the same paragraph that went on to describe one.

The repairs are factual rather than editorial. The status lines of
00-overview.md, 05-glossary.md, 10-specification.md, 20-topology-format.md,
30-conformance.md, 40-java-binding.md, 90-open-questions.md, and
99-roadmap.md now name ports/java/ as the one implementation, and each keeps
the part that is still true: a second port has not been started, nothing is
published, and the requirements still state what a conforming implementation
does rather than what one did. README.md, docs/README.md, and CLAUDE.md
carry the same repair, and README.md gains the JMH benchmark caveat that
ports/java/README.md and 40-java-binding.md already state, so the three
agree on what remains.

style.md and CONTRIBUTING.md carried the worse defect. Both closed their
enforcement section with a sentence saying neither documentation check
exists and that every rule is enforced at review until the first Java
implementation lands. Both checks have run in that port's check task since
157472a, over every Markdown file in the repository rather than only the
ones under ports/java/, and style.md contradicted itself within one section
by opening with a table of two checks that run. The replacement says which
build runs them and over what.

Two RFC 2119 leaks outside 10-specification.md are repaired with them, both
reported by verifyDocStyle. ADR 0070 argued an alternative in terms of MUST
and MAY, which the Emphasis section confines to the normative specification;
it now says requiring and permitting. ADR 0078 and style.md each quote a
keyword as a keyword, so both are marked as code spans, which is the
distinction the guide already draws between a term named and a word
capitalised for stress.

verifyDocLinks resolves every cross-reference across 99 documents and
verifyDocStyle now reports no findings at all. No generated file is touched.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
A documentation review of the whole corpus found nine statements the tree
contradicts that the first pass missed. Each is verified against the source
or the build file that contradicts it.

CLAUDE.md said regenerating the conformance suite is the only build in the
repository, and then documented ./gradlew build fifty lines below. There are
two builds, and the sentence now says so.

CONTRIBUTING.md opened with the pre-implementation register the first pass
retired everywhere else, and carried a broken edit, "it reaches the every
conformance level".

docs/README.md routed a contributor to the artifacts section for "the Gradle
projects" and "what each split lets a consumer avoid", but adr/0081 left one
artifact and one module, and that section now says the package layout draws
the boundaries a split would have. The same path called the unsigned check
one that is to enforce the discipline; verifyUnsignedComparisons is
registered in build.gradle.kts and wired into check.

99-roadmap.md named sharder-api, sharder-core, sharder-migrate, and
sharder-provider-file as the artifacts the dependency policy binds. adr/0081
supersedes that set and records that those names are unpublished and free.
Naming them inside the one-way doors section is the worst place to leave
them, because that section reads as what cannot move.

35-port-conventions.md gave a worked declaration whose run command was
./gradlew :sharder-conformance:test. No such Gradle project exists, and a
second port copies this example; it now carries the command
conformance/declarations/java.json actually holds.

40-java-binding.md said the SipHash figures come from a prototype rather
than from this binding, "which has not been written", and
core/internal/hash/SipHash24.java has been written. Its verifyDocLinks
description omitted CONTRIBUTING.md, which the task's include list carries.

90-open-questions.md said the Java binding uses an atomic increment for the
probe counter and an array of adders for the budget window, "and neither
takes a lock". The probe counter is an AtomicInteger, but RetryBudget holds
its window under this object's lock, deliberately, because FAIL-031 counts
to the millisecond and a bucketed counter answers differently at a bucket
boundary. That difference is recorded in ports/java/README.md and in the
class javadoc, and the open question now states it rather than contradicting
it, because the question asks whether a requirement should forbid a lock and
the port is evidence that exactness wants one.

verifyDocLinks resolves every cross-reference across 99 documents,
verifyDocStyle reports no findings, and the full Java build is green.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
The review's last pass found three register and justification defects that
verifyDocStyle does not read, and one stale open question.

35-port-conventions.md and adr/0082 each asked what the repository wants
from a port's build in the second person: "build yourself, and exit non-zero
where you failed". The Register section admits second person in one place,
the numbered steps of a procedure, and this is expository prose in both
documents. The ADR is not exempt: the carve-out of the Justification section
covers what a record may discuss, not how it may sound. Both now ask whether
the port builds and whether it exits non-zero.

conformance/generator/README.md argued that a hand-written vector file is
worse than no vector at all "because no correct implementation can pass it
and every implementer assumes the defect is theirs". The second clause is
about the reader's assumptions, which the Register section rules out, and
the argument belongs in a decision record rather than in a directory's entry
point. The fact it protects, that nothing is hand-written, is already the
sentence before it, so what remains is one plain sentence saying what such
an ordering is.

OQ-11 asked whether the reference implementation checks the specification or
only itself, and named as the evidence that settles it a Java port written
from the specification reaching core without forcing a vector to move. That
port has since reached every level, and it did force vectors to move: adr/0084
and adr/0085 each record a place the reference and the specification
disagreed. The entry read as though none of that had happened. It now
records the outcome and says why the question is still open, which is the
release column's answer rather than a new one: a second port is what shows
the specification reads the same way twice.

No second person now remains in docs/, conformance/, or the root documents
outside DESIGN_PROMPT.md and the examples style.md quotes to forbid.
verifyDocLinks and verifyDocStyle are clean and the full Java build is green.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
@wolpert
wolpert force-pushed the retire-pre-implementation-status branch from 94609bf to 1eac6f0 Compare September 19, 2026 14:05
@wolpert
wolpert merged commit b816cb8 into main Sep 19, 2026
5 checks passed
@wolpert
wolpert deleted the retire-pre-implementation-status branch September 19, 2026 14:09
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.

1 participant