Foundry.Annotations (foundry v0.1.6)

Copy Markdown

Registers standard Foundry annotation module attributes as persistent.

Modules that declare Foundry-specific annotations must use Foundry.Annotations BEFORE any other use macros. This suppresses Elixir compiler warnings about "module attribute was set but never used" while keeping attributes accessible at runtime via module.__info__(:attributes) for the Foundry rules engine.

Registered attributes:

  • @compliance - List of regulatory requirement IDs (e.g. [:RG_MGA_005])
  • @telemetry_prefix - Structured telemetry prefix list
  • @adapter_name - String identifier for adapter modules
  • @foundry - Map of Foundry metadata for Oban workers and others
  • @runbook - Path to operational runbook document
  • @adrs - List of ADR references
  • @idempotency_key - Reactor idempotency key for deduplication (atom or tuple)
  • @spec_invariants - Custom spec rule invariants and constraints
  • @step_side_effects - Map of step names to lists of side effect declarations

Usage:

use Foundry.Annotations

@compliance [:RG_MGA_005, :RG_UK_011]
@telemetry_prefix [:igaming_ref, :promotions, :bonus_campaign]

use Ash.Resource, domain: MyApp.Domain, ...