code wiki / _hdl_build / nx_ad_feedback.nx

nx_ad_feedback.nx

buildroot/runtime/_hdl_build/nx_ad_feedback.nx

3813 B82 linesdepth 3pulls 4 transitivereach 1 importersview sourcekind librarytopic ad
docsdependenciesstructsconstsfunctions

about

nx_ad_feedback.nx -- LIB: the GREAT/OK/BAD audience feedback for the performance ad engine (ADS-013, CALLOUT-004). Completes the honest-aggregate-measurement trio: impressions (ADS-019), conversions (ADS-018), and now SENTIMENT -- all aggregate, k-anon-floored, never per-visitor. Extends the ADS-004 placement: a polite ONE-TAP poll (no popup wall, once per visit) whose only server-side residue is an AGGREGATE rollup. THE PRIVACY PROMISE, MADE LOAD-BEARING (spec sec5): a visitor's tap may arrive with a transient session token, but the ONLY thing persisted is counts (great/ok/bad/n). `af_persist_record` has no parameter for an identifier -- the persisted record CANNOT carry one by construction. The gate proves it on the real on-disk bytes: identifiable input in, scrubbed aggregate record out. Reuses nx_ad_serve (clean first-party emit, HTML-escape, zero-third-party-JS) + nx_kanon (the k-anon release floor) -- DRY (rule 15). license_tier: ORIGINAL

dependencies 3 imports · 1 importers

nx_ad_serve.nx nx_kanon.nx nx_syscalls.nx nx_ad_feedback.nx nx_ad_feedback_gate.nx

imports: nx_ad_serve.nxnx_kanon.nxnx_syscalls.nx

imported by: nx_ad_feedback_gate.nx

structs

none

consts

none

functions

19func af_num(dst: *u8, off: i64, v: i64) -> i64
called by 2: af_persist_recordmain calls 1: sys_mmap
36func af_emit_poll(campaign: *u8, clen: i64, out: *u8) -> i64
called by 1: main calls 2: as_appendas_append_escaped
47func af_tally(ev: *i64, m: i64, og: *i64, oo: *i64, ob: *i64) -> i64
called by 1: main
68func af_persist_record(great: i64, ok: i64, bad: i64, out: *u8) -> i64
called by 1: main calls 2: as_appendaf_num
80func af_release(total: i64, k: i64) -> i64
called by 1: main calls 1: kn_release