From 01d439c415e6f7fcdaad078a74755dfdacc017a8 Mon Sep 17 00:00:00 2001 From: nathan Date: Mon, 18 May 2026 11:13:04 -0700 Subject: [PATCH] Decide MVP shelter opening scope --- AGRARIAN_DEVELOPMENT_ROADMAP.md | 4 ++- Docs/TechnicalDesignDocument.md | 3 ++ .../verify_shelter_door_opening_decision.py | 29 +++++++++++++++++++ 3 files changed, 35 insertions(+), 1 deletion(-) create mode 100644 Scripts/verify_shelter_door_opening_decision.py diff --git a/AGRARIAN_DEVELOPMENT_ROADMAP.md b/AGRARIAN_DEVELOPMENT_ROADMAP.md index 5664a95..cf9f40d 100644 --- a/AGRARIAN_DEVELOPMENT_ROADMAP.md +++ b/AGRARIAN_DEVELOPMENT_ROADMAP.md @@ -623,7 +623,9 @@ Target deliverable: A small group can join a server, spawn into one biome, gathe the craftable `primitive_roof_panel` inventory construction part consumed by the primitive shelter recipe; separately placeable modular roofs remain deferred to `0.2.E Permanent Structures`. -- [ ] Add door/opening if needed. +- [x] Add door/opening if needed. MVP primitive shelters use an open entrance + with no interactive door; door actors, locks, permissions, and modular + openings remain deferred to `0.2.E Permanent Structures`. - [x] Add resource cost validation. - [x] Add construction interaction. - [x] Add shelter protection volume. diff --git a/Docs/TechnicalDesignDocument.md b/Docs/TechnicalDesignDocument.md index f666c96..5069cc1 100644 --- a/Docs/TechnicalDesignDocument.md +++ b/Docs/TechnicalDesignDocument.md @@ -92,6 +92,9 @@ Early runtime systems should remain small and explicit: - The MVP roof piece is `primitive_roof_panel`, a craftable inventory construction part consumed by the primitive shelter recipe rather than an independently placed roof actor. +- MVP primitive shelters use an open entrance and do not include an + interactive door. Door actors, locks, ownership permissions, and modular + openings are deferred to permanent structures. - `UAgrarianBuildingPlacementComponent` owns the MVP placement preview. It traces from the player view, snaps to the configured grid, validates distance and collision, broadcasts Blueprint-readable preview state, and draws a diff --git a/Scripts/verify_shelter_door_opening_decision.py b/Scripts/verify_shelter_door_opening_decision.py new file mode 100644 index 0000000..f85c4bd --- /dev/null +++ b/Scripts/verify_shelter_door_opening_decision.py @@ -0,0 +1,29 @@ +#!/usr/bin/env python3 +from pathlib import Path + +ROOT = Path(__file__).resolve().parents[1] +ROADMAP = ROOT / "AGRARIAN_DEVELOPMENT_ROADMAP.md" +TECHNICAL_DESIGN = ROOT / "Docs" / "TechnicalDesignDocument.md" + + +def compact(path: Path) -> str: + return " ".join(path.read_text(encoding="utf-8").split()) + + +def require(path: Path, text: str) -> None: + data = compact(path) + if text not in data: + raise SystemExit(f"FAIL: {path.relative_to(ROOT)} missing required text: {text}") + + +def main() -> None: + require(ROADMAP, "[x] Add door/opening if needed.") + require(ROADMAP, "MVP primitive shelters use an open entrance") + require(ROADMAP, "door actors, locks, permissions, and modular openings remain deferred") + require(TECHNICAL_DESIGN, "MVP primitive shelters use an open entrance") + require(TECHNICAL_DESIGN, "Door actors, locks, ownership permissions, and modular openings are deferred") + print("PASS: MVP shelter door/opening decision is documented.") + + +if __name__ == "__main__": + main()