The hardware and bandwidth for this mirror is donated by METANET, the Webhosting and Full Service-Cloud Provider.
If you wish to report a bug, or if you are interested in having us mirror your free-software or open-source project, please feel free to contact us at mirror[@]metanet.ch.

datom 0.2.0

This release adds a second kind of artifact – a set, which is a citable list of exact data versions – and renames one key in the manifest to make room for it. The rename is the only breaking change, and what it breaks is discovery, not access. Read the first two sections before upgrading a shared repo.

See vignette("citable-sets") for what sets are for and how to build one.

Before you upgrade: the manifest’s artifact list is renamed [breaking]

.metadata/manifest.json and .datom/manifest.json now list artifacts under artifacts rather than tables, and every entry carries a kind.

Before you upgrade: a write is refused when this build cannot account for the repo

Every manifest and every per-artifact metadata document now declares a schema_version. Stamping it mints no new version for anything.

A write stops at the door – before any hashing, any local file write and any commit, so a refusal leaves nothing half-written – when this build meets a repo it cannot fully account for: the repo declares a minimum datom version above this one, the manifest declares a format this build does not know, or any document carries a top-level field this build cannot classify.

New: citable sets

A set is a named, versioned list of pointers at exact versions of other artifacts, plus free-text labels. It stores no data of its own, and reading one needs access to the set’s own project only – so a fifty-table product can be citable by someone entitled to none of the tables. vignette("citable-sets") walks the whole arc.

New: committing your own content through datom

datom_repo_commit() and datom_repo_push() let a downstream package put its code, lockfile or build state into the data repo without importing git2r.

paths = NULL means what git add . means, which is the opposite of what datom’s own writes do – and that is the point: datom’s own commits fire when datom chose and must never sweep up work in progress, while these fire because you asked. Commit is idempotent, push is convergent, and a no-op still pushes when the branch is ahead. See ?datom_repo_commit for what it will and will not sweep in.

Every version now records the commit that produced it

datom_history() gains a commit_sha column.

The value is worked out by datom, never supplied: from the commit it just made, or recomputed from git history for a version that has none. Only the copy in storage carries it – your clone’s copy is committed inside the commit that would name it – which is right, since the field exists for the reader who has no clone.

A version means content, not code, and this is the part most likely to look like a bug. Refactor a build script, re-run it, get identical data: no new version is minted, and the recorded commit still points at an earlier one that does not contain the code you are looking at. It names a commit that provably produces that version, not every commit that could.

Smaller changes

datom 0.1.2

Test-only fix for the CRAN check failures reported against 0.1.1. No package code changed and no user-facing behaviour changed.

datom 0.1.1

Initial CRAN release. datom provides version-controlled data management for reproducible scientific and clinical workflows — tables are tracked as code in git while actual data lives in cloud storage (S3) or a local filesystem backend.

datom is experimental: the API may change without a deprecation cycle until it reaches a stable release.

datom requires R >= 4.1.0.

Table identity: the datom-cv1 canonical hash

Table identity is defined by a canonical hash of a table’s values (datom-cv1), not by the bytes of its parquet serialization. Hashing the serialization tied identity to the writer: an arrow upgrade or a different compression default produced different bytes for identical data, and therefore a spurious new version. See vignette("design-version-shas") for the model and the identity decisions.

Deliberate narrowings

Three capabilities were narrowed on purpose relative to pre-release behaviour.

Full API

See the reference index for the complete exported surface at 0.1.0.

These binaries (installable software) and packages are in development.
They may not be fully stable and should be used with caution. We make no claims about them.