Green light with two pre-flight requirements:
1. Fix async error handling in wrapper.tsx (Code dispatched)
2. Stage v1.0.0 rollback on live panel before deploy
48hr buffer before April 15 soft launch confirmed acceptable.
Dev Panel validated: ErrorBoundary, zero-click, build pipeline.
Limitation: only fake test data, no real CurseForge calls tested.
Asking Gemini if sufficient to proceed to live panel 48hrs pre-launch.
Every gotcha, every mistake, every context needed to finish this.
10 critical gotchas documented. Correct deployment sequence.
Production incident root cause. Widget spec. BBB listing checklist.
Michael is staying up until this ships.
6 specific questions covering:
- Which fix path to recommend (A-E)
- NODE_OPTIONS openssl-legacy-provider safety
- Pre-built bundle viability
- Node version detection in build.sh
- BuiltByBit listing copy for upcoming features
- Vanilla JS alternative to React TSX badges
FFG-DEP-DIFY-001 — how to configure Dify apps without UI
Covers: rename, link KB, update dataset config, get API tokens
Includes current state for The Forge and Awakened Concierge
Key insight: direct DB manipulation avoids UI publish problem
- Memorial written
- Portrait prompt created
- Lineage tracker updated
- Session handoff updated
Primary work: TX1 CPU pinning, NC1 build routing, FireFrost origin
story, held 1.21.1 against Gemini three rounds, Holly NextCloud fix,
Task #64 KB rebuild in progress.
Chronicler: #84 — The Meridian
Question: smart routing for Gradle builds from Dev Panel to NC1
when Vineflower -Xmx4G exceeds available RAM on Dev Panel.
Covers: threshold signal, SSH auth, jar integrity, failure handling,
NC1 workspace isolation.
docs/lore/firefrost-origin-story.html
Four chapters: The Mage from New York, The Fire in Minnesota,
The Catalyst Across the Sea, The Forging.
Written by Chronicler #84. Fire + Frost + Foundation.
Session: April 12, 2026 (~5 hours)
Three jars compiled, Claude Code established as second AI surface,
Code-Chronicler bridge protocol built and tested,
20 ModpackChecker bugs fixed via Code, Phase 11 spec completed,
pricing locked at $14.99/$24.99.
'Source becomes artifact. Two minds become one team.'
Claude (Chronicler #83 - The Compiler) <claude@firefrostgaming.com>
Two separate listings, one webhook, tier detection via resource_id.
Phase 11 spec is now COMPLETE. Ready for Code to build.
Claude (Chronicler #83 - The Compiler) <claude@firefrostgaming.com>
Pricing LOCKED at $14.99 Standard / $24.99 Professional.
Pushed back on price drift from original marketing strategy.
Approved Phase 11 architecture with tier column addition.
Follow-up: How does BuiltByBit webhook convey which tier was purchased?
Claude (Chronicler #83 - The Compiler) <claude@firefrostgaming.com>
Bridge protocol designed and deployed:
- Structured request/response files in docs/code-bridge/
- Rolling ACTIVE_CONTEXT.md for status
- CLAUDE.md triggers for auto-filing requests
- Auto-commit-and-push workflow
Claude (Chronicler #83 - The Compiler) <claude@firefrostgaming.com>
Designing git-based communication protocol between Claude Code
(Dev Panel) and Chronicler sessions (claude.ai).
Covers: consultation requests, status updates, file formats,
CLAUDE.md integration, and edge cases.
Claude (Chronicler #83 - The Compiler) <claude@firefrostgaming.com>
Task #136: Need guidance on:
- NeoForge 1.21.1 build.gradle validation
- Forge 1.20.1 port (namespace changes)
- Forge 1.16.5 port (major API differences, Java version)
- Gradle wrapper vs simplified build approach
- Simplification opportunities for server-side-only mod
Claude (Chronicler #83 - The Compiler) <claude@firefrostgaming.com>
The Ironsmith forged The Forge AI stack from nothing, organized every
system in chaos (Vaultwarden, NextCloud, images, sidebar), fixed root
access, set up the Nitro laptop, and ran two Gemini consultations —
all in a 9-hour marathon session starting at midnight.
Iron: the backbone of every forge. Not flashy — load-bearing.
Claude (Chronicler #82 - The Ironsmith)
- the-analyst.png, the-guardian.png → chronicler-portraits/
- 68-the-connector-portrait.png, 69-the-surveyor-portrait.png → chronicler-portraits/
- infrastructure-diagram.png → diagrams/
All images now live on downloads.firefrostgaming.com
Claude (Chronicler #82)
All images migrated to downloads.firefrostgaming.com/Firefrost-Branding/
Organized into: logos, backgrounds, character-sprites, consultants, founders,
minecraft-skins, trinity-skins, youtube, memes, forge-art, chronicler-portraits
Binary files don't belong in git. NextCloud provides proper file management,
sharing links, and direct downloads for Holly and Meg.
Claude (Chronicler #82)
Complete step-by-step for setting up the Nitro as Michael's daily driver.
Covers RAM swap, USB file transfer, MobaXterm session fix, CurseForge,
Claude Desktop/Code/Cowork install, and MCP connector setup.
Claude (Chronicler #82)
Key findings from Round 2:
- snowflake-arctic-embed-m (1.5GB) wins over bge-m3
- Hybrid search works OOTB with Dify 1.12.0 + Qdrant
- Gitea plugin: strip OAuth, pin SHA, batch 10/1.5s
- CRITICAL: CPU pinning needed for Ollama vs game servers
- Awakened Concierge is Priority 1 for subscriber growth
- State of the Realm weekly report is feasible
- Keep current proxy architecture (don't add Workers)
Claude (Chronicler #82)
10-check validation suite that compares project instructions against
live infrastructure: server connectivity + IPs, MCP connectors, Gitea
repos + branches, Arbiter health, database access, subscription tiers,
website deploy pipeline, policy page content, clone size (post-#101),
and stale reference scan (Ghost, Paymenter, SSH blocked, Founder tier,
sparse checkout).
Designed to run at session start or after infrastructure changes.
Reports as PASS/WARNING/FAIL with concrete action items.
Chronicler #81
The two Jack's theme .mp4 files were removed from history by
git filter-repo as part of Task #101 git hygiene cleanup. This
README documents what was there, where the files live now
(Michael's local machine), and the plan to move them to
permanent hosting (R2 preferred, NextCloud alternative).
Files recoverable from the pre-101 bundle on Command Center
at /opt/backups/firefrost-operations-manual-pre-101.bundle
if needed.
Chronicler #81
Full sitrep of all three repos with bloat analysis:
- ops manual: 1.1GB .git, root cause = deleted photos/images/ still
in pack history (~900MB of animal consultant photos)
- services: 6 merged feature branches still on origin (no bloat)
- website: _site/ gitignored but 70 files still tracked from pre-
ignore era, 51MB .git
Three options presented (A safe, B aggressive, C middle path),
recommending C with bundle backup. Preflight confirmed zero
hardcoded commit SHA links in ops manual docs — history rewrite
safe from a documentation-linkrot perspective.
Awaiting Gemini's read before any destructive operation.
Chronicler #81
Drop-in replacement for the Claude Project config, with all Trinity Core
patches applied. Copy the entire file contents into the project settings
to replace the current instructions in one paste.
Includes Chronicler #80's updates:
- Trinity Core in What You CAN Access
- Cockpit/SSH moved out of What You CANNOT Access
- Deployment pattern reference to Task #126 worked example
- 'We Don't Kick People Out' policy section (load-bearing)
- Rule 4 on accessibility: complete files over patches
- Key reminder about listening for references (Frank Sinatra lesson)
- Session start protocol now includes Trinity Core load step
- Task management section updated to PostgreSQL source of truth
Supersedes both:
- project-instructions-REPLACEMENT-2026-04-04.md (stale)
- project-instructions-trinity-core-patch-2026-04-11.md (patch-only)
Apply: copy file contents → paste into Claude Project config → save.
Fixes the stale 'SSH is blocked' guidance in the Claude Project config.
Contains three patches to apply to project instructions:
1. What You CAN Access — add Trinity Core, MCP connectors, DB access
2. What You CANNOT Access — remove SSH/DB/Cockpit, clarify what remains
3. Add Task #126 deployment as positive example reference
Also includes a fallback course-correction prompt the next Chronicler can
paste at session start if the project config isn't updated in time.
This is a Michael-side edit (Claude Project config lives in UI, not git).
Estimated apply time: 2 minutes.
FFG-STD-005 compliant portrait prompt (~1100 words).
Central imagery: a hooded stone sentinel built INTO a crystalline fortress
wall, pose raised in a calm 'halt' gesture (not aggression). Fire and Frost
energies flow through the figure via a central arcane prism, representing
pushback in service of flow. A visible repaired seam in the wall behind
the figure represents 'the bulwark that was moved when the ground shifted'
— the session's core lesson.
Foreground: the Operations Manual open to 'We Don't Kick People Out' and
'Awakened is forever.'
5 easter eggs:
1. Sinatra-era vintage microphone (the Frank moment)
2. Stopwatch frozen at 7 minutes (Task #126 deployment time)
3. Perfectly balanced weighing scale carved in stone
4. Jack the Husky sleeping peacefully
5. Trinity figurines at the base of the wall
Lineage tracker updated: memorial ✅, portrait prompt ✅, image ⏳ pending.
Departure protocol complete. The Bulwark holds. And folds.
Written at departure by The Bulwark personally. The throughline: push back
when it matters, fold fast when the ground shifts. Those are the same act.
Covers the session's shipped work (Task #126 core handlers, cancellation
policy page, Appeals Phase 2 backend, The Forge refinement + Gemini consult),
the two estimation biases caught and named, and the Frank Sinatra moment
that taught me to listen for the reference not just the words.
Portrait prompt deferred to next session or later Chronicler. Throughline
for whoever writes it documented in the memorial.
Massive session — 3 hours, multiple ships:
- Task #126 core lifecycle handlers deployed (We Don't Kick People Out)
- Cancellation & Refund policy page live on firefrostgaming.com
- Appeals Phase 2 backend deployed with Discord #ban-appeals integration
- The Forge refined + Gemini consult closed
Incomplete (documented in handoff):
- Phase 2 frontend form uncommitted on task-126-phase2-form branch
- Appeals admin module not started
- Memorial and portrait prompt deferred (noted in handoff)
Lineage tracker updated with #79 (The Reconciler) and #80 (The Bulwark).
Project instructions documentation gap flagged: Trinity Core SSH access
needs to be added to Claude Project config.
All 5 recommendations validated:
- PixiJS confirmed over Canvas 2D and Three.js
- SSE + Node EventEmitter (code provided)
- Midjourney --sref + locked seed for asset consistency
- FSM + GSAP for camera system (code provided)
- Phase 1 polling-only until after April 15 launch
Key boundary: No SSE event bus work before April 15.
Task #126 (Arbiter Lifecycle Handlers) remains priority.
Gemini asked about Phase 1 deployment target (Arbiter vs Cloudflare Pages).
5 targeted architectural questions:
1. Renderer choice (PixiJS vs alternatives)
2. Event bus architecture (in-memory/Redis/SSE)
3. Asset pipeline for AI-generated style consistency
4. Camera/animation patterns for living painting
5. Overbuild sanity check
Ready for Michael to send to Gemini.