Skip to content

Releases: DazzleLib/dazzle-linklib

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

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.

v0.1.0 - Name-Reservation Placeholder

Choose a tag to compare

@djdarcy djdarcy released this 19 Jun 22:55
v0.1.0
b0b05ed

dazzle-linklib v0.1.0 -- name-reservation placeholder

dazzle-linklib is L2 of the DazzleLib stack: the 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, and resolve itself -- one model serving the dazzlelink filesystem CLI, preserve's content-hash manifest, and the Relinker anti-link-rot resolver.

What 0.1.0 is

This is a name-reservation placeholder. It claims the PyPI name and stands up the project, but exposes only its version -- there is no functional content yet. Installing it gives you a clean, importable package and nothing more.

What shipped

  • MIT-licensed dazzle_linklib package with the L2 charter (what this layer owns vs. delegates down to dazzle-filekit L1 and unctools L0).
  • Day-one stability guards: docs/api-stability.md (the locked-surface policy) + a tests/test_import_stability.py canary.
  • Release automation keyed off the GitHub Release published event (not tag push), so publishing fires once, after the notes exist.

What's next

The real content -- extracting DazzleLinkData, the JSON I/O, the typed locator list + content_id, and the injectable resolver from the dazzlelink tool -- is stack phase P2 and lands in a later release. Track it on the Roadmap.

Installation

pip install dazzle-linklib

Requires Python 3.9+.