Skip to content

fix: fail closed on incomplete GitHub checks - #79

Merged
autogame-17 merged 3 commits into
mainfrom
maintenance/fail-closed-execution
Oct 20, 2026
Merged

autogame-17 merged 3 commits into
mainfrom
maintenance/fail-closed-execution

Conversation

@autogame-17

@autogame-17 autogame-17 commented Oct 20, 2026 •

Copy link
Copy Markdown
Member

Summary

  • Make link validation fail when any repository response is transient, malformed, or incomplete while preserving explicit 404, archived, disabled, and canonical-redirect behavior.
  • Keep the prior monitor snapshot when a GitHub search fails, times out, cannot authenticate, or returns malformed JSON or empty command output. A valid empty array remains a successful search.
  • Refuse cleanup-issue mutations without a valid, complete link report.
  • Add built-in subprocess coverage and run it from the existing validation workflow.

Scope

Source-only maintenance change. data/projects.json and README content are unchanged.

Verification

  • node scripts/test-fail-closed.js — 20 passed, 0 failed.
  • node scripts/validate.js — 130 projects across 10 categories; passed.
  • node scripts/generate-readme.js followed by git diff --exit-code -- README.md data/projects.json — clean.
  • git diff --check — clean.

Differential evidence

Frozen main source snapshot: 1869681f38f67b159cc16a33fbc0e51bf9e516c2; catalog: 130 entries; catalog SHA-256: 059bd47968fd16b6183355fc2ce086cc55540cd951e4e92cc9575843792d9a31.

The before/after comparison replayed the same locally retained real GitHub CLI response cache: 130/130 repository metadata calls succeeded. Link-check verdicts were unchanged: before and after exited 0 with no issues.

The eight monitor queries had four successes and four GitHub secondary-rate-limit HTTP 403 responses. This yields the sole intentional verdict change: previous code exited 0 and wrote a 39-item partial snapshot; this change exits 1 and preserves the previous snapshot. Raw response bodies remain in local maintenance evidence and are not included in this public PR.

Pristine-main negative controls used only a local gh shim: 6 assertions passed and 14 of the new failure-closed assertions failed, including auth, timeout, invalid-payload, empty-stdout, incomplete-metadata, partial-monitor, and cleanup-mutation paths.

Risk and rollback

The intended operational change is that incomplete GitHub responses block publication rather than being treated as successful empty results. Revert these three focused commits to restore the prior behavior.

autogame-17 and others added 3 commits October 20, 2026 23:00
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
@autogame-17
autogame-17 merged commit 2ccff80 into main Oct 20, 2026
3 checks passed
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