Skip to content

fix(vintage): drain unparseable snapshots; add wrapper preflight - #80

Merged
mspinola merged 1 commit into
mainfrom
claude/vintage-preflight
Jul 31, 2026
Merged

mspinola merged 1 commit into
mainfrom
claude/vintage-preflight

Conversation

@mspinola

Copy link
Copy Markdown
Owner

Both issues surfaced by the first real production capture, which retained 4 snapshots but ingested only the Legacy annual zip.

Drain bug (the substantive one)

disagg / TFF / weekly-static have no canonicaliser yet, so ingest continued past them and left them parse_status=pending forever.

  • --pending never drains, so every run re-selects and re-skips them.
  • The real problem: a pending snapshot carrying restatement_suspect would re-fire the alert on every subsequent run, forever. Scoping suspects to the snapshots a run processed (added in feat(vintage): COT vintage store & revision tracking (capture + change-only ingest/PIT) #78) only works if snapshots actually drain out of pending — and these never did. That is the alert-fatigue failure the scoping was meant to prevent.

They are now marked skipped with a reason, so they surface once and go quiet. Raw bytes are retained, so adding a canonicaliser later just means re-marking them pending and re-running.

Preflight

run-vintage.cmd now checks up front that cotdata-vintage.exe / cotdata-schedule.exe exist and the store path is real, naming the fix (git pull && pip install -e .) instead of failing four times with cannot find path. Those entry points are newer than the rest of the CLI, so a venv installed before they existed has neither.

Also expands the comment on why the vintage dir must be created before the first redirect — cmd opens a >> target before running the command, so without it the first line fails, nothing runs, and the task looks like it never fired. That is exactly what happened on the first real setup.

203 tests pass (2 new, pinning that unparseable types drain and that a suspect on one alerts once then goes quiet). ruff check src tests clean.

🤖 Generated with Claude Code

Both found from the first real production capture, which retained 4 snapshots but
ingested only the Legacy annual zip.

DRAIN BUG. disagg/TFF/weekly-static have no canonicaliser yet, so ingest 'continue'd past
them and left them parse_status=pending forever. Two consequences: --pending never drains,
and -- the real problem -- a pending snapshot carrying restatement_suspect would re-fire
the alert on EVERY subsequent run, forever. Scoping suspects to the snapshots a run
processed only works if snapshots actually drain out of pending, which these never did.
They are now marked 'skipped' with a reason, so they surface once and go quiet. Raw bytes
are retained, so adding a canonicaliser later just means re-marking them pending.

PREFLIGHT. run-vintage.cmd now checks up front that cotdata-vintage.exe and
cotdata-schedule.exe exist and that the store path is real, naming the fix (git pull &&
pip install -e .) instead of failing four times with 'cannot find path'. Those two entry
points are newer than the rest of the CLI, so a venv installed before they existed has
neither. Also expands the comment on why the vintage dir must be created BEFORE the first
redirect: cmd opens a >> target before running the command, so without it the first line
fails, nothing runs, and the task looks like it never fired -- which is exactly what
happened on the first real setup.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
@mspinola
mspinola merged commit 2b9d808 into main Jul 31, 2026
5 checks passed
@mspinola
mspinola deleted the claude/vintage-preflight branch July 31, 2026 01:37
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