#!/usr/bin/env python3
"""Rebuild p2t_e2e.py tail: cut from broken _f.write line to EOF, re-append
the full remaining test flow (verified logic from previous working runs)."""
p = '/opt/struktur/obsidian-graphiti-import-staging-p2i/p2t_e2e.py'
lines = open(p, encoding='utf-8').read().split('\n')
start = next(i for i, l in enumerate(lines) if "_f.write(" in l and "SOL-005" in l)
head = lines[:start]
tail = '''import hashlib as _hh
os.makedirs('/tmp/Solutions', exist_ok=True)
with open('/tmp/Solutions/SOL-005-content-briefing-modul.md', 'w') as _fw:
_fw.write('# SOL-005 Content Briefing Modul')
os.chdir('/tmp')
spec2 = importlib.util.spec_from_file_location(
"p2t_writer", "/tmp/aa043-p2i/aa043_single_writer_staging.py")
wmod = importlib.util.module_from_spec(spec2)
sys.modules["p2t_writer"] = wmod
spec2.loader.exec_module(wmod)
assert str(wmod.DB) == KNOWLEDGE_DB, str(wmod.DB)
wmod.inventory = lambda: []
kc = kconn()
qrow = kc.execute("SELECT id FROM graphiti_import_queue WHERE obsidian_path LIKE '%SOL-005-content-briefing-modul%' AND action='CREATE' ORDER BY id DESC LIMIT 1").fetchone()
assert qrow is not None, "no queue row"
qid = qrow["id"]
kc.close()
import io, contextlib
buf = io.StringIO()
with contextlib.redirect_stdout(buf):
wmod.run(qid, dry_run=True)
out = json.loads(buf.getvalue().strip().splitlines()[-1])
assert out["dry_run"] is True and out["action"] == "WRITE_REQUIRED", out
print("PASS Writer DRY-RUN WRITE_REQUIRED")
# no_write case
conn_state = sqlite3.connect(STATE_DB); conn_state.row_factory = sqlite3.Row
fr = conn_state.execute("select * from files where id=34").fetchone()
res2 = mod.post(fr)
assert res2["status"] == "no_write", res2
print("PASS no_write weiterhin korrekt")
conn_state.close()
assert not _calls, _calls
print("PASS kein Netzwerk-POST")
urllib.request.urlopen = _real_urlopen
import subprocess
r = subprocess.run(["python3", "-m", "pytest", "-q",
"/opt/struktur/obsidian-graphiti-reconciler-staging/test_pipeline.py",
"/opt/struktur/obsidian-graphiti-reconciler-staging/test_classifier.py",
"/opt/struktur/obsidian-graphiti-reconciler-staging/tests/test_aa043_contract.py"],
cwd="/opt/struktur", capture_output=True, text=True)
print(r.stdout[-200:])
assert r.returncode == 0
print("=== P2T E2E: all checks passed ===")'''
open(p, 'w', encoding='utf-8').write('\n'.join(head) + '\n' + tail + '\n')
import py_compile
py_compile.compile(p, doraise=True)
print('tail rebuilt + SYNTAX_OK')