[P2] Make inert MCP definition test deterministic without choicepoint #65

Closed
opened 2026-08-17 05:54:01 +00:00 by lost-rob0t · 2 comments
lost-rob0t commented 2026-08-17 05:54:01 +00:00 (Migrated from github.com)

Problem

The exact-head deterministic CI for PR #62 / canonical main passes, but PlUnit still emits:

PL-Unit: Test mcp_definition_does_not_auto_install_or_run: Test succeeded with choicepoint

at test/rlm_tool_mcp_async_test.pl around the inert MCP-definition coverage.

This is not a correctness blocker for #62, but deterministic core tests should not leave unintended choicepoints because they can hide accidental nondeterminism and make future regression output noisy.

Acceptance

  • Localize the remaining choicepoint in mcp_definition_does_not_auto_install_or_run.
  • Make the test and/or predicate under test deterministic for the intended single result without masking real multiple-solution behavior with an arbitrary cut.
  • Preserve the invariant that MCP definitions are inert: loading/querying a declaration does not install, start, connect, or mutate lifecycle state.
  • Canonical deterministic suite remains green with no choicepoint warning from this test.
  • Configured REAL OpenRouter suite remains green if production code changes are required.

Context

Discovered during final exact-head validation of PR #62 after the authority singleton warning was removed. The full deterministic and REAL matrices otherwise passed on head 1dddd22e0d4bdd8c862cc06c6a3d609c26c96094, merged to main as 88b64db41a4c474379a1808b95c761ffc78d9fc2.

## Problem The exact-head deterministic CI for PR #62 / canonical main passes, but PlUnit still emits: ```text PL-Unit: Test mcp_definition_does_not_auto_install_or_run: Test succeeded with choicepoint ``` at `test/rlm_tool_mcp_async_test.pl` around the inert MCP-definition coverage. This is not a correctness blocker for #62, but deterministic core tests should not leave unintended choicepoints because they can hide accidental nondeterminism and make future regression output noisy. ## Acceptance - [ ] Localize the remaining choicepoint in `mcp_definition_does_not_auto_install_or_run`. - [ ] Make the test and/or predicate under test deterministic for the intended single result without masking real multiple-solution behavior with an arbitrary cut. - [ ] Preserve the invariant that MCP definitions are inert: loading/querying a declaration does not install, start, connect, or mutate lifecycle state. - [ ] Canonical deterministic suite remains green with no choicepoint warning from this test. - [ ] Configured REAL OpenRouter suite remains green if production code changes are required. ## Context Discovered during final exact-head validation of PR #62 after the authority singleton warning was removed. The full deterministic and REAL matrices otherwise passed on head `1dddd22e0d4bdd8c862cc06c6a3d609c26c96094`, merged to main as `88b64db41a4c474379a1808b95c761ffc78d9fc2`.
lost-rob0t commented 2026-08-17 06:52:30 +00:00 (Migrated from github.com)

PR #66 fixes the known inert-definition choicepoint directly in test/rlm_tool_mcp_async_test.pl.

Instead of member/2 selecting async_fixture and leaving alternatives, the test now collects every definition whose name == async_fixture and unifies that collection with [Spec]. That both proves exactly one matching inert definition and leaves no choicepoint; no arbitrary cut was added.

Keeping #65 open until the exact final PR head's deterministic PlUnit output confirms the warning is gone. If production code remains unchanged for this fix and the full PR gates pass, close against #66's merge SHA.

PR #66 fixes the known inert-definition choicepoint directly in `test/rlm_tool_mcp_async_test.pl`. Instead of `member/2` selecting `async_fixture` and leaving alternatives, the test now collects every definition whose `name == async_fixture` and unifies that collection with `[Spec]`. That both proves exactly one matching inert definition and leaves no choicepoint; no arbitrary cut was added. Keeping #65 open until the exact final PR head's deterministic PlUnit output confirms the warning is gone. If production code remains unchanged for this fix and the full PR gates pass, close against #66's merge SHA.
lost-rob0t commented 2026-08-17 06:58:07 +00:00 (Migrated from github.com)

Closed by squash merge 9ba763d248f6e087b3ff01c651762997f02ee726 from PR #66.

The exact final deterministic CI head a4a45a6eb0c753fa626a8db47016654e990d20e2 ran mcp_definition_does_not_auto_install_or_run with no PlUnit choicepoint warning. The test now proves exactly one matching inert async_fixture definition rather than selecting one with a residual member/2 choicepoint or masking multiplicity with a cut.

The complete configured REAL OpenRouter matrix also passed on the same head.

Closed by squash merge `9ba763d248f6e087b3ff01c651762997f02ee726` from PR #66. The exact final deterministic CI head `a4a45a6eb0c753fa626a8db47016654e990d20e2` ran `mcp_definition_does_not_auto_install_or_run` with no PlUnit choicepoint warning. The test now proves exactly one matching inert `async_fixture` definition rather than selecting one with a residual `member/2` choicepoint or masking multiplicity with a cut. The complete configured REAL OpenRouter matrix also passed on the same head.
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
nsaspy/prolog-rlm#65
No description provided.