nx_governance_behavior.nx source
↩ module page · 99 lines · 5095 B
1// nx_governance_behavior.nx -- sealed bannable-BEHAVIOR enum.
2//
3// license_tier: PUBLIC_NISHI_SUBSTRATE
4// genealogy_id: 1st_amendment_speech_vs_conduct_distinction +
5// cda_section_230 + ietf_mod_taxonomy +
6// nishi_pillar_3_censorship_critique_2026
7//
8// Pillar 3 of the greenhouse prevention framework: make the
9// behavior-vs-viewpoint distinction MECHANICAL. This file is the
10// sealed enum of BANNABLE BEHAVIORS. There is intentionally NO
11// corresponding bannable-viewpoint enum. Viewpoints get tagged
12// (see nx_governance_viewpoint_tag.nx) and filtered; never banned.
13//
14// The type system guarantee: a ModerationAction primitive requires
15// a value of type `nx_governance_behavior` to construct. No
16// codepath exists to construct a ModerationAction from a viewpoint
17// tag. Compile-time enforcement.
18//
19// ===== The behaviors ==============================================
20//
21// Each is objectively definable; each requires evidence; each is
22// appealable via tribunal-of-three (random verified growers from
23// outside the disputants' chapters).
24//
25// HARASSMENT_TARGETED - sustained targeting of an
26// identifiable individual with
27// abuse, threats, doxxing
28// setup, etc.
29// DOXXING - publishing private information
30// (home address, employer,
31// children's school) without
32// consent.
33// FRAUD_CONFIRMED - in marketplace context: tribunal
34// confirmed fraudulent transaction
35// (seed never shipped, lineage
36// falsified, identity stolen).
37// REPEATED_OBJECTIVE_FALSE - repeated factual claims
38// contradicted by tribunal-
39// verified evidence (e.g. faking
40// germ rates with photos that
41// don't match documented batches).
42// SPAM_AUTOMATED - automated content posting at
43// rates incompatible with human
44// operation.
45// THREAT_OF_VIOLENCE - specific, credible threat of
46// physical harm.
47// CHILD_SAFETY - any content harmful to minors;
48// one-strike, no tribunal
49// required.
50// IP_FRAUD - selling patented / PVP-protected
51// seeds via the network (which is
52// intentionally OP/OSSI-only per
53// nx_ip_filter).
54
55const NX_GOV_BEHAVIOR_HARASSMENT_TARGETED: i64 = 1
56const NX_GOV_BEHAVIOR_DOXXING: i64 = 2
57const NX_GOV_BEHAVIOR_FRAUD_CONFIRMED: i64 = 3
58const NX_GOV_BEHAVIOR_REPEATED_OBJECTIVE_FALSE: i64 = 4
59const NX_GOV_BEHAVIOR_SPAM_AUTOMATED: i64 = 5
60const NX_GOV_BEHAVIOR_THREAT_OF_VIOLENCE: i64 = 6
61const NX_GOV_BEHAVIOR_CHILD_SAFETY: i64 = 7
62const NX_GOV_BEHAVIOR_IP_FRAUD: i64 = 8
63
64func nx_gov_behavior_name(v: i64) -> *u8 {
65 if v == NX_GOV_BEHAVIOR_HARASSMENT_TARGETED { return "HARASSMENT_TARGETED" }
66 if v == NX_GOV_BEHAVIOR_DOXXING { return "DOXXING" }
67 if v == NX_GOV_BEHAVIOR_FRAUD_CONFIRMED { return "FRAUD_CONFIRMED" }
68 if v == NX_GOV_BEHAVIOR_REPEATED_OBJECTIVE_FALSE { return "REPEATED_OBJECTIVE_FALSE" }
69 if v == NX_GOV_BEHAVIOR_SPAM_AUTOMATED { return "SPAM_AUTOMATED" }
70 if v == NX_GOV_BEHAVIOR_THREAT_OF_VIOLENCE { return "THREAT_OF_VIOLENCE" }
71 if v == NX_GOV_BEHAVIOR_CHILD_SAFETY { return "CHILD_SAFETY" }
72 if v == NX_GOV_BEHAVIOR_IP_FRAUD { return "IP_FRAUD" }
73 return "UNKNOWN"
74}
75
76// Some behaviors are one-strike (no tribunal); others require
77// tribunal review.
78func nx_gov_behavior_is_one_strike(v: i64) -> i64 {
79 if v == NX_GOV_BEHAVIOR_CHILD_SAFETY { return 1 }
80 if v == NX_GOV_BEHAVIOR_THREAT_OF_VIOLENCE { return 1 }
81 return 0
82}
83
84// === Sealed ModerationVerdict =====================================
85
86const NX_GOV_MOD_WARNED: i64 = 1
87const NX_GOV_MOD_RELOCATED_OFFTOPIC: i64 = 2
88const NX_GOV_MOD_RATE_LIMITED: i64 = 3
89const NX_GOV_MOD_CHAPTER_QUARANTINED: i64 = 4
90const NX_GOV_MOD_EXPELLED: i64 = 5
91
92func nx_gov_mod_verdict_name(v: i64) -> *u8 {
93 if v == NX_GOV_MOD_WARNED { return "WARNED" }
94 if v == NX_GOV_MOD_RELOCATED_OFFTOPIC { return "RELOCATED_TO_OFFTOPIC" }
95 if v == NX_GOV_MOD_RATE_LIMITED { return "RATE_LIMITED" }
96 if v == NX_GOV_MOD_CHAPTER_QUARANTINED { return "CHAPTER_QUARANTINED" }
97 if v == NX_GOV_MOD_EXPELLED { return "EXPELLED" }
98 return "UNKNOWN"
99}