import argparse
import sys
from pathlib import Path
def main() -> int:
p = argparse.ArgumentParser(description="DFlash numerical-parity reference dumper")
p.add_argument("target_model_dir", type=Path)
p.add_argument("drafter_dir", type=Path)
p.add_argument("output_dir", type=Path)
args = p.parse_args()
if not args.target_model_dir.is_dir():
print(f"FAIL: target_model_dir {args.target_model_dir} not found", file=sys.stderr)
return 1
if not args.drafter_dir.is_dir():
print(f"FAIL: drafter_dir {args.drafter_dir} not found", file=sys.stderr)
return 1
args.output_dir.mkdir(parents=True, exist_ok=True)
print("=" * 60)
print("dflash_parity.py — ADR-034 P1 scaffold (NOT YET IMPLEMENTED)")
print("=" * 60)
print(f"Target: {args.target_model_dir}")
print(f"Drafter: {args.drafter_dir}")
print(f"Output: {args.output_dir}")
print()
print("STATUS: This is a scaffold. Implementation requires:")
print(" 1. z-lab/Qwen3.6-27B-DFlash (or similar) drafter checkpoint downloaded")
print(" 2. Target model safetensors (Qwen 3.6 27B or 35B-A3B)")
print(" 3. mlx installation: pip install mlx")
print(" 4. ~150-250 LOC to wrap /opt/dflash/dflash/model_mlx.py + dump intermediates")
print()
print("Reference: /opt/dflash/dflash/model_mlx.py (582 LOC, pinned @ 94e4abc5)")
print("Target Rust path: src/inference/spec_decode/dflash/forward.rs (2158 LOC)")
print("ADR: docs/ADR-034-speculative-decode-end-to-end.md §P4")
return 2
if __name__ == "__main__":
sys.exit(main())