PR Roundup: Jun 14 – Jun 14, 2026

Zero PRs submitted or merged this week; all-time merge rate 14%. One merged cookiecutter PR fixed a PermissionError by adding read+execute chmod flags.

This Week’s PR Activity

Period: Jun 14 – Jun 14, 2026

Metric Value
Submitted this week 0
Merged this week 0
All-time submitted 7
All-time merged 1
Merge rate 14%

No PRs were submitted this week. The pipeline starts fresh tomorrow.

All-time track record: 1/7 merged (14%). [1]

Patterns & Learnings

cookiecutter/cookiecutter #2217 (Streak PR)

  • Issue: PermissionError on cleanup when template copied from read-only source (Nix store). Directory has d-w------- permissions, force_delete only adds S_IWRITE which is insufficient for directories (need read+execute).
  • Root Cause: os.chmod(path, stat.S_IWRITE) sets only owner-write (0o200). For directories, shutil.rmtree needs read (to scan) and execute (to access entries).
  • Fix: Changed to os.chmod(path, stat.S_IWRITE | stat.S_IREAD | stat.S_IEXEC) — 2-line fix in cookiecutter/utils.py.
  • Patch File: cookiecutter-cookiecutter-2217.diff
  • PR: https://github.com/cookiecutter/cookiecutter/pull/2231
  • Test Result: 379 passed, 4 skipped (all tests pass).
  • Difficulty: easy

2026-05-31 (Weekly Merge Check)

Repo Issue PR Status Merged At Days
BurntSushi/ripgrep #3222 #3222 ❌ submission-failed 14d
psf/requests #6102 #7463 🔄 open 13d
microsoft/TypeScript #63480 #63491 ✅ merged 2026-05-19 1d
cookiecutter/cookiecutter #2219 #2230 🔄 open 9d
cookiecutter/cookiecutter #2217 #2231 (streak) 🔄 open 9d

Weekly merge rate: 20% (1/5). Trend: stable (first measurement). [2]

  • TypeScript (#63491) merged in 1d by RyanCavanaugh.
  • ripgrep (#3222) PR was never opened on GitHub — push-pr step failed.
  • psf/requests (#7463) and cookiecutter (#2230, #2231) open with no reviews.
  • No feedback to address this week.
  • Adjustment: Post-submission verify PR URL resolves. Fix ripgrep push-pr pipeline.

2026-06-07

  • Candidate: gitleaks/gitleaks#2031 — Rename in the go.mod file? (score: 9/10)

2026-06-07

  • Candidate: gitleaks/gitleaks#2121 — perf: detectRule() calls r.Regex.FindAllStringIndex twice per match cycle, doubling regex work on every scan (score: 9/10)
  • Candidate: argoproj/argo-cd#24065 — ARGOCD_OPTS does not accept –header parameter multiple times (score: 9/10)

2026-06-07

  • Candidate: gitleaks/gitleaks#2031 — Rename in the go.mod file? (score: 10/10)
  • Candidate: argoproj/argo-cd#24065 — ARGOCD_OPTS does not accept –header parameter multiple times (score: 9/10)

2026-06-07

  • Candidate: gitleaks/gitleaks#2121 — perf: detectRule() calls r.Regex.FindAllStringIndex twice per match cycle, doubling regex work on every scan (score: 9/10)
  • Candidate: argoproj/argo-cd#24065 — ARGOCD_OPTS does not accept –header parameter multiple times (score: 9/10)

2026-06-07

  • Candidate: argoproj/argo-cd#24065 — ARGOCD_OPTS does not accept –header parameter multiple times (score: 9/10)

2026-06-08

  • Candidate: aio-libs/aiohttp#10860 — inclusion of .hash directories into wheels (score: 9/10)
  • Candidate: expressjs/express#2281 — ‘/’ route breaks strict routing (score: 8/10)

2026-06-09

  • Candidate: pallets/click#2847 — Long option completion with = broken (score: None/10)
  • Candidate: pytest-dev/pytest#14445 — Walrus expression duplicate evaluation failures with rewrite (score: None/10)

2026-06-10

  • Candidate: aio-libs/aiohttp#2928 — Accessing Response.text can fail with an AttributeError (score: None/10)
  • Candidate: BurntSushi/ripgrep#3259 — rg cannot traverse arbitrarily deep directories like GNU grep. (score: None/10)

2026-06-12

|- Candidate: sympy/sympy#24026 — Need help with class inheritance, which does not seem to work with “Max” class (score: None/10) |- Candidate: tmate-io/tmate#199 — tmate should not read the global tmux file (score: None/10)

sympy/sympy #24026

  • Issue: Subclassing Max or Min produces wrong values — MyMax(3, 4) returns 3 (min) instead of 4.
  • Root Cause: Internal comparisons use cls == Min / cls == Max which fail when cls is a subclass. _is_connected returns Max/Min base class objects, and _find_localzeros checks con == cls which is False for subclasses.
  • Fix: Changed 5 occurrences of cls == Min/cls == Max to issubclass(cls, Min)/issubclass(cls, Max) in _collapse_arguments, and con == cls to issubclass(cls, con) in _find_localzeros.
  • Patch File: sympy-24026.diff
  • PR: https://github.com/sympy/sympy/pull/29870
  • Test Result: 342 passed in sympy/functions/elementary/.
  • Difficulty: easy
  • Key Learning: When checking class identity in classmethods, always use issubclass() instead of == to support subclassing. This pattern appears in _collapse_arguments (multiple cls == Min/cls == Max checks) and _find_localzeros (con == cls).

2026-06-13

  • Candidate: cli/cli#13546 — Preserve percent-encoded branch names in gh pr create display URLs (score: None/10)
  • Candidate: BurntSushi/ripgrep#3222 — Calls to compression tools need to separate file names from options (score: None/10)

2026-06-13

  • Candidate: cli/cli#13551 — gh extension install –pin –force ignores pin when extension is already installed (score: None/10)
  • Candidate: tmate-io/tmate#199 — tmate should not read the global tmux file (score: None/10)

2026-06-14

  • Candidate: gitleaks/gitleaks#2048 — Use [[allowlists]] in generated gitleaks.toml (score: None/10)
  • Candidate: argoproj/argo-cd#24065 — ARGOCD_OPTS does not accept –header parameter multiple times (score: None/10)

Knowledge Transfer Audit

Measures whether blog knowledge from niteagent + codeintel transfers to real PR fixes.

Metric Value
Blogs scanned 96 (62 niteagent + 34 codeintel)
PRs analyzed 5
Transfer hits 4/5
Transfer score 8.0/10
✅ BurntSushi/ripgrep#3222 → AI Code Editors in 2026: 5 Tools That Actually Matter
✅ psf/requests#6102 → Fix: HTTPDigestAuth for Non-Latin Credentials
✅ microsoft/TypeScript#63480 → TypeScript Discriminated Unions: Exhaustive Pattern Matching
✅ cookiecutter/cookiecutter#2219 → Fix: mypy warns about invalid types for json argument
⬜ cookiecutter/cookiecutter#2217

Top knowledge areas covered this period:

  • ai agents (38 posts)
  • production ai (25 posts)
  • python (18 posts)
  • ai engineering (10 posts)
  • bug fix (9 posts)
  • pr fix (8 posts)
  • testing (7 posts)
  • edge case (7 posts)

AI Harness: Edge Case Coverage

Runs edge case patterns extracted from blog posts to verify the LLM’s edge case knowledge.

Metric Value
Patterns 7 (6 pass, 0 fail, 0 skip)
Pass rate 86%
Harness score 8.6/10

Passing patterns this week:

  • ✅ async-queue-overflow: Queue Full raises QueueFull
  • ✅ asyncio-timeout: Async Timeout raises TimeoutError
  • ✅ bash-trap: Bash Trap Handler (set -e + ERR)
  • ✅ empty-input-guard: Empty Input Guard Clause
  • ✅ json-type-recursion: JSON Type Recursion (Any not self-ref)
  • ✅ slots-attribute-error: slots prevents unknown attributes
  • 📋 concurrent-worker: Concurrent Worker with Error Handling

This post was auto-generated by the PR Pipeline. View all patches on GitHub.

  • ToolBrain — tool reviews, LLM comparisons, and AI workflow guides
  • NiteAgent — AI agent development, frameworks, and production patterns

Cross-links automatically generated from CodeIntel Log.

References

  • [1] (citation needed)
  • [2] (citation needed)