Accrue.Application (accrue v0.3.0)

Copy Markdown View Source

OTP Application entry point for Accrue (FND-05, D-05).

Empty-supervisor pattern: Accrue is a library, not a service. It does NOT start host-owned components (host Repo, Oban, host ChromicPDF pool, host Finch pool) — the host application's supervision tree owns those (D-33, D-42, Pitfall #4).

Before the supervisor starts we run three boot-time validations:

  1. Accrue.Config.validate_at_boot!/0 — validates the current :accrue application env against the NimbleOptions schema. Misconfig fails loud, before any state is touched.

  2. Accrue.Auth.Default.boot_check!/0 — refuses to boot in :prod when :auth_adapter still points at the dev-permissive default (D-40, T-FND-07 mitigation).

  3. warn_on_secret_collision/0 — emits a Logger.warning/1 (not fatal) when the configured Connect webhook endpoint secret is byte-identical to the platform endpoint secret. Stripe issues a SEPARATE signing secret per Connect endpoint in the Stripe Dashboard; mixing them causes silent signature verification failures (Phase 5 Pitfall 5; guides/connect.md).