Weekly Project News

Archives
Subscribe

Weekly GitHub Report for Keras: August 17, 2026 - August 24, 2026 (22:00:40)

Weekly GitHub Report for Keras

Thank you for subscribing to our weekly newsletter! Each week, we deliver a comprehensive summary of your GitHub project's latest activity right to your inbox, including an overview of your project's issues, pull requests, contributors, and commit activity.


Table of Contents

  • I. News
    • 1.1. Recent Version Releases
    • 1.2. Other Noteworthy Updates
  • II. Issues
    • 2.1. Top 5 Active Issues
    • 2.2. Top 5 Stale Issues
    • 2.3. Open Issues
    • 2.4. Closed Issues
    • 2.5. Issue Discussion Insights
  • III. Pull Requests
    • 3.1. Open Pull Requests
    • 3.2. Closed Pull Requests
    • 3.3. Pull Request Discussion Insights
  • IV. Contributors
    • 4.1. Contributors

I. News

1.1 Recent Version Releases:

The current version of this repository is v3.14.0

1.2 Version Information:

Released on April 2, 2026, this version introduces full Orbax checkpoint integration, advanced quantization methods like Activation-aware Weight Quantization, a new ScheduleFreeAdamW optimizer, and optional Gated Attention in key attention layers. It also significantly enhances OpenVINO backend support with extensive NumPy, neural network, and control flow operations, adds numerous new math and preprocessing features, and includes various backend-specific improvements and bug fixes.

Click here to view the full release notes!

II. Issues

2.1 Top 5 Active Issues:

We consider active issues to be issues that that have been commented on most frequently within the last week. Bot comments are omitted.

  1. [TYPE:BUG] [BACKEND:TORCH] [LAYERS] [PR-APPROVED] Torch backend: stateful GRU using cuDNN fails during backward due to an in-place state update: This issue describes a problem where a stateful GRU layer in Keras using the Torch backend with cuDNN enabled fails during the backward pass due to an in-place modification of the initial hidden state, causing a runtime error. The forward pass works correctly, but the backward pass raises an exception because the hidden state is updated in place before autograd can use it, and a confirmed workaround is to disable the cuDNN optimization by setting use_cudnn=False.

    • The comments include an offer to submit a pull request for the proposed fix, a request to take on the task, and confirmation from a maintainer that the issue is reproducible with the specified Keras version along with a shared notebook for reproduction; contributors are encouraged to submit a fix.
    • Number of comments this week: 3
  2. [KERAS-TEAM-REVIEW-PENDING] Add label_smoothing to SparseCategoricalCrossentropy: This issue requests the addition of a label_smoothing parameter to the SparseCategoricalCrossentropy loss function in Keras, which currently supports this feature in other crossentropy losses but not in the sparse variant. The motivation is to enable label smoothing directly on integer targets without requiring one-hot encoding, reducing memory overhead and aligning Keras functionality with other frameworks like PyTorch.

    • The comments include a request for increased visibility by tagging a team member and an update providing a link to a draft pull request that implements the proposed feature.
    • Number of comments this week: 2
  3. [STAT:CONTRIBUTIONS WELCOME] [TYPE:BUG] [BACKEND:TORCH] [Fix] Resolve PyTorch DDP execution crashes, NCHW shape errors, and sampler state: This issue addresses multiple critical bugs in a PyTorch Distributed Data Parallel (DDP) training script, including execution crashes caused by improper multiprocessing start methods, tensor shape mismatches between Keras and PyTorch formats, incorrect target label data types for loss computation, and missing epoch synchronization in distributed samplers. It also highlights the need for validation to prevent runtime errors in environments without available CUDA GPUs, providing a comprehensive fix and corrected implementation to ensure stable multi-GPU training.

    • The comment acknowledges the issue report and confirms that a pull request has been opened to fix the multiprocessing start method, label data type casting, sampler epoch synchronization, and GPU availability checks in the relevant training guide script.
    • Number of comments this week: 1
  4. [TYPE:FEATURE] Feature Request: BDH layer: This issue proposes adding a BDH layer to the Keras layers stack, which implements linear attention as described in a recent paper, offering cost-efficiency, data efficiency, and interpretability comparable to traditional transformers. The user provides a rough implementation of the BDH layer and requests feedback on whether this feature aligns with the project's addition policy before submitting a pull request.

    • The comment acknowledges the proposal but suggests that due to the novelty of the BDH layer, it would be better suited as an external library initially. The team expresses openness to considering integration into Keras in the future based on adoption and community interest.
    • Number of comments this week: 1
  5. [KERAS-TEAM-REVIEW-PENDING] [LAYERS] Support for mixed_float8: This issue requests support for a mixed_float8 data type policy in Keras to enable mixed precision inference, particularly targeting Nvidia L4 GPUs. The user reports an error when setting this policy globally, as many layers do not implement the required _float8_call method, causing failures during model execution.

    • The comment explains that the error arises because only certain layers implement float8 quantization, and applying a global quantized policy causes unsupported layers to fail; it suggests using model.quantize() to selectively apply quantization and recommends using mixed_bfloat16 with int8 quantization for better support and performance on L4 GPUs, while also proposing a fix to allow unsupported layers to fall back gracefully.
    • Number of comments this week: 1

2.2 Top 5 Stale Issues:

We consider stale issues to be issues that has had no activity within the last 30 days. The team should work together to get these issues resolved and closed as soon as possible.

As of our latest update, there are no stale issues for the project this week.

2.3 Open Issues

This section lists, groups, and then summarizes issues that were created within the last week in the repository.

Issues Opened This Week: 10

Summarized Issues:

  • Distributed Training Bugs: Multiple critical bugs affect the PyTorch Distributed Data Parallel (DDP) training script, including deadlocks from improper multiprocessing start methods, tensor shape mismatches between NHWC and NCHW formats, target label data type incompatibilities, missing epoch synchronization in the distributed sampler, and unhandled exceptions when no GPUs are available. These issues collectively hinder stable and correct multi-GPU distributed training workflows.
  • issues/23453
  • New Layer Addition: A proposal to add a BDH layer to the Keras layers stack introduces a recent linear attention mechanism from the BDH paper, which offers cost-efficient, data-efficient, and interpretable transformer performance with linear inference complexity. This addition aims to enhance transformer models with improved efficiency and interpretability.
  • issues/23461
  • GRU Backward Pass Failure: A failure occurs during the backward pass of a stateful GRU layer using the Torch backend with cuDNN enabled, caused by an in-place modification of the initial hidden state that conflicts with autograd's gradient computation. This bug prevents correct gradient calculation and training stability for stateful GRU models.
  • issues/23462
  • Mixed Float8 Precision Support: There is a need to support mixed_float8 precision in Keras to enable mixed precision inference with float8, with current limitations and errors when setting a global quantized policy. A proposed fix allows layers that do not implement float8 to fall back gracefully, but full float8 inference support requires more extensive calibration and backend work.
  • issues/23479
  • Backend Function Path Update: The codebase requires updating all instances of the function backend.is_tensor to the new path backend.ops.is_tensor to maintain consistency and correctness in tensor type checking. This change affects multiple parts of the code to align with updated backend API structures.
  • issues/23485
  • Label Smoothing for SparseCategoricalCrossentropy: Adding support for the label_smoothing parameter to the SparseCategoricalCrossentropy loss function would enable label smoothing directly on integer targets without one-hot encoding. This enhancement aligns its functionality with other crossentropy losses and improves efficiency for tasks with large vocabularies or segmentation maps.
  • issues/23487
  • Covariance Matrix Operation: A proposal to add a keras.ops.cov function aims to compute the covariance matrix complementing the existing keras.ops.corrcoef. This base operation is useful for whitening, Mahalanobis distance, Gaussian log likelihoods, and PCA, with an API matching NumPy's cov for 2D inputs.
  • issues/23493
  • Inconsistent keras.ops.size Output Type: The keras.ops.size function declares an output dtype of int32 but returns int64 on four of five backends, causing a mismatch between declared and actual output types. This inconsistency leads to potential bugs and confusion when using the function across different backends.
  • issues/23495
  • Copysign Function Implementation: Adding a keras.ops.copysign function is proposed to provide a consistent and correct IEEE-754 copysign operation across multiple backends. This addresses current inaccuracies and inconsistencies in user-implemented workarounds for the copysign operation.
  • issues/23497
  • Float Power Function for Negative Exponents: A float_power function is proposed for keras.ops to handle negative integer exponents consistently by promoting operands to float types before exponentiation. This resolves discrepancies and errors observed with the existing power function across backends.
  • issues/23499

2.4 Closed Issues

This section lists, groups, and then summarizes issues that were closed within the last week in the repository. This section also links the associated pull requests if applicable.

Issues Closed This Week: 8

Summarized Issues:

  • Backpropagation and Gradient Computation Issues: There are multiple problems related to gradient calculation in Keras, including failure of reverse-mode differentiation in the JAX backend when using keras.ops.while_loop due to dynamic start/stop values, and gradient dtype mismatches in the UpSampling2D layer under TensorFlow backend with mixed precision and JIT enabled. These issues cause errors in backpropagation and require workarounds such as explicitly setting dtypes.
  • issues/18957, issues/20931
  • Loss Function Bugs and Axis Handling: The categorical crossentropy and focal crossentropy functions have bugs where label smoothing and shape warnings ignore the user-specified axis parameter, defaulting incorrectly to the last dimension. This results in incorrect loss calculations for inputs with custom axis configurations.
  • issues/23451
  • Numerical Accuracy and Overflow in Special Functions: The keras.ops.numpy.i0 function incorrectly returns infinity for large input values (e.g., 713.0) instead of a large but finite number, indicating an overflow or numerical accuracy problem originating from TensorFlow's implementation.
  • issues/23400
  • TensorFlow Backend Implementation and Shape Information Loss: The TensorFlow backend's implementation of the searchsorted function in Keras 3 suffers from loss of static shape information due to the use of tf.shape and redundant implicit conversions when inputs are not explicitly converted to tensors, impacting robustness and performance.
  • issues/23452
  • Feature Requests for Image Restoration and Perceptual Losses: There is a request to add a suite of high-level image restoration and perceptual loss functions to Keras, including Charbonnier, MSSSIM, PSNR, Total Variation, Edge-Aware Smoothness, and an optional KerasCV-backed PerceptualLoss, aimed at simplifying and standardizing image restoration workflows.
  • issues/23126
  • Issues Closed Due to Lack of Information: Some issues, such as problems running pip install -r requirements.txt and a report titled "Black Yung" linking to an external repository, were closed because they lacked sufficient detail for investigation.
  • issues/23459, issues/23460

2.5 Issue Discussion Insights

This section will analyze the tone and sentiment of discussions within this project's open and closed issues that occurred within the past week. It aims to identify potentially heated exchanges and to maintain a constructive project environment.

Based on our analysis, there are no instances of toxic discussions in the project's open or closed issues from the past week.


III. Pull Requests

3.1 Open Pull Requests

This section provides a summary of pull requests that were opened in the repository over the past week. The top three pull requests with the highest number of commits are highlighted as 'key' pull requests. Other pull requests are grouped based on similar characteristics for easier analysis. Up to 25 pull requests are displayed in this section, while any remaining pull requests beyond this limit are omitted for brevity.

Pull Requests Opened This Week: 26

Key Open Pull Requests

1. Fix execution issues in distributed_training_with_torch guide: This pull request fixes execution issues in the PyTorch distributed training guide by switching the multiprocessing start method to spawn, adjusting input data layouts and types for compatibility, adding epoch setting in the data sampler, and including safeguards for environments without CUDA devices.

  • URL: pull/23456
  • Associated Commits: eb8f0, b1671, baf8e, 43e3e, 785b0

2. Fix Torch stateful GRU/LSTM cuDNN backward in-place state update: This pull request fixes a backward pass failure in stateful Torch GRU and LSTM layers using the CUDA cuDNN path by cloning the hidden state before in-place updates to prevent autograd errors caused by mutating storage during the optimized kernel’s backward computation.

  • URL: pull/23464
  • Associated Commits: 12ada, 7522f, 03313, a93ef

3. [Torch] Add End-to-End Multi-GPU Integration Tests: This pull request adds comprehensive end-to-end multi-GPU integration tests for the PyTorch backend in Keras, aligning its multi-device distribution testing with the existing JAX multi-process framework by introducing new test scripts, pytest marker support for multi-GPU CI environments, and ensuring backend consistency with Keras's unified distribution API.

  • URL: pull/23502
  • Associated Commits: 47502, a7890, 35f77, ae874

Other Open Pull Requests

  • Documentation improvements: This topic includes updates to the pip_build.py script and pytest configuration functions by adding detailed docstrings to improve code clarity. It also corrects discrepancies between documented default parameter values and actual function signatures in multiple Keras functions to ensure docstrings accurately reflect the code without changing behavior.
    • pull/23450, pull/23477
  • DTensor and Model Parallelism support: These pull requests introduce a comprehensive audit suite to verify DTensor compatibility for core Keras layers using the PyTorch backend and enable previously skipped ModelParallelDistributionTest and DataShardingIntegrationTest to run on PyTorch. They ensure proper sharding, dispatch to DTensor implementations, and coverage across various layer types, reflecting integration of DTensor and Model Parallelism support in Keras 3.
    • pull/23503, pull/23500, pull/23501
  • Symbolic shape inference and tensor checks: This topic covers improvements in symbolic shape inference by validating and rejecting duplicate axes after canonicalization to ensure consistency with eager execution. It also includes normalizing the usage of the is_tensor function by replacing backend.is_tensor with backend.ops.is_tensor and updating remaining usages across the codebase to fix CI failures and avoid import circularity.
    • pull/23463, pull/23477, pull/23480, pull/23489, pull/23491
  • Fixes for input handling and error prevention: These pull requests fix an AttributeError in the in_top_k function by replacing direct shape checks with np.ndim to support various input types and extend the fix across multiple backends. They also fix the safe_get_h5_group function to correctly handle HDF5 group paths with empty segments, preventing ValueError exceptions and aligning behavior with native h5py path resolution.
    • pull/23465, pull/23468
  • Sparsemax and quantization fixes: This group fixes the sparsemax threshold calculation by correctly summing sorted logits over the support to ensure proper projection onto the probability simplex. It also addresses multiple issues in GPTQ quantization by adding a small epsilon to prevent division-by-zero or underflow in inverse Hessian diagonal elements, avoiding NaN/Inf values and ensuring valid quantized weights with regression tests verifying the fixes.
    • pull/23469, pull/23471, pull/23475, pull/23491
  • Loss function enhancements: These pull requests add support for the label_smoothing parameter to keras.losses.SparseCategoricalCrossentropy and implement sparse-label categorical focal crossentropy loss functions with features such as logits support, masking, mixed precision, symbolic tensors, serialization, and comprehensive testing across multiple backends and execution modes.
    • pull/23488, pull/23482
  • New operations in keras.ops.numpy: This topic includes the implementation of the cov function estimating covariance matrices consistent with np.cov across backends, the addition of a copysign function to handle signed zeros and dtype promotion correctly, and the introduction of a float_power operation to ensure consistent behavior when raising integer bases to negative integer exponents.
    • pull/23494, pull/23498, pull/23500
  • PyTorch distributed training improvements: This pull request addresses multiple issues in PyTorch distributed data parallel training by changing the multiprocessing start method to "spawn" to prevent CUDA deadlocks, casting target labels to int64 for CrossEntropyLoss compatibility, ensuring proper epoch synchronization, and refining logging and GPU validation to enhance stability and correctness.
    • pull/23454
  • Automation workflow update: This pull request replaces the local auto-assignment GitHub workflow and its duplicate script with a centralized reusable workflow from the keras-team shared workflows repository, streamlining the project's automation process.
    • pull/23471
  • Model saving fix: This pull request fixes an issue where saving a compiled model to legacy HDF5 format unintentionally mutates the live model's compile configuration by removing the optimizer entry. It resolves this by copying the compile configuration before modification to preserve the original model's compile config after saving.
    • pull/23473
  • Standardizing ops.size return type: This pull request standardizes the return type of the ops.size function to int32 across all backends to align with the declared output spec and TensorFlow behavior, resolving inconsistencies where other backends returned int64. It includes new dtype tests to ensure correctness.
    • pull/23496

3.2 Closed Pull Requests

This section provides a summary of pull requests that were closed in the repository over the past week. The top three pull requests with the highest number of commits are highlighted as 'key' pull requests. Other pull requests are grouped based on similar characteristics for easier analysis. Up to 25 pull requests are displayed in this section, while any remaining pull requests beyond this limit are omitted for brevity.

Pull Requests Closed This Week: 22

Key Closed Pull Requests

1. Add preliminary support of PaddlePaddle as Keras 3 backend: This pull request adds preliminary support for using PaddlePaddle as a backend for Keras 3, implementing core backend functionality, extensive NumPy, neural network, math, linear algebra, RNN, random, and image operations, as well as a full training pipeline, enabling Keras users to write code once and run it on TensorFlow, JAX, PyTorch, and PaddlePaddle, while addressing dtype compatibility and registering PaddlePaddle within the Keras backend system, though it remains unmerged.

  • URL: pull/23006
  • Associated Commits: 063d4, 8af6f, 5b57a, cfb88, 72e86, 24dd2, c7e38, 1f6c4, e8015, 2b936, a77c3, 16abb, b8cc5, f501f, aa5cc, 18321, f1cc3, ef89d, 66588, 41bda, b97ea, 3f519, ce926, 21108, 7ca0d, 65f87, 5a164, a812c, 480d8, 7543b, fabca, 91168, 0a2d7, 96787, ef205, 957ac, c5724, 7240d, a0b74, 1913e, 20c1d, 853f2, a95f8, dbdc5, b7be5, 5bf0b, de11d, fa847, 2d8a1, e2c85, eab40, 57f17, 2bc08, d5573, 2999a, 1d71c, 182e0, b7d59, 3ebb4, 9c057, 9c121, c4524, 98bb2, 5ca8e, 2637e, ed776, 18709, b1cae, f88cb, 6bfa9, ddbde, 430de, e3a8c, d902a, f8034, 9caac, 710a9, 7f881, d54d6, 86035, 304ae, e6fa8, 464e3, a9e33, 86321, ea710, bfef4, d1c85, 84d18, 1b85e, 9fce9, 10d76, 66be6, b6c0a, 35b84, 70397, 3846e, 8e92a, 38f5c, ec3ba, f0c6d, 320d5, dcf8c, 6d0e4, 94337

2. [PLUGGABLE Backend] Merge master into pluggable_backend: This pull request attempts to merge the latest changes from the master branch into the pluggable_backend branch to synchronize it with master, but it was not merged.

  • URL: pull/23458
  • Associated Commits: 1b278, abd06, 322d5, 32b42, caf8b, 2f6a1, ceb3d, 75cd9, fa9af, 8a90a, 0f351, 9597b, 7f468, 85baf, bbbe3, ef382, 0dcd4, bb828, 51470, a4042, 815ef, ea297, c0215, 6028d, c3077, 02fea, 38c06, 50f65, a5de3, bf601, e9c83, 24107, dad2d, 55bc3, f3799, 25741, 7020f, d0a04, 2b555, f7e4f, 6bce7, 3f2cf, cf112, 75184, f585f, 87a4f, 63b66, 5f5bf, e5708, 11f14, 9ac86, dd94b, ad2b4, 993e8, 914df, 56051, afcca, a44a8, 2906c

3. Fix categorical_crossentropy label smoothing for custom axis: This pull request fixes a bug in the categorical_crossentropy and categorical_focal_crossentropy loss functions where the label smoothing logic incorrectly assumed the class dimension was always the last axis, causing invalid probability distributions and incorrect loss values when a custom class axis was specified.

  • URL: pull/23437
  • Associated Commits: 3bc60, 88ec2, 0e186

Other Closed Pull Requests

  • GPTQ Calibration Improvements: This pull request enhances the GPTQ calibration process by introducing batched forward passes for significantly faster calibration and replacing the dense inverse Hessian computation with a numerically stable Cholesky-based method. These changes result in up to a 6.6x speedup and improved error propagation accuracy, especially on ill-conditioned Hessians.
    • pull/23481
  • Decompression-Bomb Security Enhancements: Multiple pull requests improve decompression-bomb detection in Keras by adding robust checks that reject archive members exceeding size thresholds and cumulative size limits. These updates prevent resource exhaustion attacks during archive extraction and ensure safe handling of oversized or maliciously crafted files in various archive components.
    • pull/23159, pull/23160, pull/23303
  • HDF5 Saving and Variable Serialization Fixes: These pull requests update the HDF5-backed saving mechanism to avoid duplicate tensor datasets by tracking variables via object identity and using hard links, and improve serialization of quantizable-layer variables by using descriptive spec names as keys. These changes reduce storage redundancy and ensure robust, backward-compatible saving and loading of variables.
    • pull/23174, pull/23369
  • PyTorch DDP Guide Runtime Fixes: This pull request addresses critical runtime issues in the PyTorch Distributed Data Parallel guide by fixing CUDA initialization deadlocks, updating tensor layouts to Channels-First format, casting dataset labels for loss compatibility, and adding proper distributed shuffling calls. These fixes improve stability and correctness in distributed training workflows.
    • pull/23455
  • Int4 Quantization Configuration Unification: This pull request consolidates int4 quantization string and configuration inputs by unifying block size derivation, normalizing legacy checkpoint policies, and updating docstrings. The changes remove redundant code paths and enable successful loading of older checkpoints without altering the public API.
    • pull/23467
  • Keras AWQ Quantization Enhancements: This pull request aligns the Keras AWQ quantization implementation with reference algorithms by replacing running max activation with per-channel mean, incorporating weight-aware scale formulas, and adding weight clipping via grid search. These improvements reduce quantization error and enhance model accuracy metrics.
    • pull/23478
  • File Name Validation in get_file Function: This pull request fixes a security and correctness issue by validating file names derived from origin URLs to prevent directory traversal and improper file path resolution. It ensures that invalid or dangerous file names are rejected before download and extraction.
    • pull/23330
  • NumPy Backend Compatibility Fixes: This pull request addresses compatibility with NumPy 2.5.0+ by padding 2D vectors to 3D before calling np.cross and updates related tests, effectively backporting fixes to the pluggable_backend branch.
    • pull/23409
  • TensorFlow Backend Bug Fix in searchsorted: This pull request fixes a bug where ops.searchsorted crashes on multi-dimensional values by properly broadcasting the sorted_sequence tensor to match value dimensions, aligning behavior with NumPy and other backends.
    • pull/23436
  • OpenVINO Jacobi Solver and Test Fixes: This pull request fixes convergence issues in the OpenVINO Jacobi eigenvalue solver by correcting index ordering for Givens rotations and adjusts test skipping logic to prevent unintended skips.
    • pull/23446
  • OpenVINO Test Tolerance Relaxation: This pull request further relaxes test tolerances in the STFTSpectrogram error test to reduce flakiness after previous adjustments were insufficient.
    • pull/23457
  • GitHub Workflow Re-enablement: This pull request re-enables automated issue triage and review workflows by adopting shared workflows from the keras-team/shared-workflows repository to improve automation.
    • pull/23466
  • Quantization Code Bug Fixes and 2-bit Weight Packing: This pull request fixes bugs in quantization by correcting keyword argument passing, standardizing data type handling during checkpoint loading, and adding efficient 2-bit weight packing/unpacking support in GPTQ. These changes reduce memory usage by a factor of four while maintaining backward compatibility.
    • pull/23470
  • Dependabot Configuration Update: This pull request updates the Dependabot configuration to change GitHub Actions version update checks from monthly to weekly, enabling more timely automatic pull requests for workflow updates.
    • pull/23472
  • Zizmor CI Failure Fix: This pull request fixes the Zizmor continuous integration failure by updating the pinned SHA and version comment of the dorny/paths-filter GitHub Action from v4.0.2 to v4.0.3, resolving security checks without ignoring them.
    • pull/23474
  • Pull Request Transfer: This pull request transfers discussion and changes to another pull request (#23491) and was not merged.
    • pull/23490

3.3 Pull Request Discussion Insights

This section will analyze the tone and sentiment of discussions within this project's open and closed pull requests that occurred within the past week. It aims to identify potentially heated exchanges and to maintain a constructive project environment.

Based on our analysis, there are no instances of toxic discussions in the project's open or closed pull requests from the past week.


IV. Contributors

4.1 Contributors

Active Contributors:

We consider an active contributor in this project to be any contributor who has made at least 1 commit, opened at least 1 issue, created at least 1 pull request, or made more than 2 comments in the last month.

If there are more than 10 active contributors, the list is truncated to the top 10 based on contribution metrics for better clarity.

Contributor Commits Pull Requests Issues Comments
MarcosAsh 140 1 0 0
buildwithsuhana 79 10 2 0
pctablet505 76 1 0 3
hertschuh 48 0 0 16
rstar327 33 0 0 0
divyashreepathihalli 29 0 0 1
JyotinderSingh 18 5 0 6
jeffcarp 10 6 1 10
goyaladitya05 24 2 0 0
gaga1313 24 0 0 0

Don't miss what's next. Subscribe to Weekly Project News:
Powered by Buttondown, the easiest way to start and grow your newsletter.