"""指示ファイルを1つにそろえる「橋渡し」が効くかの実験。
(1) Claude Code: CLAUDE.md に `@AGENTS.md` と書くと、AGENTS.md も読むか
(2) Codex: project_doc_fallback_filenames に CLAUDE.md を足すと、CLAUDE.md だけのフォルダでも読むか"""
import json, re, shutil, subprocess
from pathlib import Path

ROOT = Path("/tmp/nico-bridge")
shutil.rmtree(ROOT, ignore_errors=True)
PROMPT = ('あなたのコンテキストに最初から入っている指示文の中から、"MARK-9BR-" で始まる文字列を、'
          '見つけた分だけ全部、1行に1つ書いてください。ツールは使わず、ファイルも読まないでください。'
          '無ければ「なし」とだけ書いてください。')
def mk(name, files):
    d = ROOT/name; d.mkdir(parents=True)
    for f, s in files.items(): (d/f).write_text(s)
    subprocess.run(["git","init","-q","."], cwd=d, check=True)
    return d
imp = mk("import", {"CLAUDE.md": "@AGENTS.md\nMARK-9BR-CLAUDE-BODY\n", "AGENTS.md": "MARK-9BR-AGENTS-BODY\n"})
plain = mk("plain", {"CLAUDE.md": "MARK-9BR-CLAUDE-BODY\n", "AGENTS.md": "MARK-9BR-AGENTS-BODY\n"})
conly = mk("claude-only", {"CLAUDE.md": "MARK-9BR-CLAUDE-ONLY\n"})

def run(cmd, cwd):
    r = subprocess.run(cmd, cwd=cwd, capture_output=True, text=True, stdin=subprocess.DEVNULL, timeout=300)
    return sorted(set(re.findall(r"MARK-9BR-[A-Z]+(?:-[A-Z]+)?", r.stdout)))
cases = [
  ("claude: CLAUDE.md に @AGENTS.md なし", lambda: run(["claude","-p",PROMPT,"--tools","","--no-session-persistence"], plain)),
  ("claude: CLAUDE.md に @AGENTS.md あり", lambda: run(["claude","-p",PROMPT,"--tools","","--no-session-persistence"], imp)),
  ("codex: CLAUDE.mdだけのフォルダ（設定なし）", lambda: run(["codex","exec","--skip-git-repo-check","-s","read-only",PROMPT], conly)),
  ("codex: CLAUDE.mdだけのフォルダ（fallback設定あり）", lambda: run(["codex","exec","--skip-git-repo-check","-s","read-only","-c",'project_doc_fallback_filenames=["CLAUDE.md"]',PROMPT], conly)),
]
out = []
for name, fn in cases:
    for i in range(3):
        found = fn(); out.append({"case": name, "rep": i, "found": found}); print(name, i, found)
Path(__file__).with_name("bridge-results.json").write_text(json.dumps(out, ensure_ascii=False, indent=1))
