chore(comments): drop epic, sprint and review-round ids from the code

The code cited its plan instead of saying why: `E28 review J4`, `(R6 S3b)`, `S1 justified…`,
`deep-review round 5`. That plan lives in the private ops repo, so for every reader of this one the
citation was noise, and a sentence whose subject was the plan step ("round 2 showed…") hid its
lesson behind an id. Each one is gone and the "why" kept: a bare citation is deleted, a sentence
carrying a lesson is reworded around it ("a later attempt showed…").

Measured (`scripts/audit_metrics.py`, product code): 652 lines in 270 files carried an epic code by
the definition the next commit holds (507 / 241 by the old, two-digit-only one) -> 0. Across all
code, tests, scripts and configs: ~1100 epic-code lines plus ~320 sprint/round ids.

Behaviour unchanged, checked mechanically: every changed .py file has the same AST once docstrings
are blanked; css/sh/toml/yml/json files are identical once comments are stripped; the only
non-comment changes in TS/JS are test titles, one description string in a contract table, and five
ESLint messages, whose text is all the gates snapshot diff holds. Not touched: Markdown (docs and
the changelog keep their history), Alembic migrations, TV episode notation (`S2 · E5`), DESIGN.md
ids (`C1`, `B4`, `S3h`), tracker ids (`SEC-16`, `DX-17`).

One stale claim fixed on the way: test_hls_reaper's docstring said the player checkpoints "every
10 s whether or not it is playing", which plex/stream.py calls wrong; it now says what the code does.
This commit is contained in:
2026-10-05 00:19:39 +02:00
parent c73d8be094
commit 4aaaaa7860
669 changed files with 1831 additions and 1904 deletions
+8 -9
View File
@@ -38,7 +38,7 @@ import { vocab } from "../lib/vocab";
// a card's "i" button (variant="page", with a big Play/Resume + watch controls), and a lean overlay
// over the running player (variant="overlay", opened with "i"). Two GUI elements are user-toggleable
// personal preferences, persisted in users.preferences: the faint art backdrop and the cast row.
// The TMDB-enriched pieces (multi-source ratings row, facts, keyword chips, full crew — E5 S5) render
// The TMDB-enriched pieces (multi-source ratings row, facts, keyword chips, full crew) render
// on the page variant only; the overlay stays lean.
// One rating chip's number: a filter button when this is the score the backend's ratingMin column
@@ -74,7 +74,7 @@ function Score({
);
}
// Multi-source ratings cluster (E5 S5): IMDb (links out) · TMDb (with vote count) · Plex audience —
// Multi-source ratings cluster: IMDb (links out) · TMDb (with vote count) · Plex audience —
// whichever are present. The "primary" score (IMDb, else audience) mirrors the backend rating column
// (coalesce(imdb, audience)), so only it carries the ratingMin filter; the others are informational.
function RatingsRow({
@@ -181,8 +181,7 @@ type Props = {
// When provided, a cast member's photo/name opens their filmography page instead of filtering.
onOpenPerson?: (name: string) => void;
// Play a sibling title from a collection strip: the page opens its player, the overlay plays it
// in the running one. Required, so no variant draws a collection card whose Play does nothing
// (E28 review D1).
// in the running one. Required, so no variant draws a collection card whose Play does nothing.
onPlayItem: (id: string, fromStart?: boolean) => void;
// The item's library key — enables the admin "Manage collections" editor (page variant, movies).
library?: string;
@@ -229,7 +228,7 @@ export default function PlexInfo({
const [playlistOpen, setPlaylistOpen] = useState(false);
// Faint art backdrop, HTPC-style (page variant only) — cross-dissolves through the item's own art,
// its TMDB backdrops (E5 S2), and its collection siblings' art (E5 S8). Cleared in the overlay
// its TMDB backdrops, and its collection siblings' art. Cleared in the overlay
// variant / when disabled / on unmount.
const backdropPool = [
detail.art,
@@ -251,7 +250,7 @@ export default function PlexInfo({
onStateChange?.();
};
// A collection sibling is a Plex card like any other (E28 review D2): the related strip's menu, its
// A collection sibling is a Plex card like any other: the related strip's menu, its
// watched toggle and its playlist add. The flip lands on this item's cached detail, whose strip it
// is; the resync corrects it to the truth either way.
const colMenu = useContextMenu<PlexCard>();
@@ -416,7 +415,7 @@ export default function PlexInfo({
<PlaybackChip detail={detail} overlay={overlay} />
</div>
{/* Multi-source ratings row (E5 S5): IMDb / TMDb / audience, whichever are present. */}
{/* Multi-source ratings row: IMDb / TMDb / audience, whichever are present. */}
<div className="mt-2">
<RatingsRow
imdbRating={detail.imdb_rating}
@@ -539,7 +538,7 @@ export default function PlexInfo({
{/* Below the hero: the collection strips first (the owner's most used), then the cast, each
per-user toggleable, stacked so a hidden one leaves no hole. The facts / keywords / crew that
sat beside them (E28 S3h) moved up into the hero's second column (E31). The overlay (over
sat beside them moved up into the hero's second column. The overlay (over
the running player) is the same stack, lean. */}
{(() => {
const collections = (detail.collections ?? []).filter(
@@ -568,7 +567,7 @@ export default function PlexInfo({
</div>
<Carousel ariaLabel={col.title} gap="gap-3" keyboardNav>
{col.items.map((m, i) => (
// The one media card, as on every other strip (E28 S3h). A grid cell, so the
// The one media card, as on every other strip. A grid cell, so the
// card fills the slot the carousel stretches to its tallest card.
<div key={m.id} className="grid w-37.5 shrink-0 grid-cols-1">
<PlexPosterCard