API and SDK Client Parity Audit
Audit date: 2026-09-11. This is a static, capability-level comparison. It evaluates whether an n3 plugin author can accomplish the same task as in comparison clients, rather than verifying identical class names or synchronous blocking semantics. Current n3 standing reflects RuneLite 1.12.38, game revision 240, suite version 5.5, and Java 11.
Executive result
n3 covers the automation core shared across historical and modern clients: entity and widget queries, inventory/equipment/bank/deposit-box/GE/shop/trade operations, dialogue, combat/prayer/magic, local and global walking, transports and teleports, action dispatch, input, and plugin execution primitives. Its typed InteractionResult, central pacing, workflow supervision, deterministic event fixtures, revision health checks, and Agent Server provide capabilities that older APIs do not expose as one coherent contract.
Recent implementations closed several significant functional gaps:
- Account, login, and session automation (P0-2): Delivered in
com.n3plugins.n3Profiles.ProfileLoginServicemanages legacy auto-login via Enter key simulation, Jagex account session application viaReflectionJagexLoginAdapter, reset to legacy mode, profile directory isolation, and SOCKS5 proxy routing per profile.ProfileStoresecures credentials with PBKDF2/AES-GCM encryption and provides bulk import. - Consumer-facing geometry and spatial areas (P0-4): Delivered in
com.n3plugins.sdk.area.Area,RectangleArea,PolygonArea,SceneArea, andRegionAreaprovide plane-aware point containment, immutable tile enumeration, coordinate conversion, and spatial-query integration viaSpatialQuerySupport. - Script ergonomics and quest automation: Delivered in
com.n3plugins.questscript. The framework providesQuestScript,QuestScriptStep(DialogueStep,InteractObjectStep,TalkToNpcStep,UseItemStep,WaitStep,WalkStep),QuestScriptPlayer, andQuestScriptRecorder, complementingAutomationLoopandTaskPipeline. - Input and trajectory modeling: Delivered in
com.n3plugins.sdk.input.mouse.MouseTrajectoryRepository,MouseTrajectoryPlanner,MousePathPlanner,MouseRecorder, andMouseLandingSelectorprovide recorded trajectory analysis and synthetic execution alongside humanizer profiles. - Session statistics and telemetry: Delivered in
com.n3plugins.telemetryandCompanionUplinkPlugin. Telemetry collectors stream live session metrics, XP, health, prayer, inventory, and tasks over WebSockets, whileAioSessionSnapshottracks task and session rates. - Specialist production and activities:
ProductionActionssupports both Make-X and legacy Smithing interfaces;AioSmithingWorkflowautomates smelting and anvil smithing;JewelleryEnchanterPluginandEnchantingWorkflowBuildermanage jewellery enchanting;UpkeepPluginmanages supply resolution;BlockingEventActionsprovides welcome screen and death dialogue handling.
The remaining functional gaps are concentrated:
- Player-owned-house automation (P0-1): Walker pathfinding routes through POH portal nexus and jewellery box tiers via
PathfinderConfig, but n3 does not yet expose a publicHousequery or house-options UI interaction facade. - Sailing depth (P0-3):
SailingActionsdefines direction, speed, and sail operations, but operations return unsupported results pending live sailing release and navigation graph modeling. - Specialized activity facades:
TanningActions,CannonActions,SlayerRewardsActions, and the sharedEssencePouchWorkflowBuilder/EssencePouchPlandeliver the tanning, cannon, Slayer rewards, and essence-pouch facades; friend list mutation convenience remains open under query breadth. - Query breadth: Fluent
ProjectileQuery/GraphicsObjectQueryand the container-agnosticItemContainers/ItemContainerQueryare delivered; friend list mutation conveniences remain open. - Transport network breadth: Quetzal and Quetzal Whistle transports are consolidated with cost thresholds, and vessel gangplank/disembarkation is repaired; canoes and Dwarven carts still lack first-class models.
The target remains functional completion, not source compatibility. Copying boolean-returning, blocking, or public raw packet APIs would weaken n3's result, pacing, revision, and client-thread contracts.
Comparison set and provenance
The audit pinned each reference tree before inspection, cross-checked against the local research trees in C:\Users\n3\Desktop\Research.
| Reference | Pinned snapshot | Role in this audit | Important limitation |
|---|---|---|---|
| OpenOSRS RuneLite | 915fb55c0a2a1c000dc04a431e68f3bbb29a40cf (2022-06-28) | Historical client/API baseline from which later clients diverged. | Primarily extends RuneLite's client API; not a high-level automation SDK. |
| Unethicalite | 16c90eeeb4c37f21616f2bce6fa647a78c7ff51a (2022-08-22) | Original high-level net.unethicalite.api automation surface. Verified in Research/clients/unethicalite. | Archived historical surface; packet and revision details are obsolete. |
| Devious Client / devlite | 895727a26d5e0dd61475bac0c1b74299aa650710 (2023-11-08) / 63187b0d77dd2e9e0dacd57de0bb0c5397e23e9b | Later Unethicalite-derived surface and incremental additions. Verified in Research/clients/devlite. | Historical tree; revision and packet details differ from modern upstream. |
| VitaLite | bdad782b73335516974e092ff41d04cd70340556 (2026-03-11, 1.12.20_0) / 59a518b723438046fd896d707f64cf2d1afece65 | Independent current API with handlers, loadouts, pathfinders, specialist widgets, and sailing support. Verified in Research/clients/VitaLite. | API shape differs substantially; matching class-for-class would be misleading. |
| Microbot | Local reference tree (Research/microbot) | Ecosystem benchmark for high-level automated plugins, task loops, and activity coverage (160+ plugins). | Modular plugin suite rather than an injected client fork; serves as migration source for n3 modules (VarrockCleaner, CrabKiller). |
Devious and Unethicalite share one lineage in the tables, with Devious-only additions noted where relevant (such as ItemContainerSnapshot, charter ships, gnome gliders, ignored doors, world requirements, and bank-tutorial blocking events).
Method
Included
- Public or plugin-consumable automation APIs, queries, models, handlers, pathing, input, script lifecycle, and state helpers.
- n3 live source under
Apiandsdk, plus the shared runtime that makes those APIs usable. - Capability equivalence even when n3 deliberately uses another abstraction.
Excluded
- Ordinary RuneLite API types already available to every external RuneLite plugin.
- Bundled plugins, UI cosmetics, deobfuscator/build infrastructure, generated constants, and raw gamepack interfaces.
- A class-count score. One broad utility class and ten narrow types are not ten times as capable.
- Claims of live correctness. No comparison client or RuneLite game session was executed.
Ratings
| Rating | Meaning |
|---|---|
| Complete | n3 provides the same practical operation/read surface, sometimes with stronger semantics. |
| Partial | The common path exists, but meaningful reference-client operations or models are missing. |
| Missing | No supported, reusable n3 surface was found for the capability. |
| Beyond | n3 materially exceeds the comparison set in this domain. |
| N/A | The reference exposes no additional high-level capability beyond the shared RuneLite baseline. |
Capability matrix
Entities, scene, queries, and game state
| Capability | OpenOSRS | Unethicalite / Devious | VitaLite | n3 assessment and evidence | Rating |
|---|---|---|---|---|---|
| NPC and player query | RuneLite queries | NPCs, Players, actor queries | NpcAPI, PlayerAPI, builders and queries | NPCs, Players, NPCQuery, and PlayerQuery cover named/id/action/distance selection. | Complete |
| Tile objects and ground items | RuneLite scene/query types | TileObjects, TileItems, scene queries | APIs, builders, wrappers, and queries | TileObjects, TileItems, spatial query support, and dedicated action APIs cover lookup and action. | Complete |
| Projectile and graphics lookup | Raw client collections/events | Projectiles; no equal graphics facade | Mostly raw RuneLite | n3 has ProjectileActions and GraphicsObjectActions predicate reads plus fluent ProjectileQuery/GraphicsObjectQuery facades with Projectiles/GraphicsObjects entry points in sdk.query. | Complete |
| Inventory, bank, equipment item queries | RuneLite item/widget queries | Shared Items plus per-container APIs | Inventory/shop queries and wrappers | n3 provides ItemQuery, EquipmentItemQuery, Inventory, Bank, ShopInventory, and the container-agnostic ItemContainers/ItemContainerQuery over immutable snapshots. | Complete |
| Widgets | Widget API/query | Widgets, WidgetQuery | WidgetAPI, query, extended catalog | Widgets, WidgetQuery, Widgets, WidgetCatalog, addresses, mappings, explorer, and interaction resolver provide equivalent or greater depth. | Beyond |
| Coordinates and areas | RuneLite WorldArea, coordinates | rectangle, polygon, scene and region areas | location query, distance and world-point helpers | com.n3plugins.sdk.area provides immutable, plane-aware RectangleArea, PolygonArea, SceneArea, and RegionArea with containment, stable tile enumeration, coordinate conversion, and spatial-query integration via SpatialQuerySupport. | Complete |
| Scene, tiles, collision, reachability | Raw scene/collision maps | Tiles, Reachable, local/global maps | SceneAPI, collision maps and flags | n3 exposes reachability and line of sight, and its walker owns collision, but low-level scene/tile diagnostics are not a standalone public facade. | Partial |
| Camera and map state | Raw client | Mostly raw client | Camera, minimap and world-map APIs | n3 has camera snapshots/actions, screenshots, WorldMapApi, and minimap run/special-attack orb actions in UtilityEventActions/CombatActions. | Complete |
| Vars, skills, quests and worlds | RuneLite APIs | convenience facades | dedicated APIs | GameVarsRegistry, SkillsActions, QuestActions, progress APIs, and world snapshots cover core usage. | Complete |
| Prices and item information | HTTP/client managers | Prices | limited | ItemInfoApi and PricesApi provide typed item and price reads; market buy-limit tracking adds depth. | Complete |
| Friends/social | RuneLite friend APIs | Friends widget helper | no broad equivalent | com.n3plugins.sdk.social provides FriendsApi, ClanApi, ChatApi, and snapshot listeners; friend list mutation conveniences remain unmodeled. | Partial |
Interaction, widgets, and production
| Capability | OpenOSRS | Unethicalite / Devious | VitaLite | n3 assessment | Rating |
|---|---|---|---|---|---|
| NPC/player/object/item interaction | Menu invocation primitives | entity methods and packet helpers | wrapper interaction and builders | Dedicated action APIs plus ActionResolver, reachability, pacing, and typed InteractionResult cover the domain without exposing raw packets. | Beyond |
| Inventory and equipment | RuneLite menu/widget baseline | inventory/equipment APIs and packets | APIs/builders/loadouts | Read, use, drop patterns, equipment, use-item combinations, loadouts, and depletion listeners are present. | Complete |
| Bank and deposit box | Widget baseline | bank/deposit APIs | bank/deposit APIs, cache, builder | n3 covers bank inventory/equipment modes, placeholders, quantities, deposit box, access selection, restock plans, and BankWorkflowBuilder.BankCycle. | Beyond |
| Grand Exchange | RuneLite GE types | high-level GE | API, handler, threaded helper | n3 covers view/state, slots, buy/sell/collect/abort, market planning, GeBuyerPlugin, and FlipperPlugin. | Complete |
| Shop and trade | Widget baseline | both high-level | both high-level/builders | Query, inventory, and action surfaces exist for both. | Complete |
| Dialogue | Widget baseline | dialog helper/packets | API, builder, threaded dialogues | DialogActions handles continue/options/input; QuestHelperDialogOptionResolver resolves quest options; DialogueStep in questscript provides declarative step execution. | Complete |
| Tabs and standard widgets | Widget baseline | tabs, prayers, production, minigames | tabs, prayer, magic, Make-X, emotes and specialist widgets | TabActions covers all tabs including Tab.EMOTES. Make-X and legacy Smithing interfaces are handled by ProductionActions. Jewellery enchanting is handled by EnchantingWorkflowBuilder. | Complete |
| Magic and rune pouch | RuneLite widget baseline | spell/rune/pouch models | extensive spellbooks/runes/staves/tomes | n3 covers spellbooks, spells, runes, RunePouch, PouchWorkflowBuilder, teleport spells/items/scrolls, and spellbook workflows. | Complete |
| Combat | Raw actor and combat widgets | Combat | CombatAPI, attack styles, cannon | n3 provides combat plans/workflows, styles, prayers, special-attack orbs, target actions, and the CannonActions lifecycle (place/load/pick-up/repair plus placed, broken, and partial build-state reads; ammo state is unmodeled because rev240 evidence exposes no ammo varbit). | Complete |
| Production/activity helpers | Raw widgets | generic production | Make-X plus smithing/tanning/Slayer rewards/runecrafting pouch types | ProductionActions covers Make-X and Smithing; EnchantingWorkflowBuilder covers jewellery enchanting; TanningActions covers the tanner interface; SlayerRewardsActions covers the Slayer Rewards window; EssencePouchWorkflowBuilder shares runecrafting pouch capacity/fill/empty planning; UpkeepPlugin manages supply resolution. | Complete |
| Blocking events | Events only | death/login/resizable/welcome and, in Devious, bank tutorial | no matching manager | BlockingEventActions handles welcome screens, death dialogue, and viewport mode detection/setting; TaskPipeline yields on events without blocking thread sleeps. | Complete |
Navigation and transport
| Capability | OpenOSRS | Unethicalite / Devious | VitaLite | n3 assessment | Rating |
|---|---|---|---|---|---|
| Local pathing | Collision primitives | local pathfinder/reachability | multiple algorithms and local collision | n3 provides reachability, local collision/path calculation through its walker, and action integration. | Complete |
| Global walking | No high-level walker | global map, teleports, transports | strategic/global walker | n3 has managed walking, shortest-path data, transport requirements, route state, and bank routing. | Complete |
| Transport requirements | N/A | item/quest/skill/var; Devious world requirements | item/quest/skill/var/world/other | n3 transport parsing covers items, quests, skills, vars, and consolidated Quetzal thresholds. Public world/other requirement models are narrower. | Partial |
| Standard transport networks | N/A | fairy rings; Devious charter/glider models | fairy rings, gliders, charters, canoes, minecarts, carts, spirit trees, long transports | n3 provides fairy ring, gnome glider, charter, minecart, spirit tree, magic carpet, bird flight, quetzal (QUETZAL), minigame, and repaired vessel transports. Canoes and Dwarven carts lack dedicated facades. | Partial |
| POH traversal | N/A | portal nexus, jewellery box, house portals | house and house-options APIs | Walker pathfinder routes through POH portal nexus and jewellery box tiers via PathfinderConfig. A public House query and house-options UI interaction facade remain absent. | Partial |
| Sailing navigation | N/A at pinned revision | N/A at pinned revisions | boat collision/pathing, graph, ports, cargo, boarding, tasks, heading, stats | SailingActions provides typed direction/speed/sail methods returning unsupported stubs; full navigation graphs and boat collision remain unmodeled. | Partial |
| Route observability and safety | N/A | mostly boolean/state helpers | overlays/debug paths | n3 adds explicit route snapshots, pacing/readiness failures, revision fail-closed behavior, terminal telemetry event archiving, and walker audit tooling. | Beyond |
Runtime, input, scripting, and operations
| Capability | OpenOSRS | Unethicalite / Devious | VitaLite | n3 assessment | Rating |
|---|---|---|---|---|---|
| Client-thread execution | RuneLite ClientThread | GameThread helpers | async task/delays | ClientThreadBridge, tick plans, automation loop, and non-blocking workflows cover safe scheduling. | Beyond |
| Script/task lifecycle | Plugin lifecycle | looped plugin, script, task plugin | script interfaces and compiled script builder | com.n3plugins.questscript provides a declarative script engine (QuestScript, QuestScriptStep, QuestScriptPlayer, QuestScriptRecorder) alongside AutomationLoop, TaskPipeline, and TypesafeCarouselStateMachine. | Complete |
| Input | AWT/client baseline | keyboard, mouse, natural mouse | click manager and mouse visualization | com.n3plugins.sdk.input.mouse provides MouseTrajectoryRepository, MouseTrajectoryPlanner, MousePathPlanner, MouseRecorder, and MouseLandingSelector, alongside keyboard, input lock, and synthetic backends. | Beyond |
| Action pacing/humanization | No unified automation contract | random/time/natural mouse | delays and break handler | n3 centralizes pacing, fatigue, breaks, behavior profiles, and stochastic interval/gesture planning. | Beyond |
| Login/account/session | RuneLite login fields | GameAccount, local player/account helpers | LoginService | com.n3plugins.n3Profiles provides ProfileLoginService (legacy auto-login via Enter dispatch, Jagex reflection adapter, legacy reset), ProfileStore (PBKDF2/AES-GCM encryption), StoredProfile, bulk import, isolated profile directories, and proxy selection. | Complete |
| Plugin reload/hot swap | Plugin manager internals | plugin helpers | plugin context/reloader | CodeConsolePlugin and JavaShellPlugin support dynamic code execution for development; runtime classloader reloading is not an SDK feature. | Partial |
| Paint/statistics | Overlay framework | paint and XP/statistic helpers | overlay baseline | CompanionUplinkPlugin and com.n3plugins.telemetry stream live session metrics (XP, health, prayer, inventory, tasks); AioSessionSnapshot tracks task/session rates; overlay utilities are provided. | Complete |
| Networking/remote control | OpenOSRS HTTP modules | HTTP utility | login/SDN-related services | n3 adds WebSocket primitives and authenticated REST/direct-MCP Agent Server with operation convergence and SDK discovery. | Beyond |
| Events, replay, and deterministic validation | RuneLite event bus | blocking event manager | handlers/listeners | n3 adds typed event snapshots, timelines, replay, transactional fixtures, dispatch verification, and deterministic scenarios. | Beyond |
| Revision/packet diagnostics | Injected client/mixins | public packet helpers | click manager/client internals | n3 centralizes dispatch in Packet Utils, validates revision evidence, traces packets, and fails closed instead of exposing unstable public packet builders. | Beyond |
OpenOSRS baseline parity
OpenOSRS baseline parity
OpenOSRS should not be evaluated as if every net.runelite.api interface were a separate automation feature. n3 compiles against contemporary RuneLite and plugin code consumes that upstream API directly. The relevant OpenOSRS parity question is whether n3 loses a client primitive on which later automation APIs depended.
Static inspection confirms no broad missing category: actors, scene entities, widgets, item containers, vars, events, coordinates, collision, menu entries, client thread integration, overlays, configuration, and HTTP/item/world data remain available either from RuneLite or n3. Revision-specific additions from historical forks are not copied blindly; Packet Utils owns the supported bridge to injected-client and menu-dispatch behavior.
Gap register and delivery plan
P0: required to claim core functional parity
| ID | Gap | Status | Completion contract | Validation evidence |
|---|---|---|---|---|
| P0-1 | POH API | Partial | Walker pathfinder routes through POH portal nexus and jewellery box tiers. Full parity requires a public House query facade, room/context detection, and interactive house-options widget operations returning InteractionResult. | Unit tests for absent widgets and destinations; route tests; live POH acceptance pending. |
| P0-2 | Login/account API | Implemented | Delivered in com.n3plugins.n3Profiles. ProfileLoginService orchestrates legacy auto-login via Enter dispatch and Jagex logins via ReflectionJagexLoginAdapter. ProfileStore provides PBKDF2/AES-GCM encryption, bulk import, profile directory isolation, and SOCKS5 proxy routing. | ProfileLoginServiceTest, ProfileStoreTest, StoredProfileTest, ProfileStorageCodecTest, BulkProfileImportTest, ReflectionJagexLoginAdapterTest. Live acceptance pending. |
| P0-3 | Sailing completion | Partial | SailingActions exposes typed direction/speed/sail methods with explicit unsupported results. Full parity requires boat state snapshots, heading/stats, collision/path planning, and navigation graph integration. | Scaffolding in tree. Deterministic graph fixtures, widget tests, and live sailing routes pending game release. |
| P0-4 | Public scene/area model | Implemented | Delivered in com.n3plugins.sdk.area. Area, RectangleArea, PolygonArea, SceneArea, and RegionArea provide plane-aware point containment, immutable tile enumeration, coordinate conversion, and spatial-query integration. | RectangleAreaTest, PolygonAreaTest, SceneAreaTest, RegionAreaTest, SpatialQuerySupportTest. Instanced-scene live verification pending. |
P1: ecosystem breadth
| ID | Gap | Status | Proposed owner / Current standing | Notes |
|---|---|---|---|---|
| P1-1 | Specialist widget/activity APIs | Implemented | Api.actions + sdk.widgets | Make-X and legacy Smithing are implemented in ProductionActions + AioSmithingWorkflow. Jewellery enchanting is implemented in EnchantingWorkflowBuilder / JewelleryEnchanterPlugin. Emotes tab mapped in Tab.EMOTES. TanningActions covers the tanner interface (rev240 InterfaceID.Tanner evidence). CannonActions covers the Dwarf multicannon lifecycle (placed/broken/partial reads, place/load/pick-up/repair). SlayerRewardsActions covers the Slayer Rewards window (group 426 evidence). EssencePouchWorkflowBuilder + EssencePouchPlan share pouch capacity, degradation, and fill/empty planning extracted from Guardians Rift. |
| P1-2 | Query completion | Implemented | sdk.query | com.n3plugins.sdk.social covers chat, clan, and friends-chat snapshots (FriendsApi, ClanApi, ChatApi). Fluent ProjectileQuery/GraphicsObjectQuery with Projectiles/GraphicsObjects entry points and the container-agnostic ItemContainers/ItemContainerQuery (immutable ContainerItem snapshots) are delivered. Friend list mutation conveniences remain unmodeled (covered by the Friends/social matrix row). |
| P1-3 | Transport breadth | Partial | walker + movement actions | Quetzals and Quetzal Whistles consolidated as first-class categories; vessel gangplank crossings and disembarkation repaired; POH nexus and jewellery box routed in pathfinder. Canoes and Dwarven carts remain open. |
| P1-4 | Blocking-event catalog | Implemented | Api.actions + workflow | BlockingEventActions provides welcome screen continue, death dialogue continue, and viewport mode checking/setting. Workflows yield via non-blocking events (StepResult.waitForEvent) rather than client-thread sleep loops. |
| P1-5 | Minimap parity | Complete | Api.actions + sdk.walker | Minimap run orb and special-attack orb actions are supported in UtilityEventActions and CombatActions. Coordinate conversion uses Perspective.localToMinimap. Arbitrary tile walking routes safely through Walker. |
P2: developer ergonomics, not gameplay blockers
| ID | Gap | Status | Recommendation / Current standing |
|---|---|---|---|
| P2-1 | Script compatibility facade | Implemented | Delivered in com.n3plugins.questscript. Provides declarative QuestScript, QuestScriptStep (DialogueStep, InteractObjectStep, TalkToNpcStep, UseItemStep, WaitStep, WalkStep), QuestScriptPlayer, and QuestScriptRecorder alongside AutomationLoop. |
| P2-2 | Runtime compilation/hot reload | Complete | CodeConsolePlugin and JavaShellPlugin provide in-client dynamic evaluation. Classloader hotswapping is kept development-only to avoid unstable SDK dependencies. |
| P2-3 | Paint/statistics kit | Implemented | Delivered in com.n3plugins.ui.overlay: N3StatTracker (session duration, per-skill XP tracking, XP/hr, TTL, action/item counters & rates, profit & GP/hr), N3StatTrackerOverlay, and N3Overlay with native progress bar rendering (Content.progress and Content.stats). Live telemetry streaming also available in telemetry and CompanionUplinkPlugin. |
| P2-4 | Actor path and drawing helpers | Implemented | Delivered in com.n3plugins.Api.overlay.N3RenderUtils: plane-aware world & minimap rendering for Area, connected waypoint paths on canvas & minimap, actor convex hulls and server-side true tiles (with multi-tile NPC awareness), high-contrast shadowed tile text, and 3D directional target indicator arrows. Augmented by TaskPipeline ergonomics (stepIf, onStepChange) in Api.plan and mouse trajectory models in sdk.input.mouse. |
| P2-5 | Declarative dialogue builder | Implemented | DialogueStep in questscript provides declarative option/continue handling with NPC and text assertions. DialogActions and QuestHelperDialogOptionResolver handle interactive dialogue resolution. |
Capabilities n3 should not copy
- Public raw packet builders. They turn revision-sensitive implementation details into an unstable SDK promise. Packet Utils owns dispatch.
- Boolean-only interaction results. They erase distinctions between paced, unavailable, unreachable, and failed actions.
- Blocking sleeps on the client thread. Scripts adapt to tick-yielding pipelines or state machines.
- Multiple selectable pathfinders as a product goal. Outcome coverage, requirement correctness, and route observability matter more than exposing algorithm names.
- Mutable entity wrappers cached across ticks. Re-query or use immutable snapshots to avoid stale state.
- Credential-bearing account objects without an explicit security model. Login parity must not leak secrets into logs, fixtures, MCP responses, or configuration exports.
ProfileStoreisolates encrypted credentials with PBKDF2/AES-GCM.
Exit criteria for a future “parity complete” claim
All of the following must be true:
- Every P0 item is implemented with public documentation and focused tests. (P0-2 and P0-4 implemented; P0-1 and P0-3 open).
- Every P1 item is either implemented or explicitly rejected with a documented RuneLite-native alternative achieving the same outcome.
- The matrix is regenerated against newly pinned upstream commits; moving branch heads are never used as evidence.
- Public API Javadocs and Agent Server SDK discovery include the new surfaces.
- Static tests pass, and revision-sensitive/widget/pathing flows have current-client postcondition evidence.
- At least one representative migration is completed from each distinct style: Unethicalite/Devious looped task, VitaLite handler/loadout, POH route, and VitaLite sailing route.
Audit boundary
This report is based on source-tree and contract inspection at the pinned commits. It does not prove that legacy clients still run, that their packet mappings are valid, or that n3 interactions succeed in a current live client. The class-level inventory was used to discover capabilities, then normalized into outcome domains; it was not used as a numeric quality score.
Live client verification: pending.