chore: replace em dashes with hyphens, add no-em-dash rule to CLAUDE.md

This commit is contained in:
2026-09-10 09:18:58 +00:00
parent 759d36e85d
commit 059949674d
31 changed files with 65 additions and 61 deletions
+10 -6
View File
@@ -7,7 +7,7 @@ The private Go module every Vantage service imports. Extracted from the
vantage-shared/
├── grpc/pb/ # the agent↔control-plane wire types, hand-written
├── grpc/codec/ # the JSON codec they travel over
├── proto/vantage/v1/ # vantage.proto documentation for the above
├── proto/vantage/v1/ # vantage.proto - documentation for the above
├── mail/ # the one email system: transport + templates
├── license/ # payload, sign, verify, trusted keys, plans
├── models/ # Instance, User, Settings
@@ -18,7 +18,7 @@ vantage-shared/
└── cmd/lkctl/ # issue and inspect licences by hand
```
Module path is `gitea.hostxtra.co.uk/vantage/vantage-shared` **lowercase
Module path is `gitea.hostxtra.co.uk/vantage/vantage-shared` - **lowercase
`vantage`**, though the Gitea org is canonically `Vantage`. Gitea serves both
spellings; Go module paths are case-sensitive strings, and two spellings would
cache as two modules. Keep the lowercase one.
@@ -46,7 +46,7 @@ v0.2.0`. Consumers pin exact versions.
`grpc/codec`. Nothing generates them, and `vantage.proto` is not compiled by any
build. It is the readable statement of the wire contract, and it lives in the
same repository as the Go types precisely so that a message added to one can be
added to the other **in the same commit** that co-location is the only thing
added to the other **in the same commit** - that co-location is the only thing
enforcing the match, so do not split them again.
There used to be two copies of `pb`, in the agent and the server, and they had
@@ -57,7 +57,7 @@ sides. The agent links the server half as dead code, which the linker drops.
**A wire change lands in three steps, in this order**: release this module, bump
the pin in `vantage/server` (live at the next push to main), bump the pin in
`vantage/agent` (live only at the next `agent/v*` tag). The control plane will
be ahead of the fleet in between, which was true before too it is just written
be ahead of the fleet in between, which was true before too - it is just written
down in two `go.mod` files now instead of implied by a shared directory.
## Things that mirror something outside this repository
@@ -71,7 +71,7 @@ with a file in another repository:
probe finds no ciphertext and reports "this database stores no ciphertext
yet", so the one gate that catches what a key fingerprint cannot becomes a
no-op. `settings` is deliberately in neither that map nor
`CiphertextCollections()` its ESO read token is a SHA-256 hash, not
`CiphertextCollections()` - its ESO read token is a SHA-256 hash, not
ciphertext.
- **`mail/templates/layout.html.tmpl`** carries the control plane's dark theme
values as **literal hex**. Email clients support neither `var()` nor a
@@ -81,8 +81,12 @@ with a file in another repository:
- **`provision`** is the single implementation of the slug rules that both the
control plane and Vantage HQ depend on. It is the one place those two
repositories must agree on behaviour, which is why it is here rather than
copied but it now also means a change to it is a release and two pin bumps.
copied - but it now also means a change to it is a release and two pin bumps.
`mail/render_test.go` renders every template and fails if one exists that no
case covers. The templates are parsed in `init()`, so without that test a
mistyped field is a boot-time panic in three services.
## Writing style
Never use em dashes (the long dash character) anywhere: code, comments, UI copy, docs, commit messages. Use a plain hyphen ` - `, a comma, a colon, or split the sentence instead.