Skip to content

πŸ›πŸ§‘β€πŸ’» - Bugbot predicts failing test despite indirect participant binding and passing typed fault assertionΒ #738

Closed

Description

@efraespada

Is there an existing issue for this?

Which actions are affected?

Pull Request

Which platforms are affected?

macOS (actual local JDK17 test verification); the finding is published by the GitHub PR review action.

Description

Bugbot reports that a parameterized test necessarily fails because getSession allegedly never calls the stubbed participantSession projection. The full call path does call it, and its Left(DatabaseException) propagates to the asserted result. The existing test passes. An additional explicit MockK coVerify proves the indirect call without changing getSession, its invocation branch, the mock outcome or the expected exception.

Finding: vypdev/vaultstadio#113 discussion_r4384726470, medium/reliability, stated confidence100%. Fingerprint fp-13894a84; semantic sf-469f9355; finding_id CollaborationReturnedStateTest:148:participant-scope-failure-falls-through. The finding proposes changing the tested operation; that would lose the intended getSession failure-path contract.

Expected: follow the actual authorization/binding calls or ask for verification when uncertain. Actual: a concrete always-failing-test claim contradicted by execution and the existing production call graph. This report does not assert that all review findings are false: the independent owner-write race, decoder compatibility and inclusive operation-history findings were separately reproduced and fixed.

Reproducing the issue

Use immutable consumer revision bfdfb95c77453559e9da73c3cddce62886fc55a1:

  1. CollaborationReturnedStateTest enumerates participant-scope-failure, stubs scopes.participantSession to return Left(DatabaseException), invokes service.getSession via its fallback and expects that typed Left.
  2. CollaborationService.getSession calls access.session and maps the resulting bound session.
  3. CollaborationAccess: session calls readSession; readSession calls bindSession; bindSession iterates each returned participant and calls scopes.participantSession(participant.id). An Either.Left returns directly and propagates through flatMap/map. The fixture returns one participant.
  4. With Java17, from backend, run:
./gradlew :core:collaboration:test --tests '*CollaborationReturnedStateTest' --no-daemon --max-workers=2
  1. All24 cases pass, including collected ID C89-RETURN "participant-scope-failure". To enforce the specific observation add, immediately after invoke and before the existing assertion:
if (case == "participant-scope-failure") {
    coVerify(exactly = 1) { f.scopes.participantSession(f.participant.id) }
}

This passes too; it is now retained as a stronger regression. No production behavior or test invocation was changed to obtain that result.

copilot Version

Installed consumer workflow uses vypdev/copilot@v3. The reviewed consumer profile is schemaVersion2. No assumption about a mutable tag's exact runtime patch version is needed for this source/evidence fixture.

Relevant Log Output

Local complete backend verification f35140d99c103b6826e1df005e224663fc4f0aee:2735tests/0failures/0errors/0skips, including the original24 returned-state cases. Remote immutable c07383b application run 40438483823 independently passes2697backend+1315desktop+1191browser=5203 cases, including the unchanged original participant-scope case.

The additional explicit-call proof was run at local pre-code contract e7bb3b1 with only test additions: core returned-state24/24pass, including coVerify. In the same diagnostic command, two unrelated new operation-history boundary assertions intentionally failed before their fix; that overall diagnostic command is NOT reported as green. Raw XML, original source inputs and execution metadata are retained by the consumer. Current full verification of the later operation fix is still running.

Additional context and comments

No Copilot source/configuration, protection, reviewed nonsecret decision, test exclusion or quality baseline was altered. We are retaining the getSession regression and making its indirect-call guarantee explicit. Please use this as a small typed functional call-chain fixture; distinguish a reproducible missing fault propagation from a stub reached through a helper. Consumer maintainers continue to resolve genuine code findings independently.

Activity

  1. added
    bugSomething isn't working
    bugfixSomething isn't working
    priority: highCritical issue, needs immediate attention.
    on Oct 27, 2026
  2. added theissue type on Oct 27, 2026
  3. moved this to Todo in vypdevon Oct 27, 2026
  4. changed the title [-]Bugbot predicts failing test despite indirect participant binding and passing typed fault assertion[/-] [+]πŸ› - Bugbot predicts failing test despite indirect participant binding and passing typed fault assertion[/+] on Oct 27, 2026
  5. vypbot commented on Oct 27, 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 Oct 27, 2026

    @efraespada
    MemberAuthor

    Final consumer evidence: b7522dd application CI40445149238 passes2740backend+1315desktop+1191browser=5246 executions with zero failures/errors/skips, independently reconciled from1064 rawXML and immutable artifact digests. The original getSession invocation/production flow is retained and the explicit coVerify participant-session assertion is present. The complete24-case returned-state group passes. The configured review has now resolved the consumer finding; all four consumer threads are resolved and the final-head review has zero active/unknown findings.

    This consumer test clarification does not establish an upstream analysis fix; the original indirect-call fixture and contradictory deterministic failure claim remain reproducible from the immutable source in this report. No control, exclusion, threshold or native protection was weakened. Full consumer evidence and exact case inventory: https://github.com/vypdev/vaultstadio/blob/b7522dd0bf3045da7c3c3170487fa4296095f3f0/docs/development/verification/collaboration-authorization-89.json

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

  10. added
    size: XLIndicates that the issue or task is extra large in scope and complexity.
    on Oct 28, 2026
  11. vypbot commented on Oct 28, 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] "acceptance": "The regression fixture passes with the original operation and expected typed error, and Bugbot does not report the test as necessarily failing when the stub is reached through the helper call chain." β€” The patches add delegated call-path guidance and fixtures covering indirect binding, fallback dispatch, and bound callbacks while preserving the asserted typed error. Reported fixture and model observations are not independently verified; the recorded model comparison still has a location-accuracy limitation.

    Next: [R1] "acceptance": "The regression fixture passes with the original operation and expected typed error, and Bugbot does not report the test as necessarily failing when the stub is reached through the helper call chain." β€” Independently verify that the regression fixture passes with the original operation and expected typed error, and that Bugbot omits the necessarily-failing claim when the stub is reached through the helper chain.

  12. added a commit that references this issue on Oct 28, 2026
  13. vypbot commented on Oct 28, 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.

  14. moved this from In Progress to Done in vypdevon Oct 28, 2026
  15. 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 Oct 28, 2026
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: XLIndicates that the issue or task is extra large in scope and complexity.

Type

Projects

  • Status
    Done

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions