/**
 * Source model and DSL for variant topology, source bindings, artifact assembly
 * and outgoing publication integration.
 *
 * <p>Naming convention for callbacks and lifecycle hooks:
 * <ul>
 * <li>{@code whenXxx(...)}: register callback (supports replay where documented);</li>
 * <li>{@code configureXxx(...)}: configure model elements;</li>
 * <li>{@code notifyXxx(...)}: internal event dispatch helpers (not part of public DSL).</li>
 * </ul>
 *
 * <p>Closure-based callbacks use delegate-first resolution via
 * {@code @DelegatesTo}. Delegate-only style is suitable for simple callbacks.
 * For nested closures prefer explicit callback parameters ({@code ctx -> ...}).
 */
package org.implab.gradle.common.sources;
