{ "$schema": "http://json-schema.org/draft-07/schema#", "title": "OSRS Codex Entry", "type": "object", "additionalProperties": false, "required": [ "id", "title", "domain", "tags", "status", "version", "updated", "summary", "accounts", "best_practice", "state_machine", "actions", "run_control", "risk", "sources", "verified" ], "properties": { "id": { "type": "string", "pattern": "^[a-z0-9]+(-[a-z0-9]+)*$", "maxLength": 64 }, "title": { "type": "string", "minLength": 3 }, "domain": { "enum": ["economy", "training", "combat", "combat-slayers", "quests", "transport", "meta"] }, "tags": { "type": "array", "items": { "type": "string" }, "minItems": 1 }, "status": { "enum": ["draft", "verified", "stale"] }, "version": { "type": "integer", "minimum": 1 }, "updated": { "type": "string", "pattern": "^\\d{4}-\\d{2}-\\d{2}$" }, "summary": { "type": "string", "minLength": 10 }, "accounts": { "type": "object", "required": ["membership", "min_level"], "additionalProperties": false, "properties": { "membership": { "enum": ["f2p", "members", "hybrid"] }, "min_level": { "type": "integer", "minimum": 1, "maximum": 126 }, "requires_quest": { "type": "array", "items": { "type": "string" } }, "requires_other": { "type": "array", "items": { "type": "string" } } } }, "economy": { "type": "object", "additionalProperties": false, "properties": { "item": { "type": "string" }, "item_id": { "type": "integer" }, "cost_per_cycle": { "type": "number" }, "income_per_cycle": { "type": "number" }, "net_per_cycle": { "type": "number" }, "gp_per_hour_low": { "type": "number" }, "gp_per_hour_high": { "type": "number" }, "ceiling_gp_per_hour": { "type": "number", "exclusiveMinimum": 0 }, "xp_per_hour": { "type": "number" }, "supplies": { "type": "array", "items": { "type": "object", "required": ["item", "qty_per_cycle", "source"], "additionalProperties": false, "properties": { "item": { "type": "string" }, "qty_per_cycle": { "type": "number", "exclusiveMinimum": 0 }, "source": { "enum": ["ge", "p2p", "drops", "craft", "bank", "npc-shop"] }, "ge_limit": { "type": "integer", "minimum": 1 } } } }, "profit_drivers": { "type": "array", "items": { "type": "string" } } } }, "slot_state_machine": { "type": "object", "required": ["sub_states", "slot_transitions", "slot_transition_whens", "scheduler_iteration", "quote_age_policy", "persisted_state", "limit_ledger", "conservation", "break_resume"], "additionalProperties": false, "properties": { "sub_states": { "type": "array", "minItems": 10, "items": { "type": "string" } }, "slot_transitions": { "type": "object", "additionalProperties": { "type": "array", "items": { "type": "string" } } }, "slot_transition_whens": { "type": "array", "minItems": 8, "items": { "type": "string", "minLength": 8 } }, "scheduler_iteration": { "type": "string", "minLength": 10 }, "quote_age_policy": { "type": "string", "minLength": 10 }, "persisted_state": { "type": "string", "minLength": 10 }, "limit_ledger": { "type": "string", "minLength": 10 }, "conservation": { "type": "string", "minLength": 10 }, "break_resume": { "type": "string", "minLength": 10 } } }, "best_practice": { "type": "object", "required": ["equipment"], "additionalProperties": false, "properties": { "equipment": { "type": "array", "items": { "type": "object", "required": ["item", "why", "source"], "additionalProperties": false, "properties": { "item": { "type": "string", "minLength": 2 }, "why": { "type": "string", "minLength": 5 }, "source": { "type": "string", "minLength": 5 } } } }, "techniques": { "type": "array", "items": { "type": "object", "required": ["name", "why", "source"], "additionalProperties": false, "properties": { "name": { "type": "string", "minLength": 2 }, "why": { "type": "string", "minLength": 5 }, "source": { "type": "string", "minLength": 5 } } } } } }, "axe_tiers": { "type": "array", "minItems": 1, "items": { "type": "object", "required": ["axe", "woodcutting_level", "attack_level", "members"], "additionalProperties": false, "properties": { "axe": { "type": "string" }, "woodcutting_level": { "type": "integer", "minimum": 1, "maximum": 99 }, "attack_level": { "type": "integer", "minimum": 1, "maximum": 99 }, "members": { "type": "boolean" } } } }, "axe_examples": { "type": "array", "minItems": 1, "items": { "type": "object", "required": ["account", "woodcutting_level", "attack_level", "expected_axe", "expected_equipped"], "additionalProperties": false, "properties": { "account": { "type": "string" }, "woodcutting_level": { "type": "integer", "minimum": 1, "maximum": 99 }, "attack_level": { "type": "integer", "minimum": 1, "maximum": 99 }, "expected_axe": { "type": "string" }, "expected_equipped": { "type": "boolean" } } } }, "woodcutting_modes": { "type": "array", "minItems": 3, "maxItems": 3, "items": { "type": "object", "required": ["mode", "intent", "inventory_policy", "ladder", "fallback", "model", "rates"], "additionalProperties": false, "properties": { "mode": { "enum": ["fast-xp", "afk-xp", "banked-income"] }, "intent": { "type": "string", "minLength": 10 }, "inventory_policy": { "enum": ["bank", "drop"] }, "fallback": { "type": "string", "minLength": 3 }, "ladder": { "type": "array", "minItems": 1, "items": { "type": "object", "required": ["tree", "min_level", "gate", "spot", "bank", "chop_seconds_per_log", "walk_seconds_each_way", "respawn_duty", "log_price"], "additionalProperties": false, "properties": { "tree": { "enum": ["tree", "oak", "willow", "maple", "yew"] }, "min_level": { "type": "integer", "minimum": 1, "maximum": 99 }, "gate": { "enum": ["none", "combat-15-plus", "combat-under-15", "dragon-slayer-i"] }, "spot": { "type": "string", "minLength": 3 }, "bank": { "type": "string", "minLength": 3 }, "chop_seconds_per_log": { "type": "number", "exclusiveMinimum": 0 }, "walk_seconds_each_way": { "type": "number", "minimum": 0 }, "respawn_duty": { "type": "number", "exclusiveMinimum": 0, "maximum": 1 }, "log_price": { "type": "number", "exclusiveMinimum": 0 } } } }, "model": { "type": "object", "required": ["drop_seconds_per_log", "deposit_seconds", "break_duty"], "additionalProperties": false, "properties": { "drop_seconds_per_log": { "type": "number", "minimum": 0 }, "deposit_seconds": { "type": "number", "minimum": 0 }, "break_duty": { "type": "number", "exclusiveMinimum": 0, "maximum": 1 } } }, "rates": { "type": "object", "required": ["logs_per_hour", "xp_per_hour", "gp_per_hour", "log_price", "price_verified"], "additionalProperties": false, "properties": { "logs_per_hour": { "type": "integer", "exclusiveMinimum": 0 }, "xp_per_hour": { "type": "integer", "minimum": 0 }, "gp_per_hour": { "type": "integer", "minimum": 0 }, "log_price": { "type": "number", "exclusiveMinimum": 0 }, "price_verified": { "type": "string" } } } } } }, "woodcutting_fixtures": { "type": "array", "items": { "type": "object", "required": ["account", "mode", "woodcutting_level", "attack_level", "quest_gate", "combat_level", "expected_tree", "expected_axe", "expected_equipped", "expected_logs_per_hour", "expected_xp_per_hour", "expected_gp_per_hour"], "additionalProperties": false, "properties": { "account": { "type": "string", "minLength": 3 }, "mode": { "enum": ["fast-xp", "afk-xp", "banked-income"] }, "woodcutting_level": { "type": "integer", "minimum": 1, "maximum": 99 }, "attack_level": { "type": "integer", "minimum": 1, "maximum": 99 }, "quest_gate": { "type": "boolean" }, "combat_level": { "type": "integer", "minimum": 3 }, "expected_tree": { "enum": ["tree", "oak", "willow", "maple", "yew"] }, "expected_axe": { "type": "string" }, "expected_equipped": { "type": "boolean" }, "expected_logs_per_hour": { "type": "integer", "exclusiveMinimum": 0 }, "expected_xp_per_hour": { "type": "integer", "minimum": 0 }, "expected_gp_per_hour": { "type": "integer", "minimum": 0 } } } }, "state_machine": { "type": "object", "required": ["initial", "terminal", "states"], "additionalProperties": false, "properties": { "initial": { "type": "string" }, "terminal": { "type": "array", "items": { "type": "string" }, "minItems": 1, "contains": { "const": "failed" } }, "states": { "type": "object", "minProperties": 2, "additionalProperties": { "type": "object", "required": ["goal"], "additionalProperties": false, "properties": { "goal": { "type": "string", "minLength": 3 }, "next": { "type": "array", "items": { "type": "string" }, "minItems": 1 } } } }, "transitions": { "type": "array", "items": { "type": "object", "required": ["from", "when", "to"], "additionalProperties": false, "properties": { "from": { "type": "string" }, "when": { "type": "string", "minLength": 3 }, "to": { "type": "string" } } } } } }, "actions": { "type": "array", "minItems": 1, "items": { "type": "object", "required": ["id", "step", "verb", "on_fail"], "additionalProperties": false, "properties": { "id": { "type": "string", "pattern": "^a[0-9]+$" }, "step": { "type": "string", "pattern": "^[a-z0-9]+(-[a-z0-9]+)*$" }, "verb": { "enum": [ "login", "select_world", "hop_world", "is_logged_in", "move_to", "walk_to", "teleport", "enter_region", "open_door", "use_item_on", "click_object", "right_click", "talk_to", "click_button", "menu_option", "bank_inventory", "deposit_all", "withdraw", "has_item", "count_item", "move_to_inv", "sort_inventory", "ge_open", "ge_buy", "ge_sell", "ge_cancel", "ge_offers_done", "ge_collect", "ge_check_price", "attack", "prayer", "buff", "eat", "retreat", "is_dead", "respawn", "is_at", "item_count", "level_is", "xp_is", "hp_is", "ge_clear", "bank_open", "quest_state", "npc_present", "log", "alert", "sleep", "human_move", "take_break" ] }, "target": { "type": "string" }, "params": { "type": "object" }, "on_fail": { "enum": ["retry", "skip", "abort", "alert"] }, "anti_ban": { "type": "object", "additionalProperties": false, "properties": { "delay": { "type": "array", "items": { "type": "number", "minimum": 0 }, "minItems": 2, "maxItems": 2 }, "mouse": { "type": "string" }, "jitter": { "type": "number", "minimum": 0 } } } } } }, "run_control": { "type": "object", "required": ["iteration", "stop_conditions"], "additionalProperties": false, "properties": { "iteration": { "type": "string" }, "max_iterations": { "type": ["integer", "null"], "minimum": 1 }, "break": { "type": "object", "additionalProperties": false, "properties": { "every": { "type": "array", "items": { "type": "number", "minimum": 1 }, "minItems": 2, "maxItems": 2 }, "for": { "type": "array", "items": { "type": "number", "minimum": 1 }, "minItems": 2, "maxItems": 2 } } }, "stop_conditions": { "type": "array", "items": { "type": "string" }, "minItems": 1 } } }, "risk": { "type": "object", "required": ["ban_level"], "additionalProperties": false, "properties": { "ban_level": { "enum": ["low", "medium", "high"] }, "notes": { "type": "array", "items": { "type": "string" } } } }, "sources": { "type": "array", "items": { "type": "string" }, "minItems": 1 }, "verified": { "type": "string", "pattern": "^\\d{4}-\\d{2}-\\d{2}$" }, "related": { "type": "array", "items": { "type": "string" } } } }