Repository navigation
Retire the documentation's pre-implementation status - #17
Merged
Merged
Conversation
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
force-pushed
the
retire-pre-implementation-status
branch
from
September 19, 2026 14:05
94609bf to
1eac6f0
Compare
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
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, and99-roadmap.mdnow nameports/java/as the one implementation. Each keeps the part that is stilltrue: 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, andCLAUDE.mdcarry the same repair.README.mdgains the JMHbenchmark caveat that
ports/java/README.mdand40-java-binding.mdalready state.style.mdandCONTRIBUTING.mdcarried the worse defect. Both closed their enforcement sectionsaying 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
checktask since 157472a, overevery Markdown file in the repository, and
style.mdcontradicted itself within one section byopening with a table of two checks that run.
Two RFC 2119 leaks outside
10-specification.mdare repaired with them, both reported byverifyDocStyle. ADR 0070 argued an alternative in terms ofMUSTandMAY; it now saysrequiring and permitting. ADR 0078 and
style.mdeach quote a keyword as a keyword, so both aremarked as code spans.
Commit 2: ten claims the tree contradicts
CLAUDE.md:24ports/java/is a Gradle build, documented fifty lines belowCONTRIBUTING.md:3CONTRIBUTING.md:5docs/README.md:156adr/0081left one artifact and one moduledocs/README.md:161verifyUnsignedComparisonsis registered and wired intocheck99-roadmap.md:234sharder-api,sharder-core,sharder-migrate,sharder-provider-fileadr/0081records these names as unpublished and free35-port-conventions.md:124./gradlew :sharder-conformance:test40-java-binding.md:1103core/internal/hash/SipHash24.java40-java-binding.md:1373verifyDocLinkswalksdocs/,ports/, andREADME.mdCONTRIBUTING.md90-open-questions.md:236RetryBudget.permittedand.accountaresynchronizedThe 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, butRetryBudgetholds its window under one lock deliberately, because
FAIL-031counts to the millisecond and abucketed counter answers differently at a bucket boundary.
ports/java/README.mdand the classjavadoc 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
verifyDocStylereads four mechanical rules and does not read register, justification, orterminology, so a green check does not clear these.
35-port-conventions.md:41andadr/0082:20each asked what the repository wants from a port'sbuild 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 outsideDESIGN_PROMPT.mdandthe examples
style.mdquotes in order to forbid them.conformance/generator/README.mdargued that a hand-written vector file is worse than no vector atall "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-11asked whether the reference implementation checks the specification or only itself, andnamed as its settling evidence a Java port written from the specification reaching
corewithoutforcing a vector to move. That port has since reached every level, and it did force vectors to
move:
adr/0084andadr/0085each 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 verifyDocLinksresolves every cross-reference across 99 documents../gradlew verifyDocStylereports no findings, down from five../gradlew buildgreen, including every other gate.verify_withdrawals.py,verify_declarations.py, andcoverage.py --checkpass.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.mdalready states.🤖 Generated with Claude Code