Skip to content

test: add decay-required property test - #9

Merged
robotrocketscience merged 1 commit into
mainfrom
test/decay-required
Apr 26, 2026
Merged

test: add decay-required property test#9
robotrocketscience merged 1 commit into
mainfrom
test/decay-required

Conversation

@robotrocketscience

Copy link
Copy Markdown
Owner

Without decay, evidence mass runs unbounded under mixed-sign feedback. With type-specific half-life decay, mass stays bounded. This test asserts both regimes.

Test plan

  • CI green
  • Staging Gate green

@robotrocketscience
robotrocketscience merged commit 06116e1 into main Apr 26, 2026
8 checks passed
@robotrocketscience
robotrocketscience deleted the test/decay-required branch April 26, 2026 22:23
robotrocketscience added a commit that referenced this pull request May 9, 2026
…r on empty derivation

`tool_lock` had `assert derived.belief is not None` directly on the hot
path. When the classifier sets persist=False (empty input post-strip,
question-shaped statement, anything else the derivation worker rejects),
the assert fires and the MCP tool surface crashes with an unhandled
exception. A crashing tool is far worse host-UX than a kind-tagged error
the agent can read and act on.

Replaces with a structured return:

  {"kind": "lock.error", "id": "", "action": "error",
   "error": "derivation produced no belief from the supplied statement
             (likely empty after normalization)"}

Matches the existing lock.error shape used downstream (run_worker
reported empty derived_belief_ids list) and adds the populated `error`
field for actionability.

Adds tests/test_mcp_lock_via_worker.py::
test_lock_returns_structured_error_when_derivation_yields_no_belief —
monkeypatches `derive` to return DerivationOutput(belief=None,
skip_reason="empty") and asserts the new shape.

Phase 2 M4 of the mcp-server-properly-built audit. Closes the last
phase-2 finding (#9 in the audit list).
robotrocketscience added a commit that referenced this pull request May 9, 2026
…r on empty derivation

`tool_lock` had `assert derived.belief is not None` directly on the hot
path. When the classifier sets persist=False (empty input post-strip,
question-shaped statement, anything else the derivation worker rejects),
the assert fires and the MCP tool surface crashes with an unhandled
exception. A crashing tool is far worse host-UX than a kind-tagged error
the agent can read and act on.

Replaces with a structured return:

  {"kind": "lock.error", "id": "", "action": "error",
   "error": "derivation produced no belief from the supplied statement
             (likely empty after normalization)"}

Matches the existing lock.error shape used downstream (run_worker
reported empty derived_belief_ids list) and adds the populated `error`
field for actionability.

Adds tests/test_mcp_lock_via_worker.py::
test_lock_returns_structured_error_when_derivation_yields_no_belief —
monkeypatches `derive` to return DerivationOutput(belief=None,
skip_reason="empty") and asserts the new shape.

Phase 2 M4 of the mcp-server-properly-built audit. Closes the last
phase-2 finding (#9 in the audit list).
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant