Commit Graph

160 Commits (main)

Author SHA1 Message Date
VinPropane bcc9bf1c69 NEO-110: manual QA, README, plan reconciliation, and module docs. 2026-05-31 19:35:56 -04:00
VinPropane 8cda0d76da NEO-109: Document encounter telemetry hooks in README and module docs.
Reconcile plan, backlog, alignment register, and E5.M3 module snapshot.
2026-05-31 19:03:03 -04:00
VinPropane 07ebb9efb8 NEO-108: Add Bruno smokes and document encounter-progress GET.
Bruno folder covers inactive default and three-NPC defeat spine; README and
E5.M3 docs mark E5M3-08 landed with plan reconciliation.
2026-05-31 18:37:43 -04:00
VinPropane 555c3235ff NEO-107: Reconcile plan and module docs for event persistence.
Mark E5M3-09 acceptance criteria complete and cross-link E7.M2 consumer
hook anchor across backlog, alignment register, and module snapshots.
2026-05-31 18:26:13 -04:00
VinPropane 8306f92554 NEO-106: Document combat encounter wiring and update E5.M3 docs. 2026-05-31 18:08:29 -04:00
VinPropane 009fedf65e NEO-105: Document encounter completion grants and update E5.M3 docs. 2026-05-31 16:57:54 -04:00
VinPropane aaccbbbcaf NEO-104: Add encounter progress and completion stores.
In-memory IEncounterProgressStore and IEncounterCompletionStore with
EncounterProgressOperations for activation, defeat tracking, and
all-targets-defeated checks; unit tests and docs.
2026-05-31 16:18:56 -04:00
VinPropane 935e8d5f16 NEO-103: Document encounter-definitions route and mark E5M3-04 landed.
Update server README, module snapshot, alignment register, backlog,
and implementation plan reconciliation.
2026-05-31 15:40:12 -04:00
VinPropane 734876cde9 NEO-102: add encounter and reward-table definition registries + DI
Thin IEncounterDefinitionRegistry / IRewardTableDefinitionRegistry adapters
over NEO-101 catalogs with TryNormalizeKnown, DI registration, and 18 AAA tests.
2026-05-31 00:38:38 -04:00
VinPropane f921095fb0 NEO-101: Fail-fast encounter and reward-table catalog load at startup.
Adds Game/Encounters loaders mirroring validate_content.py E5M3 gates, DI registration with reward-tables-before-encounters load order, 19 AAA tests, and server README catalog sections.
2026-05-31 00:05:57 -04:00
VinPropane ee5e1a0caf NEO-100: Add encounter and reward-table catalogs with CI validation
Ship frozen prototype_combat_pocket spine (schemas, JSON catalogs, validate_content
gates) and update E5.M3, CT.M1, and alignment docs for E5M3-01 completion.
2026-05-30 19:35:02 -04:00
VinPropane db9ddb9fe0 chore: Decompose E5.M3 prototype backlog (NEO-100–NEO-111)
Epic 5 Slice 3 encounter + reward routing: backlog doc, module/epic/register
updates, and Linear issues for one combat-pocket clear with idempotent loot.
2026-05-30 18:38:18 -04:00
VinPropane b77b7f8fbb NEO-98: Address follow-up review doc findings.
Update E5.M2 module freeze, plan scope reconciliation, alignment
register, client README melee row, and strike-through follow-up review.
2026-05-30 18:02:55 -04:00
VinPropane ae8b01d5e3 NEO-98: add capstone manual QA and Slice 2 docs 2026-05-30 17:02:50 -04:00
VinPropane cfda0acd9a NEO-97: add Godot telegraph HUD and NPC runtime poll clients
Wire npc-runtime-snapshot and combat-health GET clients with combat-active
~1 Hz polling, interpolated telegraph countdown, and PlayerCombatHp/NpcState/
Telegraph HUD labels; includes GdUnit tests, manual QA, and doc updates.
2026-05-29 20:59:11 -04:00
VinPropane 5e1e37423f NEO-96: formalize NPC runtime telemetry hook sites
Replace NEO-93 placeholder comments with full telegraph_fired and
npc_state_transition E9.M1 anchors in NpcRuntimeOperations; document
in server README and E5.M2 module alignment.
2026-05-29 20:48:50 -04:00
VinPropane 5efa5a4ad8 NEO-95: address code review — alignment docs and API nits
Append NEO-95 landed to E5.M2 tracking; echo route playerId on
combat-health GET; AttackExecute comment; tighten elite test AAA.
2026-05-28 23:45:07 -04:00
VinPropane 798c601bc5 NEO-94: Address code review — alignment doc and AAA test layout.
Append NEO-94 landed to E5.M2 tracking row; move ReadFromJsonAsync to Assert in snapshot integration tests.
2026-05-28 23:23:19 -04:00
VinPropane ecffba9e4b NEO-93: Reconcile plan, backlog, and docs for runtime state machine.
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-05-27 22:02:41 -04:00
VinPropane 7682fac46a NEO-92: Reconcile docs, backlog, alignment, and code review.
Update E5M2-06 landed notes, alignment row, review follow-ups, and
exact-leash-boundary test documentation.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-05-27 21:45:57 -04:00
Don 047237e651 NEO-91: address code review follow-ups
Add legacy alpha targeting integration test, elite HP assertion, AAA fix,
Bruno docs refresh, and module/alignment doc updates. Strike through
resolved items in the NEO-91 review.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-05-26 23:46:39 -04:00
Don fa9acc85ac NEO-91: migrate combat targets to three NPC instances
Replace alpha/beta dummies with PrototypeNpcRegistry (melee/ranged/elite),
per-archetype max HP from INpcBehaviorDefinitionRegistry, and updated
server tests + Bruno smokes. Documents breaking client change for NEO-97.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-05-26 23:42:31 -04:00
VinPropane d3e765fb8f NEO-90: add GET /game/world/npc-behavior-definitions projection.
Expose read-only npcBehaviors envelope backed by INpcBehaviorDefinitionRegistry,
with integration tests, Bruno smoke, and doc reconciliation.
2026-05-25 17:49:01 -04:00
VinPropane e25b1406c7 NEO-89: Reconcile plan, backlog, and module docs for NPC registry. 2026-05-25 17:27:17 -04:00
VinPropane c56ad22f6f NEO-88: Reconcile plan, backlog, and module docs for server NPC load.
Mark E5M2-02 acceptance complete and update alignment register with
NEO-88 server catalog load landing notes.
2026-05-25 17:08:40 -04:00
VinPropane 6fd9694ff4 NEO-87: ship prototype NpcBehaviorDef catalog, schema, and CI gates.
Add three frozen archetype rows under content/npc-behaviors with E5M2
allowlist validation, leash>aggro guard, and module doc freeze updates.
2026-05-25 16:53:55 -04:00
VinPropane 7951a6c148 chore: Decompose E5.M2 prototype backlog and tracking docs.
Add E5M2-prototype-backlog (NEO-87–NEO-98), update module register and
alignment for Slice 2 NPC archetypes and telegraphs, and mark E5.M1 Ready.
2026-05-25 14:18:26 -04:00
VinPropane 8d4c048bbe NEO-86: Address code review test gaps and doc alignment.
Promote E5.M1 to Ready in alignment register, fix NEO-85 README link,
add schema-mismatch and deny-path GdUnit cases; strike review suggestions.
2026-05-25 14:01:54 -04:00
VinPropane b97cace625 NEO-86: Add capstone manual QA, README, and module doc reconciliation.
Documents end-to-end Godot combat loop, marks E5M1-12 landed, and updates
E5.M1 alignment rows for Epic 5 Slice 1 client capstone complete.
2026-05-25 13:59:31 -04:00
VinPropane faf3fe1139 NEO-85: Add manual QA, README, and module doc reconciliation.
Mark E5M1-11 acceptance complete in backlog and alignment register.
2026-05-25 13:15:59 -04:00
VinPropane 667a1a960a NEO-84: Add combat telemetry hook sites in CombatOperations.
Comment-only ability_used, enemy_defeat, and reserved encounter_start/player_death
markers; README and module docs updated. All 407 server tests pass.
2026-05-25 13:04:11 -04:00
VinPropane 71a6761f3c NEO-44: Grant gig XP on combat defeat via dedicated store.
Add IPlayerGigProgressionStore (in-memory + Postgres V007), GET
/gig-progression snapshot, and CombatDefeatGigXpGrant on cast accept
when targetDefeated — 25 XP to breach, outside E2.M2 skill XP.
Includes tests, Bruno, README, manual QA, and plan reconciliation.
2026-05-25 12:04:40 -04:00
VinPropane 52b1d4d206 NEO-83: Add GET /game/world/combat-targets HP snapshot.
Wire CombatTargetsWorldApi backed by ICombatEntityHealthStore, Bruno happy + cast defeat spine, integration tests, README and module tracking docs.
2026-05-25 11:20:13 -04:00
VinPropane 322798b2ef NEO-82: Address code review doc sync and test AAA follow-ups.
Update E5.M1 module doc, dependency register, and alignment table for
NEO-82 landed; Bruno defeat spine HP stepping; refactor four-pulse cast
test Arrange/Act/Assert; strike through resolved review items.
2026-05-25 10:45:31 -04:00
VinPropane c7aa75ebc5 NEO-81: Address code review doc sync and test follow-ups.
Update module tracking and E5M1 backlog for NEO-81 landed; tighten AAA
in four-pulse test, add guard/dash deny parity and dash smoke test.
2026-05-25 10:20:09 -04:00
VinPropane bfb0eb9306 NEO-80: Address code review follow-ups for health store. 2026-05-24 22:42:33 -04:00
VinPropane 44e0056b37 NEO-78: Add GET /game/world/ability-definitions HTTP projection.
Expose versioned read-only ability catalog via IAbilityDefinitionRegistry,
with integration tests, Bruno folder, and docs alignment.
2026-05-24 22:22:48 -04:00
VinPropane 0e5bbbff2e NEO-79: Address code review — docs alignment, null-safe TryNormalizeKnown.
Update E5.M1 module page, dependency register, and alignment table for
NEO-79 landed; reconcile plan Bruno note; strike through review findings.
2026-05-24 22:07:37 -04:00
VinPropane 7c2697e4cc NEO-77: Reconcile plan and module docs for E5M1-02 server load. 2026-05-24 21:40:58 -04:00
VinPropane 9b11a521d8 NEO-76: Add prototype ability catalog, schema, and CI gates.
Freeze four AbilityDef rows in content with validate_content E5M1
allowlist; document freeze in E5.M1, content README, and CT.M1.
2026-05-24 21:08:16 -04:00
VinPropane 510d71113b NEO-76: decompose E5.M1 prototype backlog (NEO-76–NEO-86, NEO-44).
Add full-stack Epic 5 Slice 1 story backlog with Linear issues, blockedBy
graph, and module/epic register cross-links.
2026-05-24 21:02:07 -04:00
VinPropane 977bcc3b27 NEO-75: capstone manual QA, README loop docs, alignment
Add zero-Bruno gather→refine→make checklist, end-to-end README section,
and mark Epic 3 Slice 5 client capstone complete in module docs.
2026-05-24 20:33:51 -04:00
VinPropane c16b610468 NEO-74: Implement client craft UI, recipe list, and tests.
Add recipe-definitions and craft HTTP clients, scrollable recipe panel with
Craft buttons, CraftFeedbackLabel, refine skill HUD row, GdUnit coverage,
manual QA, and plan/module doc reconciliation.
2026-05-24 19:56:38 -04:00
VinPropane 434226a069 NEO-73: address code review follow-ups.
Emit interaction_request_failed to clear stale gather pending flag;
add deny/HTTP failure tests; update alignment docs and review file.
2026-05-24 19:09:36 -04:00
VinPropane 8e44d81537 NEO-72: reconcile plan, E3S5 backlog, and module alignment docs.
Mark acceptance criteria complete and document landed client inventory HUD.
2026-05-24 18:41:24 -04:00
VinPropane 2d4751021b NEO-71: add craft telemetry hook comment sites and docs
Place item_crafted and craft_failed TODO(E9.M1) anchors in
CraftOperations.TryCraft; document in server README and mark E3.M2
Slice 3 server backlog complete.
2026-05-24 18:23:35 -04:00
VinPropane 46393b8ca5 NEO-70: Add craft POST HTTP, Bruno spine, and docs.
Wire POST /game/players/{id}/craft to CraftOperations with CraftResponse DTOs,
integration tests, gather→refine→make Bruno folder, and module/README updates.
2026-05-24 17:57:55 -04:00
VinPropane 308de6b50d NEO-69: Document craft engine and mark E3M2-05 acceptance complete.
Updates server README, module snapshot, alignment register, and backlog
after CraftOperations lands with full automated test coverage.
2026-05-24 17:17:01 -04:00
VinPropane 529cb616f5 NEO-68: Update docs and strike through code review findings.
Mark E3M2-04 landed, refresh alignment register and README, reconcile plan AC.
2026-05-24 17:08:18 -04:00
VinPropane 81b0e3fc4b NEO-67: add IRecipeDefinitionRegistry and DI adapter
Thin registry over RecipeDefinitionCatalog mirrors NEO-52/59: TryGetDefinition,
GetDefinitionsInIdOrder, AAA unit/host tests, README and alignment doc updates.
2026-05-24 16:57:17 -04:00
VinPropane f209636e7e NEO-66: Fail-fast server recipe catalog load at startup.
Add Game/Crafting loader, Slice 3 gate rules, DI registration, and AAA tests
mirroring item/resource-node catalog patterns; cross-check item and skill ids.
2026-05-24 16:41:48 -04:00
VinPropane b4f27b4a18 NEO-65: Document recipe catalog CI and mark E3M2-01 complete.
Update CT.M1 PR gate, E3.M2 freeze rules, alignment register, and backlog
checkboxes after prototype recipe validation lands.
2026-05-24 16:21:46 -04:00
VinPropane 2cd17e293a chore: Epic 3 Slice 5 client backlog and full-stack epic policy
Add E3S5-client-prototype-backlog (NEO-72–NEO-75), epic_03 Slice 5,
full-stack epics rule in decomposition README, and cross-links from
E3 module docs and prototype backlogs.
2026-05-24 16:16:51 -04:00
VinPropane 458e9b10e8 NEO-65: E3.M2 Slice 3 decomposition backlog and freeze docs
Add E3M2 prototype backlog (NEO-65–NEO-71), eight-recipe freeze table,
content/README Slice 3 CI note, and cross-links in alignment/decomposition docs.
2026-05-24 16:09:50 -04:00
VinPropane 847cda97a3 NEO-64: add gather telemetry hook sites and doc updates.
Comment-only resource_gathered and gather_node_depleted anchors in
GatherOperations.TryGather; README, module docs, manual QA, and E3.M1
backlog marked complete.
2026-05-24 15:58:29 -04:00
VinPropane 01dc48a50a NEO-63: add plan, manual QA, and doc updates.
README gather-via-interact section; E3.M1 anchor coords; backlog landed.
2026-05-24 15:44:15 -04:00
VinPropane f58ab4a2eb NEO-62: update docs for gather engine landing.
README, E3.M1 module doc, alignment table, backlog checkboxes.
2026-05-24 15:41:28 -04:00
VinPropane 6d2d3c040a NEO-61: add world node instance depletion store.
Split IResourceNodeInstanceStore + ResourceNodeInstanceOperations with
lazy init from catalog maxGathers, atomic decrement, node_depleted and
unknown_node reason codes, V006 Postgres migration, and parity tests.
2026-05-24 15:03:05 -04:00
VinPropane 97f8f31682 NEO-60: add GET /game/world/resource-node-definitions endpoint
Versioned read-only projection backed by IResourceNodeDefinitionRegistry
with nested yield DTOs, integration test, Bruno, manual QA, and docs.
2026-05-24 14:47:23 -04:00
VinPropane 01dec2b6c8 NEO-59: document registry in README, alignment, and backlog
Mark acceptance criteria complete in the implementation plan.
2026-05-24 14:26:23 -04:00
VinPropane 0384b63046 NEO-58: add fail-fast resource-node catalog load at startup
Loader, Slice 2 gates, DI registration, AAA tests, README and plan updates.
Cross-checks yield itemIds against ItemDefinitionCatalog loaded first.
2026-05-24 14:01:29 -04:00
VinPropane b68d74b0b8 NEO-57: add prototype resource node catalogs, schemas, and CI gates
Four frozen ResourceNodeDef rows and per-node yield tables under
content/resource-nodes/ with JSON Schema validation and Slice 2 gates
(four nodeDefIds, gatherLens coverage, scrap_metal_bulk yields only).
2026-05-24 13:49:47 -04:00
VinPropane dc5141ed03 NEO-56: add inventory telemetry hook comment sites
item_created on successful TryAddStack; inventory_transfer_denied on
all Denied paths. README, module docs, manual QA, plan ACs updated.
2026-05-24 13:32:21 -04:00
VinPropane 69327f50b4 NEO-55: player inventory GET/POST HTTP, Bruno, and docs
Versioned snapshot read and mutationKind add/remove POST backed by
PlayerInventoryOperations; AAA API tests; Bruno happy path + deny case.
2026-05-23 22:45:27 -04:00
VinPropane 01e391b03a NEO-54: player inventory store, stack/slot rules engine, and tests 2026-05-23 19:26:57 -04:00
VinPropane 08428c4da4 NEO-53: GET world item-definitions, Bruno, docs, and tests
Registry-backed read model at /game/world/item-definitions; Bruno
collection, manual QA checklist, README and module alignment updates.
2026-05-23 19:09:46 -04:00
VinPropane 792b38d8a9 NEO-52: add IItemDefinitionRegistry with DI and lookup tests
Thin adapter over ItemDefinitionCatalog mirroring NEO-35 skill registry;
registers singleton in AddItemDefinitionCatalog with TryGetDefinition,
GetDefinitionsInIdOrder, and AAA unit + host DI tests.
2026-05-23 18:11:33 -04:00
VinPropane d23f6dd8ab NEO-51: Document item catalog boot and mark plan complete.
README, alignment register, and acceptance checklist updated.
2026-05-17 21:56:12 -04:00
VinPropane bbc6b20fd3 NEO-50: Document frozen prototype item spine and update alignment. 2026-05-17 21:25:06 -04:00
VinPropane 39c54c3881 NEO-48: perk-state HTTP, Bruno, tests, and docs
GET/POST /game/players/{id}/perk-state with versioned JSON, engine-backed
branch selection, PerkStateApiTests, Bruno collection, README, and E2.M3 alignment.
2026-05-17 20:10:31 -04:00
VinPropane 38ef54c238 NEO-49: document perk_unlock hook sites in README, module, and manual QA 2026-05-17 19:10:14 -04:00
VinPropane 0a2a6fe45b NEO-47: address code review follow-ups for perk unlock engine
Retroactive path-auto unlock on branch pick, unlock rollback, CanWritePlayer
gate, expanded deny tests, gather-hook smoke, decomposition docs, review strikethroughs.
2026-05-17 18:45:11 -04:00
VinPropane 174c390aa4 NEO-46: fail-fast mastery catalog load at server startup.
Mirror validate_content.py gates in MasteryCatalogLoader, expose IMasteryCatalogRegistry, cross-check skillIds against the skill catalog, and enforce tierIndex 1..N per track.
2026-05-17 18:06:50 -04:00
VinPropane f5f04d8258 NEO-45: lock prototype salvage mastery catalog, schemas, and CI.
Add mastery JSON schema and salvage-only Slice 4 catalog with tier/branch
freeze; extend validate_content.py for skillId, perkId, and branch gates;
update E2.M3 decomposition, content README, and implementation plan.
2026-05-16 19:50:09 -04:00
VinPropane 0b16de6d6f NEO-43: close code review doc follow-ups (alignment + E7 status) 2026-05-15 20:36:08 -04:00
VinPropane caa400f43d NEO-42: address review — decomposition docs, plan AC, grant helper, test assert 2026-05-10 19:46:49 -04:00
VinPropane c1e77280e3 NEO-41: grant salvage activity XP on resource_node interact 2026-05-10 19:10:35 -04:00
VinPropane 35b666ed60 NEO-40: sync E2.M2 alignment doc; close review feedback 2026-05-10 18:54:17 -04:00
VinPropane 236040a5c2 NEO-39: add data-driven level curve with startup schema validation
Replace placeholder XP level math with content-backed thresholds validated in CI and at server boot, and update docs/manual QA/review artifacts to reflect NEO-39 delivery and follow-up fixes.
2026-05-06 23:10:06 -04:00
VinPropane b2999f3ed9 NEO-38: address review — docs alignment, Bruno deny, README levelUps trim 2026-05-06 22:26:23 -04:00
VinPropane 295eb34c68 NEO-37: reconcile decomposition docs + review feedback 2026-05-06 21:51:44 -04:00
VinPropane 4236d1ec00 chore: link E2.M2 backlog to Linear NEO-37–NEO-44 2026-05-04 20:57:01 -04:00
VinPropane a0c3599525 NEO-36: address code review (manual QA header, alignment, README, Bruno) 2026-05-04 20:44:52 -04:00
VinPropane 035e915934 NEO-35: address NEO-35 code review (AAA, docs, null id, cleanup) 2026-05-04 19:53:53 -04:00
VinPropane 9da5e7dbf5 NEO-34: address code review follow-ups (docs, appsettings, AAA)
Update E2.M1 alignment table for landed catalog load; add Content placeholders
to appsettings.json; align implementation plan tests/appsettings notes; expand
manual QA header to project standard; strike review suggestions; tighten host
catalog test Arrange/Act/Assert.
2026-05-02 19:50:02 -04:00
VinPropane 583201cc7c NEO-33: Freeze prototype SkillDef trio in CI and docs 2026-05-02 19:23:47 -04:00
VinPropane 753f622602 chore: Document E2.M1 module Linear backlog in decomposition 2026-04-30 22:40:11 -04:00
VinPropane 361a6800d2 NEO-32: cooldown snapshot API, on_cooldown deny, client HUD sync 2026-04-30 21:19:32 -04:00
VinPropane b5478782a8 NEO-30: cast funnel telemetry hook sites and docs 2026-04-30 20:59:47 -04:00
VinPropane 7de8e7ecfd NEO-28: cast target authority, HUD feedback, tests + docs 2026-04-27 21:03:04 -04:00
VinPropane cc1c6f711e NEO-31: request_cast bool for telemetry hook; document cast API in server README 2026-04-27 20:44:40 -04:00
VinPropane e88e59f3a6 NEO-31: hotbar cast resolver tests, doc alignment, review follow-up 2026-04-27 20:42:36 -04:00
VinPropane d25d7d0211 NEO-29: apply code review follow-ups
Set E1.M4 documentation status to In Progress across decomposition tracking docs and add lower-bound slot validation coverage. Mark the corresponding review suggestions and nit as resolved in the saved review file.
2026-04-25 22:44:58 -04:00
VinPropane 9c054fbcf2 NEO-27: add Slice 3 telemetry hook-site documentation
Map SelectionEvent to target_changed, reserve ability_cast_requested and ability_cast_denied hook locations, and align plan/manual QA/decomposition docs with TODO(E9.M1) telemetry follow-up.
2026-04-25 21:56:28 -04:00
VinPropane 1882476fd3 NEO-26: address code review — tracking docs, sequence tests, review strikethrough
Align E1.M3 rows with landed SelectionEvent (NEO-26) vs follow-on scope.
Assert selection_event sequence in GdUnit. Mark review suggestions/nits done.
2026-04-25 19:41:46 -04:00
VinPropane c17526e611 NEO-25: close code review follow-up (alignment, warning, tests) 2026-04-24 20:54:26 -04:00
VinPropane 435a32b3b3 NEO-24: fix movement-driven target refresh via authoritative_ack signal
Review 2026-04-21 caught that the hybrid soft-lock refresh path is
unreachable during normal WASD locomotion. `main.gd` was wiring
`TargetSelectionClient` to `PositionAuthorityClient.authoritative_position_received`,
which only fires on boot sync and move-rejection resync — successful
`move-stream` 200s are intentionally silent to avoid RTT rubber-banding.
So walking out of an alpha/beta radius never triggered the throttled
`GET /target` the HUD depends on, and validity stayed stuck at `ok`.

Add a separate `authoritative_ack(world)` signal on `PositionAuthorityClient`
emitted from both `BOOT_GET` 200 and successful `move-stream` 200, and
switch `TargetSelectionClient` (+ `main.gd`) to it. The snap signal keeps
its current semantics so rubber-band suppression is untouched; the ack
signal is a pure heartbeat that cooldown-throttled consumers can hook.

Also adds an integration test that wires both real clients together (per
the review's suggestion 1) so renames or mis-wires between the two
scripts fail loudly rather than silently skipping the end-to-end path.

- `client/scripts/position_authority_client.gd`: new `authoritative_ack`
  signal; extracted `_parse_world_from_response` helper to share JSON
  parse across `BOOT_GET` and `STREAM_POST`; emit ack from both.
- `client/scripts/target_selection_client.gd`: rename
  `on_authoritative_position_snap` to `on_authoritative_ack`; drop
  `apply_as_snap` gate (no longer meaningful).
- `client/scripts/main.gd`: connect the new signal.
- `client/test/position_authority_client_test.gd`: assert ack on boot
  200 and stream 200.
- `client/test/target_selection_client_test.gd`: rename tests for new
  handler.
- `client/test/target_refresh_on_locomotion_test.gd`: new integration
  suite wiring real authority + target clients.
- Plan Decision 3 + Tests row + Files-to-modify row updated.
- `docs/reviews/2026-04-21-NEO-24.md`: committed with blocking issue +
  suggestions struck through with `Done.` notes per
  planning-implementation-docs rule.
- `docs/decomposition/modules/documentation_and_implementation_alignment.md`:
  E1.M3 row now reflects NEO-24 landed.
- `client/README.md` + `docs/manual-qa/NEO-24.md`: refreshed signal names
  so the soft-lock refresh description matches the wiring.

Tests: 88/88 GdUnit headless passed locally.
2026-04-21 22:35:41 -04:00
VinPropane 17f87aa747 NEO-23: code review follow-up (E1.M3 docs, GET 404 test, radius bounds) 2026-04-17 21:14:43 -04:00
VinPropane 7f9fc8e429 chore: address E1.M3 docs review (Slice 3 anchor, Linear pointers) 2026-04-17 20:48:53 -04:00
VinPropane 7e17ff563b chore: point docs and rules at Linear NEO issue ids
Migrate Jira NEON-* references to Linear NEO-* and linear.app links in
docs, Cursor rules, READMEs, and traceability comments. Renamed
implementation plans and dated reviews to NEO filenames.

Branch is based on origin/main with this commit only (no NEON-29
gameplay chain). client/README follows main’s district/map copy;
player.gd matches main aside from NEO-14 debug trace prefixes.
2026-04-13 13:15:32 -04:00