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.
Go to file
Claude 069a74a95c fix(#30): shell-quote workspace paths + sanitize temp prefix (bounce-fix)
The review gate builds the synthetic merge in a temporary worktree whose
path was interpolated raw into Runner(shell=True) commands: paths with
spaces or shell metacharacters were split by the shell, so git's worktree
admin entry could survive cleanup (criterion 7 violation; CWD was also
misleading on failure).

- shlex.quote the worktree path in 'git worktree add --detach' and
  'git worktree remove --force'; SHA validation is unchanged.
- sanitize the mkdtemp prefix token ('owner/name' -> 'owner-name'), so a
  repo name with separators/punctuation cannot make mkdtemp fail.
- hermetic real-git tests: temp root containing a space and '$'
  constructs and cleans up completely (dir gone + absent from 'git
  worktree list --porcelain'); repo token with separators builds a
  single-component prefix and cleans up.
2026-08-29 18:10:40 -05:00
gitea_saas fix(#30): shell-quote workspace paths + sanitize temp prefix (bounce-fix) 2026-08-29 18:10:40 -05:00
tests fix(#30): shell-quote workspace paths + sanitize temp prefix (bounce-fix) 2026-08-29 18:10:40 -05:00
ARCHITECTURE.md gitea-saas-core#21: give gitea_saas/gitea_client.py a single owning issue (#4) 2026-08-25 10:32:42 -05:00
pyproject.toml gitea-saas-core#1: billing ledger core (clients/ledger/holds, idempotent, fail-closed) 2026-08-25 04:16:35 -05:00
README.md Initial commit 2026-08-25 11:01:12 +02:00
requirements.txt Merge remote-tracking branch 'origin/main' into issue-2 2026-08-25 06:29:19 -05:00

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.