Lesson 81: Borrow Renewal Dispute Scorecard for Revenue and Safety Exposure Before the Executive Readout in RPG Live-Ops

Direct answer: A borrow renewal dispute scorecard takes every borrow_row_id from Lesson 80 whose return_status is open, disputed, or past borrow_due_utc without a renewal row, ranks them by revenue at risk and safety exposure, and requires a merge-or-return decision (or an approved renewal with new approvers) before the Lesson 78 readout. You ship a short policy, one CSV, and a one-page decision agenda.

Cross-lane borrows are legitimate when spare cap exists, but they create inter-lane dependency. When borrow_due_utc passes or parties disagree, the org needs a single ordered list so producers do not negotiate in silos while release posture drifts.

This lesson gives you a scorecard that is explicit, lightweight, and tied to IDs you already maintain.

Pixel ballot-box style illustration suited to governance scorecards and structured leadership decisions

What this lesson solves

You need:

  1. A policy defining which borrows appear on the scorecard and how ranks tie-break
  2. A waiver_borrow_renewal_dispute_scorecard.csv that is regenerated from the borrow ledger, not hand-edited for truth
  3. A readout gate that blocks “all clear” on the Lesson 78 deck if the top N rows are still unresolved

Prerequisites: Lesson 80 borrow ledger columns and dispute routing, plus Lesson 79 portfolio cap context.
Expected time: about 100 minutes including one scored tabletop dry run.

What you will build

  1. waiver_borrow_renewal_dispute_scorecard_policy.md
  2. waiver_borrow_renewal_dispute_scorecard.csv (derived snapshot; replace rows each run)
  3. A merge-or-return agenda template your release captain can paste into the readout doc

Step 1 - Define inclusion rules on the scorecard

Include a borrow row when any is true:

  • return_status = open and now is after borrow_due_utc
  • return_status = disputed
  • return_status = open and now is within 72 hours of borrow_due_utc (early-warning band)

Exclude rows already returned or cleanly renewed with a renewal row that satisfies Lesson 80 renewal rules.

Optional exclude (policy flag): borrows under micro unit weight when revenue and safety multipliers are both below policy floors, so the scorecard stays executive-sized.

Step 2 - Author the scorecard policy

In waiver_borrow_renewal_dispute_scorecard_policy.md, document:

  • Primary sort key: composite_risk_score (see Step 3) descending
  • Tie-breakers in order: days past borrow_due_utc descending, then revenue_at_risk_usd descending, then borrower_lane name (stable lexicographic) if you need deterministic ordering across tools
  • Cap on surfaced rows: example top 15 each cycle unless incident expands the window
  • Decision outcomes allowed: merge_factors, return_capacity_now, renew_with_new_approvers, early_recall_to_donor, escalate_to_lesson_73_owner
  • Evidence hooks: every surfaced row must cite borrow_row_id and the latest portfolio ledger generation ID used for cap math

Step 3 - Compute ranking fields

For each included borrow row, derive:

Field Meaning
borrow_row_id From Lesson 80 ledger
borrower_lane, donor_lane Lane labels
days_past_due max(0, floor hours(now - borrow_due_utc) / 24)
revenue_at_risk_usd Revenue tied to features gated by the borrower lane until borrow resolves; use your forecasting slice from commerce analytics
safety_exposure_score 0-100 from incident-ready posture (crash rate proxy, cert risk, or regulatory lane pressure); reuse Lesson 72 reliability bands if you already map numeric scores
composite_risk_score Policy-defined blend, example: 0.55 * normalized(revenue_at_risk_usd) + 0.35 * safety_exposure_score + 0.10 * min(days_past_due * 5, 100)

Normalize revenue using your quarterly forecast denominator so one blockbuster SKU does not swamp the chart without review.

Step 4 - Author waiver_borrow_renewal_dispute_scorecard.csv

Snapshot schema (one row per surfaced borrow):

column purpose
scorecard_cycle_id monotonic id for this generation
borrow_row_id foreign key to borrow ledger
borrow_reason_ref factor or ticket pointer
revenue_at_risk_usd numeric
safety_exposure_score 0-100
days_past_due integer
composite_risk_score final sort key
decision_due_utc must be before next Lesson 78 readout start
proposed_outcome empty until the decision meeting; then merge_factors, return_capacity_now, etc.
decision_owner named captain

Treat this CSV as generated output. Source of truth stays the append-only borrow ledger from Lesson 80.

Step 5 - Run the merge-or-return agenda before the readout

Agenda for each top row (max seven minutes each):

  1. Read borrow_reason_ref and confirm linked factor still belongs in active posture versus merge-ready
  2. Show donor spare snapshot after simulated return versus merge using Lesson 79 units
  3. Pick exactly one outcome; if escalate_to_lesson_73_owner, attach playbook matrix row references
  4. Log decision back into borrow ledger as new rows (renewed, returned, or dispute closure) per Lesson 80

If no decisions complete before readout, the Lesson 78 deck carries an explicit yellow banner on divergence governance until the next cycle.

Common mistakes

  • Mistake: Scorecard replaces ledger. Fix: scorecard is derived; ledger stays canonical.
  • Mistake: Revenue guessed from anecdotes. Fix: tie revenue_at_risk_usd to a named forecast row your finance partner acknowledges.
  • Mistake: Ignoring donor recall. Fix: if donor lane hits recall triggers from Lesson 80, route through early-recall path instead of dragging renewal debates.

Mini challenge

  1. Take three sample borrow_row_id values from your tabletop notes (one disputed, one overdue, one near due).
  2. Assign plausible revenue and safety numbers and compute composite_risk_score.
  3. Write which Lesson 78 slide picks up the unresolved banner if the middle row stalls through readout.

FAQ

How does this relate to Lesson 77 replay divergence triage?

Replay rows explain telemetry disagreements. Borrow rows explain capacity disagreements. If both exist for the same factor_id, triage borrow first when borrow_due_utc is past, because cap debt can block releases even when telemetry is calm.

Can we run the scorecard weekly instead of monthly?

Yes if generate cost is low. Keep the same schema so tooling stays stable.

What if legal demands anonymity on revenue figures?

Use letter grades (A-F) instead of USD in stored CSV while keeping sort keys in a restricted workbook.

Lesson recap

You now have a borrow renewal dispute scorecard that turns messy cross-lane favors into an ordered, evidence-backed queue so merge-or-return decisions land before the executive readout instead of after players feel the drift.

Next lesson teaser

Continue with Lesson 82: Borrow Outcome Patch Comms Packet for Controlled Player-Facing Notes to turn borrow resolutions into store-safe patch copy, in-game banners, and social stubs without leaking lane politics.

Related learning

Bookmark this lesson if your studio crosses LiveOps capacity between lanes. Share it when borrow tension shows up right before leadership reviews.