#!/usr/bin/env python3 """ Environment verification script for Hermes snippet lane. Measures and records actual system state as JSON. """ import os import sys import json import subprocess from datetime import datetime, timezone def measure_environment(): """Measure actual environment state.""" results = { "timestamp_utc": datetime.now(timezone.utc).isoformat(), "python_version": sys.version, "python_path": sys.executable, "working_directory": os.getcwd(), "directories": {}, "environment_vars": {}, "check_result": "unknown" } # Check required directories dirs_to_check = [ "/root/.hermes/profiles/spark", "/root/.hermes/wizard-outputs", "/root/troupe-standup", "/root/troupe-standup/wizard-work/spark" ] all_dirs_exist = True for dir_path in dirs_to_check: exists = os.path.isdir(dir_path) results["directories"][dir_path] = {"exists": exists} if not exists: all_dirs_exist = False # Check key environment variables env_vars_to_check = ["FORGE_TOKEN", "PATH"] for var in env_vars_to_check: results["environment_vars"][var] = var in os.environ # Check git availability try: git_result = subprocess.run(["git", "--version"], capture_output=True, text=True) results["git_available"] = git_result.returncode == 0 results["git_version"] = git_result.stdout.strip() if git_result.returncode == 0 else None except Exception: results["git_available"] = False results["git_version"] = None # Check troupe-standup git repo results["troupe_is_git_repo"] = os.path.isdir("/root/troupe-standup/.git") results["check_result"] = "PASS" if all_dirs_exist and results.get("git_available", False) else "FAIL" return results if __name__ == "__main__": results = measure_environment() # Write to file output_path = "/root/.hermes/wizard-outputs/spark/environment_check_result.json" with open(output_path, "w") as f: json.dump(results, f, indent=2) print(json.dumps(results, indent=2)) # Exit 0 on PASS, 1 on FAIL sys.exit(0 if results["check_result"] == "PASS" else 1)