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
+5 -5
View File
@@ -30,8 +30,8 @@ func CreateInstance(ctx context.Context, db *mongo.Database, name string) (*mode
// created before payment and provisioning happens on the confirmed-payment
// webhook. Provisioning with the placeholder's own ID keeps the id stable, so
// the subscription's custom_data never points at a rewritten row and later
// webhooks still resolve it. If an instance with this ID already exists a
// webhook retried after a partial provision it is returned as-is rather than
// webhooks still resolve it. If an instance with this ID already exists - a
// webhook retried after a partial provision - it is returned as-is rather than
// duplicated.
//
// The count-then-insert loop is racy on its own. It is safe only because
@@ -92,7 +92,7 @@ var ErrSlugTaken = errors.New("slug taken")
// the slug it holds now.
//
// It returns the current slug unchanged when the name still derives to it, so a
// cosmetic edit capitalisation, punctuation, a trailing "Ltd." is not a move
// cosmetic edit - capitalisation, punctuation, a trailing "Ltd." - is not a move
// and cannot collide with the instance's own slug.
func RenameSlug(name, currentSlug string) (string, error) {
base, err := BaseSlug(name)
@@ -110,13 +110,13 @@ func RenameSlug(name, currentSlug string) (string, error) {
// It returns the name and slug the control plane held BEFORE the write, and
// those are the only correct values to unwind with. The caller's own copy of the
// instance may be stale, and admin's copy stores slug with `omitempty`, so an
// unwind driven from there can write an empty slug which either mis-restores
// unwind driven from there can write an empty slug - which either mis-restores
// the tenant host or trips the unique index against every other slugless row.
//
// The count-then-update is racy on its own, and is safe for the same reason
// CreateInstanceWithID's loop is: instances.slug carries a unique index, so a
// lost race surfaces as a duplicate-key error. Unlike creation there is nothing
// to retry with the caller asked for one specific name so it becomes
// to retry with - the caller asked for one specific name - so it becomes
// ErrSlugTaken. Do not remove the duplicate-key branch, and do not remove the
// index.
func RenameInstance(ctx context.Context, db *mongo.Database, instanceID, name string) (inst *models.Instance, prevName, prevSlug string, err error) {
+1 -1
View File
@@ -2,7 +2,7 @@
// plane and sitesvc.
//
// These rules used to be duplicated: the control plane owned one copy and
// sitesvc mirrored it by hand. The copies had already drifted sitesvc retried
// sitesvc mirrored it by hand. The copies had already drifted - sitesvc retried
// on a lost slug race while the control plane returned an error. This package
// is the single definition; neither service may reimplement any of it.
package provision