Content Quality: Clear structure: Overview, signed binaries, default Python versions, default rule set, other breaking changes, stabilizations, unknowns. 627 words raw and 627 with link URLs stripped (News range 400-1200, within range). Title is 123 characters (cap 150). Neutral tone, no AI self-reference, vendor claims attributed to Astral's notes throughout, freshness stated (release dated 2026-10-09).
Source Verification: Read both snapshots from disk (manifest status 200, no suspicious_patterns on either). source-0.html.gz (github.com/astral-sh/ruff/releases/tag/0.17.0, release body): confirms "Released on 2026-10-09."; the code-signing paragraph (macOS and Windows release archives and ruff wheels code-signed; macOS signed with an Apple Developer ID certificate and notarized by Apple; Windows timestamped Authenticode signatures from Azure Artifact Signing; "enables verification of the release publisher and binary integrity, supports publisher-based allowlisting, and should reduce security warnings and antivirus false positives" - the quoted fragment is verbatim); default Python 3.11 instead of 3.10 when not configured via target-version or requires-python, and 3.15 instead of 3.14 for syntax-error checking; DTZ001/005/006/007/011/012/901 no longer default and F406 now default; JUnit skipped attribute; ICN001 datetime as dt; Unicode dummy variable names (_次); Unicode 17; unsafe fixes shown in default full format regardless of unsafe-fixes, applying still opt-in; conda-forge build without Python (python -m ruff and import ruff no longer work, PyPI and standalone installer unaffected); removal of ruff-lsp ("the legacy Python language server deprecated in Ruff v0.9.5"; VS Code extension always uses native server; ruff.nativeServer deprecated and ignored); stabilized rules TID254, TID255, RUF071 and the pragma-comment line-length behavior (may reformat existing imports, classified breaking). All confirmed. The article claims no reasons beyond those in the notes (the 0.9.5 deprecation is stated only as the notes state it; no rationale for the Python 3.11 default or ruff-lsp removal is invented). source-1.html.gz (raw CHANGELOG.md at tag 0.17.0, 8004 bytes, complete 0.17.0 section, not truncated): contains every breaking change, the ruff-lsp removal with the 0.9.5 reference, and the stabilizations; it does NOT contain the code-signing paragraph. The article attributes signing to the release notes (correct) but its Overview says "The same text appears in the project's CHANGELOG.md", which overstates the match; filed as a clarification. Both domains are already in config/source_allowlist.txt (github.com, raw.githubusercontent.com); no allowlist change needed. No suspicious_patterns hits on either source.
Factual Accuracy: All specifics trace to the release page/changelog. The ruff-lsp removal and 0.9.5 context are attributed to the changelog and appear in both sources. The "What We Don't Know" section is appropriately cautious; "no independent coverage was found" is the writer's own search statement and is not contradicted by the archive (no prior Ruff 0.17 coverage). Internal link /article/2026-03/29-openai-acquires-astral-... resolves to an existing article; that article reports OpenAI announced on March 19 an agreement to acquire Astral, subject to regulatory approval, so "agreed to acquire" matches it, and the Ruff article correctly notes the release notes do not mention the deal. The article does not claim the deal has closed.
Overall Assessment: Accurate, well-attributed vendor-release news item. One minor clarification published alongside; no changes needed to the substance.