From 2a6623395ef91855505fcc1caeb1ad168b06cf98 Mon Sep 17 00:00:00 2001 From: Simeon Warner Date: Fri, 16 Jan 2026 16:54:23 -0500 Subject: [PATCH 1/6] Update extensions and docs --- README.md | 23 ++++++++++--------- docs/0000-example-extension.md | 5 ++-- docs/0001-digest-algorithms.md | 7 +++--- docs/0002-flat-direct-storage-layout.md | 6 ++--- ...0003-hash-and-id-n-tuple-storage-layout.md | 5 ++-- docs/0004-hashed-n-tuple-storage-layout.md | 5 ++-- docs/0005-mutable-head.md | 5 ++-- docs/0006-flat-omit-prefix-storage-layout.md | 5 ++-- ...0007-n-tuple-omit-prefix-storage-layout.md | 14 +++++------ docs/0008-schema-registry.md | 5 ++-- docs/0009-digest-algorithms.md | 7 +++--- ...tial-n-tuple-omit-prefix-storage-layout.md | 5 ++-- docs/0011-direct-clean-path-layout.md | 11 ++++----- docs/initial.md | 3 +-- 14 files changed, 46 insertions(+), 60 deletions(-) diff --git a/README.md b/README.md index 1c2688c..c413d7c 100644 --- a/README.md +++ b/README.md @@ -65,30 +65,31 @@ An _initial extension_ could be used to address some of the [undefined behaviors ### Layout -Community extensions MUST be written as GitHub flavored markdown files in the `docs` directory of this repository. The -filename of an extension is based on its *Registered Name* with a `.md` extension. +Community extensions MUST be written as GitHub flavored markdown files in the `docs` directory of this repository. The filename of an extension is based on its *Registered Name* with a `.md` extension. -Extensions are numbered sequentially, and the *Registered Name* of an extension is prefixed with this 4-digit, zero-padded -decimal number. The *Registered Name* should be descriptive, use hyphens to separate words, and have a maximum of 250 -characters in total. +Extensions are numbered sequentially, and the *Registered Name* of an extension is prefixed with this 4-digit, zero-padded decimal number. The *Registered Name* should be descriptive, use hyphens to separate words, and have a maximum of 250 characters in total. New extensions should use `NNNN` as a place-holder for the next available prefix number at the time of merging. New extension pull-requests should not update the index document (`docs/index.md`), this will be done post-approval. -Extensions are intended to be mostly static once published. Substantial revisions of content beyond simple fixes warrants publishing a new extension, and marking the old extension obsolete by updating the *Obsoletes/Obsoleted by* sections in each extension respectively. +Extensions are intended to be mostly static once published. Substantial revisions of content beyond simple fixes warrants publishing a new extension, and marking the old extension obsolete, extended or such by *Related to* sections in each extension (see [Headers](#headers)). -An example/template is available in this repository as "[OCFL Community Extension 0000: Example Extension](docs/0000-example-extension.md)" and is rendered -via GitHub pages as https://ocfl.github.io/extensions/0000-example-extension +An example/template is available in this repository as "[OCFL Community Extension 0000: Example Extension](docs/0000-example-extension.md)" and is rendered via GitHub pages as https://ocfl.github.io/extensions/0000-example-extension ### Headers Extension definitions MUST contain a header section that defines the following fields: -* **Extension Name**: The extension's unique *Registered Name* +* **Extension Name**: The extension's unique *Registered Name* (in a markdown code-span/backticks) * **Authors**: The names of the individuals who authored the extension * **Minimum OCFL Version**: The minimum OCFL version that the extension requires, eg. *1.0* * **OCFL Community Extensions Version**: The version of the OCFL Extensions Specification that the extension conforms to, eg. *1.0* -* **Obsoletes**: The *Registered Name* of the extension that this extension obsoletes, or *n/a* -* **Obsoleted by**: The *Registered Name* of the extension that obsoletes this extension, or *n/a* +* **Related to**: A list of one or more qualified links to related extensions, or *n/a* + +If present, the list of qualified links in **Related to** is a comma-plus-space separated set of links where each has the markdown form `\[NNNN: Extensions Name]\(regsistered_name.md) \(relationship)` where the _relationship_ is one of: +* obsoletes - Use when a new extension SHOULD be used in preference to the prior extension. This may be because the new extensions corrects errors, or updates a canonical list, for example. +* obsoleted by - Inverse of obsoletes, the header of the existing extension was made obsolete will be updated to record this. +* extends - Use when a new extension adds but does not remove functionality compared to a prior extension, and there is nothing to suggest that use of the prior extension SHOULD be avoided. +* extended by - Inverse of extends, the header of the existing extension that was extended will be updated to record this. ### Parameters diff --git a/docs/0000-example-extension.md b/docs/0000-example-extension.md index cb21b84..ef4207f 100644 --- a/docs/0000-example-extension.md +++ b/docs/0000-example-extension.md @@ -1,11 +1,10 @@ # OCFL Community Extension 0000: Example Extension - * **Extension Name:** 0000-example-extension + * **Extension Name:** `0000-example-extension` * **Authors:** A Person, Other Person * **Minimum OCFL Version:** 1.0 * **OCFL Community Extensions Version:** 1.0 - * **Obsoletes:** n/a - * **Obsoleted by:** n/a + * **Related to:** n/a *Note: This is not a real extension, merely an example.* diff --git a/docs/0001-digest-algorithms.md b/docs/0001-digest-algorithms.md index 3d84432..be2e677 100644 --- a/docs/0001-digest-algorithms.md +++ b/docs/0001-digest-algorithms.md @@ -1,11 +1,10 @@ # OCFL Community Extension 0001: Digest Algorithms - * **Extension Name:** 0001-digest-algorithms + * **Extension Name:** `0001-digest-algorithms` * **Authors:** OCFL Editors * **Minimum OCFL Version:** 1.0 * **OCFL Community Extensions Version:** 1.0 - * **Obsoletes:** n/a - * **Obsoleted by:** 0009-digest-algorithms + * **Related to:** [0009: Digest Algorithms](0009-digest-algorithms.md) (obsoleted by) ## Overview @@ -24,5 +23,5 @@ This extension is an index of additional digest algorithms. It provides a contro In order to have an additional digest algorithm listed here, please submit a pull request on this extension that: * Adds the algorithm to the table. New entries should have a name that does not conflict with those defined in the [OCFL Specification](https://ocfl.io/latest/spec/) or this community extension, and is preferably in common use for the given algorithm. -* Creates a new version of this extension with the next available extension number, obsoleting the current one +* Creates a new version of this extension with the next available extension number, obsoleting the current one * If a long algorithm description is required it may be appropriate to submit an additional new extension describing the algorithm along with an update to this extension that links to it. diff --git a/docs/0002-flat-direct-storage-layout.md b/docs/0002-flat-direct-storage-layout.md index bab894c..a0e1b1d 100644 --- a/docs/0002-flat-direct-storage-layout.md +++ b/docs/0002-flat-direct-storage-layout.md @@ -1,11 +1,10 @@ # OCFL Community Extension 0002: Flat Direct Storage Layout - * **Extension Name:** 0002-flat-direct-storage-layout + * **Extension Name:** `0002-flat-direct-storage-layout` * **Authors:** Peter Winckles * **Minimum OCFL Version:** 1.0 * **OCFL Community Extensions Version:** 1.0 - * **Obsoletes:** n/a - * **Obsoleted by:** n/a + * **Related to:** n/a ## Overview @@ -66,4 +65,3 @@ This example demonstrates some mappings that produce directory names that are in | --- | --- | | info:fedora/object-01 | `info:fedora/object-01` | | abcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghij | `abcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghij` | - diff --git a/docs/0003-hash-and-id-n-tuple-storage-layout.md b/docs/0003-hash-and-id-n-tuple-storage-layout.md index c1f181c..28b4f75 100644 --- a/docs/0003-hash-and-id-n-tuple-storage-layout.md +++ b/docs/0003-hash-and-id-n-tuple-storage-layout.md @@ -1,11 +1,10 @@ # OCFL Community Extension 0003: Hashed Truncated N-tuple Trees with Object ID Encapsulating Directory for OCFL Storage Hierarchies - * **Extension Name:** 0003-hash-and-id-n-tuple-storage-layout + * **Extension Name:** `0003-hash-and-id-n-tuple-storage-layout` * **Authors:** Ben Cail * **Minimum OCFL Version:** 1.0 * **OCFL Community Extensions Version:** 1.0 - * **Obsoletes:** n/a - * **Obsoleted by:** n/a + * **Related to:** n/a ## Overview diff --git a/docs/0004-hashed-n-tuple-storage-layout.md b/docs/0004-hashed-n-tuple-storage-layout.md index 0caa0bd..5d195dd 100644 --- a/docs/0004-hashed-n-tuple-storage-layout.md +++ b/docs/0004-hashed-n-tuple-storage-layout.md @@ -1,11 +1,10 @@ # OCFL Community Extension 0004: Hashed N-tuple Storage Layout - * **Extension Name:** 0004-hashed-n-tuple-storage-layout + * **Extension Name:** `0004-hashed-n-tuple-storage-layout` * **Authors:** Peter Winckles * **Minimum OCFL Version:** 1.0 * **OCFL Community Extensions Version:** 1.0 - * **Obsoletes:** n/a - * **Obsoleted by:** n/a + * **Related to:** n/a ## Overview diff --git a/docs/0005-mutable-head.md b/docs/0005-mutable-head.md index 4674581..2fc6269 100644 --- a/docs/0005-mutable-head.md +++ b/docs/0005-mutable-head.md @@ -1,11 +1,10 @@ # OCFL Community Extension 0005: Mutable HEAD - * **Extension Name:** 0005-mutable-head + * **Extension Name:** `0005-mutable-head` * **Authors:** Peter Winckles * **Minimum OCFL Version:** 1.0 * **OCFL Community Extensions Version:** 1.0 - * **Obsoletes:** n/a - * **Obsoleted by:** n/a + * **Related to:** n/a ## Overview diff --git a/docs/0006-flat-omit-prefix-storage-layout.md b/docs/0006-flat-omit-prefix-storage-layout.md index 0e28ba3..e60c44e 100644 --- a/docs/0006-flat-omit-prefix-storage-layout.md +++ b/docs/0006-flat-omit-prefix-storage-layout.md @@ -1,11 +1,10 @@ # OCFL Community Extension 0006: Flat Omit Prefix Storage Layout - * **Extension Name:** 0006-flat-omit-prefix-storage-layout + * **Extension Name:** `0006-flat-omit-prefix-storage-layout` * **Authors:** Andrew Woods * **Minimum OCFL Version:** 1.0 * **OCFL Community Extensions Version:** 1.0 - * **Obsoletes:** n/a - * **Obsoleted by:** n/a + * **Related to:** n/a ## Overview diff --git a/docs/0007-n-tuple-omit-prefix-storage-layout.md b/docs/0007-n-tuple-omit-prefix-storage-layout.md index a7a7eb3..78cc7e5 100644 --- a/docs/0007-n-tuple-omit-prefix-storage-layout.md +++ b/docs/0007-n-tuple-omit-prefix-storage-layout.md @@ -1,21 +1,20 @@ # OCFL Community Extension 0007: N Tuple Omit Prefix Storage Layout - * **Extension Name:** 0007-n-tuple-omit-prefix-storage-layout + * **Extension Name:** `0007-n-tuple-omit-prefix-storage-layout` * **Authors:** Michael Vandermillen and Andrew Woods * **Minimum OCFL Version:** 1.0 * **OCFL Community Extensions Version:** 1.0 - * **Obsoletes:** n/a - * **Obsoleted by:** n/a + * **Related to:** n/a ## Overview -This storage root extension describes an OCFL storage layout combining a pairtree-like root directory structure derived from prefix-omitted object identifiers, followed by the prefix-omitted object identifier themselves. -The OCFL object identifiers are expected to contain prefixes which are removed in the mapping to directory names. +This storage root extension describes an OCFL storage layout combining a pairtree-like root directory structure derived from prefix-omitted object identifiers, followed by the prefix-omitted object identifier themselves. +The OCFL object identifiers are expected to contain prefixes which are removed in the mapping to directory names. The OCFL object identifier prefix is defined as all characters before and including a configurable delimiter. Where the prefix-omitted identifier length is less than tuple size * number of tuples, the remaining object id (prefix omitted) is left or right-side, zero-padded (configurable, left default), and optionally reversed (default false). The object id is then divided into N n-tuple segments, and used to create nested paths under the OCFL storage root, followed by the prefix-omitted object id directory. -This layout combines the advantages of 0006-flat-omit-prefix-storage-layout (directory name transparency) and the 0004-hashed-n-tuple-storage-layout (enhanced file system/bucket performance). +This layout combines the advantages of 0006-flat-omit-prefix-storage-layout (directory name transparency) and the 0004-hashed-n-tuple-storage-layout (enhanced file system/bucket performance). The limitations of this layout are filesystem dependent (with one exception), and are generally as follows: @@ -126,7 +125,7 @@ identifier, with default `zeroPadding`, modified `tupleSize` and `numberOfTuples ├── inventory.json ├── inventory.json.sha512 └── v1 [...] - + ``` ### Example 2 @@ -180,4 +179,3 @@ identifier, with default `tupleSize`, `numberOfTuples`, and `reverseObjectRoot`, ├── inventory.json.sha512 └── v1 [...] ``` - diff --git a/docs/0008-schema-registry.md b/docs/0008-schema-registry.md index 92fefd3..db4496f 100644 --- a/docs/0008-schema-registry.md +++ b/docs/0008-schema-registry.md @@ -1,11 +1,10 @@ # OCFL Community Extension 0008: Schema Registry - * **Extension Name:** 0008-schema-registry + * **Extension Name:** `0008-schema-registry` * **Authors:** P. Cornwell, D. Granville * **Minimum OCFL Version:** 1.0 * **OCFL Community Extensions Version:** 1.0 - * **Obsoletes:** n/a - * **Obsoleted by:** n/a + * **Related to:** n/a ## Overview diff --git a/docs/0009-digest-algorithms.md b/docs/0009-digest-algorithms.md index 593ea83..d968b92 100644 --- a/docs/0009-digest-algorithms.md +++ b/docs/0009-digest-algorithms.md @@ -1,11 +1,10 @@ # OCFL Community Extension 0009: Digest Algorithms - * **Extension Name:** 0009-digest-algorithms + * **Extension Name:** `0009-digest-algorithms` * **Authors:** OCFL Editors, T. Wrobel * **Minimum OCFL Version:** 1.0 * **OCFL Community Extensions Version:** 1.0 - * **Obsoletes:** 0001-digest-algorithms - * **Obsoleted by:** n/a + * **Related to:** [0001: Digest Algorithms](0001-digest-algorithms.md) (obsoletes) ## Overview @@ -25,5 +24,5 @@ This extension is an index of additional digest algorithms. It provides a contro In order to have an additional digest algorithm listed here, please submit a pull request on this extension that: * Adds the algorithm to the table. New entries should have a name that does not conflict with those defined in the [OCFL Specification](https://ocfl.io/latest/spec/) or this community extension, and is preferably in common use for the given algorithm. -* Creates a new version of this extension with the next available extension number, obsoleting the current one +* Creates a new version of this extension with the next available extension number, obsoleting the current one * If a long algorithm description is required it may be appropriate to submit an additional new extension describing the algorithm along with an update to this extension that links to it. diff --git a/docs/0010-differential-n-tuple-omit-prefix-storage-layout.md b/docs/0010-differential-n-tuple-omit-prefix-storage-layout.md index b0d523d..77e4ebc 100644 --- a/docs/0010-differential-n-tuple-omit-prefix-storage-layout.md +++ b/docs/0010-differential-n-tuple-omit-prefix-storage-layout.md @@ -1,11 +1,10 @@ # OCFL Community Extension 0010: Differential N-Tuple Omit Prefix Storage Layout - * **Extension Name:** 0010-differential-n-tuple-omit-prefix-storage-layout + * **Extension Name:** `0010-differential-n-tuple-omit-prefix-storage-layout` * **Authors:** Mike Giarlo * **Minimum OCFL Version:** 1.1 * **OCFL Community Extensions Version:** 1.0 - * **Obsoletes:** n/a - * **Obsoleted by:** n/a + * **Related to:** n/a ## Overview diff --git a/docs/0011-direct-clean-path-layout.md b/docs/0011-direct-clean-path-layout.md index 2eadee8..3f1455a 100644 --- a/docs/0011-direct-clean-path-layout.md +++ b/docs/0011-direct-clean-path-layout.md @@ -1,11 +1,10 @@ # OCFL Community Extension 0011: Direct Clean Path Layout -* **Extension Name:** 0011-direct-clean-path-layout -* **Authors:** Jürgen Enge (Basel) -* **Minimum OCFL Version:** 1.0 -* **OCFL Community Extensions Version:** 1.0 -* **Obsoletes:** n/a -* **Obsoleted by:** n/a + * **Extension Name:** `0011-direct-clean-path-layout` + * **Authors:** Jürgen Enge (Basel) + * **Minimum OCFL Version:** 1.0 + * **OCFL Community Extensions Version:** 1.0 + * **Related to:** n/a ## Overview diff --git a/docs/initial.md b/docs/initial.md index 376543e..df5f2a0 100644 --- a/docs/initial.md +++ b/docs/initial.md @@ -4,8 +4,7 @@ * **Authors:** OCFL Editors * **Minimum OCFL Version:** 1.0 * **OCFL Community Extensions Version:** 1.0 - * **Obsoletes:** n/a - * **Obsoleted by:** n/a + * **Related to:** n/a ## Overview From d1e5fed59e3b9b28eb6f360342eabe54b4319577 Mon Sep 17 00:00:00 2001 From: Simeon Warner Date: Fri, 16 Jan 2026 17:01:24 -0500 Subject: [PATCH 2/6] More detail --- README.md | 21 +++++++++++++-------- 1 file changed, 13 insertions(+), 8 deletions(-) diff --git a/README.md b/README.md index c413d7c..7e2708b 100644 --- a/README.md +++ b/README.md @@ -71,7 +71,7 @@ Extensions are numbered sequentially, and the *Registered Name* of an extension New extensions should use `NNNN` as a place-holder for the next available prefix number at the time of merging. New extension pull-requests should not update the index document (`docs/index.md`), this will be done post-approval. -Extensions are intended to be mostly static once published. Substantial revisions of content beyond simple fixes warrants publishing a new extension, and marking the old extension obsolete, extended or such by *Related to* sections in each extension (see [Headers](#headers)). +Extensions are intended to be mostly static once published. Substantial revisions of content beyond simple fixes warrants publishing a new extension, and marking the old extension obsolete, extended or such by **Related to** sections in each extension (see [Headers](#headers)). An example/template is available in this repository as "[OCFL Community Extension 0000: Example Extension](docs/0000-example-extension.md)" and is rendered via GitHub pages as https://ocfl.github.io/extensions/0000-example-extension @@ -81,15 +81,20 @@ Extension definitions MUST contain a header section that defines the following f * **Extension Name**: The extension's unique *Registered Name* (in a markdown code-span/backticks) * **Authors**: The names of the individuals who authored the extension -* **Minimum OCFL Version**: The minimum OCFL version that the extension requires, eg. *1.0* -* **OCFL Community Extensions Version**: The version of the OCFL Extensions Specification that the extension conforms to, eg. *1.0* +* **Minimum OCFL Version**: The minimum OCFL version that the extension requires, e.g. *1.0* +* **OCFL Community Extensions Version**: The version of the OCFL Extensions Specification that the extension conforms to, e.g. *1.0* * **Related to**: A list of one or more qualified links to related extensions, or *n/a* -If present, the list of qualified links in **Related to** is a comma-plus-space separated set of links where each has the markdown form `\[NNNN: Extensions Name]\(regsistered_name.md) \(relationship)` where the _relationship_ is one of: -* obsoletes - Use when a new extension SHOULD be used in preference to the prior extension. This may be because the new extensions corrects errors, or updates a canonical list, for example. -* obsoleted by - Inverse of obsoletes, the header of the existing extension was made obsolete will be updated to record this. -* extends - Use when a new extension adds but does not remove functionality compared to a prior extension, and there is nothing to suggest that use of the prior extension SHOULD be avoided. -* extended by - Inverse of extends, the header of the existing extension that was extended will be updated to record this. +If present, the list of qualified links in **Related to** is a comma-plus-space separated set of links where each has the markdown form `[NNNN: Extensions Name](regsistered_name.md) (relationship)` where the _relationship_ is one of: + * obsoletes - Use when a new extension SHOULD be used in preference to the prior extension. This may be because the new extensions corrects errors, or updates a canonical list, for example. + * obsoleted by - Inverse of obsoletes, the header of the existing extension was made obsolete will be updated to record this. + * extends - Use when a new extension adds but does not remove functionality compared to a prior extension, and there is nothing to suggest that use of the prior extension SHOULD be avoided. + * extended by - Inverse of extends, the header of the existing extension that was extended will be updated to record this + +For an example, see [OCFL Community Extension 0001: Digest Algorithms](docs/0001-digest-algorithms.md) which includes: + * **Related to:** [0009: Digest Algorithms](0009-digest-algorithms.md) (obsoleted by) +a future extension with multiple relations might look like: + * **Related to:** [NNNN: Older](.) (extends), [MMMM: Newer](.) (extended by) ### Parameters From 8691a4a80bbed75fa23e118570848300a072ee32 Mon Sep 17 00:00:00 2001 From: Simeon Warner Date: Fri, 16 Jan 2026 17:03:21 -0500 Subject: [PATCH 3/6] Tidyl --- README.md | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index 7e2708b..396897f 100644 --- a/README.md +++ b/README.md @@ -92,9 +92,10 @@ If present, the list of qualified links in **Related to** is a comma-plus-space * extended by - Inverse of extends, the header of the existing extension that was extended will be updated to record this For an example, see [OCFL Community Extension 0001: Digest Algorithms](docs/0001-digest-algorithms.md) which includes: - * **Related to:** [0009: Digest Algorithms](0009-digest-algorithms.md) (obsoleted by) -a future extension with multiple relations might look like: - * **Related to:** [NNNN: Older](.) (extends), [MMMM: Newer](.) (extended by) + * **Related to:** [0009: Digest Algorithms](docs/0009-digest-algorithms.md) (obsoleted by) + +A future extension with multiple relations might have a **Related to** header such as: + * **Related to:** [NNNN: Older](#headers) (extends), [MMMM: Newer](#headers) (extended by) ### Parameters From 442ad13b9dd3039422161485a05850457debf2ea Mon Sep 17 00:00:00 2001 From: Simeon Warner Date: Fri, 16 Jan 2026 17:06:16 -0500 Subject: [PATCH 4/6] Tidy --- README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 396897f..08bac38 100644 --- a/README.md +++ b/README.md @@ -85,10 +85,10 @@ Extension definitions MUST contain a header section that defines the following f * **OCFL Community Extensions Version**: The version of the OCFL Extensions Specification that the extension conforms to, e.g. *1.0* * **Related to**: A list of one or more qualified links to related extensions, or *n/a* -If present, the list of qualified links in **Related to** is a comma-plus-space separated set of links where each has the markdown form `[NNNN: Extensions Name](regsistered_name.md) (relationship)` where the _relationship_ is one of: +If present, the list of qualified links in **Related to** is a comma-plus-space separated set of links where each has the markdown form `[NNNN: Extension Name](regsistered_name.md) (relationship)` where the _relationship_ is one of: * obsoletes - Use when a new extension SHOULD be used in preference to the prior extension. This may be because the new extensions corrects errors, or updates a canonical list, for example. * obsoleted by - Inverse of obsoletes, the header of the existing extension was made obsolete will be updated to record this. - * extends - Use when a new extension adds but does not remove functionality compared to a prior extension, and there is nothing to suggest that use of the prior extension SHOULD be avoided. + * extends - Use when a new extension adds but does not remove or replace functionality compared to the prior extension, and there is nothing to suggest that use of the prior extension SHOULD be avoided. * extended by - Inverse of extends, the header of the existing extension that was extended will be updated to record this For an example, see [OCFL Community Extension 0001: Digest Algorithms](docs/0001-digest-algorithms.md) which includes: From 91c149ca8cc02eb0c252f13a322492d70e5e0254 Mon Sep 17 00:00:00 2001 From: Simeon Warner Date: Fri, 16 Jan 2026 17:16:21 -0500 Subject: [PATCH 5/6] Add 0003-0012 related to --- docs/0003-hash-and-id-n-tuple-storage-layout.md | 2 +- docs/0012-hash-and-no-prefix-id-n-tuple-storage-layout.md | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/0003-hash-and-id-n-tuple-storage-layout.md b/docs/0003-hash-and-id-n-tuple-storage-layout.md index 28b4f75..75fc238 100644 --- a/docs/0003-hash-and-id-n-tuple-storage-layout.md +++ b/docs/0003-hash-and-id-n-tuple-storage-layout.md @@ -4,7 +4,7 @@ * **Authors:** Ben Cail * **Minimum OCFL Version:** 1.0 * **OCFL Community Extensions Version:** 1.0 - * **Related to:** n/a + * **Related to:** [0012: Hashed Truncated N-tuple Trees with Non-prefixed Object ID Encapsulating Directory for OCFL Storage Hierarchies](0012-hash-and-no-prefix-id-n-tuple-storage-layout.md) (extended by) ## Overview diff --git a/docs/0012-hash-and-no-prefix-id-n-tuple-storage-layout.md b/docs/0012-hash-and-no-prefix-id-n-tuple-storage-layout.md index 80e2fca..617fbcd 100644 --- a/docs/0012-hash-and-no-prefix-id-n-tuple-storage-layout.md +++ b/docs/0012-hash-and-no-prefix-id-n-tuple-storage-layout.md @@ -4,7 +4,7 @@ * **Authors:** Elie Roux * **Minimum OCFL Version:** 1.0 * **OCFL Community Extensions Version:** 1.0 - * **Related to:** + * **Related to:** [0003: Hashed Truncated N-tuple Trees with Encapsulating Directory for OCFL Storage Hierarchies](0003-hash-and-id-n-tuple-storage-layout.md) (extends) ## Overview From cbad978a74243f93415c2601df6ed817a586558d Mon Sep 17 00:00:00 2001 From: Simeon Warner Date: Tue, 20 Jan 2026 14:29:55 -0500 Subject: [PATCH 6/6] Address @awoods comments https://github.com/OCFL/extensions/pull/95#pullrequestreview-3679609161 --- README.md | 2 +- docs/0012-hash-and-no-prefix-id-n-tuple-storage-layout.md | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 38119fc..5e1d9a9 100644 --- a/README.md +++ b/README.md @@ -93,7 +93,7 @@ Extension definitions MUST contain a header section that defines the following f If present, the list of qualified links in **Related to** is a comma-plus-space separated set of links where each has the markdown form `[NNNN: Extension Name](regsistered_name.md) (relationship)` where the _relationship_ is one of: * obsoletes - Use when a new extension SHOULD be used in preference to the prior extension. This may be because the new extensions corrects errors, or updates a canonical list, for example. - * obsoleted by - Inverse of obsoletes, the header of the existing extension was made obsolete will be updated to record this. + * obsoleted by - Inverse of obsoletes, the header of the existing extension that was made obsolete will be updated to record this. * extends - Use when a new extension adds but does not remove or replace functionality compared to the prior extension, and there is nothing to suggest that use of the prior extension SHOULD be avoided. * extended by - Inverse of extends, the header of the existing extension that was extended will be updated to record this diff --git a/docs/0012-hash-and-no-prefix-id-n-tuple-storage-layout.md b/docs/0012-hash-and-no-prefix-id-n-tuple-storage-layout.md index 617fbcd..6804872 100644 --- a/docs/0012-hash-and-no-prefix-id-n-tuple-storage-layout.md +++ b/docs/0012-hash-and-no-prefix-id-n-tuple-storage-layout.md @@ -1,6 +1,6 @@ # OCFL Community Extension 0012: Hashed Truncated N-tuple Trees with Non-prefixed Object ID Encapsulating Directory for OCFL Storage Hierarchies - * **Extension Name:** 0012-hash-and-no-prefix-id-n-tuple-storage-layout + * **Extension Name:** `0012-hash-and-no-prefix-id-n-tuple-storage-layout` * **Authors:** Elie Roux * **Minimum OCFL Version:** 1.0 * **OCFL Community Extensions Version:** 1.0