@@ -116,6 +116,16 @@ def execute_build_knowledge(
116116 finished_at = now ,
117117 )
118118
119+ if request .baseline_only and previous_watermark is None :
120+ return _record_baseline_run (
121+ request = request ,
122+ settings = settings ,
123+ uow = uow ,
124+ id_generator = id_generator ,
125+ event_watermark = event_watermark ,
126+ now = now ,
127+ )
128+
119129 run_id = id_generator .new_id ()
120130 uow .knowledge_build_runs .add (
121131 KnowledgeBuildRun (
@@ -261,6 +271,56 @@ def _fresh_running_run(
261271 return None
262272
263273
274+ def _record_baseline_run (
275+ * ,
276+ request : BuildKnowledgeRequest ,
277+ settings : BuildKnowledgeSettings ,
278+ uow : IUnitOfWork ,
279+ id_generator : IIdGenerator ,
280+ event_watermark : int ,
281+ now : datetime ,
282+ ) -> BuildKnowledgeResult :
283+ """Persist a no-provider watermark for history that predates lifecycle builds."""
284+
285+ run_id = id_generator .new_id ()
286+ run_summary = (
287+ "Baselined legacy episode without invoking build_knowledge; "
288+ "future events after this watermark remain eligible."
289+ )
290+ uow .knowledge_build_runs .add (
291+ KnowledgeBuildRun (
292+ id = run_id ,
293+ repo_id = request .repo_id ,
294+ episode_id = request .episode_id ,
295+ trigger = request .trigger ,
296+ status = KnowledgeBuildRunStatus .SKIPPED ,
297+ event_watermark = event_watermark ,
298+ previous_event_watermark = None ,
299+ provider = settings .provider ,
300+ model = settings .model ,
301+ reasoning = settings .reasoning ,
302+ run_summary = run_summary ,
303+ error_code = "legacy_episode_baselined" ,
304+ started_at = now ,
305+ finished_at = now ,
306+ created_at = now ,
307+ )
308+ )
309+ return BuildKnowledgeResult (
310+ status = KnowledgeBuildRunStatus .SKIPPED ,
311+ run_id = run_id ,
312+ event_watermark = event_watermark ,
313+ previous_event_watermark = None ,
314+ provider = settings .provider ,
315+ model = settings .model ,
316+ reasoning = settings .reasoning ,
317+ write_count = 0 ,
318+ skipped_item_count = 0 ,
319+ run_summary = run_summary ,
320+ error_code = "legacy_episode_baselined" ,
321+ )
322+
323+
264324def _skipped_result (
265325 * ,
266326 settings : BuildKnowledgeSettings ,
0 commit comments