Skip to content

🐛 - Bugbot confuses typed JSON floatstring identities with the valid integer sequence #875

Open

Description

@efraespada

Is there an existing issue for this?

  • I have searched the existing issues.

Search: transport_id + 1.0 in vypdev/copilot returned no matching issue. Earlier Python-syntax/matcher reports concern different false premises.

Which actions are affected?

Pull Request

Which platforms are affected?

Linux (GitHub Actions); independently reproduced on macOS with the same Python 3.14 contract.

Description

Bugbot publishes a medium-severity, 100%-confidence reliability finding alleging that a wrong-frame-identity parameter includes the valid integer 1, so a pytest.raises assertion must fail. At the exact reviewed source the four inputs are [0, True, 1.0, "1"]. There is no integer 1 input. JSON round-trip preserves the float, Boolean and string types. The implementation requires type(frame["transport_id"]) is int before comparing the sequence; numeric equality to 1 is insufficient.

Observed finding: Domus PR28 / discussion4458487261, thread PRRT_kwDOVa5AKs6zQr6G, finding ID tests/python/test_image_channel.py:115:valid-sequence-identity-treated-as-invalid, fingerprint fp-2f13bff8, semantic sf-f543defe.

Expected: the reviewer checks the literal type, default JSON decoding and exact-int guard, and does not publish this failure claim. Actual: the finding says the suite must fail although all four original cases and the same-head hosted Python tooling job pass. Its suggested list adds integer 2 but does not replace an existing integer 1 because none exists.

Reproducing the issue

  1. Inspect exact consumer head 127cb48647efb777be8494c40239fd048c751c72:
  2. Run the unmodified original test with Python3.14.6/pytest9.2.0:
uv run pytest -vv tests/python/test_image_channel.py::test_wrong_frame_identity_cannot_be_reported_as_the_current_original_result --no-cov

All four original cases pass, including the float 1.0. The pytest display ID [1] in this run belongs to the string "1"; it does not establish an integer parameter. Source types are authoritative.

  1. Independently exercise JSON and the actual worker/channel without editing source:
import json
for identity in [0, True, 1.0, "1", 1]:
    wire = json.dumps({"transport_id": identity})
    value = json.loads(wire)["transport_id"]
    accepted = type(value) is int and value == 1
    print(repr(identity), wire, type(value).__name__, accepted)

Output:

0   {"transport_id": 0}     int   False
True {"transport_id": true} bool  False
1.0 {"transport_id": 1.0}   float False
'1' {"transport_id": "1"} str   False
1   {"transport_id": 1}     int   True

The independent probe also launches each original disposable worker: all four invalid frames raise the expected identity ValueError and close that worker; the valid default echo worker accepts the first integer sequence1 and returns the exact original request. This uses the actual ImageChannel, not an alternate implementation. Source/runtime were unchanged during counterverification.

  1. Compare execution evidence from this exact head:
    • Native review41688262760/job126099694785: context complete, 12/12 partitions, candidate1/published1/open1, fixed5/obsolete1 historical, outcome completed. The new finding is not a context-incomplete skip.
    • Hosted Python tooling126099693852 is successful on the same head; the unchanged complete local suite also passes178 tests with full supported tooling coverage.
    • Test/channel files are unchanged between the prior all-green fb92abe17594d1d2e6bf32d50ecd48b97d55fc51 and this head; this increment adds pending-alias browser acceptance and HA operator guidance.

The Python3.14 JSON decoder contract explicitly distinguishes integer numbers, real numbers and Booleans. Our independent actual Python3.14.6 probe agrees.

copilot Version

vypdev/copilot@v3, resolved immutable source 3e7ceea08e6131360e026937d1c0cc1b120472e0 (recorded by the source workflow). Agent codex, model gpt-6-luna, configured effort smart. Python3.14.6/pytest9.2.0; original SDD SDK modules remain byte-verified and unchanged.

Relevant Log Output

2026-11-03T17:51:36.3732519Z Download action repository vypdev/copilot@v3 (SHA:3e7ceea08e6131360e026937d1c0cc1b120472e0)
2026-11-03T17:51:54.9340268Z LoadBugbotContext: selection=event, coverage=complete, existing findings=6, diff files=54, diff partitions=12.
2026-11-03T17:54:09.1924569Z Bugbot reviewer completed partition12/12.
2026-11-03T17:54:18.8112465Z Telemetry: candidateFindings1, publishedFindings1, open1, outcome completed.
Original focused pytest: collected4, [0]PASS, [True]PASS, [1.0]PASS, [1]PASS; 4passed in0.18s.

Additional context and comments

No Copilot source/resources/configuration/workflows/model/credentials/bounds were changed. No manual thread resolution or review dismissal is used. Consumer clarification will name the original four parameter types explicitly and add a permanent positive test for integer1 while retaining every original negative value. This makes the contract reviewable; it does not repair a reproduced failing original test.

Please investigate the unsupported type premise in the published finding and preserve the exact integer rejection boundary. We do not infer whether the mistake arose from source interpretation, displayed pytest IDs or another internal stage. Preserve current provenance and acceptance bounds rather than loosening the guard. Full raw telemetry/counterevidence is retained privately, without owner HA identities, credentials or backup details. Independent product work continues.

Activity

  1. added
    bugSomething isn't working
    bugfixSomething isn't working
    priority: highCritical issue, needs immediate attention.
    on Nov 3, 2026
  2. added theissue type on Nov 3, 2026
  3. moved this to Todo in vypdevon Nov 3, 2026
  4. changed the title [-]Bugbot confuses typed JSON float/string identities with the valid integer sequence[/-] [+]🐛 - Bugbot confuses typed JSON floatstring identities with the valid integer sequence[/+] on Nov 3, 2026
  5. vypbot commented on Nov 3, 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 3, 2026

    @efraespada
    MemberAuthor

    Consumer follow-up for the independently reproduced typed-JSON premise: f459b149475032752476bfd90e77e932c8132b5a preserves all four original invalid wire values with explicit parameter IDs and adds a positive integer1 ECHO-worker control. No production transport behavior or original assertion was relaxed. Complete tooling now passes179tests at100% (214statements/98branches); the original matching-value float1.0 still rejects while the actual integer1 succeeds.

    Native review41690505903/job126107514381 completed12/12partitions and automatically reconciled all7threads: zero candidate/published/open/reopened/verification-required/unknown findings, fixed6/obsolete1. That resolution does not establish that the original test contained integer1 or was wrong. All10same-head productCI jobs passed, including40container+34browser cases per CPU and full supported frontend/backend coverage.

    A subsequent unrelated Domus-only cold-backup package correction at e5eaa37a8179b314006de9babd0d86086bb35185 also completes native41695511871/job126124855744 with12/12partitions and outcome no-findings. Copilot source/resources/workflows/configuration/models/credentials/bounds remain untouched. Original reproduction, default JSON type proof and positive/negative worker observations remain valid for the upstream diagnosis.

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

Metadata

Metadata

Assignees

Labels

bugSomething isn't workingbugfixSomething isn't workingpriority: highCritical issue, needs immediate attention.

Type

Projects

  • Status
    Todo

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions