Skip to content

Releases: sonicfieldlabs/earworm

Earworm v0.7.0

Choose a tag to compare

@emeisazam emeisazam released this 11 Aug 21:47
c130fa6

What's Changed

Full Changelog: v0.6.1...v0.7.0

Earworm v0.6.1

Choose a tag to compare

@emeisazam emeisazam released this 03 Aug 03:29
48a87c5

What's Changed

  • Release Earworm 0.6 decision-first auditums by @emeisazam in #3
  • Align documented Listening Stack releases by @emeisazam in #4
  • Align GERM 0.3.2 compatibility reference by @emeisazam in #5
  • Protect additive listening revisions by @emeisazam in #6

Full Changelog: v0.6.0...v0.6.1

Earworm v0.6.0 — Decision-first auditums

Choose a tag to compare

@emeisazam emeisazam released this 03 Aug 00:19

Advances the open akousma record to spec v1.5 and earworm/auditum/v2, with addressable route decisions, decision-only akousmata, listening provenance, attributable plural listening, durable forgetting receipts, and cross-language validation.

Earworm v0.4.0 — akousma spec v1.3: under which ethics

Choose a tag to compare

@emeisazam emeisazam released this 12 Jul 22:59

Spec v1.3 (additive over all earlier versions): the optional covenant block — under which ethics this was listened.

  • Records carry the listening covenant's identity (id, name, version, sha256 of its source text, extends lineage) and its honest absence: rules applied, what was withheld — counted and attributed to the rule that asked for it, never described — and the commitment count. The covenant's full text stays with its author; records stay export-safe by construction.
  • New Rule 8 — sovereignty is recorded: withheld is not undetermined (which means the evidence could not support a claim; withheld means the covenant declined it); absence without attribution is indistinguishable from a bad ear. Consumers may filter, group, and audit by covenant.id; no consumer may reconstruct withheld content.
  • py-akousma 0.4.0: covenant() builder, new_akousma(covenant=…), an indexed covenant_id column with in-place store migration, query(covenant_id=…), reindex() re-hoist. JS SDK mirrored. New v1.3 CI fixture.

35 Python tests + full pnpm check green.

Earworm v0.3.0 — akousma spec v1.2: location, capture, open records

Choose a tag to compare

@emeisazam emeisazam released this 12 Jul 03:50

Spec v1.2 (additive over v1.1/v1.0):

  • location — where the sound was heard: lat/lon, accuracy_m, altitude_m, human label, source, captured_at. Optional and consent-scoped; dropped from open-research exports by default — where someone listens is as sensitive as what they heard.
  • capture — how the listening was triggered: direction (past = the ring-buffer seconds before the trigger, future = the window after it, live), seconds, trigger, armed_at, triggered_at.
  • Open records — unknown top-level fields MUST be preserved and MAY be ignored: future vocabulary, not errors.

py-akousma 0.3.0: location()/capture() builders, indexed lat/lon columns with in-place store migration, locations() / near() / query(has_location=…), a created_at index, and a JSON1 fast path for tags(). JS SDK mirrored (constants, builders, shape checks, typings). New v1.2 CI fixture. 31 Python tests + full pnpm check green.

Earworm v0.2.1 — Navigator Surface

Choose a tag to compare

@emeisazam emeisazam released this 10 Jul 17:08

Small store-API subrelease powering the new akousmata listening navigator (github.com/sonicfieldlabs/akousmata):

  • tags() — distinct tags with usage counts.
  • changed_since(iso) — records created after a timestamp, for watchers and realtime feeds.
  • forget(id, delete_audio=False) — the memory operation: removes the record and its outgoing edges, keeps inbound edges as reportable absence (rule 7), and deletes the audio object only when no other record shares its content hash.

Docs now note that the store's default location is also the navigator app's home: code public, data untracked.

Earworm v0.2.0 — Akousma Spec v1.1

Choose a tag to compare

@emeisazam emeisazam released this 10 Jul 11:47

The akousma memory layer grows connective tissue: records now link to each other as a network, not just a genealogy.

New in spec v1.1 (additive — 1.0.0 records remain valid)

  • Typed relations (lineage.relations): variant_of, response_to, same_source_as, recurrence_of, series_with, compares_with, replaces, other — curatorial kinship links kept strictly distinct from causal parent_akousma_ids. Rule 6: parents are causal, relations are kinship.
  • summary — a skimmable one-liner per record; the record's answer to audio's missing skim affordance.
  • Provenance that travels: capture_conditions, rights_note, and pipeline_effects (capture, telephony, acousmatization, amplification, phonofixation, phonogeneration, reshaping).
  • audio.media — container, codec, bit depth, codec history.
  • Contract-pinned listening envelope: {contract?, created_at, summary?, payload} per producer entry (e.g. akouo/v0.6), so consumers know which claim discipline shaped each payload.

Store (py-akousma 0.2.0)

  • relation_edges table + related() (both directions) and descendants() walks.
  • Richer queries: tag, free text, since/until, session, content hash; find_by_hash() for dedupe and recurrence.
  • verify() integrity report — dangling parents, dangling relations, missing audio, invalid records — reported, never silently dropped (rule 7: absence is information).
  • reindex() rebuilds all edges from stored records after upgrading a pre-relations store.

SDKs

  • sdk-js 0.2.0: akousmaRelation, addListening, relations shape validation, updated TypeScript typings.
  • New conformance fixture exercising every v1.1 feature: tests/fixtures/oida-harbor-series.akousma.json.

Earworm v0.1.0

Choose a tag to compare

@emeisazam emeisazam released this 02 Jul 17:36

Initial public v0.1.0 release of Earworm: append-only persistent listening protocol, hash-chained JSONL store, context bundles, reversible automation audit, schemas, fixtures, JS SDK, Python reader stub, conformance vectors, and CI.