docs: the docs restated the same numbers in five different values - #151
Merged
Merged
Conversation
Eighteen documentation files, rewritten for concision: 3,564 lines to 2,501.
Most of what came out was narrative that re-argued decisions the tables
already state.
The scatter had a cause worth naming. Six figures were published in more
than one place, and no two places agreed:
services 205 / 148 / 101 -> 205 registered, 201 serving
operation tiers 12,407 / 9,030 / -> 4,497 / 5,193 / 2,717
7,475
compat tests 992 / 1,144 / 775 -> 1,144
no Smithy model 11 / 12 -> 11
engine-wired 46 -> 155
Only coverage.md, README.md and docs/README.md are gated against the binary
by cmd/devcloud/coverage_test.go, so those three were right and every
restatement of them had rotted. coverage.md now owns the numbers outright
and the other pages link to it, which is the arrangement the gate already
assumes.
Three statements did not match the code:
- troubleshooting.md told a reader to check GET /devcloud/api/health.
internal/admin/api.go registers five routes and health is not among
them, so the one command offered for "is the server up?" returns 404.
- troubleshooting.md attributed a failed Lambda invoke to Docker not
running. lambda/runtime.go is a stub whose Invoke unconditionally
returns a placeholder payload; no configuration makes it execute a
handler.
- contributing.md listed interface.go, serializer.go and deserializer.go
as codegen output. There are four templates and none of them emits
those; providers parse *http.Request themselves, which architecture.md
already said on the same tree.
crud-engine.md contradicted itself: its protocol table served all five
protocols, and its Scope section two screens later said JSON-only across 46
services. The Scope section was left over from before rest-json landed and
is gone.
compatibility-policy.md said 193 model-backed services and 12 without.
Parsing manifest_gen.go gives 194 and 11 — the figures corrected in #150
were themselves off by one.
The 285-row evidence table in demand.md is untouched: TestDemandSetIsRegistered
parses it, and it is a record of a sample rather than prose.
Verified: all five doc gates pass, every relative link in the tree resolves,
go test ./cmd/... is green.
Release notes come from Changie fragments, not commits, so a docs change that ships inside the release archive needs one. The issue number is the PR's, which is why this lands after the PR exists rather than with the work.
4 of 5 tasks
skyoo2003
added a commit
that referenced
this pull request
Sep 6, 2026
… do (#152) * docs: changelog entries told the whole story where one sentence would do RELEASE.md asked for "a one-line body" and nothing enforced it, so entries grew into paragraphs: root cause, mechanism, evidence and rejected alternatives, all of which the linked issue already holds. The v1.1.0 notes ran 38 entries over 19KB, and a reader deciding whether the release affects them had to read a design document to find out. The fragment section now states the rule outright — one sentence, two only for a caveat a reader must not miss, never a third — with a too-long and a right-length body shown side by side, and the pre-flight checklist gained a line for it. Every entry in v1.1.0, v1.0.0 and the unreleased #151 fragment is rewritten to that limit; v0.2.0 and v0.1.0 already met it. CHANGELOG.md is regenerated with `changie merge`. The v1.1.0 and v1.0.0 GitHub Release bodies were republished from their `changes/<tag>.md` files, so the published notes and the repo still agree. * docs: add the changelog fragment for #152
4 of 5 tasks
skyoo2003
added a commit
that referenced
this pull request
Sep 6, 2026
…153) #152 stated the rule in RELEASE.md and added a pre-flight checklist line, but the only enforcement was a manual checkbox read once per release — and the rule was invisible where a contributor actually lands: CONTRIBUTING.md and the PR checklist both linked RELEASE.md without saying what the rule is. `.changie.yaml` now sets `body.maxLength: 400`, which `changie new` refuses to exceed (401 characters rejected, 398 accepted). It is a ceiling for the two-sentence case rather than a target, and it does not see a hand-written fragment — both stated in RELEASE.md beside the rule. CONTRIBUTING.md and the PR checklist state the rule and link the section directly. The unreleased #151 fragment ran 482 characters, over the new cap; it is shortened to 397 with nothing dropped. The #152 fragment covers the cap and the two added surfaces.
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.
Summary
Eighteen documentation files rewritten for concision — 3,564 lines to 2,501. Most of what came out was narrative that re-argued decisions the tables already state. Along the way the rewrite surfaced six figures published in more than one place with no two places agreeing, and three statements that did not match the code.
Related Issue
Refs #
Changes
Numbers now have one home. Six figures were restated across pages and had drifted apart:
Only
coverage.md,README.mdanddocs/README.mdare gated against the binary bycmd/devcloud/coverage_test.go, so those three were correct and every restatement of them had rotted.coverage.mdnow owns the numbers and the other pages link to it — the arrangement the gate already assumes.Three statements corrected against the code:
troubleshooting.mdtold readers to checkGET /devcloud/api/health.internal/admin/api.go:39-43registers five routes andhealthis not one, so the only "is the server up?" command offered returned 404.troubleshooting.mdblamed a failed Lambda invoke on Docker not running.lambda/runtime.gois a stub whoseInvokeunconditionally returns a placeholder payload; no configuration makes it execute a handler.contributing.mdlistedinterface.go,serializer.goanddeserializer.goas codegen output. There are four templates and none emits those — providers parse*http.Requestthemselves, whicharchitecture.mdalready said on the same tree.crud-engine.mdcontradicted itself — its protocol table served all five protocols; its Scope section two screens later said JSON-only across 46 services. The Scope section predatesrest-jsonsupport and is gone.compatibility-policy.mdsaid 193 model-backed / 12 without. Parsingmanifest_gen.gogives 194 / 11 — the figures corrected in #150 were themselves off by one.services-matrix.mdwas the worst-drifted page and is now a shape-of-the-surface page that links tocoverage.mdrather than maintaining a parallel set of counts by hand.Untouched on purpose: the 285-row evidence table in
demand.md(parsed byTestDemandSetIsRegistered, and a record of a sample rather than prose), anddocs/services/*.md(already concise).Files Changed
docs/coverage.mddocs/demand.mddocs/plugin-api.mddocs/architecture.mdrest-json, not JSON 1.1)docs/contributing.mddocs/compatibility-policy.mddocs/configuration.mdRELEASE.mddocs/fidelity-manifest.mdcoverage.mddocs/troubleshooting.mddocs/crud-engine.mddocs/getting-started.mddocs/roadmap.mdREADME.mddocs/services-matrix.mddocs/faq.mddocs/README.mdSUPPORT.mdTest Plan
CGO_ENABLED=0 go test ./cmd/... ./internal/config/...— green. All five doc gates pass:TestPublishedCoverageMatchesTheBinary,TestPublishedOperationTiersMatchTheManifest,TestRegisteredOnlyServicesAreNamedInTheDocs,TestOtherDocsQuoteTheSameFigure,TestDemandSetIsRegistered..mdfiles and stat-ing each non-anchor target. 0 broken.internal/generated/fidelity/manifest_gen.godirectly (205 services, 194/11 model-backed, 155 engine-wired, 4,497/5,193/2,717 tiers) and bypytest --collect-only(1,144 tests), not by copying from another page.Checklist
golangci-lint run) — no Go files changed; pre-commit hooks passed on commit