← Files Codex ReplayARCHIVED FILE
tests/test_claude_code_sample_loader.py
29.9 KB · Oct 2, 2026 · 00:19 UTC
"""Recorded Claude Code sessions retain their genuine repository and run evidence."""
from __future__ import annotations
import importlib.util
import json
import subprocess
import sys
import tempfile
import unittest
from pathlib import Path
from unittest import mock
PLUGIN_ROOT = Path(__file__).resolve().parent.parent
MODULE_PATH = PLUGIN_ROOT / "scripts" / "claude_code_sample_loader.py"
MODULE_SPEC = importlib.util.spec_from_file_location("claude_code_sample_loader_test", MODULE_PATH)
assert MODULE_SPEC is not None and MODULE_SPEC.loader is not None
loader = importlib.util.module_from_spec(MODULE_SPEC)
sys.modules[MODULE_SPEC.name] = loader
MODULE_SPEC.loader.exec_module(loader)
def load_server():
path = PLUGIN_ROOT / "mcp" / "server.py"
spec = importlib.util.spec_from_file_location("claude_code_sample_server_test", path)
assert spec is not None and spec.loader is not None
server = importlib.util.module_from_spec(spec)
sys.modules[spec.name] = server
spec.loader.exec_module(server)
return server
class ClaudeCodeSampleLoaderTests(unittest.TestCase):
def setUp(self) -> None:
self.temporary = tempfile.TemporaryDirectory()
self.root = Path(self.temporary.name)
self.assets = self.root / "assets"
self.records = self.assets / "records" / "jq-2919--claude-sonnet-5"
self.records.mkdir(parents=True)
self.index = self.assets / "index.json"
self.upstream = self.root / "upstream"
self.upstream.mkdir()
self.git("init", "--quiet", str(self.upstream))
self.git("-C", str(self.upstream), "config", "user.name", "Claude sample fixture")
self.git("-C", str(self.upstream), "config", "user.email", "sample@example.invalid")
(self.upstream / "program.txt").write_text("before\n", encoding="utf-8")
self.git("-C", str(self.upstream), "add", "program.txt")
self.git("-C", str(self.upstream), "commit", "--quiet", "--no-gpg-sign", "-m", "Baseline")
self.baseline = self.git("-C", str(self.upstream), "rev-parse", "HEAD")
(self.upstream / "program.txt").write_text("after\n", encoding="utf-8")
self.patch = self.git("-C", str(self.upstream), "diff") + "\n"
self.git("-C", str(self.upstream), "checkout", "--", "program.txt")
prompt = {
"type": "user",
"uuid": "prompt-1",
"sessionId": "claude-session-1",
"cwd": loader.REPOSITORY_PATH_MARKER,
"timestamp": "2026-08-11T10:00:00Z",
"message": {"role": "user", "content": "Fix argument parsing."},
}
response = {
"type": "assistant",
"uuid": "response-1",
"parentUuid": "prompt-1",
"requestId": "request-1",
"sessionId": "claude-session-1",
"cwd": loader.REPOSITORY_PATH_MARKER,
"timestamp": "2026-08-11T10:00:12Z",
"message": {
"id": "message-1",
"role": "assistant",
"model": "claude-sonnet-5",
"usage": {"input_tokens": 14, "output_tokens": 32},
"content": [
{"type": "text", "text": "Updated argument parsing."},
{
"type": "tool_use",
"id": "edit-1",
"name": "Edit",
"input": {"file_path": "program.txt"},
},
],
},
}
(self.records / "transcript.000.jsonl").write_text(
json.dumps(prompt) + "\n",
encoding="utf-8",
)
(self.records / "transcript.001.jsonl").write_text(
json.dumps(response) + "\n",
encoding="utf-8",
)
(self.records / "patch.diff").write_text(self.patch, encoding="utf-8")
self.result = {
"type": "result",
"subtype": "success",
"session_id": "claude-session-1",
"duration_ms": 12_300,
"duration_api_ms": 9_100,
"total_cost_usd": 0.027,
"usage": {
"input_tokens": 14,
"output_tokens": 32,
"cache_read_input_tokens": 0,
"cache_creation_input_tokens": 0,
},
"modelUsage": {
"claude-sonnet-5": {
"inputTokens": 14,
"outputTokens": 32,
"cacheReadInputTokens": 0,
"cacheCreationInputTokens": 0,
"costUSD": 0.027,
}
},
}
self.write_result(self.result)
self.sample = {
"id": "jq-2919--claude-sonnet-5",
"task_id": "jq-2919",
"title": "Allow scripts after --",
"repository": "jqlang/jq",
"baseline_commit": self.baseline,
"prompt": "Fix argument parsing.",
"source_url": "https://github.com/jqlang/jq/pull/2919",
"model": "claude-sonnet-5",
"model_label": "Claude Sonnet 5",
"session_id": "claude-session-1",
"transcript_parts": [
"records/jq-2919--claude-sonnet-5/transcript.000.jsonl",
"records/jq-2919--claude-sonnet-5/transcript.001.jsonl",
],
"patch_path": "records/jq-2919--claude-sonnet-5/patch.diff",
"result_path": "records/jq-2919--claude-sonnet-5/result.json",
"recorded_at": "2026-08-11T10:00:12Z",
"duration_ms": 12_300,
"duration_api_ms": 9_100,
"total_cost_usd": 0.027,
"verification": {"passed": True},
"original_repository_path_marker": loader.REPOSITORY_PATH_MARKER,
}
self.write_index([self.sample])
def tearDown(self) -> None:
self.temporary.cleanup()
@staticmethod
def git(*arguments: str) -> str:
result = subprocess.run(
["git", *arguments],
check=True,
capture_output=True,
text=True,
timeout=30,
)
return result.stdout.strip()
def precompute(self, entry: dict) -> None:
sys.path.insert(0, str(PLUGIN_ROOT / "scripts"))
from precompute_sample_configurations import precompute
precompute(entry, self.assets)
def write_index(self, samples: list[dict]) -> None:
for sample in samples:
if "configuration_path" not in sample:
self.precompute(sample)
self.index.write_text(
json.dumps({"schema_version": 1, "samples": samples}),
encoding="utf-8",
)
def write_result(self, payload: dict) -> None:
(self.records / "result.json").write_text(json.dumps(payload), encoding="utf-8")
def test_missing_optional_catalog_has_no_sample_threads(self) -> None:
self.assertEqual(loader.load_samples(self.root / "missing.json"), [])
self.assertEqual(loader.list_sample_threads(self.root / "missing.json"), [])
def test_threads_identify_genuine_claude_session_without_disclosing_prompt_or_patch(
self,
) -> None:
(thread,) = loader.list_sample_threads(self.index)
self.assertEqual(thread["imported_thread_id"], "claude-sample:jq-2919--claude-sonnet-5")
self.assertEqual(thread["session_id"], "claude-session-1")
self.assertEqual(thread["claude_model"], "claude-sonnet-5")
self.assertEqual(thread["duration_ms"], 12_300)
self.assertEqual(thread["total_cost_usd"], 0.027)
self.assertNotIn("prompt", thread)
self.assertNotIn("patch", thread)
def test_original_prompt_whitespace_is_preserved_exactly(self) -> None:
exact_prompt = "Fix argument parsing.\r\n"
self.sample["prompt"] = exact_prompt
self.precompute(self.sample)
self.write_index([self.sample])
(sample,) = loader.load_samples(self.index)
self.assertEqual(sample.prompt, exact_prompt)
def test_missing_or_fabricated_run_metrics_are_rejected_before_listing(self) -> None:
for field in ("duration_ms", "duration_api_ms", "total_cost_usd"):
with self.subTest(missing_index_field=field):
invalid = dict(self.sample)
invalid.pop(field)
self.write_index([invalid])
with self.assertRaisesRegex(loader.SampleError, field):
loader.list_sample_threads(self.index)
self.write_index([self.sample])
invalid_results = (
({**self.result, "session_id": "different"}, "genuine session"),
({**self.result, "duration_ms": 0}, "duration_ms"),
({**self.result, "duration_api_ms": 8_000}, "duration_api_ms"),
({**self.result, "total_cost_usd": 0}, "total_cost_usd"),
({**self.result, "usage": {}}, "token usage"),
({**self.result, "modelUsage": {}}, "recorded model"),
(
{
**self.result,
"modelUsage": {
"claude-sonnet-5": {
"inputTokens": 0,
"outputTokens": 0,
"cacheReadInputTokens": 0,
"cacheCreationInputTokens": 0,
"costUSD": 0.027,
}
},
},
"model token usage",
),
)
for invalid, message in invalid_results:
with self.subTest(invalid_result=message):
self.write_result(invalid)
with self.assertRaisesRegex(loader.SampleError, message):
loader.list_sample_threads(self.index)
def test_materialization_retains_real_upstream_commit_transcript_and_recorded_metrics(
self,
) -> None:
controller = self.root / "controller"
with mock.patch.object(loader, "_repository_url", return_value=str(self.upstream)):
materialized = loader.materialize_sample(
self.sample["id"], controller, index_path=self.index
)
repository = Path(materialized["repository_path"])
self.assertEqual(materialized["baseline_commit"], self.baseline)
self.assertEqual(self.git("-C", str(repository), "rev-parse", "HEAD^"), self.baseline)
self.assertEqual((repository / "program.txt").read_text(encoding="utf-8"), "after\n")
self.assertEqual(
self.git("-C", str(repository), "diff", self.baseline, materialized["ending_commit"]),
self.patch.strip(),
)
events = [
json.loads(line)
for line in Path(materialized["transcript_path"])
.read_text(encoding="utf-8")
.splitlines()
]
self.assertEqual(
[event["timestamp"] for event in events],
[
"2026-08-11T10:00:00Z",
"2026-08-11T10:00:12Z",
],
)
self.assertEqual(events[0]["cwd"], str(repository))
self.assertEqual(events[1]["message"]["usage"], {"input_tokens": 14, "output_tokens": 32})
ledger = json.loads(loader.ledger_path(controller).read_text(encoding="utf-8"))
(record,) = ledger["records"]
self.assertEqual(record["imported_thread_id"], "claude-sample:jq-2919--claude-sonnet-5")
self.assertEqual(record["recorded_claude_result"]["duration_ms"], 12_300)
self.assertEqual(record["recorded_claude_result"]["duration_api_ms"], 9_100)
self.assertEqual(record["recorded_claude_result"]["total_cost_usd"], 0.027)
self.assertIn("modelUsage", record["recorded_claude_result"])
with mock.patch.object(
loader, "_repository_url", side_effect=AssertionError("unexpected fetch")
):
resolved = loader.resolve_sample(
record["imported_thread_id"], controller, index_path=self.index
)
repeated = loader.materialize_sample(
self.sample["id"], controller, index_path=self.index
)
replay = resolved["replay"]
self.assertEqual(replay["claude_model"], "claude-sonnet-5")
self.assertEqual(replay["historical_model_request_seconds"], 9.1)
self.assertEqual(replay["historical_wall_clock_seconds"], 12.3)
self.assertEqual(replay["historical_usage"]["input_tokens"], 14)
self.assertEqual(replay["historical_usage"]["output_tokens"], 32)
self.assertEqual(replay["historical_changed_files"], [str(repository / "program.txt")])
self.assertEqual(resolved["baseline"]["ending_commit"], materialized["ending_commit"])
self.assertEqual(resolved["recovery"]["diff"], self.patch)
self.assertEqual(repeated, materialized)
def test_recorded_rename_is_packaged_and_materialized(self) -> None:
self.git("-C", str(self.upstream), "mv", "program.txt", "renamed program.txt")
patch = self.git("-C", str(self.upstream), "diff", "--binary", "HEAD") + "\n"
self.assertIn("rename from program.txt", patch)
(self.records / "patch.diff").write_text(patch, encoding="utf-8")
self.precompute(self.sample)
self.write_index([self.sample])
with mock.patch.object(loader, "_repository_url", return_value=str(self.upstream)):
resolved = loader.resolve_sample(
"claude-sample:" + self.sample["id"],
self.root / "rename-controller",
index_path=self.index,
)
self.assertEqual(resolved["file_selection"]["attributed_files"], ["renamed program.txt"])
self.assertEqual(resolved["recovery"]["diff"], patch)
repository = Path(resolved["baseline"]["repository"])
self.assertFalse((repository / "program.txt").exists())
self.assertEqual((repository / "renamed program.txt").read_text(), "before\n")
def test_empty_recorded_patch_remains_an_honest_empty_child_commit(self) -> None:
(self.records / "patch.diff").write_text("", encoding="utf-8")
self.precompute(self.sample)
self.write_index([self.sample])
with mock.patch.object(loader, "_repository_url", return_value=str(self.upstream)):
materialized = loader.materialize_sample(
self.sample["id"],
self.root / "empty-controller",
index_path=self.index,
)
repository = materialized["repository_path"]
self.assertEqual(self.git("-C", repository, "rev-parse", "HEAD^"), self.baseline)
self.assertEqual(
self.git("-C", repository, "diff", self.baseline, materialized["ending_commit"]),
"",
)
def test_unsafe_identifiers_and_asset_paths_are_rejected(self) -> None:
for sample_id in ("../escape", "nested/name", "", "."):
with self.subTest(sample_id=sample_id):
with self.assertRaises(loader.SampleError):
loader.materialize_sample(sample_id, self.root, index_path=self.index)
unsafe = {**self.sample, "patch_path": "../outside.diff"}
self.write_index([unsafe])
with self.assertRaisesRegex(loader.SampleError, "escapes its asset directory"):
loader.load_samples(self.index)
def test_unknown_sample_and_duplicate_catalog_entries_are_rejected(self) -> None:
with self.assertRaisesRegex(loader.SampleError, "unavailable"):
loader.materialize_sample("missing", self.root, index_path=self.index)
self.write_index([self.sample, dict(self.sample)])
with self.assertRaisesRegex(loader.SampleError, "repeats an identifier"):
loader.load_samples(self.index)
def test_minimal_prepare_resolves_recorded_ending_without_inspection_or_discovery(self) -> None:
sys.path.insert(0, str(PLUGIN_ROOT / "scripts"))
import claude_code_sample_loader as engine_loader
import historical_replay as engine
server = load_server()
controller = self.root / "controller"
thread_id = "claude-sample:" + self.sample["id"]
def dispatch(command, arguments=(), **kwargs):
parsed = (
engine.build_parser().parse_args(
[
command,
*arguments,
"--sample-controller-root",
str(controller),
]
)
if command != "models"
else engine.build_parser().parse_args([command])
)
return engine.dispatch(parsed)
with (
mock.patch.object(engine_loader, "SAMPLE_INDEX", self.index),
mock.patch.object(engine_loader, "_repository_url", return_value=str(self.upstream)),
mock.patch.object(server, "_claude_code_sample_loader", return_value=engine_loader),
mock.patch.object(server, "CONTROLLER_INSTANCE_ROOT", controller),
mock.patch.object(server, "RUN_ROOT", self.root / "runs"),
mock.patch.object(server, "_engine", side_effect=dispatch),
mock.patch.object(server, "_run_worker", side_effect=AssertionError("setup LLM call")),
mock.patch.object(engine, "_selected_model", return_value="gpt-test"),
mock.patch.object(
engine, "discover_codex_models", return_value={"options": [{"id": "gpt-test"}]}
),
mock.patch.object(
engine._discovery(), "build_thread_task", side_effect=AssertionError("rediscovery")
),
mock.patch.object(
engine._discovery(),
"recover_historical_solution",
side_effect=AssertionError("rediscovery"),
),
mock.patch.object(
engine._discovery(), "inspect_baseline", side_effect=AssertionError("rediscovery")
),
mock.patch.object(
engine._discovery(), "inspect_capabilities", return_value={"items": []}
) as capabilities,
):
prepared = server._prepare_payload({"thread_id": thread_id, "model": "gpt-test"})
inspected = server._inspect_thread({"thread_id": thread_id})
self.assertTrue(prepared["ready"])
self.assertEqual(prepared["baseline"]["commit"], self.baseline)
self.assertNotEqual(prepared["baseline"]["ending_commit"], self.baseline)
self.assertEqual(
prepared["baseline"]["ending_commit"], inspected["baseline"]["ending_commit"]
)
self.assertEqual(inspected["replay"]["request_generation"]["method"], "packaged_sample")
self.assertEqual(
server._synthesize_request_payload({"thread_id": thread_id})["request"],
self.sample["prompt"],
)
self.assertEqual(
server._working_directory_payload({"thread_id": thread_id})["source"],
"packaged_sample",
)
capabilities.assert_called()
self.assertEqual(capabilities.call_args.args[0]["observed_tools"], ["Edit"])
with self.assertRaisesRegex(server.ControllerError, "cannot be changed"):
server._resolved_sample({"thread_id": thread_id, "ending_commit": self.baseline})
context = engine._prepare_context(
engine.build_parser().parse_args(
[
"prepare",
"--imported-thread-id",
thread_id,
"--sample-controller-root",
str(controller),
"--model",
"gpt-test",
]
)
)
self.assertEqual(context["historical_candidate"]["candidate"]["diff"], self.patch)
def test_artifact_and_cached_ending_tampering_are_rejected(self) -> None:
controller = self.root / "controller"
with mock.patch.object(loader, "_repository_url", return_value=str(self.upstream)):
materialized = loader.materialize_sample(
self.sample["id"], controller, index_path=self.index
)
manifest = Path(materialized["repository_path"]).parent / "materialization.json"
materialized["ending_commit"] = self.baseline
manifest.write_text(json.dumps(materialized))
with self.assertRaisesRegex(loader.SampleError, "ending state changed"):
loader.materialize_sample(self.sample["id"], controller, index_path=self.index)
(self.records / "patch.diff").write_text(self.patch + "\n")
with self.assertRaisesRegex(loader.SampleError, "artifact integrity"):
loader.load_samples(self.index)
class RecordedClaudeSampleControllerTests(unittest.TestCase):
def test_real_imported_threads_are_preferred_over_recorded_samples(self) -> None:
server = load_server()
sample_loader = server._claude_code_sample_loader()
samples = [
{
"imported_thread_id": "claude-sample:jq-2157--claude-fable-5",
"title": "Sample: Fix URI escaping",
"claude_model": "claude-fable-5",
},
{
"imported_thread_id": "claude-sample:jq-2919--claude-sonnet-5",
"title": "Sample: Allow scripts after --",
"claude_model": "claude-sonnet-5",
},
]
imported = {"imported_thread_id": "thread-1", "title": "An imported Claude thread"}
with (
mock.patch.object(sample_loader, "list_sample_threads", return_value=samples),
mock.patch.object(
server,
"_engine",
return_value={"sessions": [imported], "total": 4, "has_more": True},
) as engine,
):
result = server._call_tool(
{"name": "list_threads", "arguments": {"offset": 1, "limit": 2}}
)
engine.assert_called_once_with("sessions", ["--limit", "2", "--offset", "1"])
payload = result["structuredContent"]
self.assertEqual(payload["threads"], [imported])
self.assertEqual(payload["source"], "imported")
self.assertEqual(payload["total"], 4)
self.assertEqual(payload["imported_total"], 4)
self.assertEqual(payload["sample_total"], 2)
self.assertTrue(payload["has_more"])
def test_recorded_samples_are_default_when_no_real_threads_exist(self) -> None:
server = load_server()
sample_loader = server._claude_code_sample_loader()
sample = {"imported_thread_id": "claude-sample:jq-2919--claude-opus-5"}
with (
mock.patch.object(sample_loader, "list_sample_threads", return_value=[sample]),
mock.patch.object(server, "_engine", return_value={"sessions": [], "total": 0}),
):
payload = server._thread_payload({"offset": 0, "limit": 20})
self.assertEqual(payload["source"], "sample")
self.assertEqual(payload["threads"], [sample])
self.assertEqual(payload["imported_total"], 0)
self.assertEqual(payload["sample_total"], 1)
def test_recorded_samples_can_be_selected_separately_from_real_threads(self) -> None:
server = load_server()
sample_loader = server._claude_code_sample_loader()
samples = [
{"imported_thread_id": "claude-sample:first"},
{"imported_thread_id": "claude-sample:second"},
]
with (
mock.patch.object(sample_loader, "list_sample_threads", return_value=samples),
mock.patch.object(
server,
"_engine",
return_value={"sessions": [{"imported_thread_id": "real-thread"}], "total": 7},
),
):
payload = server._thread_payload({"source": "sample", "offset": 1, "limit": 1})
self.assertEqual(payload["source"], "sample")
self.assertEqual(payload["threads"], [samples[1]])
self.assertEqual(payload["total"], 2)
self.assertEqual(payload["imported_total"], 7)
def test_recorded_claude_sample_search_stays_within_selected_source(self) -> None:
server = load_server()
sample_loader = server._claude_code_sample_loader()
sample = {
"imported_thread_id": "claude-sample:jq-2919--claude-opus-5",
"title": "Sample: Allow scripts after --",
"project_dir": "jqlang/jq",
"claude_model": "claude-opus-5",
}
with (
mock.patch.object(sample_loader, "list_sample_threads", return_value=[sample]),
mock.patch.object(
server,
"_engine",
return_value={"sessions": [{"title": "Different task"}], "total": 1},
),
):
payload = server._thread_payload(
{"source": "sample", "query": "opus", "offset": 0, "limit": 20}
)
self.assertEqual(payload["threads"], [sample])
self.assertEqual(payload["total"], 1)
self.assertEqual(payload["source"], "sample")
def test_unknown_thread_source_is_rejected(self) -> None:
server = load_server()
for source in ("all", [], 7):
with self.subTest(source=source):
with self.assertRaisesRegex(server.ControllerError, "source must be"):
server._thread_payload({"source": source})
def test_thread_picker_separates_imported_and_sample_data(self) -> None:
controller = (PLUGIN_ROOT / "mcp" / "controller.html").read_text(encoding="utf-8")
thread_picker = (
(PLUGIN_ROOT / "mcp" / "controller-ranges.js")
.read_text(encoding="utf-8")
.split("function renderThreadStep", 1)[1]
)
self.assertIn('"Imported threads"', thread_picker)
self.assertIn('"Sample data"', thread_picker)
self.assertIn('data-action="thread-source"', thread_picker)
self.assertIn("state.threadSource === source", thread_picker)
self.assertIn("source: state.threadSource", controller)
def test_recorded_sample_engine_commands_use_only_the_controller_private_ledger(self) -> None:
server = load_server()
sample_loader = server._claude_code_sample_loader()
with tempfile.TemporaryDirectory() as temporary:
controller = Path(temporary)
private_ledger = sample_loader.ledger_path(controller)
private_ledger.parent.mkdir(parents=True)
private_ledger.write_text('{"records": []}', encoding="utf-8")
completed = subprocess.CompletedProcess(
args=[],
returncode=0,
stdout='{"status": "ok"}',
stderr="",
)
with (
mock.patch.object(server, "CONTROLLER_INSTANCE_ROOT", controller),
mock.patch.object(server, "_run_process", return_value=completed) as process,
):
server._engine(
"replay",
["--imported-thread-id", "claude-sample:jq-2919--claude-opus-5"],
)
command = process.call_args.args[0]
self.assertIn("--sample-controller-root", command)
self.assertEqual(
command[command.index("--sample-controller-root") + 1], str(controller)
)
def test_recorded_sample_rejects_traversal_before_materializing(self) -> None:
server = load_server()
sample_loader = server._claude_code_sample_loader()
with mock.patch.object(sample_loader, "materialize_sample") as materialize:
with self.assertRaisesRegex(server.ControllerError, "identifier is invalid"):
server._inspect_thread({"thread_id": "claude-sample:../escape"})
materialize.assert_not_called()
def test_ui_sample_selection_skips_inference_but_imported_selection_still_infers(self) -> None:
harness = r"""
const source = require("node:fs").readFileSync(process.argv[1], "utf8");
const selectSource = source.slice(source.indexOf(" async function selectThread("), source.indexOf(" async function refreshAttributionAndContinue("));
async function exercise(id) {
const calls = [];
const state = {threads: [{id}], selectedModels: [], reviewRevision: 0, promptSynthesisGeneration: 0, workingDirectoryGeneration: 0};
const select = new Function("state", "callTool", "threadId", "text", "render", "normalizeModels", "setSelectedModels", "initializeClassifications", "reviewDraftFromConfiguration", "synthesizePrompt", "inferWorkingDirectory", "asArray", selectSource + "return selectThread;")(
state, async name => { calls.push(name); return {replay: {request: "task", request_generation: {method: "pending"}}}; },
thread => thread.id, value => value || "", () => {}, () => [], () => {}, () => {}, () => ({}),
() => calls.push("synthesize"), () => calls.push("infer"), value => Array.isArray(value) ? value : []);
await select(id, 1);
return {calls, loading: state.workingDirectoryLoading};
}
(async () => process.stdout.write(JSON.stringify([await exercise("claude-sample:test"), await exercise("imported-test") ])))();
"""
completed = subprocess.run(
["node", "-e", harness, str(PLUGIN_ROOT / "mcp" / "controller.html")],
check=True,
capture_output=True,
text=True,
)
sample, imported = json.loads(completed.stdout)
self.assertEqual(sample, {"calls": ["inspect_thread"], "loading": False})
self.assertEqual(
imported, {"calls": ["inspect_thread", "synthesize", "infer"], "loading": True}
)
def test_packaged_text_files_remain_below_monorepo_size_limit(self) -> None:
suffixes = frozenset({".py", ".json", ".jsonl", ".html", ".md", ".mjs", ".diff"})
for path in PLUGIN_ROOT.rglob("*"):
if path.is_file() and path.suffix in suffixes:
with self.subTest(path=path.relative_to(PLUGIN_ROOT)):
self.assertLessEqual(
path.stat().st_size,
150_000,
"Packaged text files must satisfy the monorepo file-size limit.",
)
if __name__ == "__main__":
unittest.main()
SHA-256: dbaa329c48f1f6e9592e68a86db4987808c054b3a16857495222ae64f6b5cd86