# 집계 도구(`scripts/audit-rate.mjs`)의 대조 표본. **합성 데이터다** —
# ip 는 RFC 5737 문서화 대역, 사람이 읽는 식별자는 자리표시자, 회원 id 는 1~9999 의 합성값이다.
# 실측 로그를 붙여넣지 않는다: actorLabel·ip·personId 가 저장소 이력에 영구히 박힌다.
#
# **고유 8일에 걸쳐 있다.** M2 게이트 #6 이 이 표본을 일수로 잘라 수용 대조를 만들고
# `readiness` 가 관측 일수 ≥7 을 요구하므로, 8일치가 없으면 그 대조 자체를 만들 수 없다.
# 앞 8일 안에 (a) 닫힌 어휘 밖 action 줄과 (b) v=2 이면서 txDurationMs 를 가진 줄이
# 모두 있어야 한다 — 없으면 어휘 검사와 축 검사가 볼 대상이 없다.
#
# 아래 머리줄이 기대값의 **정본**이며, M1 게이트 #10 과 M2 게이트 #8 이 각각
# `--json` 출력과 키 집합을 양방향 대조한다.
#expect {"outputVersion":2,"scanned":11,"unparsed":0,"lines":11,"requests":9,"spanSec":615600,"windowStartIso":"2026-03-01T09:00:00.000Z","windowEndIso":"2026-03-08T12:00:00.000Z","observedDays":8,"peakPerSecond":1,"byTier":{"T1":6,"T2":3,"T4":2},"byOutcome":{"COMMITTED":7,"DENIED":1,"FAILED":1},"byStore":{"none":11},"byAction":{"(unlisted)":1,"money.corp.charge":1,"money.expire":2,"money.grant":1,"money.grant.single":1,"money.issue":1,"money.issue.upload":2},"byActor":{"ADMIN:19":3,"CORP:3":1,"SALES:7":2,"SYSTEM:-":2,"UNKNOWN:-":1},"batchSizes":{"n":3,"p50":640,"p90":1500,"p99":1500,"max":1500,"buckets":{"<=1":0,"2-10":1,"11-100":0,"101-1000":1,"1001+":1}},"targetCounts":{"n":8,"p50":1,"p90":1500,"p99":1500,"max":1500,"buckets":{"<=1":4,"2-10":1,"11-100":1,"101-1000":1,"1001+":1}},"integrity":{"idsTruncatedLines":1,"idsMissingLines":1,"idsMissingTotal":7,"batchNullLines":1,"gapCount":7,"maxGapSec":110100},"changesBytes":{"n":11,"p50":31,"p90":33,"p99":34,"max":34},"cardinality":{"actorRefIds":3,"actions":7,"targetTypes":4,"requestIds":7},"txDurationMs":{"n":5,"p50":274,"p90":918,"p99":918,"max":918}}
{"level":30,"time":1772355600000,"msg":"[audit] T2 post:money.grant COMMITTED actor=ADMIN:19","audit":{"v":2,"tier":"T2","store":"none","action":"post:money.grant","outcome":"COMMITTED","actorRole":"ADMIN","actorRefId":19,"actorLabel":"admin-a","actorOrg":null,"personId":null,"targetType":"http","targetId":null,"amount":null,"targetCount":1,"reasonCode":null,"requestId":"req-a","ip":"192.0.2.10","userAgent":"test-agent","changes":{"agcId":5,"mngAmount":15000},"batch":null,"txDurationMs":null}}
{"level":30,"time":1772355601000,"msg":"[audit] T1 money.grant COMMITTED actor=ADMIN:19","audit":{"v":2,"tier":"T1","store":"none","action":"money.grant","outcome":"COMMITTED","actorRole":"ADMIN","actorRefId":19,"actorLabel":"admin-a","actorOrg":null,"personId":null,"targetType":"agency","targetId":5,"amount":-45000,"targetCount":3,"reasonCode":null,"requestId":"req-a","ip":"192.0.2.10","userAgent":"test-agent","changes":{"mngId":301,"unitAmount":15000},"batch":{"ids":[301,302,303],"idsTotal":3},"txDurationMs":137}}
{"level":30,"time":1772446500000,"msg":"[audit] T2 post:money.issue.upload COMMITTED actor=SALES:7","audit":{"v":2,"tier":"T2","store":"none","action":"post:money.issue.upload","outcome":"COMMITTED","actorRole":"SALES","actorRefId":7,"actorLabel":"sales-a","actorOrg":null,"personId":null,"targetType":"http","targetId":null,"amount":null,"targetCount":1,"reasonCode":null,"requestId":"req-b","ip":"198.51.100.20","userAgent":"test-agent","changes":{"agcId":5,"_status":201},"batch":null,"txDurationMs":null}}
{"level":30,"time":1772446502000,"msg":"[audit] T1 money.issue.upload COMMITTED actor=SALES:7","audit":{"v":2,"tier":"T1","store":"none","action":"money.issue.upload","outcome":"COMMITTED","actorRole":"SALES","actorRefId":7,"actorLabel":"sales-a","actorOrg":null,"personId":null,"targetType":"agency","targetId":5,"amount":-640000,"targetCount":640,"reasonCode":null,"requestId":"req-b","ip":"198.51.100.20","userAgent":"test-agent","changes":{"mniId":412,"unitAmount":1000},"batch":{"ids":[900,901,902],"idsTotal":640,"_idsTruncated":true},"txDurationMs":918}}
{"level":30,"time":1772535600000,"msg":"[audit] T1 money.issue COMMITTED actor=ADMIN:19","audit":{"v":2,"tier":"T1","store":"none","action":"money.issue","outcome":"COMMITTED","actorRole":"ADMIN","actorRefId":19,"actorLabel":"admin-a","actorOrg":null,"personId":null,"targetType":"agency","targetId":6,"amount":-1500000,"targetCount":1500,"reasonCode":null,"requestId":"req-c","ip":"192.0.2.11","userAgent":"test-agent","changes":{"mniId":413,"unitAmount":1000},"batch":{"ids":[1200,1201],"idsTotal":1500,"_idsMissing":7},"txDurationMs":512}}
{"level":30,"time":1772613000000,"msg":"[audit] T2 post:admin.unlisted-probe-route DENIED actor=UNKNOWN:-","audit":{"v":2,"tier":"T2","store":"none","action":"post:admin.unlisted-probe-route","outcome":"DENIED","actorRole":"UNKNOWN","actorRefId":null,"actorLabel":null,"actorOrg":null,"personId":null,"targetType":"http","targetId":null,"amount":null,"targetCount":1,"reasonCode":null,"requestId":"req-d","ip":"203.0.113.30","userAgent":"test-agent","changes":{"_status":401},"batch":null,"txDurationMs":null}}
{"level":30,"time":1772719200000,"msg":"[audit] T4 money.expire COMMITTED actor=SYSTEM:-","audit":{"v":2,"tier":"T4","store":"none","action":"money.expire","outcome":"COMMITTED","actorRole":"SYSTEM","actorRefId":null,"actorLabel":"expired-money","actorOrg":null,"personId":null,"targetType":"member","targetId":4211,"amount":-3000,"targetCount":1,"reasonCode":"EXPIRE","requestId":null,"ip":null,"userAgent":null,"changes":{"msrId":88,"moneyType":"BASIC"},"batch":null,"txDurationMs":null}}
{"level":30,"time":1772719201000,"msg":"[audit] T4 money.expire FAILED actor=SYSTEM:-","audit":{"v":2,"tier":"T4","store":"none","action":"money.expire","outcome":"FAILED","actorRole":"SYSTEM","actorRefId":null,"actorLabel":"expired-money","actorOrg":null,"personId":null,"targetType":"member","targetId":4212,"amount":-5000,"targetCount":1,"reasonCode":"EXPIRE_FAILED","requestId":null,"ip":null,"userAgent":null,"changes":{"msrId":89,"moneyType":"AGENCY"},"batch":null,"txDurationMs":null}}
{"level":30,"time":1772790300000,"msg":"[audit] T1 money.issue.upload COMMITTED actor=ADMIN:19","audit":{"v":2,"tier":"T1","store":"none","action":"money.issue.upload","outcome":"COMMITTED","actorRole":"ADMIN","actorRefId":19,"actorLabel":"admin-a","actorOrg":null,"personId":null,"targetType":"agency","targetId":7,"amount":-12000,"targetCount":12,"reasonCode":null,"requestId":"req-e","ip":"192.0.2.12","userAgent":"test-agent","changes":{"mniId":414,"unitAmount":1000},"batch":null,"txDurationMs":89}}
{"level":30,"time":1772900400000,"msg":"[audit] T1 money.corp.charge COMMITTED actor=CORP:3","audit":{"v":2,"tier":"T1","store":"none","action":"money.corp.charge","outcome":"COMMITTED","actorRole":"CORP","actorRefId":3,"actorLabel":"corp-a","actorOrg":"1/4/9","personId":4211,"targetType":"corp","targetId":3,"amount":200000,"targetCount":1,"reasonCode":null,"requestId":"req-f","ip":"192.0.2.13","userAgent":"test-agent","changes":{"tmcId":77,"balanceAfter":200000},"batch":null,"txDurationMs":274}}
{"level":30,"time":1772971200000,"msg":"[audit] T1 money.grant.single COMMITTED actor=SALES:7","audit":{"v":1,"tier":"T1","store":"none","action":"money.grant.single","outcome":"COMMITTED","actorRole":"SALES","actorRefId":7,"actorLabel":"sales-a","actorOrg":null,"personId":null,"targetType":"member","targetId":4213,"amount":-8000,"targetCount":1,"reasonCode":null,"requestId":"req-g","ip":"198.51.100.21","userAgent":"test-agent","changes":{"mngId":302,"unitAmount":8000},"batch":null}}
