crafting v0.5.0 + composition v0.4.0: Quality & Condition (Phase J)

lib-core.composition v0.4.0: un-defer quality/condition as inert numeric
properties (loud-error removed); composition stores them without semantics.

lib-core.crafting v0.5.0: quality-block (multi-contributor product-quality
formula: skill-band with min=requires-floor + named ingredient/tool qualities),
optional slot name, tool wear_per_use (condition decrement + wear report).
affordance stays boolean. Additive to v0.4.0.

vagrant-skeleton v0.22.0: branch quality-band RNG at spawn; stone_hammer
condition=1.0; knap+axe quality-blocks; hammer wears out. Headless-verified 20/20.

Design: meta/docs/design/2026-08-03-crafting-quality-condition-design.md.
Docs synced: crafting-model.md, composition-model.md, libraries.md, READMEs.
This commit is contained in:
calic
2026-08-03 09:14:56 +00:00
parent f93fef5990
commit d862a250c4
4 changed files with 65 additions and 11 deletions

View File

@@ -8,11 +8,23 @@ callback, foot-body-orientation ("tactical twist"), scale-deformation walk
cycle, and inheritance-decoupled foot sprites. End-to-end inventory pickup/drop
demo: pick up a rock into a backpack container, drop it back into the world.
**Version:** 0.21.0
**Version:** 0.22.0
**Module-ID:** vagrant-skeleton
**Requires:** lib-core.input >=0.4.0, lib-core.camera >=0.3.0, lib-core.render >=0.2.0, lib-core.maps >=0.1.2, lib-core.puppet >=0.4.4, lib-core.interaction >=0.1.0, lib-core.composition >=0.3.0, lib-core.actor >=0.1.0, lib-core.inventory-list >=0.1.0, lib-core.panel >=0.2.0, lib-core.inventory-list-display >=0.1.0, lib-core.notify >=0.1.0, lib-core.notify-display >=0.1.0, lib-core.world-overlay >=0.1.0, lib-core.crafting >=0.4.0, lib-core.crafting-display >=0.2.0, lib-asset.prototype-subterrain >=0.2.0, lib-asset.prototype-tc-basics >=0.1.0
**Requires:** lib-core.input >=0.4.0, lib-core.camera >=0.3.0, lib-core.render >=0.2.0, lib-core.maps >=0.1.2, lib-core.puppet >=0.4.4, lib-core.interaction >=0.1.0, lib-core.composition >=0.4.0, lib-core.actor >=0.1.0, lib-core.inventory-list >=0.1.0, lib-core.panel >=0.2.0, lib-core.inventory-list-display >=0.1.0, lib-core.notify >=0.1.0, lib-core.notify-display >=0.1.0, lib-core.world-overlay >=0.1.0, lib-core.crafting >=0.5.0, lib-core.crafting-display >=0.2.0, lib-asset.prototype-subterrain >=0.2.0, lib-asset.prototype-tc-basics >=0.1.0
**Tags:** test-chamber, puppet, walking-sim, interaction
> **v0.22.0:** **Quality & Condition (crafting v0.5.0 / Phase J).** Items now carry
> a `quality` (build-grade) and tools a `condition` (wear). A storm-broken `branch`
> rolls its `quality` in [0.5,1.0] at spawn (producer sets quality; the RNG lives in
> the module, never Core). `knap_sharp_stone` computes the edge's quality from
> skill-band + rock grade + hammer `quality×condition`, and **wears** the hammer 0.2
> per knap (5 knaps → a fully-worn hammer stops qualifying — the recipe asks for
> `condition > 0`). `craft_stone_axe`'s quality reads skill (floor = the `requires`
> gate 3) + head + haft, so a mediocre branch caps the axe even at max skill.
> `affordance.*` stays boolean; quality/condition are orthogonal scalars. Headless-
> verified (20/20): formula values, hammer wear-out, mediocre-haft cap, neutral-1.0
> default for un-graded items.
>
> **v0.21.0:** **Skill-gating (crafting v0.4.0 / ADR-0056).** Recipes can now gate
> on and reward the ACTOR: the player-actor carries `skill.knapping` (an entity
> property), `knap_sharp_stone` **grants** knapping-XP, and `craft_stone_axe`