[{"table":"balance_config","key":"logout_seconds","action":"INSERT","actor":"migration d6a4f1c8e2b5","changed_at":"2026-09-29T20:05:16.039645Z","old_value":null,"new_value":30,"reason":"d6a4f1c8e2b5: a logout counts on the zone's clock and a closed connection's pawn stands for the same seconds (ZIZ-0268); the row is the seed's, at Martin's thirty (D-186).","changed":["value"]},{"table":"balance_config","key":"combat_action_bar_slots","action":"UPDATE","actor":"migration c4d8e2f6a1b3","changed_at":"2026-09-29T20:05:16.039645Z","old_value":8,"new_value":12,"reason":"c4d8e2f6a1b3: ZIZ-0280 under D-186 -- World of Warcraft's twelve action buttons on 1-9, 0, - and =, on Martin's answer to wow-parity question 7. A tuned value is kept.","changed":["value"]},{"table":"balance_config","key":"crafting_failure_chance","action":"UPDATE","actor":"migration a6c3f9e2d4b8","changed_at":"2026-09-29T18:01:30.689935Z","old_value":0.1,"new_value":0.0,"reason":"a6c3f9e2d4b8: a craft no longer fails -- a quality rolled per craft replaces the failure on Martin's word of 2026-09-29 (D-186's third amendment, docs/design/crafting-quality.md section 4). Every rolled attempt still pays its price.","changed":["value"]},{"table":"balance_config","key":"crafting_quality","action":"INSERT","actor":"migration a6c3f9e2d4b8","changed_at":"2026-09-29T18:01:30.689935Z","old_value":null,"new_value":{"stat":{"2":1.04,"3":1.08,"4":1.12},"price":{"2":1.1,"3":1.2,"4":1.3},"types":["armour","weapon"],"mastery_margin":10,"weights_at_rung":{"2":200000,"3":50000,"4":10000},"weights_at_mastery":{"2":400000,"3":200000,"4":50000}},"reason":"a6c3f9e2d4b8: crafting quality Q-A (ZIZ-0308) -- the quality a craft rolls was nowhere in balance_config, so a fresh pair and production would have disagreed; the row is the seed's, at the same values.","changed":["value"]},{"table":"balance_config","key":"gather_respawn_seconds","action":"INSERT","actor":"migration f3b9d5a1c7e2","changed_at":"2026-09-29T02:38:31.599515Z","old_value":null,"new_value":300,"reason":"f3b9d5a1c7e2: the first hour's arc C gathers from reed beds; the zone reads the reach and the respawn off the bundle and character-service draws the yield between two rows, all four the seed's, at the values decision 7 recommends and calls guesses.","changed":["value"]},{"table":"balance_config","key":"gather_yield_max","action":"INSERT","actor":"migration f3b9d5a1c7e2","changed_at":"2026-09-29T02:38:31.599515Z","old_value":null,"new_value":3,"reason":"f3b9d5a1c7e2: the first hour's arc C gathers from reed beds; the zone reads the reach and the respawn off the bundle and character-service draws the yield between two rows, all four the seed's, at the values decision 7 recommends and calls guesses.","changed":["value"]},{"table":"balance_config","key":"gather_yield_min","action":"INSERT","actor":"migration f3b9d5a1c7e2","changed_at":"2026-09-29T02:38:31.599515Z","old_value":null,"new_value":1,"reason":"f3b9d5a1c7e2: the first hour's arc C gathers from reed beds; the zone reads the reach and the respawn off the bundle and character-service draws the yield between two rows, all four the seed's, at the values decision 7 recommends and calls guesses.","changed":["value"]},{"table":"balance_config","key":"gather_reach_uu","action":"INSERT","actor":"migration f3b9d5a1c7e2","changed_at":"2026-09-29T02:38:31.599515Z","old_value":null,"new_value":300,"reason":"f3b9d5a1c7e2: the first hour's arc C gathers from reed beds; the zone reads the reach and the respawn off the bundle and character-service draws the yield between two rows, all four the seed's, at the values decision 7 recommends and calls guesses.","changed":["value"]},{"table":"balance_config","key":"respawn_health_fraction","action":"INSERT","actor":"migration 64343c94c1a7","changed_at":"2026-09-26T11:15:59.346578Z","old_value":null,"new_value":1,"reason":"64343c94c1a7: the minimal respawn lays a player a creature killed down and wakes them on their people's arrival start; how long they lie and how full they wake are numbers a designer will move, so they are the seed's rows, at the values D-144 takes and calls guesses.","changed":["value"]},{"table":"balance_config","key":"respawn_delay_seconds","action":"INSERT","actor":"migration 64343c94c1a7","changed_at":"2026-09-26T11:15:59.346578Z","old_value":null,"new_value":10,"reason":"64343c94c1a7: the minimal respawn lays a player a creature killed down and wakes them on their people's arrival start; how long they lie and how full they wake are numbers a designer will move, so they are the seed's rows, at the values D-144 takes and calls guesses.","changed":["value"]},{"table":"balance_config","key":"creature_spawn_cap_per_zone","action":"UPDATE","actor":"migration a0c5444ac5a7","changed_at":"2026-09-26T07:56:35.937158Z","old_value":12,"new_value":16,"reason":"a0c5444ac5a7: D-143 -- the cap rises from 12 to 16 so that Savhamn stands AC5's eight marsh deer beside the mire wolves at any densities where the deer are within 1.13 of the wolves; fifteen gives eight only while the deer outnumber the wolves. A cap an operator has set is kept.","changed":["value"]},{"table":"balance_config","key":"loot_corpse_emptied_seconds","action":"INSERT","actor":"migration e7c2a9d41f53","changed_at":"2026-09-25T19:46:14.426304Z","old_value":null,"new_value":10,"reason":"e7c2a9d41f53: loot arc 2 keeps a corpse until it is looted or expires, and how long an emptied one stands is a number a designer will move; the row is the seed's, at the value D-123 takes and calls a guess.","changed":["value"]},{"table":"balance_config","key":"crafting_attempt_cost_minimum","action":"INSERT","actor":"migration b5c8e2d7a1f4","changed_at":"2026-09-19T18:15:03.157202Z","old_value":null,"new_value":1,"reason":"b5c8e2d7a1f4: copper's arc A charges a crafting attempt as a share of the output's vendor_price with a floor, read live by character-service before consuming and by economy at the settlement; the rows are the seed's, at the values the design recommends and calls guesses.","changed":["value"]},{"table":"balance_config","key":"crafting_attempt_cost_share","action":"INSERT","actor":"migration b5c8e2d7a1f4","changed_at":"2026-09-19T18:15:03.157202Z","old_value":null,"new_value":0.1,"reason":"b5c8e2d7a1f4: copper's arc A charges a crafting attempt as a share of the output's vendor_price with a floor, read live by character-service before consuming and by economy at the settlement; the rows are the seed's, at the values the design recommends and calls guesses.","changed":["value"]},{"table":"balance_config","key":"combat_regen_weave_per_second","action":"INSERT","actor":"migration c5e8a2f7d1b4","changed_at":"2026-09-19T18:15:03.157202Z","old_value":null,"new_value":1,"reason":"c5e8a2f7d1b4: abilities arc B refills the three ability pools from rows the zone reads off the bundle; the rows are the seed's, at values the arc calls guesses.","changed":["value"]},{"table":"balance_config","key":"combat_regen_focus_per_second","action":"INSERT","actor":"migration c5e8a2f7d1b4","changed_at":"2026-09-19T18:15:03.157202Z","old_value":null,"new_value":1,"reason":"c5e8a2f7d1b4: abilities arc B refills the three ability pools from rows the zone reads off the bundle; the rows are the seed's, at values the arc calls guesses.","changed":["value"]},{"table":"balance_config","key":"combat_regen_stamina_per_second","action":"INSERT","actor":"migration c5e8a2f7d1b4","changed_at":"2026-09-19T18:15:03.157202Z","old_value":null,"new_value":1,"reason":"c5e8a2f7d1b4: abilities arc B refills the three ability pools from rows the zone reads off the bundle; the rows are the seed's, at values the arc calls guesses.","changed":["value"]},{"table":"balance_config","key":"crafting_station_reach_uu","action":"INSERT","actor":"migration a7d3e9f1c4b8","changed_at":"2026-09-19T18:15:03.157202Z","old_value":null,"new_value":400,"reason":"a7d3e9f1c4b8: the first hour's arc B answers a press at a person from within a reach the zone reads off the bundle, and the loot design's proximity check will read a second; the rows are the seed's, at the values the two designs recommend and call guesses.","changed":["value"]},{"table":"balance_config","key":"npc_talk_reach_uu","action":"INSERT","actor":"migration a7d3e9f1c4b8","changed_at":"2026-09-19T18:15:03.157202Z","old_value":null,"new_value":300,"reason":"a7d3e9f1c4b8: the first hour's arc B answers a press at a person from within a reach the zone reads off the bundle, and the loot design's proximity check will read a second; the rows are the seed's, at the values the two designs recommend and call guesses.","changed":["value"]},{"table":"balance_config","key":"stat_model","action":"UPDATE","actor":"migration 384f89348844","changed_at":"2026-09-19T01:07:47.817443Z","old_value":{"model":2,"per_level":{"focus":3,"weave":3,"armour":1,"damage":2,"health":12,"stamina":4},"item_stat_keys":["armour","damage","stamina","focus","weave","health"],"rarity_multiplier":{"epic":1.3,"rare":1.18,"common":1.0,"uncommon":1.08,"legendary":1.45},"calling_multiplier":{"bindare":{"focus":1.15,"weave":1.15,"damage":0.9},"hetsare":{"armour":1.2,"damage":0.85,"health":1.25},"vaktare":{"armour":1.2,"damage":0.85,"health":1.25},"villare":{"damage":1.2,"health":0.9},"kronikor":{"focus":1.2,"health":0.95},"raderare":{"focus":1.2,"health":0.95},"askbarare":{"weave":1.1,"armour":0.85,"damage":1.15},"losgorare":{"focus":1.15,"weave":1.15,"damage":0.9},"rotsangare":{"weave":1.25,"damage":0.75,"health":0.95},"savsangare":{"weave":1.25,"damage":0.75,"health":0.95},"askspridare":{"weave":1.1,"armour":0.85,"damage":1.15},"stigfinnare":{"damage":1.2,"health":0.9}},"durability_stat_floor":0.1},"new_value":{"model":3,"per_level":{"focus":3,"weave":3,"armour":1,"damage":2,"health":12,"stamina":4},"item_stat_keys":["armour","damage","stamina","focus","weave","health"],"calling_multiplier":{"bindare":{"focus":1.15,"weave":1.15,"damage":0.9},"hetsare":{"armour":1.2,"damage":0.85,"health":1.25},"vaktare":{"armour":1.2,"damage":0.85,"health":1.25},"villare":{"damage":1.2,"health":0.9},"kronikor":{"focus":1.2,"health":0.95},"raderare":{"focus":1.2,"health":0.95},"askbarare":{"weave":1.1,"armour":0.85,"damage":1.15},"losgorare":{"focus":1.15,"weave":1.15,"damage":0.9},"rotsangare":{"weave":1.25,"damage":0.75,"health":0.95},"savsangare":{"weave":1.25,"damage":0.75,"health":0.95},"askspridare":{"weave":1.1,"armour":0.85,"damage":1.15},"stigfinnare":{"damage":1.2,"health":0.9}},"durability_stat_floor":0.1},"reason":"384f89348844: an item contributes its stats unscaled and the budget's rarity ladder is the one place a tier is worth a number, so rarity_multiplier is struck and model is 3 -- the sheet's second step changed.","changed":["value"]},{"table":"balance_config","key":"loot_rarity_share_max","action":"INSERT","actor":"migration 384f89348844","changed_at":"2026-09-19T01:07:47.817443Z","old_value":null,"new_value":{"epic":0.25,"rare":0.4,"common":1.0,"uncommon":0.6,"legendary":0.1},"reason":"384f89348844: item stats and rarity arc A -- the budget and the loot ceiling were nowhere in balance_config, so a fresh pair and production would have disagreed; the rows are the seed's, at the same values.","changed":["value"]},{"table":"balance_config","key":"item_budget","action":"INSERT","actor":"migration 384f89348844","changed_at":"2026-09-19T01:07:47.817443Z","old_value":null,"new_value":{"base":{"armour":{"floor":1,"per_level":1.0},"weapon":{"floor":4,"per_level":1.0}},"slot":{"feet":0.8,"head":0.85,"legs":1.15,"chest":1.3,"hands":0.7,"waist":0.7,"ranged":0.9,"off_hand":0.55,"main_hand":1.0,"shoulders":0.85},"split":{"armour":{"armour":1.0,"stamina":0.3},"weapon":{"damage":1.0}},"rarity":{"epic":1.6,"rare":1.35,"common":1.0,"uncommon":1.15,"legendary":2.0},"primary_step":1},"reason":"384f89348844: item stats and rarity arc A -- the budget and the loot ceiling were nowhere in balance_config, so a fresh pair and production would have disagreed; the rows are the seed's, at the same values.","changed":["value"]},{"table":"balance_config","key":"bug_attachment_retention_days","action":"INSERT","actor":"migration 0e3ed05206dd","changed_at":"2026-09-18T21:21:06.636044Z","old_value":null,"new_value":30,"reason":"0e3ed05206dd: bug reports arc A -- the per-account rate limit and the attachment retention were nowhere in balance_config, so a fresh pair and production would have disagreed; the rows are the seed's, at the same values.","changed":["value"]},{"table":"balance_config","key":"social_bug_reports_per_day","action":"INSERT","actor":"migration 0e3ed05206dd","changed_at":"2026-09-18T21:21:06.636044Z","old_value":null,"new_value":20,"reason":"0e3ed05206dd: bug reports arc A -- the per-account rate limit and the attachment retention were nowhere in balance_config, so a fresh pair and production would have disagreed; the rows are the seed's, at the same values.","changed":["value"]},{"table":"balance_config","key":"social_bug_reports_per_hour","action":"INSERT","actor":"migration 0e3ed05206dd","changed_at":"2026-09-18T21:21:06.636044Z","old_value":null,"new_value":5,"reason":"0e3ed05206dd: bug reports arc A -- the per-account rate limit and the attachment retention were nowhere in balance_config, so a fresh pair and production would have disagreed; the rows are the seed's, at the same values.","changed":["value"]},{"table":"balance_config","key":"chat_retention_days","action":"INSERT","actor":"migration 3f97e545cdf3","changed_at":"2026-09-18T13:10:00.451303Z","old_value":null,"new_value":30,"reason":"3f97e545cdf3: chat arc 1 -- the zone's two chat numbers and the retention the sweep applies were nowhere in balance_config, so a fresh pair and production would have disagreed; the rows are the seed's, at the same values.","changed":["value"]},{"table":"balance_config","key":"chat_history_on_join","action":"INSERT","actor":"migration 3f97e545cdf3","changed_at":"2026-09-18T13:10:00.451303Z","old_value":null,"new_value":20,"reason":"3f97e545cdf3: chat arc 1 -- the zone's two chat numbers and the retention the sweep applies were nowhere in balance_config, so a fresh pair and production would have disagreed; the rows are the seed's, at the same values.","changed":["value"]},{"table":"balance_config","key":"chat_min_interval_ms","action":"INSERT","actor":"migration 3f97e545cdf3","changed_at":"2026-09-18T13:10:00.451303Z","old_value":null,"new_value":500,"reason":"3f97e545cdf3: chat arc 1 -- the zone's two chat numbers and the retention the sweep applies were nowhere in balance_config, so a fresh pair and production would have disagreed; the rows are the seed's, at the same values.","changed":["value"]},{"table":"abilities","key":"raderare_unwrite","action":"UPDATE","actor":"content_smoke_test","changed_at":"2026-09-18T10:26:41.659336Z","old_value":{"cost":40,"effect":{"party_haste":0.1,"scales_with_chronicle_entries":true},"gcd_ms":1500,"intent":"damage","range_m":30.0,"cooldown_ms":90000,"min_range_m":0.0,"target_kind":"enemy","cast_time_ms":0,"cost_resource":"focus","required_level":1,"is_interruptible":false,"facing_arc_degrees":null,"pressure_multiplier":1.0,"interrupt_lockout_ms":0},"new_value":{"cost":40,"effect":{"duration_ms":20000,"haste_scale":1.1,"scales_with":"chronicle_entries"},"gcd_ms":1500,"intent":"utility","range_m":30.0,"cooldown_ms":90000,"min_range_m":0.0,"target_kind":"self","cast_time_ms":0,"cost_resource":"focus","required_level":1,"is_interruptible":false,"facing_arc_degrees":null,"pressure_multiplier":0.0,"interrupt_lockout_ms":0},"reason":null,"changed":["effect","intent","pressure_multiplier","target_kind"]},{"table":"abilities","key":"raderare_erase","action":"UPDATE","actor":"content_smoke_test","changed_at":"2026-09-18T10:26:41.659336Z","old_value":{"cost":18,"effect":{"duration_s":20,"party_damage_bonus":0.05},"gcd_ms":1500,"intent":"damage","range_m":30.0,"cooldown_ms":15000,"min_range_m":0.0,"target_kind":"enemy","cast_time_ms":0,"cost_resource":"focus","required_level":1,"is_interruptible":false,"facing_arc_degrees":null,"pressure_multiplier":1.0,"interrupt_lockout_ms":0},"new_value":{"cost":18,"effect":{"duration_ms":20000,"damage_dealt_scale":1.05},"gcd_ms":1500,"intent":"utility","range_m":30.0,"cooldown_ms":15000,"min_range_m":0.0,"target_kind":"self","cast_time_ms":0,"cost_resource":"focus","required_level":1,"is_interruptible":false,"facing_arc_degrees":null,"pressure_multiplier":0.0,"interrupt_lockout_ms":0},"reason":null,"changed":["effect","intent","pressure_multiplier","target_kind"]},{"table":"abilities","key":"losgorare_feral","action":"UPDATE","actor":"content_smoke_test","changed_at":"2026-09-18T10:26:41.659336Z","old_value":{"cost":55,"effect":{"pet_duration_s":60,"removes_from_population":true},"gcd_ms":1500,"intent":"damage","range_m":20.0,"cooldown_ms":120000,"min_range_m":0.0,"target_kind":"enemy","cast_time_ms":3000,"cost_resource":"weave","required_level":1,"is_interruptible":false,"facing_arc_degrees":null,"pressure_multiplier":1.0,"interrupt_lockout_ms":0},"new_value":{"cost":55,"effect":{"binds":true,"duration_ms":60000},"gcd_ms":1500,"intent":"control","range_m":20.0,"cooldown_ms":120000,"min_range_m":0.0,"target_kind":"enemy","cast_time_ms":3000,"cost_resource":"weave","required_level":1,"is_interruptible":true,"facing_arc_degrees":null,"pressure_multiplier":0.0,"interrupt_lockout_ms":0},"reason":null,"changed":["effect","intent","is_interruptible","pressure_multiplier"]},{"table":"abilities","key":"losgorare_sever","action":"UPDATE","actor":"content_smoke_test","changed_at":"2026-09-18T10:26:41.659336Z","old_value":{"cost":28,"effect":{"control_s":8,"diminishing_returns":true},"gcd_ms":1500,"intent":"damage","range_m":25.0,"cooldown_ms":18000,"min_range_m":0.0,"target_kind":"enemy","cast_time_ms":1500,"cost_resource":"weave","required_level":1,"is_interruptible":false,"facing_arc_degrees":null,"pressure_multiplier":1.0,"interrupt_lockout_ms":0},"new_value":{"cost":28,"effect":{"duration_ms":8000,"diminishing_returns":true},"gcd_ms":1500,"intent":"control","range_m":25.0,"cooldown_ms":18000,"min_range_m":0.0,"target_kind":"enemy","cast_time_ms":1500,"cost_resource":"weave","required_level":1,"is_interruptible":true,"facing_arc_degrees":null,"pressure_multiplier":0.0,"interrupt_lockout_ms":0},"reason":null,"changed":["effect","intent","is_interruptible","pressure_multiplier"]},{"table":"abilities","key":"askspridare_pyre","action":"UPDATE","actor":"content_smoke_test","changed_at":"2026-09-18T10:26:41.659336Z","old_value":{"cost":60,"effect":{"damage":640,"radius_m":8,"ecosystem_pressure":9.0},"gcd_ms":1500,"intent":"damage","range_m":25.0,"cooldown_ms":45000,"min_range_m":0.0,"target_kind":"enemy","cast_time_ms":2500,"cost_resource":"weave","required_level":1,"is_interruptible":false,"facing_arc_degrees":null,"pressure_multiplier":1.0,"interrupt_lockout_ms":0},"new_value":{"cost":60,"effect":{"radius_m":8,"damage_scale":6.4},"gcd_ms":1500,"intent":"damage","range_m":25.0,"cooldown_ms":45000,"min_range_m":0.0,"target_kind":"ground","cast_time_ms":2500,"cost_resource":"weave","required_level":1,"is_interruptible":true,"facing_arc_degrees":null,"pressure_multiplier":9.0,"interrupt_lockout_ms":0},"reason":null,"changed":["effect","is_interruptible","pressure_multiplier","target_kind"]},{"table":"abilities","key":"askspridare_flare","action":"UPDATE","actor":"content_smoke_test","changed_at":"2026-09-18T10:26:41.659336Z","old_value":{"cost":22,"effect":{"damage":190,"ecosystem_pressure":1.8},"gcd_ms":1500,"intent":"damage","range_m":35.0,"cooldown_ms":0,"min_range_m":0.0,"target_kind":"enemy","cast_time_ms":1600,"cost_resource":"weave","required_level":1,"is_interruptible":false,"facing_arc_degrees":null,"pressure_multiplier":1.0,"interrupt_lockout_ms":0},"new_value":{"cost":22,"effect":{"damage_scale":1.9},"gcd_ms":1500,"intent":"damage","range_m":35.0,"cooldown_ms":0,"min_range_m":0.0,"target_kind":"enemy","cast_time_ms":1600,"cost_resource":"weave","required_level":1,"is_interruptible":true,"facing_arc_degrees":null,"pressure_multiplier":1.8,"interrupt_lockout_ms":0},"reason":null,"changed":["effect","is_interruptible","pressure_multiplier"]},{"table":"abilities","key":"rotsangare_bloom","action":"UPDATE","actor":"content_smoke_test","changed_at":"2026-09-18T10:26:41.659336Z","old_value":{"cost":45,"effect":{"targets":5,"duration_s":10,"heal_over_time":90},"gcd_ms":1500,"intent":"damage","range_m":12.0,"cooldown_ms":25000,"min_range_m":0.0,"target_kind":"enemy","cast_time_ms":0,"cost_resource":"weave","required_level":1,"is_interruptible":false,"facing_arc_degrees":null,"pressure_multiplier":1.0,"interrupt_lockout_ms":0},"new_value":{"cost":45,"effect":{"targets":5,"tick_ms":1000,"radius_m":12,"heal_scale":0.9,"duration_ms":10000},"gcd_ms":1500,"intent":"heal","range_m":12.0,"cooldown_ms":25000,"min_range_m":0.0,"target_kind":"ally","cast_time_ms":0,"cost_resource":"weave","required_level":1,"is_interruptible":false,"facing_arc_degrees":null,"pressure_multiplier":0.0,"interrupt_lockout_ms":0},"reason":null,"changed":["effect","intent","pressure_multiplier","target_kind"]},{"table":"abilities","key":"rotsangare_mend","action":"UPDATE","actor":"content_smoke_test","changed_at":"2026-09-18T10:26:41.659336Z","old_value":{"cost":24,"effect":{"heal":310,"scales_with_biome_decay":true},"gcd_ms":1500,"intent":"damage","range_m":30.0,"cooldown_ms":0,"min_range_m":0.0,"target_kind":"enemy","cast_time_ms":2000,"cost_resource":"weave","required_level":1,"is_interruptible":false,"facing_arc_degrees":null,"pressure_multiplier":1.0,"interrupt_lockout_ms":0},"new_value":{"cost":24,"effect":{"heal_scale":3.1,"scales_with":"biome_decay"},"gcd_ms":1500,"intent":"heal","range_m":30.0,"cooldown_ms":0,"min_range_m":0.0,"target_kind":"ally","cast_time_ms":2000,"cost_resource":"weave","required_level":1,"is_interruptible":true,"facing_arc_degrees":null,"pressure_multiplier":0.0,"interrupt_lockout_ms":0},"reason":null,"changed":["effect","intent","is_interruptible","pressure_multiplier","target_kind"]},{"table":"abilities","key":"villare_loose","action":"UPDATE","actor":"content_smoke_test","changed_at":"2026-09-18T10:26:41.659336Z","old_value":{"cost":12,"effect":{"damage":145},"gcd_ms":1500,"intent":"damage","range_m":40.0,"cooldown_ms":0,"min_range_m":0.0,"target_kind":"enemy","cast_time_ms":1800,"cost_resource":"focus","required_level":1,"is_interruptible":false,"facing_arc_degrees":null,"pressure_multiplier":1.0,"interrupt_lockout_ms":0},"new_value":{"cost":12,"effect":{"damage_scale":1.45},"gcd_ms":1500,"intent":"damage","range_m":40.0,"cooldown_ms":0,"min_range_m":0.0,"target_kind":"enemy","cast_time_ms":1800,"cost_resource":"focus","required_level":1,"is_interruptible":true,"facing_arc_degrees":null,"pressure_multiplier":1.0,"interrupt_lockout_ms":0},"reason":null,"changed":["effect","is_interruptible"]},{"table":"abilities","key":"villare_mislead","action":"UPDATE","actor":"content_smoke_test","changed_at":"2026-09-18T10:26:41.659336Z","old_value":{"cost":15,"effect":{"conceal_s":30,"damage_bonus":0.08},"gcd_ms":1500,"intent":"damage","range_m":40.0,"cooldown_ms":8000,"min_range_m":0.0,"target_kind":"enemy","cast_time_ms":0,"cost_resource":"focus","required_level":1,"is_interruptible":false,"facing_arc_degrees":null,"pressure_multiplier":1.0,"interrupt_lockout_ms":0},"new_value":{"cost":15,"effect":{"duration_ms":30000,"damage_taken_scale":1.08},"gcd_ms":1500,"intent":"utility","range_m":40.0,"cooldown_ms":8000,"min_range_m":0.0,"target_kind":"enemy","cast_time_ms":0,"cost_resource":"focus","required_level":1,"is_interruptible":false,"facing_arc_degrees":null,"pressure_multiplier":0.0,"interrupt_lockout_ms":0},"reason":null,"changed":["effect","intent","pressure_multiplier"]},{"table":"abilities","key":"hetsare_stampede","action":"UPDATE","actor":"content_smoke_test","changed_at":"2026-09-18T10:26:41.659336Z","old_value":{"cost":30,"effect":{"panic_s":12,"ecosystem_pressure":1.0},"gcd_ms":1500,"intent":"damage","range_m":20.0,"cooldown_ms":30000,"min_range_m":0.0,"target_kind":"enemy","cast_time_ms":1200,"cost_resource":"stamina","required_level":1,"is_interruptible":false,"facing_arc_degrees":null,"pressure_multiplier":1.0,"interrupt_lockout_ms":0},"new_value":{"cost":30,"effect":{"duration_ms":12000},"gcd_ms":1500,"intent":"redirect","range_m":20.0,"cooldown_ms":30000,"min_range_m":0.0,"target_kind":"enemy","cast_time_ms":1200,"cost_resource":"stamina","required_level":1,"is_interruptible":true,"facing_arc_degrees":null,"pressure_multiplier":0.0,"interrupt_lockout_ms":0},"reason":null,"changed":["effect","intent","is_interruptible","pressure_multiplier"]},{"table":"abilities","key":"hetsare_drive","action":"UPDATE","actor":"content_smoke_test","changed_at":"2026-09-18T10:26:41.659336Z","old_value":{"cost":20,"effect":{"threat":900,"duration_s":8,"damage_reduction":0.3},"gcd_ms":1500,"intent":"damage","range_m":3.0,"cooldown_ms":12000,"min_range_m":0.0,"target_kind":"enemy","cast_time_ms":0,"cost_resource":"stamina","required_level":1,"is_interruptible":false,"facing_arc_degrees":null,"pressure_multiplier":1.0,"interrupt_lockout_ms":0},"new_value":{"cost":20,"effect":{"duration_ms":8000,"threat_flat":900,"damage_taken_scale":0.7},"gcd_ms":1500,"intent":"utility","range_m":3.0,"cooldown_ms":12000,"min_range_m":0.0,"target_kind":"self","cast_time_ms":0,"cost_resource":"stamina","required_level":1,"is_interruptible":false,"facing_arc_degrees":null,"pressure_multiplier":0.0,"interrupt_lockout_ms":0},"reason":null,"changed":["effect","intent","pressure_multiplier","target_kind"]},{"table":"abilities","key":"kronikor_recall","action":"UPDATE","actor":"content_smoke_test","changed_at":"2026-09-18T10:26:41.659336Z","old_value":{"cost":40,"effect":{"party_haste":0.1,"scales_with_chronicle_entries":true},"gcd_ms":1500,"intent":"damage","range_m":30.0,"cooldown_ms":90000,"min_range_m":0.0,"target_kind":"enemy","cast_time_ms":0,"cost_resource":"focus","required_level":1,"is_interruptible":false,"facing_arc_degrees":null,"pressure_multiplier":1.0,"interrupt_lockout_ms":0},"new_value":{"cost":40,"effect":{"duration_ms":20000,"haste_scale":1.1,"scales_with":"chronicle_entries"},"gcd_ms":1500,"intent":"utility","range_m":30.0,"cooldown_ms":90000,"min_range_m":0.0,"target_kind":"self","cast_time_ms":0,"cost_resource":"focus","required_level":1,"is_interruptible":false,"facing_arc_degrees":null,"pressure_multiplier":0.0,"interrupt_lockout_ms":0},"reason":null,"changed":["effect","intent","pressure_multiplier","target_kind"]},{"table":"abilities","key":"kronikor_record","action":"UPDATE","actor":"content_smoke_test","changed_at":"2026-09-18T10:26:41.659336Z","old_value":{"cost":18,"effect":{"duration_s":20,"party_damage_bonus":0.05},"gcd_ms":1500,"intent":"damage","range_m":30.0,"cooldown_ms":15000,"min_range_m":0.0,"target_kind":"enemy","cast_time_ms":0,"cost_resource":"focus","required_level":1,"is_interruptible":false,"facing_arc_degrees":null,"pressure_multiplier":1.0,"interrupt_lockout_ms":0},"new_value":{"cost":18,"effect":{"duration_ms":20000,"damage_dealt_scale":1.05},"gcd_ms":1500,"intent":"utility","range_m":30.0,"cooldown_ms":15000,"min_range_m":0.0,"target_kind":"self","cast_time_ms":0,"cost_resource":"focus","required_level":1,"is_interruptible":false,"facing_arc_degrees":null,"pressure_multiplier":0.0,"interrupt_lockout_ms":0},"reason":null,"changed":["effect","intent","pressure_multiplier","target_kind"]},{"table":"abilities","key":"bindare_servant","action":"UPDATE","actor":"content_smoke_test","changed_at":"2026-09-18T10:26:41.659336Z","old_value":{"cost":55,"effect":{"pet_duration_s":60,"removes_from_population":true},"gcd_ms":1500,"intent":"damage","range_m":20.0,"cooldown_ms":120000,"min_range_m":0.0,"target_kind":"enemy","cast_time_ms":3000,"cost_resource":"weave","required_level":1,"is_interruptible":false,"facing_arc_degrees":null,"pressure_multiplier":1.0,"interrupt_lockout_ms":0},"new_value":{"cost":55,"effect":{"binds":true,"duration_ms":60000},"gcd_ms":1500,"intent":"control","range_m":20.0,"cooldown_ms":120000,"min_range_m":0.0,"target_kind":"enemy","cast_time_ms":3000,"cost_resource":"weave","required_level":1,"is_interruptible":true,"facing_arc_degrees":null,"pressure_multiplier":0.0,"interrupt_lockout_ms":0},"reason":null,"changed":["effect","intent","is_interruptible","pressure_multiplier"]},{"table":"abilities","key":"bindare_tether","action":"UPDATE","actor":"content_smoke_test","changed_at":"2026-09-18T10:26:41.659336Z","old_value":{"cost":28,"effect":{"control_s":8,"diminishing_returns":true},"gcd_ms":1500,"intent":"damage","range_m":25.0,"cooldown_ms":18000,"min_range_m":0.0,"target_kind":"enemy","cast_time_ms":1500,"cost_resource":"weave","required_level":1,"is_interruptible":false,"facing_arc_degrees":null,"pressure_multiplier":1.0,"interrupt_lockout_ms":0},"new_value":{"cost":28,"effect":{"duration_ms":8000,"diminishing_returns":true},"gcd_ms":1500,"intent":"control","range_m":25.0,"cooldown_ms":18000,"min_range_m":0.0,"target_kind":"enemy","cast_time_ms":1500,"cost_resource":"weave","required_level":1,"is_interruptible":true,"facing_arc_degrees":null,"pressure_multiplier":0.0,"interrupt_lockout_ms":0},"reason":null,"changed":["effect","intent","is_interruptible","pressure_multiplier"]},{"table":"abilities","key":"askbarare_pyre","action":"UPDATE","actor":"content_smoke_test","changed_at":"2026-09-18T10:26:41.659336Z","old_value":{"cost":60,"effect":{"damage":640,"radius_m":8,"ecosystem_pressure":9.0},"gcd_ms":1500,"intent":"damage","range_m":25.0,"cooldown_ms":45000,"min_range_m":0.0,"target_kind":"enemy","cast_time_ms":2500,"cost_resource":"weave","required_level":1,"is_interruptible":false,"facing_arc_degrees":null,"pressure_multiplier":1.0,"interrupt_lockout_ms":0},"new_value":{"cost":60,"effect":{"radius_m":8,"damage_scale":6.4},"gcd_ms":1500,"intent":"damage","range_m":25.0,"cooldown_ms":45000,"min_range_m":0.0,"target_kind":"ground","cast_time_ms":2500,"cost_resource":"weave","required_level":1,"is_interruptible":true,"facing_arc_degrees":null,"pressure_multiplier":9.0,"interrupt_lockout_ms":0},"reason":null,"changed":["effect","is_interruptible","pressure_multiplier","target_kind"]},{"table":"abilities","key":"askbarare_ember","action":"UPDATE","actor":"content_smoke_test","changed_at":"2026-09-18T10:26:41.659336Z","old_value":{"cost":22,"effect":{"damage":190,"ecosystem_pressure":1.8},"gcd_ms":1500,"intent":"damage","range_m":35.0,"cooldown_ms":0,"min_range_m":0.0,"target_kind":"enemy","cast_time_ms":1600,"cost_resource":"weave","required_level":1,"is_interruptible":false,"facing_arc_degrees":null,"pressure_multiplier":1.0,"interrupt_lockout_ms":0},"new_value":{"cost":22,"effect":{"damage_scale":1.9},"gcd_ms":1500,"intent":"damage","range_m":35.0,"cooldown_ms":0,"min_range_m":0.0,"target_kind":"enemy","cast_time_ms":1600,"cost_resource":"weave","required_level":1,"is_interruptible":true,"facing_arc_degrees":null,"pressure_multiplier":1.8,"interrupt_lockout_ms":0},"reason":null,"changed":["effect","is_interruptible","pressure_multiplier"]},{"table":"abilities","key":"savsangare_bloom","action":"UPDATE","actor":"content_smoke_test","changed_at":"2026-09-18T10:26:41.659336Z","old_value":{"cost":45,"effect":{"targets":5,"duration_s":10,"heal_over_time":90},"gcd_ms":1500,"intent":"damage","range_m":12.0,"cooldown_ms":25000,"min_range_m":0.0,"target_kind":"enemy","cast_time_ms":0,"cost_resource":"weave","required_level":1,"is_interruptible":false,"facing_arc_degrees":null,"pressure_multiplier":1.0,"interrupt_lockout_ms":0},"new_value":{"cost":45,"effect":{"targets":5,"tick_ms":1000,"radius_m":12,"heal_scale":0.9,"duration_ms":10000},"gcd_ms":1500,"intent":"heal","range_m":12.0,"cooldown_ms":25000,"min_range_m":0.0,"target_kind":"ally","cast_time_ms":0,"cost_resource":"weave","required_level":1,"is_interruptible":false,"facing_arc_degrees":null,"pressure_multiplier":0.0,"interrupt_lockout_ms":0},"reason":null,"changed":["effect","intent","pressure_multiplier","target_kind"]},{"table":"abilities","key":"savsangare_mend","action":"UPDATE","actor":"content_smoke_test","changed_at":"2026-09-18T10:26:41.659336Z","old_value":{"cost":24,"effect":{"heal":310,"scales_with_biome_health":true},"gcd_ms":1500,"intent":"damage","range_m":30.0,"cooldown_ms":0,"min_range_m":0.0,"target_kind":"enemy","cast_time_ms":2000,"cost_resource":"weave","required_level":1,"is_interruptible":false,"facing_arc_degrees":null,"pressure_multiplier":1.0,"interrupt_lockout_ms":0},"new_value":{"cost":24,"effect":{"heal_scale":3.1,"scales_with":"biome_health"},"gcd_ms":1500,"intent":"heal","range_m":30.0,"cooldown_ms":0,"min_range_m":0.0,"target_kind":"ally","cast_time_ms":2000,"cost_resource":"weave","required_level":1,"is_interruptible":true,"facing_arc_degrees":null,"pressure_multiplier":0.0,"interrupt_lockout_ms":0},"reason":null,"changed":["effect","intent","is_interruptible","pressure_multiplier","target_kind"]},{"table":"abilities","key":"stigfinnare_loose","action":"UPDATE","actor":"content_smoke_test","changed_at":"2026-09-18T10:26:41.659336Z","old_value":{"cost":12,"effect":{"damage":145},"gcd_ms":1500,"intent":"damage","range_m":40.0,"cooldown_ms":0,"min_range_m":0.0,"target_kind":"enemy","cast_time_ms":1800,"cost_resource":"focus","required_level":1,"is_interruptible":false,"facing_arc_degrees":null,"pressure_multiplier":1.0,"interrupt_lockout_ms":0},"new_value":{"cost":12,"effect":{"damage_scale":1.45},"gcd_ms":1500,"intent":"damage","range_m":40.0,"cooldown_ms":0,"min_range_m":0.0,"target_kind":"enemy","cast_time_ms":1800,"cost_resource":"focus","required_level":1,"is_interruptible":true,"facing_arc_degrees":null,"pressure_multiplier":1.0,"interrupt_lockout_ms":0},"reason":null,"changed":["effect","is_interruptible"]},{"table":"abilities","key":"stigfinnare_mark","action":"UPDATE","actor":"content_smoke_test","changed_at":"2026-09-18T10:26:41.659336Z","old_value":{"cost":15,"effect":{"reveal_s":30,"damage_bonus":0.08},"gcd_ms":1500,"intent":"damage","range_m":40.0,"cooldown_ms":8000,"min_range_m":0.0,"target_kind":"enemy","cast_time_ms":0,"cost_resource":"focus","required_level":1,"is_interruptible":false,"facing_arc_degrees":null,"pressure_multiplier":1.0,"interrupt_lockout_ms":0},"new_value":{"cost":15,"effect":{"duration_ms":30000,"damage_taken_scale":1.08},"gcd_ms":1500,"intent":"utility","range_m":40.0,"cooldown_ms":8000,"min_range_m":0.0,"target_kind":"enemy","cast_time_ms":0,"cost_resource":"focus","required_level":1,"is_interruptible":false,"facing_arc_degrees":null,"pressure_multiplier":0.0,"interrupt_lockout_ms":0},"reason":null,"changed":["effect","intent","pressure_multiplier"]},{"table":"abilities","key":"vaktare_calm","action":"UPDATE","actor":"content_smoke_test","changed_at":"2026-09-18T10:26:41.659336Z","old_value":{"cost":30,"effect":{"pacify_s":12,"ecosystem_pressure":0},"gcd_ms":1500,"intent":"damage","range_m":20.0,"cooldown_ms":30000,"min_range_m":0.0,"target_kind":"enemy","cast_time_ms":1200,"cost_resource":"stamina","required_level":1,"is_interruptible":false,"facing_arc_degrees":null,"pressure_multiplier":1.0,"interrupt_lockout_ms":0},"new_value":{"cost":30,"effect":{"duration_ms":12000},"gcd_ms":1500,"intent":"redirect","range_m":20.0,"cooldown_ms":30000,"min_range_m":0.0,"target_kind":"enemy","cast_time_ms":1200,"cost_resource":"stamina","required_level":1,"is_interruptible":true,"facing_arc_degrees":null,"pressure_multiplier":0.0,"interrupt_lockout_ms":0},"reason":null,"changed":["effect","intent","is_interruptible","pressure_multiplier"]},{"table":"abilities","key":"vaktare_stand","action":"UPDATE","actor":"content_smoke_test","changed_at":"2026-09-18T10:26:41.659336Z","old_value":{"cost":20,"effect":{"threat":900,"duration_s":8,"damage_reduction":0.3},"gcd_ms":1500,"intent":"damage","range_m":3.0,"cooldown_ms":12000,"min_range_m":0.0,"target_kind":"enemy","cast_time_ms":0,"cost_resource":"stamina","required_level":1,"is_interruptible":false,"facing_arc_degrees":null,"pressure_multiplier":1.0,"interrupt_lockout_ms":0},"new_value":{"cost":20,"effect":{"duration_ms":8000,"threat_flat":900,"damage_taken_scale":0.7},"gcd_ms":1500,"intent":"utility","range_m":3.0,"cooldown_ms":12000,"min_range_m":0.0,"target_kind":"self","cast_time_ms":0,"cost_resource":"stamina","required_level":1,"is_interruptible":false,"facing_arc_degrees":null,"pressure_multiplier":0.0,"interrupt_lockout_ms":0},"reason":null,"changed":["effect","intent","pressure_multiplier","target_kind"]},{"table":"balance_config","key":"stat_model","action":"UPDATE","actor":"migration b7d2e4c9a1f6","changed_at":"2026-09-18T09:52:58.206563Z","old_value":{"model":2,"per_level":{"focus":3,"weave":3,"armour":1,"health":12,"stamina":4},"item_stat_keys":["armour","damage","stamina","focus","weave","health"],"rarity_multiplier":{"epic":1.3,"rare":1.18,"common":1.0,"uncommon":1.08,"legendary":1.45},"calling_multiplier":{"bindare":{"focus":1.15,"weave":1.15,"damage":0.9},"hetsare":{"armour":1.2,"damage":0.85,"health":1.25},"vaktare":{"armour":1.2,"damage":0.85,"health":1.25},"villare":{"damage":1.2,"health":0.9},"kronikor":{"focus":1.2,"health":0.95},"raderare":{"focus":1.2,"health":0.95},"askbarare":{"weave":1.1,"armour":0.85,"damage":1.15},"losgorare":{"focus":1.15,"weave":1.15,"damage":0.9},"rotsangare":{"weave":1.25,"damage":0.75,"health":0.95},"savsangare":{"weave":1.25,"damage":0.75,"health":0.95},"askspridare":{"weave":1.1,"armour":0.85,"damage":1.15},"stigfinnare":{"damage":1.2,"health":0.9}},"durability_stat_floor":0.1},"new_value":{"model":2,"per_level":{"focus":3,"weave":3,"armour":1,"damage":2,"health":12,"stamina":4},"item_stat_keys":["armour","damage","stamina","focus","weave","health"],"rarity_multiplier":{"epic":1.3,"rare":1.18,"common":1.0,"uncommon":1.08,"legendary":1.45},"calling_multiplier":{"bindare":{"focus":1.15,"weave":1.15,"damage":0.9},"hetsare":{"armour":1.2,"damage":0.85,"health":1.25},"vaktare":{"armour":1.2,"damage":0.85,"health":1.25},"villare":{"damage":1.2,"health":0.9},"kronikor":{"focus":1.2,"health":0.95},"raderare":{"focus":1.2,"health":0.95},"askbarare":{"weave":1.1,"armour":0.85,"damage":1.15},"losgorare":{"focus":1.15,"weave":1.15,"damage":0.9},"rotsangare":{"weave":1.25,"damage":0.75,"health":0.95},"savsangare":{"weave":1.25,"damage":0.75,"health":0.95},"askspridare":{"weave":1.1,"armour":0.85,"damage":1.15},"stigfinnare":{"damage":1.2,"health":0.9}},"durability_stat_floor":0.1},"reason":"b7d2e4c9a1f6: creatures-and-loot.md decision 3 under D-88 -- a bare hand hits for two per level, because per_level had no damage term and a fresh character hit for nothing. An existing value is kept.","changed":["value"]},{"table":"balance_config","key":"creature_spawn_cap_per_zone","action":"INSERT","actor":"migration a3f1c8d2e6b4","changed_at":"2026-09-18T09:52:58.206563Z","old_value":null,"new_value":12,"reason":"a3f1c8d2e6b4: the zone half of the deer pair judges a swing's reach, arc and interval and caps what a zone stands up, and a number a designer moves is a row and not a literal; the rows are the seed's, at the values docs/design/creatures-and-loot.md recommends and calls guesses.","changed":["value"]},{"table":"balance_config","key":"combat_basic_attack_arc_degrees","action":"INSERT","actor":"migration a3f1c8d2e6b4","changed_at":"2026-09-18T09:52:58.206563Z","old_value":null,"new_value":120,"reason":"a3f1c8d2e6b4: the zone half of the deer pair judges a swing's reach, arc and interval and caps what a zone stands up, and a number a designer moves is a row and not a literal; the rows are the seed's, at the values docs/design/creatures-and-loot.md recommends and calls guesses.","changed":["value"]},{"table":"balance_config","key":"combat_basic_attack_interval_ms","action":"INSERT","actor":"migration a3f1c8d2e6b4","changed_at":"2026-09-18T09:52:58.206563Z","old_value":null,"new_value":2000,"reason":"a3f1c8d2e6b4: the zone half of the deer pair judges a swing's reach, arc and interval and caps what a zone stands up, and a number a designer moves is a row and not a literal; the rows are the seed's, at the values docs/design/creatures-and-loot.md recommends and calls guesses.","changed":["value"]},{"table":"balance_config","key":"combat_basic_attack_reach_m","action":"INSERT","actor":"migration a3f1c8d2e6b4","changed_at":"2026-09-18T09:52:58.206563Z","old_value":null,"new_value":3,"reason":"a3f1c8d2e6b4: the zone half of the deer pair judges a swing's reach, arc and interval and caps what a zone stands up, and a number a designer moves is a row and not a literal; the rows are the seed's, at the values docs/design/creatures-and-loot.md recommends and calls guesses.","changed":["value"]},{"table":"balance_config","key":"stat_model","action":"UPDATE","actor":"migration a8d3f27c6e19","changed_at":"2026-09-18T09:52:58.206563Z","old_value":{"model":1,"per_level":{"focus":3,"weave":3,"armour":1,"health":12,"stamina":4},"item_stat_keys":["armour","damage","stamina","focus","weave","health"],"rarity_multiplier":{"epic":1.3,"rare":1.18,"common":1.0,"uncommon":1.08,"legendary":1.45},"calling_multiplier":{"bindare":{"focus":1.15,"weave":1.15,"damage":0.9},"hetsare":{"armour":1.2,"damage":0.85,"health":1.25},"vaktare":{"armour":1.2,"damage":0.85,"health":1.25},"villare":{"damage":1.2,"health":0.9},"kronikor":{"focus":1.2,"health":0.95},"raderare":{"focus":1.2,"health":0.95},"askbarare":{"weave":1.1,"armour":0.85,"damage":1.15},"losgorare":{"focus":1.15,"weave":1.15,"damage":0.9},"rotsangare":{"weave":1.25,"damage":0.75,"health":0.95},"savsangare":{"weave":1.25,"damage":0.75,"health":0.95},"askspridare":{"weave":1.1,"armour":0.85,"damage":1.15},"stigfinnare":{"damage":1.2,"health":0.9}},"talent_point_value":{"armour":2,"damage":2,"health":6},"durability_stat_floor":0.1},"new_value":{"model":2,"per_level":{"focus":3,"weave":3,"armour":1,"health":12,"stamina":4},"item_stat_keys":["armour","damage","stamina","focus","weave","health"],"rarity_multiplier":{"epic":1.3,"rare":1.18,"common":1.0,"uncommon":1.08,"legendary":1.45},"calling_multiplier":{"bindare":{"focus":1.15,"weave":1.15,"damage":0.9},"hetsare":{"armour":1.2,"damage":0.85,"health":1.25},"vaktare":{"armour":1.2,"damage":0.85,"health":1.25},"villare":{"damage":1.2,"health":0.9},"kronikor":{"focus":1.2,"health":0.95},"raderare":{"focus":1.2,"health":0.95},"askbarare":{"weave":1.1,"armour":0.85,"damage":1.15},"losgorare":{"focus":1.15,"weave":1.15,"damage":0.9},"rotsangare":{"weave":1.25,"damage":0.75,"health":0.95},"savsangare":{"weave":1.25,"damage":0.75,"health":0.95},"askspridare":{"weave":1.1,"armour":0.85,"damage":1.15},"stigfinnare":{"damage":1.2,"health":0.9}},"durability_stat_floor":0.1},"reason":"a8d3f27c6e19: a talent point is a talents row whose effect.add is its price, so talent_point_value is struck and model is 2 -- the sheet's third step changed.","changed":["value"]},{"table":"balance_config","key":"talent_reset_cost_per_point","action":"INSERT","actor":"migration a8d3f27c6e19","changed_at":"2026-09-18T09:52:58.206563Z","old_value":null,"new_value":0,"reason":"a8d3f27c6e19: the Weave's three dials, with the talents table; the rows are the seed's, D-88 decisions 3 and 4.","changed":["value"]},{"table":"balance_config","key":"talent_tier_threshold","action":"INSERT","actor":"migration a8d3f27c6e19","changed_at":"2026-09-18T09:52:58.206563Z","old_value":null,"new_value":3,"reason":"a8d3f27c6e19: the Weave's three dials, with the talents table; the rows are the seed's, D-88 decisions 3 and 4.","changed":["value"]},{"table":"balance_config","key":"talent_points_per_level","action":"INSERT","actor":"migration a8d3f27c6e19","changed_at":"2026-09-18T09:52:58.206563Z","old_value":null,"new_value":1,"reason":"a8d3f27c6e19: the Weave's three dials, with the talents table; the rows are the seed's, D-88 decisions 3 and 4.","changed":["value"]},{"table":"balance_config","key":"gm_mute_max_minutes","action":"INSERT","actor":"migration b8d4f02a6e13","changed_at":"2026-09-18T09:52:58.206563Z","old_value":null,"new_value":1440,"reason":"b8d4f02a6e13: a relayed mute is bounded by a balance row and the row had no seed; the row is the seed's, a guess of one day.","changed":["value"]},{"table":"balance_config","key":"combat_stamina_costs","action":"UPDATE","actor":"migration a3e7c1d5f9b2","changed_at":"2026-09-18T09:52:58.206563Z","old_value":{"pool":100,"dodge":25,"heavy_attack":35},"new_value":{"dodge":25,"heavy_attack":35},"reason":"ZIZ-0110 / D-88 decision 2: the pool a cost is spent from is the sheet's stat of the resource's name, so the flat `pool` 100 nothing read is removed; dodge and heavy_attack stay.","changed":["value"]},{"table":"balance_config","key":"stat_model","action":"UPDATE","actor":"migration a3e7c1d5f9b2","changed_at":"2026-09-18T09:52:58.206563Z","old_value":{"model":1,"per_level":{"focus":3,"weave":3,"armour":1,"health":12,"stamina":4},"item_stat_keys":["armour","damage","stamina","focus","weave","health"],"rarity_multiplier":{"epic":1.3,"rare":1.18,"common":1.0,"uncommon":1.08,"legendary":1.45},"calling_multiplier":{"bindare":{"focus":1.15,"weave":1.15,"damage":0.9},"vaktare":{"armour":1.2,"damage":0.85,"health":1.25},"kronikor":{"focus":1.2,"health":0.95},"askbarare":{"weave":1.1,"armour":0.85,"damage":1.15},"savsangare":{"weave":1.25,"damage":0.75,"health":0.95},"stigfinnare":{"damage":1.2,"health":0.9}},"talent_point_value":{"armour":2,"damage":2,"health":6},"durability_stat_floor":0.1},"new_value":{"model":1,"per_level":{"focus":3,"weave":3,"armour":1,"health":12,"stamina":4},"item_stat_keys":["armour","damage","stamina","focus","weave","health"],"rarity_multiplier":{"epic":1.3,"rare":1.18,"common":1.0,"uncommon":1.08,"legendary":1.45},"calling_multiplier":{"bindare":{"focus":1.15,"weave":1.15,"damage":0.9},"hetsare":{"armour":1.2,"damage":0.85,"health":1.25},"vaktare":{"armour":1.2,"damage":0.85,"health":1.25},"villare":{"damage":1.2,"health":0.9},"kronikor":{"focus":1.2,"health":0.95},"raderare":{"focus":1.2,"health":0.95},"askbarare":{"weave":1.1,"armour":0.85,"damage":1.15},"losgorare":{"focus":1.15,"weave":1.15,"damage":0.9},"rotsangare":{"weave":1.25,"damage":0.75,"health":0.95},"savsangare":{"weave":1.25,"damage":0.75,"health":0.95},"askspridare":{"weave":1.1,"armour":0.85,"damage":1.15},"stigfinnare":{"damage":1.2,"health":0.9}},"talent_point_value":{"armour":2,"damage":2,"health":6},"durability_stat_floor":0.1},"reason":"ZIZ-0110 / D-88 decision 14: the six Tearer Callings compute as their Weaver mirrors -- hetsare as vaktare, villare as stigfinnare, rotsangare as savsangare, askspridare as askbarare, losgorare as bindare, raderare as kronikor -- so a Goader is not a Warden with 12 health. Existing values kept.","changed":["value"]},{"table":"balance_config","key":"craft_interrupt_distance_uu","action":"INSERT","actor":"migration c4f1e2a7d9b3","changed_at":"2026-09-15T17:49:13.964657Z","old_value":null,"new_value":100,"reason":"c4f1e2a7d9b3: the zone's craft timer is interrupted by movement beyond a distance, and the distance had no row; the row is the seed's, a guess of one metre.","changed":["value"]},{"table":"balance_config","key":"loot_corpse_reach_uu","action":"INSERT","actor":"migration d9b3e57c1a48","changed_at":"2026-09-15T16:02:14.192194Z","old_value":null,"new_value":300,"reason":"d9b3e57c1a48: D-83 put a corpse between the roll and the grant, and the time it stands and the reach it is looted from are numbers a designer will move; the rows are the seed's, at the values docs/design/creatures-and-loot.md recommends and calls guesses.","changed":["value"]},{"table":"balance_config","key":"loot_corpse_lifetime_seconds","action":"INSERT","actor":"migration d9b3e57c1a48","changed_at":"2026-09-15T16:02:14.192194Z","old_value":null,"new_value":120,"reason":"d9b3e57c1a48: D-83 put a corpse between the roll and the grant, and the time it stands and the reach it is looted from are numbers a designer will move; the rows are the seed's, at the values docs/design/creatures-and-loot.md recommends and calls guesses.","changed":["value"]},{"table":"balance_config","key":"profession_level_cap","action":"INSERT","actor":"migration 1af9af3e421d","changed_at":"2026-09-14T20:49:49.264157Z","old_value":null,"new_value":40,"reason":"1af9af3e421d: character-service's craft rolls against a failure chance and levels a profession on a curve, and neither number had a row; the rows are the seed's, at the service's fallback values.","changed":["value"]},{"table":"balance_config","key":"profession_xp_curve_exponent","action":"INSERT","actor":"migration 1af9af3e421d","changed_at":"2026-09-14T20:49:49.264157Z","old_value":null,"new_value":1.62,"reason":"1af9af3e421d: character-service's craft rolls against a failure chance and levels a profession on a curve, and neither number had a row; the rows are the seed's, at the service's fallback values.","changed":["value"]},{"table":"balance_config","key":"crafting_failure_chance","action":"INSERT","actor":"migration 1af9af3e421d","changed_at":"2026-09-14T20:49:49.264157Z","old_value":null,"new_value":0.1,"reason":"1af9af3e421d: character-service's craft rolls against a failure chance and levels a profession on a curve, and neither number had a row; the rows are the seed's, at the service's fallback values.","changed":["value"]},{"table":"balance_config","key":"encounter_participants_max","action":"INSERT","actor":"migration b88f2260fe92","changed_at":"2026-09-14T20:49:49.264157Z","old_value":null,"new_value":150,"reason":"b88f2260fe92: the resolution route carries who fought since 2026-09-14 and the ceiling on how many is a balance number; the row is the seed's, at the value the service defaults to without it.","changed":["value"]},{"table":"balance_config","key":"social_report_response_seconds","action":"INSERT","actor":"migration 36343083f673","changed_at":"2026-09-14T15:28:13.946534Z","old_value":null,"new_value":86400,"reason":"36343083f673: the target SocialReportUnreadPastTarget compares against was a fallback in config.py with no row behind it, so /admin/text-policy reported its source as 'fallback'; the row is the seed's, at the same value.","changed":["value"]},{"table":"balance_config","key":"ecosystem_model","action":"UPDATE","actor":"migration e5a1c7d9b204","changed_at":"2026-09-12T22:07:06.763360Z","old_value":{"food_coupling":0.9,"handling_time":15.0,"migration_rate":0.06,"pressure_decay":0.25,"natural_mortality":0.0,"overshoot_ceiling":1.6,"pressure_per_kill":1.0,"scorch_multiplier":1.0,"encounter_pressure":0.25,"density_at_capacity":6.0,"migration_threshold":0.9,"conversion_efficiency":0.01,"density_at_capacity_elite":1.2,"density_at_capacity_world_boss":0.4},"new_value":{"food_coupling":0.9,"handling_time":15.0,"migration_rate":0.06,"pressure_decay":0.25,"natural_mortality":0.0,"overshoot_ceiling":1.6,"pressure_per_kill":1.0,"scorch_multiplier":1.0,"encounter_pressure":0.25,"density_at_capacity":6.0,"migration_threshold":0.9,"conversion_efficiency":0.01,"chronicle_recovery_band":1.25,"density_at_capacity_elite":1.2,"density_at_capacity_world_boss":0.4},"reason":"D-82: the Chronicle's recovery band is a balance number and lives in the row, so the threshold at which a collapsed herd is called recovered can move without a deploy. Existing values kept.","changed":["value"]},{"table":"balance_config","key":"ecosystem_model","action":"UPDATE","actor":"migration b2d7e4a1c9f3","changed_at":"2026-09-12T01:41:56.457999Z","old_value":{"food_coupling":0.9,"handling_time":15.0,"migration_rate":0.06,"pressure_decay":0.25,"natural_mortality":0.0,"overshoot_ceiling":1.6,"pressure_per_kill":1.0,"migration_threshold":0.9,"conversion_efficiency":0.01},"new_value":{"food_coupling":0.9,"handling_time":15.0,"migration_rate":0.06,"pressure_decay":0.25,"natural_mortality":0.0,"overshoot_ceiling":1.6,"pressure_per_kill":1.0,"scorch_multiplier":1.0,"encounter_pressure":0.25,"density_at_capacity":6.0,"migration_threshold":0.9,"conversion_efficiency":0.01,"density_at_capacity_elite":1.2,"density_at_capacity_world_boss":0.4},"reason":"ZIZ-0068 / D-81: the three spawn-density constants became dials, and the two combat dials that defaulted in code since 2026-08-16 are in the row as well, so every dial the model has is one a designer can find. Existing values kept.","changed":["value"]},{"table":"abilities","key":"raderare_unwrite","action":"PUBLISH","actor":"martin","changed_at":"2026-09-03T11:19:57.732708Z","old_value":null,"new_value":{"cost":40,"effect":{"party_haste":0.1,"scales_with_chronicle_entries":true},"gcd_ms":1500,"intent":"damage","range_m":30.0,"cooldown_ms":90000,"min_range_m":0.0,"target_kind":"enemy","cast_time_ms":0,"cost_resource":"focus","required_level":1,"is_interruptible":false,"facing_arc_degrees":null,"pressure_multiplier":1.0,"interrupt_lockout_ms":0},"reason":null,"changed":["cast_time_ms","cooldown_ms","cost","cost_resource","effect","facing_arc_degrees","gcd_ms","intent","interrupt_lockout_ms","is_interruptible","min_range_m","pressure_multiplier","range_m","required_level","target_kind"]},{"table":"abilities","key":"raderare_erase","action":"PUBLISH","actor":"martin","changed_at":"2026-09-03T11:19:57.732708Z","old_value":null,"new_value":{"cost":18,"effect":{"duration_s":20,"party_damage_bonus":0.05},"gcd_ms":1500,"intent":"damage","range_m":30.0,"cooldown_ms":15000,"min_range_m":0.0,"target_kind":"enemy","cast_time_ms":0,"cost_resource":"focus","required_level":1,"is_interruptible":false,"facing_arc_degrees":null,"pressure_multiplier":1.0,"interrupt_lockout_ms":0},"reason":null,"changed":["cast_time_ms","cooldown_ms","cost","cost_resource","effect","facing_arc_degrees","gcd_ms","intent","interrupt_lockout_ms","is_interruptible","min_range_m","pressure_multiplier","range_m","required_level","target_kind"]},{"table":"abilities","key":"losgorare_feral","action":"PUBLISH","actor":"martin","changed_at":"2026-09-03T11:19:57.732708Z","old_value":null,"new_value":{"cost":55,"effect":{"pet_duration_s":60,"removes_from_population":true},"gcd_ms":1500,"intent":"damage","range_m":20.0,"cooldown_ms":120000,"min_range_m":0.0,"target_kind":"enemy","cast_time_ms":3000,"cost_resource":"weave","required_level":1,"is_interruptible":false,"facing_arc_degrees":null,"pressure_multiplier":1.0,"interrupt_lockout_ms":0},"reason":null,"changed":["cast_time_ms","cooldown_ms","cost","cost_resource","effect","facing_arc_degrees","gcd_ms","intent","interrupt_lockout_ms","is_interruptible","min_range_m","pressure_multiplier","range_m","required_level","target_kind"]},{"table":"abilities","key":"losgorare_sever","action":"PUBLISH","actor":"martin","changed_at":"2026-09-03T11:19:57.732708Z","old_value":null,"new_value":{"cost":28,"effect":{"control_s":8,"diminishing_returns":true},"gcd_ms":1500,"intent":"damage","range_m":25.0,"cooldown_ms":18000,"min_range_m":0.0,"target_kind":"enemy","cast_time_ms":1500,"cost_resource":"weave","required_level":1,"is_interruptible":false,"facing_arc_degrees":null,"pressure_multiplier":1.0,"interrupt_lockout_ms":0},"reason":null,"changed":["cast_time_ms","cooldown_ms","cost","cost_resource","effect","facing_arc_degrees","gcd_ms","intent","interrupt_lockout_ms","is_interruptible","min_range_m","pressure_multiplier","range_m","required_level","target_kind"]},{"table":"abilities","key":"askspridare_pyre","action":"PUBLISH","actor":"martin","changed_at":"2026-09-03T11:19:57.732708Z","old_value":null,"new_value":{"cost":60,"effect":{"damage":640,"radius_m":8,"ecosystem_pressure":9.0},"gcd_ms":1500,"intent":"damage","range_m":25.0,"cooldown_ms":45000,"min_range_m":0.0,"target_kind":"enemy","cast_time_ms":2500,"cost_resource":"weave","required_level":1,"is_interruptible":false,"facing_arc_degrees":null,"pressure_multiplier":1.0,"interrupt_lockout_ms":0},"reason":null,"changed":["cast_time_ms","cooldown_ms","cost","cost_resource","effect","facing_arc_degrees","gcd_ms","intent","interrupt_lockout_ms","is_interruptible","min_range_m","pressure_multiplier","range_m","required_level","target_kind"]},{"table":"abilities","key":"askspridare_flare","action":"PUBLISH","actor":"martin","changed_at":"2026-09-03T11:19:57.732708Z","old_value":null,"new_value":{"cost":22,"effect":{"damage":190,"ecosystem_pressure":1.8},"gcd_ms":1500,"intent":"damage","range_m":35.0,"cooldown_ms":0,"min_range_m":0.0,"target_kind":"enemy","cast_time_ms":1600,"cost_resource":"weave","required_level":1,"is_interruptible":false,"facing_arc_degrees":null,"pressure_multiplier":1.0,"interrupt_lockout_ms":0},"reason":null,"changed":["cast_time_ms","cooldown_ms","cost","cost_resource","effect","facing_arc_degrees","gcd_ms","intent","interrupt_lockout_ms","is_interruptible","min_range_m","pressure_multiplier","range_m","required_level","target_kind"]},{"table":"abilities","key":"rotsangare_bloom","action":"PUBLISH","actor":"martin","changed_at":"2026-09-03T11:19:57.732708Z","old_value":null,"new_value":{"cost":45,"effect":{"targets":5,"duration_s":10,"heal_over_time":90},"gcd_ms":1500,"intent":"damage","range_m":12.0,"cooldown_ms":25000,"min_range_m":0.0,"target_kind":"enemy","cast_time_ms":0,"cost_resource":"weave","required_level":1,"is_interruptible":false,"facing_arc_degrees":null,"pressure_multiplier":1.0,"interrupt_lockout_ms":0},"reason":null,"changed":["cast_time_ms","cooldown_ms","cost","cost_resource","effect","facing_arc_degrees","gcd_ms","intent","interrupt_lockout_ms","is_interruptible","min_range_m","pressure_multiplier","range_m","required_level","target_kind"]},{"table":"abilities","key":"rotsangare_mend","action":"PUBLISH","actor":"martin","changed_at":"2026-09-03T11:19:57.732708Z","old_value":null,"new_value":{"cost":24,"effect":{"heal":310,"scales_with_biome_decay":true},"gcd_ms":1500,"intent":"damage","range_m":30.0,"cooldown_ms":0,"min_range_m":0.0,"target_kind":"enemy","cast_time_ms":2000,"cost_resource":"weave","required_level":1,"is_interruptible":false,"facing_arc_degrees":null,"pressure_multiplier":1.0,"interrupt_lockout_ms":0},"reason":null,"changed":["cast_time_ms","cooldown_ms","cost","cost_resource","effect","facing_arc_degrees","gcd_ms","intent","interrupt_lockout_ms","is_interruptible","min_range_m","pressure_multiplier","range_m","required_level","target_kind"]},{"table":"abilities","key":"villare_loose","action":"PUBLISH","actor":"martin","changed_at":"2026-09-03T11:19:57.732708Z","old_value":null,"new_value":{"cost":12,"effect":{"damage":145},"gcd_ms":1500,"intent":"damage","range_m":40.0,"cooldown_ms":0,"min_range_m":0.0,"target_kind":"enemy","cast_time_ms":1800,"cost_resource":"focus","required_level":1,"is_interruptible":false,"facing_arc_degrees":null,"pressure_multiplier":1.0,"interrupt_lockout_ms":0},"reason":null,"changed":["cast_time_ms","cooldown_ms","cost","cost_resource","effect","facing_arc_degrees","gcd_ms","intent","interrupt_lockout_ms","is_interruptible","min_range_m","pressure_multiplier","range_m","required_level","target_kind"]},{"table":"abilities","key":"villare_mislead","action":"PUBLISH","actor":"martin","changed_at":"2026-09-03T11:19:57.732708Z","old_value":null,"new_value":{"cost":15,"effect":{"conceal_s":30,"damage_bonus":0.08},"gcd_ms":1500,"intent":"damage","range_m":40.0,"cooldown_ms":8000,"min_range_m":0.0,"target_kind":"enemy","cast_time_ms":0,"cost_resource":"focus","required_level":1,"is_interruptible":false,"facing_arc_degrees":null,"pressure_multiplier":1.0,"interrupt_lockout_ms":0},"reason":null,"changed":["cast_time_ms","cooldown_ms","cost","cost_resource","effect","facing_arc_degrees","gcd_ms","intent","interrupt_lockout_ms","is_interruptible","min_range_m","pressure_multiplier","range_m","required_level","target_kind"]},{"table":"abilities","key":"hetsare_stampede","action":"PUBLISH","actor":"martin","changed_at":"2026-09-03T11:19:57.732708Z","old_value":null,"new_value":{"cost":30,"effect":{"panic_s":12,"ecosystem_pressure":1.0},"gcd_ms":1500,"intent":"damage","range_m":20.0,"cooldown_ms":30000,"min_range_m":0.0,"target_kind":"enemy","cast_time_ms":1200,"cost_resource":"stamina","required_level":1,"is_interruptible":false,"facing_arc_degrees":null,"pressure_multiplier":1.0,"interrupt_lockout_ms":0},"reason":null,"changed":["cast_time_ms","cooldown_ms","cost","cost_resource","effect","facing_arc_degrees","gcd_ms","intent","interrupt_lockout_ms","is_interruptible","min_range_m","pressure_multiplier","range_m","required_level","target_kind"]},{"table":"abilities","key":"hetsare_drive","action":"PUBLISH","actor":"martin","changed_at":"2026-09-03T11:19:57.732708Z","old_value":null,"new_value":{"cost":20,"effect":{"threat":900,"duration_s":8,"damage_reduction":0.3},"gcd_ms":1500,"intent":"damage","range_m":3.0,"cooldown_ms":12000,"min_range_m":0.0,"target_kind":"enemy","cast_time_ms":0,"cost_resource":"stamina","required_level":1,"is_interruptible":false,"facing_arc_degrees":null,"pressure_multiplier":1.0,"interrupt_lockout_ms":0},"reason":null,"changed":["cast_time_ms","cooldown_ms","cost","cost_resource","effect","facing_arc_degrees","gcd_ms","intent","interrupt_lockout_ms","is_interruptible","min_range_m","pressure_multiplier","range_m","required_level","target_kind"]},{"table":"balance_config","key":"zone_admission_tickets_per_account","action":"INSERT","actor":"seed-script","changed_at":"2026-08-29T13:43:46.793715Z","old_value":null,"new_value":4,"reason":"Initial values","changed":["value"]},{"table":"balance_config","key":"zone_admission_ticket_ttl_seconds","action":"INSERT","actor":"seed-script","changed_at":"2026-08-29T13:43:46.793715Z","old_value":null,"new_value":120,"reason":"Initial values","changed":["value"]},{"table":"balance_config","key":"social_friend_requests_per_day","action":"INSERT","actor":"zizeeria","changed_at":"2026-08-17T11:49:07.242715Z","old_value":null,"new_value":50,"reason":"Friend requests one character may send per day. A spam control rather than a balance dial, and in this table for the same reason the chat limit is: §10.4 says a number a person would tune does not belong in code.","changed":["value"]},{"table":"balance_config","key":"social_messages_per_minute","action":"INSERT","actor":"zizeeria","changed_at":"2026-08-17T11:49:07.242715Z","old_value":null,"new_value":20,"reason":"Chat rate limit per character. Matches the fallback in services/social/zizeeria_social/config.py, so landing this row does not change how the service behaves -- it only moves the number somewhere it can be edited without a deployment.","changed":["value"]},{"table":"balance_config","key":"combat_action_bar_slots","action":"INSERT","actor":"zizeeria","changed_at":"2026-08-17T11:49:07.242715Z","old_value":null,"new_value":8,"reason":"NOT FROM THE DESIGN DOCUMENT. How many character_loadout_slots rows one character may hold per Calling. Deliberately not a CHECK on slot_no: a ceiling in the schema makes widening the bar a migration, and §10.1 wants it to be a data patch.","changed":["value"]},{"table":"balance_config","key":"combat_stamina_costs","action":"INSERT","actor":"zizeeria","changed_at":"2026-08-17T11:49:07.242715Z","old_value":null,"new_value":{"pool":100,"dodge":25,"heavy_attack":35},"reason":"NOT FROM THE DESIGN DOCUMENT, which names stamina on dodges and heavy attacks without numbers. Here rather than in code because a dodge is not an abilities row -- it is universal, so this table is the only place it can be data at all.","changed":["value"]},{"table":"balance_config","key":"combat_disengage_seconds","action":"INSERT","actor":"zizeeria","changed_at":"2026-08-17T11:49:07.242715Z","old_value":null,"new_value":15,"reason":"NOT FROM THE DESIGN DOCUMENT. How long without contact before an encounter resolves as disengaged. The schema forces the choice, because encounters.resolution has to become something, and the alternative is a zone server hard-coding it -- which §10.4 calls a design error rather than a shortcut. Set to match time-to-die so walking away costs about what dying would have.","changed":["value"]},{"table":"balance_config","key":"combat_heavy_windup_ms","action":"INSERT","actor":"zizeeria","changed_at":"2026-08-17T11:49:07.242715Z","old_value":null,"new_value":{"max":900,"min":600},"reason":"docs/DESIGN.md §Combat: wind-up on a heavy attack. Long enough to read, short enough not to feel like a menu. Read against abilities.cast_time_ms, which is the same mechanic -- there is deliberately no second column called windup_ms.","changed":["value"]},{"table":"balance_config","key":"combat_time_to_die_seconds","action":"INSERT","actor":"zizeeria","changed_at":"2026-08-17T11:49:07.242715Z","old_value":null,"new_value":15,"reason":"docs/DESIGN.md §Combat: how long a player survives ignoring what a fight is telling them. Death has to be reachable in the first hour or Soul Debt is a rumour, and §2.4's whole penalty design rests on this being met.","changed":["value"]},{"table":"balance_config","key":"combat_time_to_kill_seconds","action":"INSERT","actor":"zizeeria","changed_at":"2026-08-17T11:49:07.242715Z","old_value":null,"new_value":{"max":30,"min":20,"against":"one adult common creature, solo, at level"},"reason":"docs/DESIGN.md §Combat. Long enough that a mistake in the middle changes the outcome. This is where tuning starts, not where it ends: §Combat says outright that whether 20-30 is right is settled by the first ten players' opinion rather than by a measurement anybody can take now.","changed":["value"]},{"table":"balance_config","key":"stat_model","action":"INSERT","actor":"zizeeria","changed_at":"2026-08-11T06:24:30.994221Z","old_value":null,"new_value":{"model":1,"per_level":{"focus":3,"weave":3,"armour":1,"health":12,"stamina":4},"item_stat_keys":["armour","damage","stamina","focus","weave","health"],"rarity_multiplier":{"epic":1.3,"rare":1.18,"common":1.0,"uncommon":1.08,"legendary":1.45},"calling_multiplier":{"bindare":{"focus":1.15,"weave":1.15,"damage":0.9},"vaktare":{"armour":1.2,"damage":0.85,"health":1.25},"kronikor":{"focus":1.2,"health":0.95},"askbarare":{"weave":1.1,"armour":0.85,"damage":1.15},"savsangare":{"weave":1.25,"damage":0.75,"health":0.95},"stigfinnare":{"damage":1.2,"health":0.9}},"talent_point_value":{"armour":2,"damage":2,"health":6},"durability_stat_floor":0.1},"reason":"character-service","changed":["value"]},{"table":"balance_config","key":"inventory_slots","action":"INSERT","actor":"zizeeria","changed_at":"2026-08-11T06:24:30.994221Z","old_value":null,"new_value":40,"reason":"character-service","changed":["value"]},{"table":"balance_config","key":"characters_name_hold_days","action":"INSERT","actor":"zizeeria","changed_at":"2026-08-11T06:24:30.994221Z","old_value":null,"new_value":30,"reason":"character-service","changed":["value"]},{"table":"balance_config","key":"characters_per_account","action":"INSERT","actor":"zizeeria","changed_at":"2026-08-11T06:24:30.994221Z","old_value":null,"new_value":8,"reason":"character-service","changed":["value"]}]