repo hygiene: track the PINK launcher import closure
67 production .py modules that the running PINK service imports but which were never committed: prod/bingx/ (HTTP client, market/user streams, journal, config), prod/clean_arch/ adapters/persistence/runtime/dita/dita_v2 production modules and their co-located tests. Rule going forward: every module imported by launch_dolphin_pink.py / pink_direct.py must appear in git ls-files. Excludes _backup dirs, __pycache__, and non-code files. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
74
prod/clean_arch/sim/run.py
Normal file
74
prod/clean_arch/sim/run.py
Normal file
@@ -0,0 +1,74 @@
|
||||
#!/usr/bin/env python3
|
||||
"""CLI for large-scale policy simulation and fuzzing."""
|
||||
|
||||
from __future__ import annotations
|
||||
|
||||
import argparse
|
||||
import json
|
||||
|
||||
from prod.clean_arch.sim.fuzzer import FuzzConfig, fuzz_stack
|
||||
|
||||
|
||||
def main() -> int:
|
||||
parser = argparse.ArgumentParser(description="Run clean-arch policy simulation/fuzzing.")
|
||||
parser.add_argument("--transactions", type=int, default=1_000_000)
|
||||
parser.add_argument("--seed", type=int, default=42)
|
||||
parser.add_argument("--bad-input-rate", type=float, default=0.01)
|
||||
parser.add_argument("--network-drop-rate", type=float, default=0.001)
|
||||
parser.add_argument("--network-duplicate-rate", type=float, default=0.001)
|
||||
parser.add_argument("--price-sigma", type=float, default=0.015)
|
||||
parser.add_argument("--capture-limit", type=int, default=2_000)
|
||||
parser.add_argument("--runtime-namespace", type=str, default="pink")
|
||||
parser.add_argument("--anomaly-sensor-key", type=str, default="")
|
||||
parser.add_argument("--mirror-legacy-sensor-key", action="store_true")
|
||||
parser.add_argument("--aggressive", action="store_true", help="Enable aggressive chaos/anomaly injection")
|
||||
parser.add_argument("--json", action="store_true", help="Emit JSON summary")
|
||||
args = parser.parse_args()
|
||||
|
||||
report = fuzz_stack(
|
||||
FuzzConfig(
|
||||
transactions=args.transactions,
|
||||
seed=args.seed,
|
||||
bad_input_rate=args.bad_input_rate,
|
||||
network_drop_rate=args.network_drop_rate,
|
||||
network_duplicate_rate=args.network_duplicate_rate,
|
||||
price_sigma=args.price_sigma,
|
||||
capture_limit=args.capture_limit,
|
||||
aggressive=args.aggressive,
|
||||
runtime_namespace=args.runtime_namespace,
|
||||
anomaly_sensor_key=(args.anomaly_sensor_key.strip() or None),
|
||||
mirror_legacy_sensor_key=args.mirror_legacy_sensor_key,
|
||||
)
|
||||
)
|
||||
|
||||
payload = {
|
||||
"transactions": report.transactions,
|
||||
"capital_final": report.capital_final,
|
||||
"equity_final": report.equity_final,
|
||||
"open_notional_final": report.open_notional_final,
|
||||
"policy_events": report.policy_events,
|
||||
"trade_events": report.trade_events,
|
||||
"account_events": report.account_events,
|
||||
"logs_emitted": report.logs_emitted,
|
||||
"network_dropped": report.network_dropped,
|
||||
"network_duplicated": report.network_duplicated,
|
||||
"anomaly_counts": report.anomaly_counts,
|
||||
"anomaly_origin_counts": report.anomaly_origin_counts,
|
||||
"injected_anomaly_counts": report.injected_anomaly_counts,
|
||||
"emergent_anomaly_counts": report.emergent_anomaly_counts,
|
||||
"anomaly_sensor_payload": report.anomaly_sensor_payload,
|
||||
"anomaly_samples": report.anomaly_samples,
|
||||
"sample_policy_events": report.sample_policy_events,
|
||||
}
|
||||
if args.json:
|
||||
print(json.dumps(payload, indent=2, sort_keys=True))
|
||||
else:
|
||||
print("Clean-arch policy simulation complete")
|
||||
for k, v in payload.items():
|
||||
if k != "sample_policy_events":
|
||||
print(f"{k}: {v}")
|
||||
return 0
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
raise SystemExit(main())
|
||||
Reference in New Issue
Block a user