nx_legal_svc.nx
buildroot/runtime/nx_legal_svc.nx
about
nx_legal_svc.nx -- LEGAL SERVICE FACADE. One agentic MCP tool over the sovereign legal-calc stack.
The legal counterpart to nx_finance_svc: one verb-dispatched JSON tool over the exact legal-computation
modules (nx_sol statute-of-limitations, nx_damages prejudgment interest), inheriting the envelope, the
structured errors and the self-description from nx_service. No new domain logic -- every value comes from a
gate-proven module.
agentic-ready: `describe` emits the verb catalog (tools/list analog).
workflow-ready: verbs COMPOSE -- sol.deadline emits a day number that sol.assess consumes; damages.days
emits a day count that damages.simple consumes. A pipeline chains them with no shared state.
fail-closed: a judgment date before accrual (422 REFUSED), a non-positive limitations period or
negative input (400 BAD_ARGS) -- never a fabricated deadline or interest figure.
USAGE: nx_legal_svc <verb> [args...]
genealogy_id: legal_calc + service_infrastructure
dependencies 16 imports · 0 importers
diagram shows first 10 each side; +6 more imports, +0 more importers in the complete lists below.
imports: nx_syscalls.nxnx_service.nxnx_grounding.nxnx_sol_lib.nxnx_damages_lib.nxnx_esign_lib.nxnx_ltv_lib.nxnx_hold_lib.nxnx_privlog_lib.nxnx_obligation_lib.nxnx_ledes_lib.nxnx_ipdock_lib.nxnx_privacy_lib.nxnx_efile_lib.nxnx_captable_lib.nxnx_clause_lib.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
| 34 | const LEG_MAGIC_8192: i64 = 8192 |
| 36 | const LEG_SVC: *u8 = "legal" as *u8 |
functions
| 39 | func leg_describe(j: *NxJson) -> i64 |
| 60 | func leg_sol_deadline(j: *NxJson, y: i64, m: i64, d: i64, years: i64, tolled: i64) -> i64 |
| 73 | func leg_sol_assess(j: *NxJson, deadline: i64, ay: i64, am: i64, ad: i64) -> i64 called by 1: main calls 9: sol_days_from_civilsol_statussol_days_remainingnsvc_ok_opennj_kv_strsol_status_str+3 |
| 86 | func leg_damages_days(j: *NxJson, y1: i64, m1: i64, d1: i64, y2: i64, m2: i64, d2: i64) -> i64 |
| 99 | func leg_damages_simple(j: *NxJson, principal: i64, annual_bp: i64, days: i64) -> i64 called by 1: main calls 7: dmg_simple_interestnsvc_errornsvc_ok_opennj_kv_intnj_commadmg_total_award+1 |
| 114 | func leg_damages_compound(j: *NxJson, principal: i64, annual_bp: i64, years: i64) -> i64 called by 1: main calls 7: dmg_compound_interestnsvc_errornsvc_ok_opennj_kv_intnj_commadmg_total_award+1 |
| 129 | func leg_esign_validity(j: *NxJson, intent: i64, consent: i64, assoc: i64, retention: i64, is_consumer: i64, paper: i64, withdrawal: i64, hwsw: i64, access: i64) -> i64 called by 1: main calls 8: es_elements_purees_ueta_purees_consumer_purensvc_ok_opennj_kv_intnj_comma+2 |
| 148 | func leg_esign_tier(j: *NxJson, sig_data: i64, unique: i64, sigid: i64, sole: i64, tamper: i64, qscd: i64, qcert: i64) -> i64 |
| 165 | func leg_ltv_verify(j: *NxJson, sa: i64, sc: i64, ts: i64, ch: i64, rv: i64, ar: i64, revoked: i64, asof: i64, expiry: i64) -> i64 called by 1: main calls 12: ltv_level_pureltv_verify_puresys_mmapltv_level_labelltv_verdict_labelnsvc_ok_open+6 |
| 187 | func leg_hold_sanction(j: *NxJson, lost: i64, steps: i64, restorable: i64, intent: i64) -> i64 |
| 200 | func leg_hold_defensible(j: *NxJson, duty_attached: i64, notice: i64, unacked: i64, unsuspended: i64) -> i64 called by 1: main calls 7: nsvc_ok_opennj_kv_boolhd_defensible_purenj_commanj_kv_inthd_exposure_pure+1 |
| 210 | func leg_priv_assert(j: *NxJson, comm: i64, rel: i64, advice: i64, conf: i64, waived: i64) -> i64 |
| 220 | func leg_priv_waiver(j: *NxJson, disclosed: i64, common_interest: i64, inadvertent: i64, steps: i64, prompt: i64) -> i64 |
| 228 | func leg_obl_status(j: *NxJson, due: i64, asof: i64, satisfied: i64, waived: i64, notice_day: i64, cure_days: i64) -> i64 |
| 245 | func leg_obl_portfolio(j: *NxJson, overdue: i64, breach: i64, unknown: i64) -> i64 called by 1: main calls 7: nsvc_ok_opennj_kv_intobl_exposure_purenj_commanj_kv_boolobl_portfolio_clean_pure+1 |
| 255 | func leg_ledes_check(j: *NxJson, task: i64, act: i64, task_count: i64, hours_hundredths: i64, rate_cents: i64, cap_cents: i64, billable: i64) -> i64 called by 1: main calls 11: led_entry_check_puresys_mmapled_verdict_labelnsvc_ok_opennj_kv_intnj_comma+5 |
| 272 | func leg_ip_deadline(j: *NxJson, anchor: i64, period_days: i64, asof: i64, grace_days: i64) -> i64 called by 1: main calls 13: ipd_deadline_pureipd_status_hard_pureipd_status_grace_puresys_mmapipd_status_labelnsvc_ok_open+7 |
| 291 | func leg_privacy_breach(j: *NxJson, aware_hour: i64, reported_hour: i64, personal: i64, risk: i64, high_risk: i64, encrypted: i64) -> i64 called by 1: main calls 12: prv_breach_status_puresys_mmapprv_status_labelnsvc_ok_opennj_kv_intprv_breach_deadline_pure+6 |
| 308 | func leg_privacy_dsar(j: *NxJson, received: i64, regime_ccpa: i64, ext_claimed: i64, ext_notice_day: i64, responded: i64) -> i64 called by 1: main calls 10: prv_gdpr_dsar_pureprv_ccpa_dsar_puresys_mmapprv_status_labelprv_response_status_purensvc_ok_open+4 |
| 322 | func leg_efile_status(j: *NxJson, submitted: i64, accepted: i64, rejected: i64, deadline: i64, relation_back: i64, cure_days: i64) -> i64 |
| 339 | func leg_captable_check(j: *NxJson, authorized: i64, issued: i64, treasury: i64, granted: i64, available: i64, warrants: i64, convertibles: i64, held: i64) -> i64 called by 1: main calls 11: ent_outstanding_pureent_fully_diluted_purensvc_ok_opennj_kv_boolent_issue_ok_purenj_comma+5 |
| 359 | func leg_clause_review(j: *NxJson, draft: *u8, standard: *u8, criticality: i64) -> i64 called by 1: main calls 13: cl_retained_permillecl_novel_permillecl_deviation_permillecl_risk_puresys_mmapcl_risk_label+7 |
| 381 | func main(argc: i64, argv: *i64) -> i64 |