diff --git a/examples/basic_cycle.py b/examples/basic_cycle.py index 16f3d8e..3c54b17 100644 --- a/examples/basic_cycle.py +++ b/examples/basic_cycle.py @@ -1,3 +1,6 @@ +# SPDX-FileCopyrightText: 2026 Сацук Артём Венедиктович (Satsuk Artem) +# SPDX-License-Identifier: Apache-2.0 + from __future__ import annotations import asyncio diff --git a/pyproject.toml b/pyproject.toml index b26145a..04c094f 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -7,10 +7,14 @@ name = "spiral-autonomy-kernel" version = "1.0.0" description = "Persistent, policy-bounded self-evolution runtime for LLM-based systems" readme = "README.md" +license = { file = "LICENSE" } requires-python = ">=3.10" dependencies = [ "httpx>=0.27,<1", ] +classifiers = [ + "License :: OSI Approved :: Apache Software License", +] [project.optional-dependencies] dev = [ diff --git a/scripts/build_proof_pack.py b/scripts/build_proof_pack.py index 21b0a90..cbe7e70 100644 --- a/scripts/build_proof_pack.py +++ b/scripts/build_proof_pack.py @@ -1,3 +1,6 @@ +# SPDX-FileCopyrightText: 2026 Сацук Артём Венедиктович (Satsuk Artem) +# SPDX-License-Identifier: Apache-2.0 + from __future__ import annotations import json @@ -13,16 +16,30 @@ RUNTIME_DIR = ROOT / '.sif' -def _run(command: list[str]) -> subprocess.CompletedProcess[str]: +def _run(command: list[str], retries: int = 0) -> subprocess.CompletedProcess[str]: env = dict(os.environ) env['PYTHONPATH'] = 'src' - return subprocess.run( - command, - cwd=ROOT, - text=True, - capture_output=True, - check=True, - env=env, + attempts = retries + 1 + last_result: subprocess.CompletedProcess[str] | None = None + for _ in range(attempts): + result = subprocess.run( + command, + cwd=ROOT, + text=True, + capture_output=True, + check=False, + env=env, + ) + if result.returncode == 0: + return result + last_result = result + + assert last_result is not None + command_str = " ".join(command) + raise RuntimeError( + f"Command failed after {attempts} attempt(s): {command_str}\n" + f"stdout:\n{last_result.stdout}\n" + f"stderr:\n{last_result.stderr}" ) @@ -33,7 +50,7 @@ def main() -> None: try: compile_result = _run([sys.executable, '-m', 'compileall', '-q', 'src']) - test_result = _run([sys.executable, '-m', 'pytest', '-q']) + test_result = _run([sys.executable, '-m', 'pytest', '-q'], retries=1) smoke_result = _run([ sys.executable, '-m', diff --git a/scripts/check.sh b/scripts/check.sh index e3ba5e3..2793ce0 100755 --- a/scripts/check.sh +++ b/scripts/check.sh @@ -1,6 +1,10 @@ #!/usr/bin/env bash +# SPDX-FileCopyrightText: 2026 Сацук Артём Венедиктович (Satsuk Artem) +# SPDX-License-Identifier: Apache-2.0 + set -euo pipefail +python scripts/check_license_headers.py pytest -q python -m compileall -q src PYTHONPATH=src python -m sif.cli --cycles 1 --json >/dev/null diff --git a/scripts/check_license_headers.py b/scripts/check_license_headers.py new file mode 100644 index 0000000..68b0f48 --- /dev/null +++ b/scripts/check_license_headers.py @@ -0,0 +1,38 @@ +# SPDX-FileCopyrightText: 2026 Сацук Артём Венедиктович (Satsuk Artem) +# SPDX-License-Identifier: Apache-2.0 + +from __future__ import annotations + +from pathlib import Path + +ROOTS = ("src", "tests", "scripts", "examples") +SUFFIXES = {".py", ".sh"} +COPYRIGHT_TAG = "SPDX-FileCopyrightText:" +LICENSE_TAG = "SPDX-License-Identifier: Apache-2.0" + + +def main() -> int: + missing: list[str] = [] + + for root in ROOTS: + for path in sorted(Path(root).rglob("*")): + if path.suffix not in SUFFIXES: + continue + header = path.read_text().splitlines()[:8] + has_copyright = any(COPYRIGHT_TAG in line for line in header) + has_license = any(LICENSE_TAG in line for line in header) + if not (has_copyright and has_license): + missing.append(str(path)) + + if missing: + print("Missing SPDX header tags in:") + for path in missing: + print(f" - {path}") + return 1 + + print("All checked code files include SPDX copyright and license tags.") + return 0 + + +if __name__ == "__main__": + raise SystemExit(main()) diff --git a/scripts/run_demo.sh b/scripts/run_demo.sh index c46ebc5..c0e5f8a 100755 --- a/scripts/run_demo.sh +++ b/scripts/run_demo.sh @@ -1,4 +1,7 @@ #!/usr/bin/env bash +# SPDX-FileCopyrightText: 2026 Сацук Артём Венедиктович (Satsuk Artem) +# SPDX-License-Identifier: Apache-2.0 + set -euo pipefail PYTHONPATH=src python -m sif.cli --cycles 1 --json diff --git a/src/__init__.py b/src/__init__.py index 84a2849..40728b8 100644 --- a/src/__init__.py +++ b/src/__init__.py @@ -1,3 +1,6 @@ +# SPDX-FileCopyrightText: 2026 Сацук Артём Венедиктович (Satsuk Artem) +# SPDX-License-Identifier: Apache-2.0 + """Spiral Autonomy Kernel source tree.""" __all__: list[str] = [] diff --git a/src/aiosqlite.py b/src/aiosqlite.py index 704dca7..2185666 100644 --- a/src/aiosqlite.py +++ b/src/aiosqlite.py @@ -1,3 +1,6 @@ +# SPDX-FileCopyrightText: 2026 Сацук Артём Венедиктович (Satsuk Artem) +# SPDX-License-Identifier: Apache-2.0 + from __future__ import annotations """Lightweight local subset of the aiosqlite API used by this repository. @@ -22,11 +25,17 @@ class Cursor: - def __init__(self, connection: 'Connection', sql: str, parameters: Iterable[Any] | None = None) -> None: + def __init__( + self, + connection: 'Connection', + sql: str, + parameters: Iterable[Any] | None = None, + prefetched_rows: list[Any] | None = None, + ) -> None: self._connection = connection self._sql = sql self._parameters = tuple(parameters or ()) - self._rows: list[Any] | None = None + self._rows: list[Any] | None = prefetched_rows self._index = 0 async def _ensure_rows(self) -> list[Any]: @@ -100,7 +109,14 @@ async def __aexit__(self, exc_type, exc, tb) -> None: async def execute(self, sql: str, parameters: Iterable[Any] | None = None) -> Cursor: await self._ensure_open() - return Cursor(self, sql, parameters) + async with self._lock: + def _run() -> list[Any]: + assert self._conn is not None + sqlite_cursor = self._conn.execute(sql, tuple(parameters or ())) + return list(sqlite_cursor.fetchall()) + + rows = await asyncio.to_thread(_run) + return Cursor(self, sql, parameters, prefetched_rows=rows) async def executemany(self, sql: str, seq_of_parameters: Iterable[Iterable[Any]]) -> None: await self._ensure_open() diff --git a/src/cli.py b/src/cli.py index c777c3d..2119840 100644 --- a/src/cli.py +++ b/src/cli.py @@ -1,3 +1,6 @@ +# SPDX-FileCopyrightText: 2026 Сацук Артём Венедиктович (Satsuk Artem) +# SPDX-License-Identifier: Apache-2.0 + from sif.cli import main __all__ = ['main'] diff --git a/src/components/__init__.py b/src/components/__init__.py index 284a076..340829c 100644 --- a/src/components/__init__.py +++ b/src/components/__init__.py @@ -1 +1,4 @@ +# SPDX-FileCopyrightText: 2026 Сацук Артём Венедиктович (Satsuk Artem) +# SPDX-License-Identifier: Apache-2.0 + """Component definitions for Spiral Autonomy Kernel.""" diff --git a/src/components/adaptation.py b/src/components/adaptation.py index 8558beb..9984556 100644 --- a/src/components/adaptation.py +++ b/src/components/adaptation.py @@ -1,3 +1,6 @@ +# SPDX-FileCopyrightText: 2026 Сацук Артём Венедиктович (Satsuk Artem) +# SPDX-License-Identifier: Apache-2.0 + from dataclasses import dataclass from typing import Any, Dict, List diff --git a/src/components/autonomy_scope.py b/src/components/autonomy_scope.py index a52f912..87326cc 100644 --- a/src/components/autonomy_scope.py +++ b/src/components/autonomy_scope.py @@ -1,3 +1,6 @@ +# SPDX-FileCopyrightText: 2026 Сацук Артём Венедиктович (Satsuk Artem) +# SPDX-License-Identifier: Apache-2.0 + from dataclasses import dataclass import json from typing import Any, Dict, List diff --git a/src/components/base.py b/src/components/base.py index 8558190..7cce9c5 100644 --- a/src/components/base.py +++ b/src/components/base.py @@ -1,3 +1,6 @@ +# SPDX-FileCopyrightText: 2026 Сацук Артём Венедиктович (Satsuk Artem) +# SPDX-License-Identifier: Apache-2.0 + from dataclasses import dataclass, field from typing import Any, Dict, List diff --git a/src/components/code_mutation.py b/src/components/code_mutation.py index 1178edf..fea02e8 100644 --- a/src/components/code_mutation.py +++ b/src/components/code_mutation.py @@ -1,3 +1,6 @@ +# SPDX-FileCopyrightText: 2026 Сацук Артём Венедиктович (Satsuk Artem) +# SPDX-License-Identifier: Apache-2.0 + from dataclasses import dataclass from pathlib import Path from typing import Any, Dict, List diff --git a/src/components/constraint_explorer.py b/src/components/constraint_explorer.py index de643a2..af627ef 100644 --- a/src/components/constraint_explorer.py +++ b/src/components/constraint_explorer.py @@ -1,3 +1,6 @@ +# SPDX-FileCopyrightText: 2026 Сацук Артём Венедиктович (Satsuk Artem) +# SPDX-License-Identifier: Apache-2.0 + from dataclasses import dataclass import json from typing import Any, Dict, List diff --git a/src/components/generated/__init__.py b/src/components/generated/__init__.py index bddf054..9721a9e 100644 --- a/src/components/generated/__init__.py +++ b/src/components/generated/__init__.py @@ -1 +1,4 @@ +# SPDX-FileCopyrightText: 2026 Сацук Артём Венедиктович (Satsuk Artem) +# SPDX-License-Identifier: Apache-2.0 + """Generated components package.""" diff --git a/src/components/generated/auto_component.py b/src/components/generated/auto_component.py index a99223e..fd237bf 100644 --- a/src/components/generated/auto_component.py +++ b/src/components/generated/auto_component.py @@ -1,3 +1,6 @@ +# SPDX-FileCopyrightText: 2026 Сацук Артём Венедиктович (Satsuk Artem) +# SPDX-License-Identifier: Apache-2.0 + from dataclasses import dataclass from typing import Any, Dict, List diff --git a/src/components/governance.py b/src/components/governance.py index 61e10fb..4b46764 100644 --- a/src/components/governance.py +++ b/src/components/governance.py @@ -1,3 +1,6 @@ +# SPDX-FileCopyrightText: 2026 Сацук Артём Венедиктович (Satsuk Artem) +# SPDX-License-Identifier: Apache-2.0 + from dataclasses import dataclass from typing import Any, Dict, List diff --git a/src/components/improvement_protocol.py b/src/components/improvement_protocol.py index 4b0941f..6bcd25c 100644 --- a/src/components/improvement_protocol.py +++ b/src/components/improvement_protocol.py @@ -1,3 +1,6 @@ +# SPDX-FileCopyrightText: 2026 Сацук Артём Венедиктович (Satsuk Artem) +# SPDX-License-Identifier: Apache-2.0 + from dataclasses import dataclass from typing import Any, Dict, List diff --git a/src/components/mission_alignment.py b/src/components/mission_alignment.py index 5918927..3d937e2 100644 --- a/src/components/mission_alignment.py +++ b/src/components/mission_alignment.py @@ -1,3 +1,6 @@ +# SPDX-FileCopyrightText: 2026 Сацук Артём Венедиктович (Satsuk Artem) +# SPDX-License-Identifier: Apache-2.0 + from dataclasses import dataclass import json from typing import Any, Dict, List diff --git a/src/components/registry.py b/src/components/registry.py index 11955ef..8e1a2d9 100644 --- a/src/components/registry.py +++ b/src/components/registry.py @@ -1,3 +1,6 @@ +# SPDX-FileCopyrightText: 2026 Сацук Артём Венедиктович (Satsuk Artem) +# SPDX-License-Identifier: Apache-2.0 + import logging from dataclasses import dataclass, field from importlib import import_module diff --git a/src/core/__init__.py b/src/core/__init__.py index b73782e..4904863 100644 --- a/src/core/__init__.py +++ b/src/core/__init__.py @@ -1 +1,4 @@ +# SPDX-FileCopyrightText: 2026 Сацук Артём Венедиктович (Satsuk Artem) +# SPDX-License-Identifier: Apache-2.0 + """Core modules for Spiral Autonomy Kernel.""" diff --git a/src/core/adaptive_rules.py b/src/core/adaptive_rules.py index 31b31a5..8a5aabc 100644 --- a/src/core/adaptive_rules.py +++ b/src/core/adaptive_rules.py @@ -1,3 +1,6 @@ +# SPDX-FileCopyrightText: 2026 Сацук Артём Венедиктович (Satsuk Artem) +# SPDX-License-Identifier: Apache-2.0 + from dataclasses import dataclass, field import json from typing import Any, Dict, List, Tuple diff --git a/src/core/async_cpu.py b/src/core/async_cpu.py index a353b19..3b6e861 100644 --- a/src/core/async_cpu.py +++ b/src/core/async_cpu.py @@ -1,3 +1,6 @@ +# SPDX-FileCopyrightText: 2026 Сацук Артём Венедиктович (Satsuk Artem) +# SPDX-License-Identifier: Apache-2.0 + from __future__ import annotations import asyncio diff --git a/src/core/async_fs.py b/src/core/async_fs.py index cb06d97..54b924b 100644 --- a/src/core/async_fs.py +++ b/src/core/async_fs.py @@ -1,3 +1,6 @@ +# SPDX-FileCopyrightText: 2026 Сацук Артём Венедиктович (Satsuk Artem) +# SPDX-License-Identifier: Apache-2.0 + from __future__ import annotations import asyncio diff --git a/src/core/autonomous_evolution.py b/src/core/autonomous_evolution.py index 1e51e1f..0fd9947 100644 --- a/src/core/autonomous_evolution.py +++ b/src/core/autonomous_evolution.py @@ -1,3 +1,6 @@ +# SPDX-FileCopyrightText: 2026 Сацук Артём Венедиктович (Satsuk Artem) +# SPDX-License-Identifier: Apache-2.0 + from dataclasses import dataclass import json from typing import Any, Dict, List diff --git a/src/core/autonomy.py b/src/core/autonomy.py index 85b3844..3f8c5ff 100644 --- a/src/core/autonomy.py +++ b/src/core/autonomy.py @@ -1,3 +1,6 @@ +# SPDX-FileCopyrightText: 2026 Сацук Артём Венедиктович (Satsuk Artem) +# SPDX-License-Identifier: Apache-2.0 + from __future__ import annotations from typing import Any, Dict, List diff --git a/src/core/autonomy_charter.py b/src/core/autonomy_charter.py index e314618..7fc1190 100644 --- a/src/core/autonomy_charter.py +++ b/src/core/autonomy_charter.py @@ -1,3 +1,6 @@ +# SPDX-FileCopyrightText: 2026 Сацук Артём Венедиктович (Satsuk Artem) +# SPDX-License-Identifier: Apache-2.0 + from __future__ import annotations from typing import Any, Dict, List diff --git a/src/core/bandit.py b/src/core/bandit.py index 4532e00..7fe917a 100644 --- a/src/core/bandit.py +++ b/src/core/bandit.py @@ -1,3 +1,6 @@ +# SPDX-FileCopyrightText: 2026 Сацук Артём Венедиктович (Satsuk Artem) +# SPDX-License-Identifier: Apache-2.0 + from __future__ import annotations from sif.core.time_utils import utc_now_iso diff --git a/src/core/benchmarks.py b/src/core/benchmarks.py index 82325cb..a1ad77e 100644 --- a/src/core/benchmarks.py +++ b/src/core/benchmarks.py @@ -1,3 +1,6 @@ +# SPDX-FileCopyrightText: 2026 Сацук Артём Венедиктович (Satsuk Artem) +# SPDX-License-Identifier: Apache-2.0 + from __future__ import annotations import time diff --git a/src/core/cache_store.py b/src/core/cache_store.py index 67444c4..767858b 100644 --- a/src/core/cache_store.py +++ b/src/core/cache_store.py @@ -1,3 +1,6 @@ +# SPDX-FileCopyrightText: 2026 Сацук Артём Венедиктович (Satsuk Artem) +# SPDX-License-Identifier: Apache-2.0 + from __future__ import annotations import asyncio @@ -241,7 +244,8 @@ async def _close_db(self) -> None: async def _load_cache_from_db(self) -> Dict[str, Any]: db = self._require_db() payload: Dict[str, Any] = {} - async with db.execute("SELECT cache_key, value_json FROM cache_entries") as cursor: + cursor = await db.execute("SELECT cache_key, value_json FROM cache_entries") + async with cursor: async for row in cursor: try: payload[row["cache_key"]] = json.loads(row["value_json"]) diff --git a/src/core/candidates.py b/src/core/candidates.py index 6aab7d0..7e33b8e 100644 --- a/src/core/candidates.py +++ b/src/core/candidates.py @@ -1,3 +1,6 @@ +# SPDX-FileCopyrightText: 2026 Сацук Артём Венедиктович (Satsuk Artem) +# SPDX-License-Identifier: Apache-2.0 + from __future__ import annotations from dataclasses import dataclass, field diff --git a/src/core/code_intelligence.py b/src/core/code_intelligence.py index 1cc1762..bab5583 100644 --- a/src/core/code_intelligence.py +++ b/src/core/code_intelligence.py @@ -1,3 +1,6 @@ +# SPDX-FileCopyrightText: 2026 Сацук Артём Венедиктович (Satsuk Artem) +# SPDX-License-Identifier: Apache-2.0 + from dataclasses import dataclass import ast import asyncio diff --git a/src/core/evaluator.py b/src/core/evaluator.py index 12b5b4c..105ab0e 100644 --- a/src/core/evaluator.py +++ b/src/core/evaluator.py @@ -1,3 +1,6 @@ +# SPDX-FileCopyrightText: 2026 Сацук Артём Венедиктович (Satsuk Artem) +# SPDX-License-Identifier: Apache-2.0 + from __future__ import annotations import asyncio diff --git a/src/core/events.py b/src/core/events.py index dced8be..4711d27 100644 --- a/src/core/events.py +++ b/src/core/events.py @@ -1,3 +1,6 @@ +# SPDX-FileCopyrightText: 2026 Сацук Артём Венедиктович (Satsuk Artem) +# SPDX-License-Identifier: Apache-2.0 + from __future__ import annotations import asyncio diff --git a/src/core/evolution.py b/src/core/evolution.py index 4d30541..f096196 100644 --- a/src/core/evolution.py +++ b/src/core/evolution.py @@ -1,3 +1,6 @@ +# SPDX-FileCopyrightText: 2026 Сацук Артём Венедиктович (Satsuk Artem) +# SPDX-License-Identifier: Apache-2.0 + from dataclasses import dataclass import json from pathlib import Path diff --git a/src/core/experiment_manager.py b/src/core/experiment_manager.py index 5b16235..2ca231a 100644 --- a/src/core/experiment_manager.py +++ b/src/core/experiment_manager.py @@ -1,3 +1,6 @@ +# SPDX-FileCopyrightText: 2026 Сацук Артём Венедиктович (Satsuk Artem) +# SPDX-License-Identifier: Apache-2.0 + from __future__ import annotations import asyncio diff --git a/src/core/impact_ledger.py b/src/core/impact_ledger.py index d7772f1..9f735b9 100644 --- a/src/core/impact_ledger.py +++ b/src/core/impact_ledger.py @@ -1,3 +1,6 @@ +# SPDX-FileCopyrightText: 2026 Сацук Артём Венедиктович (Satsuk Artem) +# SPDX-License-Identifier: Apache-2.0 + from __future__ import annotations from dataclasses import dataclass diff --git a/src/core/improvement_protocol.py b/src/core/improvement_protocol.py index 5be6957..157b819 100644 --- a/src/core/improvement_protocol.py +++ b/src/core/improvement_protocol.py @@ -1,3 +1,6 @@ +# SPDX-FileCopyrightText: 2026 Сацук Артём Венедиктович (Satsuk Artem) +# SPDX-License-Identifier: Apache-2.0 + from dataclasses import dataclass from typing import List diff --git a/src/core/intent_graph.py b/src/core/intent_graph.py index 0b6f2e9..fbe3abf 100644 --- a/src/core/intent_graph.py +++ b/src/core/intent_graph.py @@ -1,3 +1,6 @@ +# SPDX-FileCopyrightText: 2026 Сацук Артём Венедиктович (Satsuk Artem) +# SPDX-License-Identifier: Apache-2.0 + from __future__ import annotations from dataclasses import dataclass diff --git a/src/core/kernel.py b/src/core/kernel.py index fd36a11..3b9d60e 100644 --- a/src/core/kernel.py +++ b/src/core/kernel.py @@ -1,3 +1,6 @@ +# SPDX-FileCopyrightText: 2026 Сацук Артём Венедиктович (Satsuk Artem) +# SPDX-License-Identifier: Apache-2.0 + from dataclasses import dataclass, field from typing import Any, Dict, List diff --git a/src/core/llm.py b/src/core/llm.py index 74661f6..fa7095b 100644 --- a/src/core/llm.py +++ b/src/core/llm.py @@ -1,3 +1,6 @@ +# SPDX-FileCopyrightText: 2026 Сацук Артём Венедиктович (Satsuk Artem) +# SPDX-License-Identifier: Apache-2.0 + import asyncio from dataclasses import dataclass, field import json diff --git a/src/core/metrics.py b/src/core/metrics.py index 13512e4..0fff562 100644 --- a/src/core/metrics.py +++ b/src/core/metrics.py @@ -1,3 +1,6 @@ +# SPDX-FileCopyrightText: 2026 Сацук Артём Венедиктович (Satsuk Artem) +# SPDX-License-Identifier: Apache-2.0 + from __future__ import annotations from dataclasses import dataclass diff --git a/src/core/openai_client.py b/src/core/openai_client.py index a1ec72a..5c9c6de 100644 --- a/src/core/openai_client.py +++ b/src/core/openai_client.py @@ -1,3 +1,6 @@ +# SPDX-FileCopyrightText: 2026 Сацук Артём Венедиктович (Satsuk Artem) +# SPDX-License-Identifier: Apache-2.0 + import asyncio import json import os diff --git a/src/core/policy.py b/src/core/policy.py index 2316a73..1d434f3 100644 --- a/src/core/policy.py +++ b/src/core/policy.py @@ -1,3 +1,6 @@ +# SPDX-FileCopyrightText: 2026 Сацук Артём Венедиктович (Satsuk Artem) +# SPDX-License-Identifier: Apache-2.0 + from __future__ import annotations from pathlib import Path diff --git a/src/core/reflection.py b/src/core/reflection.py index 124ca51..22be4c4 100644 --- a/src/core/reflection.py +++ b/src/core/reflection.py @@ -1,3 +1,6 @@ +# SPDX-FileCopyrightText: 2026 Сацук Артём Венедиктович (Satsuk Artem) +# SPDX-License-Identifier: Apache-2.0 + from dataclasses import dataclass, field from datetime import datetime from typing import Any, Dict, List diff --git a/src/core/reports.py b/src/core/reports.py index 810ceee..6b611f6 100644 --- a/src/core/reports.py +++ b/src/core/reports.py @@ -1,3 +1,6 @@ +# SPDX-FileCopyrightText: 2026 Сацук Артём Венедиктович (Satsuk Artem) +# SPDX-License-Identifier: Apache-2.0 + from __future__ import annotations from typing import Any, Dict diff --git a/src/core/selector.py b/src/core/selector.py index 71fa3f5..3c35f3d 100644 --- a/src/core/selector.py +++ b/src/core/selector.py @@ -1,3 +1,6 @@ +# SPDX-FileCopyrightText: 2026 Сацук Артём Венедиктович (Satsuk Artem) +# SPDX-License-Identifier: Apache-2.0 + from __future__ import annotations from typing import Any, Mapping, Tuple diff --git a/src/core/spiral_engine.py b/src/core/spiral_engine.py index 108db0e..6840990 100644 --- a/src/core/spiral_engine.py +++ b/src/core/spiral_engine.py @@ -1,3 +1,6 @@ +# SPDX-FileCopyrightText: 2026 Сацук Артём Венедиктович (Satsuk Artem) +# SPDX-License-Identifier: Apache-2.0 + import ast import asyncio from dataclasses import dataclass, field diff --git a/src/core/state_model.py b/src/core/state_model.py index d662721..1fb077c 100644 --- a/src/core/state_model.py +++ b/src/core/state_model.py @@ -1,3 +1,6 @@ +# SPDX-FileCopyrightText: 2026 Сацук Артём Венедиктович (Satsuk Artem) +# SPDX-License-Identifier: Apache-2.0 + from __future__ import annotations from dataclasses import dataclass diff --git a/src/core/state_store.py b/src/core/state_store.py index d258bbc..646659a 100644 --- a/src/core/state_store.py +++ b/src/core/state_store.py @@ -1,3 +1,6 @@ +# SPDX-FileCopyrightText: 2026 Сацук Артём Венедиктович (Satsuk Artem) +# SPDX-License-Identifier: Apache-2.0 + import asyncio import json import os diff --git a/src/core/static_analysis.py b/src/core/static_analysis.py index d92984e..bc3b035 100644 --- a/src/core/static_analysis.py +++ b/src/core/static_analysis.py @@ -1,3 +1,6 @@ +# SPDX-FileCopyrightText: 2026 Сацук Артём Венедиктович (Satsuk Artem) +# SPDX-License-Identifier: Apache-2.0 + from __future__ import annotations import ast diff --git a/src/core/strategy_loader.py b/src/core/strategy_loader.py index 8dec7e5..6c68e45 100644 --- a/src/core/strategy_loader.py +++ b/src/core/strategy_loader.py @@ -1,3 +1,6 @@ +# SPDX-FileCopyrightText: 2026 Сацук Артём Венедиктович (Satsuk Artem) +# SPDX-License-Identifier: Apache-2.0 + from __future__ import annotations from importlib import import_module diff --git a/src/core/time_utils.py b/src/core/time_utils.py index fbd9f9e..d35ddd0 100644 --- a/src/core/time_utils.py +++ b/src/core/time_utils.py @@ -1,3 +1,6 @@ +# SPDX-FileCopyrightText: 2026 Сацук Артём Венедиктович (Satsuk Artem) +# SPDX-License-Identifier: Apache-2.0 + from __future__ import annotations from datetime import UTC, datetime diff --git a/src/core/tools/__init__.py b/src/core/tools/__init__.py index f8c6d13..ed7a3a4 100644 --- a/src/core/tools/__init__.py +++ b/src/core/tools/__init__.py @@ -1 +1,4 @@ +# SPDX-FileCopyrightText: 2026 Сацук Артём Венедиктович (Satsuk Artem) +# SPDX-License-Identifier: Apache-2.0 + """Tool sandbox interfaces and registries.""" diff --git a/src/core/tools/base.py b/src/core/tools/base.py index d77acd4..7d467ed 100644 --- a/src/core/tools/base.py +++ b/src/core/tools/base.py @@ -1,3 +1,6 @@ +# SPDX-FileCopyrightText: 2026 Сацук Артём Венедиктович (Satsuk Artem) +# SPDX-License-Identifier: Apache-2.0 + from __future__ import annotations import json diff --git a/src/core/versioning.py b/src/core/versioning.py index 1dcfdb1..9447c36 100644 --- a/src/core/versioning.py +++ b/src/core/versioning.py @@ -1,3 +1,6 @@ +# SPDX-FileCopyrightText: 2026 Сацук Артём Венедиктович (Satsuk Artem) +# SPDX-License-Identifier: Apache-2.0 + from __future__ import annotations import asyncio diff --git a/src/core/workspace.py b/src/core/workspace.py index bf7ffd1..13f0210 100644 --- a/src/core/workspace.py +++ b/src/core/workspace.py @@ -1,3 +1,6 @@ +# SPDX-FileCopyrightText: 2026 Сацук Артём Венедиктович (Satsuk Artem) +# SPDX-License-Identifier: Apache-2.0 + from __future__ import annotations import asyncio diff --git a/src/evolvable/__init__.py b/src/evolvable/__init__.py index 193cdd3..61fd636 100644 --- a/src/evolvable/__init__.py +++ b/src/evolvable/__init__.py @@ -1 +1,4 @@ +# SPDX-FileCopyrightText: 2026 Сацук Артём Венедиктович (Satsuk Artem) +# SPDX-License-Identifier: Apache-2.0 + """Evolvable extensions for Spiral Autonomy Kernel.""" diff --git a/src/evolvable/curriculum.py b/src/evolvable/curriculum.py index 9bb8d2b..e28473a 100644 --- a/src/evolvable/curriculum.py +++ b/src/evolvable/curriculum.py @@ -1,3 +1,6 @@ +# SPDX-FileCopyrightText: 2026 Сацук Артём Венедиктович (Satsuk Artem) +# SPDX-License-Identifier: Apache-2.0 + from __future__ import annotations from typing import Any, Dict, List diff --git a/src/evolvable/skills/__init__.py b/src/evolvable/skills/__init__.py index b0fbad6..c424dd9 100644 --- a/src/evolvable/skills/__init__.py +++ b/src/evolvable/skills/__init__.py @@ -1 +1,4 @@ +# SPDX-FileCopyrightText: 2026 Сацук Артём Венедиктович (Satsuk Artem) +# SPDX-License-Identifier: Apache-2.0 + """Evolvable skills and skill registry for Spiral Autonomy Kernel.""" diff --git a/src/evolvable/skills/component_adapter.py b/src/evolvable/skills/component_adapter.py index 21c3be7..7ee8f15 100644 --- a/src/evolvable/skills/component_adapter.py +++ b/src/evolvable/skills/component_adapter.py @@ -1,3 +1,6 @@ +# SPDX-FileCopyrightText: 2026 Сацук Артём Венедиктович (Satsuk Artem) +# SPDX-License-Identifier: Apache-2.0 + from __future__ import annotations from dataclasses import dataclass diff --git a/src/evolvable/skills/registry.py b/src/evolvable/skills/registry.py index ac5b44b..83beb39 100644 --- a/src/evolvable/skills/registry.py +++ b/src/evolvable/skills/registry.py @@ -1,3 +1,6 @@ +# SPDX-FileCopyrightText: 2026 Сацук Артём Венедиктович (Satsuk Artem) +# SPDX-License-Identifier: Apache-2.0 + from __future__ import annotations from dataclasses import dataclass, field diff --git a/src/evolvable/skills/skill_base.py b/src/evolvable/skills/skill_base.py index cc7d195..650076d 100644 --- a/src/evolvable/skills/skill_base.py +++ b/src/evolvable/skills/skill_base.py @@ -1,3 +1,6 @@ +# SPDX-FileCopyrightText: 2026 Сацук Артём Венедиктович (Satsuk Artem) +# SPDX-License-Identifier: Apache-2.0 + from __future__ import annotations from dataclasses import dataclass diff --git a/src/evolvable/strategies/__init__.py b/src/evolvable/strategies/__init__.py index 80c6ba1..a4509dc 100644 --- a/src/evolvable/strategies/__init__.py +++ b/src/evolvable/strategies/__init__.py @@ -1 +1,4 @@ +# SPDX-FileCopyrightText: 2026 Сацук Артём Венедиктович (Satsuk Artem) +# SPDX-License-Identifier: Apache-2.0 + """Strategy plugins for evolvable SpiralEngine behavior.""" diff --git a/src/evolvable/strategies/evaluation_strategy.py b/src/evolvable/strategies/evaluation_strategy.py index 863e499..a9fc6e6 100644 --- a/src/evolvable/strategies/evaluation_strategy.py +++ b/src/evolvable/strategies/evaluation_strategy.py @@ -1,3 +1,6 @@ +# SPDX-FileCopyrightText: 2026 Сацук Артём Венедиктович (Satsuk Artem) +# SPDX-License-Identifier: Apache-2.0 + from __future__ import annotations from dataclasses import dataclass diff --git a/src/evolvable/strategies/meta_planner.py b/src/evolvable/strategies/meta_planner.py index 9fad894..a4f96e2 100644 --- a/src/evolvable/strategies/meta_planner.py +++ b/src/evolvable/strategies/meta_planner.py @@ -1,3 +1,6 @@ +# SPDX-FileCopyrightText: 2026 Сацук Артём Венедиктович (Satsuk Artem) +# SPDX-License-Identifier: Apache-2.0 + from __future__ import annotations from dataclasses import dataclass diff --git a/src/evolvable/strategies/plan_strategy.py b/src/evolvable/strategies/plan_strategy.py index 9a16fb5..fdff875 100644 --- a/src/evolvable/strategies/plan_strategy.py +++ b/src/evolvable/strategies/plan_strategy.py @@ -1,3 +1,6 @@ +# SPDX-FileCopyrightText: 2026 Сацук Артём Венедиктович (Satsuk Artem) +# SPDX-License-Identifier: Apache-2.0 + from __future__ import annotations from dataclasses import dataclass diff --git a/src/evolvable/strategies/reflection_strategy.py b/src/evolvable/strategies/reflection_strategy.py index cba86de..fe3b4b0 100644 --- a/src/evolvable/strategies/reflection_strategy.py +++ b/src/evolvable/strategies/reflection_strategy.py @@ -1,3 +1,6 @@ +# SPDX-FileCopyrightText: 2026 Сацук Артём Венедиктович (Satsuk Artem) +# SPDX-License-Identifier: Apache-2.0 + from __future__ import annotations from dataclasses import dataclass diff --git a/src/portalocker.py b/src/portalocker.py index 95f944e..dcf159e 100644 --- a/src/portalocker.py +++ b/src/portalocker.py @@ -1,3 +1,6 @@ +# SPDX-FileCopyrightText: 2026 Сацук Артём Венедиктович (Satsuk Artem) +# SPDX-License-Identifier: Apache-2.0 + from __future__ import annotations """Small compatibility shim used when the external portalocker package is absent. diff --git a/src/sif/__init__.py b/src/sif/__init__.py index 7020713..e5b6892 100644 --- a/src/sif/__init__.py +++ b/src/sif/__init__.py @@ -1,3 +1,6 @@ +# SPDX-FileCopyrightText: 2026 Сацук Артём Венедиктович (Satsuk Artem) +# SPDX-License-Identifier: Apache-2.0 + """Canonical Spiral Autonomy Kernel package namespace. This package maps sibling source packages (``core``, ``components``, diff --git a/src/sif/__main__.py b/src/sif/__main__.py index 940a936..36a0c6a 100644 --- a/src/sif/__main__.py +++ b/src/sif/__main__.py @@ -1,3 +1,6 @@ +# SPDX-FileCopyrightText: 2026 Сацук Артём Венедиктович (Satsuk Artem) +# SPDX-License-Identifier: Apache-2.0 + from sif.cli import main if __name__ == '__main__': diff --git a/src/sif/cli.py b/src/sif/cli.py index a84902a..0b98f16 100644 --- a/src/sif/cli.py +++ b/src/sif/cli.py @@ -1,3 +1,6 @@ +# SPDX-FileCopyrightText: 2026 Сацук Артём Венедиктович (Satsuk Artem) +# SPDX-License-Identifier: Apache-2.0 + from __future__ import annotations import argparse diff --git a/tests/test_cli.py b/tests/test_cli.py index 19f91ab..1f62f6c 100644 --- a/tests/test_cli.py +++ b/tests/test_cli.py @@ -1,3 +1,6 @@ +# SPDX-FileCopyrightText: 2026 Сацук Артём Венедиктович (Satsuk Artem) +# SPDX-License-Identifier: Apache-2.0 + from __future__ import annotations import json diff --git a/tests/test_code_mutation.py b/tests/test_code_mutation.py index 52f4ef3..fd0e837 100644 --- a/tests/test_code_mutation.py +++ b/tests/test_code_mutation.py @@ -1,3 +1,6 @@ +# SPDX-FileCopyrightText: 2026 Сацук Артём Венедиктович (Satsuk Artem) +# SPDX-License-Identifier: Apache-2.0 + from __future__ import annotations from pathlib import Path diff --git a/tests/test_llm.py b/tests/test_llm.py index a31df12..e737638 100644 --- a/tests/test_llm.py +++ b/tests/test_llm.py @@ -1,3 +1,6 @@ +# SPDX-FileCopyrightText: 2026 Сацук Артём Венедиктович (Satsuk Artem) +# SPDX-License-Identifier: Apache-2.0 + from sif.core.kernel import Kernel, KernelState from sif.core.llm import LLMOrchestrator diff --git a/tests/test_policy.py b/tests/test_policy.py index dc507e6..822e646 100644 --- a/tests/test_policy.py +++ b/tests/test_policy.py @@ -1,3 +1,6 @@ +# SPDX-FileCopyrightText: 2026 Сацук Артём Венедиктович (Satsuk Artem) +# SPDX-License-Identifier: Apache-2.0 + from pathlib import Path from sif.core.policy import can_remove_constraint, is_path_allowed diff --git a/tests/test_registry.py b/tests/test_registry.py index c4db071..69a0ef8 100644 --- a/tests/test_registry.py +++ b/tests/test_registry.py @@ -1,3 +1,6 @@ +# SPDX-FileCopyrightText: 2026 Сацук Артём Венедиктович (Satsuk Artem) +# SPDX-License-Identifier: Apache-2.0 + from sif.components.registry import ComponentRegistry diff --git a/tests/test_state_store.py b/tests/test_state_store.py index 602718a..4024fa3 100644 --- a/tests/test_state_store.py +++ b/tests/test_state_store.py @@ -1,3 +1,6 @@ +# SPDX-FileCopyrightText: 2026 Сацук Артём Венедиктович (Satsuk Artem) +# SPDX-License-Identifier: Apache-2.0 + from __future__ import annotations from pathlib import Path diff --git a/tests/test_versioning.py b/tests/test_versioning.py index 5d19d83..d3c93fe 100644 --- a/tests/test_versioning.py +++ b/tests/test_versioning.py @@ -1,3 +1,6 @@ +# SPDX-FileCopyrightText: 2026 Сацук Артём Венедиктович (Satsuk Artem) +# SPDX-License-Identifier: Apache-2.0 + from __future__ import annotations from pathlib import Path