G&G Attendance Relay v1.0.6

Fixes:
- Disables idle fallback polling to the main CRM. Jobs are pushed from Perfex to the relay.
- Prevents a completed connector job from being re-issued while CRM delivery is queued.
- Treats CRM HTTP 422 "Synchronization job is already closed" as an idempotent duplicate and continues the queue.
- Moves other permanent 4xx validation errors to storage/dead-letter instead of blocking newer attendance.
- Exact duplicate queued requests are suppressed.
- Local claimed-job recovery reduced from 15 minutes to 3 minutes.
- Status now shows job_id, fallback enabled/disabled and dead-letter count.

UPGRADE:
1. KEEP your existing storage/ folder. Do not delete it.
2. Replace index.php, lib.php, config.php, cron.php, diagnostic.php and .htaccess with this package.
3. Open /relay/status and verify version 1.0.6.
4. Run /relay/flush?key=YOUR_CRON_KEY&limit=100&force=1 once.
5. Refresh Perfex after remaining reaches 0 (or inspect dead_letter_requests if non-zero).

Security:
Rotate RELAY_CRON_KEY and RELAY_STATUS_KEY after testing because previous screenshots exposed them.
