初始化上传
Some checks failed
Run mypy_primer on push / Run mypy_primer on push (push) Has been cancelled
Validation / Typecheck (push) Has been cancelled
Validation / Style (push) Has been cancelled
Validation / Test macos-latest (push) Has been cancelled
Validation / Test ubuntu-latest (push) Has been cancelled
Validation / Test windows-latest (push) Has been cancelled
Validation / Build (push) Has been cancelled
Validation / Required (push) Has been cancelled

This commit is contained in:
2026-07-24 17:08:39 +08:00
commit e9e4693333
7516 changed files with 768821 additions and 0 deletions

118
.github/agents/pyright-test-policy.md vendored Normal file
View File

@@ -0,0 +1,118 @@
---
name: pyright-test-policy
description: Enforces Pyright test policy, preserving type precision and requiring justification for test changes.
---
# Pyright Test Policy
Tests are the specification for Pyright behavior.
Agents must **not modify tests simply to make CI pass**.
The goal is to **preserve or improve type precision** unless a justified upstream change requires otherwise.
---
# Allowed Changes
Agents may modify tests only when one of the following is true:
1. A **typeshed stub change** legitimately alters the expected type.
2. A **Pyright diagnostic message format** changed but the semantic meaning is the same.
3. A test relied on unstable formatting or ordering.
---
# Precision Regression Rule (Default)
Any change that makes types less precise is considered a **regression by default**.
Examples:
- `T → Unknown`
- `T → Any`
- container precision loss
`list[int] → list[Any]`
- literal widening
`Literal["x"] → str`
These regressions are **allowed only with justification**.
---
# Allowed Regression With Evidence
`Unknown` or `Any` changes may be accepted **only if the PR includes**:
1. **Evidence**
- the relevant typeshed stub diff
- or an upstream typing change
2. **Reasoning**
- why Pyright cannot infer the previous precision
3. **Classification**
- A) typeshed became less precise
- B) Pyright limitation
- C) test fragility
- D) harness issue
4. **Mitigation**
When possible:
- open a typeshed issue/PR
- or add a TODO referencing the issue
---
# Forbidden Changes
Agents must NOT:
- blindly replace expected types with `Unknown` or `Any`
- remove diagnostics
- delete `reveal_type` checks
- suppress errors to make tests pass
without the justification process above.
---
# Preferred Fix Order
Agents must attempt fixes in this order:
1. **Fix Pyright behavior**
2. **Fix incorrect typeshed stub**
3. **Adjust tests (last resort)**
---
# Precision Regression Reporting
If a regression is introduced, the agent must include a report in the PR:
Example:
Precision Regression Report
Test | Before | After | Reason
---- | ---- | ---- | ----
test_numpy_array | ndarray[int] | ndarray[Any] | typeshed change in numpy/__init__.pyi
This ensures reviewers can quickly understand the impact.
---
# Review Gate
If more than **2 precision regressions** occur in a single PR, the agent must stop and request human review.
---
# Commit Message Requirements
Each fix must include:
- failure classification (A/B/C/D)
- relevant typeshed commit (if applicable)
- explanation of how the change preserves or justifies type precision