diff --git a/tplx/sprigx/README.html b/tplx/sprigx/README.html
index 07080e3..d55ce24 100644
--- a/tplx/sprigx/README.html
+++ b/tplx/sprigx/README.html
@@ -636,7 +636,7 @@ pre.rouge .gs {
Brent Saner
bts@square-r00t.net
-
Last rendered 2026-02-11 10:21:37 -0500
+
Last rendered 2026-02-20 12:41:29 -0500
Table of Contents
diff --git a/tplx/sprigx/README.md b/tplx/sprigx/README.md
index 970a999..e5e3c49 100644
--- a/tplx/sprigx/README.md
+++ b/tplx/sprigx/README.md
@@ -6,7 +6,7 @@
Brent Saner
-
Last rendered 2026-02-11 10:21:41 -0500
+
Last rendered 2026-02-20 12:41:34 -0500
diff --git a/uuidx/funcs.go b/uuidx/funcs.go
index 659f095..eaacdbc 100644
--- a/uuidx/funcs.go
+++ b/uuidx/funcs.go
@@ -42,9 +42,10 @@ COM interfaces are all OVER the place in UUID version, but usually *not* UUIDv4.
A target/expected UUID version can be provided via tgtVer. To disable version analysis, use 0 (or 0x00, etc.).
It is *highly* recommended to provide a tgtVer if it is known; it can significantly boost confidence in the correct direction.
-A warning, though - if a *wrong* tgtVer IS specified, it can negatively affect confidence accuracy.
+A warning, though - if a tgtVer IS specified but is wrong (e.g. a UUIDv1 was passed in but tgtVer was specified as 4 for UUIDv4),
+it can *negatively* affect confidence accuracy.
Thus if you aren't ABSOLUTELY certain of the target UUID version, it's better to use 0/0x00 to disable the check.
-Providing a target version is key to breaking some ties (e.g. both cs and csFlip are equal).
+Providing a target version can be key to breaking some "ties" (e.g. both cs and csFlip are equal).
For example, the given RFC-compliant UUIDv4:
8d8e35ae-58d2-4d28-b09d-ffffffffffff
@@ -67,21 +68,22 @@ which results in a cs == 1 and csFlip == 0 - not very high confidence (but at le
Providing a tgtVer == 4 changes this to cs == 7 and csFlip == 0, which is *much* more decisive.
UUIDs/GUIDs found to be strictly RFC-conforming (via [IsRfc], which returns false for Microsoft GUIDs)
-are *heavily* weighted negatively.
+are *heavily* weighted negatively in their respective scoring forms.
Confidence levels can be generally considered as the following:
- cs >= 7: Likely Microsoft GUID (mixed-endian)
- cs >= 4: Likely Microsoft GUID
- 0 < cs < 4: Leans Microsoft GUID, but untrusted
- cs == 0: Entirely ambiguous/indeterminate
- -4 < cs < 0: Leans UUID/non-Microsoft GUID but untrusted
- cs <= -5: Likely UUID/not Microsoft GUID
- csFlip >=cs && csFlip >= 4: Likely a pre-flipped (ToggleUuidMsGuid'd) Microsoft GUID
+ * cs >= 7: Likely Microsoft GUID (mixed-endian)
+ * cs >= 4: Likely Microsoft GUID
+ * 0 < cs < 4: Leans Microsoft GUID, but untrusted/ambiguous
+ * cs == 0: Entirely and completely ambiguous/indeterminate
+ * -4 < cs < 0: Leans UUID/non-Microsoft GUID but untrusted/ambiguous
+ * cs <= -5: Likely UUID/not Microsoft GUID
+ * csFlip >= cs && csFlip >= 4: u is likely a pre-flipped (ToggleUuidMsGuid'd) Microsoft GUID
+ (i.e. u is likely directly from a Microsoft API/ data source
+ and no normalization has occurred yet)
[ยง 4.2]: https://datatracker.ietf.org/doc/html/rfc9562#section-4.2
*/
-
func DetectMsGuid(u uuid.UUID, tgtVer uuid.Version) (cs, csFlip int) {
var isRfc bool
@@ -168,7 +170,7 @@ func DetectMsGuid(u uuid.UUID, tgtVer uuid.Version) (cs, csFlip int) {
}
/*
-Equal returns `true` if [uuid.UUID] the two provided [uuid.UUID] are the same.
+Equal returns `true` if the two provided [uuid.UUID] are the same.
Currently it just wraps:
@@ -228,7 +230,9 @@ and in MODERN implementations do the endianness flip [ToggleUuidMsGuid] of (USUA
See [DetectMsGuid] for a more in-depth result that will let you use the confidence level directly,
and for details on the weird things that can go wrong with this guesswork.
-Note that this won't be 100% reliable due to math things, but it should be reliable enough most of the time.
+Note that this won't be 100% reliable due to math things, but it should be ...somewhat reliable
+enough most of the time. Maybe. But you are *strongly* recommended to use [DetectMsGuid] instead
+wherever possible.
See also [MsGuidToUuid] and [UuidToMsGuid].
*/
@@ -282,9 +286,10 @@ of an RFC UUID. Use [IsMsGuid] for that.
In the special case of u being a valid NCS UUID, rfc will be false but gen will be [Rfc4122].
This is because RFC 9652 deprecates the NCS UUID. See [IsNcs].
-(You are highly unlikely to encounter an NCS UUID "in the wild" unless you are receiving
-a UUID from someone who severely misunderstands that UUIDs are structured/versioned/typed
-and thinks they're just random byes in hex with hyphens in certain places.)
+(You are highly unlikely to encounter an NCS UUID "in the wild" unless you are working
+with VERY old systems/data or are receiving a UUID from someone who severely
+misunderstands that UUIDs are structured/versioned/typed and thinks they're
+just random byes in hex with hyphens in certain places.)
(They aren't that, if you're one of those someones.)
Nil UUID ([IsNilUUID]) and Max UUID ([IsMaxUUID]) return true with RFCs 4122 and RFC 9562 respectively.
@@ -391,6 +396,9 @@ If [IsMsGuid] is false for msGUID, u will be equal to msGUID.
See [UuidToMsGuid] for the inverse, and [IsRfc] to check
if the result is a strictly conforming UUID.
+
+Use [ToggleUuidMsGuid] if you want msGUID explicitly flipped
+with no gating from [IsMsGuid].
*/
func MsGuidToUuid(msGUID uuid.UUID) (u uuid.UUID) {
@@ -441,10 +449,18 @@ func ToggleUuidMsGuid(orig uuid.UUID) (converted uuid.UUID) {
UuidToMsGuid converts a UUID to a Microsoft GUID.
If [DetectMsGuid] indicates a good likelihood for u already being a Microsoft GUID
-(greater than or equal) to [MsGuidThreshold], msGUID will be equal to u.
-(If it detects it as unflipped endianness, it will automatically be flipped by this function.)
+(cs being greater than or equal to [MsGuidThreshold]), msGUID will be equal to u.
+
+If [DetectMsGuid] detects it as a Microsoft unflipped endianness (i.e. csFlip > cs),
+msGUID will be the [ToggleUuidMsGuid]-flipped format of u UNLESS u.Variant == [uuid.Microsoft].
+Thus this function *should* (with plenty of caveats mentioned elsewhere in other functions/documentation)
+be usable for flipping a purely non-Microsoft-tainted RFC-conforming UUID, and not flipping it otherwise
+as it's already a "Microsoft GUID" of some generation (either legacy or newer).
See [MsGuidToUuid] for the inverse.
+
+Use [ToggleUuidMsGuid] if you want u explicitly flipped with no gating from [DetectMsGuid] or
+via u's [uuid.Variant].
*/
func UuidToMsGuid(u uuid.UUID) (msGUID uuid.UUID) {
@@ -455,6 +471,10 @@ func UuidToMsGuid(u uuid.UUID) (msGUID uuid.UUID) {
msGUID = u
return
}
+ if u.Variant == uuid.Microsoft {
+ msGUID = u
+ return
+ }
msGUID = ToggleUuidMsGuid(u)
return