03 — Integration

Warranty & Recovery is a member of the Work & Supply network (message protocol v1). Its contract is schema/warranty.integration.dsl (authoring spec v1.5), generated with python -m codegen.cli integration warranty --network work_supply; the handlers are in integration/handlers.py. The whole network is in networks/work_supply/NETWORK_MAP.md.

What it owns

Network entity Model Business reference
warranty.entitlement WarrantyEntitlement entitlement_number (WE-{sequence:05})
warranty.candidate WarrantyCandidate candidate_number (WC-{sequence:05})
warranty.claim WarrantyClaim claim_number (CLM-{sequence:05})
warranty.recovery WarrantyRecovery recovery_number (WR-{sequence:05})
warranty.repair_cycle RepairCycle —

Messages (all implemented)

Kind Message What
publishes warranty.candidate_detected a candidate raised (Work flags the work order)
publishes warranty.candidate_eligible found eligible, with the entitlement and the usage used
publishes warranty.claim_submitted / claim_decided claim sent / supplier decision
publishes warranty.recovery_approved / recovery_received recovery approved / posted by Finance
consumes asset.component_installed new: start a new unit's entitlement
consumes asset.component_removed raise and evaluate a candidate (warranty review or failure)
consumes lifecycle.exposure_revised a meter correction: re-evaluate the open candidates it can reach, and flag submitted claims whose component's exposure changed (the claim's own snapshot is never changed)
consumes work.work_closed add the closed work order to the claims as evidence
consumes finance.supplier_credit_memo_posted the recovery is posted; the claim recovered
accepts warranty.evaluate_candidate raise / re-evaluate a candidate by hand or from Work
accepts warranty.create_claim for an eligible candidate, once
accepts warranty.record_claim_decision the supplier's decision
answers warranty.entitlement_status, candidate_status, claim_status read-only

Warranty reads a unit's hours at failure from Asset Lifecycle with lifecycle.component_exposure — a direct read-only query, like the pickers — so eligibility uses authoritative usage.

Who refers to it

Work Management stores the candidate on the work order (warranty_candidate_cid/_ref, from warranty.candidate_detected). SAP AP's credit memos carry warranty_recovery_cid/_ref.

Differences from the pack

Requests name ids <entity>_cid; recovery_received also fires for posted; the new asset.component_installed consumer creates entitlements (the pack left their creation open). See the contract's header for the full list.