Lesson 80: Waiver Renewal Divergence Factor Cross-Lane Capacity Borrowing Protocol in RPG Live-Ops
Lesson 79 caps active high-budget factors per lane. In live-ops, a legitimate regulated exception can still land in a lane that is at cap while another lane has spare cap units the same quarter.
This lesson adds a borrowing protocol: how to move cap capacity between owner_lane values for a defined window, how to log it beside the portfolio ledger, and how to return or renew the borrow before it becomes hidden technical debt.

What this lesson solves
You need:
- A policy that says when borrows are allowed (and when they are forbidden, e.g. during breach-freeze)
- An append-only borrow ledger that pairs with
waiver_renewal_divergence_factor_portfolio_ledger.csvfrom Lesson 79 - Return rules so
borrow_due_utcis as real as a production flag
Prerequisites: Lesson 79 cap units and ledger, plus Lesson 78 factor_id and owner_lane truth.
Expected time: 90-100 minutes including one borrow tabletop.
What you will build
- A
waiver_renewal_divergence_factor_cross_lane_borrow_policy.mdcontract - A
waiver_renewal_divergence_factor_borrow_ledger.csv(append-only) - One forbidden pattern list (max five bullets) for “anonymous capacity gifts”
Step 1 - Define eligible borrow events
In policy, require all of:
- Borrower lane is at or over
cap_limit_unitsafter counting only factors already inregister_status = active - Donor lane shows spare units:
cap_limit_units - active_cap_units >= borrowed_cap_units - A concrete
borrow_reason_ref: either afactor_idpromoted under exception, or an approvedexception_ticket_id - Executive or release-captain class approver named by policy when borrow exceeds a threshold (example:
borrowed_cap_units > 1.0)
Explicit non-starters: borrowing to bypass Lesson 77 triage outcomes, or to fund a factor the register still marks deferred without a recorded decision.
Step 2 - Author the borrow ledger schema
Use one row per borrow event (append-only; corrections are new rows with voids_row_id if you need accounting-style reversals).
| column | purpose |
|---|---|
borrow_row_id |
monotonic id |
quarter_label |
must match portfolio ledger quarter |
donor_lane |
lane giving spare cap |
borrower_lane |
lane receiving cap |
borrowed_cap_units |
numeric weight using Lesson 79 band weights |
borrow_start_utc |
when the borrow counts against donor spare |
borrow_due_utc |
hard return or documented renewal deadline |
borrow_reason_ref |
factor_id or exception_ticket_id |
approver_set |
comma-separated ids or group names |
return_status |
open, returned, renewed, disputed |
portfolio_ledger_note |
pointer to reconciling ledger row id |
Step 3 - Reconcile with the portfolio ledger
After each borrow opens, both lanes’ next waiver_renewal_divergence_factor_portfolio_ledger.csv snapshot must:
- Reduce donor spare or increase documented lend-out (policy chooses one representation; do not double-count)
- Increase borrower effective cap ceiling only for the borrow window
When return_status becomes returned, revert the ceiling adjustment in the same accounting style your Lesson 79 ledger uses for merges.
Step 4 - Close or renew before borrow_due_utc
Default rule: auto-return at due time unless a renewal row exists before due with fresh approvers.
Renewals must cite either:
- Extended mitigation proof for the same
factor_id, or - A new
exception_ticket_idexplaining why the lane still cannot retire the factor
If due passes with return_status = open, policy should flip release posture to yellow for the borrower lane until leadership closes the row.
Step 5 - Dispute and recall
If donor lane hits its own surprise load before borrow_due_utc, policy may allow early recall with:
- A
recall_row_idreferencing the originalborrow_row_id - A short impact note to integration/release captains
Disputes (return_status = disputed) route to the same escalation lane named in Lesson 73 playbook ownership—do not resolve in chat threads alone.
Common mistakes
- Mistake: Borrow without donor spare. Fix: prove donor spare from the same ledger generation as the borrow row.
- Mistake: Borrow for unnamed factors. Fix: every borrow ties to
borrow_reason_ref. - Mistake: Permanent borrows. Fix: every row has
borrow_due_utc; “indefinite” becomes a policy change, not a ledger trick.
Mini challenge
- Sketch one donor and one borrower lane with real names from your org chart.
- Compute spare units and one borrow that clears a single
highfactor admission without breach. - Write the yellow-state trigger if the borrower misses
borrow_due_utcby 24 hours.
FAQ
Does borrowing change Lesson 78 register columns?
No new register columns are required. Borrow is capacity governance layered on Lesson 79; factor_id still lives in the register.
Can two borrowers split one donor’s spare?
Yes if policy allows fractional unit borrows and each row has its own borrow_row_id and due time.
Lesson recap
You now have a cross-lane borrow protocol that makes temporary cap relief traceable, time-bounded, and reconcilable with the portfolio ledger instead of hiding under informal favors between leads.
Next lesson teaser
Next: Lesson 81: Borrow Renewal Dispute Scorecard for Revenue and Safety Exposure Before the Executive Readout in RPG Live-Ops ranks overdue and disputed borrows and forces merge-or-return decisions before the monthly executive readout.
Related learning
- Lesson 79: Waiver Renewal Divergence Factor Portfolio Cap per Owner Lane and Mitigation Budget in RPG Live-Ops
- Lesson 78: Waiver Renewal Divergence Causal Factor Register and Monthly Executive Readout in RPG Live-Ops
- 18 Free Debt Retirement Forecast Calibration Resources for Indie Live-Ops (2026 Q4)