diff --git a/packages/GameCult.Thing.Contract/Domain.cs b/packages/GameCult.Thing.Contract/Domain.cs
index 15790fe..573b433 100644
--- a/packages/GameCult.Thing.Contract/Domain.cs
+++ b/packages/GameCult.Thing.Contract/Domain.cs
@@ -37,7 +37,7 @@ public static class ThingDomain
public static int? Count(int? value) => value.HasValue ? Count(value.Value) : null;
- /// A name the contract joins into a record key: non-empty, no '.'.
+ /// A name the contract joins into a key: non-empty, no '.'.
public static string Segment(string value) =>
string.IsNullOrEmpty(value) ? throw new ThingDomainException("Segment", "non-empty")
: value.IndexOf('.') >= 0 ? throw new ThingDomainException("Segment", "free of '.'")
diff --git a/packages/GameCult.Thing.Contract/Keys.cs b/packages/GameCult.Thing.Contract/Keys.cs
index f1350fe..4ecb57a 100644
--- a/packages/GameCult.Thing.Contract/Keys.cs
+++ b/packages/GameCult.Thing.Contract/Keys.cs
@@ -3,7 +3,7 @@ using System.Globalization;
namespace GameCult.Thing.Contract;
///
-/// The record key of each kind. Each key joins free-string provider or publisher ids (dotted, as the Verse names them)
+/// The key of each kind. Each key joins free-string provider or publisher ids (dotted, as the Verse names them)
/// with typed trailing parts: a segment holds no dot and a seq or version is digits, so a key splits at its last dot
/// (surface, asset catalog, result) or last two (composition), and two different field sets never build one key.
///
diff --git a/packages/GameCult.Thing.Contract/Result.cs b/packages/GameCult.Thing.Contract/Result.cs
index 96cc98c..7544a5f 100644
--- a/packages/GameCult.Thing.Contract/Result.cs
+++ b/packages/GameCult.Thing.Contract/Result.cs
@@ -97,7 +97,7 @@ public sealed class OpenExternalEffect : Effect
///
/// A provider's answer to one invocation. Results are built by the four factories and nothing else: the constructor is
/// private (MessagePack calls it on decode, and it holds the same bound), and no API takes a
-/// state as a string or an object payload. Seq counts from 1 per invocation. The copied invocation id is a
+/// state as free text or as an untyped value. Seq counts from 1 per invocation. The copied invocation id is a
/// convenience: core binds a result to an invocation it issued, so the copy is not provenance.
///
[CultDocument("gamecult.thing.command_result", "gamecult.thing.command_result.v1")]