# Developer

This manual is for engineers extending the join-link generation feature. It explains the layering (program-session ↔ join-link-scheduler ↔ join-link-generation), the atomic-claim concurrency gate that keeps the AWS event and the fallback cron from double-running, and the cascade-safe direct-UPDATE rule for `ProgramSession`. It will grow to cover safe extension points.

## Overview

Module map and the single generation entry point `generateForSession`.

## Prerequisites

Familiarity with NestJS controller→service→repository layering and TypeORM.

## Core procedures

Add a trigger path, change timing/flags, or extend the bulk-registration payload — safely.

## Reference

Key files, the `JoinLinkGenerationStatus` machine, and the `claimForLinkGeneration` atomic gate.

## Troubleshooting

Common pitfalls — the online-session cascade FK null-out (23505), and races if a trigger bypasses the claim.

## Changelog

Notable code-level changes.
