{ "suite": "gitops-platform-ui", "version": "1.0.0", "branch_under_test": "patch/web-ui-complete-gitops-dashboard-20260706", "base_branch": "main", "purpose": "Validate AIOS GitOps Platform Control Plane UI before merge to main and before V1R1C5 baseline proposal.", "required_result": "PASS", "tests": [ { "id": "STATIC-001", "group": "static_files", "required": true, "description": "Platform UI files exist.", "assert": { "files_exist": [ "overlays/user-control-center/portal/gitops-dashboard/index.html", "overlays/user-control-center/portal/gitops-dashboard/app.js", "overlays/user-control-center/portal/gitops-dashboard/styles.css", "overlays/user-control-center/portal/gitops-dashboard/manifest.json", "overlays/user-control-center/portal/gitops-dashboard/gitops-ui-policy.json", "overlays/user-control-center/portal/gitops-dashboard/gitops-enterprise-api.contract.json" ] } }, { "id": "STATIC-002", "group": "static_files", "required": true, "description": "Enterprise tabs exist in HTML.", "assert": { "file_contains": { "overlays/user-control-center/portal/gitops-dashboard/index.html": [ "tab-overview", "tab-rbac", "tab-approval", "tab-diff", "tab-patch", "tab-model", "tab-release", "tab-audit" ] } } }, { "id": "RUNTIME-001", "group": "frontend_runtime", "required": true, "description": "Platform runtime bootstraps on DOMContentLoaded.", "assert": { "file_contains": { "overlays/user-control-center/portal/gitops-dashboard/app.js": [ "Platform.bootstrap", "DOMContentLoaded", "guardAction", "createApproval", "renderDiffTree", "audit(" , "redact(" ] } } }, { "id": "SEC-001", "group": "security", "required": true, "description": "No real credentials are committed.", "assert": { "secret_scan": { "paths": [ "overlays/user-control-center/portal/gitops-dashboard", "docs/codex", "tests/acceptance", "scripts", "skills" ], "allow_patterns": [ "secret_ref://", "[REDACTED]", "api_key_secret_ref", "forbiddenFields", "secret_redaction", "No credentials" ], "deny_patterns": [ "Bearer [A-Za-z0-9._-]{20,}", "sk-[A-Za-z0-9]{20,}", "ghp_[A-Za-z0-9]{20,}", "AKIA[0-9A-Z]{16}", "BEGIN PRIVATE KEY", "BEGIN RSA PRIVATE KEY" ] } } }, { "id": "SEC-002", "group": "security", "required": true, "description": "Model registration requires secret_ref and never raw api_key.", "assert": { "file_contains": { "overlays/user-control-center/portal/gitops-dashboard/app.js": [ "api_key_secret_ref", "startsWith('secret_ref://')", "api_key_secret_ref_required" ] }, "file_not_contains": { "overlays/user-control-center/portal/gitops-dashboard/index.html": [ "name=\"api_key\"", "name=\"token\"", "name=\"password\"" ] } } }, { "id": "POLICY-001", "group": "gitops_policy", "required": true, "description": "Direct main writes and destructive actions are disabled or blocked.", "assert": { "file_contains": { "overlays/user-control-center/portal/gitops-dashboard/app.js": [ "main:write", "destructive_action_blocked", "high_risk_requires_approval" ], "overlays/user-control-center/portal/gitops-dashboard/gitops-ui-policy.json": [ "direct_main_write", "disabled_in_ui", "bulk_delete", "forbidden" ] } } }, { "id": "API-001", "group": "api_contract", "required": true, "description": "Read/write endpoint contract remains compatible with existing GitOps APIs.", "assert": { "file_contains": { "overlays/user-control-center/portal/gitops-dashboard/gitops-enterprise-api.contract.json": [ "GET /api/base", "GET /api/ver", "GET /api/run", "GET /api/patch", "GET /api/model", "POST /api/branch", "POST /api/patch/plan", "POST /api/model", "PUT /api/model-priority", "POST /api/rollback-request", "POST /api/tag-request" ] } } }, { "id": "REGRESSION-001", "group": "indirect_regression", "required": true, "description": "This branch must not alter auth, gitea owner sync, baseline version, or destructive history files.", "assert": { "diff_not_touch_paths": [ "config/auth/", "config/casdoor/", "config/gitea/", "versions/V1R1C4.json", "runtime/gitops/current.json" ], "diff_not_contain": [ "active_version\": \"V1R1C5", "force push", "delete tag", "purge baseline", "clear audit" ] } }, { "id": "BASELINE-001", "group": "baseline_proposal", "required": true, "description": "A V1R1C5 proposal exists but is not activated before merge.", "assert": { "files_exist": [ "versions/proposals/V1R1C5-gitops-platform-ui.proposed.json" ], "file_contains": { "versions/proposals/V1R1C5-gitops-platform-ui.proposed.json": [ "V1R1C5", "V1R1C4", "approval_required" ] } } }, { "id": "SKILL-001", "group": "auto_loaded_skill", "required": true, "description": "Codex/GPT reusable skill exists and references the validation workflow.", "assert": { "files_exist": [ "skills/gitops-platform-validation/SKILL.md" ], "file_contains": { "skills/gitops-platform-validation/SKILL.md": [ "validate-gitops-platform-ui.sh", "gitops-platform-ui.acceptance.json", "self-healing" ] } } } ], "merge_gate": { "allow_merge_to_main_when": [ "all required tests PASS", "gray deployment PASS", "no secret leak", "no direct main write", "V1R1C5 proposal reviewed", "owner/admin approval recorded" ], "block_merge_when": [ "any required test FAIL", "any required test BLOCKED without explicit owner override", "secret leak detected", "destructive operation detected", "baseline active version changed before merge" ] } }