{
  "tool_id": "art-763-ai-displacement-risk-screener",
  "kernel_id": "art-763-ai-displacement-risk-screener",
  "display_name": "AI Displacement Risk Screener",
  "tool_version": "1.0.0",
  "mandate_type": "analytics_mandate",
  "purpose": "AI-driven job-displacement risk screener ported from ApexLogics Apex #104 (AL-111). For a task-composition profile (routine cognitive/manual and non-routine analytical/interpersonal/manual shares, 0..100 each), a sector exposure factor, an education level and years in role, the node computes a 0..100 composite displacement score as 0.40 x automation probability + 0.40 x routine-task fraction + 0.20 x sector exposure, clamped and rounded, with an education-adjusted informational score and a four-tier banding (Low <= 30, Medium <= 55, High <= 75, else Critical). Selecting a SOC code looks the occupation up in an embedded 62-row table (title, Frey-Osborne automation probability, task splits, BLS-OES-labelled median salary); leaving it null estimates the probability from the sliders (slope 0.85, floor 0.05, cap 0.99). The node also returns up to three adjacent lower-exposure occupations scored with the caller's sector factor, gated at similarity >= 60. Invalid-domain inputs are rejected by throw with a named reason. The automation probabilities are Frey-Osborne 2013-vintage estimates (stale by construction), the task splits are Apex-embedded approximations, and the median-salary cells labelled BLS OES 2025 stayed ungrounded at porting time (BLS HTTP 403): salary figures are informational only and stay out of the score, with every vintage and grounding flag carried in the kernel metadata (payload DIFFERS.md D1-D4, CITES.md U1-U4).",
  "control_description": "AI-driven job-displacement risk screener ported from ApexLogics Apex #104 (AL-111). For a task-composition profile (routine cognitive/manual and non-routine analytical/interpersonal/manual shares, 0..100 each), a sector exposure factor, an education level and years in role, the node computes a 0..100 composite displacement score as 0.40 x automation probability + 0.40 x routine-task fraction + 0.20 x sector exposure, clamped and rounded, with an education-adjusted informational score and a four-tier banding (Low <= 30, Medium <= 55, High <= 75, else Critical). Selecting a SOC code looks the occupation up in an embedded 62-row table (title, Frey-Osborne automation probability, task splits, BLS-OES-labelled median salary); leaving it null estimates the probability from the sliders (slope 0.85, floor 0.05, cap 0.99). The node also returns up to three adjacent lower-exposure occupations scored with the caller's sector factor, gated at similarity >= 60. Invalid-domain inputs are rejected by throw with a named reason. The automation probabilities are Frey-Osborne 2013-vintage estimates (stale by construction), the task splits are Apex-embedded approximations, and the median-salary cells labelled BLS OES 2025 stayed ungrounded at porting time (BLS HTTP 403): salary figures are informational only and stay out of the score, with every vintage and grounding flag carried in the kernel metadata (payload DIFFERS.md D1-D4, CITES.md U1-U4).",
  "declared_inputs": [],
  "declared_outputs": [],
  "kernel_digest": "sha256:91fb630e8e4abce5da6b62416996e456f8665988098ae412e7f24786ac07dedc",
  "trust_label": "independently verified: zkVM execution proof (risc0/groth16-bn254)",
  "data_vintage": "2026-10-18",
  "last_validated": "2026-10-18",
  "conformance_fixtures_vendored": true,
  "compute_proof_ready": "ready",
  "wave": 133,
  "source_url": "https://ainumbers.co/chaingraph/art-763-ai-displacement-risk-screener.html",
  "generated_at": "2026-10-22T23:11:55.839Z"
}
