Skip to content

feat: complete dynamic Pterodactyl stock and upgrades - #22

Draft
Jordanmuss99 wants to merge 23 commits into
dynamic-sliderfrom
codex/paymenter-1.5.6-remediation
Draft

feat: complete dynamic Pterodactyl stock and upgrades#22
Jordanmuss99 wants to merge 23 commits into
dynamic-sliderfrom
codex/paymenter-1.5.6-remediation

Conversation

@Jordanmuss99

@Jordanmuss99 Jordanmuss99 commented Jul 25, 2026

Copy link
Copy Markdown
Collaborator

Summary

This PR completes the Dynamic Pterodactyl side of the authoritative stock lifecycle against the coordinated Paymenter 1.5.7 head.

  • paginated, fail-closed Pterodactyl inventory and local location filtering
  • complete-vector, step-aligned checkout and upgrade quotes
  • explicit per-node CPU capacity and configurable overcommit
  • deterministic exact allocation/port claims and immutable reservation fingerprints
  • seven-day unpaid holds, permanent paid commitments, and capacity-aware upgrades
  • atomic reservation cancellation, reconciliation, scheduler isolation, and operator alerts
  • guarded legacy migrations and reverse readiness scans
  • request-local and panel-global quote rate budgets
  • DB-only unpaid-upgrade cancellation remains available during panel credential outages; actual inventory access still fails closed

Acceptance contract

  • Product maximum 32 GB + feasible stock 23 GB → advertised maximum 23 GB.
  • Product maximum 32 GB + feasible stock 100 GB → advertised maximum 32 GB.
  • RAM, CPU, disk, and required ports must fit the same eligible node.
  • CPU stock uses the node policy's physical percentage × overcommit ratio.
  • Placement uses any eligible node in the selected location.
  • Invoice capacity is guaranteed for exactly seven days.
  • Quantity is one.
  • Upgrades reserve the positive delta on the existing node.
  • Exact primary/additional Pterodactyl allocations are committed with the order.

Verified coordinated heads

  • Dynamic Pterodactyl: 85d8ee42ca7870856a4fdbd67cbfa76fdc4cc350
  • Paymenter: 8a9e4849f131795f430869128231f7a193bb8dcc

Automated validation

  • Extension quality/Pint job: passed.
  • Cross-repository gate: 7/7 passed (quality + PHP 8.3/8.4 × SQLite, MariaDB 11, MariaDB 12).
  • Extension suite: 365 tests; 1,368 SQLite assertions or 1,359 MariaDB assertions with 3 MariaDB-only skips.
  • Paymenter provisioning seam: 68 tests, 439 assertions in every cell.
  • Companion Paymenter matrix: 6/6 passed using Laravel's native mariadb driver in MariaDB jobs.
  • Each Paymenter cell: 483 passed, 31 skipped.
  • JavaScript stock-controller suite: 15/15 passed locally.
  • Locked Composer dependency audit and production asset builds passed in CI.

Operational contract

  • Paymenter exclusively controls every enabled capacity-policy node.
  • Pterodactyl Panel and Wings 1.12.3+ are required.
  • The application API key must expose nodes, servers, locations, allocations, and allocated-resource relationships.
  • Legacy rows with incomplete immutable identity block activation; identity is never inferred from mutable settings.
  • Both PRs must be reviewed and deployed together; neither is safe to deploy independently.

Automated tests use mocked Pterodactyl responses. A real Panel/Wings checkout, payment, provisioning, upgrade, renewal, cancellation, allocation-delivery, and broker-recovery canary remains mandatory before production. Real-browser pointer/touch, WebKit, focus, and responsive-layout verification also remains outstanding.

Companion core: ObsidianNetwork/Paymenter-Obsidian-Network#23

@coderabbitai

coderabbitai Bot commented Jul 25, 2026

Copy link
Copy Markdown

Important

Review skipped

Draft detected.

Please check the settings in the CodeRabbit UI or the .coderabbit.yaml file in this repository. To trigger a single review, invoke the @coderabbitai review command.

⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Free

Run ID: 2bd4cbb3-6994-44ec-a90c-d9c2a97f2c69

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.

Use the checkbox below for a quick retry:

  • 🔍 Trigger review

Warning

Billing warning: we have not been able to collect payment for this subscription for more than 72 hours. Please update the payment method or pay any pending invoices in Billing to avoid service interruption.


Note

🎁 Summarized by CodeRabbit Free

Your organization is on the Free plan. CodeRabbit will generate a high-level summary and a walkthrough for each pull request. For a comprehensive line-by-line review, please upgrade your subscription to CodeRabbit Pro by visiting https://app.coderabbit.ai/login.

Comment @coderabbitai help to get the list of available commands.

@Jordanmuss99 Jordanmuss99 changed the title fix: enforce server-owned reservation lifecycle feat: complete dynamic Pterodactyl stock and upgrades Jul 25, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant