diff --git a/CHANGELOG.md b/CHANGELOG.md index 1fafa63..77e726f 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,12 @@ # Changelog +## 0.3.2 — 2026-08-03 + +- Advance the immutable GERM pin to 0.3.2, whose Cosmoaudition status boundary + logs provider diagnostics locally while returning a stable public error. +- Preserve the 0.3.1 compatibility set otherwise: Oída 0.9.1, AKOÚŌ 0.9.0, + Earworm 0.6.0, and Akousmata 0.6.0. + ## 0.3.1 — 2026-08-03 - Advance the immutable compatibility set to Oída 0.9.1 and GERM 0.3.1 while diff --git a/CITATION.cff b/CITATION.cff index 3dd22f9..9771e3f 100644 --- a/CITATION.cff +++ b/CITATION.cff @@ -2,7 +2,7 @@ cff-version: 1.2.0 message: "If you use the Listening Stack Installer in research, cite this software and the installed applications and models separately." title: "The Listening Stack Installer" type: software -version: 0.3.1 +version: 0.3.2 date-released: 2026-08-03 authors: - family-names: "Isaza" diff --git a/README.md b/README.md index f45d282..b3dff1a 100644 --- a/README.md +++ b/README.md @@ -19,7 +19,7 @@ Earworm, and Akousmata remain independent repositories with their own histories, licenses, and releases. The assistant does not duplicate their application code. -Current installer release: `0.3.1`. +Current installer release: `0.3.2`. ## Quick Start @@ -65,25 +65,25 @@ chmod +x listening-stack.pyz Sources are cloned into a dedicated installation directory. The installer verifies every existing origin and refuses to update a dirty or unexpected -checkout. Release `0.3.1` installs one immutable compatibility set and records +checkout. Release `0.3.2` installs one immutable compatibility set and records the exact commits it installed in local state: | Component | Tested release | | --- | --- | | Oída | 0.9.1 | -| GERM | 0.3.1 | +| GERM | 0.3.2 | | AKOÚŌ | 0.9.0 | | Earworm | 0.6.0 | | Akousmata | 0.6.0 | The official MOSS-Audio source is pinned to the revision tested with Oída 0.9.1. Stable Audio 3 source is pinned to the same revision locked by GERM -0.3.1. Rerunning this installer therefore reproduces the compatibility set; +0.3.2. Rerunning this installer therefore reproduces the compatibility set; it does not silently advance a checkout to a newer moving branch. ## Accountable Listening Contract -Release 0.3.1 installs listening as an explicit, inspectable chain: +Release 0.3.2 installs listening as an explicit, inspectable chain: 1. AKOÚŌ owns routing and claim discipline under `akouo/v0.9`, including situated `akouo/listening-context/v2`, attributable listening passes, diff --git a/docs/accountable-listening.md b/docs/accountable-listening.md index 233f07d..a49449c 100644 --- a/docs/accountable-listening.md +++ b/docs/accountable-listening.md @@ -1,6 +1,6 @@ # Accountable Listening Architecture -Listening Stack 0.3.1 treats listening as a chain of bounded contracts, not as +Listening Stack 0.3.2 treats listening as a chain of bounded contracts, not as one undifferentiated model response. Each concept has one semantic owner and is parsed once at the boundary that owns it. diff --git a/docs/installation.md b/docs/installation.md index 1e3e339..2849316 100644 --- a/docs/installation.md +++ b/docs/installation.md @@ -119,7 +119,7 @@ Pin the executable release used by the curl bootstrap: ```bash curl -fsSL \ https://raw.githubusercontent.com/sonicfieldlabs/listening-stack/main/install.sh \ - | LISTENING_STACK_VERSION=v0.3.1 bash + | LISTENING_STACK_VERSION=v0.3.2 bash ``` Override the executable destination: @@ -137,11 +137,11 @@ clean installation checkout before fetching the immutable revisions in the installer's compatibility set. It records the exact commits and refuses a checkout that resolves to anything else. It never resets a dirty tree. -Listening Stack 0.3.1 pins Oída 0.9.1, GERM 0.3.1, AKOÚŌ 0.9.0, Earworm +Listening Stack 0.3.2 pins Oída 0.9.1, GERM 0.3.2, AKOÚŌ 0.9.0, Earworm 0.6.0, and Akousmata 0.6.0. It also records the exact accountable-listening contracts in `listening-stack/state/v2`. The state names the canonical profile, the exact component set, the four core components, and optional components. A -later installer release may publish a newer tested set; an existing 0.3.1 +later installer release may publish a newer tested set; an existing 0.3.2 executable continues to reproduce this one. Application version numbers remain owned by their repositories. Updating an diff --git a/docs/models.md b/docs/models.md index 52c0d32..e753f5d 100644 --- a/docs/models.md +++ b/docs/models.md @@ -26,7 +26,7 @@ serves direct and transcription routes; the Thinking model serves deeper, music, and targeted re-listening routes. Oída consumes a final model response as bounded evidence and does not expose private reasoning traces. -Listening Stack 0.3.1 downloads each MOSS checkpoint by the immutable commit +Listening Stack 0.3.2 downloads each MOSS checkpoint by the immutable commit audited for this release. Oída 0.9.1's embedded loader requires Safetensors and uses its locked Torch 2.10, TorchAudio 2.10, TorchCodec 0.10, and Transformers 5.14 runtime. The installer also prepares Oída's optional Music ID dependency; diff --git a/pyproject.toml b/pyproject.toml index 342e39f..aed0ff8 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,6 +1,6 @@ [project] name = "sonicfield-listening-stack" -version = "0.3.1" +version = "0.3.2" description = "Reproducible installer and runtime verifier for the accountable listening core and optional GERM." readme = "README.md" requires-python = ">=3.9" diff --git a/src/listening_stack/__init__.py b/src/listening_stack/__init__.py index fd47222..0682c64 100644 --- a/src/listening_stack/__init__.py +++ b/src/listening_stack/__init__.py @@ -1,3 +1,3 @@ """Sonic Field Listening Stack installation assistant.""" -__version__ = "0.3.1" +__version__ = "0.3.2" diff --git a/src/listening_stack/catalog.py b/src/listening_stack/catalog.py index a0e92d2..7542373 100644 --- a/src/listening_stack/catalog.py +++ b/src/listening_stack/catalog.py @@ -67,9 +67,9 @@ def size_gb(self) -> float: key="germ", name="GERM", url="https://github.com/sonicfieldlabs/germ.git", - ref="v0.3.1", - version="0.3.1", - revision="16f427b57716cb7c4db92c68cb17a22ab1a2cde2", + ref="v0.3.2", + version="0.3.2", + revision="55c7fc1f403c969c1053d727740681db24718bd6", ), "akouo": Repository( key="akouo", @@ -126,7 +126,7 @@ def size_gb(self) -> float: name="Stable Audio 3", url="https://github.com/Stability-AI/stable-audio-3.git", ref="main", - # Match the immutable source revision in GERM v0.3.1's uv.lock. + # Match the immutable source revision in GERM v0.3.2's uv.lock. revision="fa5ee841dd49bae0fa361fac26904adc27fd400e", ) diff --git a/tests/test_bootstrap.py b/tests/test_bootstrap.py index 100c7b4..d0dcf4e 100644 --- a/tests/test_bootstrap.py +++ b/tests/test_bootstrap.py @@ -58,7 +58,7 @@ def fixture( "BOOTSTRAP_FIXTURES": str(fixtures), "HOME": str(home), "LISTENING_STACK_BIN_DIR": str(install_bin), - "LISTENING_STACK_VERSION": "v0.3.1", + "LISTENING_STACK_VERSION": "v0.3.2", "PATH": str(fake_bin) + os.pathsep + environment.get("PATH", ""), "TMPDIR": str(temp_dir), } @@ -119,7 +119,7 @@ def test_additional_checksum_line_is_rejected(self): def test_invalid_release_tag_is_rejected_before_download(self): with tempfile.TemporaryDirectory() as temporary: install_bin, environment = self.fixture(temporary) - environment["LISTENING_STACK_VERSION"] = "v0.3.1/../../unexpected" + environment["LISTENING_STACK_VERSION"] = "v0.3.2/../../unexpected" result = subprocess.run( ["bash", str(ROOT / "install.sh"), "models", "--json"], env=environment, diff --git a/tests/test_catalog.py b/tests/test_catalog.py index 80d6aed..472afbb 100644 --- a/tests/test_catalog.py +++ b/tests/test_catalog.py @@ -48,7 +48,7 @@ def test_unknown_model_is_rejected(self): def test_release_compatibility_set_is_immutable(self): self.assertEqual(REPOSITORIES["oida"].version, "0.9.1") - self.assertEqual(REPOSITORIES["germ"].version, "0.3.1") + self.assertEqual(REPOSITORIES["germ"].version, "0.3.2") self.assertEqual(REPOSITORIES["akouo"].version, "0.9.0") self.assertEqual(REPOSITORIES["earworm"].version, "0.6.0") self.assertEqual(REPOSITORIES["akousmata"].version, "0.6.0") diff --git a/tests/test_cli.py b/tests/test_cli.py index 36d7ab9..31b3b38 100644 --- a/tests/test_cli.py +++ b/tests/test_cli.py @@ -39,7 +39,7 @@ def test_noninteractive_dry_run(self): ) self.assertIn("Dry run complete", output.getvalue()) self.assertIn("Oída v0.9.1", output.getvalue()) - self.assertIn("GERM v0.3.1", output.getvalue()) + self.assertIn("GERM v0.3.2", output.getvalue()) self.assertIn("oida/gateway/v0.5", output.getvalue()) self.assertIn("earworm/auditum/v2", output.getvalue()) @@ -60,7 +60,7 @@ def test_noninteractive_default_is_core_without_germ(self): plan = output.getvalue() self.assertIn("Listening core", plan) self.assertIn("Oída v0.9.1", plan) - self.assertNotIn("GERM v0.3.1", plan) + self.assertNotIn("GERM v0.3.2", plan) def test_models_and_no_models_are_mutually_exclusive(self): with self.assertRaises(SystemExit) as raised: diff --git a/tests/test_installer.py b/tests/test_installer.py index 5f9ee8d..438288e 100644 --- a/tests/test_installer.py +++ b/tests/test_installer.py @@ -50,7 +50,7 @@ def test_dry_run_model_free_install_has_no_filesystem_effect(self): state["components"], ["earworm", "akouo", "akousmata", "oida"] ) self.assertEqual(state["optional_components"], []) - self.assertEqual(state["installer_version"], "0.3.1") + self.assertEqual(state["installer_version"], "0.3.2") self.assertEqual(state["contracts"]["gateway"], "oida/gateway/v0.5") self.assertEqual( state["contracts"]["listening_context"],