Skip to content

Raise the blocking-rules poll timeout to outlast reachability triage - #158

Open
Ibrahimrahhal wants to merge 1 commit into
mainfrom
raise-blocking-rules-poll-timeout
Open

Raise the blocking-rules poll timeout to outlast reachability triage#158
Ibrahimrahhal wants to merge 1 commit into
mainfrom
raise-blocking-rules-poll-timeout

Conversation

@Ibrahimrahhal

@Ibrahimrahhal Ibrahimrahhal commented Aug 17, 2026

Copy link
Copy Markdown
Member

Summary

SCA reachability blocking rules (Corgea/doghouse#1912) make doghouse answer pending for up to 30 minutes while Fusion triages a scan's direct dependencies. This side fails closed on its own deadline, so at the previous 15 minutes whichever clock expired first decided the outcome — a pipeline could hard-fail on a rule doghouse was about to resolve as non-blocking.

Raises DEFAULT_BLOCKING_RULES_TIMEOUT to 35 minutes, leaving margin over the 30-minute window for the poll interval and request latency so doghouse always resolves first.

The constants live in separate repos and nothing would otherwise catch them drifting apart, so there is an assertion pinning this deadline above doghouse's SCA_REACHABILITY_WAIT_TIMEOUT with a comment explaining why the ordering matters.

Notes

  • Only the default changes. CORGEA_BLOCKING_RULES_TIMEOUT_SECONDS still overrides it, and the scan timeout (10 hours) is untouched.
  • This lengthens the worst case for a pipeline that is genuinely stuck waiting on evaluation, which is the deliberate trade: failing closed 20 minutes earlier on data that was about to arrive is worse than waiting.
  • Docs updated in Corgea/docs#330 — cli.mdx documented the old 15-minute default as of #303.

Test plan

  • cargo test — 592 passed across all targets, rebased on current main
  • timeout_defaults_are_the_documented_ones updated for 35m / "35m" formatting
  • New blocking_rules_timeout_outlasts_the_doghouse_wait_windows assertion

Made with Cursor

SCA reachability blocking rules make doghouse answer `pending` for up to
30 minutes while Fusion triages a scan's direct dependencies. This side
fails closed on its own deadline, so at the previous 15 minutes whichever
clock expired first decided the outcome and a pipeline could hard-fail on
a rule doghouse was about to resolve as non-blocking.

35 minutes leaves margin over that window for the poll interval and
request latency, so doghouse always resolves first. Adds an assertion
tying the two together, since the constants live in separate repos and
nothing else would catch them drifting.

Co-authored-by: Cursor <cursoragent@cursor.com>
Comment thread src/scanners/blast.rs
// the failure mode worth catching.
assert_eq!(DEFAULT_SCAN_TIMEOUT, Duration::from_secs(10 * 60 * 60));
assert_eq!(DEFAULT_BLOCKING_RULES_TIMEOUT, Duration::from_secs(15 * 60));
assert_eq!(DEFAULT_BLOCKING_RULES_TIMEOUT, Duration::from_secs(35 * 60));

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

README.md:43 and skills/corgea/SKILL.md:116 still promise that --fail/--block-on waits at most 15 minutes, while this line makes the shipped default 35 minutes. The mismatch is user-visible: package.json:20 includes README.md in the npm package, and operators sizing a CI job from that documented limit can now have the runner terminate the CLI before its own deadline. Please update both in-repo guides to 35 minutes in this PR so the released CLI and its bundled documentation agree.

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I agree with this finding and think it should be addressed.

high: Update user-facing timeout documentation to 35 minutes

The default blocking-rules timeout changes from 15 to 35 minutes, but the existing review identifies README.md and skills/corgea/SKILL.md as still promising a 15-minute maximum. That contract is now false and can cause CI jobs configured around it to terminate the CLI prematurely. Update both guides with this behavioral change.

Proof or reproduction:

const DEFAULT_BLOCKING_RULES_TIMEOUT: Duration = Duration::from_secs(35 * 60);
assert_eq!(format_timeout(DEFAULT_BLOCKING_RULES_TIMEOUT), "35m");

@corgea-security corgea-security left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Automated review risk: 2/5.

The timeout increase is internally consistent and tested, but shipped documentation reportedly retains the old 15-minute contract and must be updated.

Critical or high-priority changes must be addressed.

Automatic approval was not submitted: automated review found critical or high-priority findings.

@corgea-security corgea-security added the dennis-reviewed Dennis completed an automated review label Aug 17, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

dennis-reviewed Dennis completed an automated review

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants