nx_consent.nx
buildroot/runtime/nx_consent.nx
about
nx_consent.nx -- CONSENT, PROVENANCE & LICENSE-TIER gate for character assets. Consent is the dividing line, so
make it MECHANICAL (like never-brick #26: proven by construction, fail-closed, not asserted). A hired model
licenses a GRADED TIER per their contract -- clothed-only -> standard artistic/figure nude (life drawing &
painting reference) -> explicit -- across specific USE-CASES (art-modeling coaching / game / commercial /
distribute). The DELIVERED nudity tier is set by what LAYERS cover the base (nx_outfit/makeup): a licensed nude
base can be dressed DOWN to clothed, or delivered bare only within its tier. The pipeline calls consent_allows()
before any delivery and is FAIL-CLOSED. Synthetic/fictional characters carry no real person -> ungated.
license_tier: ORIGINAL
dependencies 1 imports · 2 importers
imports: nx_syscalls.nx
imported by: nx_char_asset.nxnx_consent_gate.nx
structs
| none |
consts
| 12 | const PROV_SYNTH: i64 = 0 // generated character (no real person) -> ungated |
| 13 | const PROV_SCAN: i64 = 1 // photogrammetry/3D scan of a REAL hired model -> needs release + tier + scope |
| 14 | const PROV_LIKENESS: i64 = 2 // authored from a real model's likeness -> needs release + tier + scope |
| 16 | const LIC_CLOTHED: i64 = 0 // clothed depiction only |
| 17 | const LIC_ARTISTIC: i64 = 1 // standard artistic / figure nude (life drawing & painting reference); non-explicit |
| 18 | const LIC_EXPLICIT: i64 = 2 // explicit, per contract |
| 20 | const USE_ART_COACH: i64 = 1 // nude-art-modeling reference / drawing & painting coaching |
| 21 | const USE_GAME: i64 = 2 // game / interactive asset |
| 22 | const USE_COMMERCIAL: i64 = 4 // commercial use |
| 23 | const USE_DISTRIBUTE: i64 = 8 // publish / redistribute |
| 24 | const USE_VR_INTERACTIVE: i64 = 16 // interactive / VR play (incl. explicit, at the explicit tier) |
| 26 | const CR_OK: i64 = 0 |
| 27 | const CR_NO_RELEASE: i64 = 1 |
| 28 | const CR_TIER: i64 = 2 // licensed tier below what the delivery needs |
| 29 | const CR_OUT_OF_SCOPE: i64 = 3 // a required use-case not in the license |
| 30 | const CR_EXPIRED: i64 = 4 |
functions
| 34 | func consent_init(rec: *i64, prov: i64, release: i64, tier: i64, use_scope: i64, expiry: i64, consent_id: i64, model_ref: i64) -> i64 |
| 39 | func consent_reason(rec: *i64, req_tier: i64, req_uses: i64, now: i64) -> i64 called by 1: consent_allows |
| 47 | func consent_allows(rec: *i64, req_tier: i64, req_uses: i64, now: i64) -> i64 { if consent_reason(rec, req_tier, req_uses, now) == CR_OK { return 1 } return 0 } called by 4: char_export_gltf_gatedchar_deliver_okinteraction_explicit_allowedmain calls 1: consent_reason |
| 58 | func interaction_explicit_allowed(rec: *i64, adult_verified: i64, now: i64) -> i64 |
| 62 | func consent_reason_str(r: i64) -> *u8 |
| 70 | func lic_tier_name(t: i64) -> *u8 |