Reagent-cost price derivation for craftable gap items#15
Merged
Conversation
3443 recipes parsed from Spell.dbc; 1071 craftable gap items priced from reagent costs (2940 reagent refs from ChromieCraft, 64 recursively derived, 215 vendor floor, 21 unpriceable).
icemansparks
added a commit
that referenced
this pull request
Jul 1, 2026
Adds derived override rows (avg=cost x1.3, min=cost) for craftable items with no ChromieCraft price, generated by tools/price-backfill/derive.py from recipes.json + vendor SellPrice. Add-only: no ChromieCraft row changed. Provenance: reports/derived-prices-2026-07-01.csv (PR #15).
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Derives AH prices for craftable items that have no ChromieCraft auction data, from the cost of their reagents.
How
spelldbc.pyparsesSpell.dbc(3.3.5a, verified field offsets) into a created-item -> recipe map. Committed once asrecipes.json(3,443 recipes) so there's no runtime DBC dependency; avalidate()gate guards against wrong offsets/build.recipe_prices.pyprices each craftable recursively: ChromieCraft override -> recipe derivation -> vendor SellPrice -> 0. Memoized, cycle-safe.derive.pymerges add-only derived rows into the override SQL (never overwrites a ChromieCraft-priced item) and emits a derived-prices report.Real run
3,443 recipes; 1,071 craftable gap items priced (2,940 reagent refs from ChromieCraft market, 64 recursively derived, 215 vendor-floor, 21 unpriceable). Merged SQL is sanity-clean (no dup/malformed/min>avg rows). Config: avg = cost x1.3, min = cost.
Review
reports/derived-prices-2026-07-01.csv— thereagent_sourcescolumn is the confidence signal (cc / derived / vendor / none).Tests
39 passing (parser fixture, recursive resolver incl. cycle/vendor/yield/margin, add-only merge smoke). Zero third-party deps.
Note
The merged SQL itself (ChromieCraft + derived rows) is applied on the price-data branch, since it builds on the ChromieCraft refresh (PR #13). This PR is the tool + reusable recipe data + report + spec/plan.