/// engine/evolve_auto_wire.mbt —— Omega 打回自动回流(automatically learn on reject)
///
/// 目标:让 fist-mbt 的强验证流程「会犯错」自动沉淀成可演绎的教训——
/// 每次 Omega 语料审核 / 成果复验被打回(reject)时,无需人工额外调 `evolve_lesson`,
/// 引擎即自动把失败原因归档成一条 `[lesson]<类目>` 资产入 DGM。
///
/// 设计约束:engine 不能反向依赖 server(会成环),故此处只复用
/// `@evolve.evolve_lesson_persist`(evolve 包仅依赖 store),直接把教训落库到
/// evolve_artifacts,不再经过内存 Archive。落库后 plan/claim 的 inject 与
/// dead_ends 均可直接检索到该教训。

///|
/// /// Omega 打回自动落一条教训。cat 为类目 tag,reason 为失败原因,fix 为纠偏提示。
/// seq 用于同一类目、同一时刻多次打回的 id 趋唯一;id 纳入 cat,
/// 保证 spec 打回 / 复验打回 / 超限升级在同一时间戳下互不覆盖(upsert 语义防丢史)。
pub fn FistEngine::omega_auto_lesson(
  self : FistEngine,
  seq : Int,
  cat : String,
  reason : String,
  fix : String,
  now : String,
) -> Bool {
  let id = "omega-lesson-" +
    @evolve.lesson_ts_part(now) +
    "-" +
    cat +
    "-r" +
    seq.to_string()
  // 仅 SQLite 后端支持 evolve_artifacts 持久化;内存后端返回 false(不产生副作用)
  @evolve.evolve_lesson_persist(
    self.store.sqlite_store(),
    id~,
    cat,
    reason,
    fix,
    now,
  )
}