Status: complete.
This is the historical mirror-layer checklist. The implementation has since moved beyond the paths and names used by the original notes: core owns the domain objects and manager concepts, while Paper contains only Bukkit/Paper implementations and integration wiring.
- Deleted Paper
Quest,ActiveQuest,ActiveObjective, andActiveObjectiveHoldermirrors. - Deleted Paper
ObjectiveandObjectiveHoldermirrors. - Replaced Paper
QuestPlayermirror state with the native-onlyPaperPlayerimplementation of core's explicitPlatformPlayercontract. - Core
QuestPlayer,ActiveQuest,ActiveObjective, andActiveObjectivesown runtime state. - NeoForge and Paper use the same core quest/objective state; neither adapter maintains a second quest graph.
- Deleted Paper
BackupManager,QuestManager,QuestPlayerManager,DataManager,LanguageManager,LogManager,UpdateManager,PerformanceManager,UtilManager,CommandManager, and tag-manager wrappers. - Moved configuration, database, language, logging, updates, quest loading, player loading, and save/reload behavior into their familiar core manager owners.
- Paper has no
managerspackage and no production type whose name ends inManager. - NeoForge has no manager layer.
- Paper and NeoForge event listeners translate native events into core calls.
- Paper and NeoForge GUI code only renders core-owned GUI data and applies native clicks.
- Conversation renderers only materialize core-owned display messages/options.
- Command compilers only translate the core command graph into native Brigadier nodes.
- NPC and armor-stand adapters only perform native lookup, metadata, rendering, and integration effects; core owns attachment decisions and messages.
- Optional Paper plugin integrations remain platform-local, but shared NotQuests definitions and behavior are registered through the core registry.
- Shared platform contracts have no fallback implementations; adding a required capability causes both adapters to fail compilation until parity is supplied.
- Core owns
general.yml, language files, configured-data persistence, player database schema, connection lifecycle, and save/reload orchestration. - The released 6.3.0 player tables are still the canonical schema, so an unmodified 6.3.0 database loads directly without an upgrade branch or permanent compatibility code.
- Released 6.3.0 YAML/item/location conversion is isolated in
core/migrations/v6_3_0/Version630Migration.java. - Current production readers consume only the canonical v7 format; there is no permanent legacy fallback in adapters or normal core code.
- Both adapters materialize the same canonical journal fields, and both protect journal items in normal and creative inventory paths.
- Architecture tests reject platform manager layers, platform persistence policy, portable command behavior, direct progress-engine access, and platform API imports in core/builtin.
- Paper and NeoForge capability parity is compile-time enforced and architecture-tested.
- The exhaustive historical findings are checked in
adapter-boundary-violations.md. - The final architecture checklist is
plan.md. - Final verification is a clean
./gradlew buildplusgit diff --check.