Monetization core: shared billing (clients/ledger/holds/Stripe), factory intake (client repos + issue provisioning), eval farm intake/results, delivery receipts. Two front-ends, one billing core.
Replace the == string comparison at delivery.py:127 with hmac.compare_digest so the shared secret never leaks through response timing (repo convention: stripe_client.py:88, server.py:171). The isinstance/empty guards run first so compare_digest's TypeError on non-str input is never reached — unset config, None, and non-str keys stay fail-closed False. Five direct authorized() tests added (16 delivery tests / 42 full suite green). |
||
|---|---|---|
| gitea_saas | ||
| tests | ||
| ARCHITECTURE.md | ||
| pyproject.toml | ||
| README.md | ||
| requirements.txt | ||
gitea-saas-core
Monetization core: shared billing (clients/ledger/holds/Stripe), factory intake (client repos + issue provisioning), eval farm intake/results, delivery receipts. Two front-ends, one billing core.