Citation sweep: researched flag + magic alch handoff entry (#5) #10

Merged
pbwraith merged 10 commits from issue-5 into main 2026-08-29 22:04:15 +02:00

10 Commits

Author SHA1 Message Date
Claude
f569ce0f2c codex: reconcile issue-5 with current main (mining PR #11) — merge origin/main ccdd0c6, union schema/validator gates (bounce-fix attempt 8, governor mergeable=false finding, owner guidance 2026-08-29T21:45Z) 2026-08-29 15:00:10 -05:00
Claude
64ef7b1d38 codex: pin alch-tier restock counters (901/1,802) in handoff worked example (main-side regression gate, post-merge reconciliation)
The merged alch_worked_example_regression gate requires the worked example to pin monotonic restock counters at 901/1,802 as well as breaks at 550/1,100/1,650; the 9-cast SII steel-path pins were already monotonic, this adds the alch-tier batch-cadence pins consistently with the entry's declared model.
2026-08-29 04:15:47 -05:00
Claude
832e8e5048 Merge remote-tracking branch 'origin/main' into issue-5
Resolve schema/validator conflict by preserving both sides:
- main: GE flip entry validator (slot_state_machine, quote_age_policy,
  max-fill fields) + new economy entries (flip-candidates, low-alch-members,
  _f2p-alch-catalog)
- issue-5: rate_model lifecycle derivation, dynamic recipe selection,
  loadout verification, supply-fact consistency gate
2026-08-29 04:14:21 -05:00
Claude
912b1ae432 codex: executable tier mutual-exclusivity — SII only 43 <= Magic < 55, HLA only >= 55 with target above 55, completion first at target (bounce-fix attempt 7, owner guidance 10529, governor 10477, issue #5) 2026-08-29 03:22:27 -05:00
Claude
8d85c65801 fix(low-alch/handoff)... 2026-08-28 15:15:23 -05:00
Claude
589767b195 codex: rate_model lifecycle derivation + executable HLA tier selection (bounce-fix attempt 5, owner guidance 10331, issue #5) 2026-08-28 04:04:03 -05:00
Claude
34f36d2275 codex: dynamic SII recipe selection + realized rates + validator crash fix (bounce fix attempt 3, owner guidance)
Owner decision (2026-08-28): Superheat Item uses a dynamic recipe table
governed by Smithing level — highest UNLOCKED recipe selected, primary ore
(target_input, never coal) is the spell target, fallback to the next lower
unlocked recipe, else skip SII and stay on LA.

- magic-alch-handoff: per-recipe target_input; selection block
  (mode highest-unlocked / eligible_rule / fallback); full-lifecycle
  actions (buy-staff, equip-staff w/ fire-rune failure path, buy-supplies,
  cast-alch, cast-superheat, bank-loop, take-break); deterministic restock
  (LA/HLA carried_batch 1,000 + threshold 100 -> 901-cast batches; SII
  24-cast bank cycles, bars >= 24); breaks [400,700] COMPLETED casts,
  independent of banking; worked example pinned (prep -> first restock @24
  -> break @550 -> resume -> restock @552); stop conditions + recovery block
- rates REALIZED incl. mandatory breaks + banking: LA 24,500 / SII 27,500 /
  HLA 51,400 xp/hr (formulas pinned; loop-only 837/hr and 305/hr regimes
  superseded); low-alch-f2p also switched (xp 24,500, gp -110,500..-74,000)
- validate.py: rows now collected ONLY after schema validation (schema-
  invalid MAPPINGS incl. 'economy: not-a-mapping' produce normal ERRORs,
  never AttributeError tracebacks — end-to-end subprocess regression added);
  new gates: recipe_model_errors (target_input in declared inputs, coal
  never targetable, unique smithing gates, selection block + SII/fallback
  transitions) and rate_errors (xp_per_hour must match the realized cadence,
  tolerance 2%); highest_unlocked_recipe helper + 6 eligibility fixtures
- entry.schema.json: optional selection block + per-recipe target_input
- Evidence: validate 2 entries 0 errors 0 warnings; --selftest 31 PASS;
  governor's exact direct repro supply_limit_conflicts([('bad.yaml',
  {'economy':'not-a-mapping'})]) -> [] no crash; synthetic 3-way merge of
  main 79cab78 (incl. issue-6 catalog) + head: clean, gate green; git
  diff --check clean
2026-08-28 03:11:07 -05:00
Claude
75a9965c9f codex: bounce-fix attempt 2 — additive pacing, cast-unit breaks, concrete SII recipes, validator crash guard (issue #5)
Governor-review (PR #10, attempt 2) findings, same issue-5 branch:

1. Pacing is additive. action-grammar.md defines anti_ban.delay as sleep
   AFTER the action, so a cast takes 1.8s + 1.6-3.4s = 3.4-5.2s (mid
   4.3s), ~837 casts/hr, not 1,400 or 1,800. Both entries now pin the
   midpoint rate with the formula documented: LA 25,953 / SII 44,372 /
   HLA 54,419 xp/hr. low-alch-f2p gp_per_hour bracketed by the delay
   endpoints (-119,000 / -78,000).

2. run_control units agree: schema.md 'every' counts iterations and
   iteration is one cast, so break.every [8, 14] is casts (comment no
   longer claims bank cycles).

3. SII is now a concrete recipe. New top-level recipes: table models all
   eight F2P smithable bars (bronze/iron/silver/steel/gold/mithril/
   adamantite/runite) with every input and quantity (coal 2/4/6/8,
   Smithing gates, bar ids) from the OSRS wiki smelting table. The
   cast-superheat action pins params.recipe (steel-bar anchor) plus a
   recipe_rule: smithing gate + complete input cost + one nature rune <
   bar price; buy/withdraw the exact unnoted inputs; bank the bar.
   entry.schema.json gains the optional 'recipes' section. Validator
   gains recipe/SII checks and a deterministic steel-bar fixture
   (1 iron + 2 coal = 3 inputs; margin 600 - (100 + 2*150 + 145) = 55).

4. Validator no longer crashes on malformed docs: scalar/empty YAML is
   rejected with a normal ERROR (document shape check) and
   supply_limit_conflicts guards non-mapping rows; regression fixtures
   cover (bad.yaml, None), scalar docs, and undeclared recipe ids.

Tests: python3 tools/validate.py -> 2 entries, 0 errors, 0 warnings
(exit 0); --selftest -> 14 PASS; live negatives: scalar + empty docs
error cleanly (exit 1, no traceback), reintroduced 12500 divergence is
caught (supply-fact gate), git diff --check clean.
2026-08-27 17:01:54 -05:00
Claude
9a2f936c05 fix(codex): pin alch cadence to delay policy, unify nature-rune limit, phase-aware SII (issue #5)
Governor-review bounce (PR #10) fixes on issue-5:

1. Timing units + rates: one OSRS tick = 0.6s so a 3-tick cast is 1.8s,
   not 5.4s as both action comments claimed. The mandatory 1.6-3.4s
   post-action delay (mid ~2.5s) allows ~1,440 casts/hr before overhead;
   rates are now pinned at 1,400 casts/hr: LA 43,400 / SII 74,200 / HLA
   91,000 xp/hr (was 55,800 / 95,400 / 117,000 @ 1,800). The old 1,800
   figures were unreachable under the entries' own pacing.

2. Nature rune limit unified to 18000 (mapping 'limit' + Module:Exchange
   agree, fetched live 2026-08-27): low-alch-f2p 12500 -> 18000, matching
   magic-alch-handoff. tools/validate.py gains a cross-entry supply-fact
   consistency check (same item+source must agree on ge_limit; run on
   every gate invocation) plus --selftest regression fixtures: diverging
   limits must fail, agreeing limits must pass, missing ge_limit is not
   gated.

3. SII tier is now phase-aware and translatable: actions split into
   cast-alch (LA/HLA -> cheapest alch candidate, noted stack) and
   cast-superheat (SII 43-55 -> unnoted ore whose live bar margin is
   positive; never a noted stack, never a price-only pick; on_fail skip
   when no positive-margin ore). State machine pins each tier path
   (LA <43, SII window chosen/skipped 43-55, HLA >=55), bank_supplies
   banks smelted bars, buy-supplies restricts ores to positive-margin
   recipes.

Tests: python3 tools/validate.py -> 2 entries, 0 errors, 0 warnings;
--selftest -> 3 PASS; negative test (reintroducing 12500) caught by the
new check; git diff --check clean.
2026-08-27 12:46:12 -05:00
Claude
ca34e97366 codex: replace researched flag with real sources + magic training handoff entry (issue #5)
- low-alch-f2p.yaml: 'bank at a GE-adjacent bank' source now cites the wiki
  Money making guide (noted-item bulk alching, West Varrock Bank F2P hub) and
  High Level Alchemy page (GE buying below alch value; noted-item casting).
  Researched-flag WARN eliminated.
- Verified handoff levels from the wiki: LA 21 (31xp), SII 43 (53xp), HLA 55
  (65xp), all F2P; LA page explicitly recommends HLA at 55. Recorded as a
  soft-efficiency-choice note on the golden entry and a new self-contained
  entry codex/training/magic-alch-handoff.yaml (id magic-alch-handoff).
- Gate: RESULT 2 entries, 0 errors, 0 warnings; diff --check clean.
2026-08-27 03:23:03 -05:00