merge: reconcile Wave 1.1 with post-PR40 lab

Merge canonical lab 9557b8d5909eb4a885c3bf49e19a65dd904f8c1d exactly once.
Retain invocation journal ownership and lineage, provider terminal ordering,
teacher handoff, framed DONE handling, and canonical authority/Ajax routing.

Combine dynamic dispatch receipts with lab policy forwarding. Adapt native
shell/patch evidence, explicit TUI verifiers, and artifact recovery presentation.
Refresh generated configuration source links and strengthen adapter regressions.

Validation: focused 2118 passed; Wave 1.1 script 2291 passed; broad runtime
5649 passed; full pytest 11581 passed, 53 skipped, 2 xfailed, 6 subtests passed.
Compileall 1689 Python files; syntax 279 JS and 82 MJS files; diff and
conflict-marker checks passed.
This commit is contained in:
Alexandre Teixeira
2026-10-01 09:09:55 +01:00
304 changed files with 41744 additions and 24384 deletions
+7 -3
View File
@@ -62,17 +62,21 @@ async def test_actual_generator_reports_unavailable_before_inference(
forced_tools={"web_search"}, relevant_tools={"web_search"},
fallbacks=[("https://fallback.invalid", "unused-fallback", {})],
)]
assert len(chunks) == 3
assert len(chunks) == 4
assert json.loads(chunks[0].removeprefix("data: ")) == {
"type": "turn_contract", **selected.audit(),
}
failure = json.loads(chunks[1].removeprefix("data: "))
decision = json.loads(chunks[1].removeprefix("data: "))
assert decision["type"] == "completion_decision"
assert decision["data"]["status"] == "unverified"
assert decision["data"]["evidence_ids"] == []
failure = json.loads(chunks[2].removeprefix("data: "))
assert set(failure) == {"delta"}
assert "can’t perform" in failure["delta"]
assert "unavailable" in failure["delta"]
assert missing in failure["delta"]
assert "haven’t substituted another tool" in failure["delta"]
assert chunks[2] == "data: [DONE]\n\n"
assert chunks[3] == "data: [DONE]\n\n"
def test_unknown_contract_reaches_model_instead_of_forced_clarification():