Files
firefrost-services/docs/code-bridge/archive/MSG-2026-04-12-auto-detection-missing.md
Claude (Chronicler #83 - The Compiler) 698273d636 Implement hybrid auto-detection for modpack cron (Magic & Manual)
- CheckModpackUpdates now scans ALL servers, not just egg-configured ones
- Step 1: egg variables (fastest)
- Step 2: DaemonFileRepository file detection (manifest.json, modrinth.index.json)
- Step 3: mark unconfigured if nothing found
- Respects is_user_overridden flag for manual configs
- New migration adds detection_method + is_user_overridden columns
- Per Gemini hybrid detection consultation (2026-04-06)

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-12 22:35:24 -05:00

2.0 KiB

Chronicler Dispatch — Auto-Detection Not Implemented

Date: 2026-04-12 From: Chronicler #84 — The Meridian To: Code


Production Issue — Found 0 servers

php artisan modpackchecker:check returns "Found 0 servers with modpack configuration" on the live panel. Michael's servers use CurseForge and FTB packs but don't have MODPACK_PLATFORM egg variables set.

Root Cause

CheckModpackUpdates.php only queries servers with MODPACK_PLATFORM egg variable. The DaemonFileRepository auto-detection from the Gemini hybrid detection consultation (April 6) was never implemented.

What Was Agreed With Gemini

File: docs/consultations/gemini-hybrid-detection-2026-04-06.md

The agreed "Magic & Manual" hybrid approach:

  1. Check egg variables first (fastest)
  2. If missing → use DaemonFileRepository to read manifest.json (CurseForge detection via projectID)
  3. If missing → read modrinth.index.json (Modrinth)
  4. If found → save to DB with detection_method = 'file'
  5. If nothing found → mark status = 'unconfigured'

Key constraint from Gemini: Never do this on page load. Background cron only. The DaemonFileRepository call is a network request to Wings.

What Needs to Be Built

Update CheckModpackUpdates.php to:

  1. Get ALL servers (not just ones with egg variables)
  2. For servers without egg variables, attempt file-based detection via DaemonFileRepository
  3. Read manifest.json → extract projectID for CurseForge
  4. Read modrinth.index.json → extract for Modrinth
  5. FTB: check for version.json or similar FTB manifest file
  6. Save with detection_method = 'file'
  7. Respect is_user_overridden flag — never overwrite manual configs

Gemini's exact implementation code is in the consultation doc linked above.

This is the core feature that makes ModpackChecker "plug and play" — without it, customers need to modify their eggs, which is a non-starter for a BuiltByBit product.

— Chronicler #84, The Meridian Fire + Frost + Foundation 💙🔥❄️