target-revenue/pyproject.toml
tegwick 7e0c62a8b5 Implement hosted Phase/Extension Registry (WP-0006-T03)
Adds migrations/0001_registries.sql (licensors, phase_manifests,
extensions tables; trf_app role with no UPDATE/DELETE grant on either
table, canonicalization only via a SECURITY DEFINER function), and
src/target_revenue/registry.py + service/app.py: a thin FastAPI layer
wrapping the existing validation.py checks with persistence and
per-Licensor token auth, adding no new validation logic per ADR-0002.
New optional service/service-dev dependency groups keep the core
offline library dependency-free. tests/test_registry_hosting.py (7
tests, Docker-gated, auto-skip otherwise) spins an ephemeral disposable
Postgres container and verifies registration, rejection, duplicate/
unknown-token handling, extension canonicalization, and two explicit
database-privilege checks that the app role cannot bypass the
append-only/governance-gated guarantees.
2026-07-29 21:03:52 +02:00

36 lines
760 B
TOML

[build-system]
requires = ["hatchling"]
build-backend = "hatchling.build"
[project]
name = "target-revenue"
version = "0.1.0"
description = "Stage 0 schemas, pure Outstanding Target fold, and offline validators for the Target Revenue Framework (TRF)."
readme = "README.md"
requires-python = ">=3.11"
license = { text = "MIT-0" }
dependencies = [
"jsonschema>=4.21",
"cryptography>=42.0",
]
[project.optional-dependencies]
dev = [
"pytest>=8.0",
]
service = [
"psycopg[binary]>=3.1",
"psycopg-pool>=3.1",
"fastapi>=0.110",
"uvicorn>=0.27",
]
service-dev = [
"target-revenue[service,dev]",
"httpx>=0.27",
]
[tool.hatch.build.targets.wheel]
packages = ["src/target_revenue"]
[tool.pytest.ini_options]
testpaths = ["tests"]