From 4693aa14c3e574248eba564b3f3413393d96fefd Mon Sep 17 00:00:00 2001 From: Timothy Date: Fri, 17 Jul 2026 16:10:36 +0200 Subject: [PATCH] =?UTF-8?q?docs(70):=20fix=20the=20last=20stale=20claim=20?= =?UTF-8?q?=E2=80=94=20found=20by=20reading=20every=20weight=20comment,=20?= =?UTF-8?q?not=20by=20grepping=20verbs?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Round-4 review returned BLOCKED, and its diagnosis is the sharpest of the four: my "re-derived by grep" claim was false. The reviewer's grep included `dropped`; mine had `drop(ped)? every` and missed the bare word — so MultiCollectionConfiguration.cs:38 ("a 0-weight source is dropped by the enumerator") never matched. That is the same failure as the previous round, one level up: I replaced a list of SITES with a list of VERBS I guessed and called it a class. Fourth consecutive incomplete completeness claim, and again the code twin of a doc line I had already corrected. The site is now accurate. The DB default of 1 is still right, but for the reason decisions.md already gives: a 0 backfill means nothing on a share-of-airtime scale. The enumerator clamps such a row to the floor, so it rotates rather than vanishing -- the drop it cited cannot happen since EffectiveWeight replaced the Weight > 0 filter, and A_Non_Positive_Weight_Does_Not_Delete_The_Source pins that. Method changed, not just the text: instead of guessing which verb a stale claim might use, enumerate EVERY comment/doc line mentioning weight across the diff and read them. 41 lines, one false. Both automated passes then produced false positives on different subjects -- a line-based check flagged EffectiveWeight's "must not drop..." (the framing verb wraps to the previous line), and a sentence-aware one flagged ReplacePlaylistItemsHandler's "the item is dropped from the playlist" (true, and about unknown ORDERS, not weights: PlaylistEnumerator really has 0 default arms and gates on `enumerator is not null` at :210). Both were read and cleared rather than counted, which is the only reason this message can say what it says. Verification: Build 0 errors; Core.Tests 566; ErsatzTV.Tests 1673; 0 failed; no BOM on any touched non-generated .cs; decisions-guard exit 0. Refs #70 Co-Authored-By: Claude Opus 4.8 (1M context) --- .../Collection/MultiCollectionConfiguration.cs | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/ErsatzTV.Infrastructure/Data/Configurations/Collection/MultiCollectionConfiguration.cs b/ErsatzTV.Infrastructure/Data/Configurations/Collection/MultiCollectionConfiguration.cs index 888fa1dd7..264fdccdb 100644 --- a/ErsatzTV.Infrastructure/Data/Configurations/Collection/MultiCollectionConfiguration.cs +++ b/ErsatzTV.Infrastructure/Data/Configurations/Collection/MultiCollectionConfiguration.cs @@ -34,8 +34,10 @@ public class MultiCollectionConfiguration : IEntityTypeConfiguration new { mci.MultiCollectionId, mci.CollectionId }); - // default 1 = fair share (#70). Must be a DB default too: existing rows would - // otherwise migrate to 0, and a 0-weight source is dropped by the enumerator. + // default 1 = fair share (#70). Must be a DB default too, or existing rows migrate to 0 -- + // a value that means nothing on a share-of-airtime scale. The enumerator clamps such a + // row to the floor, so it rotates rather than vanishing; the backfill should still be + // right at the source. j.Property(mci => mci.Weight).HasDefaultValue(1); });