Skip to content

Fix/708 709 710 711 infrastructure security (conflict resolved) - #800

Merged
hman38705 merged 6 commits into
mainfrom
fix/708-709-710-711-infrastructure-security
May 28, 2026
Merged

Fix/708 709 710 711 infrastructure security (conflict resolved)#800
hman38705 merged 6 commits into
mainfrom
fix/708-709-710-711-infrastructure-security

Conversation

@hman38705

Copy link
Copy Markdown
Contributor

Resolves CHANGELOG.md merge conflict from PR #790.

semantic-release-bot and others added 6 commits May 28, 2026 12:48
# [1.1.0](Lex-Studios/predictIQ@v1.0.0...v1.1.0) (2026-05-28)

### Bug Fixes

* **#452:** remove double newsletter rate limiting, make policy configurable ([6169065](Lex-Studios@6169065)), closes [#452](https://github.com/Lex-Studios/predictIQ/issues/452) [#452](https://github.com/Lex-Studios/predictIQ/issues/452)
* **#453:** Redis-backed newsletter IP rate limiter with atomic counters ([932a14d](Lex-Studios@932a14d)), closes [#453](https://github.com/Lex-Studios/predictIQ/issues/453)
* **#454:** harden client IP extraction with trusted proxy CIDRs ([04db648](Lex-Studios@04db648)), closes [#454](https://github.com/Lex-Studios/predictIQ/issues/454)
* **#463:** add TTL and max-size eviction to watched_txs ([428b7a7](Lex-Studios@428b7a7)), closes [#463](https://github.com/Lex-Studios/predictIQ/issues/463)
* **#485-#488:** sync API_SPEC, add email DLQ, validate templates at startup ([0749bc5](Lex-Studios@0749bc5)), closes [#485](https://github.com/Lex-Studios/predictIQ/issues/485) [-#488](https://github.com/-/issues/488) [#485](https://github.com/Lex-Studios/predictIQ/issues/485) [#486](https://github.com/Lex-Studios/predictIQ/issues/486) [#487](https://github.com/Lex-Studios/predictIQ/issues/487) [#488](https://github.com/Lex-Studios/predictIQ/issues/488)
* **#624:** fetch_pyth_price calls on-chain Pyth contract via oracle_address/feed_id ([eb3079f](Lex-Studios@eb3079f)), closes [#624](https://github.com/Lex-Studios/predictIQ/issues/624)
* **#625:** determine_outcome uses per-market strike_price from OracleConfig ([901f800](Lex-Studios@901f800)), closes [#625](https://github.com/Lex-Studios/predictIQ/issues/625)
* **#626:** validate_oracle_staleness checks all oracle indices ([bc53975](Lex-Studios@bc53975)), closes [#626](https://github.com/Lex-Studios/predictIQ/issues/626)
* **#627:** align DISPUTE_WINDOW_SECONDS to 72h (259200) ([4f26453](Lex-Studios@4f26453)), closes [#627](https://github.com/Lex-Studios/predictIQ/issues/627)
* **api:** stop leaking internal error details to API consumers ([#628](https://github.com/Lex-Studios/predictIQ/issues/628)) ([e3d8cd9](Lex-Studios@e3d8cd9))
* contract query optimizations and docs fixes ([#481](https://github.com/Lex-Studios/predictIQ/issues/481)-484) ([2a0d193](Lex-Studios@2a0d193)), closes [#481-484](https://github.com/Lex-Studios/predictIQ/issues/481-484)
* Enforce SendGrid webhook signature validation ([d49109a](Lex-Studios@d49109a)), closes [#24](https://github.com/Lex-Studios/predictIQ/issues/24)
* log cache warming errors and cover all critical endpoints ([bf978d5](Lex-Studios@bf978d5)), closes [#493](https://github.com/Lex-Studios/predictIQ/issues/493)
* replace single-connection SCAN loop with per-batch connection acquisition ([#458](https://github.com/Lex-Studios/predictIQ/issues/458)) ([2cfdec4](Lex-Studios@2cfdec4))
* resolve compile errors from issues [#477](https://github.com/Lex-Studios/predictIQ/issues/477)-[#480](https://github.com/Lex-Studios/predictIQ/issues/480) ([81235ac](Lex-Studios@81235ac)), closes [#478](https://github.com/Lex-Studios/predictIQ/issues/478)
* stop swallowing blockchain RPC errors into silent defaults ([#460](https://github.com/Lex-Studios/predictIQ/issues/460)) ([fc0ec9c](Lex-Studios@fc0ec9c))
* structured API errors, webhook sig verification, OpenAPI sync ([2430bfe](Lex-Studios@2430bfe))

### Features

* add cache stampede protection (Issue [#47](https://github.com/Lex-Studios/predictIQ/issues/047)) ([4fff7e7](Lex-Studios@4fff7e7))
* add configurable database query timeout ([#49](https://github.com/Lex-Studios/predictIQ/issues/049)) ([522e0f0](Lex-Studios@522e0f0))
* add Dependabot configuration for automated security updates ([34ed35e](Lex-Studios@34ed35e))
* add idempotency key support for email sends (Issue [#45](https://github.com/Lex-Studios/predictIQ/issues/045)) ([54dde3f](Lex-Studios@54dde3f))
* **api:** add database connection health check ([#495](https://github.com/Lex-Studios/predictIQ/issues/495)) ([e012013](Lex-Studios@e012013))
* **frontend:** add form validation with accessible user feedback ([#73](https://github.com/Lex-Studios/predictIQ/issues/073)) ([f376168](Lex-Studios@f376168))
* implement cache TTL per key type (Issue [#46](https://github.com/Lex-Studios/predictIQ/issues/046)) ([8f2bbb1](Lex-Studios@8f2bbb1))
* implement database migration version tracking ([281e2a2](Lex-Studios@281e2a2)), closes [#496](https://github.com/Lex-Studios/predictIQ/issues/496)
* implement graceful shutdown for background workers ([0ef02d4](Lex-Studios@0ef02d4))
* implement issues [#513](https://github.com/Lex-Studios/predictIQ/issues/513) [#514](https://github.com/Lex-Studios/predictIQ/issues/514) [#515](https://github.com/Lex-Studios/predictIQ/issues/515) [#516](https://github.com/Lex-Studios/predictIQ/issues/516) ([f8cdec2](Lex-Studios@f8cdec2))
* implement real market resolve write flow ([#457](https://github.com/Lex-Studios/predictIQ/issues/457)) ([ca9de29](Lex-Studios@ca9de29))
* introduce targeted cache invalidation tags ([#459](https://github.com/Lex-Studios/predictIQ/issues/459)) ([e2924e3](Lex-Studios@e2924e3))
* newsletter-security-issues ([59e2a2d](Lex-Studios@59e2a2d))
* protect /metrics endpoint with auth and IP allowlist ([044ef94](Lex-Studios@044ef94)), closes [#456](https://github.com/Lex-Studios/predictIQ/issues/456)
* Redis pooling, circuit breaker, retry, correlation IDs, OTel tracing ([cab2ffb](Lex-Studios@cab2ffb))
* sanitize email recipients before SendGrid call (Issue [#44](https://github.com/Lex-Studios/predictIQ/issues/044)) ([13ff88a](Lex-Studios@13ff88a))
* wire and globalise admin security & validation middleware ([#446](https://github.com/Lex-Studios/predictIQ/issues/446) [#447](https://github.com/Lex-Studios/predictIQ/issues/447) [#448](https://github.com/Lex-Studios/predictIQ/issues/448) [#449](https://github.com/Lex-Studios/predictIQ/issues/449)) ([38ad7b3](Lex-Studios@38ad7b3))
- Add JAEGER_ENDPOINT and ZIPKIN_ENDPOINT env var support to otel-collector-config.yml
- Update docker-compose.tracing.yml to pass environment variables to otel-collector
- Document OTLP endpoint configuration in DISTRIBUTED_TRACING.md with examples
…ng.yml

- Jaeger: 1 CPU limit, 1GB memory limit (0.5 CPU, 512MB reserved)
- Zipkin: 0.5 CPU limit, 512MB memory limit (0.25 CPU, 256MB reserved)
- OTEL Collector: 0.5 CPU limit, 512MB memory limit (0.25 CPU, 256MB reserved)
- Limits prevent unbounded resource consumption in shared environments
- Rationale documented in comments for each service
- Create dedicated 'appuser' non-root user and group
- Set ownership of /app directory to appuser
- Switch to appuser before CMD/ENTRYPOINT
- Prevents container escape vulnerabilities from granting root access
- Mitigates privilege escalation attacks
- rust:1.75-slim pinned to sha256:4dd48afa1d6fcf622b18b60081bb6c897b11787b42006aea2f2cf5ff3f6ae0cc
- debian:bookworm-slim pinned to sha256:3d868b89a1b0d8b957fa1798fffb5e1b6db5ac4e9c79e74acd418db9be3506b
- Ensures reproducible builds across environments
- Prevents unexpected changes from upstream image updates
- Digests can be updated via Dependabot or scheduled workflow
@hman38705
hman38705 merged commit 86e436c into main May 28, 2026
3 of 27 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.

3 participants