fix(research): factor-profiles node HARD-FAILS — no silent degrade (follow-up to #203)#204
Merged
Merged
Conversation
…ollow-up to #203) #203 wired the producer with graceful-degrade (catch/log/continue). Per Brian + feedback_no_silent_fails: that recreates the exact orphaned-producer silent-failure class this wiring exists to fix — a failing producer would log a warning nobody reads while focus-list + factor-blend silently go inert again. compute_factor_profiles_node now RAISES on any failure (missing run_date, producer exception) → the Research SF state fails loudly + alerts. Not spuriously fragile: features/{run_date}/*.parquet is produced by DataPhase1 UPSTREAM in the same Saturday SF, so its absence is already an incident (DataPhase1 should have failed) — this surfaces real breakage, never fails a healthy run. Matches the system's fail-loud norm (DataPhase2 populated-ratio gate; optimizer PR5 empty-order-book-not-legacy-fallback). Still substrate-only — no flag flipped, no scoring change. Docstring + 2 tests flipped graceful-return → pytest.raises. Suite 1366 passed. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Follow-up to #203 (merged). Per Brian + the standing
feedback_no_silent_failsprinciple.Problem: #203 wired the orphaned factor-profiles producer with graceful-degrade (catch exception → log warning → return + continue). That recreates the exact silent-failure class this entire arc just root-caused: a failing/unwired producer logs a warning nobody reads while focus-list + factor-blend silently go inert — 4+ days undetected, which is how we got here.
Fix:
compute_factor_profiles_nodenow hard-fails (raises) on any failure (missingrun_date, producer exception) → the Research SF state fails loudly and alerts.Not spuriously fragile:
features/{run_date}/*.parquetis produced by DataPhase1 upstream in the same Saturday SF. If it's absent, DataPhase1 already failed — so raising here surfaces a real incident and cannot fail a healthy run. Consistent with the system's fail-loud norm (DataPhase2 populated-ratio gate; optimizer PR5 empty-order-book-rather-than-legacy-fallback).Still substrate-only — no flag flipped, no scoring/agent behavior change. Docstring + 2 tests flipped graceful-return →
pytest.raises. Node tests 9/9; full research suite 1366 passed.🤖 Generated with Claude Code