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

3.5 KiB
Raw Blame History

Журнал ревью — срез 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. Менять ванильный размер кружка ревью не стало.