1.0.1 (2026-05-27)
- cache stale-on-error, env zod validation, form-error a11y, touch gesture tests (02688d1), closes #744 #745 #747 #746 #744 #745 #746 #747
- #13: Implement Governance-Only Upgradability Pattern with 48-hour timelock (ae8afa0), closes #13
- #22: Implement Event-Driven Frontend Indexing Support (3507c2f), closes #22
- #246: add tie-handling tests for dispute voting (f505cf5), closes #246
- #252: add payout mode immutability tests (877d53b), closes #252
- #406: add status index to eliminate full reverse scan in get_markets_by_status (35c841d), closes #406
- #519: Enhance accessibility compliance with improved ARIA labels and keyboard navigation (174c41a), closes #519
- #520: Add frontend error boundary components (6deea3f), closes #520
- #521: Implement frontend route-based code splitting (e4166bc), closes #521
- #522: Add frontend environment variable validation (b6dc301), closes #522
- #523: Implement frontend API response caching (4daf584), closes #523
- #524: Add frontend internationalization support (266a5e3), closes #524
- #525: Implement frontend dark mode support (e171d57), closes #525
- #526: Add k6 load test for newsletter subscribe endpoint (b31196d), closes #526
- #551: Add database indexes for newsletter subscriber queries (44b2830), closes #551
- #552: Implement soft delete for newsletter subscribers (5ef9c8f), closes #552
- #557: Add contract storage migration utilities (2a64813), closes #557
- add administrative function to withdraw protocol fee revenue (a5befd7), closes #26
- add API response compression middleware (c13cb81)
- add automated recovery path for circuit breaker (d32435a), closes #12
- add blockchain event replay (#110) and complete contract upgrade mechanism (#111) (775d0b2)
- add cache stampede protection (Issue #047) (4fff7e7)
- Add comprehensive multi-token support tests for Issue #9 (7b8e185)
- Add comprehensive performance testing suite (1dd5353)
- Add comprehensive test suite with 60+ tests and CI/CD pipeline (eb06d34), closes #80
- add configurable database query timeout (#049) (522e0f0)
- add E2E tests for betting flow (issue #092) (4149ed6)
- add E2E tests for market creation flow with CI and flaky detection (8778933)
- add idempotency key support for email sends (Issue #045) (54dde3f)
- Add market cancellation with zero-fee refunds (Issue #10) (274d1f0)
- add test to oracle failure fallback strategy (98b1d04)
- api: add database connection health check (#495) (e012013)
- api: add structured error codes and consistent error schema (#399) (27dcdb9)
- api: add unit tests for chain reorg invalidation logic (40b90c0)
- api: add URL versioning strategy and request deduplication (03f15b6)
- bets: add property-based fuzz tests for bet placement inputs (8ef07fe)
- blockchain integration service (92d3325)
- centralize and version contract key schema (a4bc239)
- ci: add contract gas benchmark to CI (issue #084) (11b29a3)
- ci: add dependency vulnerability scanning (27f0b9e)
- ci: add Docker image build and push to CI (4ac6b29)
- ci: implement semantic versioning and changelog automation (0967121)
- Confidence threshold rounding tests (4e13454)
- contract: pagination for heavy queries (6ad5637)
- contract: pagination for heavy queries (6b7d083)
- contracts: add hard pagination bounds for query functions (#407) (df7305f)
- distinguish live/stale/rpc_fallback in blockchain responses (8ab8468)
- distinguish live/stale/rpc_fallback in blockchain responses (8fb1962)
- Emit Events for Monitoring State Resets (af06066)
- Event payload verification tests for oracle/dispute/resolution events (d0ae480)
- frontend: add form validation with accessible user feedback (#073) (f376168)
- implement AI text-to-speech for social video narrations (a2f025f)
- Implement automated gas benchmarking and instruction optimization (Issue #7) (5ab7a28)
- Implement automated hybrid consensus resolution state machine (15a54be), closes #4
- implement cache TTL per key type (Issue #046) (8f2bbb1)
- implement caching and performance optimization (47fea70)
- implement claim_winnings function with payout calculation (fa5871e)
- Implement Classic Stellar Assets (SAC) interoperability (Issue #21) (c3de65e)
- implement comprehensive rate limiting and security measures (Issue #12) (c4f6c73)
- Implement comprehensive WCAG 2.1 AA accessibility testing (310dde3), closes #90
- implement conditional/chained prediction markets (Issue #25) (9699a8d)
- implement cursor-based pagination for list endpoints (3176c4f)
- implement database migration version tracking (281e2a2), closes #496
- implement database schema, migrations, and seeds for issue #13 (0306829)
- implement E2E user journey tests (Issue #92) (509a5c2)
- implement email webhook authenticity and replay protection for sendgrid (d345150)
- implement graceful shutdown for background workers (0ef02d4)
- implement graceful shutdown for background workers (c6a3f1c)
- implement Guardian-led emergency pause to mitigate Admin hijacking (b3a7aab), closes #158
- implement infrastructure as code for deployment (6d6f088)
- implement issues #513 #514 #515 #516 (f8cdec2)
- implement linear reputation-based discounts for market creators (2fdb2b3), closes #153
- implement multisig emergency pause with partial freeze for Guardian-controlled risk management (17b16c2)
- implement newsletter subscription endpoint (issue #2) (4100f1b)
- Implement Overflow-Safe Price Confidence Calculation (6fcb022)
- Implement permissioned creation and tiered market levels (Issue #14) (f6ad2af)
- Implement production-ready email service integration (Issue #14) (3077d91)
- implement production-ready Pyth oracle price fetching (1e84441), closes #25 #41 #49
- Implement Pyth Network oracle integration (Issue #2) (89037f4)
- implement real market resolve write flow (#457) (ca9de29)
- Implement referral system with affiliate incentives (f2bf178), closes #11
- Implement snapshot-based voting weight to prevent flash voting attacks (e039a14), closes #3
- Implement State Footprint & TTL Management (Issue #6) (3702293)
- increase dispute window to 72 hours for better accessibility (3a49d12), closes #8
- introduce targeted cache invalidation tags (#459) (e2924e3)
- invariant tests for market stake conservation (ef097f5)
- Multi-oracle keying tests (0374afa)
- newsletter-security-issues (59e2a2d)
- perf: add k6 load test for blockchain data endpoints (issue #082) (7963d6f)
- perf: implement performance regression detection in CI (issue #083) (b8e71e3)
- protect /metrics endpoint with auth and IP allowlist (044ef94), closes #456
- Redis pooling, circuit breaker, retry, correlation IDs, OTel tracing (cab2ffb)
- Refactor Logic Duplication in Claim Paths (8bf392f)
- Replace panic! with ErrorCode returns and standardize event schema (b81510a)
- return 401 JSON+headers from api_key_middleware, add integration tests (2484683)
- sanitize email recipients before SendGrid call (Issue #044) (13ff88a)
- test-pruning-behaviour (6d509e4)
- test-reentrancy (d62a880)
- tests for partial storage cleanup (77c3199)
- tts: add API key and JWT authentication (86b6396)
- tts: add health check endpoint (issue #085) (b30a5ed)
- tts: rate limiting, caching, error handling, input sanitization (e824ec1), closes #531 #532 #533 #534 #531 #532 #533 #534
- update_check_in_interval Function (5379e22)
- wire and globalise admin security & validation middleware (#446 #447 #448 #449) (38ad7b3)
- #406: rewrite get_markets_by_status to use status index (O(limit) vs O(total)) (501c3b7), closes #406
- remove unused administrative getter functions (bb2d17f)
- remove unused administrative getter functions (21874f2)
- #244: remove duplicate get_dispute_window and add dispute_timestamp regression tests (cd7335a), closes #244
- #257: remove duplicate imports in oracles_test and add oracle quality gate to CI (a230a8c), closes #257
- #290: replace .expect panic in generate_signature with fallible Result API (36ed34a), closes #290
- #395: separate webhook routing security model from admin routes (4be4df1), closes #395
- #396: store real recipient address in sent email events (78754d7), closes #396
- #397: recover orphaned processing jobs on worker startup (349b7b9), closes #397
- #398: remove Box::leak memory leak in analytics rate limiter (47cabae), closes #398
- #403/#404: define missing governance types and timelock constants (99258a4), closes #403 #404 #406
- #405: emit accurate oracle source metadata in oracle result events (562ad84), closes #405
- #407: enforce MAX_PAGE_LIMIT=100 on all paginated contract queries (a257618), closes #407
- #452: remove double newsletter rate limiting, make policy configurable (6169065), closes #452 #452
- #453: Redis-backed newsletter IP rate limiter with atomic counters (932a14d), closes #453
- #454: harden client IP extraction with trusted proxy CIDRs (04db648), closes #454
- #463: add TTL and max-size eviction to watched_txs (428b7a7), closes #463
- #485-#488: sync API_SPEC, add email DLQ, validate templates at startup (0749bc5), closes #485 -#488 #485 #486 #487 #488
- add AssetClawedBack to ErrorCode enum for SAC compatibility (b27300c)
- add missing GovernanceToken variant to ConfigKey enum (b00dfd2), closes #3
- add winner count, boundary, and gas threshold tests (b0d2fbe)
- allow permissionless pruning of expired market data (8f32ca6), closes #47
- api: sync OpenAPI with runtime config and add auth security schemes (#400) (4505c01)
- base governance majority on total voting power instead of count (369dd49), closes #4
- blockchain: quarantine malformed events; add event parsing and tx monitor tests (b723f42)
- consolidate newsletter rate limiting to single 5/hour policy (#377) (c6fcbf5)
- contract query optimizations and docs fixes (#481-484) (2a0d193), closes #481-484
- contract: prevent market deadlock for parent-child outcomes (38f0e10)
- contracts: fix duplicate get_dispute_window and dead constant usage (#402) (4f1c617)
- contracts: remove duplicate cancel_market_admin entrypoint (#401) (3243498)
- decrement total_staked on refund to maintain accounting accuracy (94bcd0a)
- deep-prune voting storage on market prune (issue #84) (c81462c)
- efficient paginated user_bets endpoint using upstream offset/limit (closes #390) (3ee7bde)
- enforce betting deadline before resolution deadline (95fb998), closes #6
- enforce immutable payout mode throughout market lifecycle (4083803), closes #23
- enforce proxy trust boundaries for x-forwarded-for (closes #379) (c8edd6d)
- enforce reward claim finality before market pruning (95ed3d5), closes #125
- Enforce SendGrid webhook signature validation (d49109a), closes #24
- enforce strict separation between Admin and Guardian identities (673413c), closes #19 #19
- ensure absolute isolation of storage keys and vote revision (61a40e6)
- ensure all refund paths use SAC-safe transfer and respect circuit breakers (a6244b1), closes #93
- ensure comprehensive storage cleanup for bettor participation records (cbc8c4b)
- ensure consistent TTL management for all governance and protocol state (6227343)
- ensure robust market ID generation for high-volume environments (6a0a00a)
- expose get_timelock_duration endpoint and add query test (994c514)
- expose lib target so security_tests can import predictiq_api::security (835f00d)
- extend persistent storage TTL to safely cover pruning grace period (a234a5a), closes #144
- implement comprehensive security and governance improvements (00934d7), closes #192 #181 #170 #191
- implement configurable governance timelock duration (4ee3cb5), closes #13
- implement configurable winner threshold for payout mode switching (fde6463)
- implement creator deposit refunds for cancelled markets (42d16dd), closes #51
- implement flexible oracle result indexing per market (f99207b), closes #117
- implement granular balance tracking for locked fallback tokens (15cdbf3), closes #37
- implement granular role-based access control for administrative tasks (fd56a03), closes #118
- implement minimum bet threshold to prevent state-bloat attacks (3382469)
- implement parimutuel payout logic in claim_winnings (c8f098b), closes #2
- implement persistent bet counter for market outcomes (f342e61)
- implement programmatic error handling for SAC transfers (1b82e74), closes #11
- implement real parimutuel payout calculation in claim_winnings (3555caa), closes #91
- implement rounding and remainder handling for parimutuel payouts (0689993)
- implement tie-detection in resolution voting outcome calculation (7c8c0a0), closes #58
- import missing types and resolve undefined ConfigKey variant (2e4fac8)
- include actual total payout in ResolutionFinalized event (cbca6bf), closes #143
- invoke host update_current_contract_wasm in execute_upgrade (4109cb5)
- lock creator deposits until resolution finality (c7e47ff), closes #115
- log cache warming errors and cover all critical endpoints (bf978d5), closes #493
- maintain consistent i128 usage for vote weight summation (6540b02)
- mount security headers middleware globally (#373) (81653b1)
- move all circuit breaker state to instance storage for consistency (cc45af6), closes #38
- move ErrorBody to module level, fix rustfmt line lengths (3d4badd)
- oracles: tighten verify_oracle_health and add behavioral tests (4221fe0)
- paginate event fetch and bound watched_txs with TTL/cap (730c652)
- pass outcome=0 default in lib.rs withdraw_refund wrapper (8385910)
- pre-initialize outcome stake map during market creation to optimize gas (eed66ee)
- prevent gas-limit griefing in permissionless finalization (d956d8c)
- prevent payout mode changes after resolution process has started (#182) (3eb18f3)
- prevent redundant upgrade votes and implement hash cool-down (74c2b93)
- protect metrics endpoint, implement resolve_market, SCAN-based cache deletion, narrow invalidation scope (e145d5a)
- reflect node and contract health as explicit degraded states (09a3b5c)
- Remove unused imports and variables (b5aa6ac)
- reorder fee arithmetic to prevent precision loss in discounts (3441fcd)
- replace single-connection SCAN loop with per-batch connection acquisition (#458) (2cfdec4)
- replace unsafe winner count heuristic with precise outcome counters (e412995), closes #24
- require guardian consensus for removal to prevent admin overreach (69e2a9f), closes #151
- require market resolution before unlocking voting tokens (05852e9)
- resolution: replace max_outcome=0 default with Option to prevent silent wrong-winner bug (3156780)
- resolve all 50 smart contract issues across security, gas, governance, and storage (7a9db68)
- resolve all tracked issues across contracts, backend, and docs (93117e2)
- resolve compile errors from issues #477-#480 (81235ac), closes #478
- resolve merge conflict, structured config keys, admin events, double-refund guard (5a39df3), closes #184 #185 #186
- resolve pre-existing compile errors blocking test execution (2f10646)
- restrict contract initialization to authorized deployer only (370114f), closes #28
- restrict creation deposit release to the market creator (6f323cd)
- reverse referral rewards and fees on market cancellation (a88d0c3)
- rpc: mask RPC errors with structured log and metrics (b3f283b)
- secure and configurable CORS (closes #380) (af46e8c)
- security: add trust-boundary tests for spoofed forwarding headers (#281) (c6381f9)
- security: strip non-ASCII control chars in sanitize::string; add Unicode fuzz and signing corpus tests (4266add)
- security: strip non-ASCII control chars in sanitize::string; add Unicode fuzz and signing corpus tests (9f51228)
- stop swallowing blockchain RPC errors into silent defaults (#460) (fc0ec9c)
- structured API errors, webhook sig verification, OpenAPI sync (2430bfe)
- sync: add cursor progression tests under empty event streams (af739cb)
- synchronize errors.rs with missing SAC and Oracle error variants (b392a83), closes #113
- use BytesN<32> for WASM hash in PendingUpgrade struct (6f43f62), closes #32
- use overflow-safe math for cancellation threshold checks (ddd0237), closes #52
- use Redis for shared, atomic newsletter rate limiting (closes #378) (44b92de)
- verify OracleConfig struct schema is complete (28ec807), closes #124
- verify self-referral prevention is implemented (34c5730), closes #129
- #13: Implement Governance-Only Upgradability Pattern with 48-hour timelock (ae8afa0), closes #13
- #22: Implement Event-Driven Frontend Indexing Support (3507c2f), closes #22
- #246: add tie-handling tests for dispute voting (f505cf5), closes #246
- #252: add payout mode immutability tests (877d53b), closes #252
- #406: add status index to eliminate full reverse scan in get_markets_by_status (35c841d), closes #406
- #519: Enhance accessibility compliance with improved ARIA labels and keyboard navigation (174c41a), closes #519
- #520: Add frontend error boundary components (6deea3f), closes #520
- #521: Implement frontend route-based code splitting (e4166bc), closes #521
- #522: Add frontend environment variable validation (b6dc301), closes #522
- #523: Implement frontend API response caching (4daf584), closes #523
- #524: Add frontend internationalization support (266a5e3), closes #524
- #525: Implement frontend dark mode support (e171d57), closes #525
- #526: Add k6 load test for newsletter subscribe endpoint (b31196d), closes #526
- #551: Add database indexes for newsletter subscriber queries (44b2830), closes #551
- #552: Implement soft delete for newsletter subscribers (5ef9c8f), closes #552
- #557: Add contract storage migration utilities (2a64813), closes #557
- add administrative function to withdraw protocol fee revenue (a5befd7), closes #26
- add API response compression middleware (c13cb81)
- add automated recovery path for circuit breaker (d32435a), closes #12
- add blockchain event replay (#110) and complete contract upgrade mechanism (#111) (775d0b2)
- add cache stampede protection (Issue #047) (4fff7e7)
- Add comprehensive multi-token support tests for Issue #9 (7b8e185)
- Add comprehensive performance testing suite (1dd5353)
- Add comprehensive test suite with 60+ tests and CI/CD pipeline (eb06d34), closes #80
- add configurable database query timeout (#049) (522e0f0)
- add E2E tests for betting flow (issue #092) (4149ed6)
- add E2E tests for market creation flow with CI and flaky detection (8778933)
- add idempotency key support for email sends (Issue #045) (54dde3f)
- Add market cancellation with zero-fee refunds (Issue #10) (274d1f0)
- add test to oracle failure fallback strategy (98b1d04)
- api: add database connection health check (#495) (e012013)
- api: add structured error codes and consistent error schema (#399) (27dcdb9)
- api: add unit tests for chain reorg invalidation logic (40b90c0)
- api: add URL versioning strategy and request deduplication (03f15b6)
- bets: add property-based fuzz tests for bet placement inputs (8ef07fe)
- blockchain integration service (92d3325)
- centralize and version contract key schema (a4bc239)
- ci: add contract gas benchmark to CI (issue #084) (11b29a3)
- ci: add dependency vulnerability scanning (27f0b9e)
- ci: add Docker image build and push to CI (4ac6b29)
- ci: implement semantic versioning and changelog automation (0967121)
- Confidence threshold rounding tests (4e13454)
- contract: pagination for heavy queries (6ad5637)
- contract: pagination for heavy queries (6b7d083)
- contracts: add hard pagination bounds for query functions (#407) (df7305f)
- distinguish live/stale/rpc_fallback in blockchain responses (8ab8468)
- distinguish live/stale/rpc_fallback in blockchain responses (8fb1962)
- Emit Events for Monitoring State Resets (af06066)
- Event payload verification tests for oracle/dispute/resolution events (d0ae480)
- frontend: add form validation with accessible user feedback (#073) (f376168)
- implement AI text-to-speech for social video narrations (a2f025f)
- Implement automated gas benchmarking and instruction optimization (Issue #7) (5ab7a28)
- Implement automated hybrid consensus resolution state machine (15a54be), closes #4
- implement cache TTL per key type (Issue #046) (8f2bbb1)
- implement caching and performance optimization (47fea70)
- implement claim_winnings function with payout calculation (fa5871e)
- Implement Classic Stellar Assets (SAC) interoperability (Issue #21) (c3de65e)
- implement comprehensive rate limiting and security measures (Issue #12) (c4f6c73)
- Implement comprehensive WCAG 2.1 AA accessibility testing (310dde3), closes #90
- implement conditional/chained prediction markets (Issue #25) (9699a8d)
- implement cursor-based pagination for list endpoints (3176c4f)
- implement database migration version tracking (281e2a2), closes #496
- implement database schema, migrations, and seeds for issue #13 (0306829)
- implement E2E user journey tests (Issue #92) (509a5c2)
- implement email webhook authenticity and replay protection for sendgrid (d345150)
- implement graceful shutdown for background workers (0ef02d4)
- implement graceful shutdown for background workers (c6a3f1c)
- implement Guardian-led emergency pause to mitigate Admin hijacking (b3a7aab), closes #158
- implement infrastructure as code for deployment (6d6f088)
- implement issues #513 #514 #515 #516 (f8cdec2)
- implement linear reputation-based discounts for market creators (2fdb2b3), closes #153
- implement multisig emergency pause with partial freeze for Guardian-controlled risk management (17b16c2)
- implement newsletter subscription endpoint (issue #2) (4100f1b)
- Implement Overflow-Safe Price Confidence Calculation (6fcb022)
- Implement permissioned creation and tiered market levels (Issue #14) (f6ad2af)
- Implement production-ready email service integration (Issue #14) (3077d91)
- implement production-ready Pyth oracle price fetching (1e84441), closes #25 #41 #49
- Implement Pyth Network oracle integration (Issue #2) (89037f4)
- implement real market resolve write flow (#457) (ca9de29)
- Implement referral system with affiliate incentives (f2bf178), closes #11
- Implement snapshot-based voting weight to prevent flash voting attacks (e039a14), closes #3
- Implement State Footprint & TTL Management (Issue #6) (3702293)
- increase dispute window to 72 hours for better accessibility (3a49d12), closes #8
- introduce targeted cache invalidation tags (#459) (e2924e3)
- invariant tests for market stake conservation (ef097f5)
- Multi-oracle keying tests (0374afa)
- newsletter-security-issues (59e2a2d)
- perf: add k6 load test for blockchain data endpoints (issue #082) (7963d6f)
- perf: implement performance regression detection in CI (issue #083) (b8e71e3)
- protect /metrics endpoint with auth and IP allowlist (044ef94), closes #456
- Redis pooling, circuit breaker, retry, correlation IDs, OTel tracing (cab2ffb)
- Refactor Logic Duplication in Claim Paths (8bf392f)
- Replace panic! with ErrorCode returns and standardize event schema (b81510a)
- return 401 JSON+headers from api_key_middleware, add integration tests (2484683)
- sanitize email recipients before SendGrid call (Issue #044) (13ff88a)
- test-pruning-behaviour (6d509e4)
- test-reentrancy (d62a880)
- tests for partial storage cleanup (77c3199)
- tts: add API key and JWT authentication (86b6396)
- tts: add health check endpoint (issue #085) (b30a5ed)
- tts: rate limiting, caching, error handling, input sanitization (e824ec1), closes #531 #532 #533 #534 #531 #532 #533 #534
- update_check_in_interval Function (5379e22)
- wire and globalise admin security & validation middleware (#446 #447 #448 #449) (38ad7b3)
- #406: rewrite get_markets_by_status to use status index (O(limit) vs O(total)) (501c3b7), closes #406
- remove unused administrative getter functions (bb2d17f)
- remove unused administrative getter functions (21874f2)
- #244: remove duplicate get_dispute_window and add dispute_timestamp regression tests (cd7335a), closes #244
- #257: remove duplicate imports in oracles_test and add oracle quality gate to CI (a230a8c), closes #257
- #290: replace .expect panic in generate_signature with fallible Result API (36ed34a), closes #290
- #395: separate webhook routing security model from admin routes (4be4df1), closes #395
- #396: store real recipient address in sent email events (78754d7), closes #396
- #397: recover orphaned processing jobs on worker startup (349b7b9), closes #397
- #398: remove Box::leak memory leak in analytics rate limiter (47cabae), closes #398
- #403/#404: define missing governance types and timelock constants (99258a4), closes #403 #404 #406
- #405: emit accurate oracle source metadata in oracle result events (562ad84), closes #405
- #407: enforce MAX_PAGE_LIMIT=100 on all paginated contract queries (a257618), closes #407
- add AssetClawedBack to ErrorCode enum for SAC compatibility (b27300c)
- add missing GovernanceToken variant to ConfigKey enum (b00dfd2), closes #3
- add winner count, boundary, and gas threshold tests (b0d2fbe)
- allow permissionless pruning of expired market data (8f32ca6), closes #47
- api: sync OpenAPI with runtime config and add auth security schemes (#400) (4505c01)
- base governance majority on total voting power instead of count (369dd49), closes #4
- blockchain: quarantine malformed events; add event parsing and tx monitor tests (b723f42)
- consolidate newsletter rate limiting to single 5/hour policy (#377) (c6fcbf5)
- contract: prevent market deadlock for parent-child outcomes (38f0e10)
- contracts: fix duplicate get_dispute_window and dead constant usage (#402) (4f1c617)
- contracts: remove duplicate cancel_market_admin entrypoint (#401) (3243498)
- decrement total_staked on refund to maintain accounting accuracy (94bcd0a)
- deep-prune voting storage on market prune (issue #84) (c81462c)
- efficient paginated user_bets endpoint using upstream offset/limit (closes #390) (3ee7bde)
- enforce betting deadline before resolution deadline (95fb998), closes #6
- enforce immutable payout mode throughout market lifecycle (4083803), closes #23
- enforce proxy trust boundaries for x-forwarded-for (closes #379) (c8edd6d)
- enforce reward claim finality before market pruning (95ed3d5), closes #125
- enforce strict separation between Admin and Guardian identities (673413c), closes #19 #19
- ensure absolute isolation of storage keys and vote revision (61a40e6)
- ensure all refund paths use SAC-safe transfer and respect circuit breakers (a6244b1), closes #93
- ensure comprehensive storage cleanup for bettor participation records (cbc8c4b)
- ensure consistent TTL management for all governance and protocol state (6227343)
- ensure robust market ID generation for high-volume environments (6a0a00a)
- expose get_timelock_duration endpoint and add query test (994c514)
- expose lib target so security_tests can import predictiq_api::security (835f00d)
- extend persistent storage TTL to safely cover pruning grace period (a234a5a), closes #144
- implement comprehensive security and governance improvements (00934d7), closes #192 #181 #170 #191
- implement configurable governance timelock duration (4ee3cb5), closes #13
- implement configurable winner threshold for payout mode switching (fde6463)
- implement creator deposit refunds for cancelled markets (42d16dd), closes #51
- implement flexible oracle result indexing per market (f99207b), closes #117
- implement granular balance tracking for locked fallback tokens (15cdbf3), closes #37
- implement granular role-based access control for administrative tasks (fd56a03), closes #118
- implement minimum bet threshold to prevent state-bloat attacks (3382469)
- implement parimutuel payout logic in claim_winnings (c8f098b), closes #2
- implement persistent bet counter for market outcomes (f342e61)
- implement programmatic error handling for SAC transfers (1b82e74), closes #11
- implement real parimutuel payout calculation in claim_winnings (3555caa), closes #91
- implement rounding and remainder handling for parimutuel payouts (0689993)
- implement tie-detection in resolution voting outcome calculation (7c8c0a0), closes #58
- import missing types and resolve undefined ConfigKey variant (2e4fac8)
- include actual total payout in ResolutionFinalized event (cbca6bf), closes #143
- invoke host update_current_contract_wasm in execute_upgrade (4109cb5)
- lock creator deposits until resolution finality (c7e47ff), closes #115
- maintain consistent i128 usage for vote weight summation (6540b02)
- mount security headers middleware globally (#373) (81653b1)
- move all circuit breaker state to instance storage for consistency (cc45af6), closes #38
- move ErrorBody to module level, fix rustfmt line lengths (3d4badd)
- oracles: tighten verify_oracle_health and add behavioral tests (4221fe0)
- paginate event fetch and bound watched_txs with TTL/cap (730c652)
- pass outcome=0 default in lib.rs withdraw_refund wrapper (8385910)
- pre-initialize outcome stake map during market creation to optimize gas (eed66ee)
- prevent gas-limit griefing in permissionless finalization (d956d8c)
- prevent payout mode changes after resolution process has started (#182) (3eb18f3)
- prevent redundant upgrade votes and implement hash cool-down (74c2b93)
- protect metrics endpoint, implement resolve_market, SCAN-based cache deletion, narrow invalidation scope (e145d5a)
- reflect node and contract health as explicit degraded states (09a3b5c)
- Remove unused imports and variables (b5aa6ac)
- reorder fee arithmetic to prevent precision loss in discounts (3441fcd)
- replace unsafe winner count heuristic with precise outcome counters (e412995), closes #24
- require guardian consensus for removal to prevent admin overreach (69e2a9f), closes #151
- require market resolution before unlocking voting tokens (05852e9)
- resolution: replace max_outcome=0 default with Option to prevent silent wrong-winner bug (3156780)
- resolve all 50 smart contract issues across security, gas, governance, and storage (7a9db68)
- resolve all tracked issues across contracts, backend, and docs (93117e2)
- resolve merge conflict, structured config keys, admin events, double-refund guard (5a39df3), closes #184 #185 #186
- resolve pre-existing compile errors blocking test execution (2f10646)
- restrict contract initialization to authorized deployer only (370114f), closes #28
- restrict creation deposit release to the market creator (6f323cd)
- reverse referral rewards and fees on market cancellation (a88d0c3)
- rpc: mask RPC errors with structured log and metrics (b3f283b)
- secure and configurable CORS (closes #380) (af46e8c)
- security: add trust-boundary tests for spoofed forwarding headers (#281) (c6381f9)
- security: strip non-ASCII control chars in sanitize::string; add Unicode fuzz and signing corpus tests (4266add)
- security: strip non-ASCII control chars in sanitize::string; add Unicode fuzz and signing corpus tests (9f51228)
- sync: add cursor progression tests under empty event streams (af739cb)
- synchronize errors.rs with missing SAC and Oracle error variants (b392a83), closes #113
- use BytesN<32> for WASM hash in PendingUpgrade struct (6f43f62), closes #32
- use overflow-safe math for cancellation threshold checks (ddd0237), closes #52
- use Redis for shared, atomic newsletter rate limiting (closes #378) (44b92de)
- verify OracleConfig struct schema is complete (28ec807), closes #124
- verify self-referral prevention is implemented (34c5730), closes #129
- #13: Implement Governance-Only Upgradability Pattern with 48-hour timelock (ae8afa0), closes #13
- #22: Implement Event-Driven Frontend Indexing Support (3507c2f), closes #22
- #246: add tie-handling tests for dispute voting (f505cf5), closes #246
- #252: add payout mode immutability tests (877d53b), closes #252
- #406: add status index to eliminate full reverse scan in get_markets_by_status (35c841d), closes #406
- #519: Enhance accessibility compliance with improved ARIA labels and keyboard navigation (174c41a), closes #519
- #520: Add frontend error boundary components (6deea3f), closes #520
- #521: Implement frontend route-based code splitting (e4166bc), closes #521
- #522: Add frontend environment variable validation (b6dc301), closes #522
- #523: Implement frontend API response caching (4daf584), closes #523
- #524: Add frontend internationalization support (266a5e3), closes #524
- #525: Implement frontend dark mode support (e171d57), closes #525
- #526: Add k6 load test for newsletter subscribe endpoint (b31196d), closes #526
- #551: Add database indexes for newsletter subscriber queries (44b2830), closes #551
- #552: Implement soft delete for newsletter subscribers (5ef9c8f), closes #552
- #557: Add contract storage migration utilities (2a64813), closes #557
- add administrative function to withdraw protocol fee revenue (a5befd7), closes #26
- add API response compression middleware (c13cb81)
- add automated recovery path for circuit breaker (d32435a), closes #12
- add blockchain event replay (#110) and complete contract upgrade mechanism (#111) (775d0b2)
- Add comprehensive multi-token support tests for Issue #9 (7b8e185)
- Add comprehensive performance testing suite (1dd5353)
- Add comprehensive test suite with 60+ tests and CI/CD pipeline (eb06d34), closes #80
- add E2E tests for betting flow (issue #092) (4149ed6)
- add E2E tests for market creation flow with CI and flaky detection (8778933)
- Add market cancellation with zero-fee refunds (Issue #10) (274d1f0)
- add test to oracle failure fallback strategy (98b1d04)
- api: add structured error codes and consistent error schema (#399) (27dcdb9)
- api: add unit tests for chain reorg invalidation logic (40b90c0)
- api: add URL versioning strategy and request deduplication (03f15b6)
- bets: add property-based fuzz tests for bet placement inputs (8ef07fe)
- blockchain integration service (92d3325)
- centralize and version contract key schema (a4bc239)
- ci: add contract gas benchmark to CI (issue #084) (11b29a3)
- ci: add dependency vulnerability scanning (27f0b9e)
- ci: add Docker image build and push to CI (4ac6b29)
- ci: implement semantic versioning and changelog automation (0967121)
- Confidence threshold rounding tests (4e13454)
- contract: pagination for heavy queries (6ad5637)
- contract: pagination for heavy queries (6b7d083)
- contracts: add hard pagination bounds for query functions (#407) (df7305f)
- distinguish live/stale/rpc_fallback in blockchain responses (8ab8468)
- distinguish live/stale/rpc_fallback in blockchain responses (8fb1962)
- Emit Events for Monitoring State Resets (af06066)
- Event payload verification tests for oracle/dispute/resolution events (d0ae480)
- implement AI text-to-speech for social video narrations (a2f025f)
- Implement automated gas benchmarking and instruction optimization (Issue #7) (5ab7a28)
- Implement automated hybrid consensus resolution state machine (15a54be), closes #4
- implement caching and performance optimization (47fea70)
- implement claim_winnings function with payout calculation (fa5871e)
- Implement Classic Stellar Assets (SAC) interoperability (Issue #21) (c3de65e)
- implement comprehensive rate limiting and security measures (Issue #12) (c4f6c73)
- Implement comprehensive WCAG 2.1 AA accessibility testing (310dde3), closes #90
- implement conditional/chained prediction markets (Issue #25) (9699a8d)
- implement cursor-based pagination for list endpoints (3176c4f)
- implement database schema, migrations, and seeds for issue #13 (0306829)
- implement E2E user journey tests (Issue #92) (509a5c2)
- implement email webhook authenticity and replay protection for sendgrid (d345150)
- implement graceful shutdown for background workers (c6a3f1c)
- implement Guardian-led emergency pause to mitigate Admin hijacking (b3a7aab), closes #158
- implement infrastructure as code for deployment (6d6f088)
- implement linear reputation-based discounts for market creators (2fdb2b3), closes #153
- implement multisig emergency pause with partial freeze for Guardian-controlled risk management (17b16c2)
- implement newsletter subscription endpoint (issue #2) (4100f1b)
- Implement Overflow-Safe Price Confidence Calculation (6fcb022)
- Implement permissioned creation and tiered market levels (Issue #14) (f6ad2af)
- Implement production-ready email service integration (Issue #14) (3077d91)
- implement production-ready Pyth oracle price fetching (1e84441), closes #25 #41 #49
- Implement Pyth Network oracle integration (Issue #2) (89037f4)
- Implement referral system with affiliate incentives (f2bf178), closes #11
- Implement snapshot-based voting weight to prevent flash voting attacks (e039a14), closes #3
- Implement State Footprint & TTL Management (Issue #6) (3702293)
- increase dispute window to 72 hours for better accessibility (3a49d12), closes #8
- invariant tests for market stake conservation (ef097f5)
- Multi-oracle keying tests (0374afa)
- perf: add k6 load test for blockchain data endpoints (issue #082) (7963d6f)
- perf: implement performance regression detection in CI (issue #083) (b8e71e3)
- Refactor Logic Duplication in Claim Paths (8bf392f)
- Replace panic! with ErrorCode returns and standardize event schema (b81510a)
- return 401 JSON+headers from api_key_middleware, add integration tests (2484683)
- test-pruning-behaviour (6d509e4)
- test-reentrancy (d62a880)
- tests for partial storage cleanup (77c3199)
- tts: add API key and JWT authentication (86b6396)
- tts: add health check endpoint (issue #085) (b30a5ed)
- tts: rate limiting, caching, error handling, input sanitization (e824ec1), closes #531 #532 #533 #534 #531 #532 #533 #534
- update_check_in_interval Function (5379e22)
- #406: rewrite get_markets_by_status to use status index (O(limit) vs O(total)) (501c3b7), closes #406
- remove unused administrative getter functions (bb2d17f)
- remove unused administrative getter functions (21874f2)
- #244: remove duplicate get_dispute_window and add dispute_timestamp regression tests (cd7335a), closes #244
- #257: remove duplicate imports in oracles_test and add oracle quality gate to CI (a230a8c), closes #257
- #290: replace .expect panic in generate_signature with fallible Result API (36ed34a), closes #290
- #395: separate webhook routing security model from admin routes (4be4df1), closes #395
- #396: store real recipient address in sent email events (78754d7), closes #396
- #397: recover orphaned processing jobs on worker startup (349b7b9), closes #397
- #398: remove Box::leak memory leak in analytics rate limiter (47cabae), closes #398
- #403/#404: define missing governance types and timelock constants (99258a4), closes #403 #404 #406
- #405: emit accurate oracle source metadata in oracle result events (562ad84), closes #405
- #407: enforce MAX_PAGE_LIMIT=100 on all paginated contract queries (a257618), closes #407
- add AssetClawedBack to ErrorCode enum for SAC compatibility (b27300c)
- add missing GovernanceToken variant to ConfigKey enum (b00dfd2), closes #3
- add winner count, boundary, and gas threshold tests (b0d2fbe)
- allow permissionless pruning of expired market data (8f32ca6), closes #47
- api: sync OpenAPI with runtime config and add auth security schemes (#400) (4505c01)
- base governance majority on total voting power instead of count (369dd49), closes #4
- blockchain: quarantine malformed events; add event parsing and tx monitor tests (b723f42)
- consolidate newsletter rate limiting to single 5/hour policy (#377) (c6fcbf5)
- contract: prevent market deadlock for parent-child outcomes (38f0e10)
- contracts: fix duplicate get_dispute_window and dead constant usage (#402) (4f1c617)
- contracts: remove duplicate cancel_market_admin entrypoint (#401) (3243498)
- decrement total_staked on refund to maintain accounting accuracy (94bcd0a)
- deep-prune voting storage on market prune (issue #84) (c81462c)
- efficient paginated user_bets endpoint using upstream offset/limit (closes #390) (3ee7bde)
- enforce betting deadline before resolution deadline (95fb998), closes #6
- enforce immutable payout mode throughout market lifecycle (4083803), closes #23
- enforce proxy trust boundaries for x-forwarded-for (closes #379) (c8edd6d)
- enforce reward claim finality before market pruning (95ed3d5), closes #125
- enforce strict separation between Admin and Guardian identities (673413c), closes #19 #19
- ensure absolute isolation of storage keys and vote revision (61a40e6)
- ensure all refund paths use SAC-safe transfer and respect circuit breakers (a6244b1), closes #93
- ensure comprehensive storage cleanup for bettor participation records (cbc8c4b)
- ensure consistent TTL management for all governance and protocol state (6227343)
- ensure robust market ID generation for high-volume environments (6a0a00a)
- expose get_timelock_duration endpoint and add query test (994c514)
- expose lib target so security_tests can import predictiq_api::security (835f00d)
- extend persistent storage TTL to safely cover pruning grace period (a234a5a), closes #144
- implement comprehensive security and governance improvements (00934d7), closes #192 #181 #170 #191
- implement configurable governance timelock duration (4ee3cb5), closes #13
- implement configurable winner threshold for payout mode switching (fde6463)
- implement creator deposit refunds for cancelled markets (42d16dd), closes #51
- implement flexible oracle result indexing per market (f99207b), closes #117
- implement granular balance tracking for locked fallback tokens (15cdbf3), closes #37
- implement granular role-based access control for administrative tasks (fd56a03), closes #118
- implement minimum bet threshold to prevent state-bloat attacks (3382469)
- implement parimutuel payout logic in claim_winnings (c8f098b), closes #2
- implement persistent bet counter for market outcomes (f342e61)
- implement programmatic error handling for SAC transfers (1b82e74), closes #11
- implement real parimutuel payout calculation in claim_winnings (3555caa), closes #91
- implement rounding and remainder handling for parimutuel payouts (0689993)
- implement tie-detection in resolution voting outcome calculation (7c8c0a0), closes #58
- import missing types and resolve undefined ConfigKey variant (2e4fac8)
- include actual total payout in ResolutionFinalized event (cbca6bf), closes #143
- invoke host update_current_contract_wasm in execute_upgrade (4109cb5)
- lock creator deposits until resolution finality (c7e47ff), closes #115
- maintain consistent i128 usage for vote weight summation (6540b02)
- mount security headers middleware globally (#373) (81653b1)
- move all circuit breaker state to instance storage for consistency (cc45af6), closes #38
- move ErrorBody to module level, fix rustfmt line lengths (3d4badd)
- oracles: tighten verify_oracle_health and add behavioral tests (4221fe0)
- paginate event fetch and bound watched_txs with TTL/cap (730c652)
- pass outcome=0 default in lib.rs withdraw_refund wrapper (8385910)
- pre-initialize outcome stake map during market creation to optimize gas (eed66ee)
- prevent gas-limit griefing in permissionless finalization (d956d8c)
- prevent payout mode changes after resolution process has started (#182) (3eb18f3)
- prevent redundant upgrade votes and implement hash cool-down (74c2b93)
- protect metrics endpoint, implement resolve_market, SCAN-based cache deletion, narrow invalidation scope (e145d5a)
- reflect node and contract health as explicit degraded states (09a3b5c)
- Remove unused imports and variables (b5aa6ac)
- reorder fee arithmetic to prevent precision loss in discounts (3441fcd)
- replace unsafe winner count heuristic with precise outcome counters (e412995), closes #24
- require guardian consensus for removal to prevent admin overreach (69e2a9f), closes #151
- require market resolution before unlocking voting tokens (05852e9)
- resolution: replace max_outcome=0 default with Option to prevent silent wrong-winner bug (3156780)
- resolve all 50 smart contract issues across security, gas, governance, and storage (7a9db68)
- resolve all tracked issues across contracts, backend, and docs (93117e2)
- resolve merge conflict, structured config keys, admin events, double-refund guard (5a39df3), closes #184 #185 #186
- resolve pre-existing compile errors blocking test execution (2f10646)
- restrict contract initialization to authorized deployer only (370114f), closes #28
- restrict creation deposit release to the market creator (6f323cd)
- reverse referral rewards and fees on market cancellation (a88d0c3)
- rpc: mask RPC errors with structured log and metrics (b3f283b)
- secure and configurable CORS (closes #380) (af46e8c)
- security: add trust-boundary tests for spoofed forwarding headers (#281) (c6381f9)
- security: strip non-ASCII control chars in sanitize::string; add Unicode fuzz and signing corpus tests (4266add)
- security: strip non-ASCII control chars in sanitize::string; add Unicode fuzz and signing corpus tests (9f51228)
- sync: add cursor progression tests under empty event streams (af739cb)
- synchronize errors.rs with missing SAC and Oracle error variants (b392a83), closes #113
- use BytesN<32> for WASM hash in PendingUpgrade struct (6f43f62), closes #32
- use overflow-safe math for cancellation threshold checks (ddd0237), closes #52
- use Redis for shared, atomic newsletter rate limiting (closes #378) (44b92de)
- verify OracleConfig struct schema is complete (28ec807), closes #124
- verify self-referral prevention is implemented (34c5730), closes #129
- #13: Implement Governance-Only Upgradability Pattern with 48-hour timelock (ae8afa0), closes #13
- #22: Implement Event-Driven Frontend Indexing Support (3507c2f), closes #22
- #246: add tie-handling tests for dispute voting (f505cf5), closes #246
- #252: add payout mode immutability tests (877d53b), closes #252
- #406: add status index to eliminate full reverse scan in get_markets_by_status (35c841d), closes #406
- #551: Add database indexes for newsletter subscriber queries (44b2830), closes #551
- #552: Implement soft delete for newsletter subscribers (5ef9c8f), closes #552
- #557: Add contract storage migration utilities (2a64813), closes #557
- add administrative function to withdraw protocol fee revenue (a5befd7), closes #26
- add API response compression middleware (c13cb81)
- add automated recovery path for circuit breaker (d32435a), closes #12
- add blockchain event replay (#110) and complete contract upgrade mechanism (#111) (775d0b2)
- Add comprehensive multi-token support tests for Issue #9 (7b8e185)
- Add comprehensive performance testing suite (1dd5353)
- Add comprehensive test suite with 60+ tests and CI/CD pipeline (eb06d34), closes #80
- add E2E tests for betting flow (issue #092) (4149ed6)
- Add market cancellation with zero-fee refunds (Issue #10) (274d1f0)
- add test to oracle failure fallback strategy (98b1d04)
- api: add structured error codes and consistent error schema (#399) (27dcdb9)
- api: add unit tests for chain reorg invalidation logic (40b90c0)
- api: add URL versioning strategy and request deduplication (03f15b6)
- bets: add property-based fuzz tests for bet placement inputs (8ef07fe)
- blockchain integration service (92d3325)
- centralize and version contract key schema (a4bc239)
- ci: add contract gas benchmark to CI (issue #084) (11b29a3)
- ci: add dependency vulnerability scanning (27f0b9e)
- ci: add Docker image build and push to CI (4ac6b29)
- ci: implement semantic versioning and changelog automation (0967121)
- Confidence threshold rounding tests (4e13454)
- contract: pagination for heavy queries (6ad5637)
- contract: pagination for heavy queries (6b7d083)
- contracts: add hard pagination bounds for query functions (#407) (df7305f)
- distinguish live/stale/rpc_fallback in blockchain responses (8ab8468)
- distinguish live/stale/rpc_fallback in blockchain responses (8fb1962)
- Emit Events for Monitoring State Resets (af06066)
- Event payload verification tests for oracle/dispute/resolution events (d0ae480)
- implement AI text-to-speech for social video narrations (a2f025f)
- Implement automated gas benchmarking and instruction optimization (Issue #7) (5ab7a28)
- Implement automated hybrid consensus resolution state machine (15a54be), closes #4
- implement caching and performance optimization (47fea70)
- implement claim_winnings function with payout calculation (fa5871e)
- Implement Classic Stellar Assets (SAC) interoperability (Issue #21) (c3de65e)
- implement comprehensive rate limiting and security measures (Issue #12) (c4f6c73)
- Implement comprehensive WCAG 2.1 AA accessibility testing (310dde3), closes #90
- implement conditional/chained prediction markets (Issue #25) (9699a8d)
- implement cursor-based pagination for list endpoints (3176c4f)
- implement database schema, migrations, and seeds for issue #13 (0306829)
- implement E2E user journey tests (Issue #92) (509a5c2)
- implement email webhook authenticity and replay protection for sendgrid (d345150)
- implement graceful shutdown for background workers (c6a3f1c)
- implement Guardian-led emergency pause to mitigate Admin hijacking (b3a7aab), closes #158
- implement infrastructure as code for deployment (6d6f088)
- implement linear reputation-based discounts for market creators (2fdb2b3), closes #153
- implement multisig emergency pause with partial freeze for Guardian-controlled risk management (17b16c2)
- implement newsletter subscription endpoint (issue #2) (4100f1b)
- Implement Overflow-Safe Price Confidence Calculation (6fcb022)
- Implement permissioned creation and tiered market levels (Issue #14) (f6ad2af)
- Implement production-ready email service integration (Issue #14) (3077d91)
- implement production-ready Pyth oracle price fetching (1e84441), closes #25 #41 #49
- Implement Pyth Network oracle integration (Issue #2) (89037f4)
- Implement referral system with affiliate incentives (f2bf178), closes #11
- Implement snapshot-based voting weight to prevent flash voting attacks (e039a14), closes #3
- Implement State Footprint & TTL Management (Issue #6) (3702293)
- increase dispute window to 72 hours for better accessibility (3a49d12), closes #8
- invariant tests for market stake conservation (ef097f5)
- Multi-oracle keying tests (0374afa)
- perf: add k6 load test for blockchain data endpoints (issue #082) (7963d6f)
- perf: implement performance regression detection in CI (issue #083) (b8e71e3)
- Refactor Logic Duplication in Claim Paths (8bf392f)
- Replace panic! with ErrorCode returns and standardize event schema (b81510a)
- return 401 JSON+headers from api_key_middleware, add integration tests (2484683)
- test-pruning-behaviour (6d509e4)
- test-reentrancy (d62a880)
- tests for partial storage cleanup (77c3199)
- tts: add API key and JWT authentication (86b6396)
- tts: add health check endpoint (issue #085) (b30a5ed)
- tts: rate limiting, caching, error handling, input sanitization (e824ec1), closes #531 #532 #533 #534 #531 #532 #533 #534
- update_check_in_interval Function (5379e22)