Both real target tables (fundamental_snapshots, earnings_events) carry an import_run_id; stamping requires the current run's id. A2 (the earnings importer) is the first real consumer, so promote gains a run_id argument rather than having importers hack the running row out of the framework. Protocol + call site updated; the A1 fake importer now stamps and asserts import_run_id. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>