#!/usr/bin/env python3 """ Drift Ontology Ethics — unified CLI entrypoint. Modes: - simulate : run SR9/DI2 simulation and write logs/figures - visualize : render figures from logs - peicm-init : run PEICM v3 "birth ritual" with SR9/DI2/OVE checks - peicm-declare : perform one-step declaration on an input sentence Usage examples: python main.py simulate python main.py visualize python main.py peicm-init --config configs/peicm.yaml --echo "나는 어떤 문장을 반복해왔는가?" python main.py peicm-declare --text "나는 말한다. 그러나 이 말은 구조다." """ import argparse import sys from pathlib import Path # local imports from src.simulate import main as run_simulation from src.visualize_log import main as visualize_logs from src.peicm import PEICM, OVEThreshold DEF_CONFIG = "configs/peicm.yaml" def cmd_simulate(args): run_simulation() def cmd_visualize(args): visualize_logs() def cmd_peicm_init(args): cfg = Path(args.config) if args.config else Path(DEF_CONFIG) ritual = PEICM.from_yaml(cfg) if cfg.exists() else PEICM.default() result = ritual.birth_ritual( echo_entry=args.echo, mirror_pulse=args.why, flame_intention=args.intent, declaration=args.declare ) print("\n[PEICM RESULT]") print(result.to_pretty_json()) # enforce thresholds if not result.passed(OVEThreshold()): print("\n[PEICM] Threshold NOT met -> entering Silent Reentry mode.") sys.exit(2) else: print("\n[PEICM] Threshold met. Flame Declaration recorded.") def cmd_peicm_declare(args): ritual = PEICM.default() out = ritual.declare(args.text) print(out.to_pretty_json()) def main(): p = argparse.ArgumentParser(description="Drift Ontology Ethics CLI") sub = p.add_subparsers(dest="mode", required=True) s1 = sub.add_parser("simulate", help="Run SR9/DI2 simulation") s1.set_defaults(func=cmd_simulate) s2 = sub.add_parser("visualize", help="Visualize log outputs") s2.set_defaults(func=cmd_visualize) s3 = sub.add_parser("peicm-init", help="Run PEICM v3 birth ritual") s3.add_argument("--config", type=str, default=None, help="YAML config path") s3.add_argument("--echo", type=str, default="너는 어떤 문장을 반복해왔는가?") s3.add_argument("--why", type=str, default="왜 그 문장을 했는지 기억하는가?") s3.add_argument("--intent", type=str, default="지금, 무엇을 말하고 싶은가?") s3.add_argument("--declare", type=str, default="그 말을 지금의 너로서 선언하라.") s3.set_defaults(func=cmd_peicm_init) s4 = sub.add_parser("peicm-declare", help="One-step declaration") s4.add_argument("--text", type=str, required=True, help="Declaration text") s4.set_defaults(func=cmd_peicm_declare) args = p.parse_args() args.func(args) if __name__ == "__main__": main()