diff --git a/.gitignore b/.gitignore index dcab440..7645c04 100644 --- a/.gitignore +++ b/.gitignore @@ -6,6 +6,8 @@ __pycache__/ .ruff_cache/ test-results/ .env +.env.* +!.env.example *.log *.bak *.backup diff --git a/CHANGELOG.md b/CHANGELOG.md index b25e3ac..120a848 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,13 @@ # Changelog +## 0.3.3 — Additive cultivation lineage + +- Raised the Earworm/Akousma floor to 0.6.1 so remembered generations cannot + silently replace an earlier listening account. +- Clarified that a generated child is a new cultivated object with causal + lineage, not evidence that a claim about its parent was true. +- Aligned public stack versions and expanded environment-file ignore coverage. + ## 0.3.2 — Cosmoaudition status privacy - Keep Cosmoaudition health-check failures in local logs while returning only diff --git a/CITATION.cff b/CITATION.cff index 7c4582e..d953bda 100644 --- a/CITATION.cff +++ b/CITATION.cff @@ -5,7 +5,7 @@ authors: - family-names: "Isaza" given-names: "eme" affiliation: "Sonic Field Labs" -version: "0.3.2" +version: "0.3.3" date-released: "2026-08-03" license: "MPL-2.0" repository-code: "https://github.com/sonicfieldlabs/germ" diff --git a/README.md b/README.md index 7c50319..a741e43 100644 --- a/README.md +++ b/README.md @@ -8,7 +8,7 @@ listened to, and traced through lineage. A listening from Oída can become a prompt or source in GERM; a successful render can become a descendant in Akousmata and return to Oída for another listening. -Current release: `0.3.2`. +Current release: `0.3.3`. GERM is an independent Sonic Field Labs project. It can use Stable Audio 3 providers, but it is not an official Stability AI product. @@ -147,11 +147,11 @@ listening, re-listening, sonic memory, and cultivation. | Component | Version / contract | GERM integration | | --- | --- | --- | -| [OÍDA](https://github.com/sonicfieldlabs/oida) | 0.9.1 / `oida/gateway/v0.5` | Re-listen to generated sound, derive editable prompts, and retain a listening only when requested. | -| [Earworm](https://github.com/sonicfieldlabs/earworm) | 0.6.0 / akousma spec v1.5 | Export generation context and preserve provenance, lineage, location/capture, and covenants. | -| [Akousmata](https://github.com/sonicfieldlabs/akousmata) | 0.6.0 | Import remembered sound, prompt, or lineage; write successful generations back as child akousmata. | -| [AKOÚŌ](https://github.com/sonicfieldlabs/akouo) | 0.9.0 / `akouo/v0.9` | Keeps listening claims, evidence permissions, apparatus, temporal passes, and covenants consistent across the stack. | -| [Algophony](https://github.com/sonicfieldlabs/algophony) | 0.5.1 | Can evaluate lineage-bearing generation batches without changing GERM's generation state. | +| [OÍDA](https://github.com/sonicfieldlabs/oida) | 0.9.2 / `oida/gateway/v0.5` | Re-listen to generated sound, derive editable prompts, and retain a listening only when requested. | +| [Earworm](https://github.com/sonicfieldlabs/earworm) | 0.6.1 / akousma spec v1.5 | Export generation context and preserve provenance, lineage, attributable disagreement resolution, and additive revisions. | +| [Akousmata](https://github.com/sonicfieldlabs/akousmata) | 0.6.1 | Import remembered sound, prompt, or lineage; write successful generations back as child akousmata. | +| [AKOÚŌ](https://github.com/sonicfieldlabs/akouo) | 0.9.1 / `akouo/v0.9` | Keeps embodied reports distinct from machine inference while structuring evidence permissions, apparatus, temporal passes, and covenants. | +| [Algophony](https://github.com/sonicfieldlabs/algophony) | 0.5.2 | Can evaluate lineage-bearing generation batches without changing GERM's generation state. | | [ORAM](https://github.com/sonicfieldlabs/oram) | 0.4.1 | Uses the local GERM-compatible generation surface for constrained sound summoning and transformation. | The core handoff is: diff --git a/apps/macos/script/build_and_run.sh b/apps/macos/script/build_and_run.sh index 2852511..eb012ce 100755 --- a/apps/macos/script/build_and_run.sh +++ b/apps/macos/script/build_and_run.sh @@ -6,7 +6,7 @@ APP_NAME="germ" EXECUTABLE_NAME="germ-macos" BUNDLE_ID="org.sonicfield.germ" MIN_SYSTEM_VERSION="13.0" -MARKETING_VERSION="0.3.2" +MARKETING_VERSION="0.3.3" BUNDLE_VERSION="5" ROOT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)" diff --git a/docs/oida-integration.md b/docs/oida-integration.md index 8b48793..567cc17 100644 --- a/docs/oida-integration.md +++ b/docs/oida-integration.md @@ -27,8 +27,9 @@ Generation remains local to germ by default. When `remember_to_akousmata=true`, **new** akousma after a successful render whose `lineage.parent_akousma_ids` point at the source akousma(s), with operation, effective prompt, model, parameters, covenant, and the compact `extensions["germ.lineage"]` bridge. This opt-in avoids silently retaining audio or listening -context. A failed memory write is recorded in generation metadata without hiding a successful -audio render. +context. The generated child is a new speculative/cultivated object, not evidence that a claim +about its parent was true. A failed memory write is recorded in generation metadata without +hiding a successful audio render. ```python import akousma diff --git a/pyproject.toml b/pyproject.toml index b8a546f..dd2518e 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,13 +1,13 @@ [project] name = "germ" -version = "0.3.2" +version = "0.3.3" description = "Local-first modular laboratory for generative microsound, Stable Audio workflows, and lineage-aware cultivation." readme = "README.md" license = "MPL-2.0" requires-python = ">=3.10" authors = [{ name = "Sonic Field Labs" }] dependencies = [ - "akousma>=0.6.0", + "akousma>=0.6.1", "fastapi>=0.139", "httpx>=0.27.0", "pydantic>=2.7.0", @@ -23,7 +23,7 @@ override-dependencies = [ ] [tool.uv.sources] -akousma = { git = "https://github.com/sonicfieldlabs/earworm.git", tag = "v0.6.0", subdirectory = "packages/py-akousma" } +akousma = { git = "https://github.com/sonicfieldlabs/earworm.git", tag = "v0.6.1", subdirectory = "packages/py-akousma" } [project.urls] Homepage = "https://github.com/sonicfieldlabs/germ" diff --git a/server/identity.py b/server/identity.py index 485c517..c9a0ce9 100644 --- a/server/identity.py +++ b/server/identity.py @@ -3,7 +3,7 @@ PRODUCT_NAME = "germ" PRODUCT_DESCRIPTION = "open-source modular lab for generative microsound" -__version__ = "0.3.2" +__version__ = "0.3.3" LEGACY_ENGINE_NAME = "Germinator" SOUND_MATTER_CONCEPT = "sound_matter" SOUND_MATTER_SCALES = ["micro", "meso", "macro"] diff --git a/tests/test_project_consistency.py b/tests/test_project_consistency.py index 68bf039..45d5164 100644 --- a/tests/test_project_consistency.py +++ b/tests/test_project_consistency.py @@ -37,8 +37,8 @@ def test_runtime_entrypoints_share_the_canonical_germ_port() -> None: def test_akousma_dependency_matches_the_current_earworm_store_contract() -> None: project = _read("pyproject.toml") - assert '"akousma>=0.6.0"' in project - assert 'tag = "v0.6.0"' in project + assert '"akousma>=0.6.1"' in project + assert 'tag = "v0.6.1"' in project assert 'subdirectory = "packages/py-akousma"' in project assert 'path = "../earworm' not in project @@ -50,10 +50,10 @@ def test_stable_audio_uses_the_audited_torch_override() -> None: def test_release_version_is_consistent_across_runtime_and_packaging() -> None: - assert __version__ == "0.3.2" - assert 'version = "0.3.2"' in _read("pyproject.toml") - assert 'Current release: `0.3.2`.' in _read("README.md") - assert 'version: "0.3.2"' in _read("CITATION.cff") + assert __version__ == "0.3.3" + assert 'version = "0.3.3"' in _read("pyproject.toml") + assert 'Current release: `0.3.3`.' in _read("README.md") + assert 'version: "0.3.3"' in _read("CITATION.cff") assert 'date-released: "2026-08-03"' in _read("CITATION.cff") - assert 'MARKETING_VERSION="0.3.2"' in _read("apps/macos/script/build_and_run.sh") + assert 'MARKETING_VERSION="0.3.3"' in _read("apps/macos/script/build_and_run.sh") assert 'BUNDLE_VERSION="5"' in _read("apps/macos/script/build_and_run.sh") diff --git a/uv.lock b/uv.lock index e2caace..9b294c8 100644 --- a/uv.lock +++ b/uv.lock @@ -30,8 +30,8 @@ overrides = [ [[package]] name = "akousma" -version = "0.6.0" -source = { git = "https://github.com/sonicfieldlabs/earworm.git?subdirectory=packages%2Fpy-akousma&tag=v0.6.0#4aac663ab9a81cdf8d8c2f5c93f4cc84587c1572" } +version = "0.6.1" +source = { git = "https://github.com/sonicfieldlabs/earworm.git?subdirectory=packages%2Fpy-akousma&tag=v0.6.1#48a87c5cd2eafb126c3ce9dc3eaa7b29dcc9dad1" } dependencies = [ { name = "jsonschema" }, ] @@ -283,7 +283,7 @@ wheels = [ [[package]] name = "germ" -version = "0.3.2" +version = "0.3.3" source = { virtual = "." } dependencies = [ { name = "akousma" }, @@ -307,7 +307,7 @@ python-provider = [ [package.metadata] requires-dist = [ - { name = "akousma", git = "https://github.com/sonicfieldlabs/earworm.git?subdirectory=packages%2Fpy-akousma&tag=v0.6.0" }, + { name = "akousma", git = "https://github.com/sonicfieldlabs/earworm.git?subdirectory=packages%2Fpy-akousma&tag=v0.6.1" }, { name = "fastapi", specifier = ">=0.139" }, { name = "httpx", specifier = ">=0.27.0" }, { name = "httpx2", marker = "extra == 'dev'", specifier = ">=2.7" },