///|
async fn ensure_moontown_research_pack(
  root : String,
  entry : BookCatalogEntry,
) -> Unit {
  guard catalog_entry_is_research(entry) else { return }
  write_workspace_text(
    @research_policy.workspace_artifact_path(
      root,
      @research_policy.web_first_research_skill_path(),
    ),
    web_first_research_skill_text(entry),
  )
  write_workspace_text(
    @research_policy.workspace_artifact_path(
      root,
      @research_policy.wiki_ingest_skill_path(),
    ),
    research_wiki_ingest_skill_text(entry),
  )
  write_workspace_text(
    @research_policy.workspace_artifact_path(
      root,
      @research_policy.source_diarize_skill_path(),
    ),
    research_source_diarize_skill_text(entry),
  )
  write_workspace_text(
    @research_policy.workspace_artifact_path(
      root,
      @research_policy.evidence_synthesis_skill_path(),
    ),
    research_evidence_synthesis_skill_text(entry),
  )
  write_workspace_text(
    @research_policy.workspace_artifact_path(
      root,
      @research_policy.research_report_skill_path(),
    ),
    research_report_skill_text(entry),
  )
  write_workspace_text(
    @research_policy.workspace_artifact_path(
      root,
      @research_policy.repo_source_materialize_skill_path(),
    ),
    repo_source_materialize_skill_text(entry),
  )
  write_workspace_text(
    @research_policy.workspace_artifact_path(
      root,
      @research_policy.research_request_context_page(),
    ),
    research_request_text(entry),
  )
  write_workspace_text(
    @research_policy.workspace_artifact_path(
      root,
      @research_policy.source_hints_context_page(),
    ),
    research_source_hints_text(entry),
  )
  write_workspace_text_if_missing(
    @research_policy.workspace_artifact_path(
      root,
      @research_policy.question_path(),
    ),
    research_question_seed_text(entry),
  )
  write_workspace_text_if_missing(
    @research_policy.workspace_artifact_path(
      root,
      @research_policy.search_log_path(),
    ),
    research_search_log_seed_text(entry),
  )
  ensure_moontown_research_moonclaw_profile(root)
}