Files
claudetools/clients/valleywide/app-modernization/source-analysis/find_newer_vbp.py
Mike Swanson 0f0f664e8e feat(valleywide): add drive 2 findings - 000_ASource + analyzer outputs
Drive 2 (label "Backup", 12 TB, 6.77 TB used) — second of N VWP
backup drives. Scanned via WizTree, analyzed with analyze_wiztree.py.

NEW source content:
- 000_ASource/ — Darv's active work-in-progress folder. Contains
  TEST_VWP.vbp (2021-08-16, only .vbp newer than the 2020-06-09 baseline),
  four frmLotInfo*.frm variants (2020-10 to 2021-08), and an
  MSSCCPRJ.SCC file confirming Darv used Visual SourceSafe.
- The accompanying Vwp.mdb (2022-10-19, 764 MB) stays on local disk
  per .gitignore — newest database snapshot we have.

Analysis CSVs:
- source-analysis/drive2-2026-05-16/ — per-category + per-keyword
  breakdown of drive 2's 3.95M files (vs drive 1's 1.87M). Categories
  largely match drive 1 but with ~2x volume.

Net findings vs drive 1:
- Confirmed 4-year gap: only 4 .vbp files newer than 2020-06-09 on
  drive 2, all the same TEST_VWP.vbp scaffold. Main ORDERS_C.vbp source
  remains 2020-06-09. Darv stopped active VB6 dev around mid-2020.
- 43 GB Win7 Backup-and-Restore set in D:\Archive\Darv-Win7-PC\ (2023)
  not copied — deferred to later drives, ZIPs extractable on demand.
- Master Darv folder is bit-for-bit duplicate of drive 1's master (135 GB,
  same file/folder counts). Skipped.

New helper scripts:
- find_newer_vbp.py — list .vbp files newer than a date, filter SDK noise
- drive2_inspect.py / drive2_priorities.py — drive-specific triage

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-16 17:42:19 -07:00

37 lines
1.2 KiB
Python

"""List .vbp files in a given analyzer-output dir that are newer than a cutoff date,
filtering out Crystal Reports SDK samples and common third-party library bundles.
Usage: py find_newer_vbp.py <analyzer-output-dir> [cutoff_date]
cutoff_date format: YYYY/MM/DD HH:MM:SS (default 2020/06/09 16:13:00)
"""
import csv, os, sys
OUT_DIR = sys.argv[1]
CUTOFF = sys.argv[2] if len(sys.argv) > 2 else '2020/06/09 16:13:00'
NOISE_SUBSTRINGS = (
'seagat', 'crw\\samples', 'samples\\code\\vb',
'\\tools\\', '\\plug-ins\\', '\\plugins\\',
'\\program files\\microsoft visual studio\\',
'\\program files (x86)\\microsoft visual studio\\',
)
newer = []
csv_path = os.path.join(OUT_DIR, 'cat_vb6-project.csv')
with open(csv_path, encoding='utf-8') as f:
r = csv.reader(f); next(r)
for size, sizemb, mod, path in r:
if mod <= CUTOFF:
continue
pl = path.lower()
if any(s in pl for s in NOISE_SUBSTRINGS):
continue
newer.append((mod, int(size), path))
newer.sort(reverse=True)
print(f'Found {len(newer)} .vbp files newer than {CUTOFF} (filtered)\n')
for mod, size, path in newer[:50]:
print(f'{mod} {size:>6}b {path}')
if len(newer) > 50:
print(f'\n... and {len(newer)-50} more')