code wiki / _hdl_build / nx_oeuvre_resolve.nx
nx_oeuvre_resolve.nx
buildroot/runtime/_hdl_build/nx_oeuvre_resolve.nx
about
nx_oeuvre_resolve.nx -- SREACH-OEUVRE O2: the ANY-NODE RESOLVER. Turns a free-text
producer/work/franchise/medium term into a CANONICAL sovereign entity anchor (its Wikidata
Q-id), LIVE, over our own TLS stack -- the front door of "search Tinto Brass / Zatoichi /
ukiyo-e and get the real entity, not a guess". No privileged root: person, org, franchise,
character and medium all resolve through the SAME path (the Q-id is type-agnostic).
HONEST SCOPE (rule 5, no-overclaim): the HARD gate is RESOLUTION -- each term fetches its
English-Wikipedia page (guarded, sovereign) and yields a DISTINCT real Wikidata Q-id
(wgWikibaseItemId, deterministic). COARSE type (person/org/franchise/character/medium) is a
best-effort lead-marker heuristic, REPORTED not gated -- authoritative typing = the Wikidata
P31 "instance of" statement, which O3 reads when it fetches Wikidata to enumerate works.
Resolved anchors persist as resolve:<bk> records in the oeuvre store for O3 to consume.
Walls stay named-not-faked (a fetch failure is a finding, not a fabricated id).
Evidence -> knowledge/status/oeuvre_resolve.log. license_tier: ORIGINAL
module: nishi-core.search.oeuvre.resolve
depends: nx_guarded_run.nx, nx_str.nx, nx_seg_store.nx, /tmp/_ed_fetch_html.sov.elf
capability: RESOLVER + GATE + EVIDENCE
dependencies 5 imports · 0 importers
imports: nx_str.nxnx_itoa_lib.nxnx_syscalls.nxnx_guarded_run.nxnx_seg_store.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
| 24 | const OR_MAGIC_786432: i64 = 786432 |
| 26 | const OR_PREFIX: *u8 = "knowledge/store/oeuvre-" |
| 27 | const OR_LOG: *u8 = "knowledge/status/oeuvre_resolve.log" |
| 28 | const OR_NTERMS: i64 = 5 |
| 29 | const OR_DEADLINE: i64 = 18000 |
functions
| 31 | func or_p(s: *u8) -> i64 { sys_write(1, s, nx_str_len(s)); return 0 } |
| 36 | func or_n(v: i64) -> i64 { nxi_out(v); return 0 } calls 1: nxi_out |
| 37 | func or_f(fd: i64, s: *u8) -> i64 { sys_write(fd, s, nx_str_len(s)); return 0 } |
| 42 | func or_fn(fd: i64, v: i64) -> i64 { nxi_fd(fd, v); return 0 } |
| 44 | func or_cat(dst: *u8, off: i64, s: *u8) -> i64 { var i: i64 = 0; while s[i] != (0 as u8) { dst[off+i] = s[i]; i = i + 1 } return off + i } called by 1: main |
| 46 | func or_streq(a: *u8, b: *u8) -> i64 |
| 53 | func or_lc(c: i64) -> i64 { if c >= 0x41 { if c <= 0x5A { return c + 0x20 } } return c } called by 1: or_ci_has |
| 54 | func or_ci_has(hay: *u8, hn: i64, needle: *u8) -> i64 |
| 69 | func or_find(hay: *u8, hn: i64, needle: *u8) -> i64 |
| 86 | func or_qid(html: *u8, hn: i64, out: *u8) -> i64 calls 1: or_find |
| 116 | func or_type(html: *u8, hn: i64) -> i64 calls 1: or_ci_has |
| 134 | func or_tname(t: i64) -> *u8 |
| 143 | func or_term(i: i64) -> *u8 |
| 150 | func or_bk(i: i64) -> *u8 |
| 157 | func or_wpath(i: i64) -> *u8 |
| 164 | func or_exptype(i: i64) -> i64 |
| 171 | func or_out(i: i64) -> *u8 |
| 179 | func or_read_all(path: *u8, buf: *u8, cap: i64) -> i64 |
| 193 | func or_seg_next() -> i64 |
| 200 | func main() -> i64 |