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>
3.5 KiB
3.5 KiB
Журнал ревью — срез 9
Срез 9. Этапы A–B — мнения и разговоры
- Фазы: 41–43
- Проверен на:
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не меняет размер кружка приtalkCircleMax4 и жёстком clamp 4.
Что проверено
Каждый пункт «Тесты, без которых фаза не закрыта» у 41–43 имеет отдельный тест. Клиент рисует присланную opinionLabel, вкладка «Связи» не монтирует лог и ничего не POST-ит. Сокет 41–43 не бампили. dotnet test с --filter по затронутым классам зелёный.
Что дописано
OpinionStoreTests.SetZero_RemovesTheEntryOpinionStoreTests.Set_ClampsToMinusOneHundredAndOneHundredOpinionGeneratorTests.RosterJson_RoundTripsFamilyOpinionsOpinionGeneratorTests.SaveWithoutOpinionsField_SeedsFamilyOnLoadMorningOpinionsTests.DriftToZero_DropsTheRecordTalkCirclesTests.NodeFriendScore_PullsTowardFriends_NotEnemiesTalkCirclesTests.LunchNodeBlockedByEnemy_OnlyWhenAnotherSeatExistsTalkCirclesTests.GossipAndOutgoing_UseTraitFields_NotHardcodedIdListsTalkCirclesTests.GossipTrait_BiasesPickTopicTowardGossipTagTalkCirclesTests.AppearanceTopic_UsesDressAppropriatenessTalkCirclesTests.CommunicationGain_IsLessThanLessonSkillPerHourTalkCirclesTests.PickTopic_IsNotAlwaysTheLastNameAlphabeticallyTalkCircleTests.TalkCircleFinish_MarksTickPeopleChangedSoSaveWritesOpinionsWhisperTests.CaughtWhisper_BecomesDisciplineTalkWithTeacher
Что исправлено
- Конец кружка писал мнения в ростер, но
Tickне возвращалpeopleChanged— воркер не сохранялpeople.jsonдо утреннего дрейфа. PickTopicсравнивал бросок в шкале0…totalс курсором0…1, поэтому тема почти всегда была последней по имени, а сплетник не сдвигал выбор.
Открытое
- Черта «общительный» задаёт
talkCircleBonus: 1, ноMaxSizeклампит к 4 при ужеtalkCircleMax4 — поле мёртвое, пока верхний потолок не ниже 4. Менять ванильный размер кружка ревью не стало.