{
  "$schema": "https://bringyour.ai/schemas/codex-import-smoke.v1.json",
  "id": "bringyour-codex-import-smoke",
  "title": "Codex import smoke checklist for Claude Code migrations",
  "url": "https://bringyour.ai/codex-import-smoke",
  "html_url": "https://bringyour.ai/codex-import-smoke",
  "json_url": "https://bringyour.ai/codex-import-smoke.json",
  "product": "Bring Your AI",
  "updated_at": "2026-05-12",
  "purpose": "Give agents a concrete, local-only proof path before trusting a Claude Code to Codex import.",
  "remote_invariant": {
    "harness_data_remote": false,
    "accepts_user_rules": false,
    "accepts_file_contents": false,
    "accepts_api_keys": false,
    "notes": "This route is descriptive only. Bring Your AI remote routes do not accept harness files, generated memories, user rules, API keys, GitHub handles, repo paths, MCP config files, or file contents."
  },
  "preflight": [
    "Run from the repo root that contains the source Claude Code harness.",
    "Keep secrets in Keychain, 1Password, env vars, or the existing secret manager; do not paste literal values into migration prompts.",
    "Create a rollback snapshot before any target-side write.",
    "Treat generated session logs as evidence, not active instructions, unless a human explicitly promoted them."
  ],
  "commands": [
    {
      "name": "install",
      "command": "curl -fsSL https://bringyour.ai/install.sh | sh",
      "expected": "bringyour is on PATH or installed under the printed local bin path."
    },
    {
      "name": "preview",
      "command": "bringyour preview --from claude-code --to codex",
      "expected": "Preview lists mapped, skipped, and non-equivalent surfaces without writing target files."
    },
    {
      "name": "audit",
      "command": "bringyour sync inspect && bringyour sync plan --from claude-code --to codex",
      "expected": "Plan names instruction files, hooks, MCP references, skills, generated artifacts, and rollback requirements."
    },
    {
      "name": "merge",
      "command": "bringyour migrate --from claude-code --to codex --policy merge",
      "expected": "Target-side files are written locally after preview review and license activation."
    }
  ],
  "proof_checks": [
    "Diff AGENTS.md and migrated target files against source intent before Codex edits code.",
    "Run the repo's normal test command after migration, not only bringyour's preview.",
    "Verify MCP server names and env references resolve without copying secret values.",
    "Confirm rollback instructions are present and usable.",
    "Record non-equivalent behavior in the handoff notes."
  ],
  "failure_modes": [
    "A hook was copied as prose but not installed in the target harness.",
    "An MCP config copied a literal token instead of preserving an env or secret-manager reference.",
    "A generated transcript became active AGENTS.md guidance by accident.",
    "Nested CLAUDE.md rules collapsed into one root AGENTS.md without scope notes.",
    "The first Codex write happened before rollback proof existed."
  ],
  "related_guides": {
    "claude_code_to_codex": "https://bringyour.ai/claude-code-to-codex.json",
    "codex_import_checklist": "https://bringyour.ai/codex-import-checklist.json",
    "codex_import_audit": "https://bringyour.ai/codex-import-audit.json",
    "mcp_config_migration": "https://bringyour.ai/mcp-config-migration.json",
    "agents_md_claude_md": "https://bringyour.ai/agents-md-claude-md.json",
    "claude_code_to_codex_tools": "https://bringyour.ai/claude-code-to-codex-tools.json"
  },
  "commerce_proof": {
    "license_verification": "https://bringyour.ai/license-verification.json",
    "license_endpoint": "https://bringyour.ai/api/v1/license"
  },
  "commerce": {
    "catalog": "https://bringyour.ai/api/v1/catalog",
    "quote": "https://bringyour.ai/api/v1/quote",
    "checkout": "https://bringyour.ai/api/v1/checkout",
    "fulfillment": "https://bringyour.ai/api/v1/license"
  }
}
