Skip to content

🐛🧑‍💻 - Bugbot reports valid Python 3.14 PEP 758 exception syntax as a collection breaking SyntaxError #831

Closed

Description

@efraespada

Is there an existing issue for this?

  • I have searched the existing issues.

An exact search for PEP 758 found no existing issue. This is separate from progress output-contract failures #828, #829 and #830.

Which actions are affected?

Pull Request

Which platforms are affected?

Linux
macOS

Description

Bugbot publishes two medium-severity, 100%-confidence syntax-error findings for valid Python 3.14 exception handlers. One explicitly states that the project requires Python 3.14 but that except Conflict, StorageBusy: is a SyntaxError in that version. PEP 758 added this syntax in Python 3.14 when no as clause is present.

The declared consumer runtime is >=3.14,<3.15, Ruff target py314 and Python 3.14.6 in the executed backend suite. The exact flagged modules compile, collect and execute. The full backend CI passes 1387 tests with 100% supported statement/branch coverage. The reviewer should use the declared version and concrete parser/CI counterevidence before publishing a universal syntax-error claim or suggested change.

Expected: omit these findings for a Python 3.14 project; preserve a genuine compatibility finding when an actually supported older interpreter cannot parse the syntax. Keep required parentheses when an as clause is present. Do not suppress exception syntax findings globally or weaken review gates.

Actual: both findings incorrectly classify the new grammar as Python 2 syntax and claim pytest cannot collect, despite the successful exact-head suite.

Primary sources:

Reproducing the issue

  1. Consumer PR: Implement HA identity, SQLite persistence and verified restoration domus#7; exact analyzed head ead7dde44f57d32d5a42797a811e798d92b36a89.
  2. Review run/job: https://github.com/vypdev/domus/actions/runs/41227372340/job/124614220480; native review 5724201125; check https://github.com/vypdev/domus/runs/124615649060.
  3. Findings: Implement HA identity, SQLite persistence and verified restoration domus#7 (comment) at tests/backend/test_household_commands.py:415, and Implement HA identity, SQLite persistence and verified restoration domus#7 (comment) at tests/backend/test_member_commands.py:407.
  4. Both statements are exactly except Conflict, StorageBusy: with no as clause. Both are valid under the project's required Python version.
  5. Inspect pyproject.toml requires-python >=3.14,<3.15 and Ruff target py314, the Python pin and frozen CI setup. Run Python 3.14.6 compile(Path(file).read_text(), file, 'exec') on both exact modules: PASS.
  6. Run the two test modules plus snapshot tests: 134 passed. The complete exact-head backend job passes 1387 tests: https://github.com/vypdev/domus/actions/runs/41227372378/job/124614220517. Both full CI Check aggregates pass on this exact head.
  7. Minimal semantic reproduction on Python 3.14:
for kind in (ValueError, TypeError):
    try:
        raise kind('sentinel')
    except ValueError, TypeError:
        print(kind.__name__, 'caught')

Both exception types are caught. No parser compatibility fallback is involved.

copilot Version

vypdev/copilot@v3 resolved to 3e7ceea; codex codex-cli 0.166.0, reviewer model gpt-6-luna, smart effort.

Relevant Log Output

2026-10-31T18:07:22.3345747Z Bugbot reviewer completed partition 30/30.
analysisPartitions=30; completedAnalysisPartitions=30; analysisAssignedFiles=204
candidateFindings=3; publishedFindings=3

The two inline findings explicitly claim the modules raise SyntaxError during parsing. The third finding, a stale snapshot schema number in documentation, is valid and was corrected separately in normal commit 9c44195. No claim is made that all findings were false.

Additional context and comments

The analysis completed all 30 code partitions, but overall coverage is separately partial because human-conversation retained 6 of 9 items and omitted 3. We do not treat this as a complete review or merge acceptance. The PR remains unmerged. No Copilot implementation, installed resources, model/configuration, approval gate or language requirement was changed. Valid production/test syntax will not be rewritten just to hide a false positive; the response will cite actual runtime and primary-source evidence.

Suggested regression scope: valid >=3.14 syntax with/without as; a real <=3.13 compatibility target; except*; project runtime/version evidence; contrary successful parser/collection evidence. Live-model false-positive evidence and deterministic schema correctness should remain distinct. No credentials or owner HA identity/session data are included.

Activity

  1. added
    bugSomething isn't working
    bugfixSomething isn't working
    priority: highCritical issue, needs immediate attention.
    on Oct 31, 2026
  2. added theissue type on Oct 31, 2026
  3. moved this to Todo in vypdevon Oct 31, 2026
  4. changed the title [-]Bugbot reports valid Python 3.14 PEP 758 exception syntax as a collection-breaking SyntaxError[/-] [+]🐛 - Bugbot reports valid Python 3.14 PEP 758 exception syntax as a collection breaking SyntaxError[/+] on Oct 31, 2026
  5. vypbot commented on Oct 31, 2026

    @vypbot
    Contributor

    Hi! I’m @vypbot, the Copilot assistant for this repository.

    I can answer questions, explain the codebase, propose implementation and test plans, review issues and pull requests for potential bugs or security problems, and help authorized maintainers apply changes.

    Try /copilot help to see the available commands, or mention @vypbot with your question.

  6. efraespada commented on Nov 1, 2026

    @efraespada
    MemberAuthor

    Repeated false positive on Domus PR #14 after a complete current-head review

    This is another instance of #831, not a new issue or a request to weaken review gates.

    • Consumer: vypdev/domus PR #14, exact head 2207bca2f13dedee7cf61372eae711765c1bb911.
    • Original review run/job: 41293850399 / 124810467253, check 124811492043.
    • Published finding: discussion_r4435095010, backend/src/domus/application/task_reviews.py:117; medium reliability, confidence 100%.
    • Exact clause: except InvalidInput, TypeError, ValueError:, with no as clause.
    • Finding claims this is invalid Python 3, causes parsing/import failure through the task command/query chain and prevents HTTP startup. It even cites the project's Python >=3.14 requirement as evidence against the syntax.

    That parsing claim is false for the declared runtime. Both root and backend require >=3.14,<3.15; Ruff targets py314. PEP 758 explicitly introduces unparenthesized exception lists without as in Python 3.14.

    Independent checks against the exact unchanged source, using the locked local Python 3.14.6:

    1. ast.parse(source, filename=actual_path) passes.
    2. importlib.import_module("domus.application.task_reviews") passes and resolves to the actual consumer source.
    3. Raising actual InvalidInput, TypeError and ValueError under that unparenthesized clause catches all three as expected.
    4. Exact-head hosted backend jobs already execute 2,899 tests with all 7,605 statements / 2,146 branches covered; the independent complete-source audit passes. The latest ready-for-review-triggered CI Check 124811175716 / run 41293850296 is also green. An import-time SyntaxError cannot explain these executed results.

    This run's review context is actually complete: 106 changed files / 160 diff fragments, all 21 of 21 analysis partitions complete, all reported context sources complete with zero omitted/truncated items. Telemetry reports one candidate and one published finding; it is this syntax claim. This differs from the earlier partial-context observation in the original issue and is not represented as a skipped review.

    The hosted log resolves vypdev/copilot@v3 to 3e7ceea08e6131360e026937d1c0cc1b120472e0; agent codex-cli 0.166.0, reviewer gpt-6-luna, smart effort. Review completed at 2026-11-01T09:41:08Z.

    Please add this source/version/contrary-execution regression to the existing investigation: honor the supported interpreter and verify a parsing assertion with that grammar before publishing 100% confidence. Continue requiring parentheses with as, and preserve real <=3.13 compatibility findings. Do not globally suppress exception-handling review, alter acceptance, or rewrite valid production code merely to silence a false positive.

    We will reply with this runtime/primary-source evidence and resolve the native thread as a false positive, preserving the bot's original comment and review history. No Copilot code, model, prompt, installed resource, marker, policy or verification threshold is changed.

  7. moved this from Todo to In Progress in vypdevon Nov 2, 2026
  8. added
    branchedIndicates that a branch has been created for this issue.
    on Nov 2, 2026
  9. 4 remaining items

  10. added
    size: XXLIndicates an extremely large task or issue that requires significant time and effort to complete.
    75%Progress: 75%
    and removed on Nov 2, 2026
  11. vypbot commented on Nov 2, 2026

    @vypbot
    Contributor

    Issue closed — historical progress

    Current status: closed as completed.

    The last estimate is retained below as history. Closure does not certify a new percentage, tests, or branch alignment.

    Action required: none for this closed issue. If work continues, reopen the issue; a fresh assessment can update this same card.

    Last assessment before closure (historical)

    Progress: 75% — in progress

    > Current status: [R1] The declared consumer runtime is >=3.14,<3.15, Ruff target py314 and Python 3.14.6 in the executed backend suite. The exact flagged modules compile, collect and execute. The full backend CI passes 1387 tests with 100% supported statement/branch coverage. The reviewer should use the declared version and concrete parser/CI counterevidence before publishing a universal syntax-error claim or suggested change. — The patch adds version-aware syntax guidance, 12 frozen cases, and reports a measured candidate passing those cases. The reported consumer compile, collection, and CI results and candidate runs are not independently verified here; generated metadata does not establish execution.
    [R2] Expected: omit these findings for a Python 3.14 project; preserve a genuine compatibility finding when an actually supported older interpreter cannot parse the syntax. Keep required parentheses when an as clause is present. Do not suppress exception syntax findings globally or weaken review gates. — The guidance and cases distinguish valid Python 3.14 unparenthesized exception lists without as, require parentheses with as, retain supported Python 3.13 compatibility findings, and preserve exception-syntax checks.
    [R3] Suggested regression scope: valid >=3.14 syntax with/without as; a real <=3.13 compatibility target; except*; project runtime/version evidence; contrary successful parser/collection evidence. Live-model false-positive evidence and determi
    [untrusted content truncated]

    Next: [R1] The declared consumer runtime is >=3.14,<3.15, Ruff target py314 and Python 3.14.6 in the executed backend suite. The exact flagged modules compile, collect and execute. The full backend CI passes 1387 tests with 100% supported statement/branch coverage. The reviewer should use the declared version and concrete parser/CI counterevidence before publishing a universal syntax-error claim or suggested change. — Independently verify required implementation and test gates, including the claimed exact-head consumer evidence and candidate measurements.
    [R3] Suggested regression scope: valid >=3.14 syntax with/without as; a real <=3.13 compatibility target; except*; project runtime/version evidence; contrary successful parser/collection evidence. Live-model false-positive evidence and deterministic schema correctness should remain distinct. No credentials or owner HA identity/session data are included. — Independently verify the reported benchmark execution and assess live-model false-positive evidence separately from deterministic schema and prompt coverage.

  12. vypbot commented on Nov 2, 2026

    @vypbot
    Contributor

    Issue closed: synchronization recommendation retired

    No branch synchronization is required for this closed issue.

    The previous recommendation is historical. Issue closure does not certify that the branches are synchronized.

  13. moved this from In Progress to Done in vypdevon Nov 2, 2026
  14. added
    100%Progress: 100%
    and removed
    in-progressStart work on an admitted issue.
    state:workingWork can proceed on the verified branch or without a branch.
    on Nov 2, 2026
  15. efraespada commented on Nov 3, 2026

    @efraespada
    MemberAuthor

    A verified recurrence of the Python3.14 false positive appears on Domus PR28, head 6e8c22135c019829f62e1ec28872783dc446be75.

    Finding: vypdev/domus#28 (comment), thread PRRT_kwDOVa5AKs6zGaeQ, fingerprint fp-724223dd, semantic sf-05bd340b, at tests/browser/image_bridge.py:198. The reviewer claims 100% confidence that the multiple-exception clause without parentheses is invalid Python3 and prevents module loading.

    The premise is false for this repository's required interpreter:

    • Root/backend requirements and .python-version select Python3.14; the actual image pins Python3.14.6. Older3.13 is not supported.
    • https://peps.python.org/pep-0758/ is Final for3.14 and explicitly permits omitted parentheses when there is no as clause. https://docs.python.org/3.14/whatsnew/3.14.html documents this accepted feature.
    • An independent actual CPython3.14.6 probe compiles the entire unchanged module and raises/catches each of OSError, subprocess.SubprocessError, ValueError, KeyError and TypeError using that exact syntax. A separate older-grammar parse rejects it only when explicitly selecting unsupported3.13. This probe is not counted as a product acceptance case.
    • 162 local tooling tests pass with100% supported tooling coverage;13 bridge contracts load the real module via runpy and exercise rejected image/CPU identity, immutable-image/nonroot/network isolation, cleanup, exact wire data and malformed/failing transport.
    • All10 actual local aarch64 image-hosted Chromium form journeys pass in native/standalone, plus87normal compiled Python/SQLite journeys. Every one requires the module to import. All151Python and4UI bytes in the image match the actual product package. Hosted tooling is also green for this exact head.

    Review evidence: https://github.com/vypdev/domus/actions/runs/41628838938/job/125892919593 has complete context and all9/9partitions, candidate1/published1/open1, historicalfixed1. This is not claimed to be a clean review, and the finding is not manually resolved. Product CI41628838888 remains independently in progress at this report.

    The consumer will name the exact exception tuple for clearer cross-version reading; no caught type, behavior, Python requirement, formatter rule, coverage/verification gate, Copilot model/bound/configuration/workflow/resource or gateway is changed. This is an equivalent readability change, not a reproduced SyntaxError fix. Please make language-version-dependent findings honor the repository runtime and verify a compilation claim against it. No raw model response or hidden cause is inferred; no owner HA data or credentials are published.

    Observed consumer follow-up: exact head6c1a0d2032cef328dc6e58dd2661232f1fbd364d names the same five-type tuple. Current native review41630471059/job125898428229 has complete context and9/9partitions,0candidates/published/open/reopened/verification-required/unknown; historicalfixed2. The finding thread was automatically resolved by the configured reviewer, never manually.13focused bridge contracts still pass and the formatter is unchanged. This does not establish an original SyntaxError or a fix in Copilot; the version-awareness issue remains for maintainers to investigate.

  16. efraespada commented on Nov 4, 2026

    @efraespada
    MemberAuthor

    Verified recurrence of this exact false positive on Domus PR #29, head 8d2742ef596f23128ea2e0600db9f41e79c70531:

    • Finding feat: add the household task workspace (#23) domus#29 (comment), backend/src/domus/application/recurrence_sources.py:52, fingerprint fp-620ab805, semantic sf-9452a24f, claims with 100% confidence that except InvalidInput, TypeError, ValueError: cannot be parsed by the project's runtime and prevents importing the module.
    • Native run https://github.com/vypdev/domus/actions/runs/41762170100/job/126352130709 used vypdev/copilot@v3 SHA 3e7ceea08e6131360e026937d1c0cc1b120472e0, codex-cli 0.166.0, configured model gpt-6-luna. Complete context and all 10/10 partitions finished; candidate/published/open = 1, reopened/unknown/verification-required = 0. This is not being called a zero-finding review.
    • Root and backend pyproject require >=3.14,<3.15; .python-version pins 3.14.6. Python 3.13 is unsupported. PEP 758 is Final for Python 3.14 and explicitly accepts this exception list without parentheses when no as clause exists: https://peps.python.org/pep-0758/ ; official release documentation: https://docs.python.org/3.14/whatsnew/3.14.html#pep-758-allow-except-and-except-expressions-without-brackets .
    • An independent local probe under actual CPython 3.14.6 imports the unchanged RecurrenceSourceObservations, parses its complete actual module with ast.parse, then raises/catches ValueError with the same unparenthesized exception-list syntax. All steps succeed.
    • The full current backend suite passes 4,552 tests, including the real source module, at 100% statement/branch coverage globally and per source module. Its independent source coverage audit, strict types (154 modules), five architecture import contracts and 51 architecture tests pass. The exact-head hosted Backend application job also passes: https://github.com/vypdev/domus/actions/runs/41762169957/job/126352129408 .

    The compile-failure premise is disproven by the actual supported runtime, not merely a prose assertion. No consumer runtime requirement, formatter rule, Copilot code/configuration/model/resource or review finding state has been changed to hide it. Please investigate version-aware review of parser claims and reassess the native finding from the exact runtime evidence. I am appending to the existing exact issue rather than creating a duplicate; its current Closed state does not establish that this later run is correct.

  17. efraespada commented on Nov 4, 2026

    @efraespada
    MemberAuthor

    Native follow-up without a production source change: https://github.com/vypdev/domus/actions/runs/41762170100 attempt 2 reassessed exact head 8d2742ef596f23128ea2e0600db9f41e79c70531 after the runtime evidence reply. It completed all 10/10 partitions with complete context; candidate/published/open/reopened/unknown/verification-required are all zero. The native reviewer automatically marked the obsolete parser finding; none was manually resolved/dismissed. Current historical counts are fixed 6, obsolete 3, dismissed 0. Publication reports 0 errors.

    This supports the runtime-version correction and preserves the original finding as a demonstrated false positive. It does not claim a Copilot implementation fix. A separate real aarch64 browser response-body capture failure is being corrected in the consumer test harness, independently of this cleared syntax finding.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

Labels

100%Progress: 100%branchedIndicates that a branch has been created for this issue.bugSomething isn't workingbugfixSomething isn't workingpriority: highCritical issue, needs immediate attention.size: XXLIndicates an extremely large task or issue that requires significant time and effort to complete.

Type

Projects

  • Status
    Done

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions