Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
23 commits
Select commit Hold shift + click to select a range
d5212ab
fix(reservations): enforce server-owned provisioning lifecycle
Jordanmuss99 Jul 25, 2026
827cae7
ci: run cross-repository extension matrix
Jordanmuss99 Jul 25, 2026
907b92d
ci: isolate integration test services
Jordanmuss99 Jul 25, 2026
f1d3027
fix(migrations): preserve active cart uniqueness on MariaDB
Jordanmuss99 Jul 25, 2026
589bf46
test: align extension suite with Paymenter 1.5.6
Jordanmuss99 Jul 25, 2026
07d478b
feat(stock): add authoritative dynamic resource lifecycle
Jordanmuss99 Jul 25, 2026
74f581a
test(ci): run core provisioning seams with extension
Jordanmuss99 Jul 25, 2026
2c6eb7a
fix(stock): harden lazy inventory and integration fixtures
Jordanmuss99 Jul 25, 2026
d6cc887
test: exercise guarded fulfillment contracts
Jordanmuss99 Jul 25, 2026
c38a27f
fix: persist authoritative upgrade placement
Jordanmuss99 Jul 25, 2026
190c697
fix: preserve reservation fingerprint round trips
Jordanmuss99 Jul 25, 2026
b20296d
test: change non-resource upgrade selection
Jordanmuss99 Jul 25, 2026
ad37177
fix: close stock inventory and fulfillment races
Jordanmuss99 Jul 26, 2026
720c76d
fix: complete extension stock integrity manifest
Jordanmuss99 Jul 26, 2026
349d3a9
fix: close cross-repository lifecycle gaps
Jordanmuss99 Jul 26, 2026
0ef697c
fix: scope paid upgrade transition proof
Jordanmuss99 Jul 26, 2026
54495cb
fix: normalize durable readiness proofs
Jordanmuss99 Jul 26, 2026
4d5ea95
fix: close dynamic stock release blockers
Jordanmuss99 Jul 27, 2026
b15b629
chore: preserve branch metadata
Jordanmuss99 Jul 27, 2026
c5024cd
test: repair cross-repository lifecycle gate
Jordanmuss99 Jul 27, 2026
acb502c
test: align lifecycle fixtures with core guards
Jordanmuss99 Jul 27, 2026
8dc477e
test: preserve upgrade integrity regressions
Jordanmuss99 Jul 27, 2026
85d8ee4
fix: decouple local cancellation from panel credentials
Jordanmuss99 Jul 27, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
253 changes: 253 additions & 0 deletions .github/workflows/cross-repository-integration.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,253 @@
name: Cross-repository integration

on:
pull_request:
push:
branches:
- dynamic-slider
workflow_dispatch:

permissions:
contents: read

concurrency:
group: dynamic-pterodactyl-${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true

jobs:
quality:
name: Extension quality
runs-on: ubuntu-latest

steps:
- name: Check out Dynamic Pterodactyl
uses: actions/checkout@v7
with:
path: dynamic-pterodactyl
fetch-depth: 0
ref: ${{ github.event.pull_request.head.sha || github.sha }}

- name: Check out companion Paymenter
uses: actions/checkout@v7
with:
repository: ObsidianNetwork/Paymenter-Obsidian-Network
ref: 8a9e4849f131795f430869128231f7a193bb8dcc
path: paymenter

- name: Set up PHP
uses: shivammathur/setup-php@v2
with:
php-version: '8.3'
extensions: bcmath, curl, gd, mbstring, mysql, openssl, pdo, tokenizer, xml, zip
tools: composer:v2
coverage: none

- name: Install Paymenter dependencies
working-directory: paymenter
run: composer install --no-interaction --no-ansi --prefer-dist --no-progress

- name: Audit Composer dependencies
working-directory: paymenter
run: composer audit --locked --no-interaction

- name: Run Pint on the complete extension branch diff
working-directory: dynamic-pterodactyl
env:
BASE_SHA: ${{ github.event.pull_request.base.sha || github.event.before }}
run: |
if [[ -z "$BASE_SHA" || "$BASE_SHA" =~ ^0+$ ]]; then
BASE_SHA="$(git rev-parse HEAD^)"
fi
mapfile -d '' files < <(
git diff --diff-filter=ACMR --name-only -z \
"$BASE_SHA"...HEAD -- '*.php'
)
if ((${#files[@]})); then
../paymenter/vendor/bin/pint --test "${files[@]}"
fi

extension-sqlite:
name: PHP ${{ matrix.php }} / SQLite
runs-on: ubuntu-latest
strategy:
fail-fast: false
matrix:
php:
- '8.3'
- '8.4'

steps:
- name: Check out Dynamic Pterodactyl
uses: actions/checkout@v7
with:
path: dynamic-pterodactyl

- name: Check out companion Paymenter
uses: actions/checkout@v7
with:
repository: ObsidianNetwork/Paymenter-Obsidian-Network
ref: 8a9e4849f131795f430869128231f7a193bb8dcc
path: paymenter

- name: Set up PHP
uses: shivammathur/setup-php@v2
with:
php-version: ${{ matrix.php }}
extensions: bcmath, curl, gd, mbstring, mysql, openssl, pdo, pdo_sqlite, sqlite3, tokenizer, xml, zip
tools: composer:v2
coverage: none

- name: Install Paymenter dependencies
working-directory: paymenter
run: composer install --prefer-dist --no-progress --no-suggest

- name: Assemble extension checkout
run: |
mkdir -p paymenter/extensions/Others/DynamicPterodactyl
rsync -a \
--exclude=.git \
--exclude=.github \
dynamic-pterodactyl/ \
paymenter/extensions/Others/DynamicPterodactyl/

- name: Prepare SQLite test database
working-directory: paymenter
env:
APP_ENV: testing
CACHE_STORE: array
DB_CONNECTION: sqlite
DB_DATABASE: database/paymenter_test.sqlite
MAIL_MAILER: array
QUEUE_CONNECTION: sync
SESSION_DRIVER: array
run: |
cp .env.example .env
touch database/paymenter_test.sqlite
php artisan key:generate --force
php artisan migrate --force
php artisan migrate \
--path=extensions/Others/DynamicPterodactyl/database/migrations \
--force

- name: Run Dynamic Pterodactyl tests on SQLite
working-directory: paymenter
env:
APP_ENV: testing
DB_CONNECTION: sqlite
DB_DATABASE: database/paymenter_test.sqlite
run: vendor/bin/phpunit -c extensions/Others/DynamicPterodactyl/phpunit.xml

- name: Run Paymenter provisioning seam tests on SQLite
working-directory: paymenter
env:
APP_ENV: testing
DB_CONNECTION: sqlite
DB_DATABASE: database/paymenter_test.sqlite
run: vendor/bin/phpunit tests/Unit/PterodactylReservationIntegrationTest.php

extension:
name: PHP ${{ matrix.php }} / MariaDB ${{ matrix.mariadb }}
runs-on: ubuntu-latest
strategy:
fail-fast: false
matrix:
php:
- '8.3'
- '8.4'
mariadb:
- '11'
- '12'

services:
mariadb:
image: mariadb:${{ matrix.mariadb }}
env:
MYSQL_ROOT_PASSWORD: password
MYSQL_DATABASE: paymenter_test
ports:
- 3306:3306
options: >-
--health-cmd="healthcheck.sh --connect --innodb_initialized"
--health-interval=10s
--health-timeout=5s
--health-retries=3

steps:
- name: Check out Dynamic Pterodactyl
uses: actions/checkout@v7
with:
path: dynamic-pterodactyl

- name: Check out companion Paymenter
uses: actions/checkout@v7
with:
repository: ObsidianNetwork/Paymenter-Obsidian-Network
ref: 8a9e4849f131795f430869128231f7a193bb8dcc
path: paymenter

- name: Set up PHP
uses: shivammathur/setup-php@v2
with:
php-version: ${{ matrix.php }}
extensions: bcmath, curl, gd, mbstring, mysql, openssl, pdo, tokenizer, xml, zip
tools: composer:v2
coverage: none

- name: Install Paymenter dependencies
working-directory: paymenter
run: composer install --prefer-dist --no-progress --no-suggest

- name: Assemble extension checkout
run: |
mkdir -p paymenter/extensions/Others/DynamicPterodactyl
rsync -a \
--exclude=.git \
--exclude=.github \
dynamic-pterodactyl/ \
paymenter/extensions/Others/DynamicPterodactyl/

- name: Prepare test database
working-directory: paymenter
env:
APP_ENV: testing
CACHE_STORE: array
DB_CONNECTION: mariadb
DB_HOST: 127.0.0.1
DB_PORT: 3306
DB_DATABASE: paymenter_test
DB_USERNAME: root
DB_PASSWORD: password
MAIL_MAILER: array
QUEUE_CONNECTION: sync
SESSION_DRIVER: array
run: |
cp .env.example .env
php artisan key:generate --force
php artisan migrate --force
php artisan migrate \
--path=extensions/Others/DynamicPterodactyl/database/migrations \
--force

- name: Run Dynamic Pterodactyl tests
working-directory: paymenter
env:
APP_ENV: testing
DB_CONNECTION: mariadb
DB_HOST: 127.0.0.1
DB_PORT: 3306
DB_DATABASE: paymenter_test
DB_USERNAME: root
DB_PASSWORD: password
run: vendor/bin/phpunit -c extensions/Others/DynamicPterodactyl/phpunit.xml

- name: Run Paymenter provisioning seam tests
working-directory: paymenter
env:
APP_ENV: testing
DB_CONNECTION: mariadb
DB_HOST: 127.0.0.1
DB_PORT: 3306
DB_DATABASE: paymenter_test
DB_USERNAME: root
DB_PASSWORD: password
run: vendor/bin/phpunit tests/Unit/PterodactylReservationIntegrationTest.php
Loading