Define knowledge skill separation model

This commit is contained in:
2026-05-19 15:31:14 -07:00
parent 4560a006e7
commit 26db07d54f
3 changed files with 92 additions and 1 deletions
+1 -1
View File
@@ -877,7 +877,7 @@ Target deliverable: A small group can join a server, spawn into one biome, gathe
## 0.1.R Knowledge And Skill Foundation
- [ ] Define the MVP separation between knowledge, practical experience, physical stats, tools, and infrastructure.
- [x] Define the MVP separation between knowledge, practical experience, physical stats, tools, and infrastructure. Added `Docs/KnowledgeAndSkillFoundation.md` with a five-part MVP model separating knowledge, practical experience, physical stats, tools, and infrastructure so basic survival remains possible but outcomes improve through understanding, practice, equipment, and durable world improvements.
- [ ] Add a first-pass skill taxonomy for survival, gathering, tool use, crafting, fire, shelter, navigation, first aid, food safety, and weather awareness.
- [ ] Define how knowledge affects survival actions: fewer mistakes, safer attempts, better yields, lower injury risk, and more reliable outcomes.
- [ ] Define how practical experience grows through use, repetition, mistakes, and recovery from failure.
+51
View File
@@ -0,0 +1,51 @@
# Knowledge And Skill Foundation
Version `0.1.R` defines how Agrarian treats knowledge, practice, body condition,
tools, and infrastructure before those systems become heavy gameplay code.
## MVP Separation Model
Agrarian should not collapse every form of progress into one generic skill
number. The MVP separates five related but distinct drivers.
Knowledge:
- Represents what a character understands.
- Comes from observation, teaching, notes, mistakes, questions, and practice
reflection.
- Affects judgment, recognition, safety, sequencing, and when warnings appear.
- Should help players understand why something worked or failed.
Practical experience:
- Represents practiced execution under real conditions.
- Comes from repeated action, variation, failed attempts, recovery, and doing
the work in different weather, light, terrain, and tool conditions.
- Affects speed, consistency, yield, precision, and waste.
- Should grow slowly from use and should not replace core understanding.
Physical stats:
- Represent the body in the moment: health, stamina, hunger, thirst, body
temperature, exhaustion, injury, sickness, age, carry load, and care history.
- Affect what a character can safely do right now.
- Should create readable pressure without becoming a hidden knowledge system.
Tools:
- Represent external capability the player can hold, equip, place, or maintain.
- Affect what actions are possible, how safe they are, how much effort they
require, and how good the result can be.
- Should still require knowledge and practice for best outcomes.
Infrastructure:
- Represents durable world improvements such as shelter, storage, paths, wells,
fields, workshops, firebreaks, and community systems.
- Affects baseline safety, efficiency, capacity, and resilience.
- Should reduce routine survival pressure without removing consequences from
poor choices.
MVP rule: basic survival actions must remain possible with low knowledge and
poor tools, but outcomes should be riskier, slower, lower quality, or more
wasteful until knowledge, practice, tools, and infrastructure improve.
@@ -0,0 +1,40 @@
#!/usr/bin/env python3
"""Verify the 0.1.R MVP knowledge/skill separation model is documented."""
from pathlib import Path
ROOT = Path(__file__).resolve().parents[1]
DOC = ROOT / "Docs" / "KnowledgeAndSkillFoundation.md"
ROADMAP = ROOT / "AGRARIAN_DEVELOPMENT_ROADMAP.md"
REQUIRED = {
DOC: [
"## MVP Separation Model",
"Knowledge:",
"Practical experience:",
"Physical stats:",
"Tools:",
"Infrastructure:",
"basic survival actions must remain possible",
],
ROADMAP: [
"[x] Define the MVP separation between knowledge, practical experience, physical stats, tools, and infrastructure.",
],
}
def main() -> None:
missing: list[str] = []
for path, snippets in REQUIRED.items():
text = path.read_text(encoding="utf-8")
for snippet in snippets:
if snippet not in text:
missing.append(f"{path.relative_to(ROOT)} missing {snippet!r}")
if missing:
raise SystemExit("FAILED: " + "; ".join(missing))
print("OK: knowledge/skill separation model is documented.")
if __name__ == "__main__":
main()