Skip to content

feat: add disc26-29 fixtures, fix false special detection, rewrite AGENTS.md#29

Merged
yxbh merged 3 commits intomainfrom
feat/disc26-29-fixtures
Mar 6, 2026
Merged

feat: add disc26-29 fixtures, fix false special detection, rewrite AGENTS.md#29
yxbh merged 3 commits intomainfrom
feat/disc26-29-fixtures

Conversation

@yxbh
Copy link
Copy Markdown
Owner

@yxbh yxbh commented Mar 6, 2026

Summary

Adds disc26–29 test fixtures, fixes false commentary/bumper special detection, and rewrites AGENTS.md to fix 12 factual errors identified by a 6-model review pass.

Background

The analysis pipeline was incorrectly classifying certain short playlists as commentary or bumper specials on discs with specific navigation structures. Adding four new OVA-style disc fixtures expanded test coverage and exposed the classification bug. Separately, AGENTS.md had drifted severely from the actual codebase state (version, test counts, architecture tree, data model documentation).

Changes

Disc fixtures and analysis fix

  • Fixtures: Added tests/fixtures/disc26/ through tests/fixtures/disc29/ with MPLS, CLPI, index.bdmv, MovieObject.bdmv, ICS, and bdmt_eng.xml metadata
  • Tests: Added test_disc26_scan.py, test_disc27_scan.py, test_disc28_scan.py, test_disc29_scan.py with per-disc integration tests
  • Matrix: Updated all 6 parametrizations in test_disc_matrix.py for the new fixtures
  • conftest.py: Added disc26–29 session-scoped fixtures
  • Analysis fix (bdpl/analyze/__init__.py): Eliminated false positive commentary and bumper special detection by tightening classification logic
  • disc8 test cleanup: Simplified redundant assertions in test_disc8_scan.py

AGENTS.md rewrite (6-model review: opus, sonnet, gpt-5.4, gpt-5.3-codex, gpt-5.2, gemini-3-pro)

  • Fixed version from v0.3+ to v0.1.0 (matches pyproject.toml)
  • Replaced stale test count (131) with dynamic command reference (actual: 452)
  • Updated architecture tree: added .github/, all 28 disc test files, fixture dirs
  • Corrected remux/ as placeholder (actual remux code in export/mkv_chapters.py)
  • Documented all 10 model.py dataclasses (previously only 4)
  • Fixed Python version recommendation (CI runs 3.14)
  • Documented conftest two-fixture pattern (discX_path + discX_analysis)
  • Added PowerShell env var syntax for cross-runtime parity
  • Added Agent Safety section for untrusted disc metadata
  • Fixed disc2 reference in fixture guidelines

Testing

  • ruff check . — clean
  • ruff format . — clean
  • pytest tests/ -v — 452 tests pass including the 4 new disc fixture suites, updated matrix, and all existing tests

Additional Notes

The AGENTS.md rewrite was validated by re-running all 6 models after the changes — all scored 9–10/10 across correctness, completeness, clarity, architecture, and cross-runtime parity (up from an average of 2.3/10 before the rewrite).

yxbh and others added 3 commits March 6, 2026 21:54
Batch-add 4 disc fixtures from MS IGLOO:
- disc26 (D1): 3 episodes, 15 specials — individual OVA playlists + commentary + extras
- disc27 (D2): 3 episodes, 15 specials — individual OVA playlists + commentary + extras
- disc28 (D3): 3 episodes, 13 specials — MS IGLOO 2, creditless + extras
- disc29 (SD): 1 episode (44min OVA), 3 digital archives

453 tests passing across 29 disc fixtures.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Two structural fixes to _detect_special_features():

1. All-episodes-page detection: extend chapter_selection_jt to include
   JumpTitle values from IG pages where ALL button targets resolve to
   episode playlists. Previously only single-JT pages were recognized,
   causing buttons on multi-episode selection pages (disc8, disc26-28)
   to be falsely flagged as commentary.

2. Navigation playlist filtering: enhance _nav_playlists_from_hints()
   to follow one level of JumpTitle indirection from first_playback MO.
   Disc intros (e.g. 00001.mpls on disc26-28) played via first_playback
   → JumpTitle → MO → PlayPl chain are now correctly identified as
   navigation playlists and excluded from title-hint supplementation.

Also adds obj_jump_titles to MO hints for JumpTitle chain resolution.

Affected disc counts:
- disc8:  3 → 1 specials (removed 2 false commentary)
- disc26: 15 → 12 specials (removed 2 false commentary + 1 bumper)
- disc27: 15 → 12 specials (removed 2 false commentary + 1 bumper)
- disc28: 13 → 10 specials (removed 2 false commentary + 1 bumper)

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Rewrite AGENTS.md to fix 12 factual errors identified by 6-model review.

Key changes:
- Fix version from v0.3+ to v0.1.0 (matches pyproject.toml)
- Replace stale test count (131) with dynamic command reference
- Update architecture tree: add .github/, all 28 disc test files, fixtures
- Correct remux/ as placeholder (actual code in export/mkv_chapters.py)
- Document all 10 model.py dataclasses (was 4)
- Fix Python version (CI runs 3.14)
- Document conftest two-fixture pattern (discX_path + discX_analysis)
- Add PowerShell env var syntax for cross-runtime parity
- Add Agent Safety section for untrusted disc metadata
- Fix disc2 reference in fixture guidelines

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
@yxbh yxbh changed the title feat: add disc26-29 fixtures and fix false special detection feat: add disc26-29 fixtures, fix false special detection, rewrite AGENTS.md Mar 6, 2026
@yxbh yxbh merged commit 2fd6e56 into main Mar 6, 2026
1 check passed
@yxbh yxbh deleted the feat/disc26-29-fixtures branch March 6, 2026 12:43
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant