From 8828262ebfafea1596f858cd7a21e51472c18f35 Mon Sep 17 00:00:00 2001 From: Divyam Talwar Date: Mon, 24 Aug 2026 00:09:21 +0530 Subject: [PATCH 1/3] docs: clarify project provenance and maintainer metadata --- NOTICE | 11 +++++++++++ README.md | 7 ++++++- pyproject.toml | 9 ++++++--- tests/ci/test_metadata_contracts.py | 22 ++++++++++++++++++++++ 4 files changed, 45 insertions(+), 4 deletions(-) create mode 100644 NOTICE create mode 100644 tests/ci/test_metadata_contracts.py diff --git a/NOTICE b/NOTICE new file mode 100644 index 0000000..bba5aa9 --- /dev/null +++ b/NOTICE @@ -0,0 +1,11 @@ +Structorium +Copyright (c) 2025 Peter O'Malley + +This distribution preserves the original MIT license notice and Peter +O'Malley's authorship metadata. The repository at +https://github.com/DivyamTalwar/Structorium is currently maintained by +Divyam Talwar and contains subsequent maintenance and development work. + +This notice records the metadata present in the project's initial public +scaffold. It does not make claims about any unavailable upstream repository +or transfer copyright ownership. See LICENSE for the complete license terms. diff --git a/README.md b/README.md index 1ddd742..3da23ae 100644 --- a/README.md +++ b/README.md @@ -5,6 +5,12 @@

Structorium

Architecture. Automatically Enforced.

+

+The original MIT license and Peter O'Malley's authorship are preserved. This +repository is maintained by Divyam Talwar. See NOTICE +for the precise attribution statement. +

+

Python Languages @@ -2172,4 +2178,3 @@ copies or substantial portions of the Software.

↑ Back to top

- diff --git a/pyproject.toml b/pyproject.toml index 8e01813..c906dc4 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -12,6 +12,9 @@ license = "MIT" authors = [ {name = "Peter O'Malley", email = "pom@banodoco.ai"}, ] +maintainers = [ + {name = "Divyam Talwar"}, +] keywords = ["code-quality", "technical-debt", "linter", "static-analysis", "refactoring"] classifiers = [ "Development Status :: 4 - Beta", @@ -29,9 +32,9 @@ classifiers = [ dependencies = [] [project.urls] -Homepage = "https://github.com/peteromallet/structorium" -Repository = "https://github.com/peteromallet/structorium" -Issues = "https://github.com/peteromallet/structorium/issues" +Homepage = "https://github.com/DivyamTalwar/Structorium" +Repository = "https://github.com/DivyamTalwar/Structorium" +Issues = "https://github.com/DivyamTalwar/Structorium/issues" [project.optional-dependencies] treesitter = ["tree-sitter-language-pack>=0.3"] diff --git a/tests/ci/test_metadata_contracts.py b/tests/ci/test_metadata_contracts.py new file mode 100644 index 0000000..9262651 --- /dev/null +++ b/tests/ci/test_metadata_contracts.py @@ -0,0 +1,22 @@ +from pathlib import Path +import tomllib + + +ROOT = Path(__file__).resolve().parents[2] + + +def test_package_metadata_preserves_author_and_names_current_maintainer() -> None: + metadata = tomllib.loads((ROOT / "pyproject.toml").read_text())["project"] + + assert metadata["authors"][0]["name"] == "Peter O'Malley" + assert metadata["maintainers"][0]["name"] == "Divyam Talwar" + assert metadata["urls"]["Repository"].endswith("/DivyamTalwar/Structorium") + + +def test_notice_and_license_preserve_original_attribution() -> None: + license_text = (ROOT / "LICENSE").read_text() + notice_text = (ROOT / "NOTICE").read_text() + + assert "Copyright (c) 2025 Peter O'Malley" in license_text + assert "Copyright (c) 2025 Peter O'Malley" in notice_text + assert "does not make claims" in notice_text From 95ecbafd81b378ca66cdd4e8b39289ad28fbf946 Mon Sep 17 00:00:00 2001 From: Divyam Talwar Date: Mon, 24 Aug 2026 00:11:09 +0530 Subject: [PATCH 2/3] ci: gate dependency review on repository support --- .github/workflows/security.yml | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/.github/workflows/security.yml b/.github/workflows/security.yml index 44bca09..a449cdf 100644 --- a/.github/workflows/security.yml +++ b/.github/workflows/security.yml @@ -46,12 +46,12 @@ jobs: GITLEAKS_ARGS: --no-git dependency-review: + # The action requires GitHub's Dependency Graph repository setting. Keep the + # job opt-in so repositories without that setting do not report a false-red + # security workflow; pip-audit remains mandatory below. if: > github.event_name == 'pull_request' && - ( - github.event.repository.private == false || - vars.ENABLE_PRIVATE_DEPENDENCY_REVIEW == 'true' - ) + vars.ENABLE_DEPENDENCY_REVIEW == 'true' runs-on: ubuntu-latest timeout-minutes: 10 permissions: From 54bbc8f33c39274158b857a344219754ba10a606 Mon Sep 17 00:00:00 2001 From: Divyam Talwar Date: Mon, 24 Aug 2026 00:32:31 +0530 Subject: [PATCH 3/3] test(review): remove prompt ordering flake --- tests/review/test_review_commands.py | 23 +++++++++++++---------- 1 file changed, 13 insertions(+), 10 deletions(-) diff --git a/tests/review/test_review_commands.py b/tests/review/test_review_commands.py index 823fcfe..e41be4e 100644 --- a/tests/review/test_review_commands.py +++ b/tests/review/test_review_commands.py @@ -775,17 +775,20 @@ def test_do_run_batches_dry_run_generates_packet_and_prompts( assert len(packet_files) == 1 blind_packet = tmp_path / ".structorium" / "review_packet_blind.json" assert blind_packet.exists() - prompt_files = list(runs_dir.glob("*/prompts/batch-*.md")) + prompt_files = sorted(runs_dir.glob("*/prompts/batch-*.md")) assert len(prompt_files) == 2 - prompt_text = prompt_files[0].read_text() - assert "Blind packet:" in prompt_text - assert str(blind_packet) in prompt_text - assert "Previously flagged issues" in prompt_text - assert "Legacy surface remains primary" in prompt_text - assert "Mechanical concern signals" in prompt_text - assert "foo.ts mixes orchestration and transformation" in prompt_text - assert "Should orchestration move to a dedicated coordinator?" in prompt_text - assert "Workflow integrity checks" in prompt_text + prompt_texts = [prompt_file.read_text() for prompt_file in prompt_files] + assert all("Blind packet:" in prompt_text for prompt_text in prompt_texts) + assert all(str(blind_packet) in prompt_text for prompt_text in prompt_texts) + assert any( + "Previously flagged issues" in prompt_text for prompt_text in prompt_texts + ) + joined_prompts = "\n".join(prompt_texts) + assert "Legacy surface remains primary" in joined_prompts + assert "Mechanical concern signals" in joined_prompts + assert "foo.ts mixes orchestration and transformation" in joined_prompts + assert "Should orchestration move to a dedicated coordinator?" in joined_prompts + assert "Workflow integrity checks" in joined_prompts run_logs = sorted(runs_dir.glob("*/run.log")) assert len(run_logs) == 1 run_log_text = run_logs[0].read_text()