Skip to content

Fix: refresh docs, WebAuthn validation, data retention dry-run, cross-pod cache invalidation - #631

Merged
Abidoyesimze merged 4 commits into
Neurowealth:mainfrom
pope-h:fix/docs-security-retention-cache
Oct 20, 2026
Merged

Abidoyesimze merged 4 commits into
Neurowealth:mainfrom
pope-h:fix/docs-security-retention-cache

Conversation

@pope-h

@pope-h pope-h commented Oct 19, 2026

Copy link
Copy Markdown
Contributor

Summary

This PR implements four improvements across documentation, security, and operational tooling:

Test plan

  • Documentation index now covers all files in docs/
  • WebAuthn config validation occurs at startup in production/staging
  • Data retention jobs support dry-run mode via environment variable
  • Cache invalidation events broadcast via Redis pub/sub
  • Updated relevant documentation (WEBAUTHN.md, DATA_RETENTION_POLICY.md, CACHE_INVALIDATION_POLICY.md)

Closes #589
Closes #608
Closes #609
Closes #611

Remove stale branch/status/line-count sections from March 2026 vault-events branch.
Index now covers all documentation files in docs/ directory including October 2026 additions (LENDING, PROTECTION_FUND, RECURRING_WITHDRAWALS, MESSAGING_DELIVERY, WEBAUTHN, NOTIFICATION_PREFERENCES, QUEUE_HEALTH_METRICS, etc.).

Closes Neurowealth#589
…ion policy

- Add production/staging WebAuthn config validation at startup in src/index.ts
- Fails fast with clear error message if WEBAUTHN_RP_ID or WEBAUTHN_ORIGIN is missing
- Document attestation policy in WEBAUTHN.md: uses 'none' for consumer UX, no hardware vendor allowlist
- Authenticator integrity enforced via challenge replay protection, origin/RP validation, counter regression detection

Closes Neurowealth#608
- Add DATA_RETENTION_DRY_RUN environment variable for safe testing
- Logs counts that would be deleted per table without performing deletions
- Applies to all retention tables: auth_nonce, processed_event, dead_letter_event, agent_log, user_event
- Update DATA_RETENTION_POLICY.md with dry-run documentation and use cases

Closes Neurowealth#609
- Publish cache invalidation events on Redis channel for multi-pod deployments
- Subscribe to invalidation events in each pod to invalidate local caches
- Include correlationId and originPodId for filtering and observability
- Document cross-pod consistency SLA and configuration in CACHE_INVALIDATION_POLICY.md
- Graceful degradation to pod-local invalidation when Redis is unavailable

Closes Neurowealth#611
@drips-wave

drips-wave Bot commented Oct 19, 2026

Copy link
Copy Markdown

@pope-h Great news! 🎉 Based on an automated assessment of this PR, the linked Wave issue(s) no longer count against your application limits.

You can now already apply to more issues while waiting for a review of this PR. Keep up the great work! 🚀

Learn more about application limits

@Abidoyesimze
Abidoyesimze merged commit d31083b into Neurowealth:main Oct 20, 2026
4 of 7 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

2 participants