init: company-haness 설계

This commit is contained in:
DongHyeonka
2026-07-23 17:49:00 +09:00
parent 57d1bab894
commit f668d6a158
962 changed files with 98989 additions and 1 deletions
+46
View File
@@ -0,0 +1,46 @@
"""arm 실행 자체(transcript + stage 원장)에서 프로세스 지표를 균일 파생한다 — 하네스 ledger(old arm
엔 없음)에 의존하지 않아 3 arm 동일 잣대."""
import json
import yaml
def derive(transcript_path, stage_ledger_path):
m = {"input-tokens": 0, "output-tokens": 0, "turns": 0, "subagent-spawns": 0,
"hook-blocks": 0, "stage-retries": 0, "critique-revisions": 0,
"execution-failures": 0, "artifacts-produced": 0, "wall-seconds": 0,
"human-interventions": {"interactive": 0, "pre-authorized-receipts": 0}}
with open(transcript_path, encoding="utf-8") as f:
for line in f:
line = line.strip()
if not line:
continue
try:
ev = json.loads(line)
except (ValueError, TypeError):
continue
if not isinstance(ev, dict):
continue
t = ev.get("type")
if t == "usage":
m["input-tokens"] += ev.get("input_tokens", 0)
m["output-tokens"] += ev.get("output_tokens", 0)
elif t == "turn":
m["turns"] += 1
elif t == "agent_spawn":
m["subagent-spawns"] += 1
elif t == "hook_block":
m["hook-blocks"] += 1
elif t == "human_intervention":
k = "pre-authorized-receipts" if ev.get("kind") == "pre-authorized" else "interactive"
m["human-interventions"][k] += 1
with open(stage_ledger_path, encoding="utf-8") as f:
led = yaml.safe_load(f) or {}
for s in led.get("stages", []):
m["stage-retries"] += s.get("retries", 0)
m["critique-revisions"] += s.get("critique-revisions", 0)
m["artifacts-produced"] += len(s.get("artifacts", []))
m["wall-seconds"] += s.get("wall-seconds", 0)
if s.get("exit-code", 0) != 0:
m["execution-failures"] += 1
return m