Skip to main content

N3BuilderF2P Port Development Plan

Status and authority

This document defines the full port of the DreamBot N3BuilderF2P AIO into the n3Plugins RuneLite suite. The executable parity ledger owns current implementation and acceptance status. The four API comparison reports remain focused references:

The plan derives the old behavior inventory from the live checkout at D:\NewBackup\my-aio\N3BuilderF2P. The old repository source and its docs/runtime_verification_status.md ledger define implemented DreamBot behavior. Live n3Plugins source defines the target APIs. If either source changes, update the affected disposition before implementation.

Implementation and test results outrank this plan. A static test, accepted dispatch, or successful client launch does not establish gameplay acceptance.

Current implementation

Phase 0, the Phase 1 shell, and the scheduler core of Phase 2 provide the registered, stopped-by-default plugin; exact seven-state scheduler; deterministic weighted selection and old task-duration profiles; fixed 18-module registry; immutable snapshots; Break Handler/input lifecycle; reset handling; and fail-closed mandatory preflight detection.

Woodcutting, Mining, Fishing, Firemaking, Cooking, Smithing, and Prayer now have live-capable workflows. Focused tests cover old tool, supply, location, food, bar, ore, product, and bone policies; travel; later action verification; selective storage and return cycles; stale targets; and competition handling. Mining includes Dwarven relocation and a module-local Port Sarim deposit-box path with an observed inventory-reduction postcondition. Fishing's optional cooking handoff and Al Kharid path remain pending. Firemaking reuses the current lane planner. Cooking reuses Auto Cooker models without its lifecycle owner. Smithing reuses Bank Stander Plus recipes, facilities, and batch planning for its correlated furnace and anvil stages. Prayer verifies every burial through bone reduction or XP. Acquisition-required states block because the GE owner remains unported. The other 11 modules return module_workflow_pending. See the parity ledger for the remaining static and live gates.

Product decision

Build one native RuneLite plugin under com.n3plugins.aiobuilder and register it through runelite-plugin.properties. The plugin will schedule AIO work, own user-facing AIO configuration and status, and compose shared n3 workflows. It will not recreate DreamBot as a compatibility layer.

Use these ownership rules:

  • PacketUtilsPlugin retains Walker ticking, interaction pacing, input locking, synthetic input, humanization, and shared runtime ownership.
  • The AIO plugin owns task selection, skill progression, module transitions, target goals, and AIO policy.
  • Existing feature plugins remain independent RuneLite plugins. The AIO may reuse shared classes they already expose, but it must not control their panels, hotkeys, private controllers, or plugin lifecycle.
  • Shared SDK changes require more than one consumer or a missing cross-cutting contract. Keep one-off module behavior inside the AIO package.
  • The controller pulses one active workflow once per game tick. No blocking waits, executor-owned gameplay loops, or parallel action schedulers may be added.

Full parity scope

The old runtime verification ledger identifies 18 concrete gameplay modules. Full parity covers their implemented behavior and excludes claims that the old repository marks absent.

Old moduleInitial n3 dispositionRequired parity work
Melee combatAudit AIO Fighter for reusePreserve melee-style goals, full equipment readiness, food policy, target selection, loot policy, world-hop policy, and task completion.
Ranged combatAudit AIO Fighter for reusePreserve bow and arrow support. Do not add the old repository's absent crossbow or safe-spot claims.
Magic combatAudit AIO Fighter and magic actionsPreserve combat-spell selection, rune and staff requirements, target selection, and autocast verification.
High AlchemyAudit Market Alcher and shared alchemy codePreserve AIO funding, candidate selection, buy limits, cooldowns, equipment, casting, and profit observations.
WoodcuttingCompose Power Skiller query/action ownersPort progression, axe policy, training spots, competition handling, banking, and goals.
MiningCompose Power Skiller query/action ownersPort progression, pickaxe policy, training spots, competition handling, normal banking, and the Port Sarim deposit-box path.
FishingCompose Power Skiller query/action ownersPort progression, tool and bait policy, training spots, optional cook handoff, banking, and goals.
CookingAudit Auto Cooker for reusePreserve progressive food selection, location choice, range/fire interaction, banking, and completion goals.
SmithingAudit Bank Stander Plus recipesPreserve bars, tool requirements, furnace/anvil routing, production selection, banking, and goals.
CraftingAudit Bank Stander Plus recipesPreserve leather and gold-jewellery tiers, mould/tool/thread requirements, GE handoff, production widgets, and goals.
FiremakingAudit Power Skiller and Bank Stander PlusPreserve tinderbox/log policy, lane selection, lighting confirmation, banking, and goals.
RunecraftingImplement AIO module over shared actionsPreserve Air to Mind to Water to Earth to Fire to Body progression, tiara/talisman handling, Rune Mysteries gate, banking, and altar routes.
PrayerImplement AIO module over shared actionsPreserve bone supply, acquisition decision, bury confirmation, and goals.
Monster/drop money makerAudit Fighter and Auto LooterPreserve cow/chicken selection, food policy, cowhide and remains handling, loot thresholds, banking, and completion policy.
Wizard's mind-bomb money makerImplement AIO economy workflowPreserve purchase, sale, world-hop, stock, bank, and blocked-task policy.
Tutorial IslandAudit Tutorial Island plugin for reusePreserve section progression, inventory contracts, username generation, recovery, and fresh-account completion.
Rune MysteriesAudit Quest Script and Questing AssistantPreserve Duke dialogue, package delivery, Wizard Tower traversal, Sedridor flow, notes return, completion, and Runecrafting handoff.
Security StrongholdAudit Quest Script and Fighter supportPreserve food preparation, four-floor traversal, security dialogue answers, combat avoidance, reward confirmation, and terminal completion.

The old QuestModule, QuestDescriptor, and furnace helper files support these modules; they are not separate gameplay modules.

Excluded from parity

Do not add behavior that the old repository marks unimplemented:

  • Crossbow and bolt ranged support.
  • Safe-spot ranged or magic combat.
  • Power-drop gathering modes.
  • Cook's Assistant or Sheep Shearer automation.
  • Goal-based scheduling beyond the old time, weight, and target-level rules.
  • Death or gravestone recovery that the old ledger marks absent.
  • An HTTP metrics sink that the old repository keeps as a placeholder.

The standalone n3MarketAlcher remains a separate DreamBot product. Shared pure-Java alchemy policy may move to n3Plugins when licensing, dependencies, Java 11 compatibility, and consumer ownership permit it. The port must not copy its Swing application or deployment behavior into the AIO plugin.

Old responsibility disposition

Port behavior, not the old class tree.

Old responsibilityTarget ownerDisposition
BankOperationsCoordinator cache and widget mechanicsSdkEvents, BankActions, loadoutsDelete DreamBot mechanics. Preserve known/unknown bank state and post-write observation rules.
ModuleBankingCoordinatorAIO preparation state plus BankWorkflowBuilderPort the preparation decision. Do not create a coordinator until more than one AIO component needs a separate owner.
BankAccessCoordinatorBankActions.openNearestAccessible(), Walker, deposit-box actionsReuse shared access. Port only missing contextual bank and deposit-box policy.
GE lifecycle and buy executionGrandExchangeActions and existing GE workflow ownersReuse result-aware actions. Port exact task-funding, retry, collection, and blocked-task policy.
Funding, coin, liquidation, and buy-limit policyAIO economy package, shared pure policy where reusablePort. Keep protected-item and unknown-balance guards.
Equipment loadout and supply evaluationSDK loadouts, BankRestockPlan, AIO module requirementsReplace mechanics. Preserve slot-aware readiness, required/tolerated items, and forward-progress decisions.
Module chooser, scheduling, and routingAIO controllerPort as one scheduler. Preserve target goals, weighted selection, task durations, cooldowns, and terminal all-blocked behavior.
NavigationCoordinator transportWalker and route catalogsDelete duplicate transport. Preserve only route policy absent from Walker.
Lumbridge stairs and Al Kharid gate policyWalker actions and route catalogsReuse when the shared route owns the full postcondition. Add one shared transport repair if several consumers need missing behavior.
Training-location selectionIndividual AIO modulesPort as module data and policy. Do not build a generic location hierarchy.
World hoppingExisting world actions plus AIO policyPort competition and stock decisions. Reuse shared action and readiness checks.
Custom anti-ban, mouse, and break systemsPacket Utils humanization and Break HandlerDelete old runtime owners. Map user-facing intent only where a current n3 setting has the same contract.
Account and login bootstrapRuneLite lifecycle plus AIO preflightPort Tutorial Island and Rune Mysteries decisions. Do not restore removed suite-wide account bootstrap behavior.
Interaction and game-tab wrappersApi.actions.*Replace with result-aware actions and observed postconditions.
Combat utility and drop policyFighter, Auto Looter, combat actions, AIO policyReuse shared mechanics. Port old thresholds, remains policy, and recent-kill continuity if existing owners lack them.
Runecrafting planAIO Runecrafting modulePort the F2P progression data and state transitions.
Swing GUI, QuickStart, and paintRuneLite config, N3PluginPanel, toolbar panel, overlayReplace platform UI. Preserve settings and status meaning, not layout or CLI flags.
JSONL metricsExisting n3 telemetry patterns or AIO snapshotPort session/task/action observations only if current suite telemetry lacks them. Do not add a second global metrics runtime.

Target runtime architecture

Plugin and controller

AioBuilderPlugin will follow normal RuneLite lifecycle:

  1. startUp() creates the controller and panel, registers the Break Handler, overlay, navigation button, and hotkey, and leaves automation stopped.
  2. The user starts or stops automation through the panel or one configured hotkey.
  3. onGameTick checks login state and break state, pulses the controller once, updates the immutable snapshot, and owns or releases the shared input lock.
  4. shutDown() stops the active workflow, cancels only the Walker handle owned by this plugin, unregisters UI and break resources, releases the input lock, and clears transient account state.

The plugin must call breakHandler.startPlugin(this) only while AIO work is active. It must call startBreak(this) when a due break begins and release its input lock during the break.

Scheduler

Use one top-level scheduler with these responsibilities:

  • Evaluate mandatory preflight before ordinary tasks.
  • Filter enabled modules by goals, requirements, cooldowns, and account state.
  • Select a task with the old weighted and duration policy.
  • Build one preparation workflow for supplies and equipment.
  • Pulse one active module workflow.
  • Verify task completion, failure, or transition state before selecting again.
  • Surface a terminal blocked state when no module can make progress.

The scheduler must not infer completion from DISPATCHED. Each module supplies its own completion predicate and failure reason.

Module contract

Each concrete AIO module must declare:

  • Stable module ID and display name.
  • Enablement and goal predicate.
  • Required inventory, tolerated inventory, protected items, and equipment loadout.
  • Whether it needs bank preparation, GE acquisition, or neither.
  • Task-duration profile and selection weight.
  • Workflow builder and completion predicate.
  • Recoverable and terminal failure classification.
  • Snapshot fields needed by the panel, overlay, and tests.

Do not expose DreamBot types, blocking delays, or boolean-only interaction results through this contract.

State and persistence

RuneLite configuration stores user choices and goals. Runtime state remains in memory unless the behavior needs restart continuity.

Persist:

  • Enabled modules and locations.
  • Target levels and task preferences.
  • Combat, loot, supply, and economy settings that have a current behavior contract.
  • Panel display preferences.

Keep transient:

  • Active state-machine state.
  • Entity and widget references.
  • Walker handles.
  • Action pacing and retry counters.
  • Observed inventory, equipment, and bank snapshots.

Use a salted account hash only when account-specific deterministic behavior needs it. Do not retain raw account identifiers or create profile files outside RuneLite configuration.

Development phases

Each phase ends with focused tests, documentation updates, and a current diff review. A later phase may start after static acceptance, but no module counts as ported until its live postconditions pass.

Phase 0: Behavior ledger

  • Convert every row in the full parity table into an executable acceptance checklist.
  • Record old source owners, old verification state, target n3 owners, and missing contracts.
  • Capture old settings and defaults that affect behavior.
  • Mark DreamBot-only mechanics for deletion.
  • Resolve documentation conflicts against live source before coding.

Exit gate: each old module and cross-cutting policy has one disposition and one acceptance owner.

Phase 1: Native plugin shell

  • Add AioBuilderPlugin, config, controller, snapshot, panel, overlay, and registration.
  • Implement stopped-by-default startup, hotkey control, active-only Break Handler tracking, input-lock ownership, and idempotent shutdown.
  • Add login, hop, connection-loss, and plugin-shutdown reset behavior.
  • Show current module, workflow state, reason, elapsed task time, and terminal error.

Exit gate: lifecycle tests prove start, stop, break, reset, and cleanup without gameplay actions.

Phase 2: Scheduler and preparation contracts

  • Implement module registry, enablement, target goals, weighted selection, task duration, cooldowns, and terminal all-blocked state.
  • Represent required, tolerated, protected, and equipped items with SDK loadouts plus AIO policy.
  • Add preparation flow for bank, equipment, GE acquisition, and return-to-task.
  • Preserve the old taskPrepared invariant: execution starts only after the current loadout passes a fresh observation.

Exit gate: deterministic tests cover empty candidates, all blocked, task completion, task switch, insufficient funds, unknown bank state, loadout failure, and restart reset.

Phase 3: Woodcutting vertical slice

  • Port woodcutting progression, axe policy, training spots, competition response, walking, interaction, banking, and target completion.
  • Reuse Power Skiller query/action behavior where its contract matches.
  • Verify dispatch followed by animation, XP, inventory, or resource-state evidence.

Exit gate: one complete cycle passes offline scenarios and live tests: select, prepare, travel, chop, bank, return, stop, break, and resume.

Phase 4: Gathering and firemaking

  • Add Mining, Fishing, and Firemaking.
  • Add Port Sarim deposit-box behavior as a shared repair only if another consumer needs it; otherwise keep it in Mining.
  • Preserve bait, feather, tinderbox, tool, competition, lane, and location policies.

Exit gate: each module completes a live gather or burn cycle and its distinct bank/deposit path.

Phase 5: Processing skills

  • Add Cooking, Smithing, Crafting, Prayer, and Runecrafting.
  • Reuse Bank Stander Plus recipes and production actions where their input, facility, widget, and output contracts match.
  • Keep multi-stage production on one correlated workflow and observe input/output changes before advancing.
  • Add Rune Mysteries gating to Runecrafting without starting the quest from ordinary module selection when preflight already owns it.

Exit gate: each module passes supply exhaustion, missing tool, wrong interface, path failure, output confirmation, and target-completion tests.

Phase 6: Combat and loot

  • Add melee, ranged, and magic modules.
  • Reuse Fighter loadouts, target selection, combat actions, threat checks, and death-state handling where compatible.
  • Port style goals, food thresholds, full-gear readiness, loot value, bones/ashes policy, recent-kill continuity, and competition hopping.
  • Fail closed for unsupported crossbows and safe spots.

Exit gate: live tests observe equipment readiness, attack dispatch, combat entry, kill or disengage, loot postconditions, eating, banking, and task completion.

Phase 7: Economy modules

  • Add High Alchemy, monster/drop money making, and Wizard's mind-bomb trading.
  • Port exact-budget funding, protected-item liquidation, buy limits, retry prices, cooldowns, offer ownership, collection verification, and blocked-task recovery.
  • Reuse Market Alcher pure policy and GE action owners after contract comparison.

Exit gate: tests cover partial fills, no coins, unknown bank, buy-limit exhaustion, stale offers, collection, retry cooldown, wrong item, and restart continuity. Live tests must observe GE and inventory postconditions.

Phase 8: Account preflight and quests

  • Add mandatory Tutorial Island and Rune Mysteries routing for accounts that need them.
  • Add Security Stronghold as its configured task or bootstrap path.
  • Reuse existing Tutorial Island and quest infrastructure without driving other plugin UI.
  • Preserve quest inventory contracts, dialogue ownership, plane/region checks, and terminal quest-state verification.

Exit gate: scripted scenario coverage passes for each section and recovery path. Fresh-account live acceptance remains a separate required gate.

Phase 9: Parity hardening and release

  • Run every module's offline acceptance suite and shared lifecycle contracts.
  • Run documentation, Javadoc, packaging, and registration audits.
  • Perform live acceptance per module with recorded preconditions and observed postconditions.
  • Compare implemented settings and behavior against the Phase 0 ledger.
  • Remove compatibility code used only during development.

Exit gate: every in-scope ledger row is complete or carries an explicit, approved deferral. No dispatch-only result counts as live parity.

Validation contract

Static and offline

Use focused JUnit 4 tests and existing fixture/scenario infrastructure. Cover:

  • Scheduler selection, blocking, completion, and reset.
  • One-action-per-tick behavior and same-tick deduplication.
  • Break preemption and input-lock release.
  • Known and unknown inventory, equipment, and bank state.
  • Required, tolerated, protected, and equipped item reconciliation.
  • Interaction status mapping and bounded retries.
  • Walker handle ownership and terminal outcomes.
  • Logout, hop, connection loss, shutdown, and restart.
  • Module-specific progression, acquisition, and completion policy.

Run the shared automation lifecycle, API documentation, focused module, packaging, and documentation tasks selected by .agents/skills/n3-validation/SKILL.md.

Live acceptance

Record these evidence levels separately:

  1. The plugin loads and starts.
  2. The action owner returns DISPATCHED or another accepted result.
  3. RuneLite emits the expected event or state observation.
  4. The requested domain postcondition occurs.
  5. The complete module cycle reaches its terminal goal.

Use the Agentic Test Loop with a TEST profile when available. Otherwise record manual RuneLite evidence. State Live client verification: pending for every unobserved module or edge case.

Definition of done

The full port is complete when:

  • All 18 concrete old gameplay modules have an implemented, reused, or approved-deferred disposition.
  • Every implemented module passes focused tests and its live module-cycle acceptance.
  • The AIO plugin survives stop, break, logout, hop, disconnect, shutdown, and restart without retaining stale work or input locks.
  • Inventory, equipment, bank, GE, Walker, dialogue, production, and combat flows advance from observed postconditions.
  • Existing n3 plugins keep their current behavior and no second global runtime owner exists.
  • Config, panel, overlay, generated docs, registration, packaging, and maintained contracts remain aligned.
  • The final report separates static, package, launch, dispatch, postcondition, and full gameplay evidence.