
# Automatisering

De automatisering van Rudel voorkomt dat wegwerpsandboxes zich eindeloos opstapelen. Eén WP-Cron-event per uur, `rudel_scheduled_cleanup`, kan:

- het opschoningsbeleid uitvoeren (vervaldatum, leeftijd en inactiviteit)
- opschoning van samengevoegde branches uitvoeren
- rapporteren over sandboxes die zijn verlopen of bijna verlopen

## Configuratie

Automatisering leest deze sleutels uit de optie `rudel_config`. De volledige lijst staat onder [Configuratie](https://rudel.inline0.dev/nl/docs/configuration).

| Sleutel | Doel | Standaardwaarde |
|-----|---------|---------|
| `auto_cleanup_enabled` | Het opschoningsbeleid bij elk event uitvoeren | `1` |
| `auto_cleanup_merged` | Ook sandboxes verwijderen waarvan de Git-worktreebranches zijn samengevoegd | `0` |
| `expiring_environment_notice_days` | Sandboxes rapporteren die binnen N dagen verlopen | `0` |
| `max_age_days` | Leeftijdslimiet voor het opschoningsbeleid | `0` |
| `max_idle_days` | Inactiviteitslimiet voor het opschoningsbeleid | `0` |
| `default_ttl_days` | Vervaldatum voor nieuwe sandboxes | `0` |

Met de standaardwaarden wordt het event gepland, maar worden alleen sandboxes verwijderd die expliciet een vervaldatum in het verleden hebben; er is immers geen leeftijds- of inactiviteitslimiet ingesteld en ook geen standaard-TTL.

## WP-Cron

Activering plant het event in en bij elk verzoek wordt de planning opnieuw gecontroleerd: het event bestaat zolang een van `auto_cleanup_enabled`, `auto_cleanup_merged` of `expiring_environment_notice_days` niet nul is, en wordt anders verwijderd. Deactivering verwijdert het event.

Er zijn geen automatiseringsopdrachten. Wijzig de instellingen in `rudel_config`:

```bash
wp option update rudel_config '{"auto_cleanup_enabled":1,"max_idle_days":7,"expiring_environment_notice_days":2}' --format=json
wp rudel status
```

`wp rudel status` toont `Auto cleanup`, `Auto cleanup merged`, `Expiry notice days` en `Automation scheduled`.

## Vervalrapporten

Als `expiring_environment_notice_days` is ingesteld, verzamelt elke uitvoering sandboxes met een `expires_at` binnen dat aantal dagen en geeft ze door aan de actie `rudel_after_automation_expiring_environments`, opgesplitst in `expiring` en `expired`. Rudel verstuurt zelf geen meldingen; koppel de actie aan een melding voor eigenaren.

```php
add_action(
    'rudel_after_automation_expiring_environments',
    function ( array $report ): void {
        foreach ( $report['expiring'] as $sandbox ) {
            error_log( $sandbox['id'] . ' expires at ' . $sandbox['expires_at'] );
        }
    }
);
```

## Nu uitvoeren

Gebruik handmatige opschoning voor voorspelbare lokale uitvoeringen of CI-runs:

```bash
wp rudel cleanup --dry-run
wp rudel cleanup
```

Vanuit PHP voert `Rudel::run_automation()` dezelfde taken uit als het event cron.
