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.

Baby Shiba Inu Dog illustration representing a small, time-bounded loan of attention between two lanes

What this lesson solves

You need:

  1. A policy that says when borrows are allowed (and when they are forbidden, e.g. during breach-freeze)
  2. An append-only borrow ledger that pairs with waiver_renewal_divergence_factor_portfolio_ledger.csv from Lesson 79
  3. Return rules so borrow_due_utc is 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

  1. A waiver_renewal_divergence_factor_cross_lane_borrow_policy.md contract
  2. A waiver_renewal_divergence_factor_borrow_ledger.csv (append-only)
  3. 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_units after counting only factors already in register_status = active
  • Donor lane shows spare units: cap_limit_units - active_cap_units >= borrowed_cap_units
  • A concrete borrow_reason_ref: either a factor_id promoted under exception, or an approved exception_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_id explaining 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_id referencing the original borrow_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

  1. Sketch one donor and one borrower lane with real names from your org chart.
  2. Compute spare units and one borrow that clears a single high factor admission without breach.
  3. Write the yellow-state trigger if the borrower misses borrow_due_utc by 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