summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--Documentation/spec.adoc33
1 files changed, 24 insertions, 9 deletions
diff --git a/Documentation/spec.adoc b/Documentation/spec.adoc
index 0816a11..b4d025f 100644
--- a/Documentation/spec.adoc
+++ b/Documentation/spec.adoc
@@ -4,7 +4,7 @@
= it: zero-g git
Kim Altintop <kim@eagain.io>
:revdate: 2022
-:revnumber: 0.1.0
+:revnumber: 0.2.0
:revremark: draft
:attribute-missing: warn
:listing-caption: Figure
@@ -15,6 +15,11 @@ Kim Altintop <kim@eagain.io>
:toc: preamble
:toclevels: 3
:xrefstyle: short
+// custom attributes
+:fmt-version-id: 0.2.0
+:fmt-version-drop: 0.2.0
+:fmt-version-mirrors: 0.2.0
+:fmt-version-alternates: 0.2.0
_it_ aims to augment git with primitives to build integrated, cryptographically
verifiable collaboration workflows around source code. It maintains the
@@ -227,10 +232,12 @@ H('blob ' || LEN(p) || NUL || p)
[[OBJECT_ID]]OBJECT_ID::
Hexadecimal git object id.
-[[SPEC_VERSION]]SPEC_VERSION::
- Version of this specification in "`dotted triple`" format, currently
- {revnumber}. The semantics loosely follows the <<semver,"Semantic
- Versioning">> convention, but gives no significance to leading zeroes.
+[[FMT_VERSION]]FMT_VERSION::
+ Version of a datatype, in "`dotted triple`" format. The semantics loosely
+ follows the <<semver,"Semantic Versioning">> convention, but gives no
+ significance to leading zeroes. That is, a major version of 1.x does not
+ indicate that it is more stable than 0.x, but that it is not _forward
+ compatible_ with 0.x.
[[URL]]URL::
A URL as per the <<WHATWG-URL, WHATWG specification>>.
@@ -295,7 +302,7 @@ The `*signed*` portion of the `id.json` file is defined as follows:
----
{
"_type": "eagain.io/it/identity",
- "spec_version": <<SPEC_VERSION>>,
+ "fmt_version": <<FMT_VERSION>>,
"prev": <<CONTENT_HASH>> | null,
"keys": [
<<KEY>>,
@@ -327,6 +334,8 @@ ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIDtt6XEdNVInhiKkX+ccN++Bk8kccdP6SeBPg0Aq8XFo
the identity metadata to be properly signed. Must be between 1 and the
number of `*keys*` in the metadata file.
+The current <<FMT_VERSION>> of `id.json` is: *_{fmt-version-id}_*.
+
[#id-verification]
=== Verification
@@ -651,7 +660,7 @@ The `*signed*` portion the `drop.json` metadata file is defined as follows:
----
{
"_type": "eagain.io/it/drop",
- "spec_version": <<SPEC_VERSION>>,
+ "fmt_version": <<FMT_VERSION>>,
"description": <<DESCRIPTION>>,
"prev": <<CONTENT_HASH>> | null,
"roles": {
@@ -733,6 +742,8 @@ Example:
}
----
+The current <<FMT_VERSION>> of `drop.json` is: *_{fmt-version-drop}_*.
+
[#mirrors-json]
==== `mirrors.json`
@@ -746,7 +757,7 @@ The `*signed*` portion of the `mirrors.json` file is defined as follows:
----
{
"_type": "eagain.io/it/mirrors",
- "spec_version": <<SPEC_VERSION>>,
+ "fmt_version": <<FMT_VERSION>>,
"mirrors": [
<<MIRROR>>,
...
@@ -783,6 +794,7 @@ The `*signed*` portion of the `mirrors.json` file is defined as follows:
peer-to-peer storage if (and only if) the <<record-json,record.json>>
entries specify stable bundle URIs.
+The current <<FMT_VERSION>> of `mirrors.json` is: *_{fmt-version-mirrors}_*.
[#alternates-json]
==== `alternates.json`
@@ -800,7 +812,7 @@ The `*signed*` portion of the `alternates.json` file is defined as follows:
----
{
"_type": "eagain.io/it/alternates",
- "spec_version": <<SPEC_VERSION>>,
+ "fmt_version": <<FMT_VERSION>>,
"alternates": [
<<URL>>,
...
@@ -810,6 +822,9 @@ The `*signed*` portion of the `alternates.json` file is defined as follows:
}
----
+The current <<FMT_VERSION>> of `alternates.json` is:
+*_{fmt-version-alternates}_*.
+
[#drop-verification]
=== Verification