Skip to content

fix(ingest): retry transient GraphQL failures with exponential backoff (v0.3.2)#39

Merged
AbdullahBakir97 merged 1 commit into
mainfrom
fix/graphql-retry
Apr 30, 2026
Merged

fix(ingest): retry transient GraphQL failures with exponential backoff (v0.3.2)#39
AbdullahBakir97 merged 1 commit into
mainfrom
fix/graphql-retry

Conversation

@AbdullahBakir97

Copy link
Copy Markdown
Owner

Summary

Two real-world 502 Bad Gateway events on 2026-04-30 killed daily dogfood runs that should have succeeded. The `@octokit/plugin-retry` plugin only attaches to the REST client; GraphQL had no equivalent until now, so a single transient hiccup propagated either as a raw HTTP error or — worse — as `Cannot read properties of undefined` when the HTML 502 body parsed as a JSON shell.

This PR closes that gap with a tiny dependency-free `withRetry` helper, applied to every `client.graphql` call across both `ingestSnapshot` and `ingestAuditExtras`.

What changed

File Change
`packages/core/src/retry.ts` (new, 60 lines) `withRetry(fn, opts)` with exponential backoff + jitter; `isRetryableError(err)` classifier
`packages/core/src/ingest.ts` Wrap USER_QUERY + REPOS_QUERY paginate loop
`packages/core/src/audit/ingest.ts` Wrap REPO_EXTRAS_QUERY paginate, USER_OPEN_PRS_QUERY, and per-PR PR_TIMELINE_QUERY
`packages/core/src/index.ts` Re-export the new helpers
`packages/core/test/retry.test.ts` (new) 14 tests: classifier per error class + backoff math

Retry policy

Class Retried? Notes
HTTP 5xx server errors are transient by definition
HTTP 408 / 429 timeout / rate limit
HTTP 4xx (other) caller bugs (auth, not-found, validation)
ECONNRESET / ETIMEDOUT / ENOTFOUND / EAI_AGAIN known transient net errors
GraphqlResponseError with 502/503/504 in message sometimes 5xxs surface as GraphQL errors
Plain Error with no `status`/`code` probably a code bug, not a network blip

Backoff: `500ms × 2ⁿ + 0–100ms jitter`. Default 4 attempts (max ~8.5s wall time).

The per-PR timeline retry is capped at `maxAttempts: 2` because its existing per-PR try/catch already degrades to `timeline: null` — we don't want a brief outage to 5x the run time on a 50-PR account.

Test plan

  • `pnpm verify` clean
  • 14 new tests in `packages/core/test/retry.test.ts` cover both the classifier and the backoff/cap math (mathematically — no real timers)
  • No new dependencies
  • Public API surface: `withRetry` and `isRetryableError` exports only; no breaking changes
  • CI green
  • After merge: tag `v0.3.2`, force-update `v1`, mint Release. The Marketplace listing auto-refreshes.

Reviewer notes

  • The `onRetry` hook logs each retry via the existing `pino` logger so dogfood logs show the retry trail. The error label is compacted (`HTTP 502`, `ECONNRESET`, etc.) rather than dumping the raw 502 HTML body.
  • This is the second patch shipping today (v0.3.1 fixed the silent-commit bug; v0.3.2 fixes the silent-502 fragility). Together they close the two real production failure modes observed during launch.
  • Worth noting for v0.4: the per-repo extras retry can interact with Octokit's throttle plugin under high concurrency — fine for a per-user audit (≤100 repos serial) but something to revisit if we ever batch multiple users.

…f (v0.3.2)

Two real-world 502 Bad Gateway events on 2026-04-30 killed daily
dogfood runs that should have succeeded. The @octokit/plugin-retry
plugin only attaches to the REST client; GraphQL had no equivalent
until now, so a single transient hiccup propagated as either a raw
HTTP error or — worse — as `Cannot read properties of undefined`
when the HTML 502 body was parsed as a JSON shell.

Fix:

- New `withRetry(fn, opts)` helper in packages/core/src/retry.ts.
  60 lines, dependency-free, exports `isRetryableError` so tests can
  classify error shapes deterministically.
- Retried error classes: HTTP 5xx, 408, 429; net errors ECONNRESET,
  ETIMEDOUT, ENOTFOUND, EAI_AGAIN; GraphqlResponseError whose message
  contains 502/503/504/bad gateway/gateway timeout/service unavailable.
- Not retried: 4xx other than 408/429 (caller bugs), plain Error with
  no status/code (probably code bugs).
- Exponential backoff with jitter: 500ms × 2ⁿ + 0–100ms jitter, capped
  at 4 attempts (~8.5s worst case wall time).
- Wired into ingestSnapshot (USER_QUERY + REPOS_QUERY paginate loop)
  and ingestAuditExtras (REPO_EXTRAS_QUERY paginate loop +
  USER_OPEN_PRS_QUERY). Per-PR timeline retries with maxAttempts: 2 only
  — its existing per-PR try/catch already degrades to timeline: null,
  so we keep wall-time predictable on a brief outage.
- `onRetry` hook logs attempt + delay + compact error label via the
  existing pino logger so dogfood logs show the retry trail.

Tests:

- 14 tests in packages/core/test/retry.test.ts cover the classifier
  (positive + negative cases per error shape) and the backoff/cap math
  with a mathematically-verified exponential growth check.

No new dependencies. No new public API surface beyond `withRetry` /
`isRetryableError` exports. Zero behavior change on non-transient
errors.
@vercel

vercel Bot commented Apr 30, 2026

Copy link
Copy Markdown

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Actions Updated (UTC)
portfolio-craft-docs Ready Ready Preview, Comment Apr 30, 2026 10:50pm

@github-actions

Copy link
Copy Markdown

Audit

Generated 2026-04-30. 154 findings across 84 repos (53 flagged).

Severity Count
critical 0
high 33
medium 67
low 53
info 1

Verified signal

  • Signed-commit ratio: 47% (averaged across repos with commit history)

Findings

  • [high] license — No LICENSE: AbdullahBakir97/AI-KI

    • An unlicensed repo cannot be reused legally; downstream contributors and employers will treat it as all-rights-reserved by default. Pick MIT or Apache-2.0 for permissive open source.
    • Evidence: Repo community profile
    • Action: Add a LICENSE file (MIT or Apache-2.0 are common defaults).
  • [high] license — No LICENSE: AbdullahBakir97/API-Client-Generator

    • An unlicensed repo cannot be reused legally; downstream contributors and employers will treat it as all-rights-reserved by default. Pick MIT or Apache-2.0 for permissive open source.
    • Evidence: Repo community profile
    • Action: Add a LICENSE file (MIT or Apache-2.0 are common defaults).
  • [high] license — No LICENSE: AbdullahBakir97/Amazon-Project

    • An unlicensed repo cannot be reused legally; downstream contributors and employers will treat it as all-rights-reserved by default. Pick MIT or Apache-2.0 for permissive open source.
    • Evidence: Repo community profile
    • Action: Add a LICENSE file (MIT or Apache-2.0 are common defaults).
  • [high] license — No LICENSE: AbdullahBakir97/Automtion

    • An unlicensed repo cannot be reused legally; downstream contributors and employers will treat it as all-rights-reserved by default. Pick MIT or Apache-2.0 for permissive open source.
    • Evidence: Repo community profile
    • Action: Add a LICENSE file (MIT or Apache-2.0 are common defaults).
  • [high] license — No LICENSE: AbdullahBakir97/BOT

    • An unlicensed repo cannot be reused legally; downstream contributors and employers will treat it as all-rights-reserved by default. Pick MIT or Apache-2.0 for permissive open source.
    • Evidence: Repo community profile
    • Action: Add a LICENSE file (MIT or Apache-2.0 are common defaults).
  • [high] license — No LICENSE: AbdullahBakir97/Baeckrei

    • An unlicensed repo cannot be reused legally; downstream contributors and employers will treat it as all-rights-reserved by default. Pick MIT or Apache-2.0 for permissive open source.
    • Evidence: Repo community profile
    • Action: Add a LICENSE file (MIT or Apache-2.0 are common defaults).
  • [high] license — No LICENSE: AbdullahBakir97/Content-Creator-Tool

    • An unlicensed repo cannot be reused legally; downstream contributors and employers will treat it as all-rights-reserved by default. Pick MIT or Apache-2.0 for permissive open source.
    • Evidence: Repo community profile
    • Action: Add a LICENSE file (MIT or Apache-2.0 are common defaults).
  • [high] license — No LICENSE: AbdullahBakir97/Django-Blog-app

    • An unlicensed repo cannot be reused legally; downstream contributors and employers will treat it as all-rights-reserved by default. Pick MIT or Apache-2.0 for permissive open source.
    • Evidence: Repo community profile
    • Action: Add a LICENSE file (MIT or Apache-2.0 are common defaults).
  • [high] license — No LICENSE: AbdullahBakir97/Django-Reporting-System

    • An unlicensed repo cannot be reused legally; downstream contributors and employers will treat it as all-rights-reserved by default. Pick MIT or Apache-2.0 for permissive open source.
    • Evidence: Repo community profile
    • Action: Add a LICENSE file (MIT or Apache-2.0 are common defaults).
  • [high] license — No LICENSE: AbdullahBakir97/Django-Vuejs-Courses-Filter

    • An unlicensed repo cannot be reused legally; downstream contributors and employers will treat it as all-rights-reserved by default. Pick MIT or Apache-2.0 for permissive open source.
    • Evidence: Repo community profile
    • Action: Add a LICENSE file (MIT or Apache-2.0 are common defaults).
  • [high] license — No LICENSE: AbdullahBakir97/E-Commerce_Management_Hub

    • An unlicensed repo cannot be reused legally; downstream contributors and employers will treat it as all-rights-reserved by default. Pick MIT or Apache-2.0 for permissive open source.
    • Evidence: Repo community profile
    • Action: Add a LICENSE file (MIT or Apache-2.0 are common defaults).
  • [high] license — No LICENSE: AbdullahBakir97/Email-Sender

    • An unlicensed repo cannot be reused legally; downstream contributors and employers will treat it as all-rights-reserved by default. Pick MIT or Apache-2.0 for permissive open source.
    • Evidence: Repo community profile
    • Action: Add a LICENSE file (MIT or Apache-2.0 are common defaults).
  • [high] license — No LICENSE: AbdullahBakir97/HTML-1

    • An unlicensed repo cannot be reused legally; downstream contributors and employers will treat it as all-rights-reserved by default. Pick MIT or Apache-2.0 for permissive open source.
    • Evidence: Repo community profile
    • Action: Add a LICENSE file (MIT or Apache-2.0 are common defaults).
  • [high] license — No LICENSE: AbdullahBakir97/JS-TO-DO

    • An unlicensed repo cannot be reused legally; downstream contributors and employers will treat it as all-rights-reserved by default. Pick MIT or Apache-2.0 for permissive open source.
    • Evidence: Repo community profile
    • Action: Add a LICENSE file (MIT or Apache-2.0 are common defaults).
  • [high] license — No LICENSE: AbdullahBakir97/JS-TO-DO-LIST

    • An unlicensed repo cannot be reused legally; downstream contributors and employers will treat it as all-rights-reserved by default. Pick MIT or Apache-2.0 for permissive open source.
    • Evidence: Repo community profile
    • Action: Add a LICENSE file (MIT or Apache-2.0 are common defaults).
  • [high] license — No LICENSE: AbdullahBakir97/LeetCode_Python

    • An unlicensed repo cannot be reused legally; downstream contributors and employers will treat it as all-rights-reserved by default. Pick MIT or Apache-2.0 for permissive open source.
    • Evidence: Repo community profile
    • Action: Add a LICENSE file (MIT or Apache-2.0 are common defaults).
  • [high] license — No LICENSE: AbdullahBakir97/Logo-Generator

    • An unlicensed repo cannot be reused legally; downstream contributors and employers will treat it as all-rights-reserved by default. Pick MIT or Apache-2.0 for permissive open source.
    • Evidence: Repo community profile
    • Action: Add a LICENSE file (MIT or Apache-2.0 are common defaults).
  • [high] license — No LICENSE: AbdullahBakir97/Portfolio

    • An unlicensed repo cannot be reused legally; downstream contributors and employers will treat it as all-rights-reserved by default. Pick MIT or Apache-2.0 for permissive open source.
    • Evidence: Repo community profile
    • Action: Add a LICENSE file (MIT or Apache-2.0 are common defaults).
  • [high] license — No LICENSE: AbdullahBakir97/Projekt-1

    • An unlicensed repo cannot be reused legally; downstream contributors and employers will treat it as all-rights-reserved by default. Pick MIT or Apache-2.0 for permissive open source.
    • Evidence: Repo community profile
    • Action: Add a LICENSE file (MIT or Apache-2.0 are common defaults).
  • [high] license — No LICENSE: AbdullahBakir97/Py-Tetris-Game

    • An unlicensed repo cannot be reused legally; downstream contributors and employers will treat it as all-rights-reserved by default. Pick MIT or Apache-2.0 for permissive open source.
    • Evidence: Repo community profile
    • Action: Add a LICENSE file (MIT or Apache-2.0 are common defaults).
  • [high] license — No LICENSE: AbdullahBakir97/Python-Basics

    • An unlicensed repo cannot be reused legally; downstream contributors and employers will treat it as all-rights-reserved by default. Pick MIT or Apache-2.0 for permissive open source.
    • Evidence: Repo community profile
    • Action: Add a LICENSE file (MIT or Apache-2.0 are common defaults).
  • [high] license — No LICENSE: AbdullahBakir97/Python-Game

    • An unlicensed repo cannot be reused legally; downstream contributors and employers will treat it as all-rights-reserved by default. Pick MIT or Apache-2.0 for permissive open source.
    • Evidence: Repo community profile
    • Action: Add a LICENSE file (MIT or Apache-2.0 are common defaults).
  • [high] license — No LICENSE: AbdullahBakir97/Repo-Directory-Structure

    • An unlicensed repo cannot be reused legally; downstream contributors and employers will treat it as all-rights-reserved by default. Pick MIT or Apache-2.0 for permissive open source.
    • Evidence: Repo community profile
    • Action: Add a LICENSE file (MIT or Apache-2.0 are common defaults).
  • [high] license — No LICENSE: AbdullahBakir97/Space-Shooter

    • An unlicensed repo cannot be reused legally; downstream contributors and employers will treat it as all-rights-reserved by default. Pick MIT or Apache-2.0 for permissive open source.
    • Evidence: Repo community profile
    • Action: Add a LICENSE file (MIT or Apache-2.0 are common defaults).
  • [high] license — No LICENSE: AbdullahBakir97/Trello-Clone-Services

    • An unlicensed repo cannot be reused legally; downstream contributors and employers will treat it as all-rights-reserved by default. Pick MIT or Apache-2.0 for permissive open source.
    • Evidence: Repo community profile
    • Action: Add a LICENSE file (MIT or Apache-2.0 are common defaults).
  • [high] license — No LICENSE: AbdullahBakir97/Vue-Store

    • An unlicensed repo cannot be reused legally; downstream contributors and employers will treat it as all-rights-reserved by default. Pick MIT or Apache-2.0 for permissive open source.
    • Evidence: Repo community profile
    • Action: Add a LICENSE file (MIT or Apache-2.0 are common defaults).
  • [high] license — No LICENSE: AbdullahBakir97/Web-Scraping-

    • An unlicensed repo cannot be reused legally; downstream contributors and employers will treat it as all-rights-reserved by default. Pick MIT or Apache-2.0 for permissive open source.
    • Evidence: Repo community profile
    • Action: Add a LICENSE file (MIT or Apache-2.0 are common defaults).
  • [high] license — No LICENSE: AbdullahBakir97/email

    • An unlicensed repo cannot be reused legally; downstream contributors and employers will treat it as all-rights-reserved by default. Pick MIT or Apache-2.0 for permissive open source.
    • Evidence: Repo community profile
    • Action: Add a LICENSE file (MIT or Apache-2.0 are common defaults).
  • [high] license — No LICENSE: AbdullahBakir97/image-cropping

    • An unlicensed repo cannot be reused legally; downstream contributors and employers will treat it as all-rights-reserved by default. Pick MIT or Apache-2.0 for permissive open source.
    • Evidence: Repo community profile
    • Action: Add a LICENSE file (MIT or Apache-2.0 are common defaults).
  • [high] license — No LICENSE: AbdullahBakir97/schedule-

    • An unlicensed repo cannot be reused legally; downstream contributors and employers will treat it as all-rights-reserved by default. Pick MIT or Apache-2.0 for permissive open source.
    • Evidence: Repo community profile
    • Action: Add a LICENSE file (MIT or Apache-2.0 are common defaults).
  • [high] license — No LICENSE: AbdullahBakir97/test

    • An unlicensed repo cannot be reused legally; downstream contributors and employers will treat it as all-rights-reserved by default. Pick MIT or Apache-2.0 for permissive open source.
    • Evidence: Repo community profile
    • Action: Add a LICENSE file (MIT or Apache-2.0 are common defaults).
  • [high] license — No LICENSE: AbdullahBakir97/tzgf

    • An unlicensed repo cannot be reused legally; downstream contributors and employers will treat it as all-rights-reserved by default. Pick MIT or Apache-2.0 for permissive open source.
    • Evidence: Repo community profile
    • Action: Add a LICENSE file (MIT or Apache-2.0 are common defaults).
  • [high] pr-rot — Stale PR: Add files via upload JS-TO-DO-LIST#1

  • [medium] bug-debt — Bug debt: AbdullahBakir97/Project-Management-Tool

    • 2 open issues; the oldest is 701 days old. Long-lived issues compound and signal abandonment to visitors.
    • Label weight: × 2 (dominant labels: bug)
    • Evidence: 2 open · oldest 701 days
    • Action: Triage stale issues — close, label, or convert to discussions.
  • [medium] docs — No README: AbdullahBakir97/AI-KI

    • A missing README hides the repo's purpose from visitors and search engines. Even a 5-line description compounds discoverability and trust.
    • Evidence: Repo root
    • Action: Add a README.md with at minimum a one-line description and a quickstart.
  • [medium] docs — No README: AbdullahBakir97/Amazon-Project

    • A missing README hides the repo's purpose from visitors and search engines. Even a 5-line description compounds discoverability and trust.
    • Evidence: Repo root
    • Action: Add a README.md with at minimum a one-line description and a quickstart.
  • [medium] docs — No README: AbdullahBakir97/Automtion

    • A missing README hides the repo's purpose from visitors and search engines. Even a 5-line description compounds discoverability and trust.
    • Evidence: Repo root
    • Action: Add a README.md with at minimum a one-line description and a quickstart.
  • [medium] docs — No README: AbdullahBakir97/BOT

    • A missing README hides the repo's purpose from visitors and search engines. Even a 5-line description compounds discoverability and trust.
    • Evidence: Repo root
    • Action: Add a README.md with at minimum a one-line description and a quickstart.
  • [medium] docs — No README: AbdullahBakir97/Baeckrei

    • A missing README hides the repo's purpose from visitors and search engines. Even a 5-line description compounds discoverability and trust.
    • Evidence: Repo root
    • Action: Add a README.md with at minimum a one-line description and a quickstart.
  • [medium] docs — No README: AbdullahBakir97/Email-Sender

    • A missing README hides the repo's purpose from visitors and search engines. Even a 5-line description compounds discoverability and trust.
    • Evidence: Repo root
    • Action: Add a README.md with at minimum a one-line description and a quickstart.
  • [medium] docs — No README: AbdullahBakir97/Logo-Generator

    • A missing README hides the repo's purpose from visitors and search engines. Even a 5-line description compounds discoverability and trust.
    • Evidence: Repo root
    • Action: Add a README.md with at minimum a one-line description and a quickstart.
  • [medium] docs — No README: AbdullahBakir97/Mini-RAG

    • A missing README hides the repo's purpose from visitors and search engines. Even a 5-line description compounds discoverability and trust.
    • Evidence: Repo root
    • Action: Add a README.md with at minimum a one-line description and a quickstart.
  • [medium] docs — No README: AbdullahBakir97/Portfolio

    • A missing README hides the repo's purpose from visitors and search engines. Even a 5-line description compounds discoverability and trust.
    • Evidence: Repo root
    • Action: Add a README.md with at minimum a one-line description and a quickstart.
  • [medium] docs — No README: AbdullahBakir97/Projekt-1

    • A missing README hides the repo's purpose from visitors and search engines. Even a 5-line description compounds discoverability and trust.
    • Evidence: Repo root
    • Action: Add a README.md with at minimum a one-line description and a quickstart.
  • [medium] docs — No README: AbdullahBakir97/Py-Tetris-Game

    • A missing README hides the repo's purpose from visitors and search engines. Even a 5-line description compounds discoverability and trust.
    • Evidence: Repo root
    • Action: Add a README.md with at minimum a one-line description and a quickstart.
  • [medium] docs — No README: AbdullahBakir97/Python-Basics

    • A missing README hides the repo's purpose from visitors and search engines. Even a 5-line description compounds discoverability and trust.
    • Evidence: Repo root
    • Action: Add a README.md with at minimum a one-line description and a quickstart.
  • [medium] docs — No README: AbdullahBakir97/Python-Game

    • A missing README hides the repo's purpose from visitors and search engines. Even a 5-line description compounds discoverability and trust.
    • Evidence: Repo root
    • Action: Add a README.md with at minimum a one-line description and a quickstart.
  • [medium] docs — No README: AbdullahBakir97/Trello-Clone-Services

    • A missing README hides the repo's purpose from visitors and search engines. Even a 5-line description compounds discoverability and trust.
    • Evidence: Repo root
    • Action: Add a README.md with at minimum a one-line description and a quickstart.
  • [medium] docs — No README: AbdullahBakir97/email

    • A missing README hides the repo's purpose from visitors and search engines. Even a 5-line description compounds discoverability and trust.
    • Evidence: Repo root
    • Action: Add a README.md with at minimum a one-line description and a quickstart.
  • [medium] docs — No README: AbdullahBakir97/image-cropping

    • A missing README hides the repo's purpose from visitors and search engines. Even a 5-line description compounds discoverability and trust.
    • Evidence: Repo root
    • Action: Add a README.md with at minimum a one-line description and a quickstart.
  • [medium] docs — No README: AbdullahBakir97/schedule-

    • A missing README hides the repo's purpose from visitors and search engines. Even a 5-line description compounds discoverability and trust.
    • Evidence: Repo root
    • Action: Add a README.md with at minimum a one-line description and a quickstart.
  • [medium] docs — No README: AbdullahBakir97/test

    • A missing README hides the repo's purpose from visitors and search engines. Even a 5-line description compounds discoverability and trust.
    • Evidence: Repo root
    • Action: Add a README.md with at minimum a one-line description and a quickstart.
  • [medium] docs — No README: AbdullahBakir97/tzgf

    • A missing README hides the repo's purpose from visitors and search engines. Even a 5-line description compounds discoverability and trust.
    • Evidence: Repo root
    • Action: Add a README.md with at minimum a one-line description and a quickstart.
  • [medium] stale — Stale repository: AbdullahBakir97/AI-KI

    • Last push was 2024-07-17, beyond the 6-month freshness threshold. A fresh commit, archive, or removal would clean the portfolio signal.
    • Evidence: Last push: 2024-07-17
    • Action: Push a fresh commit, archive the repo, or exclude it from your portfolio config.
  • [medium] stale — Stale repository: AbdullahBakir97/API

    • Last push was 2024-05-12, beyond the 6-month freshness threshold. A fresh commit, archive, or removal would clean the portfolio signal.
    • Evidence: Last push: 2024-05-12
    • Action: Push a fresh commit, archive the repo, or exclude it from your portfolio config.
  • [medium] stale — Stale repository: AbdullahBakir97/API-Client-Generator

    • Last push was 2024-10-25, beyond the 6-month freshness threshold. A fresh commit, archive, or removal would clean the portfolio signal.
    • Evidence: Last push: 2024-10-25
    • Action: Push a fresh commit, archive the repo, or exclude it from your portfolio config.
  • [medium] stale — Stale repository: AbdullahBakir97/Amazon-Project

    • Last push was 2023-03-13, beyond the 6-month freshness threshold. A fresh commit, archive, or removal would clean the portfolio signal.
    • Evidence: Last push: 2023-03-13
    • Action: Push a fresh commit, archive the repo, or exclude it from your portfolio config.
  • [medium] stale — Stale repository: AbdullahBakir97/Automtion

    • Last push was 2024-06-17, beyond the 6-month freshness threshold. A fresh commit, archive, or removal would clean the portfolio signal.
    • Evidence: Last push: 2024-06-17
    • Action: Push a fresh commit, archive the repo, or exclude it from your portfolio config.
  • [medium] stale — Stale repository: AbdullahBakir97/BOT

    • Last push was 2024-03-02, beyond the 6-month freshness threshold. A fresh commit, archive, or removal would clean the portfolio signal.
    • Evidence: Last push: 2024-03-02
    • Action: Push a fresh commit, archive the repo, or exclude it from your portfolio config.
  • [medium] stale — Stale repository: AbdullahBakir97/Baeckrei

    • Last push was 2025-09-26, beyond the 6-month freshness threshold. A fresh commit, archive, or removal would clean the portfolio signal.
    • Evidence: Last push: 2025-09-26
    • Action: Push a fresh commit, archive the repo, or exclude it from your portfolio config.
  • [medium] stale — Stale repository: AbdullahBakir97/Barber-Salon

    • Last push was 2025-02-27, beyond the 6-month freshness threshold. A fresh commit, archive, or removal would clean the portfolio signal.
    • Evidence: Last push: 2025-02-27
    • Action: Push a fresh commit, archive the repo, or exclude it from your portfolio config.
  • [medium] stale — Stale repository: AbdullahBakir97/Content-Creator-Tool

    • Last push was 2025-01-06, beyond the 6-month freshness threshold. A fresh commit, archive, or removal would clean the portfolio signal.
    • Evidence: Last push: 2025-01-06
    • Action: Push a fresh commit, archive the repo, or exclude it from your portfolio config.
  • [medium] stale — Stale repository: AbdullahBakir97/Dj--To-Do

    • Last push was 2024-04-28, beyond the 6-month freshness threshold. A fresh commit, archive, or removal would clean the portfolio signal.
    • Evidence: Last push: 2024-04-28
    • Action: Push a fresh commit, archive the repo, or exclude it from your portfolio config.
  • [medium] stale — Stale repository: AbdullahBakir97/Django--LMS--Learning-Management-System

    • Last push was 2024-07-15, beyond the 6-month freshness threshold. A fresh commit, archive, or removal would clean the portfolio signal.
    • Evidence: Last push: 2024-07-15
    • Action: Push a fresh commit, archive the repo, or exclude it from your portfolio config.
  • [medium] stale — Stale repository: AbdullahBakir97/Django-Blog-app

    • Last push was 2024-01-08, beyond the 6-month freshness threshold. A fresh commit, archive, or removal would clean the portfolio signal.
    • Evidence: Last push: 2024-01-08
    • Action: Push a fresh commit, archive the repo, or exclude it from your portfolio config.
  • [medium] stale — Stale repository: AbdullahBakir97/Django-Followers-System

    • Last push was 2024-06-09, beyond the 6-month freshness threshold. A fresh commit, archive, or removal would clean the portfolio signal.
    • Evidence: Last push: 2024-06-09
    • Action: Push a fresh commit, archive the repo, or exclude it from your portfolio config.
  • [medium] stale — Stale repository: AbdullahBakir97/Django-Reporting-System

    • Last push was 2024-07-05, beyond the 6-month freshness threshold. A fresh commit, archive, or removal would clean the portfolio signal.
    • Evidence: Last push: 2024-07-05
    • Action: Push a fresh commit, archive the repo, or exclude it from your portfolio config.
  • [medium] stale — Stale repository: AbdullahBakir97/Django-Store

    • Last push was 2024-08-06, beyond the 6-month freshness threshold. A fresh commit, archive, or removal would clean the portfolio signal.
    • Evidence: Last push: 2024-08-06
    • Action: Push a fresh commit, archive the repo, or exclude it from your portfolio config.
  • [medium] stale — Stale repository: AbdullahBakir97/Django-Vuejs-Courses-Filter

    • Last push was 2024-04-16, beyond the 6-month freshness threshold. A fresh commit, archive, or removal would clean the portfolio signal.
    • Evidence: Last push: 2024-04-16
    • Action: Push a fresh commit, archive the repo, or exclude it from your portfolio config.
  • [medium] stale — Stale repository: AbdullahBakir97/E-Commerce_Management_Hub

    • Last push was 2025-01-09, beyond the 6-month freshness threshold. A fresh commit, archive, or removal would clean the portfolio signal.
    • Evidence: Last push: 2025-01-09
    • Action: Push a fresh commit, archive the repo, or exclude it from your portfolio config.
  • [medium] stale — Stale repository: AbdullahBakir97/Email-Sender

    • Last push was 2025-09-07, beyond the 6-month freshness threshold. A fresh commit, archive, or removal would clean the portfolio signal.
    • Evidence: Last push: 2025-09-07
    • Action: Push a fresh commit, archive the repo, or exclude it from your portfolio config.
  • [medium] stale — Stale repository: AbdullahBakir97/GitHub-Doc-Generator

    • Last push was 2024-07-15, beyond the 6-month freshness threshold. A fresh commit, archive, or removal would clean the portfolio signal.
    • Evidence: Last push: 2024-07-15
    • Action: Push a fresh commit, archive the repo, or exclude it from your portfolio config.
  • [medium] stale — Stale repository: AbdullahBakir97/HTML-1

    • Last push was 2023-04-28, beyond the 6-month freshness threshold. A fresh commit, archive, or removal would clean the portfolio signal.
    • Evidence: Last push: 2023-04-28
    • Action: Push a fresh commit, archive the repo, or exclude it from your portfolio config.
  • [medium] stale — Stale repository: AbdullahBakir97/JS-TO-DO

    • Last push was 2023-12-09, beyond the 6-month freshness threshold. A fresh commit, archive, or removal would clean the portfolio signal.
    • Evidence: Last push: 2023-12-09
    • Action: Push a fresh commit, archive the repo, or exclude it from your portfolio config.
  • [medium] stale — Stale repository: AbdullahBakir97/JS-TO-DO-LIST

    • Last push was 2023-07-07, beyond the 6-month freshness threshold. A fresh commit, archive, or removal would clean the portfolio signal.
    • Evidence: Last push: 2023-07-07
    • Action: Push a fresh commit, archive the repo, or exclude it from your portfolio config.
  • [medium] stale — Stale repository: AbdullahBakir97/Jobs-Portal

    • Last push was 2024-04-29, beyond the 6-month freshness threshold. A fresh commit, archive, or removal would clean the portfolio signal.
    • Evidence: Last push: 2024-04-29
    • Action: Push a fresh commit, archive the repo, or exclude it from your portfolio config.
  • [medium] stale — Stale repository: AbdullahBakir97/LeetCode_Python

    • Last push was 2024-06-09, beyond the 6-month freshness threshold. A fresh commit, archive, or removal would clean the portfolio signal.
    • Evidence: Last push: 2024-06-09
    • Action: Push a fresh commit, archive the repo, or exclude it from your portfolio config.
  • [medium] stale — Stale repository: AbdullahBakir97/Logo-Generator

    • Last push was 2024-06-16, beyond the 6-month freshness threshold. A fresh commit, archive, or removal would clean the portfolio signal.
    • Evidence: Last push: 2024-06-16
    • Action: Push a fresh commit, archive the repo, or exclude it from your portfolio config.
  • [medium] stale — Stale repository: AbdullahBakir97/Mini-RAG

    • Last push was 2024-06-20, beyond the 6-month freshness threshold. A fresh commit, archive, or removal would clean the portfolio signal.
    • Evidence: Last push: 2024-06-20
    • Action: Push a fresh commit, archive the repo, or exclude it from your portfolio config.
  • [medium] stale — Stale repository: AbdullahBakir97/Pilot-Logbook

    • Last push was 2024-08-06, beyond the 6-month freshness threshold. A fresh commit, archive, or removal would clean the portfolio signal.
    • Evidence: Last push: 2024-08-06
    • Action: Push a fresh commit, archive the repo, or exclude it from your portfolio config.
  • [medium] stale — Stale repository: AbdullahBakir97/Project-Management-Tool

    • Last push was 2024-06-05, beyond the 6-month freshness threshold. A fresh commit, archive, or removal would clean the portfolio signal.
    • Evidence: Last push: 2024-06-05
    • Action: Push a fresh commit, archive the repo, or exclude it from your portfolio config.
  • [medium] stale — Stale repository: AbdullahBakir97/Projekt-1

    • Last push was 2023-04-28, beyond the 6-month freshness threshold. A fresh commit, archive, or removal would clean the portfolio signal.
    • Evidence: Last push: 2023-04-28
    • Action: Push a fresh commit, archive the repo, or exclude it from your portfolio config.
  • [medium] stale — Stale repository: AbdullahBakir97/Py-Desktop-Expense_Tracker

    • Last push was 2024-06-23, beyond the 6-month freshness threshold. A fresh commit, archive, or removal would clean the portfolio signal.
    • Evidence: Last push: 2024-06-23
    • Action: Push a fresh commit, archive the repo, or exclude it from your portfolio config.
  • [medium] stale — Stale repository: AbdullahBakir97/Py-Tetris-Game

    • Last push was 2024-06-24, beyond the 6-month freshness threshold. A fresh commit, archive, or removal would clean the portfolio signal.
    • Evidence: Last push: 2024-06-24
    • Action: Push a fresh commit, archive the repo, or exclude it from your portfolio config.
  • [medium] stale — Stale repository: AbdullahBakir97/Python-Basics

    • Last push was 2023-08-04, beyond the 6-month freshness threshold. A fresh commit, archive, or removal would clean the portfolio signal.
    • Evidence: Last push: 2023-08-04
    • Action: Push a fresh commit, archive the repo, or exclude it from your portfolio config.
  • [medium] stale — Stale repository: AbdullahBakir97/Python-Django-join_with

    • Last push was 2024-05-24, beyond the 6-month freshness threshold. A fresh commit, archive, or removal would clean the portfolio signal.
    • Evidence: Last push: 2024-05-24
    • Action: Push a fresh commit, archive the repo, or exclude it from your portfolio config.
  • [medium] stale — Stale repository: AbdullahBakir97/Python-Environment-Management-Tool

    • Last push was 2024-06-23, beyond the 6-month freshness threshold. A fresh commit, archive, or removal would clean the portfolio signal.
    • Evidence: Last push: 2024-06-23
    • Action: Push a fresh commit, archive the repo, or exclude it from your portfolio config.
  • [medium] stale — Stale repository: AbdullahBakir97/Python-Game

    • Last push was 2023-09-19, beyond the 6-month freshness threshold. A fresh commit, archive, or removal would clean the portfolio signal.
    • Evidence: Last push: 2023-09-19
    • Action: Push a fresh commit, archive the repo, or exclude it from your portfolio config.
  • [medium] stale — Stale repository: AbdullahBakir97/Python-HackerRank-Tests

    • Last push was 2024-06-06, beyond the 6-month freshness threshold. A fresh commit, archive, or removal would clean the portfolio signal.
    • Evidence: Last push: 2024-06-06
    • Action: Push a fresh commit, archive the repo, or exclude it from your portfolio config.
  • [medium] stale — Stale repository: AbdullahBakir97/Repo-Directory-Structure

    • Last push was 2024-06-17, beyond the 6-month freshness threshold. A fresh commit, archive, or removal would clean the portfolio signal.
    • Evidence: Last push: 2024-06-17
    • Action: Push a fresh commit, archive the repo, or exclude it from your portfolio config.
  • [medium] stale — Stale repository: AbdullahBakir97/Space-Shooter

    • Last push was 2024-06-18, beyond the 6-month freshness threshold. A fresh commit, archive, or removal would clean the portfolio signal.
    • Evidence: Last push: 2024-06-18
    • Action: Push a fresh commit, archive the repo, or exclude it from your portfolio config.
  • [medium] stale — Stale repository: AbdullahBakir97/Tawil-Media---Advertisement

    • Last push was 2025-09-24, beyond the 6-month freshness threshold. A fresh commit, archive, or removal would clean the portfolio signal.
    • Evidence: Last push: 2025-09-24
    • Action: Push a fresh commit, archive the repo, or exclude it from your portfolio config.
  • [medium] stale — Stale repository: AbdullahBakir97/Vue-Store

    • Last push was 2024-02-06, beyond the 6-month freshness threshold. A fresh commit, archive, or removal would clean the portfolio signal.
    • Evidence: Last push: 2024-02-06
    • Action: Push a fresh commit, archive the repo, or exclude it from your portfolio config.
  • [medium] stale — Stale repository: AbdullahBakir97/Weather--App-django-vue.js

    • Last push was 2024-05-17, beyond the 6-month freshness threshold. A fresh commit, archive, or removal would clean the portfolio signal.
    • Evidence: Last push: 2024-05-17
    • Action: Push a fresh commit, archive the repo, or exclude it from your portfolio config.
  • [medium] stale — Stale repository: AbdullahBakir97/Web-Scraping-

    • Last push was 2024-05-06, beyond the 6-month freshness threshold. A fresh commit, archive, or removal would clean the portfolio signal.
    • Evidence: Last push: 2024-05-06
    • Action: Push a fresh commit, archive the repo, or exclude it from your portfolio config.
  • [medium] stale — Stale repository: AbdullahBakir97/email

    • Last push was 2024-01-14, beyond the 6-month freshness threshold. A fresh commit, archive, or removal would clean the portfolio signal.
    • Evidence: Last push: 2024-01-14
    • Action: Push a fresh commit, archive the repo, or exclude it from your portfolio config.
  • [medium] stale — Stale repository: AbdullahBakir97/image-cropping

    • Last push was 2023-08-04, beyond the 6-month freshness threshold. A fresh commit, archive, or removal would clean the portfolio signal.
    • Evidence: Last push: 2023-08-04
    • Action: Push a fresh commit, archive the repo, or exclude it from your portfolio config.
  • [medium] stale — Stale repository: AbdullahBakir97/schedule-

    • Last push was 2023-08-05, beyond the 6-month freshness threshold. A fresh commit, archive, or removal would clean the portfolio signal.
    • Evidence: Last push: 2023-08-05
    • Action: Push a fresh commit, archive the repo, or exclude it from your portfolio config.
  • [medium] stale — Stale repository: AbdullahBakir97/test

    • Last push was 2023-12-09, beyond the 6-month freshness threshold. A fresh commit, archive, or removal would clean the portfolio signal.
    • Evidence: Last push: 2023-12-09
    • Action: Push a fresh commit, archive the repo, or exclude it from your portfolio config.
  • [medium] stale — Stale repository: AbdullahBakir97/tzgf

    • Last push was 2023-06-16, beyond the 6-month freshness threshold. A fresh commit, archive, or removal would clean the portfolio signal.
    • Evidence: Last push: 2023-06-16
    • Action: Push a fresh commit, archive the repo, or exclude it from your portfolio config.
  • [low] pr-rot — Awaiting reviewer: fix(ingest): retry transient GraphQL failures with exponential backoff (v0.3.2) #39

    • A reviewer was the last to act on this PR and hasn't replied since 2026-04-30. This isn't your problem to push on — it's logged for awareness.
    • Awaiting: reviewer (0 days)
    • Evidence: Last activity: 2026-04-30
    • Action: Reach out to the reviewer or convert to draft.
  • [low] pr-rot — Awaiting reviewer: bug2 Stock-Manager#19

    • A reviewer was the last to act on this PR and hasn't replied since 2026-04-24. This isn't your problem to push on — it's logged for awareness.
    • Awaiting: reviewer (6 days)
    • Evidence: Last activity: 2026-04-24
    • Action: Reach out to the reviewer or convert to draft.
  • [low] tests — No tests detected: AbdullahBakir97/AI-KI

    • Heuristic detector based on top-level entries found no test directory or .test/spec. files. Even a single smoke test compounds confidence over time.
    • Evidence: Repo root contents
    • Action: Add a tests directory with at least a smoke test for your main entrypoint.
  • [low] tests — No tests detected: AbdullahBakir97/API

    • Heuristic detector based on top-level entries found no test directory or .test/spec. files. Even a single smoke test compounds confidence over time.
    • Evidence: Repo root contents
    • Action: Add a tests directory with at least a smoke test for your main entrypoint.
  • [low] tests — No tests detected: AbdullahBakir97/Amazon-Project

    • Heuristic detector based on top-level entries found no test directory or .test/spec. files. Even a single smoke test compounds confidence over time.
    • Evidence: Repo root contents
    • Action: Add a tests directory with at least a smoke test for your main entrypoint.
  • [low] tests — No tests detected: AbdullahBakir97/Automtion

    • Heuristic detector based on top-level entries found no test directory or .test/spec. files. Even a single smoke test compounds confidence over time.
    • Evidence: Repo root contents
    • Action: Add a tests directory with at least a smoke test for your main entrypoint.
  • [low] tests — No tests detected: AbdullahBakir97/BOT

    • Heuristic detector based on top-level entries found no test directory or .test/spec. files. Even a single smoke test compounds confidence over time.
    • Evidence: Repo root contents
    • Action: Add a tests directory with at least a smoke test for your main entrypoint.
  • [low] tests — No tests detected: AbdullahBakir97/Baeckrei

    • Heuristic detector based on top-level entries found no test directory or .test/spec. files. Even a single smoke test compounds confidence over time.
    • Evidence: Repo root contents
    • Action: Add a tests directory with at least a smoke test for your main entrypoint.
  • [low] tests — No tests detected: AbdullahBakir97/Barber-Salon

    • Heuristic detector based on top-level entries found no test directory or .test/spec. files. Even a single smoke test compounds confidence over time.
    • Evidence: Repo root contents
    • Action: Add a tests directory with at least a smoke test for your main entrypoint.
  • [low] tests — No tests detected: AbdullahBakir97/Content-Creator-Tool

    • Heuristic detector based on top-level entries found no test directory or .test/spec. files. Even a single smoke test compounds confidence over time.
    • Evidence: Repo root contents
    • Action: Add a tests directory with at least a smoke test for your main entrypoint.
  • [low] tests — No tests detected: AbdullahBakir97/Dj--To-Do

    • Heuristic detector based on top-level entries found no test directory or .test/spec. files. Even a single smoke test compounds confidence over time.
    • Evidence: Repo root contents
    • Action: Add a tests directory with at least a smoke test for your main entrypoint.
  • [low] tests — No tests detected: AbdullahBakir97/Django--LMS--Learning-Management-System

    • Heuristic detector based on top-level entries found no test directory or .test/spec. files. Even a single smoke test compounds confidence over time.
    • Evidence: Repo root contents
    • Action: Add a tests directory with at least a smoke test for your main entrypoint.
  • [low] tests — No tests detected: AbdullahBakir97/Django-Blog-app

    • Heuristic detector based on top-level entries found no test directory or .test/spec. files. Even a single smoke test compounds confidence over time.
    • Evidence: Repo root contents
    • Action: Add a tests directory with at least a smoke test for your main entrypoint.
  • [low] tests — No tests detected: AbdullahBakir97/Django-Followers-System

    • Heuristic detector based on top-level entries found no test directory or .test/spec. files. Even a single smoke test compounds confidence over time.
    • Evidence: Repo root contents
    • Action: Add a tests directory with at least a smoke test for your main entrypoint.
  • [low] tests — No tests detected: AbdullahBakir97/Django-Reporting-System

    • Heuristic detector based on top-level entries found no test directory or .test/spec. files. Even a single smoke test compounds confidence over time.
    • Evidence: Repo root contents
    • Action: Add a tests directory with at least a smoke test for your main entrypoint.
  • [low] tests — No tests detected: AbdullahBakir97/Django-Store

    • Heuristic detector based on top-level entries found no test directory or .test/spec. files. Even a single smoke test compounds confidence over time.
    • Evidence: Repo root contents
    • Action: Add a tests directory with at least a smoke test for your main entrypoint.
  • [low] tests — No tests detected: AbdullahBakir97/Django-Vuejs-Courses-Filter

    • Heuristic detector based on top-level entries found no test directory or .test/spec. files. Even a single smoke test compounds confidence over time.
    • Evidence: Repo root contents
    • Action: Add a tests directory with at least a smoke test for your main entrypoint.
  • [low] tests — No tests detected: AbdullahBakir97/E-Commerce_Management_Hub

    • Heuristic detector based on top-level entries found no test directory or .test/spec. files. Even a single smoke test compounds confidence over time.
    • Evidence: Repo root contents
    • Action: Add a tests directory with at least a smoke test for your main entrypoint.
  • [low] tests — No tests detected: AbdullahBakir97/Email-Sender

    • Heuristic detector based on top-level entries found no test directory or .test/spec. files. Even a single smoke test compounds confidence over time.
    • Evidence: Repo root contents
    • Action: Add a tests directory with at least a smoke test for your main entrypoint.
  • [low] tests — No tests detected: AbdullahBakir97/GitHub-Issues-Wall

    • Heuristic detector based on top-level entries found no test directory or .test/spec. files. Even a single smoke test compounds confidence over time.
    • Evidence: Repo root contents
    • Action: Add a tests directory with at least a smoke test for your main entrypoint.
  • [low] tests — No tests detected: AbdullahBakir97/HTML-1

    • Heuristic detector based on top-level entries found no test directory or .test/spec. files. Even a single smoke test compounds confidence over time.
    • Evidence: Repo root contents
    • Action: Add a tests directory with at least a smoke test for your main entrypoint.
  • [low] tests — No tests detected: AbdullahBakir97/JS-TO-DO

    • Heuristic detector based on top-level entries found no test directory or .test/spec. files. Even a single smoke test compounds confidence over time.
    • Evidence: Repo root contents
    • Action: Add a tests directory with at least a smoke test for your main entrypoint.
  • [low] tests — No tests detected: AbdullahBakir97/JS-TO-DO-LIST

    • Heuristic detector based on top-level entries found no test directory or .test/spec. files. Even a single smoke test compounds confidence over time.
    • Evidence: Repo root contents
    • Action: Add a tests directory with at least a smoke test for your main entrypoint.
  • [low] tests — No tests detected: AbdullahBakir97/Jobs-Portal

    • Heuristic detector based on top-level entries found no test directory or .test/spec. files. Even a single smoke test compounds confidence over time.
    • Evidence: Repo root contents
    • Action: Add a tests directory with at least a smoke test for your main entrypoint.
  • [low] tests — No tests detected: AbdullahBakir97/LeetCode_Python

    • Heuristic detector based on top-level entries found no test directory or .test/spec. files. Even a single smoke test compounds confidence over time.
    • Evidence: Repo root contents
    • Action: Add a tests directory with at least a smoke test for your main entrypoint.
  • [low] tests — No tests detected: AbdullahBakir97/Logo-Generator

    • Heuristic detector based on top-level entries found no test directory or .test/spec. files. Even a single smoke test compounds confidence over time.
    • Evidence: Repo root contents
    • Action: Add a tests directory with at least a smoke test for your main entrypoint.
  • [low] tests — No tests detected: AbdullahBakir97/Mini-RAG

    • Heuristic detector based on top-level entries found no test directory or .test/spec. files. Even a single smoke test compounds confidence over time.
    • Evidence: Repo root contents
    • Action: Add a tests directory with at least a smoke test for your main entrypoint.
  • [low] tests — No tests detected: AbdullahBakir97/Pilot-Logbook

    • Heuristic detector based on top-level entries found no test directory or .test/spec. files. Even a single smoke test compounds confidence over time.
    • Evidence: Repo root contents
    • Action: Add a tests directory with at least a smoke test for your main entrypoint.
  • [low] tests — No tests detected: AbdullahBakir97/Portfolio

    • Heuristic detector based on top-level entries found no test directory or .test/spec. files. Even a single smoke test compounds confidence over time.
    • Evidence: Repo root contents
    • Action: Add a tests directory with at least a smoke test for your main entrypoint.
  • [low] tests — No tests detected: AbdullahBakir97/PortfolioCraft

    • Heuristic detector based on top-level entries found no test directory or .test/spec. files. Even a single smoke test compounds confidence over time.
    • Evidence: Repo root contents
    • Action: Add a tests directory with at least a smoke test for your main entrypoint.
  • [low] tests — No tests detected: AbdullahBakir97/Project-Management-Tool

    • Heuristic detector based on top-level entries found no test directory or .test/spec. files. Even a single smoke test compounds confidence over time.
    • Evidence: Repo root contents
    • Action: Add a tests directory with at least a smoke test for your main entrypoint.
  • [low] tests — No tests detected: AbdullahBakir97/Projekt-1

    • Heuristic detector based on top-level entries found no test directory or .test/spec. files. Even a single smoke test compounds confidence over time.
    • Evidence: Repo root contents
    • Action: Add a tests directory with at least a smoke test for your main entrypoint.
  • [low] tests — No tests detected: AbdullahBakir97/Py-Desktop-Expense_Tracker

    • Heuristic detector based on top-level entries found no test directory or .test/spec. files. Even a single smoke test compounds confidence over time.
    • Evidence: Repo root contents
    • Action: Add a tests directory with at least a smoke test for your main entrypoint.
  • [low] tests — No tests detected: AbdullahBakir97/Py-Tetris-Game

    • Heuristic detector based on top-level entries found no test directory or .test/spec. files. Even a single smoke test compounds confidence over time.
    • Evidence: Repo root contents
    • Action: Add a tests directory with at least a smoke test for your main entrypoint.
  • [low] tests — No tests detected: AbdullahBakir97/Python-Basics

    • Heuristic detector based on top-level entries found no test directory or .test/spec. files. Even a single smoke test compounds confidence over time.
    • Evidence: Repo root contents
    • Action: Add a tests directory with at least a smoke test for your main entrypoint.
  • [low] tests — No tests detected: AbdullahBakir97/Python-Django-join_with

    • Heuristic detector based on top-level entries found no test directory or .test/spec. files. Even a single smoke test compounds confidence over time.
    • Evidence: Repo root contents
    • Action: Add a tests directory with at least a smoke test for your main entrypoint.
  • [low] tests — No tests detected: AbdullahBakir97/Python-Environment-Management-Tool

    • Heuristic detector based on top-level entries found no test directory or .test/spec. files. Even a single smoke test compounds confidence over time.
    • Evidence: Repo root contents
    • Action: Add a tests directory with at least a smoke test for your main entrypoint.
  • [low] tests — No tests detected: AbdullahBakir97/Python-Game

    • Heuristic detector based on top-level entries found no test directory or .test/spec. files. Even a single smoke test compounds confidence over time.
    • Evidence: Repo root contents
    • Action: Add a tests directory with at least a smoke test for your main entrypoint.
  • [low] tests — No tests detected: AbdullahBakir97/Python-HackerRank-Tests

    • Heuristic detector based on top-level entries found no test directory or .test/spec. files. Even a single smoke test compounds confidence over time.
    • Evidence: Repo root contents
    • Action: Add a tests directory with at least a smoke test for your main entrypoint.
  • [low] tests — No tests detected: AbdullahBakir97/Repo-Directory-Structure

    • Heuristic detector based on top-level entries found no test directory or .test/spec. files. Even a single smoke test compounds confidence over time.
    • Evidence: Repo root contents
    • Action: Add a tests directory with at least a smoke test for your main entrypoint.
  • [low] tests — No tests detected: AbdullahBakir97/Space-Shooter

    • Heuristic detector based on top-level entries found no test directory or .test/spec. files. Even a single smoke test compounds confidence over time.
    • Evidence: Repo root contents
    • Action: Add a tests directory with at least a smoke test for your main entrypoint.
  • [low] tests — No tests detected: AbdullahBakir97/Stock-Manager

    • Heuristic detector based on top-level entries found no test directory or .test/spec. files. Even a single smoke test compounds confidence over time.
    • Evidence: Repo root contents
    • Action: Add a tests directory with at least a smoke test for your main entrypoint.
  • [low] tests — No tests detected: AbdullahBakir97/Tawil-Media---Advertisement

    • Heuristic detector based on top-level entries found no test directory or .test/spec. files. Even a single smoke test compounds confidence over time.
    • Evidence: Repo root contents
    • Action: Add a tests directory with at least a smoke test for your main entrypoint.
  • [low] tests — No tests detected: AbdullahBakir97/Trello-Clone-Services

    • Heuristic detector based on top-level entries found no test directory or .test/spec. files. Even a single smoke test compounds confidence over time.
    • Evidence: Repo root contents
    • Action: Add a tests directory with at least a smoke test for your main entrypoint.
  • [low] tests — No tests detected: AbdullahBakir97/Vue-Store

    • Heuristic detector based on top-level entries found no test directory or .test/spec. files. Even a single smoke test compounds confidence over time.
    • Evidence: Repo root contents
    • Action: Add a tests directory with at least a smoke test for your main entrypoint.
  • [low] tests — No tests detected: AbdullahBakir97/Weather--App-django-vue.js

    • Heuristic detector based on top-level entries found no test directory or .test/spec. files. Even a single smoke test compounds confidence over time.
    • Evidence: Repo root contents
    • Action: Add a tests directory with at least a smoke test for your main entrypoint.
  • [low] tests — No tests detected: AbdullahBakir97/Web-Scraping-

    • Heuristic detector based on top-level entries found no test directory or .test/spec. files. Even a single smoke test compounds confidence over time.
    • Evidence: Repo root contents
    • Action: Add a tests directory with at least a smoke test for your main entrypoint.
  • [low] tests — No tests detected: AbdullahBakir97/cortex

    • Heuristic detector based on top-level entries found no test directory or .test/spec. files. Even a single smoke test compounds confidence over time.
    • Evidence: Repo root contents
    • Action: Add a tests directory with at least a smoke test for your main entrypoint.
  • [low] tests — No tests detected: AbdullahBakir97/email

    • Heuristic detector based on top-level entries found no test directory or .test/spec. files. Even a single smoke test compounds confidence over time.
    • Evidence: Repo root contents
    • Action: Add a tests directory with at least a smoke test for your main entrypoint.
  • [low] tests — No tests detected: AbdullahBakir97/image-cropping

    • Heuristic detector based on top-level entries found no test directory or .test/spec. files. Even a single smoke test compounds confidence over time.
    • Evidence: Repo root contents
    • Action: Add a tests directory with at least a smoke test for your main entrypoint.
  • [low] tests — No tests detected: AbdullahBakir97/schedule-

    • Heuristic detector based on top-level entries found no test directory or .test/spec. files. Even a single smoke test compounds confidence over time.
    • Evidence: Repo root contents
    • Action: Add a tests directory with at least a smoke test for your main entrypoint.
  • [low] tests — No tests detected: AbdullahBakir97/test

    • Heuristic detector based on top-level entries found no test directory or .test/spec. files. Even a single smoke test compounds confidence over time.
    • Evidence: Repo root contents
    • Action: Add a tests directory with at least a smoke test for your main entrypoint.
  • [low] tests — No tests detected: AbdullahBakir97/tzgf

    • Heuristic detector based on top-level entries found no test directory or .test/spec. files. Even a single smoke test compounds confidence over time.
    • Evidence: Repo root contents
    • Action: Add a tests directory with at least a smoke test for your main entrypoint.
  • [info] unverified-employer-context — Employer signal weak: AbdullahBakir97

@AbdullahBakir97 AbdullahBakir97 merged commit 5345919 into main Apr 30, 2026
10 checks passed
@AbdullahBakir97 AbdullahBakir97 deleted the fix/graphql-retry branch April 30, 2026 22:59
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