pyright

Activity, over time

Daily observations from the public event archive.

Attention

Daily stars & forks

Loading attention chart

Star accumulation

Cumulative stars

Loading star accumulation chart

Pull requests

Daily opens & merges

Loading pull requests chart

Conversations

Daily issues & comments

Loading conversations chart

Community

Daily accounts & reviews

Loading community chart

Releases

Daily releases

Loading releases chart

Mentions

7posts · 30d
Nov 30 posts
  1. The path to AI FDE #03: Python types you can trust, and async waiting done well Issue #02 was the quick TypeScript-to-Python map. This issue goes one level deeper on the two ideas every AI backend leans on: types (what data is allowed in) and async (how one process waits on many slow network calls). Twelve short points, each with the trap I’d fall into first. !Two panels. Part A, types you can trust: six cards from type hints to Pydantic errors and JSON Schema. Part B, waiting done well: six cards from the event loop to not blocking it --- Part A · Types you can trust ![Type hints: the parts of def count_words(text: str) -> int, collection hints like list[str], str | None as the Python 3.10 spelling of Optional[str], and count_words(42) running anyway unless mypy or Pyright flags it](substack-post-media.s3.amazonaws.com) 1. Hints describe intent. def count_words(text: str) -> int tells readers, editors and type checkers what goes in and what comes out. Collections take their item types in brackets: list[str], dict[str, int]. 2. “Maybe missing” is spelled X | None. Since Python 3.10 (PEP 604) you write str | None instead of Optional[str]. Trap: in Pydantic v2, subtitle: str | None with no default is still a required field. Add = None if callers may leave it out. 3. Checked before running, not while running. As covered in #02, Python ignores hints at runtime, so count_words(42) runs anyway and only mypy or Pyright flags it. Run one of them in CI. !Pydantic models check data when it arrives: incoming data passes through a toy Book model with Field constraints and becomes a Book or a ValidationError; a table shows str | None without a default is still required 4. Pydantic models check data when it arrives. A model is a class that inherits from BaseModel, with typed fields, and creating an instance runs validation. Field() adds constraints such as gt=0 or max_length=200. If no error is raised, the fields are guaranteed to match their types. !Lax by default: the same input with pages as the string "412" and an extra isbn key is coerced and silently trimmed by default, but rejected with two errors under strict=True and extra='forbid' 5. Lax by default: know what it lets through. Pydantic coerces when it can (pages="412" becomes the integer 412) and silently ignores extra keys. That’s handy for query strings and environment variables, but risky for data from a model or another service. For those, opt into strict=True and extra='forbid'. !Errors that list everything: one ValidationError reports title, pages and tags.2 at once; model_json_schema exports the model as a JSON Schema with exclusiveMinimum for gt=0 6. One error lists every problem, and a model can describe itself. A ValidationError reports all failing fields with their locations (such as tags.2), not just the first. Book.model_validate_json(raw) validates a JSON string directly, and Book.model_json_schema() exports a JSON Schema, which is how structured outputs get their contract (coming later in the series). Part B · Waiting done well !Waiting, overlapped: one LLM call is mostly waiting on the provider; an event loop runs tasks A, B and C one at a time, switching whenever a task awaits a reply 7. AI backends mostly wait. An LLM call spends most of its time waiting on someone else’s server, not computing on yours. Async lets one process overlap those waits instead of standing idle through each one. 8. The event loop runs one task at a time. asyncio uses cooperative scheduling: whenever the running task hits an await on something not yet ready, the loop switches to another. Nothing is truly simultaneous; the overlap comes only from the waiting. !await waits, tasks overlap: the asyncio docs' say_after example takes 3 seconds with two back-to-back awaits and about 2 seconds with two tasks 9. async def makes a coroutine, and asyncio.run() starts the loop. asyncio.run(main()) is the usual entry point in a script. Calling main() on its own only creates a coroutine object, which does nothing until awaited (#02, point 6). In FastAPI, the framework runs the loop for you. 10. Back-to-back awaits are still sequential. This is the trap I’d hit first. In the asyncio docs’ example, await say_after(1, ...) then await say_after(2, ...) takes 3 seconds: async syntax alone doesn’t make anything concurrent. 11. Tasks are how work overlaps. asyncio.create_task(coro) schedules the coroutine to run soon, alongside the current one, which brings the same example down to about 2 seconds. Keep a reference to every task: the loop holds tasks only weakly, so an unreferenced task can be garbage-collected before it finishes. TaskGroup handles that for you (next issue). !One blocking call stalls everyone: two tasks finish in 2 seconds with await asyncio.sleep but take 3 seconds with time.sleep; asyncio.to_thread moves unavoidable blocking I/O off the loop 12. One blocking call stalls everyone. time.sleep(1) or a synchronous HTTP client inside async def freezes the whole loop, while await asyncio.sleep(1) always suspends just the current task. For blocking I/O you can’t avoid, await asyncio.to_thread(fn) moves it off the loop. --- Try it (15 minutes, toy example) Write async def nap(n) that does await asyncio.sleep(n). Time await nap(1); await nap(2), then the same two calls wrapped in create_task. Then swap in time.sleep and watch the overlap vanish. Separately, define a Book model with title: str and pages: int = Field(gt=0), and feed it one good dict and one bad dict. Common beginner mistakes - Assuming hints validate input. Only Pydantic (or your own checks) does that. - Writing x: str | None and expecting it to be optional in Pydantic v2. It needs = None. - Thinking async def plus await equals parallel. It doesn’t without tasks. - Creating tasks and dropping the reference. Takeaway Hints describe, Pydantic enforces. await waits; tasks overlap. That’s the whole issue in two lines. Where this fits in my roadmap: these are the concepts behind the foundations block of my roadmap (Python typing, errors and async; FastAPI and Pydantic models). That block’s exercises (a typed document loader, a small validated LLM endpoint and its tests) are mine to build, so nothing above is that code; the examples are deliberately toy ones. Next issue: running many calls at once safely (gather, TaskGroup, timeouts) and FastAPI beyond hello-world. Over to you: which bit you first: a missing await, or an await that should have been a task? --- Sources 1. Python docs: typing (annotations aren’t enforced at runtime). <docs.python.org> 2. PEP 604: Allow writing union types as X | Y (Python 3.10). <peps.python.org> 3. mypy documentation. <mypy.readthedocs.io> 4. Pyright. <microsoft/pyright> 5. Pydantic: Models (validation on instantiation, guarantees, coercion, extra data ignored by default, ValidationError lists all errors, model_validate_json, model_json_schema). <pydantic.dev> 6. Pydantic: Fields (Field() constraints such as gt and max_length; v2 no longer gives Optional an implicit None default). <pydantic.dev> 7. Pydantic: Strict Mode (default coercion of '123' to 123; enabling strict mode). <pydantic.dev> 8. Python docs: Coroutines and Tasks (calling a coroutine doesn’t schedule it; asyncio.run; the 3-second vs 2-second example; create_task; keep task references; sleep always suspends; to_thread; cooperative scheduling). <docs.python.org> 9. Python docs: Developing with asyncio (”Running Blocking Code”). <docs.python.org> Sources checked Oct 18, 2026. --- *Originally published on The Path to AI FDE on Substack. Subscribe for the next issue: dhanushkumarsivaji.substack.com

  2. Reddit · · r/codereview · u/Exciting_Item_2732

    Why probabilistic AI review bots fail at catching AI agent bugs—and how we enforce deterministic AST invariants & 12 CWE security shields in GitHub Actions >TL;DR: AI coding agents increased raw PR volume by 300%, yet overall merge velocity has dropped by 40% because Senior Engineers spend 15–20 hrs/week untangling 200-line hallucinated wrappers, deleted tests, and subtle CWE security flaws. After shipping patches into tier-1 upstream systems repos (LLVM #215076, Meta Velox #18529, DuckDB #26443, Apache DataFusion #24394, Microsoft Pyright #11605, Tokio #8595, ClickHouse #114954, OpenAI Triton #12221), we codified those exact deterministic CI gates into an open GitHub Actions workflow (ZeroSlop · Architecture & Simulator) that strips 94% of AI bloat, enforces 12 CWE security shields, and gets PRs merged 100% green in minutes. 1. The 2026 Engineering Bottleneck: Why AI PRs Stall in Review When shipping patches into upstream systems repos like LLVM, Meta Velox, DuckDB, or Tokio, a real production fix is 4 to 15 lines of surgical invariant changes paired with a deterministic regression test that passes CI on the first push. Inside commercial teams using Cursor, Copilot, or Claude Code, the opposite happens: - 94% Diff Bloat: An agent generates a 240-line wrapper class instead of fixing a 4-line boundary condition (interactive diff breakdown). - Weakened Tests: When a test fails, the agent silently deletes or loosens the assertion to manufacture a green check. - Noisy LLM Review Bots: Conversational AI review bots run another LLM to dump 25 chatty comments on top of a bloated PR—without shrinking the diff or getting the PR merged. 2. Conversational LLM Review Bots vs. Deterministic PR Airlock |Engineering Dimension|Conversational AI Review Bots|Deterministic PR Airlock (ZeroSlop)| |:-|:-|:-| |Primary Objective|Leave 25+ chatty LLM comments on a bloated diff|Get PRs merged 100% green in minutes (not 4 days)| |Diff Minimization|Reviews 200 lines of hallucinated wrappers as-is|Strips up to 94% of AI bloat down to the core AST invariant| |CI Failure Triage|Ignores red CI checks or hallucinates fixes|Separates contributor code defects from runner flakes| |Test Integrity|Misses deleted or weakened test assertions|Hard-blocks unauthorized regression test deletions| |PR Comment Hygiene|Spams new threads on every git push|Strictly 1 self-updating PR Verdict Card + Mermaid Graph| |Security & Privacy|Cloud LLM retention & external dashboards|12-Shield CWE Airlock + Zero Code Retention| 3. The 12-Shield Deterministic CWE Security Airlock (ZS-SEC-001 – ZS-SEC-012) Every Pull Request is audited in milliseconds across 8 merge-readiness signals (0–100) and 12 deterministic CWE security shields before a human reviewer is pinged: |Shield ID|Security Vector & CWE / CVE Mapping|What ZeroSlop Security Deterministically Intercepts| |:-|:-|:-| |ZS-SEC-001|SQL & Vector Injection (CWE-89 / CWE-943)|Unparameterized SQL/NoSQL/Vector template literals & raw string concatenation| |ZS-SEC-002|Hardcoded & Seeded Secrets (CWE-798 / CWE-256)|API keys, JWT secrets, seeded credentials & plaintext password comparisons| |ZS-SEC-003|Unbound Identity / IDOR (CWE-639 / CWE-862)|Trusting req.body.userId instead of verified session/JWT caller identity| |ZS-SEC-004|Command & Eval Injection (CWE-78 / CWE-94)|Unsanitized child_process.exec, os.system, subprocess(shell=True), eval()| |ZS-SEC-005|Silent Exception Swallowing (CWE-390)|Empty catch () {} blocks and swallowed promise rejections that hide crashes| |ZS-SEC-006|XSS & Unsanitized DOM (CWE-79)|dangerouslySetInnerHTML, .innerHTML =, and unescaped template rendering| |ZS-SEC-007|Unsafe Deserialization (CWE-502 / CWE-22)|pickle.loads, yaml.load without SafeLoader, and ../ path traversal| |ZS-SEC-008|SSRF & Disabled TLS (CWE-918 / CWE-295)|Unvalidated fetch(req.body.url) & NODE_TLS_REJECT_UNAUTHORIZED = '0'| |ZS-SEC-009|CI/CD "Pwn Requests" (CWE-426 / CWE-250)|pull_request_target fork checkouts & ${{ github.event.pull_request.title }} injection| |ZS-SEC-010|AI Package "Slopsquatting" (CWE-829 / CWE-494)|Hallucinated npm/PyPI/Cargo packages, unpinned Git deps & `curl| |ZS-SEC-011|Resource Exhaustion / DoS (CWE-400 / CWE-770)|while(true) without exit bounds, leaked setInterval, unbounded Promise.all| |ZS-SEC-012|Trojan Source & Jailbreaks (CVE-2021-42574)|Invisible Unicode Bidi characters & hidden IGNORE PREVIOUS INSTRUCTIONS comments| 4. Upstream Systems Proof (Click Any PR to Inspect the Diff) These deterministic CI invariants come directly from shipping merged & 100% green Pull Requests across upstream systems repositories: |Upstream Repository|Live Pull Request|Status|Core Systems Invariant & Regression Coverage| |:-|:-|:-|:-| |LLVM Compiler Infrastructure|llvm/llvm-project#215076|MERGED|Fixed Waitcnt brackets in GFX12+ AMDGPUAsmPrinter with MC regression tests| |Meta Velox Execution Engine|facebookincubator/velox#18529|MERGED|Aligned DecimalUtil::toByteArray overflow bounds & restored kMaxDecimalBytes| |DuckDB Analytical Engine|duckdb/duckdb#26443|MERGED|Fixed pragma_storage_info internal compressed segment type alignment| |Apache DataFusion Query Engine|apache/datafusion#24394|MERGED|Fixed lead()/lag() window frame boundaries with non-NULL default values| |Microsoft Pyright Type Checker|microsoft/pyright#11605|MERGED|Resolved type narrowing across nested loop closures & pattern guards| |Tokio Async Rust Runtime|tokio-rs/tokio#8595|100% GREEN|Preserved Coop budget accounting across JoinSet & FuturesUnordered| |ClickHouse OLAP DBMS|ClickHouse/ClickHouse#114954|100% GREEN|Fixed StorageURL distributed cluster header forwarding & serialization| |OpenAI Triton GPU Compiler|triton-lang/triton#12221|100% GREEN|Enforced strict tensor descriptor stride & block shape invariants| |Cloudflare Agents SDK|cloudflare/agents#1248|MERGED|Hardened state synchronization & WebSocket hibernation lifecycle invariants| 5. Architecture Documentation & GitHub Action Source - Interactive PR Simulator & Architecture: ribbsaetersystems.com - 12-Shield CWE & Zero-Retention Security Matrix: ribbsaetersystems.com - GitHub Action Workflow: github.com/marketplace/actions/zeroslop-by-ribbsa… - GitHub Action Repository: patrickswedish/zeroslop-action - Technical Deep-Dive Writeup: ribbsaetersystems.com What deterministic CI gates or pre-review checks are your teams enforcing in 2026 to get PRs merged cleanly without burning out your staff engineers?

    2 comments
  3. Reddit · · r/SaasDevelopers · u/Exciting_Item_2732

    16.8 hours to 16.7 hours? Why we built a 3.8-second GitHub Actions pre-flight gate (proven across 34+ merged PRs in LLVM, Meta Velox, Valkey & DuckDB) We built ZeroSlop (patrickswedish/zeroslop-action@v1) because cloud AI code review bots charge $24–$40 per seat ($41,760/yr for 174 engineers), yet their own published case studies admit median PR merge time barely moves (16.8 hours before to 16.7 hours after — a 6-minute gain). Instead of another noisy cloud chatbot leaving 30 comments on your pull request, ZeroSlop is a fast 3.8-second pre-flight gate inside GitHub Actions that strips AI wrapper bloat and blocks deleted tests before human review—with zero source code ever leaving your runner. Proven Upstream Merges (The Wall of Proof) We don't ask anyone to take our word for it—our track record of merged pull requests says everything. Every single one of these upstream C++, Rust, and C pull requests passed through ZeroSlop and was merged by core maintainers: - LLVM (Core C++ Compiler Infrastructure for Apple, Google & Rust): llvm-project#215076 - Meta Velox (Meta's C++ Vectorized Database Engine): velox#18529 - Valkey (Linux Foundation C In-Memory Datastore, successor to Redis): valkey#4424 - DuckDB (High-Performance C++ Analytical OLAP Database): duckdb#26443 - Apache DataFusion (Extensible Rust Arrow Query Engine): datafusion#24394 - Microsoft Pyright (Microsoft's Static Python Type Checker): pyright#11605 - eBay NuRaft (C++ Raft Distributed Consensus Engine): NuRaft#663 Clear 3-Tier Pricing & 14-Day 100% Refund Guarantee - 1st PR Free Evaluation Try ($0): Test it on 1 pull request out of the box—no credit card required. - ZeroSlop Pro ($29/mo): 1 Developer Seat (unlimited repositories & PRs), backed by a 2-week (14-day) 100% full refund guarantee, no questions asked. - ZeroSlop Enterprise ($1,999/mo): Per 100 Active Developers ($19.99/dev in 100-seat blocks). - GitHub Marketplace: github.com/marketplace/actions/zeroslop-by-ribbsa… - Wall of Merges & Live Demo: ribbsaetersystems.com

  4. Reddit · · r/microsaas · u/Exciting_Item_2732

    How we structured a 3-tier self-serve GitHub Actions SaaS ($0 1-PR try / $29 Pro / $1,999 Enterprise) against $41,760/yr legacy AI review bots We built ZeroSlop because cloud AI code review bots charge $24–$40 per seat ($41,760/yr for 174 engineers), yet their own published case studies admit median PR merge time barely moves (16.8 hours before to 16.7 hours after — a 6-minute gain). Instead of another noisy cloud chatbot leaving 30 comments on your pull request, ZeroSlop is a fast 3.8-second pre-flight gate inside GitHub Actions that strips AI wrapper bloat and blocks deleted tests before human review—with zero source code ever leaving your runner. Proven Upstream Merges (The Wall of Proof) We don't ask anyone to take our word for it—our track record of merged pull requests says everything. Every single one of these upstream C++, Rust, and C pull requests passed through ZeroSlop and was merged by core maintainers: - LLVM (Core C++ Compiler Infrastructure for Apple, Google & Rust): llvm-project#215076 - Meta Velox (Meta's C++ Vectorized Database Engine): velox#18529 - Valkey (Linux Foundation C In-Memory Datastore, successor to Redis): valkey#4424 - DuckDB (High-Performance C++ Analytical OLAP Database): duckdb#26443 - Apache DataFusion (Extensible Rust Arrow Query Engine): datafusion#24394 - Microsoft Pyright (Microsoft's Static Python Type Checker): pyright#11605 - eBay NuRaft (C++ Raft Distributed Consensus Engine): NuRaft#663 Clear 3-Tier Pricing & 14-Day 100% Refund Guarantee - 1st PR Free Evaluation Try ($0): Test it on 1 pull request out of the box—no credit card required. - ZeroSlop Pro ($29/mo): 1 Developer Seat (unlimited repositories & PRs), backed by a 2-week (14-day) 100% full refund guarantee, no questions asked. - ZeroSlop Enterprise ($1,999/mo): Per 100 Active Developers ($19.99/dev in 100-seat blocks). - GitHub Marketplace: github.com/marketplace/actions/zeroslop-by-ribbsa… - Wall of Merges & Live Demo: ribbsaetersystems.com

    7 comments
  5. Reddit · · r/cicd · u/Exciting_Item_2732

    Open-source maintainers are drowning in AI slop PRs. We built a deterministic GitHub Action (ZeroSlop) that halts deleted tests, blocks 12 CWE flaws, and delivers 100% green merges in 3.8s >TL;DR: Open-source maintainers and senior engineers are spending 15–20 hours a week babysitting AI-generated pull requests that look plausible on the surface, but sneak in deleted regression tests, memory leaks, and subtle security vulnerabilities. Chatty review bots like CodeRabbit just make the problem worse by dumping 30+ hallucinated LLM comments on every diff. We built ZeroSlop™—a deterministic, zero-retention GitHub Actions PR Airlock that runs in 3.8s inside runner RAM, strips 94% of hallucinated wrapper bloat, and delivers 100% green, merge-ready PRs. The Real Problem: Stacking More LLMs Doesn't Fix AI Noise Have you seen what first-generation AI review bots actually dump onto Pull Requests? 40 unsolicited bot comments on a 50-line diff. Hallucinated syntax nitpicks. And 15 paragraphs of LLM noise that maintainers have to manually dismiss just to hit "Merge." Now competitors brag about fine-tuning smaller models like Nemotron to "route" reviews. Let's be completely real: adding another LLM with fewer capabilities does not solve an AI noise problem. It simply stacks more latency, more hallucinations, and more noise on top of your repository. AI coding agents (Cursor, Copilot, Claude Code) are generating code 10x faster than humans can review it. In the rush, they quietly delete regression tests to make CI pass, introduce missing error boundaries, and bloat the AST. Engineering teams don't need another chatbot. They need an Invariant Airlock. How ZeroSlop Enforces in 3.8 Seconds (Runner RAM) ZeroSlop doesn't write chatty essays. It runs deterministically inside your GitHub Actions runner: 1. Mathematical Test Shield: Calculates net_assertion_delta. If an AI agent quietly deleted regression tests to manufacture a passing CI run, it hard-blocks the merge instantly. 2. 12-Shield CWE Security Engine: Static static analysis blocking SQLi (CWE-89), hardcoded secrets (CWE-798), IDOR (CWE-639), command injection (CWE-78), SSRF (CWE-918), CI workflow Pwn Requests (CWE-426), and AI Slopsquatting (CWE-829). 3. AST Diff Minimization: Strips up to 94% of hallucinated adapter bloat, dead wrappers, and mock utilities down to the surgical invariant change. 4. Single In-Place Status Card: Zero comment spam across force-pushes. Exactly ONE clean, self-updating status card with an embedded Mermaid architecture graph. 5. Zero Data Retention: Runs entirely in ephemeral runner RAM. Proprietary code is never stored, retained, or used to train models. Battle-Tested Upstream Proof ZeroSlop is powered by the exact invariant engine used to ship merged, 100% green pull requests into the world's most unforgiving upstream production codebases: |Upstream Repository|Upstream Status|Architectural Invariant Delivered| |:-|:-|:-| |LLVM Compiler Infrastructure|MERGED<br/>PR #215076|X86 SelectionDAG non-power-of-two vector division lowering| |Meta Velox Execution Engine|MERGED<br/>PR #18529|TopNRowNumber in-memory rank ordering & partition stream parity| |DuckDB Analytical Engine|MERGED<br/>PR #26443|PIVOT IN list zero-argument row() expression preservation| |Apache DataFusion|MERGED<br/>PR #24394|Execution-layer schema conformance across physical execution| |Microsoft Pyright|MERGED<br/>PR #11605|Inherited asymmetric descriptor detection across effective MRO| |Tokio Async Runtime|110/110 GREEN<br/>PR #8595|Paused time wake tracking & zero-syscall timer queue preservation| |OpenAI Triton GPU Compiler|CHECKS GREEN<br/>PR #12221|Nanobind static build free-threaded Python PEP 703 GIL slot| |ClickHouse OLAP Engine|174/176 GREEN<br/>PR #114954|Bounds validation on parallel replicas query plan limit pipeline| Try It Free Every repository gets 1 complimentary PR audit free out of the box with zero configuration required. - GitHub Marketplace Action: github.com/marketplace/actions/zeroslop-by-ribbsa… - Live Interactive In-Browser Simulator: ribbsaetersystems.com - 12-Shield Security Brief: ribbsaetersystems.com Pro seats ($29/mo) include our 14-Day Sovereign Performance Guarantee: slash your team's PR review cycle time by 60%, or get an immediate 100% refund. Would love maintainer feedback on what other invariant checks you’d like to see added!

    8 comments
  6. Reddit · · r/AIcodingProfessionals · u/Exciting_Item_2732

    Why probabilistic AI review bots fail at catching AI agent bugs—and how we enforce deterministic AST invariants & 12 CWE security shields in GitHub Actions >TL;DR: AI coding agents increased raw PR volume by 300%, yet overall merge velocity has dropped by 40% because Senior Engineers spend 15–20 hrs/week untangling 200-line hallucinated wrappers, deleted tests, and subtle CWE security flaws. After shipping patches into tier-1 upstream systems repos (LLVM #215076, Meta Velox #18529, DuckDB #26443, Apache DataFusion #24394, Microsoft Pyright #11605, Tokio #8595, ClickHouse #114954, OpenAI Triton #12221), we codified those exact deterministic CI gates into an open GitHub Actions workflow (ZeroSlop · Architecture & Simulator) that strips 94% of AI bloat, enforces 12 CWE security shields, and gets PRs merged 100% green in minutes. 1. The 2026 Engineering Bottleneck: Why AI PRs Stall in Review When shipping patches into upstream systems repos like LLVM, Meta Velox, DuckDB, or Tokio, a real production fix is 4 to 15 lines of surgical invariant changes paired with a deterministic regression test that passes CI on the first push. Inside commercial teams using Cursor, Copilot, or Claude Code, the opposite happens: - 94% Diff Bloat: An agent generates a 240-line wrapper class instead of fixing a 4-line boundary condition (interactive diff breakdown). - Weakened Tests: When a test fails, the agent silently deletes or loosens the assertion to manufacture a green check. - Noisy LLM Review Bots: Conversational AI review bots run another LLM to dump 25 chatty comments on top of a bloated PR—without shrinking the diff or getting the PR merged. 2. Conversational LLM Review Bots vs. Deterministic PR Airlock |Engineering Dimension|Conversational AI Review Bots|Deterministic PR Airlock (ZeroSlop)| |:-|:-|:-| |Primary Objective|Leave 25+ chatty LLM comments on a bloated diff|Get PRs merged 100% green in minutes (not 4 days)| |Diff Minimization|Reviews 200 lines of hallucinated wrappers as-is|Strips up to 94% of AI bloat down to the core AST invariant| |CI Failure Triage|Ignores red CI checks or hallucinates fixes|Separates contributor code defects from runner flakes| |Test Integrity|Misses deleted or weakened test assertions|Hard-blocks unauthorized regression test deletions| |PR Comment Hygiene|Spams new threads on every git push|Strictly 1 self-updating PR Verdict Card + Mermaid Graph| |Security & Privacy|Cloud LLM retention & external dashboards|12-Shield CWE Airlock + Zero Code Retention| 3. The 12-Shield Deterministic CWE Security Airlock (ZS-SEC-001 – ZS-SEC-012) Every Pull Request is audited in milliseconds across 8 merge-readiness signals (0–100) and 12 deterministic CWE security shields before a human reviewer is pinged: |Shield ID|Security Vector & CWE / CVE Mapping|What ZeroSlop Security Deterministically Intercepts| |:-|:-|:-| |ZS-SEC-001|SQL & Vector Injection (CWE-89 / CWE-943)|Unparameterized SQL/NoSQL/Vector template literals & raw string concatenation| |ZS-SEC-002|Hardcoded & Seeded Secrets (CWE-798 / CWE-256)|API keys, JWT secrets, seeded credentials & plaintext password comparisons| |ZS-SEC-003|Unbound Identity / IDOR (CWE-639 / CWE-862)|Trusting req.body.userId instead of verified session/JWT caller identity| |ZS-SEC-004|Command & Eval Injection (CWE-78 / CWE-94)|Unsanitized child_process.exec, os.system, subprocess(shell=True), eval()| |ZS-SEC-005|Silent Exception Swallowing (CWE-390)|Empty catch () {} blocks and swallowed promise rejections that hide crashes| |ZS-SEC-006|XSS & Unsanitized DOM (CWE-79)|dangerouslySetInnerHTML, .innerHTML =, and unescaped template rendering| |ZS-SEC-007|Unsafe Deserialization (CWE-502 / CWE-22)|pickle.loads, yaml.load without SafeLoader, and ../ path traversal| |ZS-SEC-008|SSRF & Disabled TLS (CWE-918 / CWE-295)|Unvalidated fetch(req.body.url) & NODE_TLS_REJECT_UNAUTHORIZED = '0'| |ZS-SEC-009|CI/CD "Pwn Requests" (CWE-426 / CWE-250)|pull_request_target fork checkouts & ${{ github.event.pull_request.title }} injection| |ZS-SEC-010|AI Package "Slopsquatting" (CWE-829 / CWE-494)|Hallucinated npm/PyPI/Cargo packages, unpinned Git deps & curl | bash| |ZS-SEC-011|Resource Exhaustion / DoS (CWE-400 / CWE-770)|while(true) without exit bounds, leaked setInterval, unbounded Promise.all| |ZS-SEC-012|Trojan Source & Jailbreaks (CVE-2021-42574)|Invisible Unicode Bidi characters & hidden IGNORE PREVIOUS INSTRUCTIONS comments| 4. Upstream Systems Proof (Click Any PR to Inspect the Diff) These deterministic CI invariants come directly from shipping merged & 100% green Pull Requests across upstream systems repositories: |Upstream Repository|Live Pull Request|Status|Core Systems Invariant & Regression Coverage| |:-|:-|:-|:-| |LLVM Compiler Infrastructure|llvm/llvm-project#215076|MERGED|Fixed Waitcnt brackets in GFX12+ AMDGPUAsmPrinter with MC regression tests| |Meta Velox Execution Engine|facebookincubator/velox#18529|MERGED|Aligned DecimalUtil::toByteArray overflow bounds & restored kMaxDecimalBytes| |DuckDB Analytical Engine|duckdb/duckdb#26443|MERGED|Fixed pragma_storage_info internal compressed segment type alignment| |Apache DataFusion Query Engine|apache/datafusion#24394|MERGED|Fixed lead()/lag() window frame boundaries with non-NULL default values| |Microsoft Pyright Type Checker|microsoft/pyright#11605|MERGED|Resolved type narrowing across nested loop closures & pattern guards| |Tokio Async Rust Runtime|tokio-rs/tokio#8595|100% GREEN|Preserved Coop budget accounting across JoinSet & FuturesUnordered| |ClickHouse OLAP DBMS|ClickHouse/ClickHouse#114954|100% GREEN|Fixed StorageURL distributed cluster header forwarding & serialization| |OpenAI Triton GPU Compiler|triton-lang/triton#12221|100% GREEN|Enforced strict tensor descriptor stride & block shape invariants| |Cloudflare Agents SDK|cloudflare/agents#1248|MERGED|Hardened state synchronization & WebSocket hibernation lifecycle invariants| 5. Architecture Documentation & GitHub Action Source - Interactive PR Simulator & Architecture: ribbsaetersystems.com - 12-Shield CWE & Zero-Retention Security Matrix: ribbsaetersystems.com - GitHub Action Workflow: github.com/marketplace/actions/zeroslop-by-ribbsa… - GitHub Action Repository: patrickswedish/zeroslop-action - Technical Deep-Dive Writeup: ribbsaetersystems.com What deterministic CI gates or pre-review checks are your teams enforcing in 2026 to get PRs merged cleanly without burning out your staff engineers?

    1 point

Latest stargazers

The last 10 distinct accounts we observed this year.

Most active participants

PR, issue, comment & review events in the past year.

Packages

2
PackageVersionDownloads · 30dTrend · 30d
pyrightv1.1.99
v1.1.99
≥1.4M
v1.1.414
≥46

README badges

Embed a badge in your README or website.

  • microsoft/pyright reached #2 in daily stars on gitwal · Mar 24, 2019
Live mentions · last 30 days
microsoft/pyright mentions in the last 30 days