Skip to content

Commit 91025fe

Browse files
committed
docs: record 3b-ii completion in implementation plan
Plan doc updated for 3b-ii ship. The feature catalog (docs/product/, gitignored since 81275ac) was updated locally to mark the six team-intel commands Done and !afk deferred, but stays untracked per that decision.
1 parent 8a825a7 commit 91025fe

1 file changed

Lines changed: 16 additions & 0 deletions

File tree

docs/superpowers/plans/2026-06-17-rustplusbot-3b-ii-team-intel.md

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,13 +17,15 @@
1717
## File Structure
1818

1919
**Connections (the seam):**
20+
2021
- Create `src/RustPlusBot.Features.Connections/Listening/TeamInfoSnapshot.cs` — boundary DTOs `TeamInfoSnapshot` + `TeamMemberSnapshot`.
2122
- Modify `src/RustPlusBot.Features.Connections/Listening/IRustServerQuery.cs` — add `GetTeamInfoAsync` (public).
2223
- Modify `src/RustPlusBot.Features.Connections/Listening/IRustServerConnection.cs` — add `GetTeamInfoAsync` (internal).
2324
- Modify `src/RustPlusBot.Features.Connections/Listening/RustPlusSocketSource.cs` — implement on both `RejectedConnection` and `RustPlusServerConnection`.
2425
- Modify `src/RustPlusBot.Features.Connections/Supervisor/ConnectionSupervisor.cs` — implement `IRustServerQuery.GetTeamInfoAsync`.
2526

2627
**Commands (helpers + handlers):**
28+
2729
- Create `src/RustPlusBot.Features.Commands/Formatting/Distance.cs` — pure distance helper.
2830
- Create `src/RustPlusBot.Features.Commands/Formatting/TeamMemberFilter.cs` — shared partial name match.
2931
- Create `src/RustPlusBot.Features.Commands/Handlers/OnlineCommandHandler.cs`
@@ -36,6 +38,7 @@
3638
- Modify `src/RustPlusBot.Features.Commands/CommandServiceCollectionExtensions.cs` — register the six handlers.
3739

3840
**Tests / fakes:**
41+
3942
- Modify `tests/RustPlusBot.Features.Connections.Tests/Fakes/FakeRustSocketSource.cs` — add `TeamResult` + `GetTeamInfoAsync`.
4043
- Modify `tests/RustPlusBot.Features.Connections.Tests/ServerQueryTests.cs` — supervisor `GetTeamInfoAsync` coverage.
4144
- Create `tests/RustPlusBot.Features.Commands.Tests/Formatting/DistanceTests.cs`
@@ -47,6 +50,7 @@
4750
## Task 1: Boundary DTOs (`TeamInfoSnapshot`, `TeamMemberSnapshot`)
4851

4952
**Files:**
53+
5054
- Create: `src/RustPlusBot.Features.Connections/Listening/TeamInfoSnapshot.cs`
5155

5256
- [ ] **Step 1: Create the DTO file**
@@ -96,6 +100,7 @@ git commit -m "feat(connections): add TeamInfoSnapshot/TeamMemberSnapshot DTOs"
96100
## Task 2: Extend the seam interfaces
97101

98102
**Files:**
103+
99104
- Modify: `src/RustPlusBot.Features.Connections/Listening/IRustServerQuery.cs`
100105
- Modify: `src/RustPlusBot.Features.Connections/Listening/IRustServerConnection.cs`
101106

@@ -141,6 +146,7 @@ git commit -m "feat(connections): add GetTeamInfoAsync to query/connection seams
141146
## Task 3: Implement `GetTeamInfoAsync` on `RustPlusSocketSource` (untested shim)
142147

143148
**Files:**
149+
144150
- Modify: `src/RustPlusBot.Features.Connections/Listening/RustPlusSocketSource.cs`
145151

146152
This is the integration shim — by design it has no unit tests. Mapping verified against the real 2.0.0-beta.1 DLL: `RustPlus.GetTeamInfoAsync(CancellationToken)` returns `Task<Response<TeamInfo?>>`; `TeamInfo.Members` is `IEnumerable<MemberInfo>?`; each `MemberInfo` has `SteamId`/`Name?`/`X`/`Y`/`IsOnline`/`IsAlive`/`LastSpawnTime` (DateTime, UTC)/`LastDeathTime` (DateTime, UTC).
@@ -221,6 +227,7 @@ git commit -m "feat(connections): map GetTeamInfoAsync in RustPlusSocketSource s
221227
## Task 4: Implement `GetTeamInfoAsync` on `ConnectionSupervisor`
222228

223229
**Files:**
230+
224231
- Modify: `src/RustPlusBot.Features.Connections/Supervisor/ConnectionSupervisor.cs`
225232
- Test: `tests/RustPlusBot.Features.Connections.Tests/Fakes/FakeRustSocketSource.cs`
226233
- Test: `tests/RustPlusBot.Features.Connections.Tests/ServerQueryTests.cs`
@@ -326,6 +333,7 @@ git commit -m "feat(connections): implement supervisor GetTeamInfoAsync over liv
326333
## Task 5: `Distance` helper
327334

328335
**Files:**
336+
329337
- Create: `src/RustPlusBot.Features.Commands/Formatting/Distance.cs`
330338
- Test: `tests/RustPlusBot.Features.Commands.Tests/Formatting/DistanceTests.cs`
331339

@@ -404,6 +412,7 @@ git commit -m "feat(commands): add Distance helper for !prox"
404412
## Task 6: `TeamMemberFilter` helper (shared partial name match)
405413

406414
**Files:**
415+
407416
- Create: `src/RustPlusBot.Features.Commands/Formatting/TeamMemberFilter.cs`
408417
- Test: `tests/RustPlusBot.Features.Commands.Tests/Formatting/TeamMemberFilterTests.cs`
409418

@@ -510,6 +519,7 @@ git commit -m "feat(commands): add TeamMemberFilter for partial name matching"
510519
## Task 7: Localization keys
511520

512521
**Files:**
522+
513523
- Modify: `src/RustPlusBot.Features.Commands/Localization/CommandLocalizationCatalog.cs`
514524

515525
All six handlers depend on these keys. Add them now so handler tests can assert exact strings.
@@ -573,6 +583,7 @@ git commit -m "feat(commands): add EN/FR strings for team-intel commands"
573583
## Task 8: `!online` and `!offline` handlers
574584

575585
**Files:**
586+
576587
- Create: `src/RustPlusBot.Features.Commands/Handlers/OnlineCommandHandler.cs`
577588
- Create: `src/RustPlusBot.Features.Commands/Handlers/OfflineCommandHandler.cs`
578589
- Test: `tests/RustPlusBot.Features.Commands.Tests/Handlers/TeamIntelHandlersTests.cs`
@@ -766,6 +777,7 @@ git commit -m "feat(commands): add !online and !offline handlers"
766777
## Task 9: `!team` and `!steamid` handlers
767778

768779
**Files:**
780+
769781
- Create: `src/RustPlusBot.Features.Commands/Handlers/TeamCommandHandler.cs`
770782
- Create: `src/RustPlusBot.Features.Commands/Handlers/SteamIdCommandHandler.cs`
771783
- Test: `tests/RustPlusBot.Features.Commands.Tests/Handlers/TeamIntelHandlersTests.cs`
@@ -946,6 +958,7 @@ git commit -m "feat(commands): add !team and !steamid handlers"
946958
## Task 10: `!alive` handler
947959

948960
**Files:**
961+
949962
- Create: `src/RustPlusBot.Features.Commands/Handlers/AliveCommandHandler.cs`
950963
- Test: `tests/RustPlusBot.Features.Commands.Tests/Handlers/TeamIntelHandlersTests.cs`
951964

@@ -1064,6 +1077,7 @@ git commit -m "feat(commands): add !alive handler with per-member survival times
10641077
## Task 11: `!prox` handler
10651078

10661079
**Files:**
1080+
10671081
- Create: `src/RustPlusBot.Features.Commands/Handlers/ProxCommandHandler.cs`
10681082
- Test: `tests/RustPlusBot.Features.Commands.Tests/Handlers/TeamIntelHandlersTests.cs`
10691083

@@ -1206,6 +1220,7 @@ git commit -m "feat(commands): add !prox handler with caller-relative distances"
12061220
## Task 12: Register the six handlers
12071221

12081222
**Files:**
1223+
12091224
- Modify: `src/RustPlusBot.Features.Commands/CommandServiceCollectionExtensions.cs`
12101225
- Test: `tests/RustPlusBot.Features.Commands.Tests/CommandRegistrationTests.cs` (verify, may already assert resolvability)
12111226

@@ -1306,6 +1321,7 @@ git commit -m "style: apply jb ReformatAndReorder for team-intel changes"
13061321
## Task 14: Update the feature catalog
13071322

13081323
**Files:**
1324+
13091325
- Modify: `docs/product/feature-catalog.md` (TRACKED — normal `git add`, no `-f`).
13101326

13111327
- [ ] **Step 1: Flip the shipped rows to Done**

0 commit comments

Comments
 (0)