chore(repo): make the release gate reproducible and clean product URLs
PyJHora absence is now partial, tests write research manifests to tmp, the registry allows experimental_variant, and product links point at the Gitea repo. Early logs move to docs/history. Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
@@ -79,6 +79,20 @@ def _strict_summary(report: dict[str, Any]) -> dict[str, Any]:
|
||||
}
|
||||
|
||||
|
||||
def resolve_acceptance_status(errors: list[str], adapter_report: dict[str, Any]) -> str:
|
||||
"""Hard failures stay fail; a missing reference engine is a partial, not a fail."""
|
||||
if errors:
|
||||
return "fail"
|
||||
engines = adapter_report.get("engines") if isinstance(adapter_report.get("engines"), dict) else {}
|
||||
for details in engines.values():
|
||||
if not isinstance(details, dict):
|
||||
continue
|
||||
blockers = details.get("readiness_blockers") or []
|
||||
if details.get("missing_dependency") or "missing_dependency" in blockers:
|
||||
return "partial"
|
||||
return "pass"
|
||||
|
||||
|
||||
def main() -> int:
|
||||
pytest_check = _run(
|
||||
[
|
||||
@@ -162,9 +176,10 @@ def main() -> int:
|
||||
if adapter_report.get("status") not in usable_adapter_statuses:
|
||||
errors.append("external_adapter_status_unusable")
|
||||
|
||||
status = resolve_acceptance_status(errors, adapter_report)
|
||||
result = {
|
||||
"scope": "user_invocation_acceptance_check",
|
||||
"status": "pass" if not errors else "fail",
|
||||
"status": status,
|
||||
"errors": errors,
|
||||
"checks": {
|
||||
"user_invocation_tests": pytest_check["returncode"] == 0,
|
||||
@@ -177,7 +192,7 @@ def main() -> int:
|
||||
"external_engines": _engine_summary(adapter_report),
|
||||
}
|
||||
print(json.dumps(result, ensure_ascii=False, indent=2, sort_keys=True))
|
||||
return 0 if not errors else 1
|
||||
return 0 if status != "fail" else 1
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
|
||||
Reference in New Issue
Block a user