Skip to content

Commit 56148c4

Browse files
authored
DOC: adds Archive versions 7.0 and 7.1 (#157)
1 parent 191fddf commit 56148c4

2 files changed

Lines changed: 136 additions & 2 deletions

File tree

‎book/back-matter/glossary.md‎

Lines changed: 14 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,10 @@ Action
55
A generic term to describe a {term}`Method`, {term}`Visualizer`, or {term}`Pipeline`.
66
Actions accept parameters and/or {term}`Artifacts <Artifact>` and/or {term}`Metadata`) as input, and generate one or more {term}`Results <Result>` as output.
77
8+
Annotation
9+
Additional information that can be attached to a QIIME 2 {term}`Result`, such as a text file or cryptographic signature.
10+
See {term}`Note` and {term}`Signature` for more information on the respective {term}`Annotation` types that have been implemented, and what they can contain.
11+
812
Archive
913
The directory structure of a QIIME 2 {term}`Result`.
1014
Contains *at least* a root directory (named by {term}`UUID`) and a ``VERSION`` file within that directory.
@@ -24,7 +28,7 @@ Collection
2428
These can be used as {term}`Input`, {term}`Parameter`, and {term}`Output` {term}`Types <Type>`.
2529
2630
Conda metapackage
27-
A metapackage is a package with no files, only metadata.
31+
A metapackage is a package with no files, only metadata.
2832
They are typically used to collect several packages together into a single package via dependencies.
2933
([source](https://docs.conda.io/projects/conda-build/en/stable/resources/commands/conda-metapackage.html))
3034
@@ -78,6 +82,10 @@ Metadata
7882
Method
7983
A method accepts some combination of QIIME 2 {term}`artifacts <Artifact>` and {term}`parameters <Parameter>` as {term}`input`, and produces one or more QIIME 2 artifacts as {term}`output`.
8084
85+
Note
86+
A type of {term}`Annotation` that can be added to a QIIME 2 {term}`Result`.
87+
This type of {term}`Annotation` can accept inline text or a path to a file whose contents will be written to the associated {term}`Result`, with a limit of 10 MiB.
88+
8189
Output
8290
Objects returned by an {term}`action`. Can be {term}`artifact(s) <Artifact>` or {term}`visualization(s) <Visualization>`.
8391
@@ -127,6 +135,11 @@ Semantic Type
127135
When associated with a {term}`directory format`, the combination defines an {term}`artifact class`.
128136
These types may be extended by {term}`plugins<Plugin>`.
129137
138+
Signature
139+
A type of {term}`Annotation` that can be added to a QIIME 2 {term}`Result`.
140+
This {term}`Annotation` contains a cryptographic signature, providing support to 'self-sign' QIIME 2 {term}`Results <Result>`.
141+
This allows for identity confirmation for who created a particular {term}`Result`.
142+
130143
Single-Use Plugin (SUP)
131144
A plugin that is intended for one specific use case, such as generating figures for a single manuscript, as opposed to a plugin that is intended for general widespread usage.
132145

‎book/framework/references/archive-versions.md‎

Lines changed: 122 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -238,5 +238,126 @@ action:
238238
- <index of this element in the collection out of total elements in the collection e.g. 1/100 for the first element in a collection of 100>
239239
```
240240

241+
(archive-version-7)=
241242
## Archive Version 7
242-
Archive Version 7 development is [currently being planned](https://github.com/qiime2/qiime2/issues/747).
243+
Starting with QIIME 2 version [2025.4](https://github.com/qiime2/qiime2/releases/tag/2025.4.0), QIIME 2 {term}`Archive` versions 7+ utilize semantic versioning.
244+
What this means is each new QIIME 2 {term}`Archive` version is broken up into a major version and a minor version.
245+
Major version updates (i.e. version 6.x -> 7.x) include a significantly different internal structure, such as new files within the zip archive.
246+
Backward compatibility across major versions is not guaranteed (such that a version 7.0 archive will not be compatible with older software versions that didn't yet know about that version).
247+
Minor version updates (i.e. 7.n -> 7.n+1) include minor differing internal structure and/or features/capabilities.
248+
These will be backwards compatible to the nearest major version (such that a version 7.1 or 7.2 archive will be compatible with other software versions as long as they knew about 7.0).
249+
250+
### Archive Version 7.0
251+
Released in QIIME 2 version [2025.4](https://github.com/qiime2/qiime2/releases/tag/2025.4.0) ([changelog](https://forum.qiime2.org/t/qiime-2-2025-4-is-now-available/33088)) [commit `0d2c8ec`](https://github.com/qiime2/qiime2/commit/0d2c8ec7d0cb6e3b81c4ab621e78bd0df74c11a0), this version adds:
252+
- support for creation of {term}`Annotations <Annotation>` (of sub-type {term}`Note`) to a QIIME 2 {term}`Result`;
253+
- an all-new `conda-env.yaml` file containing all environment dependencies a {term}`Result` was created from;
254+
- updated checksum calculations from `md5` to `sha512`;
255+
- and total file size calculation for all files within the `data` directory as a new entry under the top level/provenance level `metadata.yaml` files.
256+
All of the new additions to the {term}`Archive` file structure are outlined below.
257+
258+
{term}`Annotations <Annotation>` are a way of attaching additional information to a QIIME 2 {term}`Result`.
259+
In version 7.0, {term}`Note` has been added as a supported {term}`Annotation` sub-type.
260+
{term}`Notes <Note>` can either contain inline text or a filepath whose contents will be written to the {term}`Note`.
261+
262+
The updated structure of a QIIME 2 {term}`Result` includes a new top-level `annotations` directory, where all {term}`Annotations <Annotation>` will be written.
263+
Each {term}`Note` that is created and written to this directory will have the following structure:
264+
265+
```yaml
266+
annotations/
267+
8b1ddcc2-b4e7-4c9f-9338-a7785a47862e/
268+
checksums.sha512
269+
metadata.yaml
270+
note.txt
271+
217d5eb4-febf-48e8-83ac-1a4dbebe8cf5/
272+
checksums.sha512
273+
metadata.yaml
274+
note.txt
275+
```
276+
277+
Each sub-directory underneath the `annotations` directory corresponds to the UUID associated with each {term}`Note` {term}`Annotation` that was added to the {term}`Result`.
278+
In each UUID's subdirectory, a {term}`Note` will contain the following files:
279+
- A `note.txt` file that contains either the inline text or the contents of the filepath provided upon creation of the {term}`Note`.
280+
- A `metadata.yaml` file that contains specific details about the {term}`Annotation` (which will be laid out in detail below).
281+
- A `checksums.sha512` file with the sha512 calculated checksum for each file within the directory (`metadata.yaml` and `note.txt`).
282+
283+
The contents of the `metadata.yaml` file are as follows:
284+
285+
```yaml
286+
id: 8b1ddcc2-b4e7-4c9f-9338-a7785a47862e
287+
name: <note-name>
288+
type: Note
289+
created_at: <yyyy-mm-ddThh:mm:ss.ms>
290+
root_result_uuid: d594e658-65fd-4658-8de1-88097ce43abd
291+
referenced_result_uuid: d594e658-65fd-4658-8de1-88097ce43abd
292+
```
293+
294+
`id` corresponds to the {term}`Annotation's <Annotation>` UUID, the `root_result_uuid` corresponds to the UUID of the {term}`Result` the {term}`Annotation` is attached to, and the `referenced_result_uuid` corresponds to the UUID of the {term}`Result` the {term}`Annotation` is in reference to.
295+
Note that the current implementation of {term}`Annotations <Annotation>` doesn't support referencing a {term}`Result` separate from the one the {term}`Annotation` is attached to, but these separate fields have been created to allow for this functionality to be supported in future {term}`Archive` versions.
296+
297+
In addition to {term}`Annotations <Annotation>`, a new `conda-env.yaml` file (located under the `provenance` directory) has been added within the {term}`Archive` structure.
298+
This file contains all of the dependencies present in the conda environment where the {term}`Result` in question was created from.
299+
The contents of this file are as follows (with this example showing a very minimal environment):
300+
301+
```yaml
302+
dependencies:
303+
- numpy=1.26.4=py310h4bfa8fc_0
304+
- pandas=2.2.2=py310hbf2a7f0_1
305+
- python=3.10.14=h00d2728_0_cpython
306+
- q2-metadata=2025.10.0.dev0+1.g61b847b=py310hd4cd7ad_0
307+
- q2-mystery-stew=2025.10.0.dev0+1.g25270e3=py310h3cfa9b4_0
308+
- q2-types=2025.10.0.dev0+5.g4a8aaa7=py310h974e487_0
309+
- q2cli=2025.10.0.dev0+2.g2976552=py310h68e8629_0
310+
- q2galaxy=2025.10.0.dev0=py310hac6da46_0
311+
- q2templates=2025.10.0.dev0+1.g695609d=py310h88e6d8d_0
312+
- qiime2=2025.10.0.dev0+6.g65a1488=py310hf606c39_0
313+
```
314+
315+
Each entry matches the pattern: `<package-name>=<package-version>=<build-number>`.
316+
317+
### Archive Version 7.1
318+
Released in QIIME 2 version [2025.10](https://github.com/qiime2/qiime2/releases/tag/2025.10.1) ([changelog](https://forum.qiime2.org/t/qiime-2-2025-10-is-now-available/33760))
319+
[commit `7d2a9b1`](https://github.com/qiime2/qiime2/commit/7d2a9b12d98666200b370de89e9e633b33e9acb8), this version adds {term}`Signatures <Signature>`, a new {term}`Annotation` sub-type that provides support for cryptographically signing a QIIME 2 {term}`Result`.
320+
321+
A new {term}`Signature` is created by using the fingerprint of an existing GnuPG keypair to cryptographically sign a {term}`Result`, thus providing a verifiable identity associated with that {term}`Result`.
322+
323+
The structure of a {term}`Signature` {term}`Annotation` within a {term}`Result` is as follows:
324+
325+
```yaml
326+
annotations/
327+
217d5eb4-febf-48e8-83ac-1a4dbebe8cf5/
328+
checksums.sha512
329+
metadata.yaml
330+
signature.gpg
331+
```
332+
333+
Each {term}`Signature` (separated by their associated UUID sub-directories) contains the following files:
334+
- A `signature.gpg` file that contains the cryptographic signature created with the provided GnuPG keypair.
335+
- A `metadata.yaml` file that contains specific details about the {term}`Signature` (laid out in detail below).
336+
- A `checksums.sha512` file with the sha512 calculated checksum for each file within the directory (`metadata.yaml` and `signature.gpg`).
337+
338+
The contents of the `metadata.yaml` file are as follows:
339+
340+
```yaml
341+
id: 217d5eb4-febf-48e8-83ac-1a4dbebe8cf5
342+
name: <signature-name>
343+
type: Signature
344+
created_at: <yyyy-mm-ddThh:mm:ss.ms>
345+
root_result_uuid: 046a982d-dbfa-41d1-8596-f767c71f4673
346+
referenced_result_uuid: 046a982d-dbfa-41d1-8596-f767c71f4673
347+
algorithm: <GnuPG keypair algorithm>
348+
checksum_digest: <sha512sum>
349+
signer_name: <signer-name>
350+
signer_email: <signer-email>
351+
fingerprint: <GnuPG keypair fingerprint>
352+
```
353+
354+
The {term}`Signature`-specific fields are defined as follows:
355+
- `algorithm` refers to the encryption algorithm used when generating the GnuPG keypair used for creating the {term}`Signature`.
356+
- `checksum_digest` refers to the calculated `sha512` sum of the root-level `checksums.sha512` file, used for {term}`Signature` verification.
357+
- `signer_name` and `signer_email` refer to the GnuPG uid credentials associated with the keypair used for creating the {term}`Signature`.
358+
- `fingerprint` refers to the fingerprint associated with the GnuPG keypair used for creating the {term}`Signature`.
359+
360+
More details on {term}`Signature` creation and verification, along with information on installing and using GnuPG for this purpose, can be found in [How to sign and verify Results](https://use.qiime2.org/en/latest/how-to-guides/sign-and-verify-artifacts.html).
361+
362+
### Archive Version 7.2
363+
Archive Version 7.2 development is currently being planned.

0 commit comments

Comments
 (0)