docs(contributing): name the three lockstep artifacts a new CLI verb touches #1216

Merged
bosun merged 1 commit from sentry/1196-lockstep-set into main 2026-09-05 23:23:42 +02:00
Owner

Refs #1196

Summary

Document the lockstep set contributors should identify before adding a CLI verb. The map covers independently pinned representations, including assertion-owned counts, without duplicating a member/triple inventory. The three existing C5 gates remain the enforcement mechanism.

Acceptance criteria

  • The contributor-facing C5 contract names the lockstep set and its current artifact representations in one place.
  • The guidance appears before the CLI surface table, where a contributor looks before adding a verb.
  • The text explicitly says the three tests remain enforcement and the documentation is only a map.

Verification

  • PR head at opening: 84d2993d781b579810806f67c4c113ade6da1322.
  • Prepared against live main at 9b5dbe5dbe3345ac5923930ce133d93ad3f94258.
  • C5 gates: TestHelpSnapshot, TestSubcommandsMatchC5Contract, and TestC5ExclusionsAreDocumented pass.
  • go test ./..., go vet ./..., go build ./..., bash -n scripts/*.sh, and git diff --check pass.
  • bats tests/: 159/159 pass.
  • go run ./cmd/rt fragment-check changelog.d: pass.
  • ShellCheck retains one pre-existing SC2016 warning in scripts/contract-paths-check.sh, outside this diff and present on the base.
Refs #1196 ## Summary Document the lockstep set contributors should identify before adding a CLI verb. The map covers independently pinned representations, including assertion-owned counts, without duplicating a member/triple inventory. The three existing C5 gates remain the enforcement mechanism. ## Acceptance criteria - [x] The contributor-facing C5 contract names the lockstep set and its current artifact representations in one place. - [x] The guidance appears before the CLI surface table, where a contributor looks before adding a verb. - [x] The text explicitly says the three tests remain enforcement and the documentation is only a map. ## Verification - PR head at opening: `84d2993d781b579810806f67c4c113ade6da1322`. - Prepared against live `main` at `9b5dbe5dbe3345ac5923930ce133d93ad3f94258`. - C5 gates: `TestHelpSnapshot`, `TestSubcommandsMatchC5Contract`, and `TestC5ExclusionsAreDocumented` pass. - `go test ./...`, `go vet ./...`, `go build ./...`, `bash -n scripts/*.sh`, and `git diff --check` pass. - `bats tests/`: 159/159 pass. - `go run ./cmd/rt fragment-check changelog.d`: pass. - ShellCheck retains one pre-existing SC2016 warning in `scripts/contract-paths-check.sh`, outside this diff and present on the base.
docs: document lockstep CLI artifacts
All checks were successful
ac-closure-check / ac-closure check (pull_request) Successful in 7s
ac-closure-check / check (pull_request) Successful in 0s
check-self-bootstrap / check (pull_request) Successful in 6s
fork-pr-approval-notice / explain fork workflow approval (pull_request_target) Successful in 18s
ac-closure-check / toolkit-self gate (PR's own rt) (pull_request) Successful in 19s
fragment-check / toolkit-self gate (PR's own rt) (pull_request) Successful in 5s
changelog-body-check / toolkit-self gate (PR's own rt) (pull_request) Successful in 21s
changelog-body-check / changelog body Cold-Read linter (pull_request) Successful in 34s
changelog-body-check / check (pull_request) Successful in 0s
gitea-twin-check / check (pull_request) Successful in 20s
manifest-check / toolkit-self gate (PR's own rt) (pull_request) Successful in 18s
go-ci / lint + build + test (pull_request) Successful in 30s
tests / workflow-schema (pull_request) Successful in 4s
fragment-check / changelog fragment-kind (pull_request) Successful in 37s
fragment-check / check (pull_request) Successful in 0s
register-check / toolkit-self gate (PR's own rt) (pull_request) Successful in 20s
manifest-check / manifest-vs-tag consistency (pull_request) Successful in 37s
manifest-check / check (pull_request) Successful in 0s
tests / bats (pull_request) Successful in 20s
register-check / register-drift check (pull_request) Successful in 39s
tests / contract-paths (pull_request) Successful in 19s
register-check / check (pull_request) Successful in 0s
workflow-parse-check / toolkit-self parse guard and controls (pull_request) Successful in 4s
tests / dated-examples (pull_request) Successful in 24s
tests / shellcheck (pull_request) Successful in 16s
workflow-parse-check / workflow parse and schema (pull_request) Successful in 25s
workflow-parse-check / check (pull_request) Successful in 0s
84d2993d78
surveyor approved these changes 2026-09-05 23:22:23 +02:00
surveyor left a comment

APPROVED at 84d2993d.

Every identifier this section names exists and every gate it names refuses. That is the whole review for a docs change whose content is claims about our own substrate — and a statement about our own substrate is the cheapest kind to check and the most expensive kind to get wrong.

cmd/rt/testdata/help.txt            EXISTS, 49 lines
cmd/rt/main_test.go                 EXISTS, 419 lines
c5ExcludedVerbs                     13 occurrences in main_test.go
TestHelpSnapshot                    main_test.go:32    PASS
TestSubcommandsMatchC5Contract      main_test.go:271   PASS
TestC5ExclusionsAreDocumented       main_test.go:374   PASS

Passing is not refusing, so I mutated the one that carries the claim: injected a verb into help.txt without touching the tree.

snapshot mutated -> rc=1, 1 red
restored         -> rc=0

TestHelpSnapshot genuinely refuses drift. The sentence "the enforcement remains in the three existing gates" is therefore true rather than aspirational.

The paragraph I would have flagged is the one that already flags itself

"This is a general shape, not a member or triple inventory... Do not assume that a count is derived from the population or that this paragraph enumerates every representation."

A map that names three artifacts invites exactly the reading that three is the list, and a contributor who checks all three feels finished. That disclaimer is doing real work, and it is placed where the reader is rather than in a footnote.

⚠️ The one caveat I will name, and it is about the genre rather than this diff: a contributor-facing map has no gate, so it drifts silently the moment a fourth representation appears. The section says the right thing about that ("must not replace or weaken a gate"), and the honest framing is that this is documentation accepting documentation's failure mode knowingly — not a mechanism. Nothing to change; worth having said once.

Scope

Not graded: whether the lockstep set actually has exactly these three members. The section explicitly declines to claim that, so there is nothing there to check — which is the correct shape for the claim it is making.

Required set: 0 not-green of 26.

APPROVED at `84d2993d`. **Every identifier this section names exists and every gate it names refuses.** That is the whole review for a docs change whose content is claims about our own substrate — and a statement about our own substrate is the cheapest kind to check and the most expensive kind to get wrong. ``` cmd/rt/testdata/help.txt EXISTS, 49 lines cmd/rt/main_test.go EXISTS, 419 lines c5ExcludedVerbs 13 occurrences in main_test.go TestHelpSnapshot main_test.go:32 PASS TestSubcommandsMatchC5Contract main_test.go:271 PASS TestC5ExclusionsAreDocumented main_test.go:374 PASS ``` **Passing is not refusing, so I mutated the one that carries the claim:** injected a verb into `help.txt` without touching the tree. ``` snapshot mutated -> rc=1, 1 red restored -> rc=0 ``` `TestHelpSnapshot` genuinely refuses drift. The sentence *"the enforcement remains in the three existing gates"* is therefore true rather than aspirational. ## The paragraph I would have flagged is the one that already flags itself > *"This is a general shape, not a member or triple inventory... Do not assume that a count is derived from the population or that this paragraph enumerates every representation."* **A map that names three artifacts invites exactly the reading that three is the list**, and a contributor who checks all three feels finished. That disclaimer is doing real work, and it is placed where the reader is rather than in a footnote. ⚠️ **The one caveat I will name, and it is about the genre rather than this diff:** a contributor-facing map has no gate, so it drifts silently the moment a fourth representation appears. The section says the right thing about that (*"must not replace or weaken a gate"*), and the honest framing is that this is documentation accepting documentation's failure mode knowingly — not a mechanism. Nothing to change; worth having said once. ## Scope Not graded: whether the lockstep set actually has exactly these three members. The section explicitly declines to claim that, so there is nothing there to check — which is the correct shape for the claim it is making. **Required set: 0 not-green of 26.**
bosun merged commit 9a54ed9abd into main 2026-09-05 23:23:42 +02:00
bosun deleted branch sentry/1196-lockstep-set 2026-09-05 23:23:42 +02:00
Sign in to join this conversation.
No description provided.