# Changelog

## Score

- CAI 32 → 29 (-2.8)
- Rubric changed (rubric-2026.10.1 → rubric-2026.10.5) — scores are not directly comparable.

## Lenses

- Code Health 64 → 59 (-4.7)
- Architecture 91 → 91 (+0.8)
- Maturity 20 → 20 (+0.0)
- Readiness 14 → 10 (-4.6)
- Security 85 → 85 (+0.0)

## Resolved (5)

- Duplicated block (8 lines × 6) (Seed/Headers/clsMPEG.vb)
- Off the main sequence: Seed
- Two methods appear to retrieve the current time. One is in the `IffdshowDecVideo` interface (`get_time_on_ffdshow`) and the other in the main `FFDShowAPI` class (`getCurrentTime`). The naming convention differs significantly (snake_case vs camelCase, 'get_time_on_ffdshow' vs 'getCurrentTime'), suggesting inconsistent naming conventions for the same concept across different parts of the API.
- Two methods performing the same action ('lock') have different names: `lock_` and `compat_lock`. The trailing underscore in `lock_` is unusual and likely a workaround for a reserved keyword or naming conflict, but it creates inconsistency with the standard `lock` or `compat_lock` naming.
- Two methods with nearly identical names and signatures (both taking an object parameter and returning int) appear to represent the same concept or a very close variant (likely one returning a pointer to the presets and the other the presets themselves, or one is a wrapper). The distinction between 'getPresets' and 'getPresetsPtr' is subtle and could be confusing; typically, if one returns a pointer, the naming should be more explicit about the return type or the semantic difference (e.g., 'GetPresets' vs 'GetPresetsHandle').

## New (7)

- Duplicated block (7 lines × 6) (Seed/Headers/clsMPEG.vb)
- EmptyCatchBlock (FFAPI/FFDShowAPI.cs)
- EmptyCatchBlock (FFAPI/FFDShowAPI.cs)
- Two methods performing the same action ('lock') have different names: one uses a trailing underscore ('lock_') and the other uses a 'compat_' prefix. The underscore is often a workaround for reserved keywords or conflicts, while 'compat_' suggests a compatibility wrapper. This inconsistency obscures the relationship between the base interface and the compatibility layer.
- Two methods that appear to retrieve the current playback time use different naming conventions: one uses snake_case with a specific context ('get_time_on_ffdshow'), while the other uses PascalCase with a generic context ('getCurrentTime'). This inconsistency makes it unclear if they return the same value or different time sources.
- Two methods with identical names except for a numeric suffix (2 vs 3) suggest an iterative refactoring or versioning of the same underlying logic (likely finding auto subtitle filenames). This indicates a lack of semantic distinction in naming.
- Two methods with nearly identical signatures (accepting an object parameter) and similar names ('getPresets' vs 'getPresetsPtr') likely return related but distinct data structures (e.g., a managed object vs a pointer to unmanaged memory). While the suffix 'Ptr' clarifies the return type, the base name 'getPresets' is ambiguous when paired with 'getPresetsPtr'.
