feat: make Core reports commercially production-ready
This commit is contained in:
@@ -27,6 +27,7 @@ CASAN_BIN="$BUNDLE/bin/casan"
|
||||
test -f "$BUNDLE/packages/casan-harness/assets/local-viewer/index.html"
|
||||
test -f "$BUNDLE/packages/casan-harness/scripts/python/local_report.py"
|
||||
test -f "$BUNDLE/packages/casan-harness/scripts/python/local_viewer.py"
|
||||
test -f "$BUNDLE/packages/casan-harness/scripts/python/readiness.py"
|
||||
test ! -e "$BUNDLE/packages/casan-control-panel"
|
||||
test ! -e "$BUNDLE/package.json"
|
||||
|
||||
@@ -37,18 +38,26 @@ mkdir -p \
|
||||
"$PROJECT/.specify/logs/trace-events" \
|
||||
"$PROJECT/.specify/logs/cost"
|
||||
|
||||
python3 - "$PROJECT" <<'PY'
|
||||
python3 - "$PROJECT" "$BUNDLE" <<'PY'
|
||||
import json
|
||||
from pathlib import Path
|
||||
import sys
|
||||
|
||||
root = Path(sys.argv[1])
|
||||
bundle = Path(sys.argv[2])
|
||||
(root / ".casan/config.json").write_text(json.dumps({
|
||||
"schema_version": "21.3",
|
||||
"project_id": "artifact-project",
|
||||
"project_name": "Artifact Project",
|
||||
"edition": "core",
|
||||
"enforcement_mode": "enforce",
|
||||
"runtime_path": str(bundle),
|
||||
"clients": ["vscode-copilot"],
|
||||
}), encoding="utf-8")
|
||||
(root / ".casan/casan-hook.py").write_text("# casan-hook.py\n", encoding="utf-8")
|
||||
(root / ".casan/version.lock").write_text(json.dumps({
|
||||
"harness_version": "artifact",
|
||||
"harness_hash": "artifact-hash",
|
||||
}), encoding="utf-8")
|
||||
trace_id = "artifact-run-1"
|
||||
trace = {
|
||||
@@ -100,6 +109,7 @@ PY
|
||||
|
||||
(
|
||||
cd "$PROJECT"
|
||||
CASAN_APP_ROOT="$PROJECT" "$CASAN_BIN" readiness --refresh --json > "$WORK/readiness.json"
|
||||
CASAN_APP_ROOT="$PROJECT" "$CASAN_BIN" report latest | grep -q "view_command=casan view artifact-run-1"
|
||||
CASAN_APP_ROOT="$PROJECT" "$CASAN_BIN" report export artifact-run-1 \
|
||||
--format html --output "$WORK/run.html" >/dev/null
|
||||
@@ -118,6 +128,13 @@ assert d["summary"]["runs"] == 1
|
||||
assert d["summary"]["tokens"]["total"] is None
|
||||
assert d["summary"]["cost_usd"]["estimated"] is None
|
||||
PY
|
||||
python3 - "$WORK/readiness.json" <<'PY'
|
||||
import json, sys
|
||||
d = json.load(open(sys.argv[1], encoding="utf-8"))
|
||||
assert d["dimensions"]["core"]["status"] == "ready"
|
||||
assert d["dimensions"]["domain_pipeline"]["status"] == "not_configured"
|
||||
assert d["dimensions"]["provider_telemetry"]["status"] == "optional_unavailable"
|
||||
PY
|
||||
|
||||
URL="$(CASAN_APP_ROOT="$PROJECT" "$CASAN_BIN" view artifact-run-1 --no-open)"
|
||||
VIEWER_STARTED=1
|
||||
|
||||
@@ -30,6 +30,16 @@ class LocalReportTests(unittest.TestCase):
|
||||
"enforcement_mode": "enforce",
|
||||
"maturity": {"level": 4, "status": "assessed"},
|
||||
}), encoding="utf-8")
|
||||
(self.root / ".casan" / "readiness.json").write_text(json.dumps({
|
||||
"schema_version": 1,
|
||||
"overall_status": "ready",
|
||||
"dimensions": {
|
||||
"core": {"status": "ready", "acceptance": []},
|
||||
"domain_pipeline": {"status": "not_configured"},
|
||||
"provider_telemetry": {"status": "optional_unavailable"},
|
||||
},
|
||||
"next_actions": [],
|
||||
}), encoding="utf-8")
|
||||
for path in (
|
||||
".specify/state",
|
||||
".specify/logs/trace",
|
||||
@@ -92,6 +102,8 @@ class LocalReportTests(unittest.TestCase):
|
||||
self.assertEqual(h6["summary"]["runs"], 0)
|
||||
self.assertIsNone(h6["summary"]["tokens"]["total"])
|
||||
self.assertTrue(any(item["code"] == "METRICS_MISSING" for item in h6["findings"]))
|
||||
profile = REPORT.project_profile(self.root)
|
||||
self.assertEqual(profile["readiness"]["dimensions"]["core"]["status"], "ready")
|
||||
|
||||
def test_run_reconstructs_all_gates_and_redacts_sensitive_fields(self):
|
||||
self.write_run()
|
||||
@@ -160,6 +172,10 @@ class LocalReportTests(unittest.TestCase):
|
||||
self.assertIn('tabindex="-1"', script)
|
||||
self.assertIn('dossier.focus({ preventScroll: true })', script)
|
||||
self.assertIn("dossier.scrollIntoView({", script)
|
||||
self.assertIn("No operational KPIs are shown until evidence exists.", script)
|
||||
self.assertIn("H6 begins with the first governed run.", script)
|
||||
self.assertIn("No operational counters yet", script)
|
||||
self.assertNotIn('"Ready for the first governed run."', script)
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
|
||||
@@ -0,0 +1,161 @@
|
||||
#!/usr/bin/env python3
|
||||
"""Acceptance tests for CASAN's three-dimensional readiness contract."""
|
||||
|
||||
from __future__ import annotations
|
||||
|
||||
import importlib.util
|
||||
import json
|
||||
from pathlib import Path
|
||||
import tempfile
|
||||
import unittest
|
||||
|
||||
|
||||
MODULE = Path(__file__).resolve().parents[1] / "scripts" / "python" / "readiness.py"
|
||||
SPEC = importlib.util.spec_from_file_location("casan_readiness", MODULE)
|
||||
READINESS = importlib.util.module_from_spec(SPEC)
|
||||
assert SPEC.loader
|
||||
SPEC.loader.exec_module(READINESS)
|
||||
|
||||
|
||||
class ReadinessTests(unittest.TestCase):
|
||||
def setUp(self):
|
||||
self.temporary = tempfile.TemporaryDirectory()
|
||||
self.root = Path(self.temporary.name)
|
||||
self.runtime = self.root / "runtime"
|
||||
report = (
|
||||
self.runtime / "packages" / "casan-harness" / "scripts" /
|
||||
"python" / "local_report.py"
|
||||
)
|
||||
report.parent.mkdir(parents=True)
|
||||
report.write_text("# report engine\n", encoding="utf-8")
|
||||
(self.root / ".casan").mkdir()
|
||||
(self.root / ".casan" / "casan-hook.py").write_text(
|
||||
"# bootstrap\n", encoding="utf-8")
|
||||
(self.root / ".casan" / "config.json").write_text(json.dumps({
|
||||
"schema_version": "21.3",
|
||||
"project_id": "commercial-core",
|
||||
"edition": "core",
|
||||
"enforcement_mode": "enforce",
|
||||
"runtime_path": str(self.runtime),
|
||||
"clients": ["codex"],
|
||||
}), encoding="utf-8")
|
||||
(self.root / ".casan" / "version.lock").write_text(json.dumps({
|
||||
"harness_version": "1.0.5",
|
||||
"harness_hash": "abc123",
|
||||
}), encoding="utf-8")
|
||||
(self.root / ".codex").mkdir()
|
||||
(self.root / ".codex" / "hooks.json").write_text(
|
||||
'{"hooks":{"SessionStart":[{"hooks":[{"command":"python3 .casan/casan-hook.py --client codex"}]}]}}',
|
||||
encoding="utf-8",
|
||||
)
|
||||
(self.root / ".specify" / "logs").mkdir(parents=True)
|
||||
(self.root / ".specify" / "state").mkdir(parents=True)
|
||||
(self.root / "package.json").write_text(
|
||||
'{"name":"commercial-core"}', encoding="utf-8")
|
||||
|
||||
def tearDown(self):
|
||||
self.temporary.cleanup()
|
||||
|
||||
def test_core_is_ready_without_a_domain_pack_or_provider_telemetry(self):
|
||||
result = READINESS.assess(self.root, client_state={
|
||||
"codex": {
|
||||
"verified": True,
|
||||
"operational": True,
|
||||
"status": "trusted",
|
||||
},
|
||||
})
|
||||
dimensions = result["dimensions"]
|
||||
self.assertEqual(result["overall_status"], "ready")
|
||||
self.assertEqual(dimensions["core"]["status"], "ready")
|
||||
self.assertEqual(
|
||||
dimensions["domain_pipeline"]["status"], "not_configured")
|
||||
self.assertEqual(
|
||||
dimensions["provider_telemetry"]["status"],
|
||||
"optional_unavailable",
|
||||
)
|
||||
self.assertEqual(
|
||||
dimensions["core"]["acceptance"][5]["status"],
|
||||
"optional_unavailable",
|
||||
)
|
||||
|
||||
def test_unverified_codex_trust_is_an_action_not_a_fake_ready_state(self):
|
||||
result = READINESS.assess(self.root, client_state={
|
||||
"codex": {
|
||||
"verified": True,
|
||||
"operational": False,
|
||||
"status": "modified",
|
||||
},
|
||||
})
|
||||
self.assertEqual(result["overall_status"], "action_required")
|
||||
self.assertEqual(
|
||||
result["dimensions"]["core"]["acceptance"][1]["status"],
|
||||
"action_required",
|
||||
)
|
||||
self.assertTrue(any(
|
||||
action["code"] == "verify_codex_trust"
|
||||
for action in result["next_actions"]
|
||||
))
|
||||
|
||||
def test_one_healthy_route_keeps_core_operational_with_attention(self):
|
||||
config_path = self.root / ".casan" / "config.json"
|
||||
config = json.loads(config_path.read_text(encoding="utf-8"))
|
||||
config["clients"] = ["codex", "vscode-copilot"]
|
||||
config_path.write_text(json.dumps(config), encoding="utf-8")
|
||||
result = READINESS.assess(self.root, client_state={
|
||||
"codex": {
|
||||
"verified": True,
|
||||
"operational": True,
|
||||
"status": "trusted",
|
||||
},
|
||||
"vscode-copilot": {"operational": False},
|
||||
})
|
||||
self.assertEqual(result["overall_status"], "ready_with_attention")
|
||||
self.assertEqual(
|
||||
result["dimensions"]["core"]["acceptance"][1]["status"],
|
||||
"warning",
|
||||
)
|
||||
self.assertTrue(any(
|
||||
action["code"] == "activate_vscode_copilot"
|
||||
for action in result["next_actions"]
|
||||
))
|
||||
|
||||
def test_discovery_is_casan_owned_and_never_creates_domain_inputs(self):
|
||||
result = READINESS.assess(self.root, persist=True, client_state={
|
||||
"codex": {
|
||||
"verified": True,
|
||||
"operational": True,
|
||||
"status": "trusted",
|
||||
},
|
||||
})
|
||||
self.assertEqual(result["dimensions"]["domain_pipeline"]["domain_packs"], [])
|
||||
self.assertTrue((self.root / ".casan" / "discovery.json").is_file())
|
||||
self.assertTrue((self.root / ".casan" / "readiness.json").is_file())
|
||||
self.assertFalse((self.root / "apps").exists())
|
||||
|
||||
def test_domain_configuration_references_existing_project_source_only(self):
|
||||
manifest = self.root / "docs" / "project.manifest.json"
|
||||
manifest.parent.mkdir()
|
||||
manifest.write_text(json.dumps({
|
||||
"schema_version": 1,
|
||||
"project_id": "commercial-core",
|
||||
}), encoding="utf-8")
|
||||
configured = READINESS.configure_domain(
|
||||
self.root, "docs/project.manifest.json")
|
||||
self.assertEqual(configured["manifest"], "docs/project.manifest.json")
|
||||
result = READINESS.assess(self.root, client_state={
|
||||
"codex": {
|
||||
"verified": True,
|
||||
"operational": True,
|
||||
"status": "trusted",
|
||||
},
|
||||
})
|
||||
self.assertEqual(
|
||||
result["dimensions"]["domain_pipeline"]["status"], "configured")
|
||||
self.assertEqual(
|
||||
result["dimensions"]["domain_pipeline"]["selected_manifest"],
|
||||
"docs/project.manifest.json",
|
||||
)
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
unittest.main()
|
||||
Reference in New Issue
Block a user