From e0849585802ef2745964dcdae8197d380c408c19 Mon Sep 17 00:00:00 2001 From: Seongmin Lee Date: Thu, 20 Aug 2026 17:45:35 +0900 Subject: [PATCH] lexicons: refactor git object reference spec Make reference bit ambiguious by using just raw git object ID without object kind or size. Object kind is usually known when using it and object size is usually unknown and unimportant. NOTE: `git.oid` corresponds to atproto's `cid-link` type and not `blob` type. Using `git.oid` inside a record doesn't guarantee the existance of the object in this repository. For now, `git.oid` can be either sha1 and sha256. this might change before 1.0 launch. Signed-off-by: Seongmin Lee --- lexicons/embed/commit.json | 2 +- lexicons/org/tangled/embed/commit.json | 2 +- .../org/tangled/embed/unspecced/file.json | 2 +- lexicons/org/tangled/git/object.json | 25 ------------------- lexicons/org/tangled/git/oid.json | 18 +++++++++++++ lexicons/org/tangled/review/patch.json | 4 +-- .../org/tangled/review/unspecced/round.json | 2 +- 7 files changed, 24 insertions(+), 31 deletions(-) delete mode 100644 lexicons/org/tangled/git/object.json create mode 100644 lexicons/org/tangled/git/oid.json diff --git a/lexicons/embed/commit.json b/lexicons/embed/commit.json index 98dcf2ca2..c6892a2f9 100644 --- a/lexicons/embed/commit.json +++ b/lexicons/embed/commit.json @@ -10,7 +10,7 @@ ], "properties": { "repo": { "type": "string", "format": "did" }, - "commit": { "type": "union", "refs": ["sh.tangled.git.oid"] } + "commit": { "type": "ref", "ref": "sh.tangled.git.oid" } } }, "view": { diff --git a/lexicons/org/tangled/embed/commit.json b/lexicons/org/tangled/embed/commit.json index b9184ca4d..157edb8bc 100644 --- a/lexicons/org/tangled/embed/commit.json +++ b/lexicons/org/tangled/embed/commit.json @@ -10,7 +10,7 @@ ], "properties": { "repo": { "type": "string", "format": "did" }, - "commit": { "type": "ref", "ref": "org.tangled.git.object" } + "commit": { "type": "ref", "ref": "org.tangled.git.oid" } } } } diff --git a/lexicons/org/tangled/embed/unspecced/file.json b/lexicons/org/tangled/embed/unspecced/file.json index 413d6e8a8..897385e8e 100644 --- a/lexicons/org/tangled/embed/unspecced/file.json +++ b/lexicons/org/tangled/embed/unspecced/file.json @@ -11,7 +11,7 @@ ], "properties": { "repo": { "type": "string", "format": "did" }, - "commit": { "type": "ref", "ref": "org.tangled.git.object" }, + "commit": { "type": "ref", "ref": "org.tangled.git.oid" }, "path": { "type": "string" } } } diff --git a/lexicons/org/tangled/git/object.json b/lexicons/org/tangled/git/object.json deleted file mode 100644 index 775b0bf4f..000000000 --- a/lexicons/org/tangled/git/object.json +++ /dev/null @@ -1,25 +0,0 @@ -{ - "lexicon": 1, - "id": "org.tangled.git.object", - "description": "Git object reference similar to concrete `blob` type. This is not same as 'git reference'.", - "defs": { - "main": { - "type": "object", - "required": ["oid", "kind", "size"], - "properties": { - "oid": { - "type": "string", - "minLength": 64, - "maxLength": 64 - }, - "kind": { - "type": "string", - "enum": ["blob", "commit", "tag", "tree"] - }, - "size": { - "type": "integer" - } - } - } - } -} diff --git a/lexicons/org/tangled/git/oid.json b/lexicons/org/tangled/git/oid.json new file mode 100644 index 000000000..d131b6561 --- /dev/null +++ b/lexicons/org/tangled/git/oid.json @@ -0,0 +1,18 @@ +{ + "lexicon": 1, + "id": "org.tangled.git.oid", + "description": "Git object-id similar to concrete `cid-link` type.", + "defs": { + "main": { + "type": "object", + "required": ["oid"], + "properties": { + "oid": { + "type": "string", + "minLength": 40, + "maxLength": 64 + } + } + } + } +} diff --git a/lexicons/org/tangled/review/patch.json b/lexicons/org/tangled/review/patch.json index 38dfc431b..f8839b5e4 100644 --- a/lexicons/org/tangled/review/patch.json +++ b/lexicons/org/tangled/review/patch.json @@ -20,8 +20,8 @@ "format": "record-key", "description": "ticket-id" }, - "base": { "type": "ref", "ref": "org.tangled.git.object" }, - "head": { "type": "ref", "ref": "org.tangled.git.object" }, + "base": { "type": "ref", "ref": "org.tangled.git.oid" }, + "head": { "type": "ref", "ref": "org.tangled.git.oid" }, "createdAt": { "type": "string", "format": "datetime" } } } diff --git a/lexicons/org/tangled/review/unspecced/round.json b/lexicons/org/tangled/review/unspecced/round.json index 26b0d0caf..6b2fe4a36 100644 --- a/lexicons/org/tangled/review/unspecced/round.json +++ b/lexicons/org/tangled/review/unspecced/round.json @@ -22,7 +22,7 @@ }, "commit": { "type": "ref", - "ref": "org.tangled.git.object", + "ref": "org.tangled.git.oid", "description": "ID of commit that is getting reviewed." }, "state": { -- 2.51.2