# Collaboration Guidelines and Codebase Quality Standards

To ensure smooth collaboration and maintain the high quality of our codebase, please adhere to the following guidelines:

## Branching Strategy

*   **`premain`**:
    *   Always push your changes to the `premain` branch initially.
    *   This safeguards the `main` branch from unintentional disruptions.
    *   All tests will be performed on the `premain` branch.
    *   Changes will only be merged into `main` after several hours or days of rigorous testing.
*   **`experimental`**:
    *   For large or potentially disruptive changes, use the `experimental` branch.
    *   This allows for thorough discussion and review before considering a merge into `main`.

## Pre-Pull Request Checklist

Before creating a Pull Request (PR), ensure you have completed the following tests:

### Functionality

*   **Realtime Faceswap**:
    *   Test with face enhancer **enabled** and **disabled**.
*   **Map Faces**:
    *   Test with both options (**enabled** and **disabled**).
*   **Camera Listing**:
    *   Verify that all cameras are listed accurately.

### Stability

*   **Realtime FPS**:
    *   Confirm that there is no drop in real-time frames per second (FPS).
*   **Boot Time**:
    *   Changes should not negatively impact the boot time of either the application or the real-time faceswap feature.
*   **GPU Overloading**:
    *   Test for a minimum of 15 minutes to guarantee no GPU overloading, which could lead to crashes.
*   **App Performance**:
    *   The application should remain responsive and not exhibit any lag.