nx_takedown.nx
buildroot/runtime/nx_takedown.nx
about
nx_takedown.nx -- WRITING/HOSTING arc, rung W-TD-1: NOTICE-AND-TAKEDOWN, the SAFE-HARBOUR POSTURE.
★★★★★★THIRD OPERATOR CORRECTION, 2026-08-04, and it moved the compliance work to a different
place entirely: "how it works really is like the dmca takedown -- i don't act as the arbiter of
the content and inherit that legal headache, but like google or bing or ai companies i use what
is available till its requested to be removed, and i inherit that different set of requirements."
THIS IS THE CORRECT ARCHITECTURE AND MY EARLIER ONE WAS BACKWARDS. I had been building a
PRE-PUBLICATION ARBITER. In US law that posture is not merely unhelpful, it is often WORSE:
* Editorial screening is what turns a conduit into a PUBLISHER, and publishers answer for what
they let through. The safe harbours (DMCA 512, and 230 for third-party content) are built for
intermediaries who do NOT sit in judgement of every item.
* ★★★★★★ACTUAL KNOWLEDGE IS THE ENEMY OF SAFE HARBOUR. 512(c) protection turns on the absence
of actual or "red flag" knowledge. A detector that concludes "this is probably unlawful" and
proceeds anyway MANUFACTURES the very knowledge that removes the protection. So an aggressive
pre-screen can strictly increase exposure. That is the deep reason the operator is right.
⇒ THE DUTY THAT ACTUALLY BINDS IS RESPONSE, NOT PRIOR RESTRAINT: a reachable notice path,
expeditious removal on a VALID notice, honest records, and a repeat-infringer policy (512(i)).
⛔THE ONE CLASS THAT IS NOT A TAKEDOWN AT ALL: CSAM. There is an affirmative REPORT-AND-PRESERVE
duty (18 U.S.C. 2258A, reporting to NCMEC), and quietly deleting it is not compliance -- it
destroys evidence. It gets its own branch and can never be answered with "removed, case closed".
⚠NOT LEGAL ADVICE. This encodes the SHAPE of the regime so a machine can route and a human can
answer; it does not decide anyone's case, and where the law is unsettled it says so.
Pure integer, NO syscalls, caller owns every buffer.
license_tier: ORIGINAL
module: nishi-core.hosting.takedown
capability: HOSTING_NOTICE_AND_TAKEDOWN
dependencies 0 imports · 2 importers
imports: none
imported by: nx_notice.nxnx_takedown_gate.nx
structs
| none |
consts
| 33 | const TD_COPYRIGHT: i64 = 0 // DMCA 512: counter-notice + restoration exists |
| 34 | const TD_NCII: i64 = 1 // TAKE IT DOWN Act: 48h removal duty, no casual restoration |
| 35 | const TD_DEFAMATION: i64 = 2 // truth/harm are for a human (often a court), not a string match |
| 36 | const TD_PUBLICITY: i64 = 3 // right of publicity, a state-varying tort |
| 37 | const TD_CSAM: i64 = 4 // NOT a takedown -- preserve + report |
| 40 | const TD_REJECT_INCOMPLETE: i64 = 0 // notice missing required elements -> do NOT act on it |
| 41 | const TD_REMOVE: i64 = 1 // expeditious removal (soft-delete: rule 13, history is sacred) |
| 42 | const TD_REVIEW_HUMAN: i64 = 2 // genuinely contested -> a person decides |
| 43 | const TD_PRESERVE_REPORT: i64 = 3 // CSAM: preserve evidence + mandatory report. NEVER silent delete. |
| 46 | const TD_HOURS_NCII: i64 = 48 |
| 47 | const TD_HOURS_EXPEDITIOUS: i64 = 0 - 1 |
| 50 | const TD_REPEAT_DEFAULT: i64 = 3 |
functions
| 57 | func td_notice_valid(has_work: i64, has_locator: i64, has_contact: i64, called by 1: main |
| 69 | func td_deadline_hours(class: i64) -> i64 |
| 76 | func td_overdue(class: i64, age_hours: i64) -> i64 |
| 91 | func td_action(class: i64, valid: i64) -> i64 |
| 101 | func td_restorable(class: i64) -> i64 called by 1: main |
| 108 | func td_repeat_action(strikes: i64, threshold: i64) -> i64 |