feat: add explicit retrospective v2 computation contracts
CI / lite (pull_request) Successful in 9s

This commit is contained in:
ao gong
2026-09-08 19:40:19 +08:00
parent 68dd68392a
commit 2b0e8ee637
19 changed files with 7688 additions and 4 deletions
+27 -1
View File
@@ -16,7 +16,7 @@ def test_module_spec_declares_pure_research_engine_boundary() -> None:
prohibited = " ".join(spec["bounded_context"]["prohibited_responsibilities"]).lower()
for term in ("investment advice", "live order", "credentials", "source facts"):
assert term in prohibited
assert spec["authority"]["revision"] == 5
assert spec["authority"]["revision"] == 6
assert {
(item["contract_id"], item["version"])
for item in spec["contracts"]["provides"]
@@ -28,6 +28,13 @@ def test_module_spec_declares_pure_research_engine_boundary() -> None:
("researchhub.performance-evidence", "1.0.0"),
("researchhub.portfolio-decision", "1.0.0"),
("researchhub.risk-assessment", "1.0.0"),
("researchhub.factor-set-ref", "2.0.0"),
("researchhub.backtest-run-ref", "2.0.0"),
("researchhub.backtest-evidence-manifest", "2.0.0"),
("researchhub.performance-evidence", "2.0.0"),
("researchhub.portfolio-target", "2.0.0"),
("researchhub.portfolio-decision", "2.0.0"),
("researchhub.risk-assessment", "2.0.0"),
}
expected_paths = {
"researchhub.factor-definition": "src/quant_engine/factor_contracts.py",
@@ -41,13 +48,28 @@ def test_module_spec_declares_pure_research_engine_boundary() -> None:
assert all(item["authority"] == "quant_engine" for item in spec["contracts"]["provides"])
assert {
item["contract_id"]: item["path"] for item in spec["contracts"]["provides"]
if item["version"] == "1.0.0"
} == expected_paths
assert {
item["contract_id"]: item["path"] for item in spec["contracts"]["provides"]
if item["version"] == "2.0.0"
} == {
"researchhub.factor-set-ref": "src/quant_engine/retrospective_factor_contracts.py",
"researchhub.backtest-run-ref": "src/quant_engine/retrospective_backtest_contracts.py",
"researchhub.backtest-evidence-manifest": "src/quant_engine/retrospective_artifact_contracts.py",
"researchhub.performance-evidence": "src/quant_engine/retrospective_artifact_contracts.py",
"researchhub.portfolio-target": "src/quant_engine/retrospective_portfolio_risk_contracts.py",
"researchhub.portfolio-decision": "src/quant_engine/retrospective_portfolio_risk_contracts.py",
"researchhub.risk-assessment": "src/quant_engine/retrospective_portfolio_risk_contracts.py",
}
assert {
(item["contract_id"], item["version"])
for item in spec["contracts"]["consumes"]
} == {
("researchhub.dataset-snapshot", "1.0.0"),
("researchhub.data-foundation", "1.0.0"),
("researchhub.dataset-snapshot", "2.0.0"),
("researchhub.data-foundation", "2.0.0"),
}
assert all(
item["authority"] == "researchhub.data"
@@ -65,6 +87,10 @@ def test_module_spec_declares_pure_research_engine_boundary() -> None:
summary = portfolio_contract["summary"].lower()
for term in ("receipt", "portfolio decisions", "risk assessments", "without"):
assert term in summary
retrospective = capabilities["retrospective-computation-contracts"]
assert retrospective["status"] == "operational"
for term in ("two clocks", "retrospective", "no historical-availability", "no execution"):
assert term in retrospective["summary"].lower()
for term in ("approval", "maker-checker", "publication", "paper", "live"):
assert term in prohibited
assert all(