Skip to content

v0.2.2 - First Functional Release: Link-Record Core (P2)

Latest

Choose a tag to compare

@djdarcy djdarcy released this 21 Jun 20:30
v0.2.2
bacec3d

dazzle-linklib v0.2.2

The DazzleLib stack's L2 layer: a content-addressable link-record library. A link record maps an identity to a typed list of locators plus metadata, and knows how to serialize, find, recreate, and resolve itself -- serving the dazzlelink CLI, preserve's manifest (L3), and the Relinker anti-link-rot resolver.

First functional release

0.1.0 was a name-reservation placeholder (version only). 0.2.2 is the first release with real content -- the link-record core extracted from the dazzlelink tool (stack phase P2), verified wire-compatible with the published dazzlelink 0.8.0 tool in both directions.

What's in it

The record model -- DazzleLinkData

The .dazzlelink schema v1 (verbatim, back-compatible with every existing file: nested JSON, legacy flat, and the polyglot embedded-script form, BOM-tolerant) plus additive L2 generalizations:

  • a typed locator list (get_locators / add_locator) -- path aliases today (path/relative/unc/drive), network/content locators tomorrow (url/ipfs/torrent/...);
  • an optional content_id ({algorithm, digest});
  • inter-record relations (the graph node+edge model).

Path-only records gain no new keys. Satisfies dazzle_lib.Serializable + DazzleDataMixin.

Discovery + rebase

find_dazzlelinks / scan / rebase over record files (not live OS symlinks -- that stays in the CLI / filekit). rebase reports a skipped bucket for executable records it won't rewrite.

Record-centric operations

export_link / import_link / create_link / recreate_link / apply_record_metadata -- complete operations that own the record policy (which path to link, which timestamps a strategy implies) and delegate OS mechanics (symlink creation, timestamp/attribute writes) to dazzle-filekit, so a consumer recreates a link from a record in one call.

Injectable resolver

resolve_target + the ReachabilityResolver Protocol + default_reachability -- the library owns the candidate walk; the checker judges reachability (filesystem default; Relinker injects a network checker).

Fixed

  • Requires dazzle-filekit>=0.3.1: filekit 0.3.0 corrupted a symlink target's timestamps when applying a record's timestamps to the link; the 0.3.1 fix makes them land on the link.
  • The timestamp adapter backfills missing created/accessed so filekit never receives a partial/None timestamp dict.

Installation

pip install dazzle-linklib

Version History (0.2.x)

Version Key Change
v0.2.2 Current -- first functional release: record model + discovery + operations + resolver (P2); requires filekit >=0.3.1
v0.1.0 Name-reservation placeholder (version only)

Requirements

  • Python 3.9+
  • dazzle-lib>=0.1.0 (bedrock contracts), dazzle-filekit>=0.3.1 (OS mechanics)

Tests

70 passed -- record / discovery / resolver / operations / cross-tool wire-compat + the no-upstream-import and locked-surface canaries.