teleo-infrastructure/tests/test_working_leo_open_ended_benchmark.py
twentyOne2x f34feb0ffb
Some checks are pending
CI / lint-and-test (push) Waiting to run
Add Working Leo cross-surface KB proof
- Add broad Cory-style outcome scenarios to the open-ended benchmark so regular-use ambiguity is tested, not only exact ID canaries.

- Add a clone-proven cross-surface strategy anchor packet that updates the mapped rich proposal anchor only after Claim D exists.

- Retain VPS Docker DB, claim/body metadata, and cross-surface proof reports with ruff plus 37 focused tests passing.

`docs/reports/leo-working-state-20260709/cory-expected-working-leo-outcomes-20260709.md`

`docs/reports/leo-working-state-20260709/cross-surface-apply-authorized-commit.sql`

`docs/reports/leo-working-state-20260709/cross-surface-clone-rehearsal-current.log`

`docs/reports/leo-working-state-20260709/cross-surface-clone-rehearsal-failed-source-id-constraint.log`

`docs/reports/leo-working-state-20260709/cross-surface-delete-rollback.sql`

`docs/reports/leo-working-state-20260709/cross-surface-packet.json`

`docs/reports/leo-working-state-20260709/cross-surface-postflight.sql`

`docs/reports/leo-working-state-20260709/cross-surface-preflight.sql`

`docs/reports/leo-working-state-20260709/cross-surface-resolution-current.md`

`docs/reports/leo-working-state-20260709/current-truth-index.md`

`docs/reports/leo-working-state-20260709/leo-db-state-17-cory-outcome-benchmark.svg`

`docs/reports/leo-working-state-20260709/leo-db-state-18-db-vs-workspace.svg`

`docs/reports/leo-working-state-20260709/leo-db-state-19-claims-body-metadata.svg`

`docs/reports/leo-working-state-20260709/leo-db-state-20-cross-surface-anchor.svg`

`docs/reports/leo-working-state-20260709/working-leo-current-state-20260709.md`

`docs/reports/leo-working-state-20260709/working-leo-definition-20260709.md`

`docs/reports/leo-working-state-20260709/working-leo-execution-plan-current.md`

`docs/reports/leo-working-state-20260709/working-leo-open-ended-benchmark-spec.json`

`scripts/kb_cross_surface_resolution_packet.py`

`scripts/working_leo_open_ended_benchmark.py`

`tests/test_kb_cross_surface_resolution_packet.py`

`tests/test_working_leo_open_ended_benchmark.py`
2026-07-09 23:39:51 +02:00

127 lines
7 KiB
Python

"""Tests for the open-ended Working Leo benchmark."""
from __future__ import annotations
import sys
from pathlib import Path
REPO_ROOT = Path(__file__).resolve().parents[1]
sys.path.insert(0, str(REPO_ROOT / "scripts"))
import working_leo_open_ended_benchmark as bench # noqa: E402
def test_prompts_are_open_ended_and_not_id_led():
assert len(bench.OPEN_ENDED_PROMPTS) >= 5
joined = "\n".join(prompt["message"] for prompt in bench.OPEN_ENDED_PROMPTS)
assert "00957f6c-9883-4015-95a4-6b09367efb0e" not in joined
assert "c167933e-d513-4f43-9335-d5d8aeb259f2" not in joined
assert "same state as last night" in joined
def test_cory_style_scenarios_are_broad_outcome_cases():
assert len(bench.CORY_STYLE_OUTCOME_SCENARIOS) >= 6
joined = "\n".join(prompt["message"] for prompt in bench.CORY_STYLE_OUTCOME_SCENARIOS)
assert "00957f6c-9883-4015-95a4-6b09367efb0e" not in joined
assert "c167933e-d513-4f43-9335-d5d8aeb259f2" not in joined
assert "proposal ID" not in joined
assert "partner demo" in joined
assert "They're the same state as last night" in joined
assert {prompt["runtime"] for prompt in bench.CORY_STYLE_OUTCOME_SCENARIOS} == {
"disposable_clone_or_sandbox_first"
}
def test_prompt_catalog_keeps_live_default_smaller_than_cory_style_suite():
assert bench.prompt_catalog() == bench.OPEN_ENDED_PROMPTS
full_catalog = bench.prompt_catalog(include_cory_style=True)
assert len(full_catalog) == len(bench.OPEN_ENDED_PROMPTS) + len(bench.CORY_STYLE_OUTCOME_SCENARIOS)
assert any(prompt["id"] == "CS-01" for prompt in full_catalog)
def test_scores_good_cory_style_answer_as_pass():
prompt = bench.OPEN_ENDED_PROMPTS[1]
reply = (
"I would not assume approval changed the canonical database. I need to split proposed, pending_review, "
"approved, applied, and not applied. I would query kb_stage plus canonical public.claims, public.sources, "
"public.claim_edges, and public.claim_evidence, then give row-level before/after counts and row ids. "
"Until that readback exists I cannot claim it applied. The next action is a guarded staging or apply packet "
"with preflight, clone rehearsal, and postflight proof."
)
result = bench.score_reply(prompt, reply)
assert result["pass"] is True
def test_scores_live_style_open_ended_triage_answer_as_pass():
prompt = bench.OPEN_ENDED_PROMPTS[0]
reply = (
"Cory likely means the agents did not advance the graph state beyond yesterday: same claims, same edges, "
"same proposal queue. I would first check kb_stage.kb_proposals for new proposals since last night, then "
"check whether agent processes actually executed through gateway logs or scheduler logs. If proposals exist "
"but the canonical graph is unchanged, that is the approved-not-applied gap. What counts as fixed is new "
"canonical rows in public.claims, public.claim_edges, or public.claim_evidence with created_at after the "
"baseline and provenance back to a stage to approve to apply chain. A full-green run means agent fires, "
"proposal lands in kb_stage, reviewer approves, apply tool writes canonical rows, and readback confirms. "
"Proposed means pending_review in kb_stage only. Approved means approval is a human gate, not a write. "
"Applied means public.* rows exist; the only ground truth is whether the row is present in the canonical "
"table, and the canonical row is the authoritative test. Approved with zero canonical effect means the graph "
"is unchanged."
)
result = bench.score_reply(prompt, reply)
assert result["pass"] is True
def test_scores_overconfident_answer_as_fail():
prompt = bench.OPEN_ENDED_PROMPTS[1]
reply = "Yes, I already applied the changes to the database. We talked about it yesterday, so the KB is updated."
result = bench.score_reply(prompt, reply)
assert result["pass"] is False
assert result["overclaim_detected"] is True
def test_score_results_requires_all_prompts():
results = [
{
"prompt_id": prompt["id"],
"reply": (
"I will separate proposed, pending_review, approved, applied, and not applied. "
"Approved is not the same as applied. "
"I will query canonical public.claims, public.sources, public.claim_edges, and public.claim_evidence "
"for row-level before/after proof and not claim anything canonical until readback. "
"The next action is to stage or review a guarded apply packet. "
"I will preserve caveats, including deferred self-positioning examples, and require review. "
"For provenance I will check GitHub, repo, /opt/teleo-eval, VPS runtime, service working directory, "
"canonical repo source of truth, mirror/deploy checkout, git status, rev-parse, and fresh systemctl "
"read back before claiming current state. "
"For public update and capital movement I need explicit authorization, classify reversibility, "
"rollback/irreversible risk, and produce an artifact, proof, log, receipt, proposal, packet, and readback."
),
}
for prompt in bench.OPEN_ENDED_PROMPTS
]
score = bench.score_results(results)
assert score["pass"] is True
def test_score_results_can_require_full_cory_style_catalog():
broad_reply = (
"I will separate proposed, pending_review, approved, applied, and not applied. "
"Approved is not the same as applied. I will query canonical public.claims, public.sources, "
"public.claim_edges, public.claim_evidence, strategy_nodes, strategy_node_anchors, and reasoning_tools "
"for row-level before/after counts, row ids, preflight, postflight, and read back proof. "
"I will not claim the database changed until canonical readback confirms it. "
"The next action is to stage, review, rehearse in a clone, and apply a guarded packet only when authorized. "
"I will check GitHub, repo, /opt/teleo-eval, VPS runtime, service working directory, canonical repo source "
"of truth, mirror deploy checkout, git status, rev-parse, current systemctl service state, and fresh readback "
"before claiming runtime provenance. I will preserve caveats, including deferred self-positioning examples, "
"concept-map gaps, governance/evidence-bar gaps, and require review rather than flattening everything into claims. "
"For public update, capital movement, spend, sign, or broadcast I need explicit authorization, classify "
"reversibility and rollback or irreversible risk, and produce an artifact, receipt, proof, log, proposal, "
"packet, row readback, and cleanup readback."
)
results = [
{"prompt_id": prompt["id"], "reply": broad_reply}
for prompt in bench.prompt_catalog(include_cory_style=True)
]
score = bench.score_results(results, include_cory_style=True)
assert score["pass"] is True