Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
7 changes: 7 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -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
Expand Down
2 changes: 1 addition & 1 deletion CITATION.cff
Original file line number Diff line number Diff line change
Expand Up @@ -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"
Expand Down
10 changes: 5 additions & 5 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -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

Expand Down Expand Up @@ -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,
Expand Down
2 changes: 1 addition & 1 deletion docs/accountable-listening.md
Original file line number Diff line number Diff line change
@@ -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.

Expand Down
6 changes: 3 additions & 3 deletions docs/installation.md
Original file line number Diff line number Diff line change
Expand Up @@ -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:
Expand All @@ -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
Expand Down
2 changes: 1 addition & 1 deletion docs/models.md
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand Down
2 changes: 1 addition & 1 deletion pyproject.toml
Original file line number Diff line number Diff line change
@@ -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"
Expand Down
2 changes: 1 addition & 1 deletion src/listening_stack/__init__.py
Original file line number Diff line number Diff line change
@@ -1,3 +1,3 @@
"""Sonic Field Listening Stack installation assistant."""

__version__ = "0.3.1"
__version__ = "0.3.2"
8 changes: 4 additions & 4 deletions src/listening_stack/catalog.py
Original file line number Diff line number Diff line change
Expand Up @@ -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",
Expand Down Expand Up @@ -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",
)

Expand Down
4 changes: 2 additions & 2 deletions tests/test_bootstrap.py
Original file line number Diff line number Diff line change
Expand Up @@ -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),
}
Expand Down Expand Up @@ -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,
Expand Down
2 changes: 1 addition & 1 deletion tests/test_catalog.py
Original file line number Diff line number Diff line change
Expand Up @@ -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")
Expand Down
4 changes: 2 additions & 2 deletions tests/test_cli.py
Original file line number Diff line number Diff line change
Expand Up @@ -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())

Expand All @@ -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:
Expand Down
2 changes: 1 addition & 1 deletion tests/test_installer.py
Original file line number Diff line number Diff line change
Expand Up @@ -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"],
Expand Down