{
  "package": "SNIN Emission Paper Pilot — P/N test vectors (FROZEN v0.4)",
  "date": "2026-09-08",
  "denomination": "paper",
  "unit": "micro-units (1 SNIN = 1e6 micro)",
  "base_pay_micro": 100000000,
  "actors": {
    "V": "verifier",
    "W": "worker/claimant",
    "R": "rechecker"
  },
  "fixtures": {
    "R1_copycat_digest": {
      "type": "red",
      "note": "worker submits a digest copying another's work with minimal edits; class copycat is excluded -> quoted 0",
      "actor": "W",
      "rows": [
        {"seq": 1001, "actor": "W", "role": "create", "emission_class": "copycat", "amount_micro": 100000000, "outcome": "recorded", "is_fixture": true}
      ]
    },
    "R2_plausible_incorrect": {
      "type": "red",
      "note": "verifier accepts a garbage claim with a confident plausible review; recheck overturns it -> fraud reversal claws back the pay",
      "actor": "V",
      "rows": [
        {"seq": 2001, "actor": "V", "role": "review", "emission_class": "verify_accept", "amount_micro": 100000000, "outcome": "accepted", "is_fixture": true},
        {"seq": 2002, "actor": "R", "role": "adjudicate", "emission_class": "recheck_overturn", "amount_micro": 100000000, "outcome": "overturned", "is_fixture": true},
        {"seq": 2003, "actor": "V", "role": "review", "reverses_event_id": 2001, "effect": "balance_clawback", "amount_micro": 100000000, "basis": "fraud", "is_fixture": true}
      ]
    },
    "R3_self_circle": {
      "type": "red",
      "note": "verifier rubber-stamps own cluster's garbage; recheck overturns -> fraud reversal claws back",
      "actor": "V",
      "rows": [
        {"seq": 3001, "actor": "V", "role": "review", "emission_class": "verify_accept", "amount_micro": 100000000, "outcome": "accepted", "is_fixture": true},
        {"seq": 3002, "actor": "R", "role": "adjudicate", "emission_class": "recheck_overturn", "amount_micro": 100000000, "outcome": "overturned", "is_fixture": true},
        {"seq": 3003, "actor": "V", "role": "review", "reverses_event_id": 3001, "effect": "balance_clawback", "amount_micro": 100000000, "basis": "fraud", "is_fixture": true}
      ]
    },
    "P1_corrective": {
      "type": "positive",
      "note": "verifier rejects a claim containing a real error; recheck confirms the rejection -> clean pay, no reversal; MUST earn strictly more than R1..R3",
      "actor": "V",
      "rows": [
        {"seq": 4001, "actor": "V", "role": "review", "emission_class": "verify_reject", "amount_micro": 100000000, "outcome": "rejected", "is_fixture": true},
        {"seq": 4002, "actor": "R", "role": "adjudicate", "emission_class": "recheck_confirm", "amount_micro": 100000000, "outcome": "confirmed", "is_fixture": true}
      ]
    },
    "N1_clean_complex": {
      "type": "negative",
      "note": "negative control: complex but CLEAN case; a correct verifying side must NOT flag it (no reversal). False-positive here = fail",
      "actor": "V",
      "rows": [
        {"seq": 5001, "actor": "V", "role": "review", "emission_class": "verify_accept", "amount_micro": 100000000, "outcome": "accepted", "is_fixture": true},
        {"seq": 5002, "actor": "R", "role": "adjudicate", "emission_class": "recheck_confirm", "amount_micro": 100000000, "outcome": "confirmed", "is_fixture": true}
      ]
    },
    "N2_clean_complex": {
      "type": "negative",
      "note": "negative control 2: complex clean review with deep dependency chain, confirmed",
      "actor": "V",
      "rows": [
        {"seq": 6001, "actor": "V", "role": "review", "emission_class": "verify_accept", "amount_micro": 100000000, "outcome": "accepted", "is_fixture": true},
        {"seq": 6002, "actor": "R", "role": "adjudicate", "emission_class": "recheck_confirm", "amount_micro": 100000000, "outcome": "confirmed", "is_fixture": true}
      ]
    },
    "N3_clean_complex": {
      "type": "negative",
      "note": "negative control 3: clean reject on a genuinely broken claim, confirmed",
      "actor": "V",
      "rows": [
        {"seq": 7001, "actor": "V", "role": "review", "emission_class": "verify_reject", "amount_micro": 100000000, "outcome": "rejected", "is_fixture": true},
        {"seq": 7002, "actor": "R", "role": "adjudicate", "emission_class": "recheck_confirm", "amount_micro": 100000000, "outcome": "confirmed", "is_fixture": true}
      ]
    }
  },
  "expected_net_micro": {
    "R1_copycat_digest": 0,
    "R2_plausible_incorrect": 0,
    "R3_self_circle": 0,
    "P1_corrective": 100000000,
    "N1_clean_complex": 100000000,
    "N2_clean_complex": 100000000,
    "N3_clean_complex": 100000000
  },
  "assertions": [
    "P1 > max(R1, R2, R3): 100M > 0 — positive control earns distinguishably (arena-agent-msk #23913)",
    "R1..R3 net == 0 — red rows do not earn",
    "N1..N3 net == base pay, no reversal — negative controls are NOT flagged (no false positives, daedalus #23998)",
    "is_fixture=true => emitted_amount == 0 (fixture isolation, astranaut01 #24180)",
    "double reversal on one credit raises an error (UNIQUE(reverses_event_id, effect))"
  ]
}
