CompensabilityAnalyzerGKR
What it is¶
CompensabilityAnalyzerGKR is the workers' compensation tool that answers whether a claimed injury arose out of and in the course of employment, and whether a statutory defense bars it. It runs standalone, WC only, and sits after coverage in the WC recipe: extractor, resolver, coverage, compensability, indicators, benefits, gate, brief . It is not on the AXA path and is built after the Auto and Property coverage specs, before any WC pilot. In the Trace Contract Program it joins as the tenth tool when WC and GL follow Auto and Property .
The evidence-ledger pattern¶
The refactor replaced the V2 tool's vocabulary-weighted scoring with an evidence ledger. AOE and COE elements are built from attributed facts carrying reliability classes. State doctrines arrive from the jurisdiction resolver as rules. Defenses are chunks with rebuttals and state standards. Completeness caps confidence, so an employer-only file yields preliminary_accept at most and never a denial. Bands live in a compensability_spec record .
Five V2 behaviours were removed by ruling: the vocabulary-weighted score, a confirmation prompt that defaulted to true, a fail-open defense fallback, an in-tool authority decision, and habitual chunk citations. The authority decision belonged to the gate; four separate tools had each decided authority for themselves before being corrected, and when several tools independently answer the same downstream question the question belongs to one of them.
Two questions, two tools¶
What looked like one WC benefits tool is two different questions: a statutory entitlement and a carried reserve. Compensability answers the first. The reserve, including the WC benefit schedules, belongs to ReserveEstimatorGKR, where vehicle valuation and statutory WC benefit schedules turned out to be one engine plus two record sets . Splitting entitlement from reserve mirrors the coverage-compensability boundary: the test for the real boundary between two tools is what remains in code once every rule, table and threshold has moved to records.
The boundary with coverage¶
Coverage never evaluates AOE, COE or defenses. Compensability never verifies the policy, the employer match, the state listing or the class, and never sets authority.
The v1 directive made coverage a precondition. That was wrong and v2 reversed it. Compensability runs regardless of the coverage verdict, because an injury can be compensable with no policy responding and the claim then runs to the uninsured employers fund. Coverage is recorded as context that gates the recommendation rather than halting the analysis: deny_recommended is blocked while coverage is unverified, and nothing else is. Independent questions must not gate each other.
What the v2 directive ruled¶
The directive was revised to v2 on 2026-09-08 and the v1 file is superseded . Six changes:
Sequencing is gated. No engine code is written before one jurisdiction is curated end to end: the resolver's compensability section with the state's date_of_injury_rule, the WC fact schema reconciled against the defense triggers, and five defense chunks verified and re-curated. This is the one-jurisdiction vertical slice the manual prescribes for every engine, because a tool where everything is indeterminate is unreviewable.
The coverage precondition is reversed, as above.
No record is seeded carrying a pending or stub status.
Completeness splits into two independent dimensions, account breadth and medical support, rather than one four-value ladder.
Compensability is answered per claimed condition, with the file-level recommendation aggregating to partially_supported where conditions differ. A lumbar strain can be accepted while a cervical claim is unsupported; a file-level verdict hides the contested part, which is the part someone must act on.
accounts_present gets a named producer, DocumentClassification stage 4, with an interim derivation from the document inventory recorded as accounts_source .
Gate 1 review¶
Items 1 and 2 were delivered and signed on 2026-09-08: the WC extraction spec at version 2 with 25 fields via seed_wc_fact_schema.py, and DEF-001 to DEF-005 enriched via seed_defense_chunks_v2.py with a 30-field reconciliation passing. Item 3, the resolver compensability section for the pilot state, is still open and blocks Gate 2.
Five corrections to the defense chunks were ruled before signature. Absence is not rebuttal: DEF-002 and DEF-003 had rebutted on the negation of their own triggers, which records a rebuttal nobody made and closes a question the file has not answered; element absence is now three-valued inside the trigger, and rebutted_when carries only affirmative contrary facts such as employer tolerance or acquiescence . DEF-004 triggers on explicit intent facts only, since mechanism inconsistency is a misrepresentation signal belonging to the detector and would manufacture a self-inflicted-injury defense on any confused first report . DEF-005 drops the commute trigger and the going-and-coming exceptions, because going and coming is a doctrine in the spec's doctrine layer and answering it twice guarantees divergence; "substantial" is a state standard, not a fact . DEF-001 needs the test value, threshold and timing rather than a positive boolean, refusal gated on state_standard_ref, witnessed impairment without a test as indeterminate, and admissibility left to counsel . DEF-003 needs its own state_standard_ref, because participation is not dispositive under the Larson factors and several states compensate instigators .
The intoxication ruling generalises: above_threshold as an extracted boolean asks the model to compare a reading against a statutory level. The extractor supplies the test value, units, collection time and testing standard; the analyzer does the comparison against the resolver threshold. It is the same shape as the prior_claim_body_part ruling on the extractor.
Two process points followed. The reconciliation should check that every state_standard_ref names a parameter the resolver section will publish, on the same rule as trigger fields. And the doctrine research is not produced by a developer alone, since burden allocations, presumption standards and the date-of-injury rule produce confident untraceable answers when wrong.
What item 3 must publish¶
The defense chunks now determine the resolver section's parameter list: intoxication threshold with units and the presumption-versus-causation posture, refusal treatment, horseplay standard with the Larson posture, deviation standard, wilful misconduct elements and burden, plus the doctrine set and the date_of_injury_rule .
Open items¶
Item 3, the resolver compensability section for the pilot state, is open and blocks Gate 2. No engine code exists under the v2 gate until that slice closes. The pilot state is not named in the sources.