# Strings Strings are the simplest git-meta value type. A string represents one current scalar value for a `(target, key)` pair. Examples: - `agent:model = claude-4.6` - `owner = schacon` - `review:signoff = schacon@gmail.com` ## Summary - One current value per key - Serialized as a single terminal blob - Removal uses a key tombstone - Concurrent updates resolve by last-writer-wins ## Serialized tree shape For a string value, write the string to: `[base]//__value` Examples: - `commit/13//agent/model/__value` - `path/src/metrics/__target__/owner/__value` The blob contents are the raw string value. ## Tombstones If a string key is removed, serialize a tombstone at: `[base]/__tombstones//__deleted` The tombstone blob should be the same blob as the `__value` was. This way Git reuses the blob and we can do content comparisons if needed in cases of conflict. When a string is set again after deletion, the tombstone is cleared locally and omitted from the next serialization. ## Merge semantics Merging trees can technically use either `ours` or `theirs` strategies, but one value should win out. Projects or individuals can determine which they prefer. The default in our implementation is `ours`, so that both values are in the history and reverting is possible.