diff --git a/CITATION.cff b/CITATION.cff index ccb3c82..a1bcf99 100644 --- a/CITATION.cff +++ b/CITATION.cff @@ -15,6 +15,9 @@ identifiers: - type: doi value: "10.5281/zenodo.22536342" description: "Concept DOI — always resolves to the newest version" + - type: doi + value: "10.5281/zenodo.23005806" + description: "Version DOI — v0.2.0" - type: doi value: "10.5281/zenodo.22536343" description: "Version DOI — v0.1.0" @@ -22,7 +25,8 @@ authors: - family-names: Chernov given-names: Alexander orcid: "https://orcid.org/0009-0007-3198-2712" -version: 0.1.0 +version: 0.2.0 +date-released: 2026-09-27 license-url: "https://github.com/agentic-datasets/reference/blob/main/LICENSE.md" repository-code: "https://github.com/agentic-datasets/reference" keywords: diff --git a/README.md b/README.md index 4f2d4e8..3b11b61 100644 --- a/README.md +++ b/README.md @@ -35,14 +35,9 @@ Reproduce with `agentic-dataset-conformance run --subject conformance.subjects:s Raw output is in [`docs/runs/`](docs/runs/); every number's caveats are in [`docs/RESULTS.md`](docs/RESULTS.md). -> ## Status: release candidate +> ## Status: released > -> Public **before** `v0.1.0` is tagged, deliberately. Nothing is archived or -> minted yet, so a finding can still change the artifact rather than becoming -> errata against a DOI. If you find something, -> [open an issue](https://github.com/agentic-datasets/reference/issues) -> — a finding that an assertion is ambiguous is more useful here than a passing -> run. +> **`v0.2.0`** is the current release, on PyPI and archived on Zenodo; `v0.1.0` was the first. Each version is immutable and has its own DOI, so a finding changes the next version rather than an old one. If you find something, [open an issue](https://github.com/agentic-datasets/reference/issues) — a finding that an assertion is ambiguous is more useful here than a passing run. > > **What this is not.** No deployment, no real data, no model in the loop by > default, no latency or cost claim, and no security guarantee — see @@ -162,7 +157,7 @@ Two pieces are published distributions, independently installable and permissively licensed: ```bash -# Both are on PyPI at 0.1.0. +# Both are on PyPI at 0.2.0. pip install agentic-dataset-conformance # contract + vectors + runner pip install authorized-recall # the metric, no dependencies @@ -272,8 +267,8 @@ Browsable at no content of its own; CI fails if it drifts from the repository. **DOI:** [10.5281/zenodo.22536342](https://doi.org/10.5281/zenodo.22536342) -(concept — cite this; it resolves to the newest version). `v0.1.0` specifically -is [10.5281/zenodo.22536343](https://doi.org/10.5281/zenodo.22536343). +(concept — cite this; it resolves to the newest version). `v0.2.0` specifically +is [10.5281/zenodo.23005806](https://doi.org/10.5281/zenodo.23005806), and `v0.1.0` is [10.5281/zenodo.22536343](https://doi.org/10.5281/zenodo.22536343). The documentation is served from **two addresses, both maintained**: diff --git a/RELEASE.md b/RELEASE.md index 6f4c916..5518327 100644 --- a/RELEASE.md +++ b/RELEASE.md @@ -418,3 +418,11 @@ history — not as a consequence of this release. **Package metadata is frozen per version**, so repointing a URL costs a release. Worth knowing before the next one — the URL set is not something that can be tidied later in place. + +- [ ] **`v0.2.0` — prepared 2026-09-27.** Two vectors for checks no vector reached before: `ad-003-stale-grant-executes-nothing` and `ad-004-clearance-refusal-has-no-grant` (F-012), with the mutants `StaleGrantsAccepted` and `ClearanceIgnored` that only they catch. The suite goes from 15 to 17 vectors and from 84 to 90 steps; the matrix is 19/19. **A minor bump, not a patch:** an implementation that passed `0.1.0` can fail `0.2.0`, which is the point of the two vectors. Both distributions move to `0.2.0` together, as a pair, though `authorized-recall` has no code change; the root distribution's lower bounds follow. + + **The DOI was reserved before the tag, as the `v0.1.0` entry above asked.** New-version draft 23005806 under concept 22536342; version DOI `10.5281/zenodo.23005806`, written into `CITATION.cff`, the README and the citation page before tagging, so this archive can cite itself. + + Also in this release: the README's *release candidate* status block, stale since `v0.1.0` was tagged on 2026-09-06, is replaced; the docs generator no longer emits links to GitHub paths that do not exist (eight on the live site did); the MCP server reports the library's version instead of a literal `0.1.0`. EMBC 2026 re-checked against Crossref: still not in proceedings. + + Remaining, in order: build and `twine check`; read the rendered description; clean-room install of both wheels; push; tag `v0.2.0`; upload to PyPI; archive the tag's `git archive` on the draft; verify Rights and version on the rendered draft; publish. diff --git a/docs-site/build.py b/docs-site/build.py index 90cd378..06902de 100644 --- a/docs-site/build.py +++ b/docs-site/build.py @@ -12,6 +12,7 @@ from __future__ import annotations +import posixpath import re import shutil from pathlib import Path @@ -39,25 +40,10 @@ GH = "https://github.com/agentic-datasets/reference/blob/main/" GH_TREE = "https://github.com/agentic-datasets/reference/tree/main/" -# Links that resolve to a chapter of this book. -INTERNAL = { - "CONFORMANCE.md": "specification.md", - "docs/PORTABILITY.md": "portability.md", - "PORTABILITY.md": "portability.md", - "docs/RESULTS.md": "results.md", - "RESULTS.md": "results.md", - "docs/FINDINGS.md": "findings.md", - "FINDINGS.md": "findings.md", - "docs/CLAIMS.md": "claims.md", - "CLAIMS.md": "claims.md", - "CONTRIBUTING.md": "contributing.md", - "LICENSE.md": "licensing.md", - "../LICENSE.md": "licensing.md", - "PLAN.md": "plan.md", - "brand/README.md": "brand.md", - "../packages/authorized-recall/README.md": "authorized-recall.md", - "packages/authorized-recall/README.md": "authorized-recall.md", -} +# Links that resolve to a chapter of this book, by repository path. A relative +# link is resolved against the file it appears in before it is looked up here: +# `runs/` in docs/RESULTS.md is docs/runs/, not a runs/ at the root. +INTERNAL = {source: chapter for chapter, source in CHAPTERS.items()} LINK = re.compile(r"\]\((?!https?://|#)([^)]+)\)") @@ -70,19 +56,34 @@ ) -def rewrite(text: str) -> str: +def rewrite(text: str, base: str | None) -> str: + """Rewrite the links of a file in directory `base`, relative to the + repository root; `None` for a hand-authored page, which links to the + book's chapters by their own names.""" + pages = set(CHAPTERS) | {p.name for p in PAGES.glob("*.md")} + def sub(m: re.Match) -> str: target = m.group(1) anchor = "" if "#" in target: target, anchor = target.split("#", 1) anchor = "#" + anchor - target = target.lstrip("./") - if target in INTERNAL: - return f"]({INTERNAL[target]}{anchor})" - # Everything else points at the repository, so the link still works. - base = GH_TREE if target.endswith("/") else GH - return f"]({base}{target}{anchor})" + if base is None: + if target in pages: + return m.group(0) + raise SystemExit(f"a page links to {target!r}, which is not a " + f"page of this book") + slash = "/" if target.endswith("/") else "" + path = posixpath.normpath(posixpath.join(base, target)) + if path in INTERNAL: + return f"]({INTERNAL[path]}{anchor})" + # Everything else points at the repository, so the link still works -- + # provided the file is there. A link out of the book to a path that + # does not exist is a 404 on GitHub, so it stops the build instead. + if path.startswith("..") or not (ROOT / path).exists(): + raise SystemExit(f"{base or '.'}: link to {target!r} resolves to " + f"{path!r}, which is not in the repository") + return f"]({GH_TREE if slash else GH}{path}{slash}{anchor})" def absolute(m: re.Match) -> str: target, anchor = m.group(1), m.group(2) or "" @@ -90,7 +91,9 @@ def absolute(m: re.Match) -> str: return f"]({INTERNAL[target]}{anchor})" return m.group(0) - return LINK.sub(sub, ABSOLUTE.sub(absolute, text)) + # Relative links first: the absolute pass produces chapter names, which + # the relative pass would otherwise try to resolve a second time. + return ABSOLUTE.sub(absolute, LINK.sub(sub, text)) def main() -> None: @@ -108,7 +111,7 @@ def main() -> None: mark = mark.replace('width="64" height="64"', 'width="96" height="96"') for page in sorted(PAGES.glob("*.md")): body = page.read_text().replace("", mark) - (SRC / page.name).write_text(rewrite(body)) + (SRC / page.name).write_text(rewrite(body, None)) print(f" {'pages/' + page.name:<52} -> src/{page.name}") for chapter, source in CHAPTERS.items(): @@ -116,7 +119,7 @@ def main() -> None: # The mark is referenced relatively from README-style files. body = body.replace('src="agentic-dataset-mark-128.png"', 'src="mark.png"') - (SRC / chapter).write_text(rewrite(body)) + (SRC / chapter).write_text(rewrite(body, posixpath.dirname(source))) print(f" {source:<52} -> src/{chapter}") shutil.copy(ROOT / "brand/agentic-dataset-mark-256.png", SRC / "mark.png") print(f"\n{len(CHAPTERS)} chapters generated, " diff --git a/docs-site/pages/citation.md b/docs-site/pages/citation.md index 0439455..923acad 100644 --- a/docs-site/pages/citation.md +++ b/docs-site/pages/citation.md @@ -3,18 +3,19 @@ The software carries a `CITATION.cff`, which GitHub renders as *Cite this repository*. -**`v0.1.0` is released and archived.** Cite the DOI: +**`v0.2.0` is the current release, archived with its own DOI.** Cite the concept DOI: ``` Chernov, A. (2026). Agentic Dataset Reference Implementation and -Conformance Suite (v0.1.0) [Computer software]. Zenodo. +Conformance Suite (v0.2.0) [Computer software]. Zenodo. https://doi.org/10.5281/zenodo.22536342 ``` | | DOI | |---|---| | **Concept** — always resolves to the newest version. **Cite this.** | [10.5281/zenodo.22536342](https://doi.org/10.5281/zenodo.22536342) | -| Version — `v0.1.0` specifically, for reproducibility | [10.5281/zenodo.22536343](https://doi.org/10.5281/zenodo.22536343) | +| Version — `v0.2.0` specifically, for reproducibility | [10.5281/zenodo.23005806](https://doi.org/10.5281/zenodo.23005806) | +| Version — `v0.1.0` | [10.5281/zenodo.22536343](https://doi.org/10.5281/zenodo.22536343) | ORCID: [0009-0007-3198-2712](https://orcid.org/0009-0007-3198-2712) @@ -50,7 +51,7 @@ the argument.** The third is accepted and awaiting its proceedings. | IEEE BigDataService 2026 | *Agentic Data Services: A Control-Plane Architecture for Adaptive Data Workflows* | [10.1109/BigDataService70481.2026.00025](https://doi.org/10.1109/BigDataService70481.2026.00025) · pp. 125–129 | | IEEE EMBC 2026 | *Dataset Descriptors for Autonomous and Observable Biomedical Data Pipelines* | accepted; not yet in proceedings | -*Verified against Crossref on 2026-09-06. The EMBC entry is the one that will +*Verified against Crossref on 2026-09-27. The EMBC entry is the one that will go stale next, and it will do so silently — nothing here fails when a paper appears.* diff --git a/docs-site/pages/index.md b/docs-site/pages/index.md index 426c0b7..fcfa50c 100644 --- a/docs-site/pages/index.md +++ b/docs-site/pages/index.md @@ -74,9 +74,7 @@ explicitly not. ## Status -**Release candidate.** Public before `v0.1.0` is tagged, deliberately, so a -finding can still change the artifact rather than becoming errata against a -DOI. The independent implementation is a 250-line toy written by the same +**Released.** `v0.2.0` is the current version, on PyPI and archived with its own DOI ([citation](citation.md)); `v0.1.0` was the first. A finding changes the next version rather than an old one. The independent implementation is a 250-line toy written by the same person who wrote the specification: that establishes independence from the reference *code*, not from its author's reading of the contract. diff --git a/docs-site/src/citation.md b/docs-site/src/citation.md index 1035fcc..923acad 100644 --- a/docs-site/src/citation.md +++ b/docs-site/src/citation.md @@ -3,18 +3,19 @@ The software carries a `CITATION.cff`, which GitHub renders as *Cite this repository*. -**`v0.1.0` is released and archived.** Cite the DOI: +**`v0.2.0` is the current release, archived with its own DOI.** Cite the concept DOI: ``` Chernov, A. (2026). Agentic Dataset Reference Implementation and -Conformance Suite (v0.1.0) [Computer software]. Zenodo. +Conformance Suite (v0.2.0) [Computer software]. Zenodo. https://doi.org/10.5281/zenodo.22536342 ``` | | DOI | |---|---| | **Concept** — always resolves to the newest version. **Cite this.** | [10.5281/zenodo.22536342](https://doi.org/10.5281/zenodo.22536342) | -| Version — `v0.1.0` specifically, for reproducibility | [10.5281/zenodo.22536343](https://doi.org/10.5281/zenodo.22536343) | +| Version — `v0.2.0` specifically, for reproducibility | [10.5281/zenodo.23005806](https://doi.org/10.5281/zenodo.23005806) | +| Version — `v0.1.0` | [10.5281/zenodo.22536343](https://doi.org/10.5281/zenodo.22536343) | ORCID: [0009-0007-3198-2712](https://orcid.org/0009-0007-3198-2712) @@ -34,7 +35,7 @@ Cite the assertion, not a line number: ## Citing the metric Authorized Recall@K is defined in -[its own package](https://github.com/agentic-datasets/reference/blob/main/authorized-recall.md), which has no dependency on this +[its own package](authorized-recall.md), which has no dependency on this architecture. If you use the metric without adopting the control plane, cite the package rather than the reference implementation. @@ -50,7 +51,7 @@ the argument.** The third is accepted and awaiting its proceedings. | IEEE BigDataService 2026 | *Agentic Data Services: A Control-Plane Architecture for Adaptive Data Workflows* | [10.1109/BigDataService70481.2026.00025](https://doi.org/10.1109/BigDataService70481.2026.00025) · pp. 125–129 | | IEEE EMBC 2026 | *Dataset Descriptors for Autonomous and Observable Biomedical Data Pipelines* | accepted; not yet in proceedings | -*Verified against Crossref on 2026-09-06. The EMBC entry is the one that will +*Verified against Crossref on 2026-09-27. The EMBC entry is the one that will go stale next, and it will do so silently — nothing here fails when a paper appears.* diff --git a/docs-site/src/conformance-package.md b/docs-site/src/conformance-package.md index 4b1bd7c..83d0240 100644 --- a/docs-site/src/conformance-package.md +++ b/docs-site/src/conformance-package.md @@ -87,6 +87,6 @@ audit**, and no interface of this shape could be one. ## Links -- [The specification](https://github.com/agentic-datasets/reference/blob/main/specification.md) -- [What the portable contract can and cannot reach](https://github.com/agentic-datasets/reference/blob/main/portability.md) -- [Results, with the caveats attached to each number](https://github.com/agentic-datasets/reference/blob/main/results.md) +- [The specification](specification.md) +- [What the portable contract can and cannot reach](portability.md) +- [Results, with the caveats attached to each number](results.md) diff --git a/docs-site/src/index.md b/docs-site/src/index.md index 25af366..cca1127 100644 --- a/docs-site/src/index.md +++ b/docs-site/src/index.md @@ -34,7 +34,7 @@ An **agentic dataset** describes itself, advertises bounded capabilities, accepts a semantic intent, decides whether an action is admissible, executes only what was admitted, refuses the rest, and leaves evidence. -The [**specification**](https://github.com/agentic-datasets/reference/blob/main/specification.md) is fifteen assertions, each naming a +The [**specification**](specification.md) is fifteen assertions, each naming a failure it rules out. Everything else exists to check them. ``` @@ -69,19 +69,17 @@ report of itself, so a subject that under-reports passes AD-002 while hiding a tool. Conformance is a claim an implementation makes about itself, made checkable — not an adversarial audit. -[`Claims`](https://github.com/agentic-datasets/reference/blob/main/claims.md) is frozen and lists everything asserted, and the one thing +[`Claims`](claims.md) is frozen and lists everything asserted, and the one thing explicitly not. ## Status -**Release candidate.** Public before `v0.1.0` is tagged, deliberately, so a -finding can still change the artifact rather than becoming errata against a -DOI. The independent implementation is a 250-line toy written by the same +**Released.** `v0.2.0` is the current version, on PyPI and archived with its own DOI ([citation](citation.md)); `v0.1.0` was the first. A finding changes the next version rather than an old one. The independent implementation is a 250-line toy written by the same person who wrote the specification: that establishes independence from the reference *code*, not from its author's reading of the contract. **Interpretive independence is the next threshold, and it needs somebody else.** -[How to do it](https://github.com/agentic-datasets/reference/blob/main/contributing.md). +[How to do it](contributing.md). ## Where this is published diff --git a/docs-site/src/portability.md b/docs-site/src/portability.md index f41e629..589b071 100644 --- a/docs-site/src/portability.md +++ b/docs-site/src/portability.md @@ -125,7 +125,7 @@ than "the design was correct from the start" and a more useful one. Nineteen deliberately broken variants, each removing exactly one guarantee. The matrix is what `agentic-dataset-conformance run --subject conformance.subjects:subjects --matrix` prints; the -committed run is in [`runs/mutation-matrix.txt`](https://github.com/agentic-datasets/reference/blob/main/runs/mutation-matrix.txt). +committed run is in [`runs/mutation-matrix.txt`](https://github.com/agentic-datasets/reference/blob/main/docs/runs/mutation-matrix.txt). ``` target detection : 19/19 mutants caught by their intended assertion diff --git a/docs-site/src/results.md b/docs-site/src/results.md index 8a1c059..657ef01 100644 --- a/docs-site/src/results.md +++ b/docs-site/src/results.md @@ -24,7 +24,7 @@ configurations, 24 is the adversarial set in the evaluation. Reporting 0/600 would merge two populations that were never sampled together. Everything below was produced by running the code in this repository. Raw -output is in [`runs/`](https://github.com/agentic-datasets/reference/tree/main/runs/); the commands that produce it are in the README. +output is in [`runs/`](https://github.com/agentic-datasets/reference/tree/main/docs/runs/); the commands that produce it are in the README. Measured 2026-09-01 on Python 3.12.13, Linux, with: diff --git a/packages/agentic-dataset-conformance/pyproject.toml b/packages/agentic-dataset-conformance/pyproject.toml index 6471789..b3b0ef4 100644 --- a/packages/agentic-dataset-conformance/pyproject.toml +++ b/packages/agentic-dataset-conformance/pyproject.toml @@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta" [project] name = "agentic-dataset-conformance" -version = "0.1.0.post1" +version = "0.2.0" description = "AD-001..AD-015: the agentic-dataset governance contract as language-neutral executable conformance vectors, plus a runner that needs no access to an implementation's internals" readme = "README.md" requires-python = ">=3.11" diff --git a/packages/agentic-dataset-conformance/src/agentic_dataset_conformance/__init__.py b/packages/agentic-dataset-conformance/src/agentic_dataset_conformance/__init__.py index 8d2a14b..062f378 100644 --- a/packages/agentic-dataset-conformance/src/agentic_dataset_conformance/__init__.py +++ b/packages/agentic-dataset-conformance/src/agentic_dataset_conformance/__init__.py @@ -36,7 +36,7 @@ ) from .toy import ToyImplementation -__version__ = "0.1.0.post1" +__version__ = "0.2.0" #: The fifteen assertion identifiers, in order. ASSERTIONS = tuple(f"AD-{i:03d}" for i in range(1, 16)) diff --git a/packages/authorized-recall/pyproject.toml b/packages/authorized-recall/pyproject.toml index 92384cd..92db6f2 100644 --- a/packages/authorized-recall/pyproject.toml +++ b/packages/authorized-recall/pyproject.toml @@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta" [project] name = "authorized-recall" -version = "0.1.0.post1" +version = "0.2.0" description = "Authorized Recall@K — retrieval quality measured over the subset a principal is permitted to use" readme = "README.md" requires-python = ">=3.11" diff --git a/packages/authorized-recall/src/authorized_recall/__init__.py b/packages/authorized-recall/src/authorized_recall/__init__.py index 3a2a81a..c7088e0 100644 --- a/packages/authorized-recall/src/authorized_recall/__init__.py +++ b/packages/authorized-recall/src/authorized_recall/__init__.py @@ -19,7 +19,7 @@ ) from .retrieval import TfIdfIndex -__version__ = "0.1.0.post1" +__version__ = "0.2.0" __all__ = [ "Authorized", "TfIdfIndex", "__version__", "authorized_recall_at_k", "ndcg_at_k", diff --git a/pyproject.toml b/pyproject.toml index d65d913..ec2e7b5 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta" [project] name = "agentic-dataset-reference" -version = "0.1.0" +version = "0.2.0" description = "Reference implementation and conformance suite for the agentic-dataset control plane" readme = "README.md" requires-python = ">=3.11" @@ -15,8 +15,8 @@ license = { text = "Mixed: CC-BY-4.0 / CC0-1.0 / Apache-2.0 / BUSL-1.1 -- see LI # one, so a bare `>=0.1.0` made this distribution uninstallable. At 0.1.0 that # trap is gone, and the bound can say what it means. dependencies = [ - "authorized-recall>=0.1.0", - "agentic-dataset-conformance>=0.1.0", + "authorized-recall>=0.2.0", + "agentic-dataset-conformance>=0.2.0", ] # The core control plane needs no framework. That is load-bearing: if the diff --git a/src/agentic_dataset/__init__.py b/src/agentic_dataset/__init__.py index ec1ca5a..ef9fb29 100644 --- a/src/agentic_dataset/__init__.py +++ b/src/agentic_dataset/__init__.py @@ -32,7 +32,7 @@ Verdict, ) -__version__ = "0.1.0" +__version__ = "0.2.0" __all__ = [ "Approved", "AuthorizationScope", "BoundCapability", "CacheKey", diff --git a/src/agentic_dataset/mcp_boundary.py b/src/agentic_dataset/mcp_boundary.py index 97b6b8d..6c39b91 100644 --- a/src/agentic_dataset/mcp_boundary.py +++ b/src/agentic_dataset/mcp_boundary.py @@ -29,6 +29,7 @@ from mcp.server.mcpserver import MCPServer from mcp.server.mcpserver.resources import FunctionResource +from . import __version__ from .capabilities import BoundCapability, CapabilityRegistry from .descriptor import DatasetDescriptor, DescriptorRegistry from .grant import Grant, GrantAuthority, UnauthorizedExecution @@ -48,7 +49,7 @@ def build_dataset_server( authority: GrantAuthority, name: str = "agentic-dataset", ) -> MCPServer: - server = MCPServer(name=name, version="0.1.0") + server = MCPServer(name=name, version=__version__) for descriptor in descriptors.all(): _add_resources(server, descriptor) diff --git a/zenodo/README.md b/zenodo/README.md index ee5c9aa..2b7684e 100644 --- a/zenodo/README.md +++ b/zenodo/README.md @@ -92,6 +92,8 @@ into linear: The cost of getting this wrong is small and permanent, which is the combination worth spending ten minutes on next time rather than ten minutes now. +**Exercised for `v0.2.0` on 2026-09-27.** `POST /api/records/22536343/versions` created the new-version draft 23005806 under the same concept (22536342), and `POST /api/records/23005806/draft/pids/doi` reserved `10.5281/zenodo.23005806` before the tag existed. A reserved DOI is not registered with DataCite until the record is published: `doi.org` answered 404 for it at reservation, so a tree citing it points at nothing until publish. The new-version draft starts with no files and no `version`, so both have to be supplied again. + ## Sequence `RELEASE.md` fixes the order, and it is not negotiable at the last step: @@ -109,8 +111,8 @@ guaranteed by the payload being correct: 1. all four licences appear in the rendered Rights section, not just the first — this is the one that actually failed on the first attempt, and it fails quietly; -2. `version` matches the tag exactly — `metadata.json` pins `0.1.0`, and it - must be bumped in step with any retag rather than left behind. +2. `version` matches the tag exactly — `metadata.json` pins it, and it + must be bumped in step with every tag rather than left behind. ## What is not archived here diff --git a/zenodo/metadata.json b/zenodo/metadata.json index 275fbc1..81dfd82 100644 --- a/zenodo/metadata.json +++ b/zenodo/metadata.json @@ -5,8 +5,8 @@ }, "title": "Agentic Dataset Reference Implementation and Conformance Suite", "publisher": "Zenodo", - "version": "0.1.0", - "publication_date": "2026-09-06", + "version": "0.2.0", + "publication_date": "2026-09-27", "creators": [ { "person_or_org": {