KINBARROW modding reference
v0.2.0+main.e011511f4 dataset 4a103dcdb658a75a

Worth is derived — anchors, not prices

The content tree — the contract for the data/ tree.

No number in this tree is a market price. Runtime worth is MARKET STATE — venue prices move with supply, demand, and distance; the arbitrage of it exists because they do. What the data actually carries:

  • THE ANCHOR IS DERIVED, and no file states it. One formula for every good the data can make, raw or crafted:

worth = Σ(input worths × qty) ÷ yield + labour_rate(tier) ÷ rate

rate is units per WORKED HOUR, so 1/rate is the hours one unit takes — at the face and at the bench alike. A recipe with no inputs (a raw extraction) reduces to the labour alone. A Class input resolves to its cheapest member; yield divides the MATERIALS only (1 for a single-unit craft, 20 for an ammo batch); a good with two recipes costs the CHEAPER; and a good the data wins only as another row’s STRIKE (mithral ore) costs the host row’s labour ÷ its odds. hours prices nothing — it is ‘s batch commit window.

  • The labour rate is the numeraire — data::labor_rate_cp, 1 + prof_bonus/2 → Apprentice 1, Journeyman 2, Master 3 cp/hour (tied to the SRD proficiency bonus). Those three scalars are now the ONLY free numbers in the price system. The closure it buys is locked over the corpus: an hour on any recipe row pays exactly its tier’s rate. (Material and quality factors still multiply at CRAFT time, on the constructed identity; the anchor is the mundane-iron, Normal-quality base.)
  • NO FILE STATES A PRICE, and every good must be MAKEABLE ( §5). There is no declared_value_cp and no SRD cost_cp any more: a good — and an arm — is worth what its recipe costs to run, and a second stored number describing the same quantity would be a quieter authority over it. So a good the data cannot make would be worth NOTHING, and the loader REFUSES it rather than pricing it at zero: give it a recipe, or a bench that wins it as a strike. That refusal binds mods too. (acquisition: survives as narration — a mod may still say where a thing comes from — but it no longer buys an exemption from the maker rule, and the shipped corpus carries none.)
  • wage_hours is the same doctrine for people — a seed the engine modulates through tier wages, council pay decisions, and poaching. Nothing pays the file’s number forever. It states HOURS, not coin ( §6): a post’s pay is a share of the day, priced at the journeyman labour rate when it is read, so it follows the rate instead of standing where an old price level left it.