Files
h-school/docs/phases/09-social/reviewed.md
T
Leonid PershinandCursor 26666ba426 Record slice 9 A-B review.
Phases 41-43 checked on b38d0bb. 44 and 46 were in flight; Outgoing.talkCircleBonus is a no-op at max 4.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-08-20 13:35:16 +03:00

40 lines
3.5 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# Журнал ревью — срез 9
## Срез 9. Этапы A–B — мнения и разговоры
- **Фазы:** 4143
- **Проверен на:** `b38d0bb`, 2026-08-20
- **Пути:** `src/HSchool.People/OpinionStore.cs`, `src/HSchool.People/OpinionGenerator.cs`, `src/HSchool.People/OpinionLabels.cs`, `src/HSchool.Ai/TalkCircles.cs`, `src/HSchool.Simulation/MorningOpinions.cs`, `src/HSchool.Simulation/TalkCircleSystem.cs`, `src/HSchool.Simulation/School.cs`, `src/HSchool.Server/Game/PersonCardReader.cs`, `src/HSchool.Server/mods/core/defs/topics/`, `src/HSchool.Server/mods/core/defs/traits/`, `src/HSchool.Client/src/ui/personCard.ts`, `docs/protocol.md`, `tests/HSchool.People.Tests`, `tests/HSchool.Ai.Tests`, `tests/HSchool.Simulation.Tests`
- **Итог:** обещания 41–43 на месте; дописано 14 тестов; исправлено 2 расхождения (сейв мнений после разговора; `PickTopic` почти всегда брал последнюю тему). 44 и 46 — **в работе на момент проверки** (44 🔄, 46 ⬜). 45 и 47 в этот проход не входили.
- **Открыто:** `Outgoing.talkCircleBonus` не меняет размер кружка при `talkCircleMax` 4 и жёстком clamp 4.
### Что проверено
Каждый пункт «Тесты, без которых фаза не закрыта» у 41–43 имеет отдельный тест. Клиент рисует присланную `opinionLabel`, вкладка «Связи» не монтирует лог и ничего не POST-ит. Сокет 41–43 не бампили. `dotnet test` с `--filter` по затронутым классам зелёный.
### Что дописано
- `OpinionStoreTests.SetZero_RemovesTheEntry`
- `OpinionStoreTests.Set_ClampsToMinusOneHundredAndOneHundred`
- `OpinionGeneratorTests.RosterJson_RoundTripsFamilyOpinions`
- `OpinionGeneratorTests.SaveWithoutOpinionsField_SeedsFamilyOnLoad`
- `MorningOpinionsTests.DriftToZero_DropsTheRecord`
- `TalkCirclesTests.NodeFriendScore_PullsTowardFriends_NotEnemies`
- `TalkCirclesTests.LunchNodeBlockedByEnemy_OnlyWhenAnotherSeatExists`
- `TalkCirclesTests.GossipAndOutgoing_UseTraitFields_NotHardcodedIdLists`
- `TalkCirclesTests.GossipTrait_BiasesPickTopicTowardGossipTag`
- `TalkCirclesTests.AppearanceTopic_UsesDressAppropriateness`
- `TalkCirclesTests.CommunicationGain_IsLessThanLessonSkillPerHour`
- `TalkCirclesTests.PickTopic_IsNotAlwaysTheLastNameAlphabetically`
- `TalkCircleTests.TalkCircleFinish_MarksTickPeopleChangedSoSaveWritesOpinions`
- `WhisperTests.CaughtWhisper_BecomesDisciplineTalkWithTeacher`
### Что исправлено
- Конец кружка писал мнения в ростер, но `Tick` не возвращал `peopleChanged` — воркер не сохранял `people.json` до утреннего дрейфа.
- `PickTopic` сравнивал бросок в шкале `0…total` с курсором `0…1`, поэтому тема почти всегда была последней по имени, а сплетник не сдвигал выбор.
### Открытое
- Черта «общительный» задаёт `talkCircleBonus: 1`, но `MaxSize` клампит к 4 при уже `talkCircleMax` 4 — поле мёртвое, пока верхний потолок не ниже 4. Менять ванильный размер кружка ревью не стало.