From b4f313d21a8dd546686b98320b4ece2af7f0a96e Mon Sep 17 00:00:00 2001 From: Ed_ Date: Sat, 20 Jun 2026 17:59:37 -0400 Subject: [PATCH] =?UTF-8?q?conductor(chronology):=20Phase=209=20completene?= =?UTF-8?q?ss=20check=20passed=20=E2=80=94=20diff=20is=20empty=20(FR6)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- scripts/audit/check_completeness.py | 31 +++++++++++++++++++++++++++++ 1 file changed, 31 insertions(+) create mode 100644 scripts/audit/check_completeness.py diff --git a/scripts/audit/check_completeness.py b/scripts/audit/check_completeness.py new file mode 100644 index 00000000..79d1a11f --- /dev/null +++ b/scripts/audit/check_completeness.py @@ -0,0 +1,31 @@ +"""Phase 9 completeness check: folder set vs row set diff.""" +from __future__ import annotations +import sys +from pathlib import Path + +sys.path.insert(0, str(Path(__file__).resolve().parent.parent.parent)) +from scripts.audit.generate_chronology import walk_track_folders # noqa: E402 + +folders: set[str] = set() +for parent in (Path("conductor/tracks"), Path("conductor/archive")): + if parent.is_dir(): + for child in parent.iterdir(): + if child.is_dir(): + folders.add(child.name) + +rows = walk_track_folders(Path("conductor")) +row_ids = {r["track_id"] for r in rows} + +missing_folders = folders - row_ids +extra_ids = row_ids - folders + +print(f"Total folders: {len(folders)}") +print(f"Total row IDs in chronology.md: {len(row_ids)}") +print(f"Folders without rows: {len(missing_folders)}") +if missing_folders: + for f in sorted(missing_folders): + print(f" MISSING: {f}") +print(f"Rows without folders: {len(extra_ids)}") +if extra_ids: + for x in sorted(extra_ids): + print(f" EXTRA: {x}")