code wiki / _hdl_build / nx_notice.nx
nx_notice.nx
buildroot/runtime/_hdl_build/nx_notice.nx
about
nx_notice.nx -- W-TD-2: THE NOTICE LEDGER. The state half of the safe-harbour posture.
nx_takedown decides WHAT SHOULD HAPPEN to a notice; it is pure and holds nothing. That made it a
document rather than a control (debt 1785893553): the operator's posture -- "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" -- only exists if the REQUEST can be received, TIMED, and ANSWERED
with evidence. ★★★★★AN INSTRUMENT THAT NOTHING IS REQUIRED TO CONSULT IS A REPORT, NOT A CONTROL
(the estate's own publishing-house law, applied here).
WHAT COMPLIANCE ACTUALLY REQUIRES OF THE RECORD, and why each is mechanical here:
* EXPEDITIOUS RESPONSE is a claim about TIME, so the clock must start at receipt and be
queryable -- `overdue` answers "what am I late on" without anyone remembering to look.
* The record must be ANSWERABLE LATER, so it is APPEND-ONLY (rule 13, history is sacred).
Acting on a notice APPENDS an action row referencing the id; it never edits the original.
⇒ a ledger you can rewrite is not evidence of anything, and rewriting it to look compliant is
the failure mode that turns a paperwork problem into a credibility problem.
* 512(i) repeat-infringer policy needs a COUNT, which needs persistence.
* QUARANTINE (nx_realperson's RP_QUARANTINE, for a SUSPECTED-minor call that may have misread a
lawful adult) must WITHHOLD WITHOUT DESTROYING -- so it renames into a quarantine prefix and
records the move. Never unlink: the misread performer's evidence has to survive.
⚠NOT LEGAL ADVICE. This is bookkeeping built to the shape of the regime, so a human can answer
quickly and prove what they did.
verbs:
file <class> <locator> <complainant> <w><l><c><g><s> -- record a notice; prints its id
act <id> <action> [note] -- append what was done (never edits)
list [n] -- recent rows
overdue <now_epoch> -- notices past their statutory clock
strikes <target> -- 512(i) count for a target
license_tier: ORIGINAL expect_exit: 0
module: nishi-core.hosting.notice
dependencies 3 imports · 0 importers
imports: nx_syscalls.nxnx_estate_path.nxnx_takedown.nx
imported by: nobody (leaf or entry point)
call flow from main pre-order; caps 40 nodes / depth 6 declared; ↻ = already shown
structs
| none |
consts
| 36 | const NL_MAGIC_4096: i64 = 4096 |
| 38 | const NL_CAP: i64 = 1048576 |
| 39 | const NL_SECS_PER_HOUR: i64 = 3600 |
functions
| 41 | func nw(s: *u8) -> i64 { var n: i64 = 0; while s[n] != (0 as u8) { n = n + 1 } sys_write(1, s, n); return 0 } |
| 42 | func nn(v: i64) -> i64 |
| 52 | func nl_len(s: *u8) -> i64 { var n: i64 = 0; while s[n] != (0 as u8) { n = n + 1 } return n } called by 1: nl_strikes |
| 53 | func nl_cat(d: *u8, o: i64, s: *u8) -> i64 { var i: i64 = 0; var a: i64 = o; while s[i] != (0 as u8) { d[a] = s[i]; a = a + 1; i = i + 1 } return a } |
| 54 | func nl_catn(d: *u8, o: i64, v: i64) -> i64 |
| 63 | func nl_atoi(s: *u8) -> i64 called by 1: main |
| 75 | func nl_append(line: *u8, n: i64) -> i64 |
| 88 | func nl_slurp(buf: *u8) -> i64 called by 5: nl_next_idnl_notice_existsnl_overduenl_strikesmain calls 3: ep_open_rdsys_readsys_close |
| 105 | func nl_field(buf: *u8, s: i64, e: i64, idx: i64, box: *i64) -> i64 |
| 129 | func nl_fieldnum(buf: *u8, s: i64, e: i64, idx: i64, box: *i64) -> i64 |
| 153 | func nl_next_id(now: i64) -> i64 |
| 179 | func nl_file_notice(class: i64, locator: *u8, complainant: *u8, valid: i64) -> i64 |
| 202 | func nl_notice_exists(id: i64) -> i64 |
| 229 | func nl_record_action(id: i64, action: i64, note: *u8) -> i64 |
| 241 | func nl_answered(buf: *u8, n: i64, id: i64) -> i64 |
| 266 | func nl_overdue(now: i64) -> i64 |
| 323 | func nl_strikes(target: *u8) -> i64 |
| 359 | func main(argc: i64, argv: *i64) -> i64 |