# UNRESOLVED_NORMATIVE_CONFLICT — Two norms collide and neither yields ## What it means Norms can pull in opposite directions over one effect: a power creates it while an immunity shields against it, and no ranking says which prevails. The engine keeps both norms — choosing a winner without authority would be inventing law — and the question about the disputed effect ends in a reported conflict rather than an answer. This status preserves the disagreement instead of hiding it. The two norms stay in force; only the disputed effect is left undecided. ## When you see it ```law language "law.core" version "0.2"; package demo.diagnostics version "0.1.0"; namespace "urn:law:demo:diagnostics"; entity Applicant; entity Office; relation permit_office(o: Office) kind empirical; relation resells_permit(a: Applicant) kind empirical; relation revocation_notice(o: Office, a: Applicant) kind empirical; relation permit_revoked(a: Applicant) kind institutional; rule RevocationPower strict { for a: Applicant; for o: Office; when permit_office(o) and resells_permit(a); then power RevokePermit { holder o; over a; exercise revocation_notice(o, a); valid_when (resells_permit(a)); effect create(permit_revoked(a)); }; } rule RevocationShield strict { for a: Applicant; for o: Office; when permit_office(o) and resells_permit(a); then immunity NoRevocation { holder a; against o; protected_effect permit_revoked(a); }; } ``` ```lawtest language "law.core" version "0.2"; package demo.diagnostics version "0.1.0"; namespace "urn:law:demo:diagnostics"; test "power against immunity" { given { context { legal_time @2026-03-01; decision_time @2026-03-01T09:00:00Z; knowledge_time @2026-03-01T09:00:00Z; timezone "UTC"; } assert permit_office(entity_ref("urn:demo:diagnostics:office")) { origin case_input; } assert resells_permit(entity_ref("urn:demo:diagnostics:ann")) { origin case_input; } assert revocation_notice(entity_ref("urn:demo:diagnostics:office"), entity_ref("urn:demo:diagnostics:ann")) { origin case_input; } } evaluate truth(permit_revoked(entity_ref("urn:demo:diagnostics:ann"))); expect evaluation_status == UNRESOLVED_NORMATIVE_CONFLICT; } ``` The revocation power and the shield against it both apply to one effect, and nothing ranks them. The effect stays undecided. ## What to do Resolve the collision at its level: add a ranking between the two norms, narrow one of them so they no longer overlap, or obtain the decision that settles which prevails. More facts about the same situation will not decide it. ## Related - [Testing a package](/language/testing-a-package/) — how scenarios pin outcomes. - [PRIORITY_CONFLICT](/diagnostics/PRIORITY_CONFLICT/) — when the rankings themselves cycle.