Cybersecurity-Projects/PROJECTS/intermediate/credential-rotation-enforcer/spec/unit
CarterPerez-dev 67d65a934f feat(notifiers): structured-log subscriber + Telegram bidirectional bot
LogNotifier subscribes (Drop overflow) and emits stdlib Log lines with
structured kwargs (credential_id, rotation_id, severity, etc.) suitable
for downstream ingestion by journald/vector/fluentd.

Telegram is a thin HTTP::Client wrapper for sendMessage and getUpdates.
TelegramSubscriber sends emoji-prefixed alerts on RotationFailed,
DriftDetected, PolicyViolation, AlertRaised; success notifications gated
by the notify_on_success flag. Errors are swallowed so a flaky bot never
blocks the engine.

TelegramBot does long-polling getUpdates and dispatches commands:
- viewer tier: /status /queue /history /alerts /help
- operator tier: viewer + /rotate + /snooze
ACL is by chat_id allowlist (bot token + chat IDs in env vars).
/rotate publishes RotationScheduled to the bus.

11 unit specs cover send_message + error handling + getUpdates parsing,
subscriber dispatch, success-suppression flag, and bot ACL enforcement
(unauthorized / viewer-blocked-from-mutations / operator-can-rotate).
2026-04-29 01:07:44 -04:00
..
audit feat(audit): hash chain + HMAC ratchet + Merkle batches + Ed25519 signing 2026-04-29 00:45:54 -04:00
aws feat(rotators): AWS Secrets Manager rotator with SigV4 signer + secrets client 2026-04-29 01:02:40 -04:00
cli feat(cre): source tree skeleton with empty module dirs and CI workflow 2026-04-28 23:54:59 -04:00
compliance feat(cre): source tree skeleton with empty module dirs and CI workflow 2026-04-28 23:54:59 -04:00
crypto feat(crypto): AEAD envelope encryption with AES-256-GCM, KEK loader, secure random 2026-04-29 00:43:12 -04:00
domain feat(domain): NewSecret and CredentialVersion structs 2026-04-29 00:32:53 -04:00
engine feat(engine): Scheduler fiber publishes SchedulerTick on a fixed interval 2026-04-29 01:05:44 -04:00
events feat(cre): source tree skeleton with empty module dirs and CI workflow 2026-04-28 23:54:59 -04:00
github feat(rotators): GitHub fine-grained PAT rotator + thin GitHub API client 2026-04-29 01:05:10 -04:00
notifiers feat(notifiers): structured-log subscriber + Telegram bidirectional bot 2026-04-29 01:07:44 -04:00
persistence feat(persistence): SQLite adapter with credentials/versions/rotations/audit repos 2026-04-29 00:36:22 -04:00
policy feat(policy): Crystal Policy as Code DSL with macros + compile-time enum autocast 2026-04-29 00:56:29 -04:00
rotators feat(rotators): GitHub fine-grained PAT rotator + thin GitHub API client 2026-04-29 01:05:10 -04:00
tui feat(cre): source tree skeleton with empty module dirs and CI workflow 2026-04-28 23:54:59 -04:00
vault feat(rotators): Vault dynamic-secrets rotator + thin Vault client 2026-04-29 01:04:12 -04:00
.gitkeep feat(cre): source tree skeleton with empty module dirs and CI workflow 2026-04-28 23:54:59 -04:00