From 96b9929e04df93171c415f36795f34b4440279ae Mon Sep 17 00:00:00 2001 From: Jorel97 Date: Mon, 1 Jun 2026 08:54:58 -0600 Subject: [PATCH 1/2] Add subscription quota rollover guard --- subscription-quota-rollover-guard/README.md | 37 +++ subscription-quota-rollover-guard/demo.js | 25 ++ .../demo_video.py | 40 +++ subscription-quota-rollover-guard/index.js | 254 ++++++++++++++++++ .../package.json | 12 + .../reports/demo-script.txt | 7 + .../reports/demo.gif | Bin 0 -> 51450 bytes .../reports/quota-rollover-report.json | 91 +++++++ .../reports/quota-rollover-report.md | 58 ++++ .../reports/summary.svg | 23 ++ .../requirements-map.md | 29 ++ .../sample-data.js | 85 ++++++ subscription-quota-rollover-guard/test.js | 30 +++ 13 files changed, 691 insertions(+) create mode 100644 subscription-quota-rollover-guard/README.md create mode 100644 subscription-quota-rollover-guard/demo.js create mode 100644 subscription-quota-rollover-guard/demo_video.py create mode 100644 subscription-quota-rollover-guard/index.js create mode 100644 subscription-quota-rollover-guard/package.json create mode 100644 subscription-quota-rollover-guard/reports/demo-script.txt create mode 100644 subscription-quota-rollover-guard/reports/demo.gif create mode 100644 subscription-quota-rollover-guard/reports/quota-rollover-report.json create mode 100644 subscription-quota-rollover-guard/reports/quota-rollover-report.md create mode 100644 subscription-quota-rollover-guard/reports/summary.svg create mode 100644 subscription-quota-rollover-guard/requirements-map.md create mode 100644 subscription-quota-rollover-guard/sample-data.js create mode 100644 subscription-quota-rollover-guard/test.js diff --git a/subscription-quota-rollover-guard/README.md b/subscription-quota-rollover-guard/README.md new file mode 100644 index 00000000..94c9056d --- /dev/null +++ b/subscription-quota-rollover-guard/README.md @@ -0,0 +1,37 @@ +# Subscription Quota Rollover Guard + +This slice adds a dependency-free Revenue Infrastructure guard for subscription AI-compute or token quota rollover. It audits synthetic quota ledgers before invoice release so SCIBASE can avoid double billing, expired quota application, and unsupported carry-forward during plan changes. + +The scope is intentionally distinct from existing same-issue submissions for proration, renewal notice, entitlement downgrade, usage replay/idempotency, prepaid credit breakage, committed drawdown, quote approval, invoice delivery, tax, collections, analytics-seat leakage, and payment authorization freshness. + +## What It Checks + +- Carry-forward units exceeding the plan rollover cap. +- Posted rollover totals that do not match prior-cycle unused quota. +- Duplicate rollover lot identifiers. +- Expired rollover lots applied to the current invoice. +- Applied units that do not reconcile to lot-level records. +- Plan downgrade carry limits. +- Unapproved negative quota adjustments. +- Overage line items that fail to subtract applied rollover. +- Missing finance hold when blockers exist. + +## Reviewer Output + +Running the demo creates: + +- `reports/quota-rollover-report.json` +- `reports/quota-rollover-report.md` +- `reports/summary.svg` +- `reports/demo-script.txt` +- `reports/demo.gif` + +All inputs are synthetic. The guard uses no credentials, private customer data, payment processors, live billing systems, analytics APIs, or external services. + +## Commands + +```bash +npm test +npm run demo +npm run demo:video +``` diff --git a/subscription-quota-rollover-guard/demo.js b/subscription-quota-rollover-guard/demo.js new file mode 100644 index 00000000..be74ac30 --- /dev/null +++ b/subscription-quota-rollover-guard/demo.js @@ -0,0 +1,25 @@ +import { mkdir, writeFile } from "node:fs/promises"; +import { auditQuotaRollover, buildFinanceMarkdown, buildSummarySvg } from "./index.js"; +import { riskyQuotaLedger } from "./sample-data.js"; + +const reportsDir = new URL("./reports/", import.meta.url); +await mkdir(reportsDir, { recursive: true }); + +const report = auditQuotaRollover(riskyQuotaLedger); +await writeFile(new URL("quota-rollover-report.json", reportsDir), `${JSON.stringify(report, null, 2)}\n`); +await writeFile(new URL("quota-rollover-report.md", reportsDir), buildFinanceMarkdown(report)); +await writeFile(new URL("summary.svg", reportsDir), buildSummarySvg(report)); +await writeFile( + new URL("demo-script.txt", reportsDir), + [ + "Demo: Subscription Quota Rollover Guard", + `Account: ${report.accountId}`, + `Billing cycle: ${report.billingCycle}`, + `Decision: ${report.decision}`, + `Risk score: ${report.riskScore}/100`, + `Blockers: ${report.summary.blockCount}`, + "Finance action: hold invoice until duplicate/expired rollover, downgrade caps, and overage units reconcile.", + ].join("\n"), +); + +console.log(JSON.stringify(report.summary, null, 2)); diff --git a/subscription-quota-rollover-guard/demo_video.py b/subscription-quota-rollover-guard/demo_video.py new file mode 100644 index 00000000..21f2c1e0 --- /dev/null +++ b/subscription-quota-rollover-guard/demo_video.py @@ -0,0 +1,40 @@ +from pathlib import Path + +from PIL import Image, ImageDraw, ImageFont + + +ROOT = Path(__file__).resolve().parent +REPORTS = ROOT / "reports" +REPORTS.mkdir(exist_ok=True) + + +def font(size): + for name in ("arial.ttf", "segoeui.ttf"): + try: + return ImageFont.truetype(name, size) + except OSError: + pass + return ImageFont.load_default() + + +slides = [ + ("Subscription Quota Rollover Guard", "Synthetic revenue control for SCIBASE #20"), + ("Decision", "hold-invoice · risk score 100/100"), + ("Detected", "expired lots · duplicate carry-forward · downgrade cap breach"), + ("Finance Action", "Hold invoice and reconcile overage before release"), +] + +frames = [] +for title, subtitle in slides: + image = Image.new("RGB", (960, 540), "#111827") + draw = ImageDraw.Draw(image) + draw.rectangle((48, 58, 912, 482), outline="#374151", width=3) + draw.text((82, 132), title, fill="#f9fafb", font=font(42)) + draw.text((82, 214), subtitle, fill="#d1d5db", font=font(24)) + draw.rectangle((82, 340, 690, 380), fill="#dc2626") + draw.text((82, 410), "Synthetic data only. No payment processor or live billing calls.", fill="#9ca3af", font=font(20)) + frames.extend([image] * 14) + +gif_path = REPORTS / "demo.gif" +frames[0].save(gif_path, save_all=True, append_images=frames[1:], duration=120, loop=0) +print(f"wrote {gif_path}") diff --git a/subscription-quota-rollover-guard/index.js b/subscription-quota-rollover-guard/index.js new file mode 100644 index 00000000..d23539e9 --- /dev/null +++ b/subscription-quota-rollover-guard/index.js @@ -0,0 +1,254 @@ +const SEVERITY_ORDER = { block: 3, warn: 2, info: 1 }; + +function finding(code, severity, message, evidence, remediation) { + return { code, severity, message, evidence, remediation }; +} + +function cycleToNumber(cycle) { + const match = String(cycle || "").match(/^(\d{4})-(\d{2})$/); + if (!match) return Number.NaN; + return Number(match[1]) * 12 + Number(match[2]); +} + +function sum(values) { + return values.reduce((total, value) => total + Number(value || 0), 0); +} + +export function auditQuotaRollover(ledger) { + if (!ledger || typeof ledger !== "object") { + throw new TypeError("quota ledger must be an object"); + } + + const issues = []; + const plan = ledger.plan || {}; + const prior = ledger.priorCycle || {}; + const current = ledger.currentCycle || {}; + const lots = ledger.rolloverLots || []; + const adjustments = ledger.adjustments || []; + const invoice = ledger.invoicePreview || {}; + + if (prior.carryForwardUnits > plan.rolloverCapUnits) { + issues.push( + finding( + "ROLLOVER_CAP_EXCEEDED", + "block", + "Prior-cycle unused quota exceeds the contractual rollover cap.", + { + carryForwardUnits: prior.carryForwardUnits, + rolloverCapUnits: plan.rolloverCapUnits, + }, + "Clamp carry-forward units to the plan cap and regenerate the invoice preview before release.", + ), + ); + } + + if (prior.postedRolloverUnits !== prior.carryForwardUnits) { + issues.push( + finding( + "POSTED_ROLLOVER_MISMATCH", + "block", + "Posted rollover units do not match the calculated prior-cycle carry-forward units.", + { + postedRolloverUnits: prior.postedRolloverUnits, + carryForwardUnits: prior.carryForwardUnits, + }, + "Reconcile the quota ledger before overage or credit lines are posted.", + ), + ); + } + + const seenLots = new Set(); + for (const lot of lots) { + if (seenLots.has(lot.lotId)) { + issues.push( + finding( + "DUPLICATE_ROLLOVER_LOT", + "block", + "The same rollover lot appears more than once and could be carried forward twice.", + { lotId: lot.lotId }, + "Deduplicate rollover lots by immutable lot id before invoice generation.", + ), + ); + } + seenLots.add(lot.lotId); + + if (cycleToNumber(lot.expiresAfterCycle) < cycleToNumber(ledger.billingCycle) && lot.appliedUnits > 0) { + issues.push( + finding( + "EXPIRED_ROLLOVER_APPLIED", + "block", + "Expired quota was applied to the current invoice.", + { + lotId: lot.lotId, + expiresAfterCycle: lot.expiresAfterCycle, + billingCycle: ledger.billingCycle, + appliedUnits: lot.appliedUnits, + }, + "Remove expired lots from available balance and route the invoice to finance review.", + ), + ); + } + } + + const totalAppliedFromLots = sum(lots.map((lot) => lot.appliedUnits)); + if (totalAppliedFromLots !== current.rolloverAppliedUnits) { + issues.push( + finding( + "ROLLOVER_APPLICATION_MISMATCH", + "block", + "Applied rollover units do not equal the sum of applied rollover lots.", + { + totalAppliedFromLots, + rolloverAppliedUnits: current.rolloverAppliedUnits, + }, + "Regenerate applied quota from lot-level records instead of invoice-line totals.", + ), + ); + } + + if (current.planChangedFrom !== current.planChangedTo && current.rolloverAppliedUnits > plan.downgradeCarryLimitUnits) { + issues.push( + finding( + "DOWNGRADE_CARRY_LIMIT_EXCEEDED", + "block", + "A downgraded account is applying more carried quota than the downgrade policy allows.", + { + planChangedFrom: current.planChangedFrom, + planChangedTo: current.planChangedTo, + rolloverAppliedUnits: current.rolloverAppliedUnits, + downgradeCarryLimitUnits: plan.downgradeCarryLimitUnits, + }, + "Apply the downgrade carry limit or hold the invoice for contract review.", + ), + ); + } + + const unapprovedNegativeAdjustments = adjustments.filter((adjustment) => adjustment.units < 0 && !adjustment.approvedByFinance); + if (unapprovedNegativeAdjustments.length > 0) { + issues.push( + finding( + "UNAPPROVED_NEGATIVE_ADJUSTMENT", + "warn", + "Negative quota adjustments exist without finance approval.", + { adjustmentIds: unapprovedNegativeAdjustments.map((adjustment) => adjustment.adjustmentId) }, + "Require finance approval before negative units affect quota or invoice totals.", + ), + ); + } + + const expectedOverageUnits = Math.max(0, current.usageUnits - current.includedUnits - current.rolloverAppliedUnits); + if (invoice.lineItems?.some((line) => line.code === "ai-compute-overage") && current.invoiceOverageUnits !== expectedOverageUnits) { + issues.push( + finding( + "OVERAGE_DOUBLE_BILLING_RISK", + "block", + "Invoice overage units do not subtract applied rollover correctly.", + { + usageUnits: current.usageUnits, + includedUnits: current.includedUnits, + rolloverAppliedUnits: current.rolloverAppliedUnits, + invoiceOverageUnits: current.invoiceOverageUnits, + expectedOverageUnits, + }, + "Recompute overage after rollover application to prevent double billing.", + ), + ); + } + + if (issues.some((issue) => issue.severity === "block") && invoice.reviewerHold !== true) { + issues.push( + finding( + "MISSING_FINANCE_HOLD", + "block", + "The invoice preview is not on hold despite quota rollover blockers.", + { reviewerHold: invoice.reviewerHold }, + "Place the invoice on finance hold until quota carry-forward and overage lines reconcile.", + ), + ); + } + + const blockCount = issues.filter((issue) => issue.severity === "block").length; + const warnCount = issues.filter((issue) => issue.severity === "warn").length; + return { + accountId: ledger.accountId, + billingCycle: ledger.billingCycle, + decision: blockCount > 0 ? "hold-invoice" : warnCount > 0 ? "finance-review" : "ready-to-invoice", + riskScore: Math.min(100, blockCount * 24 + warnCount * 9), + summary: { + blockCount, + warnCount, + findingCount: issues.length, + appliedRolloverUnits: current.rolloverAppliedUnits || 0, + expectedOverageUnits, + }, + findings: issues.sort((a, b) => SEVERITY_ORDER[b.severity] - SEVERITY_ORDER[a.severity] || a.code.localeCompare(b.code)), + }; +} + +export function buildFinanceMarkdown(report) { + const lines = [ + `# Subscription Quota Rollover Guard: ${report.accountId}`, + "", + `Billing cycle: **${report.billingCycle}**`, + `Decision: **${report.decision}**`, + `Risk score: **${report.riskScore}/100**`, + "", + `Findings: ${report.summary.blockCount} blockers, ${report.summary.warnCount} warnings.`, + `Applied rollover units: ${report.summary.appliedRolloverUnits}`, + `Expected overage units: ${report.summary.expectedOverageUnits}`, + "", + ]; + + for (const item of report.findings) { + lines.push(`## ${item.severity.toUpperCase()}: ${item.code}`); + lines.push(item.message); + lines.push(""); + lines.push(`Evidence: \`${JSON.stringify(item.evidence)}\``); + lines.push(""); + lines.push(`Remediation: ${item.remediation}`); + lines.push(""); + } + + if (report.findings.length === 0) { + lines.push("No rollover blockers or warnings were detected in the synthetic ledger."); + lines.push(""); + } + + return lines.join("\n"); +} + +export function buildSummarySvg(report) { + const color = report.decision === "hold-invoice" ? "#dc2626" : report.decision === "finance-review" ? "#d97706" : "#16a34a"; + return ` + + Subscription Quota Rollover Guard + ${escapeXml(report.accountId)} · ${escapeXml(report.billingCycle)} + + + ${report.riskScore}/100 + + + ${report.summary.blockCount} + invoice blockers + + + + ${report.summary.appliedRolloverUnits} + applied rollover units + + + + ${report.summary.expectedOverageUnits} + expected overage units + + +`; +} + +function escapeXml(value) { + return String(value) + .replaceAll("&", "&") + .replaceAll("<", "<") + .replaceAll(">", ">") + .replaceAll('"', """); +} diff --git a/subscription-quota-rollover-guard/package.json b/subscription-quota-rollover-guard/package.json new file mode 100644 index 00000000..08ef4c7c --- /dev/null +++ b/subscription-quota-rollover-guard/package.json @@ -0,0 +1,12 @@ +{ + "name": "subscription-quota-rollover-guard", + "version": "1.0.0", + "description": "Synthetic quota rollover audit guard for SCIBASE revenue infrastructure.", + "type": "module", + "private": true, + "scripts": { + "test": "node test.js", + "demo": "node demo.js", + "demo:video": "python demo_video.py" + } +} diff --git a/subscription-quota-rollover-guard/reports/demo-script.txt b/subscription-quota-rollover-guard/reports/demo-script.txt new file mode 100644 index 00000000..50600235 --- /dev/null +++ b/subscription-quota-rollover-guard/reports/demo-script.txt @@ -0,0 +1,7 @@ +Demo: Subscription Quota Rollover Guard +Account: LAB-QUOTA-1042 +Billing cycle: 2026-06 +Decision: hold-invoice +Risk score: 100/100 +Blockers: 6 +Finance action: hold invoice until duplicate/expired rollover, downgrade caps, and overage units reconcile. \ No newline at end of file diff --git a/subscription-quota-rollover-guard/reports/demo.gif b/subscription-quota-rollover-guard/reports/demo.gif new file mode 100644 index 0000000000000000000000000000000000000000..1197c266d19a722af60cbb656c940ff49848cd1f GIT binary patch literal 51450 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 + + Subscription Quota Rollover Guard + LAB-QUOTA-1042 · 2026-06 + + + 100/100 + + + 6 + invoice blockers + + + + 3900 + applied rollover units + + + + 1300 + expected overage units + + diff --git a/subscription-quota-rollover-guard/requirements-map.md b/subscription-quota-rollover-guard/requirements-map.md new file mode 100644 index 00000000..5e59c41d --- /dev/null +++ b/subscription-quota-rollover-guard/requirements-map.md @@ -0,0 +1,29 @@ +# Requirements Map + +Issue #20 asks for revenue infrastructure across subscription billing, usage-based AI compute billing, real-time usage meters, quotas, top-ups, and licensing controls. + +This contribution covers a distinct revenue control: validating subscription quota rollover before invoice release. + +| Issue capability | Implementation | +| --- | --- | +| Tiered subscription billing | Audits included quota, rollover caps, downgrade carry limits, and plan-change behavior. | +| Usage-based AI compute billing | Reconciles usage units, applied rollover, and expected overage units. | +| Transparent quotas and real-time usage meters | Treats rollover lots and quota adjustments as auditable ledger records. | +| Billing safety before invoice release | Emits `hold-invoice`, `finance-review`, or `ready-to-invoice` decisions with remediation. | +| Reviewer-ready evidence | Generates JSON, Markdown, SVG, and GIF demo artifacts from synthetic data. | + +## Non-Overlap + +This is not: + +- Plan migration proration. +- Subscription renewal notice. +- Entitlement downgrade. +- Usage replay or idempotency. +- Prepaid credit breakage. +- Committed revenue drawdown. +- Quote approval. +- Invoice delivery or collections. +- Analytics-seat/API licensing. + +It specifically verifies whether unused monthly subscription quota is carried, expired, capped, adjusted, and applied correctly before overage charges are released. diff --git a/subscription-quota-rollover-guard/sample-data.js b/subscription-quota-rollover-guard/sample-data.js new file mode 100644 index 00000000..c53b61b0 --- /dev/null +++ b/subscription-quota-rollover-guard/sample-data.js @@ -0,0 +1,85 @@ +export const riskyQuotaLedger = { + accountId: "LAB-QUOTA-1042", + billingCycle: "2026-06", + plan: { + name: "Lab Pro", + includedUnits: 10000, + rolloverCapUnits: 3000, + rolloverExpiresAfterCycles: 2, + downgradeCarryLimitUnits: 1000, + }, + priorCycle: { + cycle: "2026-05", + includedUnits: 10000, + usedUnits: 6100, + carryForwardUnits: 3900, + postedRolloverUnits: 3900, + }, + currentCycle: { + includedUnits: 6000, + planChangedFrom: "Lab Pro", + planChangedTo: "Individual Pro", + usageUnits: 11200, + invoiceOverageUnits: 5200, + availableRolloverUnits: 3900, + rolloverAppliedUnits: 3900, + }, + rolloverLots: [ + { lotId: "may-unused", units: 2500, originatedCycle: "2026-05", expiresAfterCycle: "2026-07", appliedUnits: 2500 }, + { lotId: "legacy-feb", units: 900, originatedCycle: "2026-02", expiresAfterCycle: "2026-04", appliedUnits: 900 }, + { lotId: "duplicate-may", units: 500, originatedCycle: "2026-05", expiresAfterCycle: "2026-07", appliedUnits: 500 }, + { lotId: "duplicate-may", units: 500, originatedCycle: "2026-05", expiresAfterCycle: "2026-07", appliedUnits: 0 }, + ], + adjustments: [ + { adjustmentId: "manual-negative-1", units: -700, approvedByFinance: false, reason: "support request" }, + ], + invoicePreview: { + lineItems: [ + { code: "base-plan", units: 6000, amountUsd: 499 }, + { code: "ai-compute-overage", units: 5200, amountUsd: 416 }, + { code: "rollover-credit", units: -3900, amountUsd: -312 }, + ], + reviewerHold: false, + }, +}; + +export const cleanQuotaLedger = { + accountId: "LAB-QUOTA-2048", + billingCycle: "2026-06", + plan: { + name: "Institutional", + includedUnits: 50000, + rolloverCapUnits: 12000, + rolloverExpiresAfterCycles: 2, + downgradeCarryLimitUnits: 4000, + }, + priorCycle: { + cycle: "2026-05", + includedUnits: 50000, + usedUnits: 42000, + carryForwardUnits: 8000, + postedRolloverUnits: 8000, + }, + currentCycle: { + includedUnits: 50000, + planChangedFrom: "Institutional", + planChangedTo: "Institutional", + usageUnits: 54800, + invoiceOverageUnits: 0, + availableRolloverUnits: 8000, + rolloverAppliedUnits: 4800, + }, + rolloverLots: [ + { lotId: "may-unused", units: 8000, originatedCycle: "2026-05", expiresAfterCycle: "2026-07", appliedUnits: 4800 }, + ], + adjustments: [ + { adjustmentId: "finance-credit-1", units: -300, approvedByFinance: true, reason: "documented SLA credit" }, + ], + invoicePreview: { + lineItems: [ + { code: "base-plan", units: 50000, amountUsd: 2499 }, + { code: "rollover-credit", units: -4800, amountUsd: 0 }, + ], + reviewerHold: true, + }, +}; diff --git a/subscription-quota-rollover-guard/test.js b/subscription-quota-rollover-guard/test.js new file mode 100644 index 00000000..2353889e --- /dev/null +++ b/subscription-quota-rollover-guard/test.js @@ -0,0 +1,30 @@ +import assert from "node:assert/strict"; +import { auditQuotaRollover, buildFinanceMarkdown, buildSummarySvg } from "./index.js"; +import { cleanQuotaLedger, riskyQuotaLedger } from "./sample-data.js"; + +const risky = auditQuotaRollover(riskyQuotaLedger); +assert.equal(risky.decision, "hold-invoice"); +assert.ok(risky.riskScore >= 90); +assert.ok(risky.findings.some((finding) => finding.code === "ROLLOVER_CAP_EXCEEDED")); +assert.ok(risky.findings.some((finding) => finding.code === "EXPIRED_ROLLOVER_APPLIED")); +assert.ok(risky.findings.some((finding) => finding.code === "DUPLICATE_ROLLOVER_LOT")); +assert.ok(risky.findings.some((finding) => finding.code === "DOWNGRADE_CARRY_LIMIT_EXCEEDED")); +assert.ok(risky.findings.some((finding) => finding.code === "OVERAGE_DOUBLE_BILLING_RISK")); +assert.ok(risky.findings.some((finding) => finding.code === "MISSING_FINANCE_HOLD")); + +const clean = auditQuotaRollover(cleanQuotaLedger); +assert.equal(clean.decision, "ready-to-invoice"); +assert.equal(clean.riskScore, 0); +assert.equal(clean.summary.findingCount, 0); + +assert.throws(() => auditQuotaRollover(undefined), /quota ledger must be an object/); + +const markdown = buildFinanceMarkdown(risky); +assert.match(markdown, /hold-invoice/); +assert.match(markdown, /ROLLOVER_CAP_EXCEEDED/); + +const svg = buildSummarySvg(risky); +assert.match(svg, / Date: Mon, 1 Jun 2026 09:01:38 -0600 Subject: [PATCH 2/2] Add MP4 demo for quota rollover guard --- subscription-quota-rollover-guard/README.md | 1 + subscription-quota-rollover-guard/demo_video.py | 5 +++++ .../reports/demo.mp4 | Bin 0 -> 36619 bytes 3 files changed, 6 insertions(+) create mode 100644 subscription-quota-rollover-guard/reports/demo.mp4 diff --git a/subscription-quota-rollover-guard/README.md b/subscription-quota-rollover-guard/README.md index 94c9056d..195e9ebb 100644 --- a/subscription-quota-rollover-guard/README.md +++ b/subscription-quota-rollover-guard/README.md @@ -25,6 +25,7 @@ Running the demo creates: - `reports/summary.svg` - `reports/demo-script.txt` - `reports/demo.gif` +- `reports/demo.mp4` All inputs are synthetic. The guard uses no credentials, private customer data, payment processors, live billing systems, analytics APIs, or external services. diff --git a/subscription-quota-rollover-guard/demo_video.py b/subscription-quota-rollover-guard/demo_video.py index 21f2c1e0..2d77ce71 100644 --- a/subscription-quota-rollover-guard/demo_video.py +++ b/subscription-quota-rollover-guard/demo_video.py @@ -1,5 +1,7 @@ from pathlib import Path +import imageio.v3 as iio +import numpy as np from PIL import Image, ImageDraw, ImageFont @@ -37,4 +39,7 @@ def font(size): gif_path = REPORTS / "demo.gif" frames[0].save(gif_path, save_all=True, append_images=frames[1:], duration=120, loop=0) +mp4_path = REPORTS / "demo.mp4" +iio.imwrite(mp4_path, [np.asarray(frame) for frame in frames], fps=8, codec="libx264") print(f"wrote {gif_path}") +print(f"wrote {mp4_path}") diff --git a/subscription-quota-rollover-guard/reports/demo.mp4 b/subscription-quota-rollover-guard/reports/demo.mp4 new file mode 100644 index 0000000000000000000000000000000000000000..d4d3e9aff5fc6dade6a9a2ee945f554c8b0f2ca5 GIT binary patch literal 36619 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 R7-OdhHg*(j>;-sV{|zqK-#q{T literal 0 HcmV?d00001