Skip to content

Harden provider ingestion and production resource limits - #13

Merged
ur1el0 merged 3 commits into
mainfrom
codex/production-hardening
Oct 28, 2026
Merged

ur1el0 merged 3 commits into
mainfrom
codex/production-hardening

Conversation

@ur1el0

@ur1el0 ur1el0 commented Oct 28, 2026

Copy link
Copy Markdown
Owner

Summary

  • Protect Gutenberg and MangaDex ingestion with a dedicated operator key; fail closed when it is missing or too short.
  • Ignore raw X-Forwarded-For in application middleware, bound rate-limit buckets, and apply the stricter rate tier to ingestion.
  • Stream and cap Gutenberg and MangaDex provider responses; bound upstream concurrency and cache size/age.
  • Announce sign-in/sign-up errors to VoiceOver and use Dynamic Type text styles.
  • Update operator guidance, README metadata, and the project progress log.

Verification

  • Backend pytest: 64 passed in the project environment and in the Python 3.11 container.
  • Docker image build and docker compose config --quiet passed.
  • iOS Release API URL guard passed valid and invalid cases.
  • Native Xcode build and simulator tests will run in the macOS CI job.

Deployment notes

Set FABLE_INGESTION_API_KEY to a random value with at least 32 bytes of entropy before using ingestion routes. Set FORWARDED_ALLOW_IPS to the actual proxy peer address or network; do not use *. There is no database migration in this change.

@ur1el0
ur1el0 merged commit cf9f23b into main Oct 28, 2026
4 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant