feat: make Core reports commercially production-ready
This commit is contained in:
@@ -80,6 +80,7 @@ for required in (
|
||||
"packages/casan-harness/scripts/python/local_report.py",
|
||||
"packages/casan-harness/scripts/python/local_viewer.py",
|
||||
"packages/casan-harness/scripts/python/report_cli.py",
|
||||
"packages/casan-harness/scripts/python/readiness.py",
|
||||
):
|
||||
assert (root / required).is_file(), required
|
||||
registry = json.loads(
|
||||
@@ -148,6 +149,7 @@ for required in (
|
||||
"packages/casan-harness/config/tool-registry.yaml",
|
||||
"packages/casan-harness/scripts/bash/casan-harness.sh",
|
||||
"packages/casan-harness/scripts/python/local_viewer.py",
|
||||
"packages/casan-harness/scripts/python/readiness.py",
|
||||
"packaging/runtime-layout.json",
|
||||
"scripts/copy-runtime.py",
|
||||
"install.sh",
|
||||
@@ -159,9 +161,31 @@ echo "===== ② casan init (config only, no harness copy) ====="
|
||||
PROJ="$WORK/proj/my-app"; mkdir -p "$PROJ"; echo '{"name":"x"}' > "$PROJ/package.json"
|
||||
( cd "$PROJ" && "$CASAN" init --project my-app --mode enforce >/dev/null 2>&1 ) \
|
||||
&& pass "casan init completes" || fail "casan init failed"
|
||||
for f in .casan/config.json .casan/version.lock .casan/agentic.env .casan/casan-hook.py .claude/settings.json .codex/hooks.json .vscode/extensions.json .specify/.gitignore; do
|
||||
for f in .casan/config.json .casan/version.lock .casan/agentic.env .casan/casan-hook.py .casan/discovery.json .casan/readiness.json .claude/settings.json .codex/hooks.json .vscode/extensions.json .specify/.gitignore; do
|
||||
[[ -f "$PROJ/$f" ]] && pass "init wrote $f" || fail "init missing $f"
|
||||
done
|
||||
python3 - "$PROJ/.casan/readiness.json" <<'PY' \
|
||||
&& pass "Core readiness is independent from optional Domain/Provider states" \
|
||||
|| fail "commercial readiness contract is invalid"
|
||||
import json
|
||||
import sys
|
||||
|
||||
d = json.load(open(sys.argv[1], encoding="utf-8"))
|
||||
assert d["dimensions"]["core"]["status"] in {"ready", "ready_with_attention"}
|
||||
assert d["dimensions"]["domain_pipeline"]["status"] == "not_configured"
|
||||
assert d["dimensions"]["provider_telemetry"]["status"] == "optional_unavailable"
|
||||
PY
|
||||
CASAN_APP_ROOT="$PROJ" "$CASAN" pipeline --help 2>&1 \
|
||||
| grep -q "optional Domain Pack" \
|
||||
&& pass "pipeline help describes the optional capability without executing it" \
|
||||
|| fail "pipeline help executed or hid the Core/Domain boundary"
|
||||
set +e
|
||||
PIPELINE_MISSING="$(CASAN_APP_ROOT="$PROJ" "$CASAN" pipeline 2>&1)"
|
||||
PIPELINE_RC=$?
|
||||
set -e
|
||||
[[ "$PIPELINE_RC" -eq 2 && "$PIPELINE_MISSING" == *"CASAN_PIPELINE_NOT_CONFIGURED"* ]] \
|
||||
&& pass "missing Domain Pipeline is explicit and does not impersonate a Core failure" \
|
||||
|| fail "missing Domain Pipeline capability was not reported truthfully"
|
||||
python3 - "$PROJ/.casan/config.json" <<'PY' \
|
||||
&& pass "config declares supported and excluded client surfaces" \
|
||||
|| fail "config client surface contract is incomplete"
|
||||
|
||||
Reference in New Issue
Block a user