From e634f510d4b1fb5783d39ede83f87f732f928c70 Mon Sep 17 00:00:00 2001 From: Aurelio <19254254+Aureliolo@users.noreply.github.com> Date: Thu, 19 Mar 2026 14:46:38 +0100 Subject: [PATCH 1/2] Revert "chore(main): release 0.3.7 (#583)" This reverts commit bf587792d8a5fb5508fb373d45e01648dc732dec. --- .github/.release-please-manifest.json | 2 +- .github/CHANGELOG.md | 19 ------------------- pyproject.toml | 2 +- src/synthorg/__init__.py | 2 +- 4 files changed, 3 insertions(+), 22 deletions(-) diff --git a/.github/.release-please-manifest.json b/.github/.release-please-manifest.json index 71063869ae..968762f4ca 100644 --- a/.github/.release-please-manifest.json +++ b/.github/.release-please-manifest.json @@ -1,3 +1,3 @@ { - ".": "0.3.7" + ".": "0.3.6" } diff --git a/.github/CHANGELOG.md b/.github/CHANGELOG.md index 777e6e9a35..54006ea3f3 100644 --- a/.github/CHANGELOG.md +++ b/.github/CHANGELOG.md @@ -1,24 +1,5 @@ # Changelog -## [0.3.7](https://github.com/Aureliolo/synthorg/compare/v0.3.6...v0.3.7) (2026-03-19) - - -### Features - -* **engine:** implement Hybrid Plan + ReAct execution loop ([#582](https://github.com/Aureliolo/synthorg/issues/582)) ([008147c](https://github.com/Aureliolo/synthorg/commit/008147c698d3443c95618be4d783a5d3d3813005)) -* implement first-run setup wizard ([#584](https://github.com/Aureliolo/synthorg/issues/584)) ([dfed931](https://github.com/Aureliolo/synthorg/commit/dfed93123bfd24fabc50bc52d46211343835efea)) - - -### Bug Fixes - -* **api:** address ZAP DAST scan findings ([#579](https://github.com/Aureliolo/synthorg/issues/579)) ([ce9a3e0](https://github.com/Aureliolo/synthorg/commit/ce9a3e077ab6af5743a8150333d225d0de9ab0d3)) -* **cli:** regenerate compose and re-exec binary on update ([#576](https://github.com/Aureliolo/synthorg/issues/576)) ([3f226eb](https://github.com/Aureliolo/synthorg/commit/3f226eb79b46de59c1e94319a046765353392de4)) - - -### CI/CD - -* add SBOM generation to Docker and CLI releases ([#580](https://github.com/Aureliolo/synthorg/issues/580)) ([db459cf](https://github.com/Aureliolo/synthorg/commit/db459cf0892c46f9a887126edd70aeaafe6b70d8)) - ## [0.3.6](https://github.com/Aureliolo/synthorg/compare/v0.3.5...v0.3.6) (2026-03-19) diff --git a/pyproject.toml b/pyproject.toml index 43433bf8aa..f7c2e2e11b 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -217,7 +217,7 @@ venv = ".venv" # --------------------------------------------------------------------------- [tool.commitizen] name = "cz_conventional_commits" -version = "0.3.7" # x-release-please-version +version = "0.3.6" # x-release-please-version tag_format = "v$version" # --------------------------------------------------------------------------- diff --git a/src/synthorg/__init__.py b/src/synthorg/__init__.py index 38319ed67a..01a3233687 100644 --- a/src/synthorg/__init__.py +++ b/src/synthorg/__init__.py @@ -1,3 +1,3 @@ """SynthOrg - Framework for building synthetic organizations.""" -__version__ = "0.3.7" # x-release-please-version +__version__ = "0.3.6" # x-release-please-version From 503d3a6893b5ea612d4e89556322d18e9669e973 Mon Sep 17 00:00:00 2001 From: Aurelio <19254254+Aureliolo@users.noreply.github.com> Date: Thu, 19 Mar 2026 15:05:21 +0100 Subject: [PATCH 2/2] fix(test): use mock logger instead of capsys for depth limit test test_stops_at_max_depth used capsys to capture stdout, but walk_string_values logs via structlog (logger.warning), not print(). Replace with @patch on the logger and assert warning was called with the depth kwarg -- future-proof regardless of structlog sink config. Co-Authored-By: Claude Opus 4.6 (1M context) --- tests/unit/security/rules/test_utils.py | 16 +++++++++------- 1 file changed, 9 insertions(+), 7 deletions(-) diff --git a/tests/unit/security/rules/test_utils.py b/tests/unit/security/rules/test_utils.py index 81f8ca3050..a5add69dfb 100644 --- a/tests/unit/security/rules/test_utils.py +++ b/tests/unit/security/rules/test_utils.py @@ -1,5 +1,7 @@ """Tests for walk_string_values utility.""" +from unittest.mock import MagicMock, patch + import pytest from synthorg.security.rules._utils import walk_string_values @@ -76,11 +78,9 @@ def test_nested_lists(self) -> None: class TestWalkStringValuesDepthLimit: """Depth limit prevents infinite recursion.""" - def test_stops_at_max_depth( - self, - capsys: pytest.CaptureFixture[str], - ) -> None: - """Build a structure deeper than 20 levels — truncated with warning.""" + @patch("synthorg.security.rules._utils.logger") + def test_stops_at_max_depth(self, mock_logger: MagicMock) -> None: + """Build a structure deeper than 20 levels -- truncated with warning.""" data: dict[str, object] = {"val": "leaf"} for _ in range(25): data = {"nested": data} @@ -89,8 +89,10 @@ def test_stops_at_max_depth( # "leaf" is beyond depth limit and should be skipped. assert result == [] - captured = capsys.readouterr() - assert "depth" in captured.out.lower() + # Logger.warning should have been called with the depth event. + mock_logger.warning.assert_called() + call_kwargs = mock_logger.warning.call_args + assert call_kwargs.kwargs.get("depth") is not None def test_list_recursion_respects_depth_limit(self) -> None: """Deeply nested lists stop at max depth without RecursionError."""