From fc41eecb1c58534abf5c1ab0eb361f97d0000681 Mon Sep 17 00:00:00 2001 From: emeisazam <255706292+emeisazam@users.noreply.github.com> Date: Sun, 2 Aug 2026 23:00:36 -0500 Subject: [PATCH] Pin the accountable listening 0.3.3 set --- .gitignore | 2 ++ CHANGELOG.md | 10 ++++++++++ CITATION.cff | 2 +- README.md | 32 +++++++++++++++++--------------- docs/accountable-listening.md | 4 ++-- docs/installation.md | 10 +++++----- docs/models.md | 4 ++-- docs/troubleshooting.md | 2 +- pyproject.toml | 2 +- src/listening_stack/__init__.py | 2 +- src/listening_stack/catalog.py | 32 ++++++++++++++++---------------- tests/test_bootstrap.py | 4 ++-- tests/test_catalog.py | 10 +++++----- tests/test_cli.py | 8 ++++---- tests/test_doctor.py | 6 +++--- tests/test_installer.py | 2 +- 16 files changed, 73 insertions(+), 59 deletions(-) diff --git a/.gitignore b/.gitignore index 5f36bab..904a2c6 100644 --- a/.gitignore +++ b/.gitignore @@ -8,6 +8,8 @@ dist/ build/ *.egg-info/ .env +.env.* +!.env.example *.env state.json runtime.json diff --git a/CHANGELOG.md b/CHANGELOG.md index 77e726f..16f756b 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,15 @@ # Changelog +## 0.3.3 — 2026-08-03 + +- Advance the immutable compatibility set to Oída 0.9.2, GERM 0.3.3, + AKOÚŌ 0.9.1, Earworm 0.6.1, and Akousmata 0.6.1. +- Preserve the embodied-listener boundary for `heard`, attributable + disagreement resolution, and mechanically additive listening revisions + across the installed core. +- Pin every component to its exact reviewed release commit and broaden local + environment-file ignore coverage. + ## 0.3.2 — 2026-08-03 - Advance the immutable GERM pin to 0.3.2, whose Cosmoaudition status boundary diff --git a/CITATION.cff b/CITATION.cff index 9771e3f..eae0b7f 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.2 +version: 0.3.3 date-released: 2026-08-03 authors: - family-names: "Isaza" diff --git a/README.md b/README.md index b3dff1a..28ca287 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.2`. +Current installer release: `0.3.3`. ## Quick Start @@ -65,32 +65,33 @@ 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.2` installs one immutable compatibility set and records +checkout. Release `0.3.3` 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.2 | -| AKOÚŌ | 0.9.0 | -| Earworm | 0.6.0 | -| Akousmata | 0.6.0 | +| Oída | 0.9.2 | +| GERM | 0.3.3 | +| AKOÚŌ | 0.9.1 | +| Earworm | 0.6.1 | +| Akousmata | 0.6.1 | 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.2. Rerunning this installer therefore reproduces the compatibility set; +0.9.2. Stable Audio 3 source is pinned to the same revision locked by GERM +0.3.3. 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.2 installs listening as an explicit, inspectable chain: +Release 0.3.3 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, provenance and cuts, explicit route decisions, and declared ensembles. 2. Oída owns runtime perception and the decision-first gateway. A successful - hearing emits `oida/listening-event/v0.3` through `oida/gateway/v0.5`; a - refusal before perception emits `oida/route-outcome/v0.1` instead of + perception pass emits `oida/listening-event/v0.3` through + `oida/gateway/v0.5`; a refusal before perception emits + `oida/route-outcome/v0.1` instead of fabricating an empty hearing. 3. Earworm owns addressable, append-only `earworm/auditum/v2` lineage, disagreement, decision-only records, action receipts, revision, and @@ -101,8 +102,9 @@ Release 0.3.2 installs listening as an explicit, inspectable chain: Capability and authority stay separate. A host may declare what its apparatus can perceive, but Oída recomputes the effective context and defaults operational -authority to observe-only. Prompts, transcripts, and contextual descriptions -remain attributed text rather than being relabeled as heard evidence. +authority to observe-only. Prompts, transcripts, contextual descriptions, and +machine observations remain attributed evidence rather than being relabeled as +embodied hearing. Unsupported measurements remain absent rather than being inferred from model prose. A pause, refusal, withholding, or forgetting decision is recorded as a decision, not confused with honest absence or an undetermined claim. Distinct @@ -148,7 +150,7 @@ MOSS-Audio code and released model checkpoints are Apache-2.0. Oída is develope and tested first against the 4B Instruct and Thinking checkpoints while remaining model-agnostic at its gateway boundary. -Oída 0.9.1 requires Safetensors for its embedded model loader and pins its +Oída 0.9.2 requires Safetensors for its embedded model loader and pins its compatible Torch, TorchAudio, TorchCodec, and Transformers releases. The installer downloads MOSS checkpoints by immutable Hugging Face commit and the doctor verifies both model configuration and Safetensors weights. diff --git a/docs/accountable-listening.md b/docs/accountable-listening.md index a49449c..c60b949 100644 --- a/docs/accountable-listening.md +++ b/docs/accountable-listening.md @@ -1,6 +1,6 @@ # Accountable Listening Architecture -Listening Stack 0.3.2 treats listening as a chain of bounded contracts, not as +Listening Stack 0.3.3 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. @@ -62,7 +62,7 @@ succeed. When Oída is running, `listening-stack doctor` verifies: 1. the process identifies as Oída on the configured loopback address; -2. `/gateway` reports Oída 0.9.1 and the expected component contracts; +2. `/gateway` reports Oída 0.9.2 and the expected component contracts; 3. the gateway advertises all required schema endpoints; 4. the host-perception schema requires `oida/host-perception/v0.4`; 5. the listening-event schema requires `oida/listening-event/v0.3`; diff --git a/docs/installation.md b/docs/installation.md index 2849316..3ccd752 100644 --- a/docs/installation.md +++ b/docs/installation.md @@ -74,7 +74,7 @@ remain under Hugging Face's credential handling and are not written to stack state or environment files. MOSS-Audio checkpoints are downloaded at the immutable revisions tested by -Oída 0.9.1. Stable Audio 3 currently resolves the selected gated model through +Oída 0.9.2. Stable Audio 3 currently resolves the selected gated model through its upstream loader; when the Hugging Face cache exposes the resolved `main` revision, the installer records it in `state.json`. @@ -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.2 bash + | LISTENING_STACK_VERSION=v0.3.3 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.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 +Listening Stack 0.3.3 pins Oída 0.9.2, GERM 0.3.3, AKOÚŌ 0.9.1, Earworm +0.6.1, and Akousmata 0.6.1. 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.2 +later installer release may publish a newer tested set; an existing 0.3.3 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 e753f5d..3a5e67c 100644 --- a/docs/models.md +++ b/docs/models.md @@ -26,8 +26,8 @@ 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.2 downloads each MOSS checkpoint by the immutable commit -audited for this release. Oída 0.9.1's embedded loader requires Safetensors and +Listening Stack 0.3.3 downloads each MOSS checkpoint by the immutable commit +audited for this release. Oída 0.9.2'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; identification remains opt-in per listen and may contact the service used by diff --git a/docs/troubleshooting.md b/docs/troubleshooting.md index 8011ed6..8f17105 100644 --- a/docs/troubleshooting.md +++ b/docs/troubleshooting.md @@ -43,7 +43,7 @@ listening-stack doctor ``` The installer sets explicit local MOSS paths, disables silent Hub lookup, and -downloads the immutable revisions tested with Oída 0.9.1. Rerun model download +downloads the immutable revisions tested with Oída 0.9.2. Rerun model download if a checkpoint is incomplete. ## Oída is healthy but a contract or schema check fails diff --git a/pyproject.toml b/pyproject.toml index aed0ff8..17fc7b9 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,6 +1,6 @@ [project] name = "sonicfield-listening-stack" -version = "0.3.2" +version = "0.3.3" 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 0682c64..dc033eb 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.2" +__version__ = "0.3.3" diff --git a/src/listening_stack/catalog.py b/src/listening_stack/catalog.py index 7542373..a0a203d 100644 --- a/src/listening_stack/catalog.py +++ b/src/listening_stack/catalog.py @@ -59,41 +59,41 @@ def size_gb(self) -> float: key="oida", name="Oída", url="https://github.com/sonicfieldlabs/oida.git", - ref="v0.9.1", - version="0.9.1", - revision="46df4b18e51a10a46a7656fb000fdd23a639fef7", + ref="v0.9.2", + version="0.9.2", + revision="22a99662b004f3d472d86c06d595e458b0aaf022", ), "germ": Repository( key="germ", name="GERM", url="https://github.com/sonicfieldlabs/germ.git", - ref="v0.3.2", - version="0.3.2", - revision="55c7fc1f403c969c1053d727740681db24718bd6", + ref="v0.3.3", + version="0.3.3", + revision="3cbe20054328bc2d6f2d9988865d3194d915bfa6", ), "akouo": Repository( key="akouo", name="AKOÚŌ", url="https://github.com/sonicfieldlabs/akouo.git", - ref="v0.9.0", - version="0.9.0", - revision="466c4345ca57dee2636be7a5c3c7ec2615b1bf86", + ref="v0.9.1", + version="0.9.1", + revision="9cf584acaa55a321163b5deaebd4cc90fd3c6299", ), "earworm": Repository( key="earworm", name="Earworm", url="https://github.com/sonicfieldlabs/earworm.git", - ref="v0.6.0", - version="0.6.0", - revision="4aac663ab9a81cdf8d8c2f5c93f4cc84587c1572", + ref="v0.6.1", + version="0.6.1", + revision="48a87c5cd2eafb126c3ce9dc3eaa7b29dcc9dad1", ), "akousmata": Repository( key="akousmata", name="Akousmata", url="https://github.com/sonicfieldlabs/akousmata.git", - ref="v0.6.0", - version="0.6.0", - revision="7a0200ccfb98449dd545e8a8c0f7d3a36627f5ab", + ref="v0.6.1", + version="0.6.1", + revision="47d0557203f9ed286519d943245324034e6f7a54", ), } @@ -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.2's uv.lock. + # Match the immutable source revision in GERM v0.3.3's uv.lock. revision="fa5ee841dd49bae0fa361fac26904adc27fd400e", ) diff --git a/tests/test_bootstrap.py b/tests/test_bootstrap.py index d0dcf4e..1b400bf 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.2", + "LISTENING_STACK_VERSION": "v0.3.3", "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.2/../../unexpected" + environment["LISTENING_STACK_VERSION"] = "v0.3.3/../../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 472afbb..83eb580 100644 --- a/tests/test_catalog.py +++ b/tests/test_catalog.py @@ -47,11 +47,11 @@ def test_unknown_model_is_rejected(self): selected_models(["not-a-model"]) def test_release_compatibility_set_is_immutable(self): - self.assertEqual(REPOSITORIES["oida"].version, "0.9.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") + self.assertEqual(REPOSITORIES["oida"].version, "0.9.2") + self.assertEqual(REPOSITORIES["germ"].version, "0.3.3") + self.assertEqual(REPOSITORIES["akouo"].version, "0.9.1") + self.assertEqual(REPOSITORIES["earworm"].version, "0.6.1") + self.assertEqual(REPOSITORIES["akousmata"].version, "0.6.1") for repository in REPOSITORIES.values(): self.assertEqual(len(repository.revision), 40) int(repository.revision, 16) diff --git a/tests/test_cli.py b/tests/test_cli.py index 31b3b38..80be9be 100644 --- a/tests/test_cli.py +++ b/tests/test_cli.py @@ -38,8 +38,8 @@ 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.2", output.getvalue()) + self.assertIn("Oída v0.9.2", output.getvalue()) + self.assertIn("GERM v0.3.3", output.getvalue()) self.assertIn("oida/gateway/v0.5", output.getvalue()) self.assertIn("earworm/auditum/v2", output.getvalue()) @@ -59,8 +59,8 @@ 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.2", plan) + self.assertIn("Oída v0.9.2", plan) + self.assertNotIn("GERM v0.3.3", plan) def test_models_and_no_models_are_mutually_exclusive(self): with self.assertRaises(SystemExit) as raised: diff --git a/tests/test_doctor.py b/tests/test_doctor.py index 970e2bf..9000518 100644 --- a/tests/test_doctor.py +++ b/tests/test_doctor.py @@ -108,11 +108,11 @@ def output(command, **_kwargs): (Path(temporary) / ".git").mkdir() check = _check_repository(Path(temporary), "oida", spec.revision) self.assertEqual(check.status, "pass") - self.assertIn("v0.9.1", check.detail) + self.assertIn("v0.9.2", check.detail) def test_oida_live_contracts_verify_manifest_and_four_schemas(self): manifest = { - "version": "0.9.1", + "version": "0.9.2", "contract": "oida/gateway/v0.5", "components": { "akouo": {"contract": "akouo/v0.9"}, @@ -146,7 +146,7 @@ def test_oida_live_contracts_verify_manifest_and_four_schemas(self): def test_oida_live_contracts_fail_closed_on_semantic_drift(self): manifest = { - "version": "0.9.1", + "version": "0.9.2", "contract": "oida/gateway/v0.5", "components": { "akouo": {"contract": "akouo/v0.9"}, diff --git a/tests/test_installer.py b/tests/test_installer.py index 438288e..483cbeb 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.2") + self.assertEqual(state["installer_version"], "0.3.3") self.assertEqual(state["contracts"]["gateway"], "oida/gateway/v0.5") self.assertEqual( state["contracts"]["listening_context"],