5.7 KiB
Code review — NEO-75 playable gather→refine→make loop (capstone)
Date: 2026-05-24
Scope: Branch NEO-75-e3-playable-gather-refine-make-loop · commits fbae314–977bcc3 vs origin/main
Base: origin/main
Verdict
Approve with nits — capstone docs, HUD collapse, and path updates match the adopted plan; GdUnit passes. Merge after human capstone manual QA; minor module/README doc consistency nits below.
Summary
The branch completes Epic 3 Slice 5 capstone integration: collapsible EconomyHudSection wraps inventory/skills/recipe panel under a Economy HUD checkbox, main.gd @onready paths follow the reparent, and a focused prototype_economy_hud_section.gd script toggles body visibility. Docs deliver the zero-Bruno capstone script (docs/manual-qa/NEO-75.md), README end-to-end loop section, implementation plan reconciliation, alignment register updates, and E3S5-04 backlog checkboxes. No new HTTP routes or economy client logic — the gather→refine→make loop reuses NEO-72–74 wiring as intended. Risk is low: layout-only client change plus documentation; automated coverage is the HUD toggle suite only (orchestration remains manual QA per plan).
Documentation checked
| Document | Result |
|---|---|
docs/plans/NEO-75-implementation-plan.md |
Matches — kickoff decisions (docs-first, implement HUD collapse, fresh server session, visible XP only) reflected; acceptance checklist and reconciliation complete. |
docs/plans/E3S5-client-prototype-backlog.md · E3S5-04 |
Matches — capstone manual QA, README integration, optional HUD collapse, alignment cross-links; AC checked. |
docs/decomposition/modules/E3_M2_RefinementAndRecipeExecution.md |
Matches — status notes NEO-74 + NEO-75 landed. |
docs/decomposition/modules/E3_M1_ResourceNodeAndGatherLoop.md |
Matches — Status row notes NEO-73 gather feedback + NEO-75 capstone landed. |
docs/decomposition/modules/E3_M3_ItemizationAndInventorySchema.md |
Matches — Status row notes NEO-72 inventory HUD + NEO-75 economy collapse landed. |
docs/decomposition/modules/documentation_and_implementation_alignment.md |
Matches — E3.M1/M2/M3 rows note NEO-75 landed and Slice 5 client complete. |
docs/decomposition/epics/epic_03_crafting_economy.md |
Matches — Slice 5 Status note records NEO-75 capstone landed. |
docs/decomposition/modules/client_server_authority.md |
Matches — no client-side stack math; display-only HUD collapse. |
docs/manual-qa/NEO-75.md |
Matches — single-session script, material math, collapse step; acceptance boxes left for human sign-off (expected). |
client/README.md |
Matches — NEO-75 loop section; NEO-72/73/74 HUD paths use EconomyHudSection/Body/ hierarchy. |
| Full-stack epic decomposition | Matches — E3S5-04 client capstone completes NEO-72→75 chain; Godot manual QA authoritative (not Bruno-only). |
Blocking issues
(none)
Suggestions
-
Add Slice 5 capstone note toDone.epic_03_crafting_economy.md— Plan §4 called for a Slice 5 completion note when AC pass; alignment register and backlog are updated but the epic page still reads as open-ended. A one-line “Slice 5 client capstone (NEO-75) landed” under Slice 5 would close the loop. -
Refresh E3.M1 / E3.M3 module Status rows — E3.M2 was updated; E3.M1 and E3.M3 module pages still show pre–Slice 5 status while the alignment register already cites NEO-73/72/75. Mirror the E3.M2 pattern (client slice landed + capstone) for doc parity.Done. -
Align NEO-73 README HUD paths — Update the gather section toDone (NEO-74 craft HUD paths aligned in the same pass).UICanvas/EconomyHudSection/Body/InventoryLabeland…/SkillProgressionLabelso all three Slice 5 README sections reference the same hierarchy after the reparent.
Nits
- Nit:
test_toggle_collapses_bodydrives collapse via directbutton_pressed = falserather than simulating a user click onToggleButton— acceptable in headless GdUnit; behavior is covered. - Nit:
set_expandedand_on_toggle_toggledduplicate visibility logic — fine at this size; only matters if collapse rules grow (e.g. persist preference). Nit: Capstone AC for HUD collapse is checked in the implementation plan but not listed as a separate bullet in E3S5-04 backlog acceptance criteria — optional backlog tweak for traceability.Done — E3S5-04 AC bullet added.
Verification
# NEO-75 GdUnit suite (from client/)
godot --headless --path . -s res://addons/gdUnit4/bin/GdUnitCmdTool.gd --ignoreHeadlessMode \
-a res://test/prototype_economy_hud_section_test.gd
# Full client suite (CI parity)
godot --headless --path . -s res://addons/gdUnit4/bin/GdUnitCmdTool.gd --ignoreHeadlessMode
Manual (required before claiming capstone complete): follow docs/manual-qa/NEO-75.md — fresh server restart, four-node gather (11 scrap), two refine_scrap_standard, one make_field_stim_mk0, verify field_stim_mk0 ≥ 1, salvage/refine XP movement, and economy HUD collapse/expand with populated panel.