{
  "checks": [
    "mutual protection is a reciprocal non-targeted canonical term",
    "native Nationalism 0x100 can be supplied by either participant but not an unrelated civilization",
    "peace and active embassy are mandatory, with no right of passage implicitly granted",
    "a declaration without invasion does not invoke a partner or consume RNG",
    "moving into protected territory invokes the reciprocal partner through the normal war path once",
    "hostile presence already within borders is considered when the war begins",
    "signing during an existing invasion gives the same immediate-war preview and execution",
    "an attack inside borders invokes protection before the attacker dies",
    "an attack on the partners unit outside their borders does not invoke their pact",
    "capture of a civilian inside protected land records the territorial cause",
    "the initial presence policy includes hostile civilian units and is explicitly awaiting Windows controls",
    "forced defense establishes contact without revealing the remote enemy position",
    "separate peace during invasion breaks the real signatory package and keeps the partner war",
    "peace after the invading units leave preserves the mutual protection pact",
    "clean cancellation after twenty turns does not end existing wars",
    "save insertion before territorial entry preserves exact war/history/RNG results",
    "AI uses the shared immediate-war price instead of blindly accepting a free forced war",
    "malformed protection calls, dates, tiles and unrelated packages are rejected",
    "genuine published schema25 embargo/passage/report/work/queue saves migrate by metadata only",
    "a saved pending pact can be accepted after reload without an extra war or RNG draw",
    "queued GoTo uses the same invasion cause as an ordinary territorial step",
    "explicitly attacking a pact partner breaks the pact instead of making it protect the aggressor",
    "a defensive entrant is the actual breaker of its incompatible peace/pact, not the moving aggressor",
    "four-civilization protection chains require territorial causes and converge without duplicate calls",
    "ordinary AI war planning excludes a pact partner while the same unprotected setup plans war"
  ],
  "passed": 25,
  "source": "tests/protection.test.mjs"
}
