RFC โ Remove satori/go.uuid (EOL) โ standardize on google/uuid
Bucket item: A4 ยท Class: ๐ก Standard ยท Jira Story: TF-3504 ยท Epic: TF-3500
Context / Problemโ
The service pulls two UUID libraries:
| Locus | Package |
|---|---|
go.mod:29 | github.com/satori/go.uuid v1.2.0 โ deprecated / unmaintained |
go.mod:17 | github.com/google/uuid v1.6.0 โ maintained, already vendored |
satori/go.uuid is abandoned and had randomness/security advisories in older tags. Two UUID libraries
create inconsistency. Remove satori/go.uuid and standardize on google/uuid (already present).
Proposed changeโ
Replace all satori/go.uuid call sites with google/uuid, then drop the dependency.
Execution plan (call to action)โ
grep -rn "satori/go.uuid"โ enumerate every import + call site.- Port each:
uuid.NewV4()โgoogle/uuiduuid.NewRandom()/uuid.New();uuid.FromStringโuuid.Parse. Watch byte-order/format parity where UUIDs are persisted or compared. - Remove
satori/go.uuidfromgo.mod;go mod tidy; build + test. - Confirm no wire/DB-format change for any persisted UUID (guard-rail: existing rows still parse).
Risks & rollbackโ
- Risk: low-medium โ API differences (
NewV4error-return,FromStringโParse) and any place relying on satori's exact string/byte formatting. - Rollback: revert the call-site diff +
go.modchange; both libraries coexist as before.
Open questionsโ
- Any persisted or externally-exchanged UUID whose format must remain byte-identical?
- Any transitive dependency that itself pulls
satori/go.uuid(so it can't be fully dropped yet)?