* docs: consolidate governance anchors and clean up test registries * refactor(cli): decompose cli into dedicated modules * test: fix broken test baselines and formatting * docs: add domain boundary READMEs for governance anchors * test: update baseline for determination lane * test: fix capability_pass expectation * test: fix CORE_SHOWCASE_SKIP_BUDGET enforcement * chore: cleanup CLI extraction and unreachable code
94 lines
4 KiB
Python
94 lines
4 KiB
Python
"""Step B-2 — surface the determination: the engine answers from accrued knowledge.
|
|
|
|
When a question turn is Determined over realized knowledge, the user-facing ``surface``
|
|
IS that answer (rendered honestly: "as I was told", never "verified"). The realizer's
|
|
``articulation_surface`` is retained as evidence — the determination is a selection, not
|
|
a rewrite. Undetermined and flag-off keep the default surface. This is the contract test
|
|
for the selection policy in docs/specs/runtime_contracts.md.
|
|
"""
|
|
|
|
from __future__ import annotations
|
|
|
|
from dataclasses import replace
|
|
|
|
import pytest
|
|
|
|
from chat.runtime import ChatRuntime
|
|
from core.config import RuntimeConfig
|
|
from generate.determine import Determined, render_determination
|
|
|
|
|
|
# --------------------------------------------------------------------------- #
|
|
# render_determination — deterministic, honest basis (unit, no runtime)
|
|
# --------------------------------------------------------------------------- #
|
|
|
|
|
|
def test_render_member_reads_naturally() -> None:
|
|
d = Determined(answer=True, basis="as_told", predicate="member",
|
|
subject="truth", object="concept", grounds=())
|
|
assert render_determination(d) == "Yes — as I was told, truth is a concept."
|
|
|
|
|
|
def test_render_relational_predicate_is_legible() -> None:
|
|
d = Determined(answer=True, basis="as_told", predicate="parent_of",
|
|
subject="alice", object="bob", grounds=())
|
|
assert render_determination(d) == "Yes — as I was told, alice parent of bob."
|
|
|
|
|
|
def test_render_basis_is_honest_never_overclaims() -> None:
|
|
# SPECULATIVE grounds → "as I was told" (today's only case); COHERENT would be the
|
|
# only thing that renders "verified". The render must never overclaim.
|
|
as_told = Determined(True, "as_told", "member", "truth", "concept", ())
|
|
assert "as I was told" in render_determination(as_told)
|
|
assert "verified" not in render_determination(as_told)
|
|
|
|
|
|
# --------------------------------------------------------------------------- #
|
|
# Surface selection in the live turn (integration)
|
|
# --------------------------------------------------------------------------- #
|
|
|
|
|
|
@pytest.fixture(scope="module")
|
|
def accrued_runtime() -> ChatRuntime:
|
|
rt = ChatRuntime(
|
|
config=replace(RuntimeConfig(), accrue_realized_knowledge=True),
|
|
no_load_state=True,
|
|
)
|
|
rt.chat("Truth is a concept.") # accrue the fact this module's questions probe
|
|
return rt
|
|
|
|
|
|
def _default_surface(text: str) -> str:
|
|
rt = ChatRuntime(config=RuntimeConfig(), no_load_state=True)
|
|
rt.chat("Truth is a concept.")
|
|
return rt.chat(text).surface
|
|
|
|
|
|
def test_determined_question_surfaces_the_answer(accrued_runtime) -> None:
|
|
response = accrued_runtime.chat("Is truth a concept?")
|
|
assert response.surface == "Yes — as I was told, truth is a concept."
|
|
# the realizer surface is retained as evidence, distinct from the selection
|
|
assert response.articulation_surface
|
|
assert response.surface != response.articulation_surface
|
|
|
|
|
|
def test_determined_surface_does_not_rewrite_articulation(accrued_runtime) -> None:
|
|
# The determination SELECTS the surface; the articulation_surface is the same
|
|
# evidence the default (flag-off) turn produces.
|
|
response = accrued_runtime.chat("Is truth a concept?")
|
|
off = ChatRuntime(config=RuntimeConfig(), no_load_state=True)
|
|
off.chat("Truth is a concept.")
|
|
off_response = off.chat("Is truth a concept?")
|
|
assert response.articulation_surface == off_response.articulation_surface
|
|
|
|
|
|
def test_undetermined_question_keeps_default_surface(accrued_runtime) -> None:
|
|
response = accrued_runtime.chat("Is truth a virtue?") # never told → Undetermined
|
|
# not an affirmation; the honest default surface (== the flag-off surface)
|
|
assert not response.surface.startswith("Yes — as I was told")
|
|
assert response.surface == _default_surface("Is truth a virtue?")
|
|
|
|
|
|
def test_flag_off_never_surfaces_a_determination() -> None:
|
|
surface = _default_surface("Is truth a concept?")
|
|
assert not surface.startswith("Yes — as I was told")
|