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
2 changes: 1 addition & 1 deletion .github/workflows/agent-governance.yml
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,7 @@ jobs:

- uses: actions/setup-python@v7
with:
python-version: '3.12'
python-version: '3.14.6'

- name: Skill sync check (agent-skills/ -> .agents/skills/, .claude/skills/)
run: python scripts/sync_agent_skills.py --check
Expand Down
4 changes: 2 additions & 2 deletions .github/workflows/ai-services-ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -62,11 +62,11 @@ jobs:

- uses: actions/setup-python@v7
with:
python-version: "3.12"
python-version: "3.14.6"

- name: Install locked dependencies
run: |
pip install uv==0.11.15
pip install uv==0.11.32
uv sync --frozen --extra dev

- name: Lint
Expand Down
4 changes: 2 additions & 2 deletions .github/workflows/frontend-ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -139,12 +139,12 @@ jobs:

- uses: actions/setup-python@v7
with:
python-version: "3.12"
python-version: "3.14.6"

- name: Install dependencies
run: |
npm ci
pip install uv==0.11.15
pip install uv==0.11.32
uv sync --frozen --extra dev --directory ai-services/assistant-service

- name: Build the Aspire application
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/sonar.yml
Original file line number Diff line number Diff line change
Expand Up @@ -146,7 +146,7 @@ jobs:

- uses: actions/setup-python@v7
with:
python-version: '3.12'
python-version: '3.14.6'
cache: 'pip'
cache-dependency-path: ai-services/assistant-service/pyproject.toml

Expand Down
2 changes: 1 addition & 1 deletion .nvmrc
Original file line number Diff line number Diff line change
@@ -1 +1 @@
22.22.2
26.5.1
17 changes: 9 additions & 8 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ monorepo: React frontend, .NET backend microservices, Python AI services.
| --------------------- | ----------------------------- | ----------------------------------------------- |
| `apps/admin-frontend` | Vite + React 19 + TS (strict) | The admin panel UI |
| `backend` | .NET 10 (ASP.NET Core) | Business microservices, one per bounded context |
| `ai-services` | Python 3.12 (FastAPI) | AI/ML services |
| `ai-services` | Python 3.14 (FastAPI) | AI/ML services |
| `infra` | PostgreSQL init scripts | Local database roles and schema grants |

See [docs/MONOREPO.md](docs/MONOREPO.md) for conventions, and each stack's own
Expand All @@ -33,7 +33,7 @@ dotnet run --project backend/services/services-service/ServicesService.Api

# AI services (Python)
cd ai-services/assistant-service
pip install uv==0.11.15
pip install uv==0.11.32
uv sync --frozen --extra dev
uv run uvicorn app.main:app --reload --port 8001

Expand All @@ -45,12 +45,13 @@ dotnet run --project backend/AppHost --launch-profile http

| Stack | Minimum supported (CI-gated) | Recommended local/runtime |
| ------ | ------------------------------------------------------------ | -------------------------------------------- |
| Node | 22.22.1 (`.nvmrc`, `engines.node`) | Same — `nvm use` picks it up automatically |
| npm | 10.9.3 (`packageManager`) | Same |
| Node | 26.5.1 (`.nvmrc`, `engines.node`) | Same — `nvm use` picks it up automatically |
| npm | 12.0.2 (`packageManager`) | Same |
| .NET | 10.0.302 (`backend/global.json`, `rollForward: latestPatch`) | Same |
| Python | 3.12 (`requires-python`, CI) | 3.12 (`.python-version`, `uv.lock`) |
| Python | 3.14.6 (`requires-python`, CI) | 3.14.6 (`.python-version`, `uv.lock`) |
| Docker | 29.5 | Same (container runtime for Aspire Postgres) |
Comment on lines +48 to 52

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

📐 Maintainability & Code Quality | 🟡 Minor | ⚡ Quick win

🧩 Analysis chain

🏁 Script executed:

#!/usr/bin/env bash
set -euo pipefail

rg -n 'requires-python|python-version:|^\| Python|^3\.14' \
  ai-services/assistant-service/pyproject.toml \
  ai-services/assistant-service/.python-version \
  .github/workflows \
  README.md \
  docs

Repository: evertonschuster/Agenza

Length of output: 721


Align the Python minimum with requires-python.

ai-services/assistant-service/pyproject.toml uses requires-python = ">=3.14,<3.15", so the supported package floor is Python 3.14, not Python 3.14.6. Keep the documented minimum at 3.14 and list 3.14.6 only as the CI/local .python-version and uv.lock pin, or raise requires-python to >=3.14.6,<3.15 if older 3.14 patches are not supported.

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@README.md` around lines 48 - 52, Align the README Python requirement with
ai-services/assistant-service/pyproject.toml’s requires-python range: document
3.14 as the minimum, while identifying 3.14.6 only as the CI/local
.python-version and uv.lock pin. Alternatively, raise requires-python to
>=3.14.6,<3.15 if that pin is the intended minimum.

Source: Coding guidelines


Node was previously documented as 22.18 while the frontend toolchain already
required >=22.22 — `.nvmrc`/`engines.node` now enforce the real floor
everywhere (local and CI) instead of letting them silently disagree.
Runtime and package-manager pins are aligned across local development and CI.
TypeScript and Microsoft.OpenApi intentionally remain on their latest
compatible stable lines; [ADR 0032](docs/adr/0032-stable-runtime-and-toolchain-compatibility-pins.md)
records the upgrade conditions.
2 changes: 1 addition & 1 deletion ai-services/assistant-service/.python-version
Original file line number Diff line number Diff line change
@@ -1 +1 @@
3.12
3.14.6
2 changes: 1 addition & 1 deletion ai-services/assistant-service/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ an AI use case is defined.
```bash
python -m venv .venv
.venv\Scripts\Activate.ps1 # Windows
pip install uv==0.11.15
pip install uv==0.11.32
uv sync --frozen --extra dev
uv run uvicorn app.main:app --reload --port 8001
uv run pytest
Expand Down
8 changes: 4 additions & 4 deletions ai-services/assistant-service/pyproject.toml
Original file line number Diff line number Diff line change
Expand Up @@ -2,10 +2,10 @@
name = "assistant-service"
version = "0.1.0"
description = "Tenant-aware AI assistant service boundary (FastAPI)"
requires-python = ">=3.12,<3.13"
requires-python = ">=3.14,<3.15"
dependencies = [
"fastapi==0.140.7",
"uvicorn[standard]==0.51.0",
"fastapi==0.141.1",
"uvicorn[standard]==0.52.1",
"httpx==0.28.1",
"pyjwt[crypto]==2.13.0",
]
Expand All @@ -15,7 +15,7 @@ dev = [
"pytest==9.1.1",
"pytest-asyncio==1.4.0",
"pytest-cov==7.1.0",
"ruff==0.16.0",
"ruff==0.16.1",
]

[build-system]
Expand Down
4 changes: 2 additions & 2 deletions ai-services/assistant-service/tests/test_verify_token.py
Original file line number Diff line number Diff line change
Expand Up @@ -29,7 +29,7 @@ def test_validate_returns_claims_for_a_valid_token(
monkeypatch: pytest.MonkeyPatch,
) -> None:
validator = TokenValidator(_config())
validator._jwk_client = _FakeJwkClient() # noqa: SLF001
validator._jwk_client = _FakeJwkClient()

monkeypatch.setattr(
jwt,
Expand All @@ -49,7 +49,7 @@ def test_validate_raises_401_for_an_invalid_token(
monkeypatch: pytest.MonkeyPatch,
) -> None:
validator = TokenValidator(_config())
validator._jwk_client = _FakeJwkClient() # noqa: SLF001
validator._jwk_client = _FakeJwkClient()

def raise_invalid(*args, **kwargs): # type: ignore[no-untyped-def]
raise jwt.InvalidTokenError("signature verification failed")
Expand Down
Loading
Loading