Codex entry: low alchemy — members (loss-minimizing) (Closes #2) #8

Merged
pbwraith merged 6 commits from issue-2 into main 2026-08-29 10:06:10 +02:00

6 Commits

Author SHA1 Message Date
Claude
052c6984ac codex: low-alch-members — loss-reserve stop direction + fill-price scenario GP bounds (bounce-fix attempt 5)
Owner guidance 2026-08-29 for governor review 10361 (PR #8), finding by finding:

1. Loss-reserve stop direction — the stop read 'session net loss (total
   assets - initial capital) > 162,990'; a loss makes that LHS negative so
   it could never exceed the positive reserve (the stop could never fire).
   Now expressed everywhere as 'initial capital - total assets > 162,990'
   (stop_conditions, worked-example step 6, recovery block, version pin):
   a loss makes the difference positive, the strict-greater comparison
   fires on losses and never on profits, and exactly-at-boundary does not
   fire. tools/validate.py gains alch_accounting_regression(): comparator
   boundary fixtures (below 162,989 / at 162,990 / above 162,991 / profit
   side +50,000 / breakeven) plus entry-text pins rejecting the reversed
   form anywhere in the file.

2. Fill-price scenarios for realized GP bounds — previously gp_per_hour_low
   /high derived only from the live-low -3.00/cast margin while the buy
   policy permits live low + 5% (candidate 423.15 + nature 147 = 570.15 vs
   540 lowalch = -30.15/cast). The economy block now declares FILL-PRICE
   SCENARIOS A (live-low 543 -> -3.00/cast) and B (max allowed +5% 570.15
   -> -30.15/cast) as the single ledger behind capital, batch economics
   AND the GP bounds: gp_per_hour_low -29,463 (scenario B x session-fast
   977.2), gp_per_hour_high -1,758 (scenario A x session-slow 585.9),
   midpoints -22,365 / -2,225 pinned; validator enforces the exact bound
   values and the -30.15/570.15/423.15 scenario pins.

Preserved: complete GE acquisition/restock flow, one-cast iteration,
monotonic break/restock counters, total-assets accounting (floor
575,150), fail-closed staff path, and the earlier fixed pacing/equip
findings. version 5 -> 6, updated 2026-08-29.

Gate: python3 tools/validate.py -> 2 entries, 0 errors, 1 pre-existing
F2P WARN (low-alch-f2p researched, untouched); git diff --check clean;
regression negative-tested (old gp pins, reversed form, missing scenario
pins all rejected).
2026-08-29 03:00:56 -05:00
Claude
a197b34aa8 codex: low-alch-members — complete GE lifecycle, capital model, monotonic counters, fail-closed staff (bounce-fix attempt 4)
Owner guidance 10325 (governor 10297 findings, exactly):
- GE acquisition path for initial buy AND every restock: open -> place ->
  wait/fill -> collect (ge_open/ge_buy/ge_collect; new wait_offers state),
  partial-fill collect + re-place recovery, bank-stock fast path only when
  the bank actually holds stock — never withdraw an unbought batch.
- Capital model: staff cap 5,000 + first batch at max fill 570,150 +
  6-batch worst-case loss reserve 162,990 + float 570,150 (~1.31M);
  capital stops use TOTAL ASSETS (cash + supplies), never raw cash.
- Monotonic counters: breaks at 550/1,100/1,650 independent of restocks
  at 901/1,802 (gcd 550,901=1); validator regression rejects the old
  1,452 restart bug and enforces the pins.
- Rates: loop-only 837.2 labelled ceiling; steady-state 639-1020 (mid
  791.2); session-realized 586-977 (mid 741.8) over the explicit 2h
  session horizon -> xp 23,000, gp -2,930..-1,760.
- Staff equip FAIL-CLOSED after bounded retries; fire-rune fallback prose
  removed everywhere.
Preserves one-cast iteration, cast-count breaks, rune javelin tips anchor,
pacing/equipment fixes. version 4 -> 5.
2026-08-28 03:36:45 -05:00
Claude
5ddfc6cdbc codex: repair low-alch-members break/iteration model per owner guidance (bounce fix attempt 3)
- iteration = one cast; break.every = [400, 700] COMPLETED casts, cast-count
  based and independent of bank visits (owner decision A) — bank-cycle claim removed
- numeric carried_batch 1,000/1,000 + restock_threshold 100 -> deterministic
  restock trigger; first restock at cast 901 (worked example pinned)
- full runnable lifecycle in actions: reach-bank, buy-staff, equip-staff (with
  fire-rune fallback failure path), buy-supplies, buy-natures, build-loadout,
  cast-alch (exact consumption + coins), restock, take-break
- rates now REALIZED incl. setup/restock/breaks: xp_per_hour 24,500,
  gp_per_hour -2,960..-1,980; loop-only 837/hr derivation still pinned
- pinned worked example: pre-inventory -> break #1 @550 -> first restock @901
  -> resume @902 -> break #2 @1452 -> restock #2 @1802
- staff of fire equip requirement wiki-verified 2026-08-28: none documented
  (infobox + prose silent vs Battlestaff's 30 Attack/30 Magic)
- version 3 -> 4; validator 2 entries 0 errors (1 pre-existing F2P WARN); Closes #2
2026-08-28 02:56:53 -05:00
Claude
284ec17370 codex: fix low-alch-members pacing model per governor review (bounce fix attempt 2)
- anti_ban.delay is additive to the 1.8s cast (action-grammar.md:135):
  cycle = 1.8s + 1.6-3.4s = 3.4-5.2s, midpoint 4.3s -> ~837 casts/hr
- xp_per_hour 44,640 -> 25,953; gp_per_hour range -3,177..-2,077;
  formula pinned in economy pacing block and actions a3 comment
- run_control.iteration = one full inventory+bank cycle (break.every
  counts iterations per docs/schema.md), bank-cycle claim removed
- risk note cadence pin updated; version 2 -> 3
2026-08-27 16:49:41 -05:00
Claude
31a23a0214 codex: fix low-alch-members entry per governor review (bounce fix attempt 1)
- Pacing: 3-tick cast is 1.8s (0.6s/tick), not 5.4s; xp_per_hour and
  gp_per_hour now derive from the mandatory anti_ban.delay [1600, 3400]ms
  pause (2.5s midpoint -> 1,440 casts/hr -> 44,640 XP/hr), arithmetic pinned.
- Anchor: model the actual least-loss liquid candidate, rune javelin tips
  (id 19580, -3/cast live, limit 10,000, lowalch==highalch*2//3 asserted);
  top-10 margin list re-fetched live; sign errors in old caveat fixed
  (opal amulet (u) stale-low artifact disqualified, jade ring now
  marginal-profit and flagged as flip candidate, not the anchor).
- Bryophyta's staff + Tome: document the 30 Attack equip gate; accounts
  below it keep the ordinary Staff of Fire path (default, no Attack req).
- version 1 -> 2. Validator: 0 errors (1 pre-existing F2P WARN).
2026-08-27 12:42:02 -05:00
Claude
587da06ef0 codex: members low-alchemy entry (loss-minimizing)
Live-verified 2026-08-27 against prices.runescape.wiki mapping/latest
(members catalog: lowalch != null, members=true, 3232 tradeable items)
plus OSRS wiki spell infoboxes and Module:Exchange limits.

- Same state machine + actions as low-alch-f2p (golden template)
- Top-10 least-loss members candidates in economy.profit_drivers
- Handoff note verified from LA page: switch to HLA at 55 (hard level
  gate + strictly more coins and xp per cast); Superheat Item (43) is
  a smithing production spell, not the magic-XP handoff
- best_practice: staff of fire, noted items, Bryophyta's staff + Tome
  of Fire combo, self-crafted natures via Abyss; every line sourced
- accounts: membership members, min_level 21

Closes #2
2026-08-27 03:19:52 -05:00