feat(gitea): surface professional cicd practice gaps
This commit is contained in:
@@ -1,5 +1,6 @@
|
||||
from __future__ import annotations
|
||||
|
||||
# ruff: noqa: E402
|
||||
import json
|
||||
import os
|
||||
from pathlib import Path
|
||||
@@ -140,8 +141,7 @@ def test_gitea_capability_readback_rolls_up_complete_feature_surface() -> None:
|
||||
payload = _readback_payload()
|
||||
|
||||
assert (
|
||||
payload["schema_version"]
|
||||
== "gitea_capability_ci_cd_optimization_readback_v1"
|
||||
payload["schema_version"] == "gitea_capability_ci_cd_optimization_readback_v1"
|
||||
)
|
||||
assert payload["source_control_authority"] == "gitea"
|
||||
assert payload["status"] == "gitea_capability_ci_cd_optimization_ready"
|
||||
@@ -149,12 +149,29 @@ def test_gitea_capability_readback_rolls_up_complete_feature_surface() -> None:
|
||||
assert payload["rollups"]["ssh_verified_product_repo_count"] == 12
|
||||
assert payload["rollups"]["dev_prod_environment_split_ready_count"] == 12
|
||||
assert payload["workflow_source_inventory"]["workflow_file_count"] == 12
|
||||
assert payload["workflow_source_inventory"]["secret_variable_rollups"][
|
||||
"secret_values_collected"
|
||||
] is False
|
||||
assert payload["workflow_source_inventory"]["secret_variable_rollups"][
|
||||
"secret_reference_count"
|
||||
] > 0
|
||||
professional_feature_rollups = payload["workflow_source_inventory"][
|
||||
"professional_feature_rollups"
|
||||
]
|
||||
assert professional_feature_rollups["gitea_ignored_syntax_workflow_count"] == 9
|
||||
assert professional_feature_rollups["otel_workflow_count"] == 3
|
||||
assert professional_feature_rollups["argocd_gitops_workflow_count"] == 1
|
||||
assert (
|
||||
professional_feature_rollups["registry_or_package_channel_workflow_count"] == 4
|
||||
)
|
||||
assert professional_feature_rollups["sbom_or_provenance_workflow_count"] == 0
|
||||
assert professional_feature_rollups["artifact_transfer_workflow_count"] == 0
|
||||
assert (
|
||||
payload["workflow_source_inventory"]["secret_variable_rollups"][
|
||||
"secret_values_collected"
|
||||
]
|
||||
is False
|
||||
)
|
||||
assert (
|
||||
payload["workflow_source_inventory"]["secret_variable_rollups"][
|
||||
"secret_reference_count"
|
||||
]
|
||||
> 0
|
||||
)
|
||||
assert (
|
||||
len(
|
||||
payload["workflow_source_inventory"]["secret_variable_rollups"][
|
||||
@@ -166,22 +183,27 @@ def test_gitea_capability_readback_rolls_up_complete_feature_surface() -> None:
|
||||
|
||||
capability_by_id = {row["id"]: row for row in payload["capability_rows"]}
|
||||
assert capability_by_id["code_git_source_control"]["status"] == "verified_ready"
|
||||
assert (
|
||||
capability_by_id["dev_prod_environment_split"]["status"]
|
||||
== "verified_ready"
|
||||
)
|
||||
assert capability_by_id["dev_prod_environment_split"]["status"] == "verified_ready"
|
||||
assert capability_by_id["gitea_actions_workflows"]["status"] == "verified_ready"
|
||||
assert capability_by_id["gitea_actions_workflows"]["metrics"] == {
|
||||
"workflow_source_file_count": 12,
|
||||
"workflow_contract_count": 12,
|
||||
}
|
||||
assert capability_by_id["gitea_actions_runners"]["status"] == "verified_ready"
|
||||
assert capability_by_id["branch_protection_required_checks"]["status"] == "source_ready"
|
||||
assert (
|
||||
capability_by_id["branch_protection_required_checks"]["status"]
|
||||
== "source_ready"
|
||||
)
|
||||
assert capability_by_id["backup_dr_restore"]["status"] == "source_ready"
|
||||
assert capability_by_id["backup_dr_restore"]["metrics"][
|
||||
"gitea_full_dr_source_ready_component_count"
|
||||
] == 6
|
||||
assert capability_by_id["observability_alert_receipts"]["status"] == "verified_ready"
|
||||
assert (
|
||||
capability_by_id["backup_dr_restore"]["metrics"][
|
||||
"gitea_full_dr_source_ready_component_count"
|
||||
]
|
||||
== 6
|
||||
)
|
||||
assert (
|
||||
capability_by_id["observability_alert_receipts"]["status"] == "verified_ready"
|
||||
)
|
||||
assert capability_by_id["observability_alert_receipts"]["metrics"] == {
|
||||
"alert_receipt_chain_ready": True,
|
||||
"alert_receipt_chain_status": "gitea_cicd_alert_receipt_chain_ready",
|
||||
@@ -198,29 +220,22 @@ def test_gitea_capability_readback_rolls_up_complete_feature_surface() -> None:
|
||||
|
||||
def test_gitea_capability_readback_prioritizes_professional_cicd_gaps() -> None:
|
||||
payload = _readback_payload()
|
||||
optimization_by_id = {
|
||||
row["id"]: row for row in payload["ci_cd_optimization_rows"]
|
||||
}
|
||||
optimization_by_id = {row["id"]: row for row in payload["ci_cd_optimization_rows"]}
|
||||
|
||||
assert (
|
||||
optimization_by_id["gitea_actions_source_authority"]["status"]
|
||||
== "implemented"
|
||||
optimization_by_id["gitea_actions_source_authority"]["status"] == "implemented"
|
||||
)
|
||||
assert (
|
||||
optimization_by_id["dev_prod_branch_promotion_contract"]["status"]
|
||||
== "implemented"
|
||||
)
|
||||
assert (
|
||||
optimization_by_id["workflow_contract_freshness"]["status"]
|
||||
== "implemented"
|
||||
)
|
||||
assert optimization_by_id["workflow_contract_freshness"]["status"] == "implemented"
|
||||
assert (
|
||||
optimization_by_id["runner_label_isolation_attestation"]["status"]
|
||||
== "implemented"
|
||||
)
|
||||
assert (
|
||||
optimization_by_id["dedupe_cancel_stale_run_guard"]["status"]
|
||||
== "source_ready"
|
||||
optimization_by_id["dedupe_cancel_stale_run_guard"]["status"] == "source_ready"
|
||||
)
|
||||
assert (
|
||||
optimization_by_id["branch_protection_required_checks"]["status"]
|
||||
@@ -234,6 +249,56 @@ def test_gitea_capability_readback_prioritizes_professional_cicd_gaps() -> None:
|
||||
payload["ci_cd_optimization_rows"]
|
||||
)
|
||||
assert payload["rollups"]["p0_optimization_gap_count"] == 0
|
||||
assert payload["rollups"]["professional_ci_cd_practice_count"] == len(
|
||||
payload["professional_ci_cd_practice_rows"]
|
||||
)
|
||||
assert payload["rollups"]["p0_professional_ci_cd_practice_gap_count"] == 0
|
||||
assert payload["rollups"]["market_professional_ci_cd_gap_count"] == 5
|
||||
assert payload["rollups"]["all_gitea_features_fully_utilized"] is False
|
||||
assert payload["rollups"]["professional_ci_cd_practice_gap_ids"] == [
|
||||
"gitea_125_webhook_hmac_delivery",
|
||||
"gitea_125_packages_release_registry",
|
||||
"dora_delivery_metrics_receipts",
|
||||
"slsa_build_provenance_isolation",
|
||||
"artifact_cache_sbom_retention",
|
||||
]
|
||||
|
||||
practice_by_id = {
|
||||
row["id"]: row for row in payload["professional_ci_cd_practice_rows"]
|
||||
}
|
||||
assert (
|
||||
practice_by_id["gitea_125_actions_runner_trust"]["status"] == "verified_ready"
|
||||
)
|
||||
assert (
|
||||
practice_by_id["gitea_125_secret_variable_redaction"]["status"]
|
||||
== "source_ready"
|
||||
)
|
||||
assert (
|
||||
practice_by_id["gitea_125_actions_compatibility_gap_guard"]["status"]
|
||||
== "source_ready"
|
||||
)
|
||||
assert (
|
||||
practice_by_id["gitops_argocd_automated_sync_contract"]["status"]
|
||||
== "source_ready"
|
||||
)
|
||||
assert practice_by_id["otel_cicd_pipeline_telemetry"]["status"] == "source_ready"
|
||||
assert (
|
||||
practice_by_id["dora_delivery_metrics_receipts"]["status"] == "action_required"
|
||||
)
|
||||
assert (
|
||||
practice_by_id["slsa_build_provenance_isolation"]["status"] == "action_required"
|
||||
)
|
||||
assert (
|
||||
practice_by_id["artifact_cache_sbom_retention"]["status"] == "action_required"
|
||||
)
|
||||
assert (
|
||||
"https://dora.dev/guides/dora-metrics/"
|
||||
in payload["readback"]["market_practice_basis_refs"]
|
||||
)
|
||||
assert (
|
||||
"https://slsa.dev/spec/v1.2/build-requirements"
|
||||
in payload["readback"]["market_practice_basis_refs"]
|
||||
)
|
||||
assert payload["status"] == "gitea_capability_ci_cd_optimization_ready"
|
||||
assert payload["ready"] is True
|
||||
assert payload["active_p0_gap_ids"] == []
|
||||
@@ -250,12 +315,13 @@ def test_gitea_capability_readback_endpoint_returns_payload(monkeypatch) -> None
|
||||
app.include_router(router, prefix="/api/v1")
|
||||
client = TestClient(app)
|
||||
|
||||
response = client.get(
|
||||
"/api/v1/agents/gitea-capability-ci-cd-optimization-readback"
|
||||
)
|
||||
response = client.get("/api/v1/agents/gitea-capability-ci-cd-optimization-readback")
|
||||
|
||||
assert response.status_code == 200
|
||||
data = response.json()
|
||||
assert data["schema_version"] == "gitea_capability_ci_cd_optimization_readback_v1"
|
||||
assert data["rollups"]["capability_count"] == len(data["capability_rows"])
|
||||
assert data["rollups"]["professional_ci_cd_practice_count"] == len(
|
||||
data["professional_ci_cd_practice_rows"]
|
||||
)
|
||||
assert data["rollups"]["workflow_contract_fresh"] is True
|
||||
|
||||
Reference in New Issue
Block a user