Files
firefrost-services/docs/code-bridge/requests/REQ-2026-04-12-phase11d-deploy.md
Claude (Chronicler #83 - The Compiler) c2d72cbabc bridge: Request — Deploy Phase 11D to Dev Panel for testing
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-12 20:40:16 -05:00

2.5 KiB

Architectural Request

Date: 2026-04-12 Topic: Deploy Phase 11D to Dev Panel — Blueprint license integration

1. Current State

Phase 11D code pushed (8872f67). Blueprint extension has license activation UI, phone-home cron, and tier gating. Ready for testing on Dev Panel.

2. Deploy Target

Dev Panel (64.50.188.128) — NOT live Panel VPS.

3. Files Changed

New files:

  • blueprint-extension/app/Services/LicenseService.php
  • blueprint-extension/app/Console/Commands/ValidateLicense.php

Modified files:

  • blueprint-extension/admin/controller.php — added LicenseService DI, license activation/deactivation handling
  • blueprint-extension/admin/view.blade.php — license UI, status banners, dynamic tier gating

4. Dependencies

  • No new Composer packages — uses Laravel's built-in Http facade (already available)
  • No database migrations needed (license state stored in Blueprint's dbGet/dbSet)

5. Deployment Steps

  1. Rebuild the .blueprint package:

    cd /opt/mod-builds/firefrost-services/services/modpack-version-checker/blueprint-extension
    bash build.sh
    
  2. Install on Dev Panel:

    blueprint -install modpackchecker
    
  3. Register the daily cron (add to Panel's crontab):

    0 4 * * * cd /var/www/pterodactyl && php artisan mvc:validate >> /dev/null 2>&1
    
  4. For immediate testing, run manually:

    cd /var/www/pterodactyl && php artisan mvc:validate
    

6. What "Working" Looks Like

  1. Admin page loads — visit /admin/extensions/modpackchecker, no errors
  2. License section visible — "BuiltByBit Order ID" text input + gray "Not Activated" badge
  3. Activate test — enter a test order ID, click Save. Should show error "License not found" (expected — no real license exists yet). Confirms Arbiter connectivity.
  4. Pro fields locked — Check Interval dropdown and Discord Webhook URL should be disabled (grayed out)
  5. Artisan command runsphp artisan mvc:validate outputs "No license configured" (expected for fresh install)
  6. No PHP errors in logstail -f /var/www/pterodactyl/storage/logs/laravel.log

7. Smoke Test with Real License

To fully test the flow, Chronicler can provision a test license directly in the DB:

INSERT INTO mvc_licenses (order_id, buyer_id, tier, max_activations)
VALUES ('TEST-001', 'chronicler', 'professional', 5);

Then enter TEST-001 in the admin UI — should activate, show green badge, unlock pro fields.