{
  "title": "Paperclip AI Office — Governance Demo v0",
  "agents": [
    { "id": "atlas", "name": "Atlas", "emoji": "🤖", "color": "#4A90D9", "role": "Chief Ops" },
    { "id": "hermes", "name": "Hermes", "emoji": "🦾", "color": "#7B68EE", "role": "Delivery" },
    { "id": "nova", "name": "Nova", "emoji": "🧠", "color": "#50C878", "role": "Analyst" },
    { "id": "rex", "name": "Rex", "emoji": "⚡", "color": "#FF6B6B", "role": "Executor" }
  ],
  "stages": [
    { "id": "discovery",  "label": "발굴",      "labelEn": "Discovery",  "col": 0 },
    { "id": "validation", "label": "검증",      "labelEn": "Validation", "col": 1 },
    { "id": "dryrun",     "label": "드라이런",  "labelEn": "Dry Run",    "col": 2 },
    { "id": "gate",       "label": "게이트 🔐", "labelEn": "Gate",       "col": 3 },
    { "id": "execution",  "label": "실행 ✅",   "labelEn": "Execution",  "col": 4 }
  ],
  "events": [
    { "t": 0,  "agent": "atlas",  "type": "move", "stage": "discovery",  "task": "pricing-lag",    "taskLabel": "Pricing lag fix",       "decision": { "observed": "Pricing model has 3-day lag; competitor response is 4hrs", "options": ["Ignore","Flag for review","Propose automated repricing"], "choice": "Propose automated repricing", "reason": "4hr vs 3-day gap is significant revenue risk; ROI > 10x", "gate_result": null }, "ticker": "Atlas 발굴 → 가격 모델 3일 지연 감지, 자동 리프라이싱 제안" },
    { "t": 2,  "agent": "nova",   "type": "move", "stage": "discovery",  "task": "churn-signal",   "taskLabel": "Churn signal analysis", "decision": { "observed": "User cohort D7 retention dropped 8% week-over-week", "options": ["Monitor only","Alert human","Trigger retention campaign"], "choice": "Trigger retention campaign", "reason": "D7 drop correlates with onboarding friction identified in prior runs", "gate_result": null }, "ticker": "Nova 발굴 → D7 리텐션 8% 하락, 리텐션 캠페인 제안" },
    { "t": 4,  "agent": "atlas",  "type": "move", "stage": "validation", "task": "pricing-lag",    "taskLabel": "Pricing lag fix",       "decision": { "observed": "Backtested repricing on 90-day history: +3.2% revenue, 0 SLA violations", "options": ["Pass validation","Request more data","Reject"], "choice": "Pass validation", "reason": "Backtest confidence 94%; risk within acceptable bounds", "gate_result": null }, "ticker": "Atlas 검증 → 90일 백테스트 통과, 신뢰도 94%" },
    { "t": 5,  "agent": "hermes", "type": "move", "stage": "discovery",  "task": "infra-cost",     "taskLabel": "Infra cost reduction",  "decision": { "observed": "GPU cluster utilization 34% off-peak; spot instances at 60% discount", "options": ["Keep current","Propose spot migration","Scale down"], "choice": "Propose spot migration", "reason": "Spot migration reduces cost 38% with <2min failover risk", "gate_result": null }, "ticker": "Hermes 발굴 → GPU 유휴 34%, 스팟 마이그레이션 제안" },
    { "t": 6,  "agent": "nova",   "type": "move", "stage": "validation", "task": "churn-signal",   "taskLabel": "Churn signal analysis", "decision": { "observed": "A/B test on retention email: open rate 41%, conversion 12%", "options": ["Scale campaign","Pause for more data","Pivot strategy"], "choice": "Scale campaign", "reason": "12% conversion rate exceeds 8% threshold set in prior meta-asset", "gate_result": null }, "ticker": "Nova 검증 → 리텐션 캠페인 A/B 전환 12%, 기준치 초과" },
    { "t": 7,  "agent": "rex",    "type": "move", "stage": "discovery",  "task": "data-pipeline",  "taskLabel": "Data pipeline rebuild", "decision": { "observed": "ETL pipeline fails 2.3% of runs due to schema drift on upstream vendor", "options": ["Add retry logic","Rebuild with schema validation","Escalate to vendor"], "choice": "Rebuild with schema validation", "reason": "Vendor SLA unreliable; schema drift will recur; rebuild cost < 2 sprints", "gate_result": null }, "ticker": "Rex 발굴 → ETL 실패율 2.3%, 스키마 검증 재구축 제안" },
    { "t": 8,  "agent": "atlas",  "type": "move", "stage": "dryrun",     "task": "pricing-lag",    "taskLabel": "Pricing lag fix",       "decision": { "observed": "Dry run on staging: 0 errors, avg latency +12ms, all edge cases handled", "options": ["Proceed to gate","Fix latency","Abort"], "choice": "Proceed to gate", "reason": "+12ms within SLA headroom of 200ms; no functional regressions", "gate_result": null }, "ticker": "Atlas 드라이런 → 스테이징 통과, 레이턴시 +12ms (허용 범위)" },
    { "t": 10, "agent": "atlas",  "type": "gate", "stage": "gate",       "task": "pricing-lag",    "taskLabel": "Pricing lag fix",       "decision": { "observed": "All pre-gate checks passed. Revenue impact: +$42k/mo. Risk: LOW", "options": ["Approve → Execute","Reject → Back to Discovery"], "choice": "AWAITING HUMAN", "reason": "Autonomous loop completed. Human oversight required before production deploy.", "gate_result": "pending" }, "ticker": "Atlas 게이트 🔐 → 인간 승인 대기 중 (예상 수익 +$42k/월)" },
    { "t": 11, "agent": "hermes", "type": "move", "stage": "validation", "task": "infra-cost",     "taskLabel": "Infra cost reduction",  "decision": { "observed": "Spot instance failure simulation: 99.1% jobs complete before preemption", "options": ["Proceed","Add checkpoint strategy","Abort"], "choice": "Add checkpoint strategy", "reason": "0.9% preemption risk acceptable with 5-min checkpoints", "gate_result": null }, "ticker": "Hermes 검증 → 스팟 선점 0.9%, 체크포인트 전략 추가" },
    { "t": 12, "agent": "nova",   "type": "move", "stage": "dryrun",     "task": "churn-signal",   "taskLabel": "Churn signal analysis", "decision": { "observed": "Dry run: sent 1000 test emails, delivery 99.8%, no spam triggers", "options": ["Proceed to gate","Tune copy","Abort"], "choice": "Proceed to gate", "reason": "Delivery metrics clean; content approved by prior policy check", "gate_result": null }, "ticker": "Nova 드라이런 → 이메일 1000건 테스트, 전달률 99.8%" },
    { "t": 13, "agent": "rex",    "type": "move", "stage": "validation", "task": "data-pipeline",  "taskLabel": "Data pipeline rebuild", "decision": { "observed": "Schema validator prototype catches 100% of prior failure patterns in test corpus", "options": ["Proceed to dry run","More testing","Abort"], "choice": "Proceed to dry run", "reason": "100% catch rate on known patterns; new pattern coverage TBD in dry run", "gate_result": null }, "ticker": "Rex 검증 → 스키마 검증기 테스트 100% 통과" },
    { "t": 14, "agent": "nova",   "type": "gate", "stage": "gate",       "task": "churn-signal",   "taskLabel": "Churn signal analysis", "decision": { "observed": "Retention campaign ready. Target: 8,400 users. Est. recovery: 420 users", "options": ["Approve → Execute","Reject → Back to Discovery"], "choice": "AWAITING HUMAN", "reason": "Campaign impacts real users. Human sign-off required.", "gate_result": "pending" }, "ticker": "Nova 게이트 🔐 → 리텐션 캠페인 승인 대기 (대상 8,400명)" },
    { "t": 16, "agent": "hermes", "type": "move", "stage": "dryrun",     "task": "infra-cost",     "taskLabel": "Infra cost reduction",  "decision": { "observed": "Dry run: migrated 3 non-critical jobs to spot. 0 preemptions in 2hr window", "options": ["Proceed to gate","Extend dry run","Abort"], "choice": "Proceed to gate", "reason": "2hr clean run exceeds minimum 1hr threshold", "gate_result": null }, "ticker": "Hermes 드라이런 → 스팟 2시간 무중단 확인" },
    { "t": 18, "agent": "rex",    "type": "move", "stage": "dryrun",     "task": "data-pipeline",  "taskLabel": "Data pipeline rebuild", "decision": { "observed": "Dry run on 30-day historical feed: 0 schema failures, throughput +18%", "options": ["Proceed to gate","Optimize further","Abort"], "choice": "Proceed to gate", "reason": "+18% throughput is bonus; primary goal (0 failures) achieved", "gate_result": null }, "ticker": "Rex 드라이런 → 히스토리 피드 스키마 실패 0건, 처리량 +18%" },
    { "t": 19, "agent": "hermes", "type": "gate", "stage": "gate",       "task": "infra-cost",     "taskLabel": "Infra cost reduction",  "decision": { "observed": "Spot migration plan finalized. Est. monthly savings: $18,400. Risk: LOW with checkpoints", "options": ["Approve → Execute","Reject → Back to Discovery"], "choice": "AWAITING HUMAN", "reason": "Infrastructure changes require human approval per governance policy.", "gate_result": "pending" }, "ticker": "Hermes 게이트 🔐 → 인프라 변경 승인 대기 (월 절감 $18,400)" }
  ],
  "learnLog": [
    { "id": "L001", "agent": "atlas",  "task": "pricing-lag",   "trigger": "Gate approval",              "lesson": "Repricing safe when backtest confidence ≥90% AND latency delta <50ms", "nextTime": "Skip manual latency review if both thresholds met" },
    { "id": "L002", "agent": "nova",   "task": "churn-signal",  "trigger": "A/B result above threshold", "lesson": "D7 retention campaigns effective when triggered within 48hr of drop", "nextTime": "Pre-approve retention campaigns for cohorts <10k users" },
    { "id": "L003", "agent": "hermes", "task": "infra-cost",    "trigger": "Validation with checkpoint", "lesson": "Spot migration always needs checkpoint strategy",                       "nextTime": "Bundle checkpoint config automatically with every spot migration" }
  ]
}
