Skip to content

v0.14.0

Pre-release
Pre-release

Choose a tag to compare

@mhaya mhaya released this 19 Sep 04:10
· 2 commits to main since this release

The release that made throwing away as cheap as minting.

Reserving in bulk is a way of working — numbers go to objects that are still under
review, sometimes for years — and until now abandoning such a batch meant one request per
ARK, which in practice means nobody does it. What is left behind is exactly the dead
numbers the reservation rule exists to avoid. The cheap path is bounded by what is being
lost: it is only for names nobody has ever seen.

Added

  • POST /api/delete/bulk (ark:delete), and arkhe ark delete now takes several
    ARKs or reads them from standard input. Deleting has to be as cheap as minting was:
    reserving in bulk is a way of working — numbers go to objects still under review,
    sometimes for years — and when a batch is abandoned, one request at a time means it is
    never thrown away at all, which leaves exactly the dead numbers the reservation rule
    exists to avoid.

    What makes it safe to be cheap is that none of those names has ever been seen. A
    row that is published, or that has ever been published, fails the whole request with
    the new ARKHE-1504; that name goes through /api/delete on its own, with a
    reason and the ARK typed again. Nothing is deleted in part, every name is still kept
    and never assigned again, and the batch is one audit event.

    The Python client gained delete_bulk(), and its bulk methods are now named after
    the endpoints
    : mint_bulk, import_bulk, update_bulk, delete_bulk (they were
    *_many). A check keeps them that way — an endpoint under /bulk is called by a
    method ending in _bulk, and nothing else is. The client has not been released, so
    nothing depended on the old names.

  • A page comparing arkhe with the other ARK software (docs/project/comparison.md,
    both languages). arklet, arklet-frick and EZID were installed, given their own
    database and driven over HTTP rather than only read, and the page marks which findings
    were measured that way. It records where arkhe is on its own (delegated minting
    answered with 307, holding redirection, the idempotency key, reach in three tiers),
    and where it followed — the publication lifecycle is EZID's status model in different
    words, and ?info / ?json and suffix passthrough were in arklet-frick first.

    It carries a feature matrix: four tables (resolution, minting and writing, the life
    of an identifier, authorisation and operation) across arkhe, arklet, arklet-frick and
    EZID, with a dagger on every cell that was measured by running the software, and a
    coarser table for AMS, greens, arks-service, the NOID family and N2T. A cell is left
    at "—" where nothing was found and nothing was confirmed, rather than reading absence
    as a ✗. Both READMEs link to it from the passage that already named arklet.

Fixed

  • The claim that arklet turns a minting collision into an update is now dated. It
    was true of the version arkhe started from and has since been fixed upstream; the
    invariant and the data model page said it in the present tense.

Changelog in Japanese
· Full Changelog: v0.13.0...v0.14.0