25126 lines
1.1 MiB
Executable File
25126 lines
1.1 MiB
Executable File
#!/usr/bin/env python3
|
|
"""Validate the mirror-only security progress guardrails.
|
|
|
|
This script is intentionally read-only. It checks committed snapshots only and
|
|
does not call GitHub, Gitea, Kali, AwoooP, or any runtime API.
|
|
"""
|
|
|
|
from __future__ import annotations
|
|
|
|
import argparse
|
|
import json
|
|
import runpy
|
|
from pathlib import Path
|
|
from typing import Any
|
|
|
|
|
|
def load_json(path: Path) -> dict[str, Any]:
|
|
return json.loads(path.read_text(encoding="utf-8"))
|
|
|
|
|
|
def assert_equal(label: str, actual: Any, expected: Any) -> None:
|
|
if actual != expected:
|
|
raise SystemExit(f"BLOCKED {label}: expected {expected!r}, got {actual!r}")
|
|
|
|
|
|
def assert_false(label: str, actual: Any) -> None:
|
|
assert_equal(label, actual, False)
|
|
|
|
|
|
def assert_true(label: str, actual: Any) -> None:
|
|
assert_equal(label, actual, True)
|
|
|
|
|
|
def assert_contains(label: str, values: list[Any], expected: Any) -> None:
|
|
if expected not in values:
|
|
raise SystemExit(f"BLOCKED {label}: missing {expected!r}")
|
|
|
|
|
|
def assert_text_contains(label: str, text: str, expected: str) -> None:
|
|
if expected not in text:
|
|
raise SystemExit(f"BLOCKED {label}: missing {expected!r}")
|
|
|
|
|
|
def assert_text_not_contains(label: str, text: str, forbidden: str) -> None:
|
|
if forbidden in text:
|
|
raise SystemExit(f"BLOCKED {label}: forbidden {forbidden!r}")
|
|
|
|
|
|
def assert_text_before(label: str, text: str, first: str, second: str) -> None:
|
|
first_index = text.find(first)
|
|
second_index = text.find(second)
|
|
if first_index == -1:
|
|
raise SystemExit(f"BLOCKED {label}: missing first marker {first!r}")
|
|
if second_index == -1:
|
|
raise SystemExit(f"BLOCKED {label}: missing second marker {second!r}")
|
|
if first_index >= second_index:
|
|
raise SystemExit(f"BLOCKED {label}: expected {first!r} before {second!r}")
|
|
|
|
|
|
def collect_string_values(value: Any) -> list[str]:
|
|
if isinstance(value, str):
|
|
return [value]
|
|
if isinstance(value, list):
|
|
collected: list[str] = []
|
|
for item in value:
|
|
collected.extend(collect_string_values(item))
|
|
return collected
|
|
if isinstance(value, dict):
|
|
collected = []
|
|
for item in value.values():
|
|
collected.extend(collect_string_values(item))
|
|
return collected
|
|
return []
|
|
|
|
|
|
def validate(root: Path) -> None:
|
|
security_dir = root / "docs" / "security"
|
|
config_control_guard = runpy.run_path(str(root / "scripts" / "security" / "iwooos-config-control-guard.py"))
|
|
config_control_guard["validate"](root)
|
|
owner_gate_guard = runpy.run_path(str(root / "scripts" / "security" / "iwooos-owner-gate-guard.py"))
|
|
owner_gate_guard["validate"](root)
|
|
package_policy_guard = runpy.run_path(
|
|
str(root / "scripts" / "security" / "package-supply-chain-owner-policy-guard.py")
|
|
)
|
|
package_policy_guard["validate"](root)
|
|
|
|
manifest = load_json(security_dir / "security-supply-chain-contract-manifest.snapshot.json")
|
|
readiness = load_json(security_dir / "security-mirror-readiness.snapshot.json")
|
|
rollup = load_json(security_dir / "security-mirror-status-rollup.snapshot.json")
|
|
intake = load_json(security_dir / "security-mirror-intake-plan.snapshot.json")
|
|
event_sample = load_json(security_dir / "security-mirror-event-sample.snapshot.json")
|
|
route = load_json(security_dir / "security-mirror-route.snapshot.json")
|
|
acceptance = load_json(security_dir / "security-mirror-acceptance.snapshot.json")
|
|
dry_run = load_json(security_dir / "security-mirror-dry-run.snapshot.json")
|
|
owner_rollup = load_json(security_dir / "source-control-owner-response-validation-rollup.snapshot.json")
|
|
primary_gate = load_json(security_dir / "source-control-primary-readiness-gate.snapshot.json")
|
|
rollout_policy = load_json(security_dir / "security-rollout-policy.snapshot.json")
|
|
iwooos_projection = load_json(security_dir / "iwooos-posture-projection.snapshot.json")
|
|
high_value_config_coverage = load_json(security_dir / "high-value-config-control-coverage.snapshot.json")
|
|
agent_bounty_owner_request_draft = load_json(
|
|
security_dir / "agent-bounty-owner-request-draft.snapshot.json"
|
|
)
|
|
high_value_config_owner_packet_intake = load_json(
|
|
security_dir / "high-value-config-owner-packet-intake-preflight.snapshot.json"
|
|
)
|
|
high_value_config_owner_request_draft = load_json(
|
|
security_dir / "high-value-config-owner-request-draft.snapshot.json"
|
|
)
|
|
host_service_config_inventory = load_json(security_dir / "host-service-config-inventory.snapshot.json")
|
|
host_service_owner_request_draft = load_json(
|
|
security_dir / "host-service-owner-request-draft.snapshot.json"
|
|
)
|
|
host_service_owner_response_acceptance = load_json(
|
|
security_dir / "host-service-owner-response-acceptance.snapshot.json"
|
|
)
|
|
ssh_network_access_inventory = load_json(security_dir / "ssh-network-access-inventory.snapshot.json")
|
|
ssh_network_owner_request_draft = load_json(
|
|
security_dir / "ssh-network-owner-request-draft.snapshot.json"
|
|
)
|
|
ssh_network_owner_response_acceptance = load_json(
|
|
security_dir / "ssh-network-owner-response-acceptance.snapshot.json"
|
|
)
|
|
port_firewall_change_evidence_acceptance = load_json(
|
|
security_dir / "port-firewall-change-evidence-acceptance.snapshot.json"
|
|
)
|
|
backup_restore_escrow_inventory = load_json(security_dir / "backup-restore-escrow-inventory.snapshot.json")
|
|
backup_restore_owner_request_draft = load_json(
|
|
security_dir / "backup-restore-owner-request-draft.snapshot.json"
|
|
)
|
|
backup_restore_owner_response_acceptance = load_json(
|
|
security_dir / "backup-restore-owner-response-acceptance.snapshot.json"
|
|
)
|
|
monitoring_alerting_observability_inventory = load_json(
|
|
security_dir / "monitoring-alerting-observability-inventory.snapshot.json"
|
|
)
|
|
monitoring_owner_request_draft = load_json(
|
|
security_dir / "monitoring-owner-request-draft.snapshot.json"
|
|
)
|
|
domain_tls_inventory = load_json(security_dir / "domain-tls-certbot-inventory.snapshot.json")
|
|
domain_tls_owner_confirmation_request = load_json(
|
|
security_dir / "domain-tls-certbot-owner-confirmation-request.snapshot.json"
|
|
)
|
|
domain_tls_owner_response_acceptance = load_json(
|
|
security_dir / "domain-tls-certbot-owner-response-acceptance.snapshot.json"
|
|
)
|
|
k8s_argocd_manifest_inventory = load_json(
|
|
security_dir / "k8s-argocd-manifest-inventory.snapshot.json"
|
|
)
|
|
k8s_argocd_owner_request_draft = load_json(
|
|
security_dir / "k8s-argocd-owner-request-draft.snapshot.json"
|
|
)
|
|
k8s_argocd_owner_response_acceptance = load_json(
|
|
security_dir / "k8s-argocd-owner-response-acceptance.snapshot.json"
|
|
)
|
|
k8s_argocd_change_evidence_acceptance = load_json(
|
|
security_dir / "k8s-argocd-change-evidence-acceptance.snapshot.json"
|
|
)
|
|
cd_runner_secret_injection_change_evidence_acceptance = load_json(
|
|
security_dir / "cd-runner-secret-injection-change-evidence-acceptance.snapshot.json"
|
|
)
|
|
public_runtime_config_change_evidence_acceptance = load_json(
|
|
security_dir / "public-runtime-config-change-evidence-acceptance.snapshot.json"
|
|
)
|
|
public_gateway_preflight_inventory = load_json(
|
|
security_dir / "public-gateway-preflight-inventory.snapshot.json"
|
|
)
|
|
public_gateway_live_conf_export_request = load_json(
|
|
security_dir / "public-gateway-live-conf-export-request.snapshot.json"
|
|
)
|
|
public_gateway_redacted_export_intake_preflight = load_json(
|
|
security_dir / "public-gateway-redacted-export-intake-preflight.snapshot.json"
|
|
)
|
|
public_gateway_rendered_diff_gate_draft = load_json(
|
|
security_dir / "public-gateway-rendered-diff-gate-draft.snapshot.json"
|
|
)
|
|
public_gateway_owner_response_acceptance = load_json(
|
|
security_dir / "public-gateway-owner-response-acceptance.snapshot.json"
|
|
)
|
|
public_gateway_rendered_diff_acceptance = load_json(
|
|
security_dir / "public-gateway-rendered-diff-acceptance.snapshot.json"
|
|
)
|
|
s49_request_draft = load_json(security_dir / "gitea-inventory-owner-attestation-request-draft.snapshot.json")
|
|
kali_status = load_json(security_dir / "kali-integration-status.snapshot.json")
|
|
iwooos_projection_page = (
|
|
root / "apps" / "web" / "src" / "app" / "[locale]" / "iwooos" / "page.tsx"
|
|
).read_text(encoding="utf-8")
|
|
security_compliance_page = (
|
|
root / "apps" / "web" / "src" / "app" / "[locale]" / "security-compliance" / "page.tsx"
|
|
).read_text(encoding="utf-8")
|
|
awooop_home_page = (
|
|
root / "apps" / "web" / "src" / "app" / "[locale]" / "awooop" / "page.tsx"
|
|
).read_text(encoding="utf-8")
|
|
awooop_work_items_page = (
|
|
root / "apps" / "web" / "src" / "app" / "[locale]" / "awooop" / "work-items" / "page.tsx"
|
|
).read_text(encoding="utf-8")
|
|
awooop_tenants_page = (
|
|
root / "apps" / "web" / "src" / "app" / "[locale]" / "awooop" / "tenants" / "page.tsx"
|
|
).read_text(encoding="utf-8")
|
|
platform_operator_service = (
|
|
root / "apps" / "api" / "src" / "services" / "platform_operator_service.py"
|
|
).read_text(encoding="utf-8")
|
|
tenants_api_contract = (
|
|
root / "apps" / "api" / "src" / "api" / "v1" / "platform" / "tenants.py"
|
|
).read_text(encoding="utf-8")
|
|
awooop_runs_page = (
|
|
root / "apps" / "web" / "src" / "app" / "[locale]" / "awooop" / "runs" / "page.tsx"
|
|
).read_text(encoding="utf-8")
|
|
awooop_run_detail_page = (
|
|
root / "apps" / "web" / "src" / "app" / "[locale]" / "awooop" / "runs" / "[run_id]" / "page.tsx"
|
|
).read_text(encoding="utf-8")
|
|
awooop_approvals_page = (
|
|
root / "apps" / "web" / "src" / "app" / "[locale]" / "awooop" / "approvals" / "page.tsx"
|
|
).read_text(encoding="utf-8")
|
|
awooop_approval_detail_page = (
|
|
root
|
|
/ "apps"
|
|
/ "web"
|
|
/ "src"
|
|
/ "app"
|
|
/ "[locale]"
|
|
/ "awooop"
|
|
/ "approvals"
|
|
/ "[run_id]"
|
|
/ "page.tsx"
|
|
).read_text(encoding="utf-8")
|
|
awooop_contracts_page = (
|
|
root / "apps" / "web" / "src" / "app" / "[locale]" / "awooop" / "contracts" / "page.tsx"
|
|
).read_text(encoding="utf-8")
|
|
security_panel = (root / "apps" / "web" / "src" / "components" / "panels" / "SecurityPanel.tsx").read_text(
|
|
encoding="utf-8"
|
|
)
|
|
compliance_panel = (
|
|
root / "apps" / "web" / "src" / "components" / "panels" / "CompliancePanel.tsx"
|
|
).read_text(encoding="utf-8")
|
|
standalone_security_page = (
|
|
root / "apps" / "web" / "src" / "app" / "[locale]" / "security" / "page.tsx"
|
|
).read_text(encoding="utf-8")
|
|
standalone_compliance_page = (
|
|
root / "apps" / "web" / "src" / "app" / "[locale]" / "compliance" / "page.tsx"
|
|
).read_text(encoding="utf-8")
|
|
alerts_page = (root / "apps" / "web" / "src" / "app" / "[locale]" / "alerts" / "page.tsx").read_text(
|
|
encoding="utf-8"
|
|
)
|
|
authorizations_page = (
|
|
root / "apps" / "web" / "src" / "app" / "[locale]" / "authorizations" / "page.tsx"
|
|
).read_text(encoding="utf-8")
|
|
governance_page = (
|
|
root / "apps" / "web" / "src" / "app" / "[locale]" / "governance" / "page.tsx"
|
|
).read_text(encoding="utf-8")
|
|
alert_operation_logs_page = (
|
|
root / "apps" / "web" / "src" / "app" / "[locale]" / "alert-operation-logs" / "page.tsx"
|
|
).read_text(encoding="utf-8")
|
|
code_review_page = (
|
|
root / "apps" / "web" / "src" / "app" / "[locale]" / "code-review" / "page.tsx"
|
|
).read_text(encoding="utf-8")
|
|
governance_automation_inventory_tab = (
|
|
root
|
|
/ "apps"
|
|
/ "web"
|
|
/ "src"
|
|
/ "app"
|
|
/ "[locale]"
|
|
/ "governance"
|
|
/ "tabs"
|
|
/ "automation-inventory-tab.tsx"
|
|
).read_text(encoding="utf-8")
|
|
errors_panel = (root / "apps" / "web" / "src" / "components" / "panels" / "ErrorsPanel.tsx").read_text(
|
|
encoding="utf-8"
|
|
)
|
|
iwooos_bridge = (
|
|
root / "apps" / "web" / "src" / "components" / "security" / "iwooos-read-only-bridge.tsx"
|
|
).read_text(encoding="utf-8")
|
|
public_security_redaction = (
|
|
root / "apps" / "web" / "src" / "lib" / "public-security-redaction.ts"
|
|
).read_text(encoding="utf-8")
|
|
sidebar = (root / "apps" / "web" / "src" / "components" / "layout" / "sidebar.tsx").read_text(
|
|
encoding="utf-8"
|
|
)
|
|
command_palette = (
|
|
root / "apps" / "web" / "src" / "components" / "command-palette" / "CommandPalette.tsx"
|
|
).read_text(encoding="utf-8")
|
|
web_messages_zh = load_json(root / "apps" / "web" / "messages" / "zh-TW.json")
|
|
web_messages_en = load_json(root / "apps" / "web" / "messages" / "en.json")
|
|
|
|
public_message_text = "\n".join(
|
|
[
|
|
json.dumps(web_messages_zh, ensure_ascii=False),
|
|
json.dumps(web_messages_en, ensure_ascii=False),
|
|
]
|
|
)
|
|
for forbidden in [
|
|
"owenhytsai",
|
|
"nexu-io",
|
|
"blocked_waiting_",
|
|
"blockers=",
|
|
"runtime_execution_authorized=false",
|
|
"action_buttons_allowed=false",
|
|
"execution_router_linked=false",
|
|
"repo_creation=false",
|
|
"repo_creation_authorized=false",
|
|
"github_primary_switch_authorized=false",
|
|
"source_control_owner_response_validation_rollup_v1",
|
|
"gitea_inventory_owner_attestation_response_v1",
|
|
"github_target_owner_decision_response_v1",
|
|
"source_control_ref_truth_owner_response_v1",
|
|
"source_control_workflow_secret_name_owner_response_v1",
|
|
"批准!",
|
|
"工作視窗",
|
|
"My request for Codex",
|
|
]:
|
|
assert_text_not_contains("web_messages.public_frontstage_sensitive_text", public_message_text, forbidden)
|
|
|
|
public_frontend_source_text = "\n".join(
|
|
[
|
|
iwooos_projection_page,
|
|
security_compliance_page,
|
|
awooop_home_page,
|
|
awooop_work_items_page,
|
|
awooop_tenants_page,
|
|
awooop_runs_page,
|
|
awooop_run_detail_page,
|
|
awooop_approvals_page,
|
|
awooop_approval_detail_page,
|
|
awooop_contracts_page,
|
|
code_review_page,
|
|
governance_automation_inventory_tab,
|
|
iwooos_bridge,
|
|
public_security_redaction,
|
|
]
|
|
)
|
|
for forbidden in [
|
|
"owenhytsai",
|
|
"nexu-io",
|
|
"blocked_waiting_",
|
|
"批准!",
|
|
"工作視窗",
|
|
"My request for Codex",
|
|
]:
|
|
assert_text_not_contains("frontend.public_sensitive_source_text", public_frontend_source_text, forbidden)
|
|
|
|
for label, text in [
|
|
("awooop_home_page", awooop_home_page),
|
|
("awooop_runs_page", awooop_runs_page),
|
|
("awooop_run_detail_page", awooop_run_detail_page),
|
|
("awooop_approvals_page", awooop_approvals_page),
|
|
("awooop_approval_detail_page", awooop_approval_detail_page),
|
|
("awooop_contracts_page", awooop_contracts_page),
|
|
("code_review_page", code_review_page),
|
|
("security_compliance_page", security_compliance_page),
|
|
("iwooos_bridge", iwooos_bridge),
|
|
]:
|
|
assert_text_contains(f"{label}.public_boundary_redaction", text, "publicBoundaryText")
|
|
|
|
for label, text in [
|
|
("awooop_home_page", awooop_home_page),
|
|
("awooop_runs_page", awooop_runs_page),
|
|
("awooop_run_detail_page", awooop_run_detail_page),
|
|
("awooop_approvals_page", awooop_approvals_page),
|
|
("awooop_approval_detail_page", awooop_approval_detail_page),
|
|
("awooop_contracts_page", awooop_contracts_page),
|
|
]:
|
|
assert_text_contains(f"{label}.public_contract_redaction", text, "publicContractText")
|
|
|
|
assert_text_contains(
|
|
"governance_automation_inventory_tab.runner_identifier_redaction",
|
|
governance_automation_inventory_tab,
|
|
"redactPublicIdentifier",
|
|
)
|
|
for helper in ["publicProjectText", "publicAgentText", "publicInternalCodeSummary"]:
|
|
assert_text_contains(f"public_security_redaction.{helper}", public_security_redaction, helper)
|
|
for label, text in [
|
|
("awooop_runs_page", awooop_runs_page),
|
|
("awooop_run_detail_page", awooop_run_detail_page),
|
|
("awooop_approvals_page", awooop_approvals_page),
|
|
("awooop_approval_detail_page", awooop_approval_detail_page),
|
|
("awooop_contracts_page", awooop_contracts_page),
|
|
]:
|
|
assert_text_contains(f"{label}.public_project_display_redaction", text, "publicProjectText")
|
|
for label, text in [
|
|
("awooop_runs_page", awooop_runs_page),
|
|
("awooop_run_detail_page", awooop_run_detail_page),
|
|
("awooop_approvals_page", awooop_approvals_page),
|
|
("awooop_approval_detail_page", awooop_approval_detail_page),
|
|
]:
|
|
assert_text_contains(f"{label}.public_agent_display_redaction", text, "publicAgentText")
|
|
for label, text in [
|
|
("awooop_work_items_page", awooop_work_items_page),
|
|
("awooop_run_detail_page", awooop_run_detail_page),
|
|
("awooop_approval_detail_page", awooop_approval_detail_page),
|
|
]:
|
|
assert_text_contains(f"{label}.public_internal_code_summary", text, "publicInternalCodeSummary")
|
|
for label, text, forbidden in [
|
|
("awooop_runs_page.raw_project_display", awooop_runs_page, "{run.project_id || \"--\"}"),
|
|
("awooop_runs_page.raw_agent_display", awooop_runs_page, "{run.agent_id || \"--\"}"),
|
|
("awooop_runs_page.raw_event_project_display", awooop_runs_page, "{event.project_id}"),
|
|
("awooop_approvals_page.raw_project_display", awooop_approvals_page, "{approval.project_id || \"--\"}"),
|
|
("awooop_approvals_page.raw_agent_display", awooop_approvals_page, "{approval.agent_id || \"--\"}"),
|
|
("awooop_contracts_page.raw_project_display", awooop_contracts_page, "{contract.project_id || \"--\"}"),
|
|
("awooop_contracts_page.raw_tenant_option", awooop_contracts_page, "{t.display_name || t.project_id}"),
|
|
("awooop_run_detail_page.raw_project_detail", awooop_run_detail_page, "value={run?.project_id}"),
|
|
("awooop_run_detail_page.raw_agent_detail", awooop_run_detail_page, "value={run?.agent_id}"),
|
|
("awooop_run_detail_page.raw_trace_detail", awooop_run_detail_page, "value={run?.trace_id}"),
|
|
("awooop_run_detail_page.raw_trigger_detail", awooop_run_detail_page, "value={run?.trigger_type}"),
|
|
("awooop_run_detail_page.raw_trigger_ref_detail", awooop_run_detail_page, "value={run?.trigger_ref}"),
|
|
("awooop_approval_detail_page.raw_project_detail", awooop_approval_detail_page, "value={run.project_id}"),
|
|
("awooop_approval_detail_page.raw_agent_detail", awooop_approval_detail_page, "value={run.agent_id}"),
|
|
("awooop_approval_detail_page.raw_trace_detail", awooop_approval_detail_page, "value={run.trace_id}"),
|
|
("awooop_approval_detail_page.raw_trigger_detail", awooop_approval_detail_page, "value={run.trigger_type}"),
|
|
("awooop_approval_detail_page.raw_trigger_ref_detail", awooop_approval_detail_page, "value={run.trigger_ref}"),
|
|
("awooop_work_items_page.raw_blockers_join", awooop_work_items_page, "blockers.join(\", \")"),
|
|
("awooop_work_items_page.raw_required_fields_join", awooop_work_items_page, "requiredOwnerFields.join(\", \")"),
|
|
(
|
|
"awooop_work_items_page.raw_completion_required_fields_join",
|
|
awooop_work_items_page,
|
|
"item.required_owner_fields.join(\", \")",
|
|
),
|
|
]:
|
|
assert_text_not_contains(label, text, forbidden)
|
|
assert_text_not_contains("public_security_redaction.owner_namespace_literal", public_security_redaction, "owenhytsai")
|
|
assert_text_not_contains("public_security_redaction.external_namespace_literal", public_security_redaction, "nexu-io")
|
|
|
|
manifest_count = manifest["contract_count"]
|
|
readiness_summary = readiness["summary"]
|
|
rollup_summary = rollup["summary"]
|
|
|
|
assert_equal("manifest.contract_count", manifest_count, 36)
|
|
assert_equal("readiness.total_contracts", readiness_summary["total_contracts"], manifest_count)
|
|
assert_equal("rollup.total_contracts", rollup_summary["total_contracts"], manifest_count)
|
|
assert_equal("rollup.ready_for_mirror_count", rollup_summary["ready_for_mirror_count"], 33)
|
|
assert_equal("rollup.partial_ready_count", rollup_summary["partial_ready_count"], 2)
|
|
assert_equal("rollup.contract_only_count", rollup_summary["contract_only_count"], 1)
|
|
assert_equal("rollup.blocked_count", rollup_summary["blocked_count"], 0)
|
|
assert_contains(
|
|
"manifest.contracts",
|
|
[item["contract"] for item in manifest["contracts"]],
|
|
"iwooos_posture_projection_v1",
|
|
)
|
|
assert_contains(
|
|
"readiness.contract_readiness",
|
|
[item["contract"] for item in readiness["contract_readiness"]],
|
|
"iwooos_posture_projection_v1",
|
|
)
|
|
assert_contains(
|
|
"rollup.source_indexes",
|
|
rollup["source_indexes"],
|
|
"docs/security/iwooos-posture-projection.snapshot.json",
|
|
)
|
|
assert_equal("event_sample.payload_summary.total_contracts", event_sample["payload_summary"]["total_contracts"], manifest_count)
|
|
assert_equal(
|
|
"event_sample.payload_summary.ready_for_mirror_count",
|
|
event_sample["payload_summary"]["ready_for_mirror_count"],
|
|
readiness_summary["ready_for_mirror_count"],
|
|
)
|
|
assert_contains(
|
|
"event_sample.evidence_refs",
|
|
event_sample["evidence_refs"],
|
|
"docs/security/IWOOOS-POSTURE-PROJECTION.md",
|
|
)
|
|
assert_equal("route.summary.total_contracts", route["summary"]["total_contracts"], manifest_count)
|
|
route_contracts = sorted({contract for group in route["route_groups"] for contract in group["contracts"]})
|
|
assert_equal("route.contract_coverage", route_contracts, sorted(item["contract"] for item in manifest["contracts"]))
|
|
assert_contains(
|
|
"intake.source_indexes",
|
|
intake["source_indexes"],
|
|
"docs/security/iwooos-posture-projection.snapshot.json",
|
|
)
|
|
intake_contracts = [contract for wave in intake["intake_waves"] for contract in wave["contracts"]]
|
|
assert_contains("intake.contracts", intake_contracts, "iwooos_posture_projection_v1")
|
|
|
|
assert_text_contains("sidebar.iwooos_security_unified_entry", sidebar, "id: 'iwooos-security'")
|
|
assert_text_contains("sidebar.iwooos_security_label", sidebar, "labelKey: 'iwooos'")
|
|
assert_text_not_contains("sidebar.iwooos_security_duplicate_label", sidebar, "labelKey: 'iwooosSecurityCompliance'")
|
|
assert_text_contains("sidebar.security_compliance_alias", sidebar, "aliases: ['/security-compliance']")
|
|
assert_text_not_contains("sidebar.duplicate_security_compliance_entry", sidebar, "id: 'security-compliance'")
|
|
assert_text_contains("command_palette.iwooos_entry", command_palette, "id: 'iwooos'")
|
|
assert_text_contains("command_palette.iwooos_route", command_palette, "nav('/iwooos')")
|
|
assert_text_contains("command_palette.security_keyword", command_palette, "'安全合規'")
|
|
assert_text_not_contains("command_palette.legacy_security_entry", command_palette, "id: 'security'")
|
|
assert_text_not_contains("command_palette.legacy_security_compliance_route", command_palette, "nav('/security-compliance')")
|
|
assert_equal(
|
|
"web_messages.zh-TW.nav.iwooos",
|
|
web_messages_zh["nav"]["iwooos"],
|
|
"IwoooS",
|
|
)
|
|
assert_equal(
|
|
"web_messages.en.nav.iwooos",
|
|
web_messages_en["nav"]["iwooos"],
|
|
"IwoooS",
|
|
)
|
|
assert_equal("web_messages.en.nav.traditional_chinese_mirror", web_messages_en["nav"], web_messages_zh["nav"])
|
|
assert_equal("web_messages.en.iwooos.traditional_chinese_mirror", web_messages_en["iwooos"], web_messages_zh["iwooos"])
|
|
assert_equal(
|
|
"web_messages.en.full_site_traditional_chinese_mirror",
|
|
web_messages_en,
|
|
web_messages_zh,
|
|
)
|
|
product_voice_sections = [
|
|
web_messages_zh["dashboard"]["homeCommandMap"],
|
|
web_messages_zh["dashboard"]["automationDelivery"],
|
|
web_messages_zh["dashboard"]["automationDiagrams"],
|
|
web_messages_zh["securityCompliance"],
|
|
web_messages_zh["iwooos"],
|
|
]
|
|
iwooos_visible_text = "\n".join(collect_string_values(web_messages_zh["iwooos"]))
|
|
product_visible_text = "\n".join(
|
|
text for section in product_voice_sections for text in collect_string_values(section)
|
|
)
|
|
for forbidden in [
|
|
"S2.",
|
|
"回應「",
|
|
"專業建議",
|
|
"本輪",
|
|
"這裡",
|
|
"到底",
|
|
"空泛",
|
|
"不再只",
|
|
"卡在哪",
|
|
"初期框架",
|
|
"Claude",
|
|
"Codex",
|
|
"交辦",
|
|
"對話",
|
|
"不用讀",
|
|
"不用翻對話",
|
|
"使用者最",
|
|
"使用者可以",
|
|
"使用者能",
|
|
"使用者已",
|
|
"使用者現在",
|
|
"使用者不用",
|
|
"使用者感覺",
|
|
"使用者第一眼",
|
|
"使用者先",
|
|
"讓使用者",
|
|
"給使用者",
|
|
"最關心",
|
|
"抱怨",
|
|
"一堆文字",
|
|
"不要只是",
|
|
"長頁面",
|
|
"不是再加文字",
|
|
"目前到底",
|
|
"真正卡點",
|
|
"目前卡點",
|
|
"主要卡點",
|
|
]:
|
|
assert_text_not_contains("web_messages.zh-TW.product_voice", product_visible_text, forbidden)
|
|
iwooos_first_screen_text = "\n".join(
|
|
collect_string_values(
|
|
{
|
|
"subtitle": web_messages_zh["iwooos"]["subtitle"],
|
|
"boundary": web_messages_zh["iwooos"]["boundary"],
|
|
**{
|
|
key: web_messages_zh["iwooos"][key]
|
|
for key in [
|
|
"progressIntegrityRibbon",
|
|
"executiveSnapshot",
|
|
"focusDeck",
|
|
"immediateVisualMesh",
|
|
"topologyAtlas",
|
|
"decisionRunway",
|
|
"gateRadar",
|
|
"visualCommandDashboard",
|
|
"professionalSecurityExperience",
|
|
"concreteWorkSnapshot",
|
|
"concreteSecurityWorkMap",
|
|
"informationArchitecture",
|
|
"metrics",
|
|
]
|
|
},
|
|
}
|
|
)
|
|
)
|
|
for forbidden in [
|
|
"Gate",
|
|
"evidence",
|
|
"workflow",
|
|
"Runtime",
|
|
"Primary",
|
|
"owner evidence",
|
|
"owner ",
|
|
"reviewer acceptance",
|
|
"reviewer",
|
|
"source-control mutation",
|
|
"runtime gate",
|
|
"runtime ",
|
|
"Runtime Gate",
|
|
"Runtime 動作",
|
|
"Runtime 阻擋",
|
|
"Gate 0",
|
|
"schema",
|
|
"contract-only",
|
|
"partial",
|
|
"Session",
|
|
"drill-down",
|
|
"refs",
|
|
"repo",
|
|
"source-control",
|
|
"readiness",
|
|
"queue/candidate/assigned",
|
|
]:
|
|
assert_text_not_contains(
|
|
"web_messages.zh-TW.iwooos.first_screen_traditional_chinese",
|
|
iwooos_first_screen_text,
|
|
forbidden,
|
|
)
|
|
for text in [
|
|
'id="iwooos-decision-gate-visuals"',
|
|
'id="iwooos-scope-evidence-visuals"',
|
|
"decisionGateVisuals",
|
|
"scopeEvidenceVisuals",
|
|
"iwooos-decision-gate-visuals",
|
|
"iwooos-scope-evidence-visuals",
|
|
]:
|
|
assert_text_contains("iwooos_projection_page.progressive_disclosure_groups", iwooos_projection_page, text)
|
|
for key in ["decisionGateVisuals", "scopeEvidenceVisuals"]:
|
|
assert_contains(
|
|
"web_messages.zh-TW.iwooos.informationArchitecture.progressive_disclosure",
|
|
list(web_messages_zh["iwooos"]["informationArchitecture"].keys()),
|
|
key,
|
|
)
|
|
for text in [
|
|
"IwoooSVisualCommandDashboard",
|
|
'data-testid="iwooos-visual-command-dashboard"',
|
|
"visualDashboardMetrics",
|
|
"visualDashboardNodes",
|
|
"visualDashboardGates",
|
|
"conic-gradient",
|
|
"visualCommandDashboard",
|
|
]:
|
|
assert_text_contains("iwooos_projection_page.visual_command_dashboard", iwooos_projection_page, text)
|
|
for key in [
|
|
"eyebrow",
|
|
"title",
|
|
"subtitle",
|
|
"metrics",
|
|
"nodes",
|
|
"gateMatrix",
|
|
"gates",
|
|
"drilldown",
|
|
]:
|
|
assert_contains(
|
|
"web_messages.zh-TW.iwooos.visualCommandDashboard",
|
|
list(web_messages_zh["iwooos"]["visualCommandDashboard"].keys()),
|
|
key,
|
|
)
|
|
for key in ["overall", "framework", "runtime"]:
|
|
assert_contains(
|
|
"web_messages.zh-TW.iwooos.visualCommandDashboard.metrics",
|
|
list(web_messages_zh["iwooos"]["visualCommandDashboard"]["metrics"].keys()),
|
|
key,
|
|
)
|
|
for key in ["awoooiCore", "websites", "vibeWork", "kali112", "devHosts", "githubPrimary", "runtimeGate"]:
|
|
assert_contains(
|
|
"web_messages.zh-TW.iwooos.visualCommandDashboard.nodes",
|
|
list(web_messages_zh["iwooos"]["visualCommandDashboard"]["nodes"].keys()),
|
|
key,
|
|
)
|
|
for key in ["kaliMaintenance", "ownerResponse", "githubPrimary", "runtimeExecution"]:
|
|
assert_contains(
|
|
"web_messages.zh-TW.iwooos.visualCommandDashboard.gates",
|
|
list(web_messages_zh["iwooos"]["visualCommandDashboard"]["gates"].keys()),
|
|
key,
|
|
)
|
|
for text in [
|
|
"IwoooSProfessionalSecurityExperience",
|
|
'data-testid="iwooos-professional-security-experience"',
|
|
"IwoooSAttackPathVisual",
|
|
"IwoooSAssetHeatVisual",
|
|
"IwoooSResponseFlowVisual",
|
|
"visualExperienceTabs",
|
|
"attackPathNodes",
|
|
"assetHeatCells",
|
|
"responseFlowSteps",
|
|
"role=\"tab\"",
|
|
"aria-selected",
|
|
]:
|
|
assert_text_contains("iwooos_projection_page.professional_security_experience", iwooos_projection_page, text)
|
|
for key in [
|
|
"eyebrow",
|
|
"title",
|
|
"subtitle",
|
|
"tabsLabel",
|
|
"tabs",
|
|
"attackPath",
|
|
"assetHeat",
|
|
"responseFlow",
|
|
]:
|
|
assert_contains(
|
|
"web_messages.zh-TW.iwooos.professionalSecurityExperience",
|
|
list(web_messages_zh["iwooos"]["professionalSecurityExperience"].keys()),
|
|
key,
|
|
)
|
|
for key in ["attackPath", "assetHeat", "responseFlow"]:
|
|
assert_contains(
|
|
"web_messages.zh-TW.iwooos.professionalSecurityExperience.tabs",
|
|
list(web_messages_zh["iwooos"]["professionalSecurityExperience"]["tabs"].keys()),
|
|
key,
|
|
)
|
|
for key in ["publicWeb", "apiRuntime", "projectSource", "devHosts", "kali112", "runtimeGate"]:
|
|
assert_contains(
|
|
"web_messages.zh-TW.iwooos.professionalSecurityExperience.attackPath.nodes",
|
|
list(web_messages_zh["iwooos"]["professionalSecurityExperience"]["attackPath"]["nodes"].keys()),
|
|
key,
|
|
)
|
|
for key in [
|
|
"awoooi",
|
|
"awooop",
|
|
"iwooos",
|
|
"websites",
|
|
"vibeWork",
|
|
"kali112",
|
|
"devHosts",
|
|
"githubPrimary",
|
|
"runtimeActions",
|
|
]:
|
|
assert_contains(
|
|
"web_messages.zh-TW.iwooos.professionalSecurityExperience.assetHeat.cells",
|
|
list(web_messages_zh["iwooos"]["professionalSecurityExperience"]["assetHeat"]["cells"].keys()),
|
|
key,
|
|
)
|
|
for key in ["observe", "triage", "evidence", "approval", "runtime"]:
|
|
assert_contains(
|
|
"web_messages.zh-TW.iwooos.professionalSecurityExperience.responseFlow.steps",
|
|
list(web_messages_zh["iwooos"]["professionalSecurityExperience"]["responseFlow"]["steps"].keys()),
|
|
key,
|
|
)
|
|
for text in [
|
|
"IwoooSConcreteWorkSnapshot",
|
|
'data-testid="iwooos-concrete-work-snapshot"',
|
|
"iwooosConcreteSecurityWorkStreams.map",
|
|
"concreteWorkSnapshot",
|
|
"IwoooSConcreteWorkSnapshot />",
|
|
]:
|
|
assert_text_contains("iwooos_projection_page.concrete_work_snapshot", iwooos_projection_page, text)
|
|
for key in ["eyebrow", "title", "subtitle", "summary"]:
|
|
assert_contains(
|
|
"web_messages.zh-TW.iwooos.concreteWorkSnapshot",
|
|
list(web_messages_zh["iwooos"]["concreteWorkSnapshot"].keys()),
|
|
key,
|
|
)
|
|
for key in ["visible", "delivered", "nextGate", "runtime"]:
|
|
assert_contains(
|
|
"web_messages.zh-TW.iwooos.concreteWorkSnapshot.summary",
|
|
list(web_messages_zh["iwooos"]["concreteWorkSnapshot"]["summary"].keys()),
|
|
key,
|
|
)
|
|
for key in [
|
|
"eyebrow",
|
|
"title",
|
|
"subtitle",
|
|
"maintenanceGateLabel",
|
|
"maintenanceGate",
|
|
"nextEvidenceLabel",
|
|
"nextEvidence",
|
|
"runwayLabel",
|
|
"boundaryTitle",
|
|
"boundaryIntro",
|
|
"runway",
|
|
"items",
|
|
]:
|
|
assert_contains(
|
|
"web_messages.zh-TW.iwooos.kaliMaintenanceReadiness",
|
|
list(web_messages_zh["iwooos"]["kaliMaintenanceReadiness"].keys()),
|
|
key,
|
|
)
|
|
for key in [
|
|
"readOnlySnapshot",
|
|
"scannerHealth",
|
|
"upgradablePackages",
|
|
"failedSystemdUnits",
|
|
"serviceHardening",
|
|
"runtimeGate",
|
|
]:
|
|
assert_contains(
|
|
"web_messages.zh-TW.iwooos.kaliMaintenanceReadiness.items",
|
|
list(web_messages_zh["iwooos"]["kaliMaintenanceReadiness"]["items"].keys()),
|
|
key,
|
|
)
|
|
for text in [
|
|
"KaliMaintenanceReadinessBoard",
|
|
'data-testid="iwooos-kali-maintenance-readiness-board"',
|
|
"kaliMaintenanceRunwaySteps",
|
|
"2026-06-04 08:55",
|
|
"kali_112_read_only_observed_at=2026-06-04T08:55:43+08:00",
|
|
"kali_112_scanner_health=healthy",
|
|
"kali_112_scanner_health_endpoint=127.0.0.1:8080/health",
|
|
"kali_112_scanner_service_active=active",
|
|
"kali_112_scanner_service_enabled=enabled",
|
|
"kali_112_upgradable_package_count=1994",
|
|
"kali_112_failed_systemd_unit_count=1",
|
|
"kali_112_failed_systemd_unit=networking.service",
|
|
"kali_112_systemd_hardening_enabled=0/4",
|
|
"kali_112_full_upgrade_authorized=false",
|
|
"kali_112_reboot_authorized=false",
|
|
"kali_112_package_update_executed=false",
|
|
"kali_112_host_reboot_executed=false",
|
|
"kali_112_active_scan_executed=false",
|
|
"kali_112_runtime_execution_authorized=false",
|
|
]:
|
|
assert_text_contains("iwooos_projection_page.kali_maintenance_readiness", iwooos_projection_page, text)
|
|
|
|
progress = rollup["progress_estimate"]
|
|
assert_equal("progress.overall_percent", progress["overall_percent"], 64)
|
|
assert_equal("progress.framework_percent_min", progress["framework_percent_min"], 92)
|
|
assert_equal("progress.framework_percent_max", progress["framework_percent_max"], 92)
|
|
assert_equal("progress.runtime_landing_percent_min", progress["runtime_landing_percent_min"], 40)
|
|
assert_equal("progress.runtime_landing_percent_max", progress["runtime_landing_percent_max"], 45)
|
|
assert_true("progress.not_authorization", progress["not_authorization"])
|
|
|
|
progress_display_policy = rollup["progress_display_policy"]
|
|
assert_equal("progress_display_policy.headline_percent", progress_display_policy["headline_percent"], 64)
|
|
assert_equal(
|
|
"progress_display_policy.headline_status",
|
|
progress_display_policy["headline_status"],
|
|
"reviewed_after_kali_112_read_only_production_evidence",
|
|
)
|
|
assert_true("progress_display_policy.recent_micro_progress_visible", progress_display_policy["recent_micro_progress_visible"])
|
|
assert_false(
|
|
"progress_display_policy.runtime_execution_authorized",
|
|
progress_display_policy["runtime_execution_authorized"],
|
|
)
|
|
assert_true("progress_display_policy.not_authorization", progress_display_policy["not_authorization"])
|
|
|
|
progress_delta_ledger = rollup["progress_delta_ledger"]
|
|
expected_delta_ids = [
|
|
"s4_10_owner_response_request_packet",
|
|
"s4_10_owner_response_template_status_ledger",
|
|
"s4_10_owner_response_audit_event_templates",
|
|
"s4_10_owner_response_redaction_examples",
|
|
"s4_10_owner_response_collection_checks",
|
|
"s4_10_owner_response_intake_preflight_checks",
|
|
"s4_11_ref_truth_owner_response_request_packet",
|
|
"s4_11_ref_truth_owner_response_template_status_ledger",
|
|
"s4_11_ref_truth_owner_response_audit_event_templates",
|
|
"s4_11_ref_truth_owner_response_redaction_examples",
|
|
"s4_11_ref_truth_owner_response_collection_checks",
|
|
"s4_11_ref_truth_owner_response_intake_preflight_checks",
|
|
"s4_12_workflow_secret_name_owner_response_request_packet",
|
|
"s4_12_workflow_secret_name_owner_response_template_status_ledger",
|
|
"s4_12_workflow_secret_name_owner_response_audit_event_templates",
|
|
"s4_12_workflow_secret_name_owner_response_redaction_examples",
|
|
"s4_12_workflow_secret_name_owner_response_collection_checks",
|
|
"s4_12_workflow_secret_name_owner_response_intake_preflight_checks",
|
|
"s4_13_owner_response_validation_evidence_routing_rules",
|
|
"s4_13_owner_response_validation_display_sections",
|
|
"s4_13_owner_response_validation_state_transition_rules",
|
|
"s4_13_owner_response_validation_reviewer_checklist",
|
|
"s4_13_owner_response_validation_reviewer_outcome_lanes",
|
|
"s4_13_owner_response_validation_reviewer_audit_event_templates",
|
|
"s4_13_owner_response_validation_reviewer_audit_display_sections",
|
|
"s4_13_owner_response_validation_reviewer_audit_collection_checks",
|
|
"s4_13_owner_response_validation_reviewer_audit_redaction_examples",
|
|
"s4_13_owner_response_validation_reviewer_audit_retention_rules",
|
|
"s4_13_owner_response_validation_reviewer_audit_retention_checks",
|
|
"s4_13_owner_response_validation_reviewer_audit_handoff_packets",
|
|
"s4_13_owner_response_validation_reviewer_audit_handoff_checks",
|
|
"s4_13_owner_response_validation_parallel_session_sync_checks",
|
|
"s4_13_owner_response_validation_parallel_session_conflict_lanes",
|
|
"s4_13_owner_response_validation_parallel_session_recovery_checks",
|
|
"s4_13_owner_response_validation_parallel_session_recovery_outcome_lanes",
|
|
"s1_3_low_friction_non_blocking_escalation_lanes",
|
|
"s2_8_iwooos_frontend_posture_entry",
|
|
"s2_9_iwooos_posture_projection_contract",
|
|
"s2_10_iwooos_existing_frontend_surface_integration",
|
|
"s2_11_iwooos_surface_coverage_boundary_matrix",
|
|
"s2_12_iwooos_operator_journey_projection",
|
|
"s2_13_iwooos_owner_evidence_readiness_board",
|
|
"s2_14_iwooos_host_coverage_view",
|
|
"s2_15_iwooos_host_action_gate_matrix",
|
|
"s2_16_iwooos_host_evidence_readiness_board",
|
|
"s2_17_iwooos_host_evidence_collection_order",
|
|
"s2_18_iwooos_host_evidence_intake_preflight",
|
|
"s2_19_iwooos_host_evidence_review_outcome_lanes",
|
|
"s2_20_iwooos_host_evidence_review_handoff_packets",
|
|
"s2_21_iwooos_host_evidence_reviewer_checklist",
|
|
"s2_22_iwooos_host_evidence_reviewer_outcome_lanes",
|
|
"s2_23_iwooos_host_owner_decision_candidate_packets",
|
|
"s2_24_iwooos_host_owner_decision_review_checklist",
|
|
"s2_25_iwooos_host_owner_decision_review_outcome_lanes",
|
|
"s2_26_iwooos_host_owner_decision_record_draft_packets",
|
|
"s2_27_iwooos_host_owner_decision_record_draft_review_checklist",
|
|
"s2_28_iwooos_host_owner_decision_record_draft_review_outcome_lanes",
|
|
"s2_29_iwooos_host_owner_decision_record_writeup_packets",
|
|
"s2_30_iwooos_host_owner_decision_record_writeup_review_checklist",
|
|
"s2_31_iwooos_host_owner_decision_record_writeup_review_outcome_lanes",
|
|
"s2_32_iwooos_host_owner_decision_record_formal_candidate_packets",
|
|
"s2_33_iwooos_host_owner_decision_record_formal_candidate_review_checklist",
|
|
"s2_34_iwooos_host_owner_decision_record_formal_candidate_review_outcome_lanes",
|
|
"s2_35_iwooos_host_owner_decision_record_formal_record_queue_packets",
|
|
"s2_36_iwooos_host_owner_decision_record_formal_record_queue_review_checklist",
|
|
"s2_37_iwooos_host_owner_decision_record_formal_record_queue_review_outcome_lanes",
|
|
"s2_38_iwooos_host_owner_decision_record_human_handoff_readiness_packets",
|
|
"s2_39_iwooos_host_owner_decision_record_human_handoff_readiness_review_checklist",
|
|
"s2_40_iwooos_host_owner_decision_record_human_handoff_readiness_review_outcome_lanes",
|
|
"s2_41_iwooos_host_owner_decision_record_human_record_owner_review_candidate_packets",
|
|
"s2_42_iwooos_host_owner_decision_record_human_record_owner_review_candidate_checklist",
|
|
"s2_43_iwooos_host_owner_decision_record_human_record_owner_review_candidate_outcome_lanes",
|
|
"s2_44_iwooos_host_owner_decision_record_human_record_owner_review_preparation_packets",
|
|
"s2_45_iwooos_host_owner_decision_record_human_record_owner_review_preparation_checklist",
|
|
"s2_46_iwooos_progress_acceleration_lanes",
|
|
"s2_47_iwooos_owner_response_next_action_focus",
|
|
"s2_48_iwooos_s4_9_owner_response_preflight",
|
|
"s2_49_iwooos_s4_9_owner_response_request_templates",
|
|
"s2_50_iwooos_progress_hold_movement_gates",
|
|
"s2_51_iwooos_awooop_read_only_landing_readiness",
|
|
"s2_52_iwooos_awooop_cross_session_handoff_packets",
|
|
"s2_53_awooop_home_iwooos_security_mirror_candidate",
|
|
"s2_54_awooop_work_items_iwooos_security_mirror_candidate",
|
|
"s2_55_awooop_approvals_iwooos_owner_response_gate_candidate",
|
|
"s2_56_awooop_contracts_iwooos_security_contract_candidate",
|
|
"s2_57_awooop_tenants_iwooos_tenant_scope_candidate",
|
|
"s2_58_awooop_runs_iwooos_run_state_candidate",
|
|
"s2_59_existing_security_pages_iwooos_reverse_bridge",
|
|
"s2_60_security_control_pages_iwooos_reverse_bridge",
|
|
"s2_61_audit_engineering_pages_iwooos_reverse_bridge",
|
|
"s2_62_iwooos_frontend_surface_connection_board",
|
|
"s2_63_iwooos_github_primary_readiness_board",
|
|
"s2_64_awooop_work_items_github_primary_readiness_candidate",
|
|
"s2_65_awooop_contracts_github_primary_readiness_candidate",
|
|
"s2_66_awooop_approvals_github_primary_readiness_boundary",
|
|
"s2_67_awooop_home_github_primary_readiness_summary",
|
|
"s2_68_awooop_tenants_github_primary_readiness_scope",
|
|
"s2_69_awooop_runs_github_primary_readiness_boundary",
|
|
"s2_70_traditional_chinese_security_surface_wording_guard",
|
|
"s2_71_awooop_run_detail_traditional_chinese_wording_guard",
|
|
"s2_72_awooop_home_owner_response_validation_rollup",
|
|
"s2_73_awooop_work_items_owner_response_validation_candidate",
|
|
"s2_74_awooop_contracts_owner_response_validation_candidate",
|
|
"s2_75_awooop_approvals_owner_response_validation_boundary",
|
|
"s2_76_awooop_tenants_owner_response_validation_scope",
|
|
"s2_77_awooop_runs_owner_response_validation_boundary",
|
|
"s2_78_awooop_run_detail_owner_response_validation_boundary",
|
|
"s2_79_awooop_approval_detail_owner_response_validation_boundary",
|
|
"s2_80_iwooos_awooop_route_coverage_board",
|
|
"s2_81_iwooos_gradual_convergence_roadmap",
|
|
"s2_82_iwooos_owner_response_collection_board",
|
|
"s2_83_iwooos_owner_response_intake_safety_board",
|
|
"s2_84_iwooos_owner_response_review_outcome_board",
|
|
"s2_85_iwooos_owner_response_human_decision_queue_board",
|
|
"s2_86_iwooos_owner_response_decision_record_draft_guard_board",
|
|
"s2_87_iwooos_owner_response_formal_record_candidate_preflight_board",
|
|
"s2_88_iwooos_owner_response_formal_record_candidate_outcome_board",
|
|
"s2_89_iwooos_owner_response_formal_record_owner_handoff_board",
|
|
"s2_90_iwooos_owner_response_formal_record_owner_handoff_review_board",
|
|
"s2_91_iwooos_owner_response_formal_record_owner_handoff_review_outcome_board",
|
|
"s2_92_iwooos_owner_response_formal_record_owner_review_preparation_board",
|
|
"s2_93_iwooos_owner_response_formal_record_owner_review_checklist_board",
|
|
"s2_94_iwooos_owner_response_formal_record_owner_review_outcome_board",
|
|
"s2_95_iwooos_owner_response_formal_record_owner_assignment_preparation_board",
|
|
"s2_96_iwooos_owner_response_formal_record_owner_assignment_checklist_board",
|
|
"s2_97_iwooos_owner_response_formal_record_owner_assignment_outcome_board",
|
|
"s2_98_iwooos_owner_response_formal_record_owner_assignment_decision_preparation_board",
|
|
"s2_99_iwooos_owner_response_formal_record_owner_assignment_decision_checklist_board",
|
|
"s2_100_iwooos_headline_movement_acceptance_gate_board",
|
|
"s2_101_iwooos_s49_owner_response_work_order_board",
|
|
"s2_102_iwooos_s49_owner_response_envelope_board",
|
|
"s2_103_iwooos_s49_owner_response_envelope_preflight_board",
|
|
"s2_104_iwooos_s49_owner_response_envelope_preflight_outcome_board",
|
|
"s2_105_iwooos_s49_owner_response_request_draft_board",
|
|
"s2_106_iwooos_s49_owner_response_dispatch_flow_board",
|
|
"s2_107_security_compliance_iwooos_frontstage_bridge",
|
|
"s2_108_iwooos_frontstage_security_entry_roles",
|
|
"s2_109_security_compliance_frontstage_route_role_map",
|
|
"s2_110_security_compliance_low_friction_rollout_ladder",
|
|
"s2_111_iwooos_low_friction_rollout_ladder",
|
|
"s2_112_iwooos_low_friction_next_action_boundary",
|
|
"s2_113_iwooos_progress_movement_signal_strip",
|
|
"s2_114_iwooos_first_progress_unlock_path",
|
|
"s2_115_iwooos_first_unlock_evidence_packet",
|
|
"s2_116_iwooos_first_unlock_evidence_packet_preflight_outcomes",
|
|
"s2_117_iwooos_first_unlock_evidence_packet_supplement_path",
|
|
"s2_118_iwooos_first_unlock_evidence_packet_supplement_pre_review",
|
|
"s2_119_iwooos_first_unlock_evidence_packet_supplement_pre_review_outcomes",
|
|
"s2_120_iwooos_first_unlock_evidence_packet_reviewer_assignment_preparation",
|
|
"s2_121_iwooos_first_unlock_evidence_packet_reviewer_assignment_preflight",
|
|
"s2_122_iwooos_first_unlock_evidence_packet_reviewer_assignment_preflight_outcomes",
|
|
"s2_123_iwooos_concrete_security_work_map",
|
|
"s2_124_iwooos_concrete_security_delivery_checklist",
|
|
"s2_125_iwooos_concrete_security_blocker_resolution",
|
|
"s2_126_iwooos_three_axis_product_progress",
|
|
"s2_127_iwooos_product_rollout_wave_ledger",
|
|
"s2_128_iwooos_product_rollout_acceptance_gates",
|
|
"s2_129_iwooos_product_rollout_acceptance_outcomes",
|
|
"s2_130_iwooos_product_evidence_wiring_map",
|
|
"s2_131_iwooos_product_evidence_wiring_preflight",
|
|
"s2_132_iwooos_product_evidence_wiring_preflight_outcomes",
|
|
"s2_133_iwooos_product_evidence_wiring_preflight_recovery_ledger",
|
|
"s2_134_iwooos_product_evidence_wiring_preflight_retry_gates",
|
|
"s2_135_iwooos_product_evidence_wiring_preflight_retry_outcomes",
|
|
"s2_136_iwooos_product_evidence_wiring_preflight_retry_review_candidate",
|
|
"s2_137_iwooos_product_evidence_wiring_preflight_retry_review_candidate_preflight",
|
|
"s2_138_iwooos_product_evidence_wiring_preflight_retry_review_candidate_preflight_outcomes",
|
|
"s2_139_iwooos_product_evidence_wiring_preflight_retry_review_candidate_preflight_recovery_ledger",
|
|
"s2_140_iwooos_product_evidence_wiring_preflight_retry_review_candidate_preflight_recovery_retry_gates",
|
|
"s2_141_iwooos_all_product_coverage_snapshot",
|
|
"s2_142_iwooos_first_unlock_path_first_layer",
|
|
"s2_143_iwooos_command_map_first_layer",
|
|
"s2_144_iwooos_command_palette_security_entry_unified",
|
|
"s2_145_iwooos_first_layer_focus_deck",
|
|
"s2_146_iwooos_immediate_visual_mesh",
|
|
"s2_147_iwooos_gate_radar_first_layer",
|
|
"s2_148_iwooos_professional_topology_atlas",
|
|
"s2_149_iwooos_topology_node_drilldown",
|
|
"s2_150_iwooos_topology_path_explorer",
|
|
"s2_151_iwooos_topology_intelligence_deck",
|
|
"s2_152_iwooos_decision_runway",
|
|
"s2_153_iwooos_executive_snapshot",
|
|
"s2_154_iwooos_first_screen_language_polish",
|
|
"s2_155_iwooos_first_layer_progressive_disclosure",
|
|
"s2_156_iwooos_first_screen_depth_map",
|
|
"s2_157_iwooos_progress_evidence_rail",
|
|
"s2_158_iwooos_evidence_unlock_queue",
|
|
"s2_159_iwooos_s49_request_draft_package",
|
|
"s2_160_iwooos_s49_request_draft_frontstage_radar",
|
|
"s2_161_iwooos_s49_request_draft_detail_layer",
|
|
"s2_162_iwooos_s49_owner_response_intake_first_layer",
|
|
"s2_163_iwooos_s49_owner_response_intake_next_gates",
|
|
"s2_164_iwooos_s49_owner_response_intake_blocker_focus",
|
|
"s2_165_iwooos_s49_owner_response_delivery_cards",
|
|
"s2_166_iwooos_progress_integrity_ribbon",
|
|
"s2_167_iwooos_kali_112_live_read_only_recheck",
|
|
"s2_168_iwooos_kali_112_maintenance_runway",
|
|
"s2_169_iwooos_kali_112_progress_recalibration",
|
|
]
|
|
assert_equal(
|
|
"progress_delta_ledger.delta_ids",
|
|
[item["delta_id"] for item in progress_delta_ledger],
|
|
expected_delta_ids,
|
|
)
|
|
assert_equal(
|
|
"progress_delta_ledger.display_order",
|
|
[item["display_order"] for item in progress_delta_ledger],
|
|
list(range(1, len(expected_delta_ids) + 1)),
|
|
)
|
|
for item in progress_delta_ledger:
|
|
if item["delta_id"] == "s2_169_iwooos_kali_112_progress_recalibration":
|
|
assert_equal(
|
|
f"progress_delta_ledger.{item['delta_id']}.progress_axis",
|
|
item["progress_axis"],
|
|
"headline_read_only_evidence",
|
|
)
|
|
assert_equal(f"progress_delta_ledger.{item['delta_id']}.headline_percent_delta", item["headline_percent_delta"], 3)
|
|
else:
|
|
assert_equal(f"progress_delta_ledger.{item['delta_id']}.progress_axis", item["progress_axis"], "framework_detail")
|
|
assert_equal(f"progress_delta_ledger.{item['delta_id']}.headline_percent_delta", item["headline_percent_delta"], 0)
|
|
assert_true(f"progress_delta_ledger.{item['delta_id']}.framework_delta_visible", item["framework_delta_visible"])
|
|
assert_false(f"progress_delta_ledger.{item['delta_id']}.runtime_delta", item["runtime_delta"])
|
|
assert_false(f"progress_delta_ledger.{item['delta_id']}.execution_authorized", item["execution_authorized"])
|
|
assert_true(f"progress_delta_ledger.{item['delta_id']}.not_authorization", item["not_authorization"])
|
|
|
|
assert_false("rollup.runtime_execution_authorized", rollup["runtime_execution_authorized"])
|
|
assert_equal("rollup.active_runtime_gate_count", rollup_summary["active_runtime_gate_count"], 0)
|
|
assert_false("rollup.runtime_actions_executed", rollup_summary["runtime_actions_executed"])
|
|
assert_false("rollup.payloads_ingested", rollup_summary["payloads_ingested"])
|
|
assert_equal("rollup.github_primary_ready_count", rollup_summary["github_primary_ready_count"], 0)
|
|
assert_equal("rollup.owner_response_validation_received_count", rollup_summary["owner_response_validation_received_count"], 0)
|
|
assert_equal("rollup.owner_response_validation_accepted_count", rollup_summary["owner_response_validation_accepted_count"], 0)
|
|
assert_equal("rollup.workflow_secret_inventory_complete_count", rollup_summary["workflow_secret_inventory_complete_count"], 0)
|
|
assert_false("rollup.secret_value_collection_allowed", rollup_summary["secret_value_collection_allowed"])
|
|
assert_false("rollup.secret_value_detected", rollup_summary["secret_value_detected"])
|
|
assert_contains(
|
|
"rollup.next_safe_actions.action_ids",
|
|
[item["action_id"] for item in rollup["next_safe_actions"] if isinstance(item, dict)],
|
|
"mirror_owner_response_validation_rollup",
|
|
)
|
|
assert_contains(
|
|
"rollup.next_safe_actions.action_ids",
|
|
[item["action_id"] for item in rollup["next_safe_actions"] if isinstance(item, dict)],
|
|
"show_awooop_home_iwooos_security_mirror_candidate",
|
|
)
|
|
assert_contains(
|
|
"rollup.next_safe_actions.action_ids",
|
|
[item["action_id"] for item in rollup["next_safe_actions"] if isinstance(item, dict)],
|
|
"show_awooop_work_items_iwooos_security_mirror_candidate",
|
|
)
|
|
assert_contains(
|
|
"rollup.next_safe_actions.action_ids",
|
|
[item["action_id"] for item in rollup["next_safe_actions"] if isinstance(item, dict)],
|
|
"show_awooop_approvals_iwooos_owner_response_gate_candidate",
|
|
)
|
|
assert_contains(
|
|
"rollup.next_safe_actions.action_ids",
|
|
[item["action_id"] for item in rollup["next_safe_actions"] if isinstance(item, dict)],
|
|
"show_awooop_contracts_iwooos_security_contract_candidate",
|
|
)
|
|
assert_contains(
|
|
"rollup.next_safe_actions.action_ids",
|
|
[item["action_id"] for item in rollup["next_safe_actions"] if isinstance(item, dict)],
|
|
"show_awooop_tenants_iwooos_tenant_scope_candidate",
|
|
)
|
|
assert_contains(
|
|
"rollup.next_safe_actions.action_ids",
|
|
[item["action_id"] for item in rollup["next_safe_actions"] if isinstance(item, dict)],
|
|
"show_awooop_runs_iwooos_run_state_candidate",
|
|
)
|
|
assert_contains(
|
|
"rollup.next_safe_actions.action_ids",
|
|
[item["action_id"] for item in rollup["next_safe_actions"] if isinstance(item, dict)],
|
|
"show_existing_security_pages_iwooos_reverse_bridge",
|
|
)
|
|
assert_contains(
|
|
"rollup.next_safe_actions.action_ids",
|
|
[item["action_id"] for item in rollup["next_safe_actions"] if isinstance(item, dict)],
|
|
"show_security_control_pages_iwooos_reverse_bridge",
|
|
)
|
|
assert_contains(
|
|
"rollup.next_safe_actions.action_ids",
|
|
[item["action_id"] for item in rollup["next_safe_actions"] if isinstance(item, dict)],
|
|
"show_audit_engineering_pages_iwooos_reverse_bridge",
|
|
)
|
|
assert_contains(
|
|
"rollup.next_safe_actions.action_ids",
|
|
[item["action_id"] for item in rollup["next_safe_actions"] if isinstance(item, dict)],
|
|
"show_iwooos_frontend_surface_connection_board",
|
|
)
|
|
assert_contains(
|
|
"rollup.next_safe_actions.action_ids",
|
|
[item["action_id"] for item in rollup["next_safe_actions"] if isinstance(item, dict)],
|
|
"show_iwooos_github_primary_readiness_board",
|
|
)
|
|
assert_contains(
|
|
"rollup.next_safe_actions.action_ids",
|
|
[item["action_id"] for item in rollup["next_safe_actions"] if isinstance(item, dict)],
|
|
"show_awooop_work_items_github_primary_readiness_candidate",
|
|
)
|
|
assert_contains(
|
|
"rollup.next_safe_actions.action_ids",
|
|
[item["action_id"] for item in rollup["next_safe_actions"] if isinstance(item, dict)],
|
|
"show_awooop_work_items_owner_response_validation_candidate",
|
|
)
|
|
assert_contains(
|
|
"rollup.next_safe_actions.action_ids",
|
|
[item["action_id"] for item in rollup["next_safe_actions"] if isinstance(item, dict)],
|
|
"show_awooop_contracts_github_primary_readiness_candidate",
|
|
)
|
|
assert_contains(
|
|
"rollup.next_safe_actions.action_ids",
|
|
[item["action_id"] for item in rollup["next_safe_actions"] if isinstance(item, dict)],
|
|
"show_awooop_contracts_owner_response_validation_candidate",
|
|
)
|
|
assert_contains(
|
|
"rollup.next_safe_actions.action_ids",
|
|
[item["action_id"] for item in rollup["next_safe_actions"] if isinstance(item, dict)],
|
|
"show_awooop_approvals_github_primary_readiness_boundary",
|
|
)
|
|
assert_contains(
|
|
"rollup.next_safe_actions.action_ids",
|
|
[item["action_id"] for item in rollup["next_safe_actions"] if isinstance(item, dict)],
|
|
"show_awooop_approvals_owner_response_validation_boundary",
|
|
)
|
|
assert_contains(
|
|
"rollup.next_safe_actions.action_ids",
|
|
[item["action_id"] for item in rollup["next_safe_actions"] if isinstance(item, dict)],
|
|
"show_awooop_home_github_primary_readiness_summary",
|
|
)
|
|
assert_contains(
|
|
"rollup.next_safe_actions.action_ids",
|
|
[item["action_id"] for item in rollup["next_safe_actions"] if isinstance(item, dict)],
|
|
"show_awooop_tenants_github_primary_readiness_scope",
|
|
)
|
|
assert_contains(
|
|
"rollup.next_safe_actions.action_ids",
|
|
[item["action_id"] for item in rollup["next_safe_actions"] if isinstance(item, dict)],
|
|
"show_awooop_tenants_owner_response_validation_scope",
|
|
)
|
|
assert_contains(
|
|
"rollup.next_safe_actions.action_ids",
|
|
[item["action_id"] for item in rollup["next_safe_actions"] if isinstance(item, dict)],
|
|
"show_awooop_runs_github_primary_readiness_boundary",
|
|
)
|
|
assert_contains(
|
|
"rollup.next_safe_actions.action_ids",
|
|
[item["action_id"] for item in rollup["next_safe_actions"] if isinstance(item, dict)],
|
|
"show_awooop_runs_owner_response_validation_boundary",
|
|
)
|
|
assert_contains(
|
|
"rollup.next_safe_actions.action_ids",
|
|
[item["action_id"] for item in rollup["next_safe_actions"] if isinstance(item, dict)],
|
|
"show_awooop_run_detail_owner_response_validation_boundary",
|
|
)
|
|
assert_contains(
|
|
"rollup.next_safe_actions.action_ids",
|
|
[item["action_id"] for item in rollup["next_safe_actions"] if isinstance(item, dict)],
|
|
"show_awooop_approval_detail_owner_response_validation_boundary",
|
|
)
|
|
assert_contains(
|
|
"rollup.next_safe_actions.action_ids",
|
|
[item["action_id"] for item in rollup["next_safe_actions"] if isinstance(item, dict)],
|
|
"show_iwooos_awooop_route_coverage_board",
|
|
)
|
|
assert_contains(
|
|
"rollup.next_safe_actions.action_ids",
|
|
[item["action_id"] for item in rollup["next_safe_actions"] if isinstance(item, dict)],
|
|
"show_iwooos_gradual_convergence_roadmap",
|
|
)
|
|
assert_contains(
|
|
"rollup.next_safe_actions.action_ids",
|
|
[item["action_id"] for item in rollup["next_safe_actions"] if isinstance(item, dict)],
|
|
"show_iwooos_owner_response_collection_board",
|
|
)
|
|
assert_contains(
|
|
"rollup.next_safe_actions.action_ids",
|
|
[item["action_id"] for item in rollup["next_safe_actions"] if isinstance(item, dict)],
|
|
"show_iwooos_owner_response_intake_safety_board",
|
|
)
|
|
assert_contains(
|
|
"rollup.next_safe_actions.action_ids",
|
|
[item["action_id"] for item in rollup["next_safe_actions"] if isinstance(item, dict)],
|
|
"show_iwooos_owner_response_review_outcome_board",
|
|
)
|
|
assert_contains(
|
|
"rollup.next_safe_actions.action_ids",
|
|
[item["action_id"] for item in rollup["next_safe_actions"] if isinstance(item, dict)],
|
|
"show_iwooos_owner_response_human_decision_queue_board",
|
|
)
|
|
assert_contains(
|
|
"rollup.next_safe_actions.action_ids",
|
|
[item["action_id"] for item in rollup["next_safe_actions"] if isinstance(item, dict)],
|
|
"show_iwooos_owner_response_decision_record_draft_guard_board",
|
|
)
|
|
assert_contains(
|
|
"rollup.next_safe_actions.action_ids",
|
|
[item["action_id"] for item in rollup["next_safe_actions"] if isinstance(item, dict)],
|
|
"show_iwooos_owner_response_formal_record_candidate_preflight_board",
|
|
)
|
|
assert_contains(
|
|
"rollup.next_safe_actions.action_ids",
|
|
[item["action_id"] for item in rollup["next_safe_actions"] if isinstance(item, dict)],
|
|
"show_iwooos_owner_response_formal_record_candidate_outcome_board",
|
|
)
|
|
assert_contains(
|
|
"rollup.next_safe_actions.action_ids",
|
|
[item["action_id"] for item in rollup["next_safe_actions"] if isinstance(item, dict)],
|
|
"show_iwooos_owner_response_formal_record_owner_handoff_board",
|
|
)
|
|
assert_contains(
|
|
"rollup.next_safe_actions.action_ids",
|
|
[item["action_id"] for item in rollup["next_safe_actions"] if isinstance(item, dict)],
|
|
"show_iwooos_owner_response_formal_record_owner_handoff_review_board",
|
|
)
|
|
assert_contains(
|
|
"rollup.next_safe_actions.action_ids",
|
|
[item["action_id"] for item in rollup["next_safe_actions"] if isinstance(item, dict)],
|
|
"show_iwooos_owner_response_formal_record_owner_handoff_review_outcome_board",
|
|
)
|
|
assert_contains(
|
|
"rollup.next_safe_actions.action_ids",
|
|
[item["action_id"] for item in rollup["next_safe_actions"] if isinstance(item, dict)],
|
|
"show_iwooos_owner_response_formal_record_owner_review_preparation_board",
|
|
)
|
|
assert_contains(
|
|
"rollup.next_safe_actions.action_ids",
|
|
[item["action_id"] for item in rollup["next_safe_actions"] if isinstance(item, dict)],
|
|
"show_iwooos_owner_response_formal_record_owner_review_checklist_board",
|
|
)
|
|
assert_contains(
|
|
"rollup.next_safe_actions.action_ids",
|
|
[item["action_id"] for item in rollup["next_safe_actions"] if isinstance(item, dict)],
|
|
"show_iwooos_owner_response_formal_record_owner_review_outcome_board",
|
|
)
|
|
assert_contains(
|
|
"rollup.next_safe_actions.action_ids",
|
|
[item["action_id"] for item in rollup["next_safe_actions"] if isinstance(item, dict)],
|
|
"show_iwooos_owner_response_formal_record_owner_assignment_preparation_board",
|
|
)
|
|
assert_contains(
|
|
"rollup.next_safe_actions.action_ids",
|
|
[item["action_id"] for item in rollup["next_safe_actions"] if isinstance(item, dict)],
|
|
"show_iwooos_owner_response_formal_record_owner_assignment_checklist_board",
|
|
)
|
|
assert_contains(
|
|
"rollup.next_safe_actions.action_ids",
|
|
[item["action_id"] for item in rollup["next_safe_actions"] if isinstance(item, dict)],
|
|
"show_iwooos_owner_response_formal_record_owner_assignment_outcome_board",
|
|
)
|
|
assert_contains(
|
|
"rollup.next_safe_actions.action_ids",
|
|
[item["action_id"] for item in rollup["next_safe_actions"] if isinstance(item, dict)],
|
|
"show_iwooos_owner_response_formal_record_owner_assignment_decision_preparation_board",
|
|
)
|
|
assert_contains(
|
|
"rollup.next_safe_actions.action_ids",
|
|
[item["action_id"] for item in rollup["next_safe_actions"] if isinstance(item, dict)],
|
|
"show_iwooos_owner_response_formal_record_owner_assignment_decision_checklist_board",
|
|
)
|
|
assert_contains(
|
|
"rollup.next_safe_actions.action_ids",
|
|
[item["action_id"] for item in rollup["next_safe_actions"] if isinstance(item, dict)],
|
|
"show_iwooos_security_compliance_frontstage_bridge",
|
|
)
|
|
assert_contains(
|
|
"rollup.next_safe_actions.action_ids",
|
|
[item["action_id"] for item in rollup["next_safe_actions"] if isinstance(item, dict)],
|
|
"show_iwooos_frontstage_security_entry_roles",
|
|
)
|
|
assert_contains(
|
|
"rollup.next_safe_actions.action_ids",
|
|
[item["action_id"] for item in rollup["next_safe_actions"] if isinstance(item, dict)],
|
|
"show_security_compliance_frontstage_route_role_map",
|
|
)
|
|
assert_contains(
|
|
"rollup.next_safe_actions.action_ids",
|
|
[item["action_id"] for item in rollup["next_safe_actions"] if isinstance(item, dict)],
|
|
"show_security_compliance_low_friction_rollout_ladder",
|
|
)
|
|
assert_contains(
|
|
"rollup.next_safe_actions.action_ids",
|
|
[item["action_id"] for item in rollup["next_safe_actions"] if isinstance(item, dict)],
|
|
"show_iwooos_low_friction_rollout_ladder",
|
|
)
|
|
assert_contains(
|
|
"rollup.next_safe_actions.action_ids",
|
|
[item["action_id"] for item in rollup["next_safe_actions"] if isinstance(item, dict)],
|
|
"show_iwooos_low_friction_next_action_boundary",
|
|
)
|
|
assert_contains(
|
|
"rollup.next_safe_actions.action_ids",
|
|
[item["action_id"] for item in rollup["next_safe_actions"] if isinstance(item, dict)],
|
|
"show_iwooos_progress_movement_signal_strip",
|
|
)
|
|
assert_contains(
|
|
"rollup.next_safe_actions.action_ids",
|
|
[item["action_id"] for item in rollup["next_safe_actions"] if isinstance(item, dict)],
|
|
"show_iwooos_first_progress_unlock_path",
|
|
)
|
|
assert_contains(
|
|
"rollup.next_safe_actions.action_ids",
|
|
[item["action_id"] for item in rollup["next_safe_actions"] if isinstance(item, dict)],
|
|
"show_iwooos_first_unlock_evidence_packet",
|
|
)
|
|
assert_contains(
|
|
"rollup.next_safe_actions.action_ids",
|
|
[item["action_id"] for item in rollup["next_safe_actions"] if isinstance(item, dict)],
|
|
"show_iwooos_first_unlock_evidence_packet_preflight_outcomes",
|
|
)
|
|
assert_contains(
|
|
"rollup.next_safe_actions.action_ids",
|
|
[item["action_id"] for item in rollup["next_safe_actions"] if isinstance(item, dict)],
|
|
"show_iwooos_first_unlock_evidence_packet_supplement_path",
|
|
)
|
|
assert_contains(
|
|
"rollup.next_safe_actions.action_ids",
|
|
[item["action_id"] for item in rollup["next_safe_actions"] if isinstance(item, dict)],
|
|
"show_iwooos_first_unlock_evidence_packet_supplement_pre_review",
|
|
)
|
|
assert_contains(
|
|
"rollup.next_safe_actions.action_ids",
|
|
[item["action_id"] for item in rollup["next_safe_actions"] if isinstance(item, dict)],
|
|
"show_iwooos_first_unlock_evidence_packet_supplement_pre_review_outcomes",
|
|
)
|
|
assert_contains(
|
|
"rollup.next_safe_actions.action_ids",
|
|
[item["action_id"] for item in rollup["next_safe_actions"] if isinstance(item, dict)],
|
|
"show_iwooos_first_unlock_evidence_packet_reviewer_assignment_preparation",
|
|
)
|
|
assert_contains(
|
|
"rollup.next_safe_actions.action_ids",
|
|
[item["action_id"] for item in rollup["next_safe_actions"] if isinstance(item, dict)],
|
|
"show_iwooos_first_unlock_evidence_packet_reviewer_assignment_preflight",
|
|
)
|
|
assert_contains(
|
|
"rollup.next_safe_actions.action_ids",
|
|
[item["action_id"] for item in rollup["next_safe_actions"] if isinstance(item, dict)],
|
|
"show_iwooos_first_unlock_evidence_packet_reviewer_assignment_preflight_outcomes",
|
|
)
|
|
assert_contains(
|
|
"rollup.next_safe_actions.action_ids",
|
|
[item["action_id"] for item in rollup["next_safe_actions"] if isinstance(item, dict)],
|
|
"show_iwooos_concrete_security_work_map",
|
|
)
|
|
assert_contains(
|
|
"rollup.next_safe_actions.action_ids",
|
|
[item["action_id"] for item in rollup["next_safe_actions"] if isinstance(item, dict)],
|
|
"show_iwooos_concrete_security_delivery_checklist",
|
|
)
|
|
assert_contains(
|
|
"rollup.next_safe_actions.action_ids",
|
|
[item["action_id"] for item in rollup["next_safe_actions"] if isinstance(item, dict)],
|
|
"show_iwooos_concrete_security_blocker_resolution",
|
|
)
|
|
assert_contains(
|
|
"rollup.next_safe_actions.action_ids",
|
|
[item["action_id"] for item in rollup["next_safe_actions"] if isinstance(item, dict)],
|
|
"show_iwooos_three_axis_product_progress",
|
|
)
|
|
assert_contains(
|
|
"rollup.next_safe_actions.action_ids",
|
|
[item["action_id"] for item in rollup["next_safe_actions"] if isinstance(item, dict)],
|
|
"show_iwooos_all_product_coverage_snapshot",
|
|
)
|
|
assert_contains(
|
|
"rollup.next_safe_actions.action_ids",
|
|
[item["action_id"] for item in rollup["next_safe_actions"] if isinstance(item, dict)],
|
|
"show_iwooos_product_rollout_wave_ledger",
|
|
)
|
|
assert_contains(
|
|
"rollup.next_safe_actions.action_ids",
|
|
[item["action_id"] for item in rollup["next_safe_actions"] if isinstance(item, dict)],
|
|
"show_iwooos_product_rollout_acceptance_gates",
|
|
)
|
|
assert_contains(
|
|
"rollup.next_safe_actions.action_ids",
|
|
[item["action_id"] for item in rollup["next_safe_actions"] if isinstance(item, dict)],
|
|
"show_iwooos_product_rollout_acceptance_outcomes",
|
|
)
|
|
assert_contains(
|
|
"rollup.next_safe_actions.action_ids",
|
|
[item["action_id"] for item in rollup["next_safe_actions"] if isinstance(item, dict)],
|
|
"show_iwooos_product_evidence_wiring_map",
|
|
)
|
|
assert_contains(
|
|
"rollup.next_safe_actions.action_ids",
|
|
[item["action_id"] for item in rollup["next_safe_actions"] if isinstance(item, dict)],
|
|
"show_iwooos_product_evidence_wiring_preflight",
|
|
)
|
|
assert_contains(
|
|
"rollup.next_safe_actions.action_ids",
|
|
[item["action_id"] for item in rollup["next_safe_actions"] if isinstance(item, dict)],
|
|
"show_iwooos_product_evidence_wiring_preflight_outcomes",
|
|
)
|
|
assert_contains(
|
|
"rollup.next_safe_actions.action_ids",
|
|
[item["action_id"] for item in rollup["next_safe_actions"] if isinstance(item, dict)],
|
|
"show_iwooos_product_evidence_wiring_preflight_recovery_ledger",
|
|
)
|
|
assert_contains(
|
|
"rollup.next_safe_actions.action_ids",
|
|
[item["action_id"] for item in rollup["next_safe_actions"] if isinstance(item, dict)],
|
|
"show_iwooos_product_evidence_wiring_preflight_retry_gates",
|
|
)
|
|
assert_contains(
|
|
"rollup.next_safe_actions.action_ids",
|
|
[item["action_id"] for item in rollup["next_safe_actions"] if isinstance(item, dict)],
|
|
"show_iwooos_product_evidence_wiring_preflight_retry_outcomes",
|
|
)
|
|
assert_contains(
|
|
"rollup.next_safe_actions.action_ids",
|
|
[item["action_id"] for item in rollup["next_safe_actions"] if isinstance(item, dict)],
|
|
"show_iwooos_product_evidence_wiring_preflight_retry_review_candidate",
|
|
)
|
|
assert_contains(
|
|
"rollup.next_safe_actions.action_ids",
|
|
[item["action_id"] for item in rollup["next_safe_actions"] if isinstance(item, dict)],
|
|
"show_iwooos_product_evidence_wiring_preflight_retry_review_candidate_preflight",
|
|
)
|
|
assert_contains(
|
|
"rollup.next_safe_actions.action_ids",
|
|
[item["action_id"] for item in rollup["next_safe_actions"] if isinstance(item, dict)],
|
|
"show_iwooos_product_evidence_wiring_preflight_retry_review_candidate_preflight_outcomes",
|
|
)
|
|
assert_contains(
|
|
"rollup.next_safe_actions.action_ids",
|
|
[item["action_id"] for item in rollup["next_safe_actions"] if isinstance(item, dict)],
|
|
"show_iwooos_product_evidence_wiring_preflight_retry_review_candidate_preflight_recovery_ledger",
|
|
)
|
|
assert_contains(
|
|
"rollup.next_safe_actions.action_ids",
|
|
[item["action_id"] for item in rollup["next_safe_actions"] if isinstance(item, dict)],
|
|
"show_iwooos_product_evidence_wiring_preflight_retry_review_candidate_preflight_recovery_retry_gates",
|
|
)
|
|
assert_contains(
|
|
"rollup.next_safe_actions.action_ids",
|
|
[item["action_id"] for item in rollup["next_safe_actions"] if isinstance(item, dict)],
|
|
"enforce_traditional_chinese_security_surface_wording",
|
|
)
|
|
assert_contains(
|
|
"rollup.next_safe_actions.action_ids",
|
|
[item["action_id"] for item in rollup["next_safe_actions"] if isinstance(item, dict)],
|
|
"enforce_awooop_run_detail_traditional_chinese_wording",
|
|
)
|
|
|
|
zh_security_surface_text = json.dumps(
|
|
{
|
|
"iwooos": web_messages_zh["iwooos"],
|
|
"awooop": web_messages_zh["awooop"],
|
|
},
|
|
ensure_ascii=False,
|
|
)
|
|
for forbidden in [
|
|
"Information Security Mesh",
|
|
"Mirror-only / Observe-first",
|
|
"Exposure Posture",
|
|
"Source-control Supply Chain",
|
|
"Owner response missing",
|
|
"GitHub Primary Readiness",
|
|
"Active runtime gates",
|
|
"Candidate repos",
|
|
"In-scope repos",
|
|
"Owner responses",
|
|
"Owner response",
|
|
"Workflow inventory",
|
|
"Security runs",
|
|
"Run visibility",
|
|
"Run State",
|
|
"Readiness evidence refs",
|
|
"Owner response lanes",
|
|
"Source-control 邊界",
|
|
"Ready for mirror",
|
|
"Primary ready",
|
|
"AwoooP Operator Console",
|
|
"Control Plane",
|
|
"Shadow First",
|
|
"Operator Runs",
|
|
"Run Detail",
|
|
"Project / Agent",
|
|
"Incident ID",
|
|
"Incident Evidence",
|
|
"Run Timeline",
|
|
]:
|
|
assert_text_not_contains("web_messages.zh-TW.security_surface_wording", zh_security_surface_text, forbidden)
|
|
|
|
zh_awooop_tenants_text = json.dumps(web_messages_zh["awooop"]["tenants"], ensure_ascii=False)
|
|
for forbidden in [
|
|
"security mirror",
|
|
"migration mode",
|
|
"tenant policy",
|
|
"platform tenants API",
|
|
"primary switch",
|
|
"refs action",
|
|
"runtime tenant",
|
|
"posture mirror",
|
|
"Host coverage",
|
|
"observe-only",
|
|
"Tenant policy changes",
|
|
"owner response",
|
|
"runtime gate",
|
|
"secret value",
|
|
"workflow / secret",
|
|
"received / accepted",
|
|
"GitHub repo",
|
|
"Project ID",
|
|
]:
|
|
assert_text_not_contains("web_messages.zh-TW.awooop.tenants_wording", zh_awooop_tenants_text, forbidden)
|
|
|
|
zh_awooop_runs_text = json.dumps(web_messages_zh["awooop"]["runs"], ensure_ascii=False)
|
|
for forbidden in [
|
|
"Run Monitor",
|
|
"Run Boundary",
|
|
"Run visibility",
|
|
"Security runs",
|
|
"Active runtime gates",
|
|
"Owner accepted",
|
|
"owner response",
|
|
"runtime gate",
|
|
"post-check evidence",
|
|
"dry-run evidence",
|
|
"action button",
|
|
"repo",
|
|
"secrets",
|
|
"secret value",
|
|
"workflow / secret",
|
|
"received / accepted",
|
|
"Candidate Repos",
|
|
"In-scope Repos",
|
|
"Workflow Inventory",
|
|
]:
|
|
assert_text_not_contains("web_messages.zh-TW.awooop.runs_wording", zh_awooop_runs_text, forbidden)
|
|
|
|
zh_awooop_run_detail_text = "\n".join(
|
|
collect_string_values(
|
|
{
|
|
"incidentEvidence": web_messages_zh["awooop"]["incidentEvidence"],
|
|
"runDetail": web_messages_zh["awooop"]["runDetail"],
|
|
"approvalDecision": web_messages_zh["awooop"]["approvalDecision"],
|
|
}
|
|
)
|
|
)
|
|
for forbidden in [
|
|
"Trace ID",
|
|
"Trigger Ref",
|
|
"Trigger",
|
|
"Tool",
|
|
"Scope",
|
|
"First-class",
|
|
"Policy enforced",
|
|
"Approval executor",
|
|
"Legacy bridge",
|
|
"Dry-run",
|
|
"Tools",
|
|
"Incident Evidence",
|
|
"Run state",
|
|
"audit trail",
|
|
"resume",
|
|
"Run 會",
|
|
]:
|
|
assert_text_not_contains("web_messages.zh-TW.awooop_run_detail_wording", zh_awooop_run_detail_text, forbidden)
|
|
|
|
zh_awooop_work_items_text = json.dumps(
|
|
web_messages_zh["awooop"]["workItems"],
|
|
ensure_ascii=False,
|
|
)
|
|
for forbidden in [
|
|
"Production 證據",
|
|
"Link",
|
|
"truth-chain",
|
|
"truth-first",
|
|
"MCP Gateway",
|
|
"Timeline",
|
|
"GitHub Primary Readiness",
|
|
"active runtime gates",
|
|
"Workflow / secret",
|
|
"secret value",
|
|
"pending dispatch",
|
|
"channel events",
|
|
"DB truth",
|
|
"dispatch 與",
|
|
]:
|
|
assert_text_not_contains(
|
|
"web_messages.zh-TW.awooop_work_items_wording",
|
|
zh_awooop_work_items_text,
|
|
forbidden,
|
|
)
|
|
|
|
zh_awooop_contracts_value_text = "\n".join(collect_string_values(web_messages_zh["awooop"]["contracts"]))
|
|
for forbidden in [
|
|
"secret value",
|
|
"workflow / secret",
|
|
"runtime gate",
|
|
"runtime enforcement",
|
|
"候選 repo",
|
|
"範圍內 repo",
|
|
"repo 建立",
|
|
"repo / refs",
|
|
"refs 變更",
|
|
"refs 動作",
|
|
"sync / delete / force push",
|
|
"received / accepted",
|
|
"received / accepted / rejected",
|
|
"waiting owner response",
|
|
"未 complete",
|
|
]:
|
|
assert_text_not_contains(
|
|
"web_messages.zh-TW.awooop_contracts_wording",
|
|
zh_awooop_contracts_value_text,
|
|
forbidden,
|
|
)
|
|
|
|
zh_awooop_approvals_owner_validation_text = "\n".join(
|
|
collect_string_values(web_messages_zh["awooop"]["approvals"]["ownerResponseValidationBoundary"])
|
|
)
|
|
for forbidden in [
|
|
"secret value",
|
|
"workflow / secret",
|
|
"runtime gate",
|
|
"runtime enforcement",
|
|
"approval record",
|
|
"repo action",
|
|
"repo 建立",
|
|
"repo / refs",
|
|
"refs action",
|
|
"refs 動作",
|
|
"sync / delete / force push",
|
|
"received / accepted",
|
|
"received / accepted / rejected",
|
|
"waiting owner response",
|
|
]:
|
|
assert_text_not_contains(
|
|
"web_messages.zh-TW.awooop_approvals_owner_validation_wording",
|
|
zh_awooop_approvals_owner_validation_text,
|
|
forbidden,
|
|
)
|
|
|
|
zh_awooop_home_security_text = json.dumps(
|
|
{
|
|
"securityMirror": web_messages_zh["awooop"]["home"]["securityMirror"],
|
|
"githubPrimaryReadiness": web_messages_zh["awooop"]["home"]["githubPrimaryReadiness"],
|
|
"ownerResponseValidation": web_messages_zh["awooop"]["home"]["ownerResponseValidation"],
|
|
},
|
|
ensure_ascii=False,
|
|
)
|
|
for forbidden in [
|
|
"secret value",
|
|
"secret 明文",
|
|
"received / accepted",
|
|
"0 received",
|
|
"0 accepted",
|
|
"Production landing",
|
|
"production landing",
|
|
"runtime ingestion",
|
|
"deployment proof",
|
|
"evidence refs",
|
|
"Workflow / secret",
|
|
"workflow / secret",
|
|
"ready count",
|
|
"Owner Response Validation",
|
|
"Response Packets",
|
|
"Owner Attestation",
|
|
"Owner Decision",
|
|
"Owner Response",
|
|
"Reviewer Checklist",
|
|
"Reviewer Outcomes",
|
|
"Cross-Packet Checks",
|
|
"owner evidence",
|
|
"owner response",
|
|
"owner attestation",
|
|
"owner decision",
|
|
"checklist items",
|
|
"outcome lanes",
|
|
]:
|
|
assert_text_not_contains(
|
|
"web_messages.zh-TW.awooop_home_security_wording",
|
|
zh_awooop_home_security_text,
|
|
forbidden,
|
|
)
|
|
|
|
zh_awooop_owner_response_validation_text = json.dumps(
|
|
web_messages_zh["awooop"]["home"]["ownerResponseValidation"],
|
|
ensure_ascii=False,
|
|
)
|
|
for forbidden in [
|
|
"Owner Response Validation",
|
|
"Response Packets",
|
|
"Owner Attestation",
|
|
"Owner Decision",
|
|
"Owner Response",
|
|
"Reviewer Checklist",
|
|
"Reviewer Outcomes",
|
|
"Cross-Packet Checks",
|
|
"owner evidence",
|
|
"owner response",
|
|
"owner attestation",
|
|
"owner decision",
|
|
"secret value",
|
|
"checklist items",
|
|
"outcome lanes",
|
|
]:
|
|
assert_text_not_contains(
|
|
"web_messages.zh-TW.awooop_owner_response_validation_wording",
|
|
zh_awooop_owner_response_validation_text,
|
|
forbidden,
|
|
)
|
|
|
|
assert_equal("rollout_policy.schema_version", rollout_policy["schema_version"], "security_rollout_policy_v1")
|
|
assert_equal("rollout_policy.default_mode", rollout_policy["default_mode"], "observe")
|
|
assert_equal("rollout_policy.enforcement_level", rollout_policy["enforcement_level"], "mirror_only")
|
|
assert_equal("rollout_policy.non_blocking_escalation_lane_count", rollout_policy["non_blocking_escalation_lane_count"], 7)
|
|
expected_low_friction_lane_ids = [
|
|
"lane-low-medium-observation",
|
|
"lane-owner-response-missing",
|
|
"lane-mirror-data-incomplete",
|
|
"lane-source-control-drift-draft",
|
|
"lane-kali-observe-finding",
|
|
"lane-workflow-secret-name-gap",
|
|
"lane-progress-display-holding",
|
|
]
|
|
non_blocking_lanes = rollout_policy["non_blocking_escalation_lanes"]
|
|
assert_equal(
|
|
"rollout_policy.non_blocking_escalation_lanes.ids",
|
|
[item["lane_id"] for item in non_blocking_lanes],
|
|
expected_low_friction_lane_ids,
|
|
)
|
|
assert_equal(
|
|
"rollout_policy.non_blocking_escalation_lanes.display_order",
|
|
[item["display_order"] for item in non_blocking_lanes],
|
|
list(range(1, len(expected_low_friction_lane_ids) + 1)),
|
|
)
|
|
for item in non_blocking_lanes:
|
|
if item["initial_mode"] not in {"observe", "warn"}:
|
|
raise SystemExit(
|
|
f"BLOCKED rollout_policy.non_blocking_escalation_lanes.{item['lane_id']}.initial_mode: "
|
|
f"expected observe/warn, got {item['initial_mode']!r}"
|
|
)
|
|
assert_true(
|
|
f"rollout_policy.non_blocking_escalation_lanes.{item['lane_id']}.owner_review_required_before_blocking",
|
|
item["owner_review_required_before_blocking"],
|
|
)
|
|
assert_false(
|
|
f"rollout_policy.non_blocking_escalation_lanes.{item['lane_id']}.runtime_blocking_allowed",
|
|
item["runtime_blocking_allowed"],
|
|
)
|
|
assert_equal(
|
|
f"rollout_policy.non_blocking_escalation_lanes.{item['lane_id']}.awooop_display_mode",
|
|
item["awooop_display_mode"],
|
|
"display_low_friction_non_blocking_lane_only",
|
|
)
|
|
assert_true(
|
|
f"rollout_policy.non_blocking_escalation_lanes.{item['lane_id']}.not_authorization",
|
|
item["not_authorization"],
|
|
)
|
|
rollout_outputs = rollout_policy["allowed_awooop_outputs"]
|
|
for output in [
|
|
"display_non_blocking_escalation_lanes",
|
|
"create_followup_without_blocking",
|
|
"show_owner_review_required_before_blocking",
|
|
"keep_runtime_blocking_false",
|
|
]:
|
|
assert_contains("rollout_policy.allowed_awooop_outputs", rollout_outputs, output)
|
|
|
|
assert_equal("iwooos_projection.schema_version", iwooos_projection["schema_version"], "iwooos_posture_projection_v1")
|
|
assert_equal("iwooos_projection.product_id", iwooos_projection["product_id"], "iwooos")
|
|
assert_equal("iwooos_projection.display_name", iwooos_projection["display_name"], "IwoooS")
|
|
assert_equal("iwooos_projection.mode", iwooos_projection["mode"], "mirror_only")
|
|
assert_false("iwooos_projection.runtime_execution_authorized", iwooos_projection["runtime_execution_authorized"])
|
|
assert_false("iwooos_projection.action_buttons_allowed", iwooos_projection["action_buttons_allowed"])
|
|
assert_true("iwooos_projection.not_authorization", iwooos_projection["not_authorization"])
|
|
assert_equal("iwooos_projection.summary.route_path", iwooos_projection["summary"]["route_path"], "/iwooos")
|
|
assert_true("iwooos_projection.summary.nav_entry_added", iwooos_projection["summary"]["nav_entry_added"])
|
|
assert_true(
|
|
"iwooos_projection.summary.command_palette_entry_added",
|
|
iwooos_projection["summary"]["command_palette_entry_added"],
|
|
)
|
|
assert_true(
|
|
"iwooos_projection.summary.command_palette_security_action_unified_to_iwooos",
|
|
iwooos_projection["summary"]["command_palette_security_action_unified_to_iwooos"],
|
|
)
|
|
assert_false(
|
|
"iwooos_projection.summary.command_palette_security_compliance_direct_action_allowed",
|
|
iwooos_projection["summary"]["command_palette_security_compliance_direct_action_allowed"],
|
|
)
|
|
assert_true(
|
|
"iwooos_projection.summary.command_palette_security_keywords_route_to_iwooos",
|
|
iwooos_projection["summary"]["command_palette_security_keywords_route_to_iwooos"],
|
|
)
|
|
assert_equal("iwooos_projection.summary.contract_count", iwooos_projection["summary"]["contract_count"], manifest_count)
|
|
assert_equal(
|
|
"iwooos_projection.summary.active_runtime_gate_count",
|
|
iwooos_projection["summary"]["active_runtime_gate_count"],
|
|
rollup_summary["active_runtime_gate_count"],
|
|
)
|
|
assert_equal(
|
|
"iwooos_projection.summary.owner_response_validation_received_count",
|
|
iwooos_projection["summary"]["owner_response_validation_received_count"],
|
|
rollup_summary["owner_response_validation_received_count"],
|
|
)
|
|
assert_equal(
|
|
"iwooos_projection.summary.owner_response_validation_accepted_count",
|
|
iwooos_projection["summary"]["owner_response_validation_accepted_count"],
|
|
rollup_summary["owner_response_validation_accepted_count"],
|
|
)
|
|
assert_equal(
|
|
"iwooos_projection.summary.github_primary_ready_count",
|
|
iwooos_projection["summary"]["github_primary_ready_count"],
|
|
rollup_summary["github_primary_ready_count"],
|
|
)
|
|
expected_iwooos_source_control_primary_readiness_item_ids = [
|
|
"candidate_repo_inventory",
|
|
"primary_ready_counter_locked",
|
|
"owner_response_validation_waiting",
|
|
"refs_truth_waiting_owner",
|
|
"workflow_secret_name_inventory_missing",
|
|
"rollback_adr_waiting_owner_approval",
|
|
]
|
|
assert_equal(
|
|
"iwooos_projection.summary.source_control_primary_readiness_item_count",
|
|
iwooos_projection["summary"]["source_control_primary_readiness_item_count"],
|
|
len(expected_iwooos_source_control_primary_readiness_item_ids),
|
|
)
|
|
assert_false("iwooos_projection.summary.action_buttons_allowed", iwooos_projection["summary"]["action_buttons_allowed"])
|
|
assert_true(
|
|
"iwooos_projection.summary.progress_integrity_ribbon_first_layer",
|
|
iwooos_projection["summary"]["progress_integrity_ribbon_first_layer"],
|
|
)
|
|
assert_equal(
|
|
"iwooos_projection.summary.progress_integrity_ribbon_signal_count",
|
|
iwooos_projection["summary"]["progress_integrity_ribbon_signal_count"],
|
|
3,
|
|
)
|
|
assert_equal(
|
|
"iwooos_projection.summary.progress_integrity_ribbon_headline_percent",
|
|
iwooos_projection["summary"]["progress_integrity_ribbon_headline_percent"],
|
|
64,
|
|
)
|
|
assert_equal(
|
|
"iwooos_projection.summary.progress_integrity_ribbon_headline_delta",
|
|
iwooos_projection["summary"]["progress_integrity_ribbon_headline_delta"],
|
|
3,
|
|
)
|
|
assert_equal(
|
|
"iwooos_projection.summary.progress_integrity_ribbon_read_only_scope_count",
|
|
iwooos_projection["summary"]["progress_integrity_ribbon_read_only_scope_count"],
|
|
9,
|
|
)
|
|
assert_equal(
|
|
"iwooos_projection.summary.progress_integrity_ribbon_pending_evidence_gate_count",
|
|
iwooos_projection["summary"]["progress_integrity_ribbon_pending_evidence_gate_count"],
|
|
3,
|
|
)
|
|
assert_equal(
|
|
"iwooos_projection.summary.progress_integrity_ribbon_runtime_gate_count",
|
|
iwooos_projection["summary"]["progress_integrity_ribbon_runtime_gate_count"],
|
|
0,
|
|
)
|
|
assert_false(
|
|
"iwooos_projection.summary.progress_integrity_ribbon_action_buttons_allowed",
|
|
iwooos_projection["summary"]["progress_integrity_ribbon_action_buttons_allowed"],
|
|
)
|
|
assert_true(
|
|
"iwooos_projection.summary.executive_snapshot_first_layer",
|
|
iwooos_projection["summary"]["executive_snapshot_first_layer"],
|
|
)
|
|
assert_equal(
|
|
"iwooos_projection.summary.executive_snapshot_card_count",
|
|
iwooos_projection["summary"]["executive_snapshot_card_count"],
|
|
4,
|
|
)
|
|
assert_equal(
|
|
"iwooos_projection.summary.executive_snapshot_axis_count",
|
|
iwooos_projection["summary"]["executive_snapshot_axis_count"],
|
|
3,
|
|
)
|
|
assert_true(
|
|
"iwooos_projection.summary.executive_snapshot_above_focus_deck",
|
|
iwooos_projection["summary"]["executive_snapshot_above_focus_deck"],
|
|
)
|
|
assert_true(
|
|
"iwooos_projection.summary.executive_snapshot_explains_done_next_blocked",
|
|
iwooos_projection["summary"]["executive_snapshot_explains_done_next_blocked"],
|
|
)
|
|
assert_equal(
|
|
"iwooos_projection.summary.executive_snapshot_runtime_gate_count",
|
|
iwooos_projection["summary"]["executive_snapshot_runtime_gate_count"],
|
|
0,
|
|
)
|
|
assert_equal(
|
|
"iwooos_projection.summary.executive_snapshot_owner_response_received_count",
|
|
iwooos_projection["summary"]["executive_snapshot_owner_response_received_count"],
|
|
0,
|
|
)
|
|
assert_equal(
|
|
"iwooos_projection.summary.executive_snapshot_owner_response_accepted_count",
|
|
iwooos_projection["summary"]["executive_snapshot_owner_response_accepted_count"],
|
|
0,
|
|
)
|
|
assert_equal(
|
|
"iwooos_projection.summary.all_product_coverage_snapshot_scope_count",
|
|
iwooos_projection["summary"]["all_product_coverage_snapshot_scope_count"],
|
|
8,
|
|
)
|
|
assert_equal(
|
|
"iwooos_projection.summary.all_product_coverage_snapshot_read_only_count",
|
|
iwooos_projection["summary"]["all_product_coverage_snapshot_read_only_count"],
|
|
8,
|
|
)
|
|
assert_equal(
|
|
"iwooos_projection.summary.all_product_coverage_snapshot_runtime_ready_count",
|
|
iwooos_projection["summary"]["all_product_coverage_snapshot_runtime_ready_count"],
|
|
0,
|
|
)
|
|
assert_true(
|
|
"iwooos_projection.summary.first_screen_depth_map_first_layer",
|
|
iwooos_projection["summary"]["first_screen_depth_map_first_layer"],
|
|
)
|
|
assert_equal(
|
|
"iwooos_projection.summary.first_screen_depth_map_layer_count",
|
|
iwooos_projection["summary"]["first_screen_depth_map_layer_count"],
|
|
4,
|
|
)
|
|
assert_equal(
|
|
"iwooos_projection.summary.first_screen_depth_map_visible_layer_count",
|
|
iwooos_projection["summary"]["first_screen_depth_map_visible_layer_count"],
|
|
4,
|
|
)
|
|
assert_equal(
|
|
"iwooos_projection.summary.first_screen_depth_map_advanced_group_count",
|
|
iwooos_projection["summary"]["first_screen_depth_map_advanced_group_count"],
|
|
2,
|
|
)
|
|
assert_equal(
|
|
"iwooos_projection.summary.first_screen_depth_map_ledger_group_count",
|
|
iwooos_projection["summary"]["first_screen_depth_map_ledger_group_count"],
|
|
4,
|
|
)
|
|
assert_equal(
|
|
"iwooos_projection.summary.first_screen_depth_map_runtime_gate_count",
|
|
iwooos_projection["summary"]["first_screen_depth_map_runtime_gate_count"],
|
|
0,
|
|
)
|
|
assert_false(
|
|
"iwooos_projection.summary.first_screen_depth_map_advanced_default_visible",
|
|
iwooos_projection["summary"]["first_screen_depth_map_advanced_default_visible"],
|
|
)
|
|
assert_false(
|
|
"iwooos_projection.summary.first_screen_depth_map_scope_evidence_default_visible",
|
|
iwooos_projection["summary"]["first_screen_depth_map_scope_evidence_default_visible"],
|
|
)
|
|
assert_true(
|
|
"iwooos_projection.summary.progress_evidence_rail_first_layer",
|
|
iwooos_projection["summary"]["progress_evidence_rail_first_layer"],
|
|
)
|
|
assert_equal(
|
|
"iwooos_projection.summary.progress_evidence_rail_item_count",
|
|
iwooos_projection["summary"]["progress_evidence_rail_item_count"],
|
|
5,
|
|
)
|
|
assert_equal(
|
|
"iwooos_projection.summary.progress_evidence_rail_owner_response_received_count",
|
|
iwooos_projection["summary"]["progress_evidence_rail_owner_response_received_count"],
|
|
0,
|
|
)
|
|
assert_equal(
|
|
"iwooos_projection.summary.progress_evidence_rail_owner_response_accepted_count",
|
|
iwooos_projection["summary"]["progress_evidence_rail_owner_response_accepted_count"],
|
|
0,
|
|
)
|
|
assert_equal(
|
|
"iwooos_projection.summary.progress_evidence_rail_redacted_evidence_count",
|
|
iwooos_projection["summary"]["progress_evidence_rail_redacted_evidence_count"],
|
|
0,
|
|
)
|
|
assert_equal(
|
|
"iwooos_projection.summary.progress_evidence_rail_review_acceptance_count",
|
|
iwooos_projection["summary"]["progress_evidence_rail_review_acceptance_count"],
|
|
0,
|
|
)
|
|
assert_equal(
|
|
"iwooos_projection.summary.progress_evidence_rail_github_primary_ready_count",
|
|
iwooos_projection["summary"]["progress_evidence_rail_github_primary_ready_count"],
|
|
0,
|
|
)
|
|
assert_equal(
|
|
"iwooos_projection.summary.progress_evidence_rail_runtime_gate_count",
|
|
iwooos_projection["summary"]["progress_evidence_rail_runtime_gate_count"],
|
|
0,
|
|
)
|
|
assert_true(
|
|
"iwooos_projection.summary.evidence_unlock_queue_first_layer",
|
|
iwooos_projection["summary"]["evidence_unlock_queue_first_layer"],
|
|
)
|
|
assert_equal(
|
|
"iwooos_projection.summary.evidence_unlock_queue_item_count",
|
|
iwooos_projection["summary"]["evidence_unlock_queue_item_count"],
|
|
4,
|
|
)
|
|
assert_equal(
|
|
"iwooos_projection.summary.evidence_unlock_queue_s4_9_request_draft_template_count",
|
|
iwooos_projection["summary"]["evidence_unlock_queue_s4_9_request_draft_template_count"],
|
|
5,
|
|
)
|
|
assert_equal(
|
|
"iwooos_projection.summary.evidence_unlock_queue_s4_9_request_draft_ready_count",
|
|
iwooos_projection["summary"]["evidence_unlock_queue_s4_9_request_draft_ready_count"],
|
|
1,
|
|
)
|
|
assert_equal(
|
|
"iwooos_projection.summary.evidence_unlock_queue_request_sent_count",
|
|
iwooos_projection["summary"]["evidence_unlock_queue_request_sent_count"],
|
|
0,
|
|
)
|
|
assert_equal(
|
|
"iwooos_projection.summary.evidence_unlock_queue_received_count",
|
|
iwooos_projection["summary"]["evidence_unlock_queue_received_count"],
|
|
0,
|
|
)
|
|
assert_equal(
|
|
"iwooos_projection.summary.evidence_unlock_queue_accepted_count",
|
|
iwooos_projection["summary"]["evidence_unlock_queue_accepted_count"],
|
|
0,
|
|
)
|
|
assert_equal(
|
|
"iwooos_projection.summary.evidence_unlock_queue_github_primary_ready_count",
|
|
iwooos_projection["summary"]["evidence_unlock_queue_github_primary_ready_count"],
|
|
0,
|
|
)
|
|
assert_equal(
|
|
"iwooos_projection.summary.evidence_unlock_queue_runtime_gate_count",
|
|
iwooos_projection["summary"]["evidence_unlock_queue_runtime_gate_count"],
|
|
0,
|
|
)
|
|
assert_true(
|
|
"iwooos_projection.summary.s4_9_request_draft_package_first_layer",
|
|
iwooos_projection["summary"]["s4_9_request_draft_package_first_layer"],
|
|
)
|
|
assert_equal(
|
|
"iwooos_projection.summary.s4_9_request_draft_package_card_count",
|
|
iwooos_projection["summary"]["s4_9_request_draft_package_card_count"],
|
|
5,
|
|
)
|
|
assert_equal(
|
|
"iwooos_projection.summary.s4_9_request_draft_package_template_ready_count",
|
|
iwooos_projection["summary"]["s4_9_request_draft_package_template_ready_count"],
|
|
5,
|
|
)
|
|
for count_key in [
|
|
"s4_9_request_draft_package_request_sent_count",
|
|
"s4_9_request_draft_package_owner_response_received_count",
|
|
"s4_9_request_draft_package_owner_response_accepted_count",
|
|
"s4_9_request_draft_package_runtime_gate_count",
|
|
]:
|
|
assert_equal(
|
|
f"iwooos_projection.summary.{count_key}",
|
|
iwooos_projection["summary"][count_key],
|
|
0,
|
|
)
|
|
assert_true(
|
|
"iwooos_projection.summary.s4_9_request_draft_detail_first_layer",
|
|
iwooos_projection["summary"]["s4_9_request_draft_detail_first_layer"],
|
|
)
|
|
assert_equal(
|
|
"iwooos_projection.summary.s4_9_request_draft_detail_row_count",
|
|
iwooos_projection["summary"]["s4_9_request_draft_detail_row_count"],
|
|
5,
|
|
)
|
|
assert_equal(
|
|
"iwooos_projection.summary.s4_9_request_draft_detail_required_field_total",
|
|
iwooos_projection["summary"]["s4_9_request_draft_detail_required_field_total"],
|
|
30,
|
|
)
|
|
assert_equal(
|
|
"iwooos_projection.summary.s4_9_request_draft_detail_forbidden_action_count",
|
|
iwooos_projection["summary"]["s4_9_request_draft_detail_forbidden_action_count"],
|
|
10,
|
|
)
|
|
for count_key in [
|
|
"s4_9_request_draft_detail_request_sent_count",
|
|
"s4_9_request_draft_detail_owner_response_received_count",
|
|
"s4_9_request_draft_detail_owner_response_accepted_count",
|
|
"s4_9_request_draft_detail_runtime_gate_count",
|
|
]:
|
|
assert_equal(
|
|
f"iwooos_projection.summary.{count_key}",
|
|
iwooos_projection["summary"][count_key],
|
|
0,
|
|
)
|
|
assert_true(
|
|
"iwooos_projection.summary.s4_9_owner_response_intake_first_layer",
|
|
iwooos_projection["summary"]["s4_9_owner_response_intake_first_layer"],
|
|
)
|
|
assert_equal(
|
|
"iwooos_projection.summary.s4_9_owner_response_intake_lane_count",
|
|
iwooos_projection["summary"]["s4_9_owner_response_intake_lane_count"],
|
|
5,
|
|
)
|
|
assert_equal(
|
|
"iwooos_projection.summary.s4_9_owner_response_intake_next_gate_count",
|
|
iwooos_projection["summary"]["s4_9_owner_response_intake_next_gate_count"],
|
|
3,
|
|
)
|
|
assert_equal(
|
|
"iwooos_projection.summary.s4_9_owner_response_intake_next_gate_passed_count",
|
|
iwooos_projection["summary"]["s4_9_owner_response_intake_next_gate_passed_count"],
|
|
0,
|
|
)
|
|
assert_equal(
|
|
"iwooos_projection.summary.s4_9_owner_response_intake_blocker_focus_count",
|
|
iwooos_projection["summary"]["s4_9_owner_response_intake_blocker_focus_count"],
|
|
1,
|
|
)
|
|
assert_equal(
|
|
"iwooos_projection.summary.s4_9_owner_response_intake_current_blocker_gate",
|
|
iwooos_projection["summary"]["s4_9_owner_response_intake_current_blocker_gate"],
|
|
"G1",
|
|
)
|
|
assert_equal(
|
|
"iwooos_projection.summary.s4_9_owner_response_intake_next_gate_completion_count",
|
|
iwooos_projection["summary"]["s4_9_owner_response_intake_next_gate_completion_count"],
|
|
0,
|
|
)
|
|
assert_equal(
|
|
"iwooos_projection.summary.s4_9_owner_response_intake_next_gate_total",
|
|
iwooos_projection["summary"]["s4_9_owner_response_intake_next_gate_total"],
|
|
3,
|
|
)
|
|
assert_equal(
|
|
"iwooos_projection.summary.s4_9_owner_response_intake_delivery_card_count",
|
|
iwooos_projection["summary"]["s4_9_owner_response_intake_delivery_card_count"],
|
|
3,
|
|
)
|
|
assert_equal(
|
|
"iwooos_projection.summary.s4_9_owner_response_intake_delivery_card_completed_count",
|
|
iwooos_projection["summary"]["s4_9_owner_response_intake_delivery_card_completed_count"],
|
|
0,
|
|
)
|
|
assert_false(
|
|
"iwooos_projection.summary.s4_9_owner_response_intake_delivery_raw_payload_allowed",
|
|
iwooos_projection["summary"]["s4_9_owner_response_intake_delivery_raw_payload_allowed"],
|
|
)
|
|
for count_key in [
|
|
"s4_9_owner_response_intake_received_count",
|
|
"s4_9_owner_response_intake_preflight_passed_count",
|
|
"s4_9_owner_response_intake_accepted_count",
|
|
"s4_9_owner_response_intake_rejected_count",
|
|
"s4_9_owner_response_intake_runtime_gate_count",
|
|
]:
|
|
assert_equal(
|
|
f"iwooos_projection.summary.{count_key}",
|
|
iwooos_projection["summary"][count_key],
|
|
0,
|
|
)
|
|
assert_true(
|
|
"iwooos_projection.summary.s4_9_owner_response_intake_source_bound",
|
|
iwooos_projection["summary"]["s4_9_owner_response_intake_source_bound"],
|
|
)
|
|
assert_equal(
|
|
"iwooos_projection.summary.s4_9_owner_response_intake_handoff_queue_count",
|
|
iwooos_projection["summary"]["s4_9_owner_response_intake_handoff_queue_count"],
|
|
5,
|
|
)
|
|
for count_key in [
|
|
"s4_9_owner_response_intake_handoff_queue_ready_count",
|
|
"s4_9_owner_response_intake_handoff_queue_received_count",
|
|
"s4_9_owner_response_intake_handoff_queue_accepted_count",
|
|
"s4_9_owner_response_intake_handoff_queue_runtime_gate_count",
|
|
]:
|
|
assert_equal(
|
|
f"iwooos_projection.summary.{count_key}",
|
|
iwooos_projection["summary"][count_key],
|
|
0,
|
|
)
|
|
assert_false(
|
|
"iwooos_projection.summary.s4_9_owner_response_intake_handoff_queue_raw_payload_allowed",
|
|
iwooos_projection["summary"]["s4_9_owner_response_intake_handoff_queue_raw_payload_allowed"],
|
|
)
|
|
assert_false(
|
|
"iwooos_projection.summary.s4_9_owner_response_intake_handoff_queue_action_buttons_allowed",
|
|
iwooos_projection["summary"]["s4_9_owner_response_intake_handoff_queue_action_buttons_allowed"],
|
|
)
|
|
assert_equal(
|
|
"iwooos_projection.summary.s4_9_owner_response_metadata_intake_field_count",
|
|
iwooos_projection["summary"]["s4_9_owner_response_metadata_intake_field_count"],
|
|
6,
|
|
)
|
|
assert_equal(
|
|
"iwooos_projection.summary.s4_9_owner_response_metadata_intake_required_count",
|
|
iwooos_projection["summary"]["s4_9_owner_response_metadata_intake_required_count"],
|
|
6,
|
|
)
|
|
for count_key in [
|
|
"s4_9_owner_response_metadata_intake_filled_count",
|
|
"s4_9_owner_response_metadata_intake_received_count",
|
|
"s4_9_owner_response_metadata_intake_accepted_count",
|
|
"s4_9_owner_response_metadata_intake_runtime_gate_count",
|
|
]:
|
|
assert_equal(
|
|
f"iwooos_projection.summary.{count_key}",
|
|
iwooos_projection["summary"][count_key],
|
|
0,
|
|
)
|
|
assert_true(
|
|
"iwooos_projection.summary.s4_9_owner_response_metadata_intake_redacted_ref_required",
|
|
iwooos_projection["summary"]["s4_9_owner_response_metadata_intake_redacted_ref_required"],
|
|
)
|
|
for false_key in [
|
|
"s4_9_owner_response_metadata_intake_raw_payload_allowed",
|
|
"s4_9_owner_response_metadata_intake_secret_plaintext_allowed",
|
|
"s4_9_owner_response_metadata_intake_action_buttons_allowed",
|
|
]:
|
|
assert_false(
|
|
f"iwooos_projection.summary.{false_key}",
|
|
iwooos_projection["summary"][false_key],
|
|
)
|
|
assert_equal(
|
|
"iwooos_projection.summary.all_product_coverage_snapshot_default_summary_mode",
|
|
iwooos_projection["summary"]["all_product_coverage_snapshot_default_summary_mode"],
|
|
"compact_first",
|
|
)
|
|
assert_true(
|
|
"iwooos_projection.summary.first_progress_unlock_path_first_layer",
|
|
iwooos_projection["summary"]["first_progress_unlock_path_first_layer"],
|
|
)
|
|
assert_false(
|
|
"iwooos_projection.summary.first_progress_unlock_path_default_visible",
|
|
iwooos_projection["summary"]["first_progress_unlock_path_default_visible"],
|
|
)
|
|
assert_true(
|
|
"iwooos_projection.summary.first_progress_unlock_path_above_visual_dashboard",
|
|
iwooos_projection["summary"]["first_progress_unlock_path_above_visual_dashboard"],
|
|
)
|
|
assert_equal(
|
|
"iwooos_projection.summary.first_progress_unlock_path_step_count",
|
|
iwooos_projection["summary"]["first_progress_unlock_path_step_count"],
|
|
5,
|
|
)
|
|
assert_true(
|
|
"iwooos_projection.summary.first_progress_unlock_path_boundary_details_collapsed",
|
|
iwooos_projection["summary"]["first_progress_unlock_path_boundary_details_collapsed"],
|
|
)
|
|
assert_equal(
|
|
"iwooos_projection.summary.first_progress_unlock_path_owner_response_received_count",
|
|
iwooos_projection["summary"]["first_progress_unlock_path_owner_response_received_count"],
|
|
0,
|
|
)
|
|
assert_equal(
|
|
"iwooos_projection.summary.first_progress_unlock_path_owner_response_accepted_count",
|
|
iwooos_projection["summary"]["first_progress_unlock_path_owner_response_accepted_count"],
|
|
0,
|
|
)
|
|
assert_equal(
|
|
"iwooos_projection.summary.first_progress_unlock_path_runtime_gate_count",
|
|
iwooos_projection["summary"]["first_progress_unlock_path_runtime_gate_count"],
|
|
0,
|
|
)
|
|
assert_true(
|
|
"iwooos_projection.summary.command_map_first_layer",
|
|
iwooos_projection["summary"]["command_map_first_layer"],
|
|
)
|
|
assert_false(
|
|
"iwooos_projection.summary.command_map_default_visible",
|
|
iwooos_projection["summary"]["command_map_default_visible"],
|
|
)
|
|
assert_equal(
|
|
"iwooos_projection.summary.command_map_mode_count",
|
|
iwooos_projection["summary"]["command_map_mode_count"],
|
|
6,
|
|
)
|
|
assert_equal(
|
|
"iwooos_projection.summary.command_map_default_mode",
|
|
iwooos_projection["summary"]["command_map_default_mode"],
|
|
"unlock",
|
|
)
|
|
assert_true(
|
|
"iwooos_projection.summary.command_map_above_first_progress_unlock_path",
|
|
iwooos_projection["summary"]["command_map_above_first_progress_unlock_path"],
|
|
)
|
|
assert_true(
|
|
"iwooos_projection.summary.command_map_navigation_controls_allowed",
|
|
iwooos_projection["summary"]["command_map_navigation_controls_allowed"],
|
|
)
|
|
assert_false(
|
|
"iwooos_projection.summary.command_map_execution_action_buttons_allowed",
|
|
iwooos_projection["summary"]["command_map_execution_action_buttons_allowed"],
|
|
)
|
|
assert_equal(
|
|
"iwooos_projection.summary.command_map_runtime_gate_count",
|
|
iwooos_projection["summary"]["command_map_runtime_gate_count"],
|
|
0,
|
|
)
|
|
assert_true(
|
|
"iwooos_projection.summary.focus_deck_first_layer",
|
|
iwooos_projection["summary"]["focus_deck_first_layer"],
|
|
)
|
|
assert_equal(
|
|
"iwooos_projection.summary.focus_deck_item_count",
|
|
iwooos_projection["summary"]["focus_deck_item_count"],
|
|
5,
|
|
)
|
|
assert_true(
|
|
"iwooos_projection.summary.focus_deck_anchor_navigation_allowed",
|
|
iwooos_projection["summary"]["focus_deck_anchor_navigation_allowed"],
|
|
)
|
|
assert_false(
|
|
"iwooos_projection.summary.focus_deck_execution_action_buttons_allowed",
|
|
iwooos_projection["summary"]["focus_deck_execution_action_buttons_allowed"],
|
|
)
|
|
assert_equal(
|
|
"iwooos_projection.summary.focus_deck_runtime_gate_count",
|
|
iwooos_projection["summary"]["focus_deck_runtime_gate_count"],
|
|
0,
|
|
)
|
|
assert_true(
|
|
"iwooos_projection.summary.focus_deck_above_command_map",
|
|
iwooos_projection["summary"]["focus_deck_above_command_map"],
|
|
)
|
|
assert_true(
|
|
"iwooos_projection.summary.immediate_visual_mesh_first_layer",
|
|
iwooos_projection["summary"]["immediate_visual_mesh_first_layer"],
|
|
)
|
|
assert_equal(
|
|
"iwooos_projection.summary.immediate_visual_mesh_node_count",
|
|
iwooos_projection["summary"]["immediate_visual_mesh_node_count"],
|
|
7,
|
|
)
|
|
assert_equal(
|
|
"iwooos_projection.summary.immediate_visual_mesh_link_count",
|
|
iwooos_projection["summary"]["immediate_visual_mesh_link_count"],
|
|
6,
|
|
)
|
|
assert_true(
|
|
"iwooos_projection.summary.immediate_visual_mesh_above_command_map",
|
|
iwooos_projection["summary"]["immediate_visual_mesh_above_command_map"],
|
|
)
|
|
assert_equal(
|
|
"iwooos_projection.summary.immediate_visual_mesh_runtime_gate_count",
|
|
iwooos_projection["summary"]["immediate_visual_mesh_runtime_gate_count"],
|
|
0,
|
|
)
|
|
assert_true(
|
|
"iwooos_projection.summary.topology_atlas_first_layer",
|
|
iwooos_projection["summary"]["topology_atlas_first_layer"],
|
|
)
|
|
assert_equal(
|
|
"iwooos_projection.summary.topology_atlas_lens_count",
|
|
iwooos_projection["summary"]["topology_atlas_lens_count"],
|
|
4,
|
|
)
|
|
assert_equal(
|
|
"iwooos_projection.summary.topology_atlas_node_count",
|
|
iwooos_projection["summary"]["topology_atlas_node_count"],
|
|
7,
|
|
)
|
|
assert_equal(
|
|
"iwooos_projection.summary.topology_drilldown_node_count",
|
|
iwooos_projection["summary"]["topology_drilldown_node_count"],
|
|
7,
|
|
)
|
|
assert_equal(
|
|
"iwooos_projection.summary.topology_drilldown_default_node",
|
|
iwooos_projection["summary"]["topology_drilldown_default_node"],
|
|
"productSurface",
|
|
)
|
|
assert_true(
|
|
"iwooos_projection.summary.topology_drilldown_interactive_node_allowed",
|
|
iwooos_projection["summary"]["topology_drilldown_interactive_node_allowed"],
|
|
)
|
|
assert_equal(
|
|
"iwooos_projection.summary.topology_path_explorer_path_count",
|
|
iwooos_projection["summary"]["topology_path_explorer_path_count"],
|
|
4,
|
|
)
|
|
assert_equal(
|
|
"iwooos_projection.summary.topology_path_explorer_default_path",
|
|
iwooos_projection["summary"]["topology_path_explorer_default_path"],
|
|
"externalToGate",
|
|
)
|
|
assert_true(
|
|
"iwooos_projection.summary.topology_path_explorer_interactive_path_allowed",
|
|
iwooos_projection["summary"]["topology_path_explorer_interactive_path_allowed"],
|
|
)
|
|
assert_equal(
|
|
"iwooos_projection.summary.topology_intelligence_deck_count",
|
|
iwooos_projection["summary"]["topology_intelligence_deck_count"],
|
|
4,
|
|
)
|
|
assert_equal(
|
|
"iwooos_projection.summary.topology_intelligence_default_item",
|
|
iwooos_projection["summary"]["topology_intelligence_default_item"],
|
|
"assetContext",
|
|
)
|
|
assert_true(
|
|
"iwooos_projection.summary.topology_intelligence_interactive_item_allowed",
|
|
iwooos_projection["summary"]["topology_intelligence_interactive_item_allowed"],
|
|
)
|
|
assert_equal(
|
|
"iwooos_projection.summary.topology_atlas_layer_count",
|
|
iwooos_projection["summary"]["topology_atlas_layer_count"],
|
|
5,
|
|
)
|
|
assert_equal(
|
|
"iwooos_projection.summary.topology_atlas_technical_chart_count",
|
|
iwooos_projection["summary"]["topology_atlas_technical_chart_count"],
|
|
3,
|
|
)
|
|
assert_true(
|
|
"iwooos_projection.summary.topology_atlas_interactive_lens_allowed",
|
|
iwooos_projection["summary"]["topology_atlas_interactive_lens_allowed"],
|
|
)
|
|
assert_true(
|
|
"iwooos_projection.summary.topology_atlas_above_gate_radar",
|
|
iwooos_projection["summary"]["topology_atlas_above_gate_radar"],
|
|
)
|
|
assert_equal(
|
|
"iwooos_projection.summary.topology_atlas_runtime_gate_count",
|
|
iwooos_projection["summary"]["topology_atlas_runtime_gate_count"],
|
|
0,
|
|
)
|
|
assert_equal(
|
|
"iwooos_projection.summary.topology_drilldown_runtime_gate_count",
|
|
iwooos_projection["summary"]["topology_drilldown_runtime_gate_count"],
|
|
0,
|
|
)
|
|
assert_equal(
|
|
"iwooos_projection.summary.topology_path_explorer_runtime_gate_count",
|
|
iwooos_projection["summary"]["topology_path_explorer_runtime_gate_count"],
|
|
0,
|
|
)
|
|
assert_equal(
|
|
"iwooos_projection.summary.topology_intelligence_runtime_gate_count",
|
|
iwooos_projection["summary"]["topology_intelligence_runtime_gate_count"],
|
|
0,
|
|
)
|
|
assert_true(
|
|
"iwooos_projection.summary.decision_runway_first_layer",
|
|
iwooos_projection["summary"]["decision_runway_first_layer"],
|
|
)
|
|
assert_false(
|
|
"iwooos_projection.summary.decision_runway_default_visible",
|
|
iwooos_projection["summary"]["decision_runway_default_visible"],
|
|
)
|
|
assert_equal(
|
|
"iwooos_projection.summary.decision_runway_step_count",
|
|
iwooos_projection["summary"]["decision_runway_step_count"],
|
|
5,
|
|
)
|
|
assert_equal(
|
|
"iwooos_projection.summary.decision_runway_default_step",
|
|
iwooos_projection["summary"]["decision_runway_default_step"],
|
|
"ownerEvidence",
|
|
)
|
|
assert_equal(
|
|
"iwooos_projection.summary.decision_runway_dependency_count",
|
|
iwooos_projection["summary"]["decision_runway_dependency_count"],
|
|
7,
|
|
)
|
|
assert_equal(
|
|
"iwooos_projection.summary.decision_runway_boundary_signal_count",
|
|
iwooos_projection["summary"]["decision_runway_boundary_signal_count"],
|
|
4,
|
|
)
|
|
assert_true(
|
|
"iwooos_projection.summary.decision_runway_above_gate_radar",
|
|
iwooos_projection["summary"]["decision_runway_above_gate_radar"],
|
|
)
|
|
assert_true(
|
|
"iwooos_projection.summary.decision_runway_interactive_step_allowed",
|
|
iwooos_projection["summary"]["decision_runway_interactive_step_allowed"],
|
|
)
|
|
assert_equal(
|
|
"iwooos_projection.summary.decision_runway_runtime_gate_count",
|
|
iwooos_projection["summary"]["decision_runway_runtime_gate_count"],
|
|
0,
|
|
)
|
|
assert_equal(
|
|
"iwooos_projection.summary.decision_runway_owner_response_received_count",
|
|
iwooos_projection["summary"]["decision_runway_owner_response_received_count"],
|
|
0,
|
|
)
|
|
assert_equal(
|
|
"iwooos_projection.summary.decision_runway_owner_response_accepted_count",
|
|
iwooos_projection["summary"]["decision_runway_owner_response_accepted_count"],
|
|
0,
|
|
)
|
|
assert_true(
|
|
"iwooos_projection.summary.gate_radar_first_layer",
|
|
iwooos_projection["summary"]["gate_radar_first_layer"],
|
|
)
|
|
assert_false(
|
|
"iwooos_projection.summary.gate_radar_default_visible",
|
|
iwooos_projection["summary"]["gate_radar_default_visible"],
|
|
)
|
|
assert_equal(
|
|
"iwooos_projection.summary.gate_radar_lane_count",
|
|
iwooos_projection["summary"]["gate_radar_lane_count"],
|
|
4,
|
|
)
|
|
assert_equal(
|
|
"iwooos_projection.summary.gate_radar_default_lane",
|
|
iwooos_projection["summary"]["gate_radar_default_lane"],
|
|
"visible",
|
|
)
|
|
assert_true(
|
|
"iwooos_projection.summary.gate_radar_above_command_map",
|
|
iwooos_projection["summary"]["gate_radar_above_command_map"],
|
|
)
|
|
assert_true(
|
|
"iwooos_projection.summary.gate_radar_interactive_lens_allowed",
|
|
iwooos_projection["summary"]["gate_radar_interactive_lens_allowed"],
|
|
)
|
|
assert_equal(
|
|
"iwooos_projection.summary.gate_radar_runtime_gate_count",
|
|
iwooos_projection["summary"]["gate_radar_runtime_gate_count"],
|
|
0,
|
|
)
|
|
assert_true(
|
|
"iwooos_projection.summary.all_product_coverage_snapshot_detail_ledger_collapsed",
|
|
iwooos_projection["summary"]["all_product_coverage_snapshot_detail_ledger_collapsed"],
|
|
)
|
|
assert_true(
|
|
"iwooos_projection.summary.global_security_mesh_matrix_first_layer",
|
|
iwooos_projection["summary"]["global_security_mesh_matrix_first_layer"],
|
|
)
|
|
assert_false(
|
|
"iwooos_projection.summary.global_security_mesh_matrix_default_visible",
|
|
iwooos_projection["summary"]["global_security_mesh_matrix_default_visible"],
|
|
)
|
|
assert_equal(
|
|
"iwooos_projection.summary.global_security_mesh_matrix_asset_count",
|
|
iwooos_projection["summary"]["global_security_mesh_matrix_asset_count"],
|
|
9,
|
|
)
|
|
assert_equal(
|
|
"iwooos_projection.summary.global_security_mesh_matrix_read_only_count",
|
|
iwooos_projection["summary"]["global_security_mesh_matrix_read_only_count"],
|
|
9,
|
|
)
|
|
assert_equal(
|
|
"iwooos_projection.summary.global_security_mesh_matrix_runtime_gate_count",
|
|
iwooos_projection["summary"]["global_security_mesh_matrix_runtime_gate_count"],
|
|
0,
|
|
)
|
|
assert_true(
|
|
"iwooos_projection.summary.host_tool_evidence_chain_first_layer",
|
|
iwooos_projection["summary"]["host_tool_evidence_chain_first_layer"],
|
|
)
|
|
assert_false(
|
|
"iwooos_projection.summary.host_tool_evidence_chain_default_visible",
|
|
iwooos_projection["summary"]["host_tool_evidence_chain_default_visible"],
|
|
)
|
|
assert_equal(
|
|
"iwooos_projection.summary.host_tool_evidence_chain_host_count",
|
|
iwooos_projection["summary"]["host_tool_evidence_chain_host_count"],
|
|
3,
|
|
)
|
|
assert_equal(
|
|
"iwooos_projection.summary.host_tool_evidence_chain_tool_lane_count",
|
|
iwooos_projection["summary"]["host_tool_evidence_chain_tool_lane_count"],
|
|
6,
|
|
)
|
|
assert_equal(
|
|
"iwooos_projection.summary.host_tool_evidence_chain_step_count",
|
|
iwooos_projection["summary"]["host_tool_evidence_chain_step_count"],
|
|
5,
|
|
)
|
|
assert_true(
|
|
"iwooos_projection.summary.vibework_security_onboarding_first_layer",
|
|
iwooos_projection["summary"]["vibework_security_onboarding_first_layer"],
|
|
)
|
|
assert_false(
|
|
"iwooos_projection.summary.vibework_security_onboarding_default_visible",
|
|
iwooos_projection["summary"]["vibework_security_onboarding_default_visible"],
|
|
)
|
|
assert_equal(
|
|
"iwooos_projection.summary.vibework_security_onboarding_item_count",
|
|
iwooos_projection["summary"]["vibework_security_onboarding_item_count"],
|
|
6,
|
|
)
|
|
assert_equal(
|
|
"iwooos_projection.summary.vibework_security_onboarding_runtime_gate_count",
|
|
iwooos_projection["summary"]["vibework_security_onboarding_runtime_gate_count"],
|
|
0,
|
|
)
|
|
assert_true(
|
|
"iwooos_projection.summary.agent_bounty_security_onboarding_first_layer",
|
|
iwooos_projection["summary"]["agent_bounty_security_onboarding_first_layer"],
|
|
)
|
|
assert_false(
|
|
"iwooos_projection.summary.agent_bounty_security_onboarding_default_visible",
|
|
iwooos_projection["summary"]["agent_bounty_security_onboarding_default_visible"],
|
|
)
|
|
assert_equal(
|
|
"iwooos_projection.summary.agent_bounty_security_onboarding_item_count",
|
|
iwooos_projection["summary"]["agent_bounty_security_onboarding_item_count"],
|
|
7,
|
|
)
|
|
assert_equal(
|
|
"iwooos_projection.summary.agent_bounty_security_onboarding_runtime_gate_count",
|
|
iwooos_projection["summary"]["agent_bounty_security_onboarding_runtime_gate_count"],
|
|
0,
|
|
)
|
|
assert_equal(
|
|
"iwooos_projection.summary.rollout_risk_read_only_card_count",
|
|
iwooos_projection["summary"]["rollout_risk_read_only_card_count"],
|
|
4,
|
|
)
|
|
assert_equal(
|
|
"iwooos_projection.summary.rollout_risk_awoooi_rollout_risk",
|
|
iwooos_projection["summary"]["rollout_risk_awoooi_rollout_risk"],
|
|
1,
|
|
)
|
|
assert_equal(
|
|
"iwooos_projection.summary.rollout_risk_runtime_gate_count",
|
|
iwooos_projection["summary"]["rollout_risk_runtime_gate_count"],
|
|
0,
|
|
)
|
|
assert_equal(
|
|
"high_value_config_coverage.schema",
|
|
high_value_config_coverage["schema_version"],
|
|
"high_value_config_control_coverage_v1",
|
|
)
|
|
assert_equal(
|
|
"high_value_config_coverage.summary.category_count",
|
|
high_value_config_coverage["summary"]["category_count"],
|
|
14,
|
|
)
|
|
assert_equal(
|
|
"high_value_config_coverage.summary.c0_category_count",
|
|
high_value_config_coverage["summary"]["c0_category_count"],
|
|
8,
|
|
)
|
|
assert_equal(
|
|
"high_value_config_coverage.summary.c1_category_count",
|
|
high_value_config_coverage["summary"]["c1_category_count"],
|
|
4,
|
|
)
|
|
assert_equal(
|
|
"high_value_config_coverage.summary.average_coverage_percent",
|
|
high_value_config_coverage["summary"]["average_coverage_percent"],
|
|
68,
|
|
)
|
|
assert_equal(
|
|
"high_value_config_coverage.summary.needs_live_evidence_count",
|
|
high_value_config_coverage["summary"]["needs_live_evidence_count"],
|
|
9,
|
|
)
|
|
for key in [
|
|
"owner_response_received_count",
|
|
"owner_response_accepted_count",
|
|
"runtime_gate_count",
|
|
"action_button_count",
|
|
]:
|
|
assert_equal(
|
|
f"high_value_config_coverage.summary.{key}",
|
|
high_value_config_coverage["summary"][key],
|
|
0,
|
|
)
|
|
for key, value in high_value_config_coverage["execution_boundaries"].items():
|
|
assert_false(f"high_value_config_coverage.execution_boundaries.{key}", value)
|
|
assert_equal(
|
|
"high_value_config_coverage.coverage_categories.count",
|
|
len(high_value_config_coverage["coverage_categories"]),
|
|
14,
|
|
)
|
|
assert_contains(
|
|
"high_value_config_coverage.coverage_categories.agent_bounty",
|
|
[item["category_id"] for item in high_value_config_coverage["coverage_categories"]],
|
|
"agent_bounty_protocol_runtime",
|
|
)
|
|
agent_bounty_category = next(
|
|
item
|
|
for item in high_value_config_coverage["coverage_categories"]
|
|
if item["category_id"] == "agent_bounty_protocol_runtime"
|
|
)
|
|
assert_equal(
|
|
"high_value_config_coverage.coverage_categories.agent_bounty.coverage_percent",
|
|
agent_bounty_category["coverage_percent"],
|
|
68,
|
|
)
|
|
assert_equal(
|
|
"high_value_config_coverage.coverage_categories.agent_bounty.coverage_status",
|
|
agent_bounty_category["coverage_status"],
|
|
"owner_request_draft_ready_needs_runtime_owner",
|
|
)
|
|
for evidence_ref in [
|
|
"docs/security/AGENT-BOUNTY-IWOOOS-ONBOARDING-HANDOFF.md",
|
|
"docs/security/agent-bounty-iwooos-onboarding-handoff.snapshot.json",
|
|
"docs/security/AGENT-BOUNTY-OWNER-REQUEST-DRAFT.md",
|
|
"docs/security/agent-bounty-owner-request-draft.snapshot.json",
|
|
]:
|
|
assert_contains(
|
|
"high_value_config_coverage.coverage_categories.agent_bounty.evidence_refs",
|
|
agent_bounty_category["evidence_refs"],
|
|
evidence_ref,
|
|
)
|
|
dns_tls_category = next(
|
|
item
|
|
for item in high_value_config_coverage["coverage_categories"]
|
|
if item["category_id"] == "dns_tls_certbot"
|
|
)
|
|
assert_equal(
|
|
"high_value_config_coverage.coverage_categories.dns_tls.coverage_percent",
|
|
dns_tls_category["coverage_percent"],
|
|
78,
|
|
)
|
|
assert_equal(
|
|
"high_value_config_coverage.coverage_categories.dns_tls.coverage_status",
|
|
dns_tls_category["coverage_status"],
|
|
"owner_response_acceptance_ledger_ready_needs_certificate_owner_evidence",
|
|
)
|
|
for evidence_ref in [
|
|
"docs/security/DOMAIN-TLS-CERTBOT-INVENTORY.md",
|
|
"docs/security/domain-tls-certbot-inventory.snapshot.json",
|
|
"docs/security/DOMAIN-TLS-CERTBOT-OWNER-CONFIRMATION-REQUEST.md",
|
|
"docs/security/domain-tls-certbot-owner-confirmation-request.snapshot.json",
|
|
"docs/security/DOMAIN-TLS-CERTBOT-OWNER-RESPONSE-ACCEPTANCE.md",
|
|
"docs/security/domain-tls-certbot-owner-response-acceptance.snapshot.json",
|
|
]:
|
|
assert_contains(
|
|
"high_value_config_coverage.coverage_categories.dns_tls.evidence_refs",
|
|
dns_tls_category["evidence_refs"],
|
|
evidence_ref,
|
|
)
|
|
assert_equal(
|
|
"agent_bounty_owner_request_draft.schema",
|
|
agent_bounty_owner_request_draft["schema_version"],
|
|
"agent_bounty_owner_request_draft_v1",
|
|
)
|
|
assert_equal(
|
|
"agent_bounty_owner_request_draft.status",
|
|
agent_bounty_owner_request_draft["status"],
|
|
"owner_request_draft_ready_not_dispatched",
|
|
)
|
|
assert_equal(
|
|
"agent_bounty_owner_request_draft.product_name",
|
|
agent_bounty_owner_request_draft["product_name"],
|
|
"agent-bounty-protocol",
|
|
)
|
|
assert_equal(
|
|
"agent_bounty_owner_request_draft.source_handoff_schema_version",
|
|
agent_bounty_owner_request_draft["source_handoff_schema_version"],
|
|
"agent_bounty_iwooos_onboarding_handoff_v1",
|
|
)
|
|
assert_equal(
|
|
"agent_bounty_owner_request_draft.source_handoff_status",
|
|
agent_bounty_owner_request_draft["source_handoff_status"],
|
|
"draft_waiting_owner_review",
|
|
)
|
|
expected_agent_bounty_owner_request_summary = {
|
|
"request_draft_count": 11,
|
|
"control_boundary_request_count": 4,
|
|
"product_surface_request_count": 7,
|
|
"write_capable_request_draft_count": 8,
|
|
"treasury_related_request_draft_count": 4,
|
|
"mcp_a2a_related_request_draft_count": 5,
|
|
"live_evidence_required_request_count": 11,
|
|
"request_field_count": 26,
|
|
"required_owner_field_count": 22,
|
|
"owner_role_field_count": 13,
|
|
"forbidden_input_count": 25,
|
|
"blocked_action_count": 28,
|
|
"request_sent_count": 0,
|
|
"recipient_confirmed_count": 0,
|
|
"owner_response_received_count": 0,
|
|
"owner_response_accepted_count": 0,
|
|
"live_evidence_received_count": 0,
|
|
"repo_refs_truth_accepted_count": 0,
|
|
"data_classification_accepted_count": 0,
|
|
"deployment_boundary_accepted_count": 0,
|
|
"external_agent_boundary_accepted_count": 0,
|
|
"settlement_treasury_accepted_count": 0,
|
|
"auth_abuse_boundary_accepted_count": 0,
|
|
"runtime_gate_count": 0,
|
|
"runtime_execution_authorized_count": 0,
|
|
"production_deploy_authorized_count": 0,
|
|
"repo_creation_authorized_count": 0,
|
|
"refs_sync_authorized_count": 0,
|
|
"workflow_modification_authorized_count": 0,
|
|
"secret_value_collection_allowed_count": 0,
|
|
"env_file_read_authorized_count": 0,
|
|
"active_scan_authorized_count": 0,
|
|
"credentialed_scan_authorized_count": 0,
|
|
"deploy_authorized_count": 0,
|
|
"compose_restart_authorized_count": 0,
|
|
"db_migration_authorized_count": 0,
|
|
"daemon_start_authorized_count": 0,
|
|
"cron_enable_authorized_count": 0,
|
|
"auto_claim_authorized_count": 0,
|
|
"auto_submit_authorized_count": 0,
|
|
"external_agent_message_authorized_count": 0,
|
|
"telegram_send_authorized_count": 0,
|
|
"discord_send_authorized_count": 0,
|
|
"github_comment_authorized_count": 0,
|
|
"payout_authorized_count": 0,
|
|
"withdrawal_authorized_count": 0,
|
|
"staking_action_authorized_count": 0,
|
|
"webhook_secret_change_authorized_count": 0,
|
|
"shared_database_authorized_count": 0,
|
|
"shared_session_authorized_count": 0,
|
|
"shared_rbac_authorized_count": 0,
|
|
"host_write_authorized_count": 0,
|
|
"production_write_authorized_count": 0,
|
|
"action_button_count": 0,
|
|
}
|
|
for key, expected in expected_agent_bounty_owner_request_summary.items():
|
|
assert_equal(
|
|
f"agent_bounty_owner_request_draft.summary.{key}",
|
|
agent_bounty_owner_request_draft["summary"][key],
|
|
expected,
|
|
)
|
|
for key, value in agent_bounty_owner_request_draft["execution_boundaries"].items():
|
|
if key == "not_authorization":
|
|
assert_true(f"agent_bounty_owner_request_draft.execution_boundaries.{key}", value)
|
|
else:
|
|
assert_false(f"agent_bounty_owner_request_draft.execution_boundaries.{key}", value)
|
|
assert_equal(
|
|
"agent_bounty_owner_request_draft.request_drafts.count",
|
|
len(agent_bounty_owner_request_draft["request_drafts"]),
|
|
11,
|
|
)
|
|
agent_bounty_request_ids = [
|
|
item["request_id"] for item in agent_bounty_owner_request_draft["request_drafts"]
|
|
]
|
|
for request_id in [
|
|
"agent_bounty_owner_request:repo_refs_boundary",
|
|
"agent_bounty_owner_request:deployment_boundary",
|
|
"agent_bounty_owner_request:mcp-and-open-task-api",
|
|
"agent_bounty_owner_request:a2a-agent-protocol",
|
|
"agent_bounty_owner_request:automation-and-cron",
|
|
"agent_bounty_owner_request:admin-and-treasury",
|
|
"agent_bounty_owner_request:webhooks-and-traffic",
|
|
]:
|
|
assert_contains(
|
|
"agent_bounty_owner_request_draft.request_drafts",
|
|
agent_bounty_request_ids,
|
|
request_id,
|
|
)
|
|
for draft in agent_bounty_owner_request_draft["request_drafts"]:
|
|
assert_equal(
|
|
f"agent_bounty_owner_request_draft.{draft['request_id']}.required_owner_fields",
|
|
len(draft["required_owner_fields"]),
|
|
22,
|
|
)
|
|
assert_equal(
|
|
f"agent_bounty_owner_request_draft.{draft['request_id']}.forbidden_inputs",
|
|
len(draft["forbidden_inputs"]),
|
|
25,
|
|
)
|
|
assert_equal(
|
|
f"agent_bounty_owner_request_draft.{draft['request_id']}.blocked_actions",
|
|
len(draft["blocked_actions"]),
|
|
28,
|
|
)
|
|
assert_true(
|
|
f"agent_bounty_owner_request_draft.{draft['request_id']}.not_approval",
|
|
draft["not_approval"],
|
|
)
|
|
for false_key in [
|
|
"request_sent",
|
|
"recipient_confirmed",
|
|
"owner_response_received",
|
|
"owner_response_accepted",
|
|
"live_evidence_received",
|
|
"repo_refs_truth_accepted",
|
|
"data_classification_accepted",
|
|
"deployment_boundary_accepted",
|
|
"external_agent_boundary_accepted",
|
|
"settlement_treasury_accepted",
|
|
"auth_abuse_boundary_accepted",
|
|
"runtime_gate",
|
|
"runtime_execution_authorized",
|
|
"production_deploy_authorized",
|
|
"repo_creation_authorized",
|
|
"refs_sync_authorized",
|
|
"workflow_modification_authorized",
|
|
"secret_value_collection_allowed",
|
|
"env_file_read_authorized",
|
|
"active_scan_authorized",
|
|
"credentialed_scan_authorized",
|
|
"deploy_authorized",
|
|
"compose_restart_authorized",
|
|
"db_migration_authorized",
|
|
"daemon_start_authorized",
|
|
"cron_enable_authorized",
|
|
"auto_claim_authorized",
|
|
"auto_submit_authorized",
|
|
"external_agent_message_authorized",
|
|
"telegram_send_authorized",
|
|
"discord_send_authorized",
|
|
"github_comment_authorized",
|
|
"payout_authorized",
|
|
"withdrawal_authorized",
|
|
"staking_action_authorized",
|
|
"webhook_secret_change_authorized",
|
|
"shared_database_authorized",
|
|
"shared_session_authorized",
|
|
"shared_rbac_authorized",
|
|
"host_write_authorized",
|
|
"production_write_authorized",
|
|
"action_buttons_allowed",
|
|
]:
|
|
assert_false(
|
|
f"agent_bounty_owner_request_draft.{draft['request_id']}.{false_key}",
|
|
draft[false_key],
|
|
)
|
|
nginx_gateway_category = next(
|
|
item
|
|
for item in high_value_config_coverage["coverage_categories"]
|
|
if item["category_id"] == "nginx_public_gateway"
|
|
)
|
|
assert_equal(
|
|
"high_value_config_coverage.coverage_categories.nginx.coverage_percent",
|
|
nginx_gateway_category["coverage_percent"],
|
|
88,
|
|
)
|
|
assert_equal(
|
|
"high_value_config_coverage.coverage_categories.nginx.coverage_status",
|
|
nginx_gateway_category["coverage_status"],
|
|
"rendered_diff_acceptance_ledger_ready_needs_owner_live_diff",
|
|
)
|
|
for evidence_ref in [
|
|
"docs/security/PUBLIC-GATEWAY-PREFLIGHT-INVENTORY.md",
|
|
"docs/security/public-gateway-preflight-inventory.snapshot.json",
|
|
"docs/security/PUBLIC-GATEWAY-OWNER-RESPONSE-ACCEPTANCE.md",
|
|
"docs/security/public-gateway-owner-response-acceptance.snapshot.json",
|
|
"docs/security/PUBLIC-GATEWAY-RENDERED-DIFF-ACCEPTANCE.md",
|
|
"docs/security/public-gateway-rendered-diff-acceptance.snapshot.json",
|
|
"docs/schemas/public_gateway_preflight_inventory_v1.schema.json",
|
|
]:
|
|
assert_contains(
|
|
"high_value_config_coverage.coverage_categories.nginx.evidence_refs",
|
|
nginx_gateway_category["evidence_refs"],
|
|
evidence_ref,
|
|
)
|
|
k8s_gitops_category = next(
|
|
item
|
|
for item in high_value_config_coverage["coverage_categories"]
|
|
if item["category_id"] == "k8s_production_gitops"
|
|
)
|
|
assert_equal(
|
|
"high_value_config_coverage.coverage_categories.k8s.coverage_percent",
|
|
k8s_gitops_category["coverage_percent"],
|
|
64,
|
|
)
|
|
assert_equal(
|
|
"high_value_config_coverage.coverage_categories.k8s.coverage_status",
|
|
k8s_gitops_category["coverage_status"],
|
|
"change_evidence_acceptance_ready_needs_gitops_owner_evidence",
|
|
)
|
|
for evidence_ref in [
|
|
"docs/security/HIGH-VALUE-CONFIG-CHANGE-GATE.md",
|
|
"docs/security/K8S-ARGOCD-MANIFEST-INVENTORY.md",
|
|
"docs/security/k8s-argocd-manifest-inventory.snapshot.json",
|
|
"docs/security/K8S-ARGOCD-OWNER-RESPONSE-ACCEPTANCE.md",
|
|
"docs/security/k8s-argocd-owner-response-acceptance.snapshot.json",
|
|
"docs/security/K8S-ARGOCD-CHANGE-EVIDENCE-ACCEPTANCE.md",
|
|
"docs/security/k8s-argocd-change-evidence-acceptance.snapshot.json",
|
|
"k8s/awoooi-prod",
|
|
"k8s/argocd",
|
|
]:
|
|
assert_contains(
|
|
"high_value_config_coverage.coverage_categories.k8s.evidence_refs",
|
|
k8s_gitops_category["evidence_refs"],
|
|
evidence_ref,
|
|
)
|
|
secret_metadata_category = next(
|
|
item
|
|
for item in high_value_config_coverage["coverage_categories"]
|
|
if item["category_id"] == "secret_metadata"
|
|
)
|
|
assert_equal(
|
|
"high_value_config_coverage.coverage_categories.secret_metadata.coverage_percent",
|
|
secret_metadata_category["coverage_percent"],
|
|
68,
|
|
)
|
|
assert_equal(
|
|
"high_value_config_coverage.coverage_categories.secret_metadata.coverage_status",
|
|
secret_metadata_category["coverage_status"],
|
|
"secret_injection_change_evidence_acceptance_ready_needs_owner_evidence",
|
|
)
|
|
for evidence_ref in [
|
|
"docs/security/SOURCE-CONTROL-WORKFLOW-SECRET-NAME-INVENTORY.md",
|
|
"docs/security/source-control-workflow-secret-name-inventory.snapshot.json",
|
|
"docs/security/SOURCE-CONTROL-WORKFLOW-SECRET-NAME-OWNER-RESPONSE.md",
|
|
"docs/security/source-control-workflow-secret-name-owner-response.snapshot.json",
|
|
"docs/security/CD-RUNNER-SECRET-INJECTION-CHANGE-EVIDENCE-ACCEPTANCE.md",
|
|
"docs/security/cd-runner-secret-injection-change-evidence-acceptance.snapshot.json",
|
|
"docs/security/SECRETS_REFERENCE.md",
|
|
]:
|
|
assert_contains(
|
|
"high_value_config_coverage.coverage_categories.secret_metadata.evidence_refs",
|
|
secret_metadata_category["evidence_refs"],
|
|
evidence_ref,
|
|
)
|
|
workflow_runner_category = next(
|
|
item
|
|
for item in high_value_config_coverage["coverage_categories"]
|
|
if item["category_id"] == "gitea_workflow_runner_source_control"
|
|
)
|
|
assert_equal(
|
|
"high_value_config_coverage.coverage_categories.workflow_runner.coverage_percent",
|
|
workflow_runner_category["coverage_percent"],
|
|
72,
|
|
)
|
|
assert_equal(
|
|
"high_value_config_coverage.coverage_categories.workflow_runner.coverage_status",
|
|
workflow_runner_category["coverage_status"],
|
|
"cd_runner_secret_injection_change_evidence_acceptance_ready_needs_owner_evidence",
|
|
)
|
|
for evidence_ref in [
|
|
"docs/security/SOURCE-CONTROL-WORKFLOW-SECRET-NAME-INVENTORY.md",
|
|
"docs/security/SOURCE-CONTROL-WORKFLOW-SECRET-NAME-OWNER-RESPONSE.md",
|
|
"docs/security/CD-RUNNER-SECRET-INJECTION-CHANGE-EVIDENCE-ACCEPTANCE.md",
|
|
"docs/security/cd-runner-secret-injection-change-evidence-acceptance.snapshot.json",
|
|
"docs/security/SOURCE-CONTROL-PRIMARY-READINESS-GATE.md",
|
|
]:
|
|
assert_contains(
|
|
"high_value_config_coverage.coverage_categories.workflow_runner.evidence_refs",
|
|
workflow_runner_category["evidence_refs"],
|
|
evidence_ref,
|
|
)
|
|
public_runtime_config_category = next(
|
|
item
|
|
for item in high_value_config_coverage["coverage_categories"]
|
|
if item["category_id"] == "public_admin_api_runtime_config"
|
|
)
|
|
assert_equal(
|
|
"high_value_config_coverage.coverage_categories.public_runtime_config.coverage_percent",
|
|
public_runtime_config_category["coverage_percent"],
|
|
64,
|
|
)
|
|
assert_equal(
|
|
"high_value_config_coverage.coverage_categories.public_runtime_config.coverage_status",
|
|
public_runtime_config_category["coverage_status"],
|
|
"change_evidence_acceptance_ready_needs_runtime_config_owner_evidence",
|
|
)
|
|
for evidence_ref in [
|
|
"docs/HARD_RULES.md",
|
|
"docs/security/IWOOOS-CONFIG-CONTROL-INVENTORY.md",
|
|
"docs/security/PUBLIC-RUNTIME-CONFIG-CHANGE-EVIDENCE-ACCEPTANCE.md",
|
|
"docs/security/public-runtime-config-change-evidence-acceptance.snapshot.json",
|
|
]:
|
|
assert_contains(
|
|
"high_value_config_coverage.coverage_categories.public_runtime_config.evidence_refs",
|
|
public_runtime_config_category["evidence_refs"],
|
|
evidence_ref,
|
|
)
|
|
assert_contains(
|
|
"high_value_config_coverage.lowest_coverage_categories.docker",
|
|
[item["category_id"] for item in high_value_config_coverage["lowest_coverage_categories"]],
|
|
"docker_compose_systemd_host_config",
|
|
)
|
|
docker_systemd_category = next(
|
|
item
|
|
for item in high_value_config_coverage["coverage_categories"]
|
|
if item["category_id"] == "docker_compose_systemd_host_config"
|
|
)
|
|
assert_equal(
|
|
"high_value_config_coverage.coverage_categories.docker.coverage_percent",
|
|
docker_systemd_category["coverage_percent"],
|
|
54,
|
|
)
|
|
assert_equal(
|
|
"high_value_config_coverage.coverage_categories.docker.coverage_status",
|
|
docker_systemd_category["coverage_status"],
|
|
"owner_response_acceptance_ledger_ready_needs_live_owner_evidence",
|
|
)
|
|
for evidence_ref in [
|
|
"docs/security/HOST-SERVICE-CONFIG-INVENTORY.md",
|
|
"docs/security/host-service-config-inventory.snapshot.json",
|
|
"docs/security/HOST-SERVICE-OWNER-REQUEST-DRAFT.md",
|
|
"docs/security/host-service-owner-request-draft.snapshot.json",
|
|
"docs/security/HOST-SERVICE-OWNER-RESPONSE-ACCEPTANCE.md",
|
|
"docs/security/host-service-owner-response-acceptance.snapshot.json",
|
|
]:
|
|
assert_contains(
|
|
"high_value_config_coverage.coverage_categories.docker.evidence_refs",
|
|
docker_systemd_category["evidence_refs"],
|
|
evidence_ref,
|
|
)
|
|
ssh_network_category = next(
|
|
item
|
|
for item in high_value_config_coverage["coverage_categories"]
|
|
if item["category_id"] == "ssh_firewall_network_access"
|
|
)
|
|
assert_equal(
|
|
"high_value_config_coverage.coverage_categories.ssh_network.coverage_percent",
|
|
ssh_network_category["coverage_percent"],
|
|
60,
|
|
)
|
|
assert_equal(
|
|
"high_value_config_coverage.coverage_categories.ssh_network.coverage_status",
|
|
ssh_network_category["coverage_status"],
|
|
"change_evidence_acceptance_ready_needs_network_owner_evidence",
|
|
)
|
|
for evidence_ref in [
|
|
"docs/security/SSH-NETWORK-ACCESS-INVENTORY.md",
|
|
"docs/security/ssh-network-access-inventory.snapshot.json",
|
|
"docs/security/SSH-NETWORK-OWNER-RESPONSE-ACCEPTANCE.md",
|
|
"docs/security/ssh-network-owner-response-acceptance.snapshot.json",
|
|
"docs/security/PORT-FIREWALL-CHANGE-EVIDENCE-ACCEPTANCE.md",
|
|
"docs/security/port-firewall-change-evidence-acceptance.snapshot.json",
|
|
]:
|
|
assert_contains(
|
|
"high_value_config_coverage.coverage_categories.ssh_network.evidence_refs",
|
|
ssh_network_category["evidence_refs"],
|
|
evidence_ref,
|
|
)
|
|
backup_restore_category = next(
|
|
item
|
|
for item in high_value_config_coverage["coverage_categories"]
|
|
if item["category_id"] == "backup_restore_credential"
|
|
)
|
|
assert_equal(
|
|
"high_value_config_coverage.coverage_categories.backup_restore.coverage_percent",
|
|
backup_restore_category["coverage_percent"],
|
|
62,
|
|
)
|
|
assert_equal(
|
|
"high_value_config_coverage.coverage_categories.backup_restore.coverage_status",
|
|
backup_restore_category["coverage_status"],
|
|
"owner_response_acceptance_ledger_ready_needs_restore_drill_owner",
|
|
)
|
|
for evidence_ref in [
|
|
"docs/security/BACKUP-RESTORE-ESCROW-INVENTORY.md",
|
|
"docs/security/backup-restore-escrow-inventory.snapshot.json",
|
|
"docs/security/BACKUP-RESTORE-OWNER-RESPONSE-ACCEPTANCE.md",
|
|
"docs/security/backup-restore-owner-response-acceptance.snapshot.json",
|
|
"docs/schemas/backup_restore_escrow_inventory_v1.schema.json",
|
|
]:
|
|
assert_contains(
|
|
"high_value_config_coverage.coverage_categories.backup_restore.evidence_refs",
|
|
backup_restore_category["evidence_refs"],
|
|
evidence_ref,
|
|
)
|
|
monitoring_category = next(
|
|
item
|
|
for item in high_value_config_coverage["coverage_categories"]
|
|
if item["category_id"] == "monitoring_alerting_observability"
|
|
)
|
|
assert_equal(
|
|
"high_value_config_coverage.coverage_categories.monitoring.coverage_percent",
|
|
monitoring_category["coverage_percent"],
|
|
62,
|
|
)
|
|
assert_equal(
|
|
"high_value_config_coverage.coverage_categories.monitoring.coverage_status",
|
|
monitoring_category["coverage_status"],
|
|
"repo_only_inventory_ready_needs_live_route_evidence",
|
|
)
|
|
for evidence_ref in [
|
|
"docs/security/MONITORING-ALERTING-OBSERVABILITY-INVENTORY.md",
|
|
"docs/security/monitoring-alerting-observability-inventory.snapshot.json",
|
|
"docs/schemas/monitoring_alerting_observability_inventory_v1.schema.json",
|
|
]:
|
|
assert_contains(
|
|
"high_value_config_coverage.coverage_categories.monitoring.evidence_refs",
|
|
monitoring_category["evidence_refs"],
|
|
evidence_ref,
|
|
)
|
|
assert_equal(
|
|
"host_service_config_inventory.schema",
|
|
host_service_config_inventory["schema_version"],
|
|
"host_service_config_inventory_v1",
|
|
)
|
|
assert_equal(
|
|
"host_service_config_inventory.status",
|
|
host_service_config_inventory["status"],
|
|
"repo_only_inventory_ready",
|
|
)
|
|
assert_equal(
|
|
"host_service_config_inventory.source_scope",
|
|
host_service_config_inventory["source_scope"],
|
|
"committed_repo_files_only",
|
|
)
|
|
expected_host_service_config_summary = {
|
|
"surface_count": 9,
|
|
"source_exists_count": 9,
|
|
"expected_host_scope_count": 5,
|
|
"docker_compose_source_count": 5,
|
|
"host_repair_whitelist_count": 2,
|
|
"systemd_restart_surface_count": 1,
|
|
"write_capable_surface_count": 3,
|
|
"surfaces_requiring_owner_response_count": 9,
|
|
"surfaces_requiring_live_evidence_count": 8,
|
|
"owner_response_received_count": 0,
|
|
"owner_response_accepted_count": 0,
|
|
"live_evidence_received_count": 0,
|
|
"restart_window_accepted_count": 0,
|
|
"rollback_owner_accepted_count": 0,
|
|
"runtime_gate_count": 0,
|
|
"action_button_count": 0,
|
|
"coverage_percent_before_inventory": 42,
|
|
"coverage_percent_after_inventory": 50,
|
|
}
|
|
for key, expected in expected_host_service_config_summary.items():
|
|
assert_equal(
|
|
f"host_service_config_inventory.summary.{key}",
|
|
host_service_config_inventory["summary"][key],
|
|
expected,
|
|
)
|
|
for key, value in host_service_config_inventory["execution_boundaries"].items():
|
|
assert_false(f"host_service_config_inventory.execution_boundaries.{key}", value)
|
|
assert_equal(
|
|
"host_service_config_inventory.config_surfaces.count",
|
|
len(host_service_config_inventory["config_surfaces"]),
|
|
9,
|
|
)
|
|
host_service_surface_ids = [item["surface_id"] for item in host_service_config_inventory["config_surfaces"]]
|
|
for surface_id in [
|
|
"repair_bot_110_whitelist",
|
|
"repair_bot_188_whitelist",
|
|
"monitoring_110_compose",
|
|
"config_backup_host_capture",
|
|
]:
|
|
assert_contains(
|
|
"host_service_config_inventory.config_surfaces",
|
|
host_service_surface_ids,
|
|
surface_id,
|
|
)
|
|
for surface in host_service_config_inventory["config_surfaces"]:
|
|
assert_true(
|
|
f"host_service_config_inventory.config_surfaces.{surface['surface_id']}.source_exists",
|
|
surface["source_exists"],
|
|
)
|
|
assert_equal(
|
|
f"host_service_config_inventory.config_surfaces.{surface['surface_id']}.sha256_length",
|
|
len(surface["sha256"]),
|
|
64,
|
|
)
|
|
assert_true(
|
|
f"host_service_config_inventory.config_surfaces.{surface['surface_id']}.requires_owner_response",
|
|
surface["requires_owner_response"],
|
|
)
|
|
for key in [
|
|
"owner_response_received",
|
|
"owner_response_accepted",
|
|
"live_evidence_received",
|
|
"restart_window_accepted",
|
|
"rollback_owner_accepted",
|
|
"runtime_gate_open",
|
|
"action_buttons_allowed",
|
|
]:
|
|
assert_false(
|
|
f"host_service_config_inventory.config_surfaces.{surface['surface_id']}.{key}",
|
|
surface[key],
|
|
)
|
|
assert_equal(
|
|
"host_service_config_inventory.write_capable_surfaces.count",
|
|
len(host_service_config_inventory["write_capable_surfaces"]),
|
|
3,
|
|
)
|
|
for surface_id in [
|
|
"ansible_docker_compose_service_role",
|
|
"repair_bot_110_whitelist",
|
|
"repair_bot_188_whitelist",
|
|
]:
|
|
assert_contains(
|
|
"host_service_config_inventory.write_capable_surfaces",
|
|
[item["surface_id"] for item in host_service_config_inventory["write_capable_surfaces"]],
|
|
surface_id,
|
|
)
|
|
assert_equal(
|
|
"host_service_owner_request_draft.schema",
|
|
host_service_owner_request_draft["schema_version"],
|
|
"host_service_owner_request_draft_v1",
|
|
)
|
|
assert_equal(
|
|
"host_service_owner_request_draft.status",
|
|
host_service_owner_request_draft["status"],
|
|
"owner_request_draft_ready_not_dispatched",
|
|
)
|
|
assert_equal(
|
|
"host_service_owner_request_draft.source_inventory_schema_version",
|
|
host_service_owner_request_draft["source_inventory_schema_version"],
|
|
"host_service_config_inventory_v1",
|
|
)
|
|
expected_host_service_owner_request_summary = {
|
|
"request_draft_count": 9,
|
|
"write_capable_request_draft_count": 3,
|
|
"live_evidence_required_request_count": 8,
|
|
"request_field_count": 22,
|
|
"required_owner_field_count": 12,
|
|
"blocked_action_count": 14,
|
|
"request_sent_count": 0,
|
|
"recipient_confirmed_count": 0,
|
|
"owner_response_received_count": 0,
|
|
"owner_response_accepted_count": 0,
|
|
"live_evidence_received_count": 0,
|
|
"restart_window_accepted_count": 0,
|
|
"rollback_owner_accepted_count": 0,
|
|
"post_check_plan_accepted_count": 0,
|
|
"host_write_authorized_count": 0,
|
|
"ssh_read_authorized_count": 0,
|
|
"ssh_write_authorized_count": 0,
|
|
"docker_compose_action_authorized_count": 0,
|
|
"systemctl_action_authorized_count": 0,
|
|
"repair_bot_execution_authorized_count": 0,
|
|
"ansible_apply_authorized_count": 0,
|
|
"secret_value_collection_allowed_count": 0,
|
|
"active_scan_authorized_count": 0,
|
|
"runtime_gate_count": 0,
|
|
"action_button_count": 0,
|
|
}
|
|
for key, expected in expected_host_service_owner_request_summary.items():
|
|
assert_equal(
|
|
f"host_service_owner_request_draft.summary.{key}",
|
|
host_service_owner_request_draft["summary"][key],
|
|
expected,
|
|
)
|
|
for key, value in host_service_owner_request_draft["execution_boundaries"].items():
|
|
if key == "not_authorization":
|
|
assert_true(f"host_service_owner_request_draft.execution_boundaries.{key}", value)
|
|
else:
|
|
assert_false(f"host_service_owner_request_draft.execution_boundaries.{key}", value)
|
|
assert_equal(
|
|
"host_service_owner_request_draft.request_drafts.count",
|
|
len(host_service_owner_request_draft["request_drafts"]),
|
|
9,
|
|
)
|
|
host_service_owner_request_ids = [
|
|
item["request_id"] for item in host_service_owner_request_draft["request_drafts"]
|
|
]
|
|
for request_id in [
|
|
"host_service_owner_request:repair_bot_110_whitelist",
|
|
"host_service_owner_request:repair_bot_188_whitelist",
|
|
"host_service_owner_request:ansible_docker_compose_service_role",
|
|
"host_service_owner_request:config_backup_host_capture",
|
|
]:
|
|
assert_contains(
|
|
"host_service_owner_request_draft.request_drafts",
|
|
host_service_owner_request_ids,
|
|
request_id,
|
|
)
|
|
for draft in host_service_owner_request_draft["request_drafts"]:
|
|
assert_equal(
|
|
f"host_service_owner_request_draft.{draft['request_id']}.required_owner_fields",
|
|
len(draft["required_owner_fields"]),
|
|
12,
|
|
)
|
|
assert_equal(
|
|
f"host_service_owner_request_draft.{draft['request_id']}.blocked_actions",
|
|
len(draft["blocked_actions"]),
|
|
14,
|
|
)
|
|
for false_key in [
|
|
"request_sent",
|
|
"recipient_confirmed",
|
|
"owner_response_received",
|
|
"owner_response_accepted",
|
|
"live_evidence_received",
|
|
"restart_window_accepted",
|
|
"rollback_owner_accepted",
|
|
"post_check_plan_accepted",
|
|
"host_write_authorized",
|
|
"ssh_read_authorized",
|
|
"ssh_write_authorized",
|
|
"docker_compose_action_authorized",
|
|
"systemctl_action_authorized",
|
|
"repair_bot_execution_authorized",
|
|
"ansible_apply_authorized",
|
|
"secret_value_collection_allowed",
|
|
"active_scan_authorized",
|
|
"runtime_gate",
|
|
"action_buttons_allowed",
|
|
]:
|
|
assert_false(
|
|
f"host_service_owner_request_draft.{draft['request_id']}.{false_key}",
|
|
draft[false_key],
|
|
)
|
|
assert_equal(
|
|
"host_service_owner_response_acceptance.schema",
|
|
host_service_owner_response_acceptance["schema_version"],
|
|
"host_service_owner_response_acceptance_v1",
|
|
)
|
|
assert_equal(
|
|
"host_service_owner_response_acceptance.status",
|
|
host_service_owner_response_acceptance["status"],
|
|
"owner_response_acceptance_ledger_ready_no_runtime_action",
|
|
)
|
|
assert_equal(
|
|
"host_service_owner_response_acceptance.source_inventory_schema_version",
|
|
host_service_owner_response_acceptance["source_inventory_schema_version"],
|
|
"host_service_config_inventory_v1",
|
|
)
|
|
assert_equal(
|
|
"host_service_owner_response_acceptance.source_owner_request_schema_version",
|
|
host_service_owner_response_acceptance["source_owner_request_schema_version"],
|
|
"host_service_owner_request_draft_v1",
|
|
)
|
|
expected_host_service_owner_response_acceptance_summary = {
|
|
"source_owner_request_count": 9,
|
|
"acceptance_candidate_count": 9,
|
|
"write_capable_acceptance_candidate_count": 3,
|
|
"live_evidence_required_candidate_count": 8,
|
|
"acceptance_field_count": 28,
|
|
"required_owner_field_count": 12,
|
|
"reviewer_check_count": 14,
|
|
"outcome_lane_count": 7,
|
|
"blocked_action_count": 20,
|
|
"request_sent_count": 0,
|
|
"recipient_confirmed_count": 0,
|
|
"owner_response_received_count": 0,
|
|
"owner_response_accepted_count": 0,
|
|
"owner_response_rejected_count": 0,
|
|
"owner_response_quarantined_count": 0,
|
|
"supplement_requested_count": 0,
|
|
"live_evidence_received_count": 0,
|
|
"live_config_hash_accepted_count": 0,
|
|
"maintenance_window_accepted_count": 0,
|
|
"restart_window_accepted_count": 0,
|
|
"rollback_owner_accepted_count": 0,
|
|
"post_check_plan_accepted_count": 0,
|
|
"disable_switch_accepted_count": 0,
|
|
"host_write_authorized_count": 0,
|
|
"ssh_read_authorized_count": 0,
|
|
"ssh_write_authorized_count": 0,
|
|
"docker_compose_action_authorized_count": 0,
|
|
"systemctl_action_authorized_count": 0,
|
|
"repair_bot_execution_authorized_count": 0,
|
|
"ansible_apply_authorized_count": 0,
|
|
"sudo_action_authorized_count": 0,
|
|
"secret_value_collection_allowed_count": 0,
|
|
"active_scan_authorized_count": 0,
|
|
"live_host_read_authorized_count": 0,
|
|
"runtime_gate_count": 0,
|
|
"action_button_count": 0,
|
|
}
|
|
for key, expected in expected_host_service_owner_response_acceptance_summary.items():
|
|
assert_equal(
|
|
f"host_service_owner_response_acceptance.summary.{key}",
|
|
host_service_owner_response_acceptance["summary"][key],
|
|
expected,
|
|
)
|
|
for key, value in host_service_owner_response_acceptance["execution_boundaries"].items():
|
|
if key == "not_authorization":
|
|
assert_true(f"host_service_owner_response_acceptance.execution_boundaries.{key}", value)
|
|
else:
|
|
assert_false(f"host_service_owner_response_acceptance.execution_boundaries.{key}", value)
|
|
assert_equal(
|
|
"host_service_owner_response_acceptance.acceptance_candidates.count",
|
|
len(host_service_owner_response_acceptance["acceptance_candidates"]),
|
|
9,
|
|
)
|
|
expected_host_service_acceptance_ids = [
|
|
"host_service_owner_response_acceptance:local_dev_compose",
|
|
"host_service_owner_response_acceptance:monitoring_110_compose",
|
|
"host_service_owner_response_acceptance:monitoring_exporters_188_compose",
|
|
"host_service_owner_response_acceptance:sentry_110_reference_compose",
|
|
"host_service_owner_response_acceptance:langfuse_110_compose",
|
|
"host_service_owner_response_acceptance:ansible_docker_compose_service_role",
|
|
"host_service_owner_response_acceptance:repair_bot_110_whitelist",
|
|
"host_service_owner_response_acceptance:repair_bot_188_whitelist",
|
|
"host_service_owner_response_acceptance:config_backup_host_capture",
|
|
]
|
|
assert_equal(
|
|
"host_service_owner_response_acceptance.acceptance_candidates",
|
|
[item["acceptance_candidate_id"] for item in host_service_owner_response_acceptance["acceptance_candidates"]],
|
|
expected_host_service_acceptance_ids,
|
|
)
|
|
expected_host_service_checks = [
|
|
"owner_identity_present",
|
|
"decision_reason_present",
|
|
"affected_scope_matches_surface",
|
|
"redacted_refs_only",
|
|
"secret_value_absent",
|
|
"live_config_hash_metadata_only",
|
|
"maintenance_window_present",
|
|
"restart_window_separate_from_action",
|
|
"rollback_owner_present",
|
|
"post_check_plan_present",
|
|
"disable_switch_present",
|
|
"write_capable_requires_extra_review",
|
|
"no_runtime_request",
|
|
"counts_transition_safe",
|
|
]
|
|
assert_equal(
|
|
"host_service_owner_response_acceptance.reviewer_checks",
|
|
[item["check_id"] for item in host_service_owner_response_acceptance["reviewer_checks"]],
|
|
expected_host_service_checks,
|
|
)
|
|
expected_host_service_lanes = [
|
|
"waiting_owner_response",
|
|
"quarantine_secret_or_raw_payload",
|
|
"reject_execution_request",
|
|
"request_supplement",
|
|
"ready_for_host_service_review",
|
|
"owner_review_only_update",
|
|
"waiting_runtime_gate",
|
|
]
|
|
assert_equal(
|
|
"host_service_owner_response_acceptance.outcome_lanes",
|
|
[item["lane_id"] for item in host_service_owner_response_acceptance["outcome_lanes"]],
|
|
expected_host_service_lanes,
|
|
)
|
|
expected_host_service_blocked_actions = [
|
|
"ssh_read",
|
|
"ssh_write",
|
|
"docker_compose_up",
|
|
"docker_compose_down",
|
|
"docker_compose_pull",
|
|
"systemctl_restart",
|
|
"systemctl_reload",
|
|
"repair_bot_execute",
|
|
"ansible_apply",
|
|
"sudo_action",
|
|
"host_file_write",
|
|
"firewall_change",
|
|
"secret_value_collection",
|
|
"active_scan",
|
|
"live_host_read",
|
|
"raw_live_config_storage",
|
|
"restart_without_window",
|
|
"rollback_without_owner",
|
|
"runtime_gate_open",
|
|
"add_action_button",
|
|
]
|
|
assert_equal(
|
|
"host_service_owner_response_acceptance.blocked_actions",
|
|
host_service_owner_response_acceptance["blocked_actions"],
|
|
expected_host_service_blocked_actions,
|
|
)
|
|
for item in host_service_owner_response_acceptance["acceptance_candidates"]:
|
|
assert_equal(
|
|
f"host_service_owner_response_acceptance.{item['acceptance_candidate_id']}.acceptance_fields",
|
|
len(item["acceptance_fields"]),
|
|
28,
|
|
)
|
|
assert_equal(
|
|
f"host_service_owner_response_acceptance.{item['acceptance_candidate_id']}.required_owner_fields",
|
|
len(item["required_owner_fields"]),
|
|
12,
|
|
)
|
|
assert_equal(
|
|
f"host_service_owner_response_acceptance.{item['acceptance_candidate_id']}.reviewer_checks",
|
|
len(item["reviewer_checks"]),
|
|
14,
|
|
)
|
|
assert_equal(
|
|
f"host_service_owner_response_acceptance.{item['acceptance_candidate_id']}.outcome_lanes",
|
|
len(item["outcome_lanes"]),
|
|
7,
|
|
)
|
|
assert_equal(
|
|
f"host_service_owner_response_acceptance.{item['acceptance_candidate_id']}.blocked_actions",
|
|
len(item["blocked_actions"]),
|
|
20,
|
|
)
|
|
assert_true(
|
|
f"host_service_owner_response_acceptance.{item['acceptance_candidate_id']}.not_approval",
|
|
item["not_approval"],
|
|
)
|
|
for false_key in [
|
|
"request_sent",
|
|
"recipient_confirmed",
|
|
"owner_response_received",
|
|
"owner_response_accepted",
|
|
"owner_response_rejected",
|
|
"owner_response_quarantined",
|
|
"supplement_requested",
|
|
"live_evidence_received",
|
|
"live_config_hash_accepted",
|
|
"maintenance_window_accepted",
|
|
"restart_window_accepted",
|
|
"rollback_owner_accepted",
|
|
"post_check_plan_accepted",
|
|
"disable_switch_accepted",
|
|
"host_write_authorized",
|
|
"ssh_read_authorized",
|
|
"ssh_write_authorized",
|
|
"docker_compose_action_authorized",
|
|
"systemctl_action_authorized",
|
|
"repair_bot_execution_authorized",
|
|
"ansible_apply_authorized",
|
|
"sudo_action_authorized",
|
|
"secret_value_collection_allowed",
|
|
"active_scan_authorized",
|
|
"live_host_read_authorized",
|
|
"runtime_gate",
|
|
"action_buttons_allowed",
|
|
]:
|
|
assert_false(
|
|
f"host_service_owner_response_acceptance.{item['acceptance_candidate_id']}.{false_key}",
|
|
item[false_key],
|
|
)
|
|
assert_equal(
|
|
"ssh_network_access_inventory.schema",
|
|
ssh_network_access_inventory["schema_version"],
|
|
"ssh_network_access_inventory_v1",
|
|
)
|
|
assert_equal(
|
|
"ssh_network_access_inventory.status",
|
|
ssh_network_access_inventory["status"],
|
|
"repo_only_inventory_ready",
|
|
)
|
|
assert_equal(
|
|
"ssh_network_access_inventory.source_scope",
|
|
ssh_network_access_inventory["source_scope"],
|
|
"committed_repo_files_only",
|
|
)
|
|
expected_ssh_network_access_summary = {
|
|
"surface_count": 16,
|
|
"source_exists_count": 16,
|
|
"expected_scope_count": 16,
|
|
"ssh_source_surface_count": 11,
|
|
"network_policy_surface_count": 2,
|
|
"nodeport_surface_count": 2,
|
|
"sudoers_surface_count": 1,
|
|
"wireguard_surface_count": 1,
|
|
"write_capable_surface_count": 6,
|
|
"surfaces_requiring_owner_response_count": 16,
|
|
"surfaces_requiring_live_evidence_count": 16,
|
|
"owner_response_received_count": 0,
|
|
"owner_response_accepted_count": 0,
|
|
"live_evidence_received_count": 0,
|
|
"maintenance_window_accepted_count": 0,
|
|
"rollback_owner_accepted_count": 0,
|
|
"runtime_gate_count": 0,
|
|
"action_button_count": 0,
|
|
"coverage_percent_before_inventory": 48,
|
|
"coverage_percent_after_inventory": 54,
|
|
}
|
|
for key, expected in expected_ssh_network_access_summary.items():
|
|
assert_equal(
|
|
f"ssh_network_access_inventory.summary.{key}",
|
|
ssh_network_access_inventory["summary"][key],
|
|
expected,
|
|
)
|
|
for key, value in ssh_network_access_inventory["execution_boundaries"].items():
|
|
assert_false(f"ssh_network_access_inventory.execution_boundaries.{key}", value)
|
|
assert_equal(
|
|
"ssh_network_access_inventory.access_surfaces.count",
|
|
len(ssh_network_access_inventory["access_surfaces"]),
|
|
16,
|
|
)
|
|
ssh_network_surface_ids = [item["surface_id"] for item in ssh_network_access_inventory["access_surfaces"]]
|
|
for surface_id in [
|
|
"ansible_inventory_ssh_targets",
|
|
"gitea_cd_known_hosts_secret",
|
|
"host_ops_sudoers_wrapper",
|
|
"k8s_prod_network_policy",
|
|
"argocd_metrics_nodeport",
|
|
"velero_metrics_nodeport",
|
|
"wireguard_mesh_runbook",
|
|
"alert_rules_ssh_actions",
|
|
]:
|
|
assert_contains(
|
|
"ssh_network_access_inventory.access_surfaces",
|
|
ssh_network_surface_ids,
|
|
surface_id,
|
|
)
|
|
for surface in ssh_network_access_inventory["access_surfaces"]:
|
|
assert_true(
|
|
f"ssh_network_access_inventory.access_surfaces.{surface['surface_id']}.source_exists",
|
|
surface["source_exists"],
|
|
)
|
|
assert_equal(
|
|
f"ssh_network_access_inventory.access_surfaces.{surface['surface_id']}.sha256_length",
|
|
len(surface["sha256"]),
|
|
64,
|
|
)
|
|
assert_true(
|
|
f"ssh_network_access_inventory.access_surfaces.{surface['surface_id']}.requires_live_evidence",
|
|
surface["requires_live_evidence"],
|
|
)
|
|
assert_true(
|
|
f"ssh_network_access_inventory.access_surfaces.{surface['surface_id']}.requires_owner_response",
|
|
surface["requires_owner_response"],
|
|
)
|
|
for key in [
|
|
"owner_response_received",
|
|
"owner_response_accepted",
|
|
"live_evidence_received",
|
|
"maintenance_window_accepted",
|
|
"rollback_owner_accepted",
|
|
"runtime_gate_open",
|
|
"action_buttons_allowed",
|
|
]:
|
|
assert_false(
|
|
f"ssh_network_access_inventory.access_surfaces.{surface['surface_id']}.{key}",
|
|
surface[key],
|
|
)
|
|
assert_equal(
|
|
"ssh_network_access_inventory.write_capable_surfaces.count",
|
|
len(ssh_network_access_inventory["write_capable_surfaces"]),
|
|
6,
|
|
)
|
|
for surface_id in [
|
|
"gitea_cd_deploy_ssh",
|
|
"gitea_cd_dev_ssh",
|
|
"deploy_alerts_ssh_path",
|
|
"monitoring_exporter_deploy_ssh",
|
|
"host_ops_sudoers_wrapper",
|
|
"alert_rules_ssh_actions",
|
|
]:
|
|
assert_contains(
|
|
"ssh_network_access_inventory.write_capable_surfaces",
|
|
[item["surface_id"] for item in ssh_network_access_inventory["write_capable_surfaces"]],
|
|
surface_id,
|
|
)
|
|
assert_equal(
|
|
"ssh_network_owner_request_draft.schema",
|
|
ssh_network_owner_request_draft["schema_version"],
|
|
"ssh_network_owner_request_draft_v1",
|
|
)
|
|
assert_equal(
|
|
"ssh_network_owner_request_draft.status",
|
|
ssh_network_owner_request_draft["status"],
|
|
"owner_request_draft_ready_not_dispatched",
|
|
)
|
|
assert_equal(
|
|
"ssh_network_owner_request_draft.source_inventory_schema_version",
|
|
ssh_network_owner_request_draft["source_inventory_schema_version"],
|
|
"ssh_network_access_inventory_v1",
|
|
)
|
|
expected_ssh_network_owner_request_summary = {
|
|
"request_draft_count": 16,
|
|
"write_capable_request_draft_count": 6,
|
|
"live_evidence_required_request_count": 16,
|
|
"request_field_count": 23,
|
|
"required_owner_field_count": 13,
|
|
"blocked_action_count": 16,
|
|
"request_sent_count": 0,
|
|
"recipient_confirmed_count": 0,
|
|
"owner_response_received_count": 0,
|
|
"owner_response_accepted_count": 0,
|
|
"live_evidence_received_count": 0,
|
|
"maintenance_window_accepted_count": 0,
|
|
"rollback_owner_accepted_count": 0,
|
|
"validation_plan_accepted_count": 0,
|
|
"host_write_authorized_count": 0,
|
|
"ssh_read_authorized_count": 0,
|
|
"ssh_write_authorized_count": 0,
|
|
"host_keyscan_authorized_count": 0,
|
|
"known_hosts_patch_authorized_count": 0,
|
|
"firewall_change_authorized_count": 0,
|
|
"port_change_authorized_count": 0,
|
|
"network_policy_apply_authorized_count": 0,
|
|
"nodeport_change_authorized_count": 0,
|
|
"wireguard_change_authorized_count": 0,
|
|
"sudo_action_authorized_count": 0,
|
|
"deploy_ssh_action_authorized_count": 0,
|
|
"secret_value_collection_allowed_count": 0,
|
|
"ssh_key_collection_allowed_count": 0,
|
|
"active_scan_authorized_count": 0,
|
|
"runtime_gate_count": 0,
|
|
"action_button_count": 0,
|
|
}
|
|
for key, expected in expected_ssh_network_owner_request_summary.items():
|
|
assert_equal(
|
|
f"ssh_network_owner_request_draft.summary.{key}",
|
|
ssh_network_owner_request_draft["summary"][key],
|
|
expected,
|
|
)
|
|
for key, value in ssh_network_owner_request_draft["execution_boundaries"].items():
|
|
if key == "not_authorization":
|
|
assert_true(f"ssh_network_owner_request_draft.execution_boundaries.{key}", value)
|
|
else:
|
|
assert_false(f"ssh_network_owner_request_draft.execution_boundaries.{key}", value)
|
|
assert_equal(
|
|
"ssh_network_owner_request_draft.request_drafts.count",
|
|
len(ssh_network_owner_request_draft["request_drafts"]),
|
|
16,
|
|
)
|
|
ssh_network_owner_request_ids = [
|
|
item["request_id"] for item in ssh_network_owner_request_draft["request_drafts"]
|
|
]
|
|
for request_id in [
|
|
"ssh_network_owner_request:gitea_cd_known_hosts_secret",
|
|
"ssh_network_owner_request:deploy_alerts_ssh_path",
|
|
"ssh_network_owner_request:host_ops_sudoers_wrapper",
|
|
"ssh_network_owner_request:argocd_metrics_nodeport",
|
|
"ssh_network_owner_request:wireguard_mesh_runbook",
|
|
"ssh_network_owner_request:alert_rules_ssh_actions",
|
|
]:
|
|
assert_contains(
|
|
"ssh_network_owner_request_draft.request_drafts",
|
|
ssh_network_owner_request_ids,
|
|
request_id,
|
|
)
|
|
for draft in ssh_network_owner_request_draft["request_drafts"]:
|
|
assert_equal(
|
|
f"ssh_network_owner_request_draft.{draft['request_id']}.required_owner_fields",
|
|
len(draft["required_owner_fields"]),
|
|
13,
|
|
)
|
|
assert_equal(
|
|
f"ssh_network_owner_request_draft.{draft['request_id']}.blocked_actions",
|
|
len(draft["blocked_actions"]),
|
|
16,
|
|
)
|
|
for false_key in [
|
|
"request_sent",
|
|
"recipient_confirmed",
|
|
"owner_response_received",
|
|
"owner_response_accepted",
|
|
"live_evidence_received",
|
|
"maintenance_window_accepted",
|
|
"rollback_owner_accepted",
|
|
"validation_plan_accepted",
|
|
"host_write_authorized",
|
|
"ssh_read_authorized",
|
|
"ssh_write_authorized",
|
|
"host_keyscan_authorized",
|
|
"known_hosts_patch_authorized",
|
|
"firewall_change_authorized",
|
|
"port_change_authorized",
|
|
"network_policy_apply_authorized",
|
|
"nodeport_change_authorized",
|
|
"wireguard_change_authorized",
|
|
"sudo_action_authorized",
|
|
"deploy_ssh_action_authorized",
|
|
"secret_value_collection_allowed",
|
|
"ssh_key_collection_allowed",
|
|
"active_scan_authorized",
|
|
"runtime_gate",
|
|
"action_buttons_allowed",
|
|
]:
|
|
assert_false(
|
|
f"ssh_network_owner_request_draft.{draft['request_id']}.{false_key}",
|
|
draft[false_key],
|
|
)
|
|
assert_equal(
|
|
"ssh_network_owner_response_acceptance.schema",
|
|
ssh_network_owner_response_acceptance["schema_version"],
|
|
"ssh_network_owner_response_acceptance_v1",
|
|
)
|
|
assert_equal(
|
|
"ssh_network_owner_response_acceptance.status",
|
|
ssh_network_owner_response_acceptance["status"],
|
|
"owner_response_acceptance_ledger_ready_no_runtime_action",
|
|
)
|
|
assert_equal(
|
|
"ssh_network_owner_response_acceptance.source_inventory_schema_version",
|
|
ssh_network_owner_response_acceptance["source_inventory_schema_version"],
|
|
"ssh_network_access_inventory_v1",
|
|
)
|
|
assert_equal(
|
|
"ssh_network_owner_response_acceptance.source_inventory_status",
|
|
ssh_network_owner_response_acceptance["source_inventory_status"],
|
|
"repo_only_inventory_ready",
|
|
)
|
|
assert_equal(
|
|
"ssh_network_owner_response_acceptance.source_owner_request_schema_version",
|
|
ssh_network_owner_response_acceptance["source_owner_request_schema_version"],
|
|
"ssh_network_owner_request_draft_v1",
|
|
)
|
|
assert_equal(
|
|
"ssh_network_owner_response_acceptance.source_owner_request_status",
|
|
ssh_network_owner_response_acceptance["source_owner_request_status"],
|
|
"owner_request_draft_ready_not_dispatched",
|
|
)
|
|
expected_ssh_network_owner_response_acceptance_summary = {
|
|
"source_surface_count": 16,
|
|
"source_request_draft_count": 16,
|
|
"acceptance_candidate_count": 16,
|
|
"write_capable_acceptance_candidate_count": 6,
|
|
"live_evidence_required_candidate_count": 16,
|
|
"acceptance_field_count": 29,
|
|
"required_owner_field_count": 13,
|
|
"reviewer_check_count": 15,
|
|
"outcome_lane_count": 7,
|
|
"blocked_action_count": 22,
|
|
"request_sent_count": 0,
|
|
"recipient_confirmed_count": 0,
|
|
"owner_response_received_count": 0,
|
|
"owner_response_accepted_count": 0,
|
|
"owner_response_rejected_count": 0,
|
|
"owner_response_quarantined_count": 0,
|
|
"supplement_requested_count": 0,
|
|
"live_evidence_received_count": 0,
|
|
"maintenance_window_accepted_count": 0,
|
|
"rollback_owner_accepted_count": 0,
|
|
"validation_plan_accepted_count": 0,
|
|
"firewall_owner_accepted_count": 0,
|
|
"host_key_pinning_accepted_count": 0,
|
|
"port_policy_accepted_count": 0,
|
|
"network_policy_diff_accepted_count": 0,
|
|
"nodeport_exposure_accepted_count": 0,
|
|
"wireguard_cutover_accepted_count": 0,
|
|
"host_write_authorized_count": 0,
|
|
"ssh_read_authorized_count": 0,
|
|
"ssh_write_authorized_count": 0,
|
|
"host_keyscan_authorized_count": 0,
|
|
"known_hosts_patch_authorized_count": 0,
|
|
"firewall_change_authorized_count": 0,
|
|
"port_change_authorized_count": 0,
|
|
"port_close_authorized_count": 0,
|
|
"port_open_authorized_count": 0,
|
|
"network_policy_apply_authorized_count": 0,
|
|
"nodeport_change_authorized_count": 0,
|
|
"wireguard_change_authorized_count": 0,
|
|
"sudo_action_authorized_count": 0,
|
|
"deploy_ssh_action_authorized_count": 0,
|
|
"secret_value_collection_allowed_count": 0,
|
|
"ssh_key_collection_allowed_count": 0,
|
|
"active_scan_authorized_count": 0,
|
|
"runtime_gate_count": 0,
|
|
"action_button_count": 0,
|
|
}
|
|
for key, expected in expected_ssh_network_owner_response_acceptance_summary.items():
|
|
assert_equal(
|
|
f"ssh_network_owner_response_acceptance.summary.{key}",
|
|
ssh_network_owner_response_acceptance["summary"][key],
|
|
expected,
|
|
)
|
|
for key, value in ssh_network_owner_response_acceptance["execution_boundaries"].items():
|
|
if key == "not_authorization":
|
|
assert_true(f"ssh_network_owner_response_acceptance.execution_boundaries.{key}", value)
|
|
else:
|
|
assert_false(f"ssh_network_owner_response_acceptance.execution_boundaries.{key}", value)
|
|
assert_equal(
|
|
"ssh_network_owner_response_acceptance.acceptance_candidates.count",
|
|
len(ssh_network_owner_response_acceptance["acceptance_candidates"]),
|
|
16,
|
|
)
|
|
ssh_network_acceptance_ids = [
|
|
item["acceptance_candidate_id"]
|
|
for item in ssh_network_owner_response_acceptance["acceptance_candidates"]
|
|
]
|
|
for acceptance_candidate_id in [
|
|
"ssh_network_owner_response_acceptance:gitea_cd_known_hosts_secret",
|
|
"ssh_network_owner_response_acceptance:deploy_alerts_ssh_path",
|
|
"ssh_network_owner_response_acceptance:host_ops_sudoers_wrapper",
|
|
"ssh_network_owner_response_acceptance:argocd_metrics_nodeport",
|
|
"ssh_network_owner_response_acceptance:wireguard_mesh_runbook",
|
|
"ssh_network_owner_response_acceptance:alert_rules_ssh_actions",
|
|
]:
|
|
assert_contains(
|
|
"ssh_network_owner_response_acceptance.acceptance_candidates",
|
|
ssh_network_acceptance_ids,
|
|
acceptance_candidate_id,
|
|
)
|
|
assert_equal(
|
|
"ssh_network_owner_response_acceptance.reviewer_checks.count",
|
|
len(ssh_network_owner_response_acceptance["reviewer_checks"]),
|
|
15,
|
|
)
|
|
assert_equal(
|
|
"ssh_network_owner_response_acceptance.outcome_lanes.count",
|
|
len(ssh_network_owner_response_acceptance["outcome_lanes"]),
|
|
7,
|
|
)
|
|
assert_equal(
|
|
"ssh_network_owner_response_acceptance.blocked_actions.count",
|
|
len(ssh_network_owner_response_acceptance["blocked_actions"]),
|
|
22,
|
|
)
|
|
for item in ssh_network_owner_response_acceptance["acceptance_candidates"]:
|
|
assert_equal(
|
|
f"ssh_network_owner_response_acceptance.{item['acceptance_candidate_id']}.acceptance_fields",
|
|
len(item["acceptance_fields"]),
|
|
29,
|
|
)
|
|
assert_equal(
|
|
f"ssh_network_owner_response_acceptance.{item['acceptance_candidate_id']}.required_owner_fields",
|
|
len(item["required_owner_fields"]),
|
|
13,
|
|
)
|
|
assert_equal(
|
|
f"ssh_network_owner_response_acceptance.{item['acceptance_candidate_id']}.reviewer_checks",
|
|
len(item["reviewer_checks"]),
|
|
15,
|
|
)
|
|
assert_equal(
|
|
f"ssh_network_owner_response_acceptance.{item['acceptance_candidate_id']}.outcome_lanes",
|
|
len(item["outcome_lanes"]),
|
|
7,
|
|
)
|
|
assert_equal(
|
|
f"ssh_network_owner_response_acceptance.{item['acceptance_candidate_id']}.blocked_actions",
|
|
len(item["blocked_actions"]),
|
|
22,
|
|
)
|
|
assert_true(
|
|
f"ssh_network_owner_response_acceptance.{item['acceptance_candidate_id']}.not_approval",
|
|
item["not_approval"],
|
|
)
|
|
for false_key in [
|
|
"request_sent",
|
|
"recipient_confirmed",
|
|
"owner_response_received",
|
|
"owner_response_accepted",
|
|
"owner_response_rejected",
|
|
"owner_response_quarantined",
|
|
"supplement_requested",
|
|
"live_evidence_received",
|
|
"maintenance_window_accepted",
|
|
"rollback_owner_accepted",
|
|
"validation_plan_accepted",
|
|
"firewall_owner_accepted",
|
|
"host_key_pinning_accepted",
|
|
"port_policy_accepted",
|
|
"network_policy_diff_accepted",
|
|
"nodeport_exposure_accepted",
|
|
"wireguard_cutover_accepted",
|
|
"host_write_authorized",
|
|
"ssh_read_authorized",
|
|
"ssh_write_authorized",
|
|
"host_keyscan_authorized",
|
|
"known_hosts_patch_authorized",
|
|
"firewall_change_authorized",
|
|
"port_change_authorized",
|
|
"port_close_authorized",
|
|
"port_open_authorized",
|
|
"network_policy_apply_authorized",
|
|
"nodeport_change_authorized",
|
|
"wireguard_change_authorized",
|
|
"sudo_action_authorized",
|
|
"deploy_ssh_action_authorized",
|
|
"secret_value_collection_allowed",
|
|
"ssh_key_collection_allowed",
|
|
"active_scan_authorized",
|
|
"runtime_gate",
|
|
"action_buttons_allowed",
|
|
]:
|
|
assert_false(
|
|
f"ssh_network_owner_response_acceptance.{item['acceptance_candidate_id']}.{false_key}",
|
|
item[false_key],
|
|
)
|
|
assert_equal(
|
|
"port_firewall_change_evidence_acceptance.schema",
|
|
port_firewall_change_evidence_acceptance["schema_version"],
|
|
"port_firewall_change_evidence_acceptance_v1",
|
|
)
|
|
assert_equal(
|
|
"port_firewall_change_evidence_acceptance.status",
|
|
port_firewall_change_evidence_acceptance["status"],
|
|
"change_evidence_acceptance_ready_no_runtime_action",
|
|
)
|
|
assert_equal(
|
|
"port_firewall_change_evidence_acceptance.source_acceptance_schema_version",
|
|
port_firewall_change_evidence_acceptance["source_acceptance_schema_version"],
|
|
"ssh_network_owner_response_acceptance_v1",
|
|
)
|
|
assert_equal(
|
|
"port_firewall_change_evidence_acceptance.source_acceptance_status",
|
|
port_firewall_change_evidence_acceptance["source_acceptance_status"],
|
|
"owner_response_acceptance_ledger_ready_no_runtime_action",
|
|
)
|
|
expected_port_firewall_change_evidence_summary = {
|
|
"source_acceptance_candidate_count": 16,
|
|
"change_evidence_candidate_count": 14,
|
|
"write_capable_change_evidence_candidate_count": 6,
|
|
"policy_or_exposure_candidate_count": 5,
|
|
"change_evidence_field_count": 32,
|
|
"required_evidence_field_count": 16,
|
|
"reviewer_check_count": 16,
|
|
"outcome_lane_count": 8,
|
|
"blocked_action_count": 24,
|
|
"change_evidence_received_count": 0,
|
|
"change_evidence_accepted_count": 0,
|
|
"change_evidence_rejected_count": 0,
|
|
"change_evidence_quarantined_count": 0,
|
|
"impact_supplement_requested_count": 0,
|
|
"actor_identified_count": 0,
|
|
"affected_scope_accepted_count": 0,
|
|
"before_state_accepted_count": 0,
|
|
"after_state_accepted_count": 0,
|
|
"firewall_rule_diff_accepted_count": 0,
|
|
"port_policy_accepted_count": 0,
|
|
"service_dependency_accepted_count": 0,
|
|
"customer_impact_accepted_count": 0,
|
|
"cross_project_sync_accepted_count": 0,
|
|
"maintenance_window_accepted_count": 0,
|
|
"rollback_owner_accepted_count": 0,
|
|
"rollback_plan_accepted_count": 0,
|
|
"validation_plan_accepted_count": 0,
|
|
"postcheck_evidence_accepted_count": 0,
|
|
"host_write_authorized_count": 0,
|
|
"ssh_read_authorized_count": 0,
|
|
"ssh_write_authorized_count": 0,
|
|
"live_firewall_read_authorized_count": 0,
|
|
"firewall_change_authorized_count": 0,
|
|
"port_change_authorized_count": 0,
|
|
"port_close_authorized_count": 0,
|
|
"port_open_authorized_count": 0,
|
|
"network_policy_apply_authorized_count": 0,
|
|
"nodeport_change_authorized_count": 0,
|
|
"wireguard_change_authorized_count": 0,
|
|
"sudo_action_authorized_count": 0,
|
|
"deploy_ssh_action_authorized_count": 0,
|
|
"route_smoke_authorized_count": 0,
|
|
"public_gateway_reload_authorized_count": 0,
|
|
"nginx_reload_authorized_count": 0,
|
|
"host_restart_authorized_count": 0,
|
|
"secret_value_collection_allowed_count": 0,
|
|
"ssh_key_collection_allowed_count": 0,
|
|
"runtime_gate_count": 0,
|
|
"action_button_count": 0,
|
|
}
|
|
for key, expected in expected_port_firewall_change_evidence_summary.items():
|
|
assert_equal(
|
|
f"port_firewall_change_evidence_acceptance.summary.{key}",
|
|
port_firewall_change_evidence_acceptance["summary"][key],
|
|
expected,
|
|
)
|
|
for key, value in port_firewall_change_evidence_acceptance["execution_boundaries"].items():
|
|
if key == "not_authorization":
|
|
assert_true(f"port_firewall_change_evidence_acceptance.execution_boundaries.{key}", value)
|
|
else:
|
|
assert_false(f"port_firewall_change_evidence_acceptance.execution_boundaries.{key}", value)
|
|
assert_equal(
|
|
"port_firewall_change_evidence_acceptance.change_evidence_candidates.count",
|
|
len(port_firewall_change_evidence_acceptance["change_evidence_candidates"]),
|
|
14,
|
|
)
|
|
port_firewall_change_candidate_ids = [
|
|
item["change_evidence_candidate_id"]
|
|
for item in port_firewall_change_evidence_acceptance["change_evidence_candidates"]
|
|
]
|
|
for change_evidence_candidate_id in [
|
|
"port_firewall_change_evidence:deploy_alerts_ssh_path",
|
|
"port_firewall_change_evidence:host_ops_sudoers_wrapper",
|
|
"port_firewall_change_evidence:argocd_metrics_nodeport",
|
|
"port_firewall_change_evidence:velero_metrics_nodeport",
|
|
"port_firewall_change_evidence:wireguard_mesh_runbook",
|
|
"port_firewall_change_evidence:alert_rules_ssh_actions",
|
|
]:
|
|
assert_contains(
|
|
"port_firewall_change_evidence_acceptance.change_evidence_candidates",
|
|
port_firewall_change_candidate_ids,
|
|
change_evidence_candidate_id,
|
|
)
|
|
assert_equal(
|
|
"port_firewall_change_evidence_acceptance.reviewer_checks.count",
|
|
len(port_firewall_change_evidence_acceptance["reviewer_checks"]),
|
|
16,
|
|
)
|
|
assert_equal(
|
|
"port_firewall_change_evidence_acceptance.outcome_lanes.count",
|
|
len(port_firewall_change_evidence_acceptance["outcome_lanes"]),
|
|
8,
|
|
)
|
|
assert_equal(
|
|
"port_firewall_change_evidence_acceptance.blocked_actions.count",
|
|
len(port_firewall_change_evidence_acceptance["blocked_actions"]),
|
|
24,
|
|
)
|
|
for item in port_firewall_change_evidence_acceptance["change_evidence_candidates"]:
|
|
assert_equal(
|
|
f"port_firewall_change_evidence_acceptance.{item['change_evidence_candidate_id']}.change_evidence_fields",
|
|
len(item["change_evidence_fields"]),
|
|
32,
|
|
)
|
|
assert_equal(
|
|
f"port_firewall_change_evidence_acceptance.{item['change_evidence_candidate_id']}.required_evidence_fields",
|
|
len(item["required_evidence_fields"]),
|
|
16,
|
|
)
|
|
assert_equal(
|
|
f"port_firewall_change_evidence_acceptance.{item['change_evidence_candidate_id']}.reviewer_checks",
|
|
len(item["reviewer_checks"]),
|
|
16,
|
|
)
|
|
assert_equal(
|
|
f"port_firewall_change_evidence_acceptance.{item['change_evidence_candidate_id']}.outcome_lanes",
|
|
len(item["outcome_lanes"]),
|
|
8,
|
|
)
|
|
assert_equal(
|
|
f"port_firewall_change_evidence_acceptance.{item['change_evidence_candidate_id']}.blocked_actions",
|
|
len(item["blocked_actions"]),
|
|
24,
|
|
)
|
|
assert_true(
|
|
f"port_firewall_change_evidence_acceptance.{item['change_evidence_candidate_id']}.not_approval",
|
|
item["not_approval"],
|
|
)
|
|
assert_true(
|
|
f"port_firewall_change_evidence_acceptance.{item['change_evidence_candidate_id']}.incident_backfill_only",
|
|
item["incident_backfill_only"],
|
|
)
|
|
for false_key in [
|
|
"change_evidence_received",
|
|
"change_evidence_accepted",
|
|
"change_evidence_rejected",
|
|
"change_evidence_quarantined",
|
|
"impact_supplement_requested",
|
|
"actor_identified",
|
|
"affected_scope_accepted",
|
|
"before_state_accepted",
|
|
"after_state_accepted",
|
|
"firewall_rule_diff_accepted",
|
|
"port_policy_accepted",
|
|
"service_dependency_accepted",
|
|
"customer_impact_accepted",
|
|
"cross_project_sync_accepted",
|
|
"maintenance_window_accepted",
|
|
"rollback_owner_accepted",
|
|
"rollback_plan_accepted",
|
|
"validation_plan_accepted",
|
|
"postcheck_evidence_accepted",
|
|
"host_write_authorized",
|
|
"ssh_read_authorized",
|
|
"ssh_write_authorized",
|
|
"live_firewall_read_authorized",
|
|
"firewall_change_authorized",
|
|
"port_change_authorized",
|
|
"port_close_authorized",
|
|
"port_open_authorized",
|
|
"network_policy_apply_authorized",
|
|
"nodeport_change_authorized",
|
|
"wireguard_change_authorized",
|
|
"sudo_action_authorized",
|
|
"deploy_ssh_action_authorized",
|
|
"route_smoke_authorized",
|
|
"public_gateway_reload_authorized",
|
|
"nginx_reload_authorized",
|
|
"host_restart_authorized",
|
|
"secret_value_collection_allowed",
|
|
"ssh_key_collection_allowed",
|
|
"runtime_gate",
|
|
"runtime_execution_authorized",
|
|
"production_write_authorized",
|
|
"action_buttons_allowed",
|
|
]:
|
|
assert_false(
|
|
f"port_firewall_change_evidence_acceptance.{item['change_evidence_candidate_id']}.{false_key}",
|
|
item[false_key],
|
|
)
|
|
assert_equal(
|
|
"backup_restore_escrow_inventory.schema",
|
|
backup_restore_escrow_inventory["schema_version"],
|
|
"backup_restore_escrow_inventory_v1",
|
|
)
|
|
assert_equal(
|
|
"backup_restore_escrow_inventory.status",
|
|
backup_restore_escrow_inventory["status"],
|
|
"repo_only_inventory_ready",
|
|
)
|
|
assert_equal(
|
|
"backup_restore_escrow_inventory.source_scope",
|
|
backup_restore_escrow_inventory["source_scope"],
|
|
"committed_repo_files_only",
|
|
)
|
|
expected_backup_restore_escrow_summary = {
|
|
"surface_count": 38,
|
|
"source_exists_count": 38,
|
|
"expected_scope_count": 38,
|
|
"backup_script_surface_count": 15,
|
|
"restore_drill_surface_count": 4,
|
|
"offsite_escrow_surface_count": 8,
|
|
"velero_surface_count": 5,
|
|
"retention_surface_count": 3,
|
|
"credential_surface_count": 5,
|
|
"alert_surface_count": 1,
|
|
"dr_readiness_contract_surface_count": 3,
|
|
"write_capable_surface_count": 27,
|
|
"surfaces_requiring_owner_response_count": 38,
|
|
"surfaces_requiring_live_evidence_count": 38,
|
|
"owner_response_received_count": 0,
|
|
"owner_response_accepted_count": 0,
|
|
"live_evidence_received_count": 0,
|
|
"restore_drill_accepted_count": 0,
|
|
"offsite_sync_accepted_count": 0,
|
|
"credential_escrow_accepted_count": 0,
|
|
"retention_change_accepted_count": 0,
|
|
"maintenance_window_accepted_count": 0,
|
|
"rollback_owner_accepted_count": 0,
|
|
"runtime_gate_count": 0,
|
|
"action_button_count": 0,
|
|
"coverage_percent_before_inventory": 52,
|
|
"coverage_percent_after_inventory": 58,
|
|
}
|
|
for key, expected in expected_backup_restore_escrow_summary.items():
|
|
assert_equal(
|
|
f"backup_restore_escrow_inventory.summary.{key}",
|
|
backup_restore_escrow_inventory["summary"][key],
|
|
expected,
|
|
)
|
|
for key, value in backup_restore_escrow_inventory["execution_boundaries"].items():
|
|
assert_false(f"backup_restore_escrow_inventory.execution_boundaries.{key}", value)
|
|
assert_equal(
|
|
"backup_restore_escrow_inventory.backup_surfaces.count",
|
|
len(backup_restore_escrow_inventory["backup_surfaces"]),
|
|
38,
|
|
)
|
|
backup_restore_surface_ids = [item["surface_id"] for item in backup_restore_escrow_inventory["backup_surfaces"]]
|
|
for surface_id in [
|
|
"backup_all_orchestrator",
|
|
"backup_common_restic_retention",
|
|
"offsite_sync_controller",
|
|
"credential_escrow_marker",
|
|
"velero_restore_test_script_configmap",
|
|
"velero_credentials_manifest",
|
|
"backup_restore_alert_rules",
|
|
"backup_restore_drill_approval_template",
|
|
"cold_start_sop",
|
|
]:
|
|
assert_contains(
|
|
"backup_restore_escrow_inventory.backup_surfaces",
|
|
backup_restore_surface_ids,
|
|
surface_id,
|
|
)
|
|
for surface in backup_restore_escrow_inventory["backup_surfaces"]:
|
|
assert_true(
|
|
f"backup_restore_escrow_inventory.backup_surfaces.{surface['surface_id']}.source_exists",
|
|
surface["source_exists"],
|
|
)
|
|
assert_equal(
|
|
f"backup_restore_escrow_inventory.backup_surfaces.{surface['surface_id']}.sha256_length",
|
|
len(surface["sha256"]),
|
|
64,
|
|
)
|
|
assert_true(
|
|
f"backup_restore_escrow_inventory.backup_surfaces.{surface['surface_id']}.requires_live_evidence",
|
|
surface["requires_live_evidence"],
|
|
)
|
|
assert_true(
|
|
f"backup_restore_escrow_inventory.backup_surfaces.{surface['surface_id']}.requires_owner_response",
|
|
surface["requires_owner_response"],
|
|
)
|
|
for key in [
|
|
"owner_response_received",
|
|
"owner_response_accepted",
|
|
"live_evidence_received",
|
|
"restore_drill_accepted",
|
|
"offsite_sync_accepted",
|
|
"credential_escrow_accepted",
|
|
"retention_change_accepted",
|
|
"maintenance_window_accepted",
|
|
"rollback_owner_accepted",
|
|
"runtime_gate_open",
|
|
"action_buttons_allowed",
|
|
]:
|
|
assert_false(
|
|
f"backup_restore_escrow_inventory.backup_surfaces.{surface['surface_id']}.{key}",
|
|
surface[key],
|
|
)
|
|
assert_equal(
|
|
"backup_restore_escrow_inventory.write_capable_surfaces.count",
|
|
len(backup_restore_escrow_inventory["write_capable_surfaces"]),
|
|
27,
|
|
)
|
|
for surface_id in [
|
|
"backup_all_orchestrator",
|
|
"backup_awoooi_service_script",
|
|
"latest_only_retention_enforcer",
|
|
"offsite_sync_controller",
|
|
"credential_escrow_marker",
|
|
"offsite_rclone_config",
|
|
"backup_health_textfile_exporter",
|
|
"velero_restore_test_cronjob",
|
|
"velero_restore_test_script_configmap",
|
|
"velero_standalone_restore_test_script",
|
|
"velero_credentials_manifest",
|
|
"velero_install_manifest",
|
|
]:
|
|
assert_contains(
|
|
"backup_restore_escrow_inventory.write_capable_surfaces",
|
|
[item["surface_id"] for item in backup_restore_escrow_inventory["write_capable_surfaces"]],
|
|
surface_id,
|
|
)
|
|
assert_equal(
|
|
"backup_restore_owner_request_draft.schema",
|
|
backup_restore_owner_request_draft["schema_version"],
|
|
"backup_restore_owner_request_draft_v1",
|
|
)
|
|
assert_equal(
|
|
"backup_restore_owner_request_draft.status",
|
|
backup_restore_owner_request_draft["status"],
|
|
"owner_request_draft_ready_not_dispatched",
|
|
)
|
|
assert_equal(
|
|
"backup_restore_owner_request_draft.source_inventory_schema_version",
|
|
backup_restore_owner_request_draft["source_inventory_schema_version"],
|
|
"backup_restore_escrow_inventory_v1",
|
|
)
|
|
expected_backup_restore_owner_request_summary = {
|
|
"request_draft_count": 38,
|
|
"write_capable_request_draft_count": 27,
|
|
"live_evidence_required_request_count": 38,
|
|
"request_field_count": 24,
|
|
"required_owner_field_count": 14,
|
|
"blocked_action_count": 18,
|
|
"request_sent_count": 0,
|
|
"recipient_confirmed_count": 0,
|
|
"owner_response_received_count": 0,
|
|
"owner_response_accepted_count": 0,
|
|
"live_evidence_received_count": 0,
|
|
"restore_drill_accepted_count": 0,
|
|
"offsite_sync_accepted_count": 0,
|
|
"credential_escrow_accepted_count": 0,
|
|
"retention_change_accepted_count": 0,
|
|
"maintenance_window_accepted_count": 0,
|
|
"rollback_owner_accepted_count": 0,
|
|
"validation_plan_accepted_count": 0,
|
|
"backup_run_authorized_count": 0,
|
|
"restore_run_authorized_count": 0,
|
|
"offsite_sync_authorized_count": 0,
|
|
"offsite_remote_delete_authorized_count": 0,
|
|
"credential_escrow_marker_write_authorized_count": 0,
|
|
"retention_change_authorized_count": 0,
|
|
"restic_prune_authorized_count": 0,
|
|
"rclone_config_authorized_count": 0,
|
|
"velero_restore_authorized_count": 0,
|
|
"velero_backup_authorized_count": 0,
|
|
"kubectl_action_authorized_count": 0,
|
|
"ssh_read_authorized_count": 0,
|
|
"ssh_write_authorized_count": 0,
|
|
"secret_value_collection_allowed_count": 0,
|
|
"host_write_authorized_count": 0,
|
|
"active_scan_authorized_count": 0,
|
|
"runtime_gate_count": 0,
|
|
"action_button_count": 0,
|
|
}
|
|
for key, expected in expected_backup_restore_owner_request_summary.items():
|
|
assert_equal(
|
|
f"backup_restore_owner_request_draft.summary.{key}",
|
|
backup_restore_owner_request_draft["summary"][key],
|
|
expected,
|
|
)
|
|
for key, value in backup_restore_owner_request_draft["execution_boundaries"].items():
|
|
if key == "not_authorization":
|
|
assert_true(f"backup_restore_owner_request_draft.execution_boundaries.{key}", value)
|
|
else:
|
|
assert_false(f"backup_restore_owner_request_draft.execution_boundaries.{key}", value)
|
|
assert_equal(
|
|
"backup_restore_owner_request_draft.request_drafts.count",
|
|
len(backup_restore_owner_request_draft["request_drafts"]),
|
|
38,
|
|
)
|
|
backup_restore_owner_request_ids = [
|
|
item["request_id"] for item in backup_restore_owner_request_draft["request_drafts"]
|
|
]
|
|
for request_id in [
|
|
"backup_restore_owner_request:backup_all_orchestrator",
|
|
"backup_restore_owner_request:backup_awoooi_service_script",
|
|
"backup_restore_owner_request:offsite_sync_controller",
|
|
"backup_restore_owner_request:credential_escrow_marker",
|
|
"backup_restore_owner_request:velero_restore_test_cronjob",
|
|
"backup_restore_owner_request:cold_start_sop",
|
|
]:
|
|
assert_contains(
|
|
"backup_restore_owner_request_draft.request_drafts",
|
|
backup_restore_owner_request_ids,
|
|
request_id,
|
|
)
|
|
for draft in backup_restore_owner_request_draft["request_drafts"]:
|
|
assert_equal(
|
|
f"backup_restore_owner_request_draft.{draft['request_id']}.required_owner_fields",
|
|
len(draft["required_owner_fields"]),
|
|
14,
|
|
)
|
|
assert_equal(
|
|
f"backup_restore_owner_request_draft.{draft['request_id']}.blocked_actions",
|
|
len(draft["blocked_actions"]),
|
|
18,
|
|
)
|
|
for false_key in [
|
|
"request_sent",
|
|
"recipient_confirmed",
|
|
"owner_response_received",
|
|
"owner_response_accepted",
|
|
"live_evidence_received",
|
|
"restore_drill_accepted",
|
|
"offsite_sync_accepted",
|
|
"credential_escrow_accepted",
|
|
"retention_change_accepted",
|
|
"maintenance_window_accepted",
|
|
"rollback_owner_accepted",
|
|
"validation_plan_accepted",
|
|
"backup_run_authorized",
|
|
"restore_run_authorized",
|
|
"offsite_sync_authorized",
|
|
"offsite_remote_delete_authorized",
|
|
"credential_escrow_marker_write_authorized",
|
|
"retention_change_authorized",
|
|
"restic_prune_authorized",
|
|
"rclone_config_authorized",
|
|
"velero_restore_authorized",
|
|
"velero_backup_authorized",
|
|
"kubectl_action_authorized",
|
|
"ssh_read_authorized",
|
|
"ssh_write_authorized",
|
|
"secret_value_collection_allowed",
|
|
"host_write_authorized",
|
|
"active_scan_authorized",
|
|
"runtime_gate",
|
|
"action_buttons_allowed",
|
|
]:
|
|
assert_false(
|
|
f"backup_restore_owner_request_draft.{draft['request_id']}.{false_key}",
|
|
draft[false_key],
|
|
)
|
|
assert_equal(
|
|
"backup_restore_owner_response_acceptance.schema",
|
|
backup_restore_owner_response_acceptance["schema_version"],
|
|
"backup_restore_owner_response_acceptance_v1",
|
|
)
|
|
assert_equal(
|
|
"backup_restore_owner_response_acceptance.status",
|
|
backup_restore_owner_response_acceptance["status"],
|
|
"owner_response_acceptance_ledger_ready_no_runtime_action",
|
|
)
|
|
assert_equal(
|
|
"backup_restore_owner_response_acceptance.source_inventory_schema_version",
|
|
backup_restore_owner_response_acceptance["source_inventory_schema_version"],
|
|
"backup_restore_escrow_inventory_v1",
|
|
)
|
|
assert_equal(
|
|
"backup_restore_owner_response_acceptance.source_inventory_status",
|
|
backup_restore_owner_response_acceptance["source_inventory_status"],
|
|
"repo_only_inventory_ready",
|
|
)
|
|
assert_equal(
|
|
"backup_restore_owner_response_acceptance.source_owner_request_schema_version",
|
|
backup_restore_owner_response_acceptance["source_owner_request_schema_version"],
|
|
"backup_restore_owner_request_draft_v1",
|
|
)
|
|
assert_equal(
|
|
"backup_restore_owner_response_acceptance.source_owner_request_status",
|
|
backup_restore_owner_response_acceptance["source_owner_request_status"],
|
|
"owner_request_draft_ready_not_dispatched",
|
|
)
|
|
expected_backup_restore_owner_response_acceptance_summary = {
|
|
"source_surface_count": 38,
|
|
"source_request_draft_count": 38,
|
|
"acceptance_candidate_count": 38,
|
|
"write_capable_acceptance_candidate_count": 27,
|
|
"live_evidence_required_candidate_count": 38,
|
|
"acceptance_field_count": 24,
|
|
"required_owner_field_count": 14,
|
|
"reviewer_check_count": 13,
|
|
"outcome_lane_count": 7,
|
|
"blocked_action_count": 22,
|
|
"request_sent_count": 0,
|
|
"recipient_confirmed_count": 0,
|
|
"owner_response_received_count": 0,
|
|
"owner_response_accepted_count": 0,
|
|
"owner_response_rejected_count": 0,
|
|
"owner_response_quarantined_count": 0,
|
|
"supplement_requested_count": 0,
|
|
"live_evidence_received_count": 0,
|
|
"restore_drill_accepted_count": 0,
|
|
"offsite_sync_accepted_count": 0,
|
|
"credential_escrow_accepted_count": 0,
|
|
"retention_change_accepted_count": 0,
|
|
"maintenance_window_accepted_count": 0,
|
|
"rollback_owner_accepted_count": 0,
|
|
"validation_plan_accepted_count": 0,
|
|
"backup_run_authorized_count": 0,
|
|
"restore_run_authorized_count": 0,
|
|
"offsite_sync_authorized_count": 0,
|
|
"offsite_remote_delete_authorized_count": 0,
|
|
"credential_escrow_marker_write_authorized_count": 0,
|
|
"retention_change_authorized_count": 0,
|
|
"restic_prune_authorized_count": 0,
|
|
"rclone_config_authorized_count": 0,
|
|
"velero_restore_authorized_count": 0,
|
|
"velero_backup_authorized_count": 0,
|
|
"kubectl_action_authorized_count": 0,
|
|
"ssh_read_authorized_count": 0,
|
|
"ssh_write_authorized_count": 0,
|
|
"secret_value_collection_allowed_count": 0,
|
|
"host_write_authorized_count": 0,
|
|
"active_scan_authorized_count": 0,
|
|
"runtime_gate_count": 0,
|
|
"action_button_count": 0,
|
|
}
|
|
for key, expected in expected_backup_restore_owner_response_acceptance_summary.items():
|
|
assert_equal(
|
|
f"backup_restore_owner_response_acceptance.summary.{key}",
|
|
backup_restore_owner_response_acceptance["summary"][key],
|
|
expected,
|
|
)
|
|
for key, value in backup_restore_owner_response_acceptance["execution_boundaries"].items():
|
|
if key == "not_authorization":
|
|
assert_true(f"backup_restore_owner_response_acceptance.execution_boundaries.{key}", value)
|
|
else:
|
|
assert_false(f"backup_restore_owner_response_acceptance.execution_boundaries.{key}", value)
|
|
assert_equal(
|
|
"backup_restore_owner_response_acceptance.acceptance_candidates.count",
|
|
len(backup_restore_owner_response_acceptance["acceptance_candidates"]),
|
|
38,
|
|
)
|
|
backup_restore_acceptance_ids = [
|
|
item["acceptance_candidate_id"]
|
|
for item in backup_restore_owner_response_acceptance["acceptance_candidates"]
|
|
]
|
|
for acceptance_candidate_id in [
|
|
"backup_restore_owner_response_acceptance:backup_all_orchestrator",
|
|
"backup_restore_owner_response_acceptance:backup_awoooi_service_script",
|
|
"backup_restore_owner_response_acceptance:backup_common_restic_retention",
|
|
"backup_restore_owner_response_acceptance:offsite_sync_controller",
|
|
"backup_restore_owner_response_acceptance:credential_escrow_marker",
|
|
"backup_restore_owner_response_acceptance:velero_restore_test_cronjob",
|
|
"backup_restore_owner_response_acceptance:backup_health_textfile_exporter",
|
|
"backup_restore_owner_response_acceptance:cold_start_sop",
|
|
]:
|
|
assert_contains(
|
|
"backup_restore_owner_response_acceptance.acceptance_candidates",
|
|
backup_restore_acceptance_ids,
|
|
acceptance_candidate_id,
|
|
)
|
|
assert_equal(
|
|
"backup_restore_owner_response_acceptance.reviewer_checks.count",
|
|
len(backup_restore_owner_response_acceptance["reviewer_checks"]),
|
|
13,
|
|
)
|
|
assert_equal(
|
|
"backup_restore_owner_response_acceptance.outcome_lanes.count",
|
|
len(backup_restore_owner_response_acceptance["outcome_lanes"]),
|
|
7,
|
|
)
|
|
assert_equal(
|
|
"backup_restore_owner_response_acceptance.blocked_actions.count",
|
|
len(backup_restore_owner_response_acceptance["blocked_actions"]),
|
|
22,
|
|
)
|
|
for item in backup_restore_owner_response_acceptance["acceptance_candidates"]:
|
|
assert_equal(
|
|
f"backup_restore_owner_response_acceptance.{item['acceptance_candidate_id']}.acceptance_fields",
|
|
len(item["acceptance_fields"]),
|
|
24,
|
|
)
|
|
assert_equal(
|
|
f"backup_restore_owner_response_acceptance.{item['acceptance_candidate_id']}.required_owner_fields",
|
|
len(item["required_owner_fields"]),
|
|
14,
|
|
)
|
|
assert_equal(
|
|
f"backup_restore_owner_response_acceptance.{item['acceptance_candidate_id']}.reviewer_checks",
|
|
len(item["reviewer_checks"]),
|
|
13,
|
|
)
|
|
assert_equal(
|
|
f"backup_restore_owner_response_acceptance.{item['acceptance_candidate_id']}.outcome_lanes",
|
|
len(item["outcome_lanes"]),
|
|
7,
|
|
)
|
|
assert_equal(
|
|
f"backup_restore_owner_response_acceptance.{item['acceptance_candidate_id']}.blocked_actions",
|
|
len(item["blocked_actions"]),
|
|
22,
|
|
)
|
|
assert_true(
|
|
f"backup_restore_owner_response_acceptance.{item['acceptance_candidate_id']}.not_approval",
|
|
item["not_approval"],
|
|
)
|
|
for false_key in [
|
|
"request_sent",
|
|
"recipient_confirmed",
|
|
"owner_response_received",
|
|
"owner_response_accepted",
|
|
"owner_response_rejected",
|
|
"owner_response_quarantined",
|
|
"supplement_requested",
|
|
"live_evidence_received",
|
|
"restore_drill_accepted",
|
|
"offsite_sync_accepted",
|
|
"credential_escrow_accepted",
|
|
"retention_change_accepted",
|
|
"maintenance_window_accepted",
|
|
"rollback_owner_accepted",
|
|
"validation_plan_accepted",
|
|
"backup_run_authorized",
|
|
"restore_run_authorized",
|
|
"offsite_sync_authorized",
|
|
"offsite_remote_delete_authorized",
|
|
"credential_escrow_marker_write_authorized",
|
|
"retention_change_authorized",
|
|
"restic_prune_authorized",
|
|
"rclone_config_authorized",
|
|
"velero_restore_authorized",
|
|
"velero_backup_authorized",
|
|
"kubectl_action_authorized",
|
|
"ssh_read_authorized",
|
|
"ssh_write_authorized",
|
|
"secret_value_collection_allowed",
|
|
"host_write_authorized",
|
|
"active_scan_authorized",
|
|
"runtime_gate",
|
|
"action_buttons_allowed",
|
|
]:
|
|
assert_false(
|
|
f"backup_restore_owner_response_acceptance.{item['acceptance_candidate_id']}.{false_key}",
|
|
item[false_key],
|
|
)
|
|
assert_equal(
|
|
"monitoring_alerting_observability_inventory.schema",
|
|
monitoring_alerting_observability_inventory["schema_version"],
|
|
"monitoring_alerting_observability_inventory_v1",
|
|
)
|
|
assert_equal(
|
|
"monitoring_alerting_observability_inventory.status",
|
|
monitoring_alerting_observability_inventory["status"],
|
|
"repo_only_inventory_ready",
|
|
)
|
|
assert_equal(
|
|
"monitoring_alerting_observability_inventory.source_scope",
|
|
monitoring_alerting_observability_inventory["source_scope"],
|
|
"committed_repo_files_only",
|
|
)
|
|
expected_monitoring_alerting_observability_summary = {
|
|
"surface_count": 60,
|
|
"source_exists_count": 60,
|
|
"expected_scope_count": 60,
|
|
"prometheus_config_surface_count": 8,
|
|
"alert_rule_surface_count": 13,
|
|
"alertmanager_receiver_surface_count": 1,
|
|
"grafana_surface_count": 6,
|
|
"signoz_surface_count": 3,
|
|
"sentry_surface_count": 4,
|
|
"langfuse_surface_count": 3,
|
|
"notification_policy_surface_count": 4,
|
|
"telegram_surface_count": 3,
|
|
"otel_surface_count": 1,
|
|
"deploy_or_reload_surface_count": 6,
|
|
"drift_guard_surface_count": 1,
|
|
"smoke_surface_count": 4,
|
|
"write_capable_surface_count": 11,
|
|
"surfaces_requiring_owner_response_count": 60,
|
|
"surfaces_requiring_live_evidence_count": 60,
|
|
"owner_response_received_count": 0,
|
|
"owner_response_accepted_count": 0,
|
|
"live_evidence_received_count": 0,
|
|
"reload_owner_accepted_count": 0,
|
|
"receiver_owner_accepted_count": 0,
|
|
"route_smoke_accepted_count": 0,
|
|
"maintenance_window_accepted_count": 0,
|
|
"rollback_owner_accepted_count": 0,
|
|
"runtime_gate_count": 0,
|
|
"action_button_count": 0,
|
|
"coverage_percent_before_inventory": 56,
|
|
"coverage_percent_after_inventory": 62,
|
|
}
|
|
for key, expected in expected_monitoring_alerting_observability_summary.items():
|
|
assert_equal(
|
|
f"monitoring_alerting_observability_inventory.summary.{key}",
|
|
monitoring_alerting_observability_inventory["summary"][key],
|
|
expected,
|
|
)
|
|
for key, value in monitoring_alerting_observability_inventory["execution_boundaries"].items():
|
|
assert_false(f"monitoring_alerting_observability_inventory.execution_boundaries.{key}", value)
|
|
assert_equal(
|
|
"monitoring_alerting_observability_inventory.observability_surfaces.count",
|
|
len(monitoring_alerting_observability_inventory["observability_surfaces"]),
|
|
60,
|
|
)
|
|
monitoring_surface_ids = [
|
|
item["surface_id"] for item in monitoring_alerting_observability_inventory["observability_surfaces"]
|
|
]
|
|
for surface_id in [
|
|
"prometheus_k8s_base_config",
|
|
"alertmanager_receiver_config",
|
|
"prometheus_alerts_ops",
|
|
"grafana_ai_slo_dashboard",
|
|
"signoz_otel_collector_config",
|
|
"sentry_self_hosted_compose",
|
|
"langfuse_compose",
|
|
"telegram_gateway_service",
|
|
"deploy_alertmanager_config_script",
|
|
"prometheus_rule_drift_guard_script",
|
|
"alert_chain_smoke_script",
|
|
]:
|
|
assert_contains(
|
|
"monitoring_alerting_observability_inventory.observability_surfaces",
|
|
monitoring_surface_ids,
|
|
surface_id,
|
|
)
|
|
for surface in monitoring_alerting_observability_inventory["observability_surfaces"]:
|
|
assert_true(
|
|
f"monitoring_alerting_observability_inventory.observability_surfaces.{surface['surface_id']}.source_exists",
|
|
surface["source_exists"],
|
|
)
|
|
assert_equal(
|
|
f"monitoring_alerting_observability_inventory.observability_surfaces.{surface['surface_id']}.sha256_length",
|
|
len(surface["sha256"]),
|
|
64,
|
|
)
|
|
assert_true(
|
|
f"monitoring_alerting_observability_inventory.observability_surfaces.{surface['surface_id']}.requires_live_evidence",
|
|
surface["requires_live_evidence"],
|
|
)
|
|
assert_true(
|
|
f"monitoring_alerting_observability_inventory.observability_surfaces.{surface['surface_id']}.requires_owner_response",
|
|
surface["requires_owner_response"],
|
|
)
|
|
for key in [
|
|
"owner_response_received",
|
|
"owner_response_accepted",
|
|
"live_evidence_received",
|
|
"reload_owner_accepted",
|
|
"receiver_owner_accepted",
|
|
"route_smoke_accepted",
|
|
"maintenance_window_accepted",
|
|
"rollback_owner_accepted",
|
|
"runtime_gate_open",
|
|
"action_buttons_allowed",
|
|
]:
|
|
assert_false(
|
|
f"monitoring_alerting_observability_inventory.observability_surfaces.{surface['surface_id']}.{key}",
|
|
surface[key],
|
|
)
|
|
assert_equal(
|
|
"monitoring_alerting_observability_inventory.write_capable_surfaces.count",
|
|
len(monitoring_alerting_observability_inventory["write_capable_surfaces"]),
|
|
11,
|
|
)
|
|
for surface_id in [
|
|
"deploy_alertmanager_config_script",
|
|
"deploy_prometheus_alerts_script",
|
|
"k8s_deploy_prometheus_config_script",
|
|
"api_apply_prometheus_config_script",
|
|
"monitoring_exporter_deploy_script",
|
|
"sentry_self_hosted_deploy",
|
|
"telegram_gateway_service",
|
|
"notification_manager_service",
|
|
"converged_alert_recurrence_notifier",
|
|
"fire_live_alert_script",
|
|
"fire_test_alert_script",
|
|
]:
|
|
assert_contains(
|
|
"monitoring_alerting_observability_inventory.write_capable_surfaces",
|
|
[item["surface_id"] for item in monitoring_alerting_observability_inventory["write_capable_surfaces"]],
|
|
surface_id,
|
|
)
|
|
assert_equal(
|
|
"monitoring_owner_request_draft.schema",
|
|
monitoring_owner_request_draft["schema_version"],
|
|
"monitoring_owner_request_draft_v1",
|
|
)
|
|
assert_equal(
|
|
"monitoring_owner_request_draft.status",
|
|
monitoring_owner_request_draft["status"],
|
|
"owner_request_draft_ready_not_dispatched",
|
|
)
|
|
assert_equal(
|
|
"monitoring_owner_request_draft.source_inventory_schema_version",
|
|
monitoring_owner_request_draft["source_inventory_schema_version"],
|
|
"monitoring_alerting_observability_inventory_v1",
|
|
)
|
|
assert_equal(
|
|
"monitoring_owner_request_draft.source_inventory_status",
|
|
monitoring_owner_request_draft["source_inventory_status"],
|
|
"repo_only_inventory_ready",
|
|
)
|
|
expected_monitoring_owner_request_summary = {
|
|
"request_draft_count": 60,
|
|
"write_capable_request_draft_count": 11,
|
|
"live_evidence_required_request_count": 60,
|
|
"request_field_count": 24,
|
|
"required_owner_field_count": 14,
|
|
"blocked_action_count": 24,
|
|
"request_sent_count": 0,
|
|
"recipient_confirmed_count": 0,
|
|
"owner_response_received_count": 0,
|
|
"owner_response_accepted_count": 0,
|
|
"live_evidence_received_count": 0,
|
|
"reload_owner_accepted_count": 0,
|
|
"receiver_owner_accepted_count": 0,
|
|
"route_smoke_accepted_count": 0,
|
|
"maintenance_window_accepted_count": 0,
|
|
"rollback_owner_accepted_count": 0,
|
|
"validation_plan_accepted_count": 0,
|
|
"prometheus_reload_authorized_count": 0,
|
|
"alertmanager_reload_authorized_count": 0,
|
|
"grafana_dashboard_apply_authorized_count": 0,
|
|
"signoz_rule_apply_authorized_count": 0,
|
|
"sentry_deploy_authorized_count": 0,
|
|
"langfuse_config_change_authorized_count": 0,
|
|
"otel_collector_reload_authorized_count": 0,
|
|
"receiver_route_change_authorized_count": 0,
|
|
"silence_policy_change_authorized_count": 0,
|
|
"telegram_send_authorized_count": 0,
|
|
"notification_route_change_authorized_count": 0,
|
|
"webhook_receiver_change_authorized_count": 0,
|
|
"remote_write_change_authorized_count": 0,
|
|
"exporter_deploy_authorized_count": 0,
|
|
"live_alert_fire_authorized_count": 0,
|
|
"alert_chain_smoke_authorized_count": 0,
|
|
"ssh_read_authorized_count": 0,
|
|
"ssh_write_authorized_count": 0,
|
|
"kubectl_action_authorized_count": 0,
|
|
"secret_value_collection_allowed_count": 0,
|
|
"host_write_authorized_count": 0,
|
|
"active_scan_authorized_count": 0,
|
|
"production_write_authorized_count": 0,
|
|
"runtime_gate_count": 0,
|
|
"action_button_count": 0,
|
|
}
|
|
for key, expected in expected_monitoring_owner_request_summary.items():
|
|
assert_equal(
|
|
f"monitoring_owner_request_draft.summary.{key}",
|
|
monitoring_owner_request_draft["summary"][key],
|
|
expected,
|
|
)
|
|
for key, value in monitoring_owner_request_draft["execution_boundaries"].items():
|
|
if key == "not_authorization":
|
|
assert_true(f"monitoring_owner_request_draft.execution_boundaries.{key}", value)
|
|
else:
|
|
assert_false(f"monitoring_owner_request_draft.execution_boundaries.{key}", value)
|
|
assert_equal(
|
|
"monitoring_owner_request_draft.request_drafts.count",
|
|
len(monitoring_owner_request_draft["request_drafts"]),
|
|
60,
|
|
)
|
|
monitoring_owner_request_ids = [
|
|
item["request_id"] for item in monitoring_owner_request_draft["request_drafts"]
|
|
]
|
|
for request_id in [
|
|
"monitoring_owner_request:alertmanager_receiver_config",
|
|
"monitoring_owner_request:deploy_alertmanager_config_script",
|
|
"monitoring_owner_request:telegram_gateway_service",
|
|
"monitoring_owner_request:fire_live_alert_script",
|
|
"monitoring_owner_request:sentry_self_hosted_deploy",
|
|
"monitoring_owner_request:langfuse_compose",
|
|
]:
|
|
assert_contains(
|
|
"monitoring_owner_request_draft.request_drafts",
|
|
monitoring_owner_request_ids,
|
|
request_id,
|
|
)
|
|
for draft in monitoring_owner_request_draft["request_drafts"]:
|
|
assert_equal(
|
|
f"monitoring_owner_request_draft.{draft['request_id']}.required_owner_fields",
|
|
len(draft["required_owner_fields"]),
|
|
14,
|
|
)
|
|
assert_equal(
|
|
f"monitoring_owner_request_draft.{draft['request_id']}.blocked_actions",
|
|
len(draft["blocked_actions"]),
|
|
24,
|
|
)
|
|
assert_true(
|
|
f"monitoring_owner_request_draft.{draft['request_id']}.not_approval",
|
|
draft["not_approval"],
|
|
)
|
|
for false_key in [
|
|
"request_sent",
|
|
"recipient_confirmed",
|
|
"owner_response_received",
|
|
"owner_response_accepted",
|
|
"live_evidence_received",
|
|
"reload_owner_accepted",
|
|
"receiver_owner_accepted",
|
|
"route_smoke_accepted",
|
|
"maintenance_window_accepted",
|
|
"rollback_owner_accepted",
|
|
"validation_plan_accepted",
|
|
"prometheus_reload_authorized",
|
|
"alertmanager_reload_authorized",
|
|
"grafana_dashboard_apply_authorized",
|
|
"signoz_rule_apply_authorized",
|
|
"sentry_deploy_authorized",
|
|
"langfuse_config_change_authorized",
|
|
"otel_collector_reload_authorized",
|
|
"receiver_route_change_authorized",
|
|
"silence_policy_change_authorized",
|
|
"telegram_send_authorized",
|
|
"notification_route_change_authorized",
|
|
"webhook_receiver_change_authorized",
|
|
"remote_write_change_authorized",
|
|
"exporter_deploy_authorized",
|
|
"live_alert_fire_authorized",
|
|
"alert_chain_smoke_authorized",
|
|
"ssh_read_authorized",
|
|
"ssh_write_authorized",
|
|
"kubectl_action_authorized",
|
|
"secret_value_collection_allowed",
|
|
"host_write_authorized",
|
|
"active_scan_authorized",
|
|
"production_write_authorized",
|
|
"runtime_gate",
|
|
"action_buttons_allowed",
|
|
]:
|
|
assert_false(
|
|
f"monitoring_owner_request_draft.{draft['request_id']}.{false_key}",
|
|
draft[false_key],
|
|
)
|
|
assert_equal(
|
|
"public_gateway_preflight_inventory.schema",
|
|
public_gateway_preflight_inventory["schema_version"],
|
|
"public_gateway_preflight_inventory_v1",
|
|
)
|
|
assert_equal(
|
|
"public_gateway_preflight_inventory.status",
|
|
public_gateway_preflight_inventory["status"],
|
|
"repo_only_preflight_contract_ready",
|
|
)
|
|
assert_equal(
|
|
"public_gateway_preflight_inventory.source_scope",
|
|
public_gateway_preflight_inventory["source_scope"],
|
|
"committed_nginx_and_domain_tls_snapshots_only",
|
|
)
|
|
expected_public_gateway_preflight_summary = {
|
|
"source_config_count": 3,
|
|
"c0_source_config_count": 2,
|
|
"managed_domain_count": 14,
|
|
"route_impact_count": 14,
|
|
"unique_upstream_count": 14,
|
|
"tls_certificate_path_count": 10,
|
|
"certificate_owner_confirmation_required_count": 4,
|
|
"admin_route_domain_count": 1,
|
|
"websocket_route_domain_count": 6,
|
|
"acme_challenge_domain_count": 7,
|
|
"preflight_gate_count": 12,
|
|
"repo_only_preflight_ready_count": 2,
|
|
"owner_acceptance_required_gate_count": 10,
|
|
"preflight_gate_accepted_count": 0,
|
|
"owner_response_received_count": 0,
|
|
"owner_response_accepted_count": 0,
|
|
"owner_provided_live_conf_received_count": 0,
|
|
"rendered_diff_ready_count": 0,
|
|
"nginx_test_evidence_count": 0,
|
|
"route_smoke_evidence_count": 0,
|
|
"maintenance_window_accepted_count": 0,
|
|
"rollback_owner_accepted_count": 0,
|
|
"runtime_gate_count": 0,
|
|
"action_button_count": 0,
|
|
"coverage_percent_before_preflight": 78,
|
|
"coverage_percent_after_preflight": 84,
|
|
}
|
|
for key, expected in expected_public_gateway_preflight_summary.items():
|
|
assert_equal(
|
|
f"public_gateway_preflight_inventory.summary.{key}",
|
|
public_gateway_preflight_inventory["summary"][key],
|
|
expected,
|
|
)
|
|
for key, value in public_gateway_preflight_inventory["execution_boundaries"].items():
|
|
assert_false(f"public_gateway_preflight_inventory.execution_boundaries.{key}", value)
|
|
assert_equal(
|
|
"public_gateway_preflight_inventory.required_preflight_gates.count",
|
|
len(public_gateway_preflight_inventory["required_preflight_gates"]),
|
|
12,
|
|
)
|
|
assert_equal(
|
|
"public_gateway_preflight_inventory.config_preflight_rows.count",
|
|
len(public_gateway_preflight_inventory["config_preflight_rows"]),
|
|
3,
|
|
)
|
|
assert_equal(
|
|
"public_gateway_preflight_inventory.route_impacts.count",
|
|
len(public_gateway_preflight_inventory["route_impacts"]),
|
|
14,
|
|
)
|
|
for row in public_gateway_preflight_inventory["config_preflight_rows"]:
|
|
assert_true(
|
|
f"public_gateway_preflight_inventory.config_preflight_rows.{row['config_id']}.repo_source_hash_ready",
|
|
row["repo_source_hash_ready"],
|
|
)
|
|
for key in [
|
|
"owner_response_received",
|
|
"owner_response_accepted",
|
|
"live_conf_evidence_received",
|
|
"rendered_diff_ready",
|
|
"nginx_test_evidence_received",
|
|
"route_smoke_evidence_received",
|
|
"maintenance_window_accepted",
|
|
"rollback_owner_accepted",
|
|
"runtime_gate_open",
|
|
]:
|
|
assert_false(f"public_gateway_preflight_inventory.config_preflight_rows.{row['config_id']}.{key}", row[key])
|
|
for route_impact in public_gateway_preflight_inventory["route_impacts"]:
|
|
assert_true(
|
|
f"public_gateway_preflight_inventory.route_impacts.{route_impact['domain']}.public_route_smoke_required",
|
|
route_impact["public_route_smoke_required"],
|
|
)
|
|
assert_false(
|
|
f"public_gateway_preflight_inventory.route_impacts.{route_impact['domain']}.owner_response_accepted",
|
|
route_impact["owner_response_accepted"],
|
|
)
|
|
assert_false(
|
|
f"public_gateway_preflight_inventory.route_impacts.{route_impact['domain']}.route_smoke_accepted",
|
|
route_impact["route_smoke_accepted"],
|
|
)
|
|
assert_equal(
|
|
"public_gateway_live_conf_export_request.schema",
|
|
public_gateway_live_conf_export_request["schema_version"],
|
|
"public_gateway_live_conf_export_request_v1",
|
|
)
|
|
assert_equal(
|
|
"public_gateway_live_conf_export_request.source_preflight_schema_version",
|
|
public_gateway_live_conf_export_request["source_preflight_schema_version"],
|
|
"public_gateway_preflight_inventory_v1",
|
|
)
|
|
assert_equal(
|
|
"public_gateway_live_conf_export_request.status",
|
|
public_gateway_live_conf_export_request["status"],
|
|
"live_conf_export_request_ready_not_dispatched",
|
|
)
|
|
expected_public_gateway_live_conf_export_summary = {
|
|
"export_request_count": 3,
|
|
"c0_export_request_count": 2,
|
|
"c1_export_request_count": 1,
|
|
"export_request_field_count": 12,
|
|
"redaction_rule_count": 8,
|
|
"request_sent_count": 0,
|
|
"recipient_confirmed_count": 0,
|
|
"redacted_export_received_count": 0,
|
|
"raw_live_conf_stored_count": 0,
|
|
"rendered_diff_ready_count": 0,
|
|
"nginx_test_authorized_count": 0,
|
|
"nginx_test_executed_count": 0,
|
|
"nginx_reload_authorized_count": 0,
|
|
"route_smoke_authorized_count": 0,
|
|
"route_smoke_executed_count": 0,
|
|
"runtime_gate_count": 0,
|
|
"action_button_count": 0,
|
|
}
|
|
for key, expected in expected_public_gateway_live_conf_export_summary.items():
|
|
assert_equal(
|
|
f"public_gateway_live_conf_export_request.summary.{key}",
|
|
public_gateway_live_conf_export_request["summary"][key],
|
|
expected,
|
|
)
|
|
for false_key in [
|
|
"ssh_read_authorized",
|
|
"host_live_conf_read_authorized",
|
|
"raw_live_conf_storage_allowed",
|
|
"nginx_test_authorized",
|
|
"nginx_test_executed",
|
|
"nginx_reload_authorized",
|
|
"nginx_reload_executed",
|
|
"route_smoke_authorized",
|
|
"route_smoke_executed",
|
|
"dns_query_executed",
|
|
"live_tls_probe_executed",
|
|
"certbot_renew_authorized",
|
|
"runtime_execution_authorized",
|
|
"action_buttons_allowed",
|
|
"secret_value_collection_allowed",
|
|
"production_write_authorized",
|
|
]:
|
|
assert_false(
|
|
f"public_gateway_live_conf_export_request.execution_boundaries.{false_key}",
|
|
public_gateway_live_conf_export_request["execution_boundaries"][false_key],
|
|
)
|
|
assert_true(
|
|
"public_gateway_live_conf_export_request.execution_boundaries.not_authorization",
|
|
public_gateway_live_conf_export_request["execution_boundaries"]["not_authorization"],
|
|
)
|
|
expected_public_gateway_live_conf_export_ids = [
|
|
"public_gateway_live_conf_export:host188_all_sites",
|
|
"public_gateway_live_conf_export:host188_internal_tools_https",
|
|
"public_gateway_live_conf_export:host110_ollama_proxy",
|
|
]
|
|
assert_equal(
|
|
"public_gateway_live_conf_export_request.export_request_ids",
|
|
[item["export_request_id"] for item in public_gateway_live_conf_export_request["export_requests"]],
|
|
expected_public_gateway_live_conf_export_ids,
|
|
)
|
|
for item in public_gateway_live_conf_export_request["export_requests"]:
|
|
assert_equal(
|
|
f"public_gateway_live_conf_export_request.{item['export_request_id']}.field_count",
|
|
len(item["export_request_fields"]),
|
|
12,
|
|
)
|
|
assert_equal(
|
|
f"public_gateway_live_conf_export_request.{item['export_request_id']}.redaction_rule_count",
|
|
len(item["redaction_rules"]),
|
|
8,
|
|
)
|
|
assert_true(
|
|
f"public_gateway_live_conf_export_request.{item['export_request_id']}.not_approval",
|
|
item["not_approval"],
|
|
)
|
|
for false_key in [
|
|
"request_sent",
|
|
"recipient_confirmed",
|
|
"redacted_export_received",
|
|
"raw_live_conf_stored",
|
|
"rendered_diff_ready",
|
|
"nginx_test_authorized",
|
|
"nginx_test_executed",
|
|
"nginx_reload_authorized",
|
|
"route_smoke_authorized",
|
|
"route_smoke_executed",
|
|
"runtime_gate",
|
|
"action_buttons_allowed",
|
|
"secret_value_collection_allowed",
|
|
"production_write_authorized",
|
|
]:
|
|
assert_false(
|
|
f"public_gateway_live_conf_export_request.{item['export_request_id']}.{false_key}",
|
|
item[false_key],
|
|
)
|
|
assert_equal(
|
|
"public_gateway_redacted_export_intake_preflight.schema",
|
|
public_gateway_redacted_export_intake_preflight["schema_version"],
|
|
"public_gateway_redacted_export_intake_preflight_v1",
|
|
)
|
|
assert_equal(
|
|
"public_gateway_redacted_export_intake_preflight.source_export_request_schema_version",
|
|
public_gateway_redacted_export_intake_preflight["source_export_request_schema_version"],
|
|
"public_gateway_live_conf_export_request_v1",
|
|
)
|
|
assert_equal(
|
|
"public_gateway_redacted_export_intake_preflight.status",
|
|
public_gateway_redacted_export_intake_preflight["status"],
|
|
"redacted_export_intake_preflight_ready_no_payload_received",
|
|
)
|
|
expected_public_gateway_redacted_export_intake_summary = {
|
|
"intake_candidate_count": 3,
|
|
"c0_intake_candidate_count": 2,
|
|
"c1_intake_candidate_count": 1,
|
|
"intake_field_count": 11,
|
|
"validation_check_count": 10,
|
|
"rejection_guard_count": 12,
|
|
"reviewer_intake_lane_count": 5,
|
|
"request_sent_count": 0,
|
|
"recipient_confirmed_count": 0,
|
|
"redacted_export_received_count": 0,
|
|
"accepted_redacted_export_count": 0,
|
|
"quarantined_payload_count": 0,
|
|
"rejected_intake_count": 0,
|
|
"rendered_diff_candidate_count": 0,
|
|
"raw_live_conf_stored_count": 0,
|
|
"nginx_test_authorized_count": 0,
|
|
"nginx_test_executed_count": 0,
|
|
"nginx_reload_authorized_count": 0,
|
|
"route_smoke_authorized_count": 0,
|
|
"route_smoke_executed_count": 0,
|
|
"runtime_gate_count": 0,
|
|
"action_button_count": 0,
|
|
}
|
|
for key, expected in expected_public_gateway_redacted_export_intake_summary.items():
|
|
assert_equal(
|
|
f"public_gateway_redacted_export_intake_preflight.summary.{key}",
|
|
public_gateway_redacted_export_intake_preflight["summary"][key],
|
|
expected,
|
|
)
|
|
for false_key in [
|
|
"request_sent",
|
|
"recipient_confirmed",
|
|
"redacted_export_received",
|
|
"raw_live_conf_storage_allowed",
|
|
"rendered_diff_authorized",
|
|
"nginx_test_authorized",
|
|
"nginx_test_executed",
|
|
"nginx_reload_authorized",
|
|
"nginx_reload_executed",
|
|
"route_smoke_authorized",
|
|
"route_smoke_executed",
|
|
"dns_query_executed",
|
|
"live_tls_probe_executed",
|
|
"certbot_renew_authorized",
|
|
"ssh_read_authorized",
|
|
"host_live_conf_read_authorized",
|
|
"runtime_execution_authorized",
|
|
"action_buttons_allowed",
|
|
"secret_value_collection_allowed",
|
|
"production_write_authorized",
|
|
]:
|
|
assert_false(
|
|
f"public_gateway_redacted_export_intake_preflight.execution_boundaries.{false_key}",
|
|
public_gateway_redacted_export_intake_preflight["execution_boundaries"][false_key],
|
|
)
|
|
assert_true(
|
|
"public_gateway_redacted_export_intake_preflight.execution_boundaries.not_authorization",
|
|
public_gateway_redacted_export_intake_preflight["execution_boundaries"]["not_authorization"],
|
|
)
|
|
expected_public_gateway_redacted_export_intake_ids = [
|
|
"public_gateway_redacted_export_intake:host188_all_sites",
|
|
"public_gateway_redacted_export_intake:host188_internal_tools_https",
|
|
"public_gateway_redacted_export_intake:host110_ollama_proxy",
|
|
]
|
|
assert_equal(
|
|
"public_gateway_redacted_export_intake_preflight.intake_ids",
|
|
[item["intake_id"] for item in public_gateway_redacted_export_intake_preflight["intake_candidates"]],
|
|
expected_public_gateway_redacted_export_intake_ids,
|
|
)
|
|
expected_public_gateway_redacted_export_validation_check_ids = [
|
|
"source_export_request_snapshot_current",
|
|
"request_sent_metadata_required",
|
|
"recipient_confirmed_metadata_required",
|
|
"redacted_export_ref_required",
|
|
"raw_live_conf_payload_blocked",
|
|
"redaction_policy_attestation_required",
|
|
"secret_marker_scan_required",
|
|
"scope_matches_export_request",
|
|
"quarantine_before_storage",
|
|
"rendered_diff_gate_separate",
|
|
]
|
|
assert_equal(
|
|
"public_gateway_redacted_export_intake_preflight.validation_check_ids",
|
|
[item["check_id"] for item in public_gateway_redacted_export_intake_preflight["validation_checks"]],
|
|
expected_public_gateway_redacted_export_validation_check_ids,
|
|
)
|
|
expected_public_gateway_redacted_export_rejection_guards = [
|
|
"raw_live_conf_payload",
|
|
"tls_private_key",
|
|
"token_secret_cookie_session",
|
|
"authorization_header_or_basic_auth",
|
|
"unredacted_upstream_credential",
|
|
"db_url_or_env_dump",
|
|
"shell_history_or_private_key",
|
|
"unredacted_log_or_screenshot",
|
|
"nginx_test_execution_request",
|
|
"nginx_reload_or_route_change_request",
|
|
"dns_tls_certbot_request",
|
|
"ssh_host_write_or_runtime_request",
|
|
]
|
|
assert_equal(
|
|
"public_gateway_redacted_export_intake_preflight.rejection_guards",
|
|
public_gateway_redacted_export_intake_preflight["rejection_guards"],
|
|
expected_public_gateway_redacted_export_rejection_guards,
|
|
)
|
|
expected_public_gateway_redacted_export_lane_ids = [
|
|
"keep_waiting_redacted_export",
|
|
"request_more_metadata",
|
|
"quarantine_sensitive_payload",
|
|
"reject_execution_request",
|
|
"ready_for_rendered_diff_preflight",
|
|
]
|
|
assert_equal(
|
|
"public_gateway_redacted_export_intake_preflight.reviewer_intake_lane_ids",
|
|
[item["lane_id"] for item in public_gateway_redacted_export_intake_preflight["reviewer_intake_lanes"]],
|
|
expected_public_gateway_redacted_export_lane_ids,
|
|
)
|
|
for item in public_gateway_redacted_export_intake_preflight["intake_candidates"]:
|
|
assert_equal(
|
|
f"public_gateway_redacted_export_intake_preflight.{item['intake_id']}.field_count",
|
|
len(item["intake_fields"]),
|
|
11,
|
|
)
|
|
assert_true(
|
|
f"public_gateway_redacted_export_intake_preflight.{item['intake_id']}.not_approval",
|
|
item["not_approval"],
|
|
)
|
|
for false_key in [
|
|
"request_sent",
|
|
"recipient_confirmed",
|
|
"redacted_export_received",
|
|
"accepted_redacted_export",
|
|
"quarantine_written",
|
|
"rejected_intake",
|
|
"raw_live_conf_stored",
|
|
"rendered_diff_candidate",
|
|
"rendered_diff_authorized",
|
|
"nginx_test_authorized",
|
|
"nginx_test_executed",
|
|
"nginx_reload_authorized",
|
|
"route_smoke_authorized",
|
|
"route_smoke_executed",
|
|
"runtime_gate",
|
|
"action_buttons_allowed",
|
|
"secret_value_collection_allowed",
|
|
"production_write_authorized",
|
|
]:
|
|
assert_false(
|
|
f"public_gateway_redacted_export_intake_preflight.{item['intake_id']}.{false_key}",
|
|
item[false_key],
|
|
)
|
|
assert_equal(
|
|
"public_gateway_rendered_diff_gate_draft.schema",
|
|
public_gateway_rendered_diff_gate_draft["schema_version"],
|
|
"public_gateway_rendered_diff_gate_draft_v1",
|
|
)
|
|
assert_equal(
|
|
"public_gateway_rendered_diff_gate_draft.source_intake_preflight_schema_version",
|
|
public_gateway_rendered_diff_gate_draft["source_intake_preflight_schema_version"],
|
|
"public_gateway_redacted_export_intake_preflight_v1",
|
|
)
|
|
assert_equal(
|
|
"public_gateway_rendered_diff_gate_draft.status",
|
|
public_gateway_rendered_diff_gate_draft["status"],
|
|
"rendered_diff_gate_draft_ready_no_runtime_action",
|
|
)
|
|
expected_public_gateway_rendered_diff_summary = {
|
|
"diff_gate_candidate_count": 3,
|
|
"c0_diff_gate_candidate_count": 2,
|
|
"c1_diff_gate_candidate_count": 1,
|
|
"diff_gate_field_count": 12,
|
|
"preflight_stage_count": 7,
|
|
"blocked_action_count": 14,
|
|
"redacted_export_accepted_count": 0,
|
|
"rendered_diff_candidate_count": 0,
|
|
"rendered_diff_ready_count": 0,
|
|
"nginx_test_authorized_count": 0,
|
|
"nginx_test_executed_count": 0,
|
|
"nginx_reload_authorized_count": 0,
|
|
"nginx_reload_executed_count": 0,
|
|
"route_smoke_authorized_count": 0,
|
|
"route_smoke_executed_count": 0,
|
|
"dns_tls_probe_authorized_count": 0,
|
|
"certbot_renew_authorized_count": 0,
|
|
"maintenance_window_accepted_count": 0,
|
|
"rollback_owner_accepted_count": 0,
|
|
"runtime_gate_count": 0,
|
|
"action_button_count": 0,
|
|
}
|
|
for key, expected in expected_public_gateway_rendered_diff_summary.items():
|
|
assert_equal(
|
|
f"public_gateway_rendered_diff_gate_draft.summary.{key}",
|
|
public_gateway_rendered_diff_gate_draft["summary"][key],
|
|
expected,
|
|
)
|
|
for false_key in [
|
|
"read_live_conf_over_ssh",
|
|
"store_raw_live_conf",
|
|
"rendered_diff_authorized",
|
|
"nginx_test_authorized",
|
|
"nginx_test_executed",
|
|
"nginx_reload_authorized",
|
|
"nginx_reload_executed",
|
|
"route_smoke_authorized",
|
|
"route_smoke_executed",
|
|
"dns_tls_probe_authorized",
|
|
"certbot_renew_authorized",
|
|
"production_write_authorized",
|
|
"runtime_execution_authorized",
|
|
"action_buttons_allowed",
|
|
]:
|
|
assert_false(
|
|
f"public_gateway_rendered_diff_gate_draft.execution_boundaries.{false_key}",
|
|
public_gateway_rendered_diff_gate_draft["execution_boundaries"][false_key],
|
|
)
|
|
assert_true(
|
|
"public_gateway_rendered_diff_gate_draft.execution_boundaries.not_authorization",
|
|
public_gateway_rendered_diff_gate_draft["execution_boundaries"]["not_authorization"],
|
|
)
|
|
expected_public_gateway_rendered_diff_ids = [
|
|
"public_gateway_rendered_diff_gate:host188_all_sites",
|
|
"public_gateway_rendered_diff_gate:host188_internal_tools_https",
|
|
"public_gateway_rendered_diff_gate:host110_ollama_proxy",
|
|
]
|
|
assert_equal(
|
|
"public_gateway_rendered_diff_gate_draft.diff_gate_ids",
|
|
[item["diff_gate_id"] for item in public_gateway_rendered_diff_gate_draft["diff_gate_candidates"]],
|
|
expected_public_gateway_rendered_diff_ids,
|
|
)
|
|
expected_public_gateway_rendered_diff_stage_ids = [
|
|
"redacted_export_acceptance_required",
|
|
"normalize_without_raw_conf_storage",
|
|
"rendered_diff_owner_review_required",
|
|
"nginx_test_approval_package_required",
|
|
"reload_approval_separate",
|
|
"route_smoke_matrix_required",
|
|
"postcheck_and_rollback_required",
|
|
]
|
|
assert_equal(
|
|
"public_gateway_rendered_diff_gate_draft.preflight_stage_ids",
|
|
[item["stage_id"] for item in public_gateway_rendered_diff_gate_draft["preflight_stages"]],
|
|
expected_public_gateway_rendered_diff_stage_ids,
|
|
)
|
|
expected_public_gateway_rendered_diff_blocked_actions = [
|
|
"read_live_conf_over_ssh",
|
|
"store_raw_live_conf",
|
|
"render_diff_from_unredacted_payload",
|
|
"nginx_test_without_approval",
|
|
"nginx_reload_without_approval",
|
|
"route_smoke_without_plan",
|
|
"dns_probe_without_approval",
|
|
"tls_probe_without_approval",
|
|
"certbot_renew_without_approval",
|
|
"modify_nginx_conf",
|
|
"modify_dns_tls_config",
|
|
"change_public_route",
|
|
"write_production_host",
|
|
"open_runtime_gate",
|
|
]
|
|
assert_equal(
|
|
"public_gateway_rendered_diff_gate_draft.blocked_actions",
|
|
public_gateway_rendered_diff_gate_draft["blocked_actions"],
|
|
expected_public_gateway_rendered_diff_blocked_actions,
|
|
)
|
|
for item in public_gateway_rendered_diff_gate_draft["diff_gate_candidates"]:
|
|
assert_equal(
|
|
f"public_gateway_rendered_diff_gate_draft.{item['diff_gate_id']}.field_count",
|
|
len(item["diff_gate_fields"]),
|
|
12,
|
|
)
|
|
assert_true(
|
|
f"public_gateway_rendered_diff_gate_draft.{item['diff_gate_id']}.not_approval",
|
|
item["not_approval"],
|
|
)
|
|
for false_key in [
|
|
"redacted_export_accepted",
|
|
"rendered_diff_candidate",
|
|
"rendered_diff_ready",
|
|
"nginx_test_authorized",
|
|
"nginx_test_executed",
|
|
"nginx_reload_authorized",
|
|
"nginx_reload_executed",
|
|
"route_smoke_authorized",
|
|
"route_smoke_executed",
|
|
"dns_tls_probe_authorized",
|
|
"certbot_renew_authorized",
|
|
"maintenance_window_accepted",
|
|
"rollback_owner_accepted",
|
|
"runtime_gate",
|
|
"action_buttons_allowed",
|
|
"production_write_authorized",
|
|
]:
|
|
assert_false(
|
|
f"public_gateway_rendered_diff_gate_draft.{item['diff_gate_id']}.{false_key}",
|
|
item[false_key],
|
|
)
|
|
assert_equal(
|
|
"public_gateway_owner_response_acceptance.schema",
|
|
public_gateway_owner_response_acceptance["schema_version"],
|
|
"public_gateway_owner_response_acceptance_v1",
|
|
)
|
|
assert_equal(
|
|
"public_gateway_owner_response_acceptance.source_export_request_schema_version",
|
|
public_gateway_owner_response_acceptance["source_export_request_schema_version"],
|
|
"public_gateway_live_conf_export_request_v1",
|
|
)
|
|
assert_equal(
|
|
"public_gateway_owner_response_acceptance.source_intake_preflight_schema_version",
|
|
public_gateway_owner_response_acceptance["source_intake_preflight_schema_version"],
|
|
"public_gateway_redacted_export_intake_preflight_v1",
|
|
)
|
|
assert_equal(
|
|
"public_gateway_owner_response_acceptance.source_rendered_diff_gate_schema_version",
|
|
public_gateway_owner_response_acceptance["source_rendered_diff_gate_schema_version"],
|
|
"public_gateway_rendered_diff_gate_draft_v1",
|
|
)
|
|
assert_equal(
|
|
"public_gateway_owner_response_acceptance.status",
|
|
public_gateway_owner_response_acceptance["status"],
|
|
"owner_response_acceptance_ledger_ready_no_runtime_action",
|
|
)
|
|
expected_public_gateway_owner_response_acceptance_summary = {
|
|
"source_export_request_count": 3,
|
|
"source_intake_candidate_count": 3,
|
|
"source_diff_gate_candidate_count": 3,
|
|
"acceptance_candidate_count": 3,
|
|
"c0_acceptance_candidate_count": 2,
|
|
"c1_acceptance_candidate_count": 1,
|
|
"acceptance_field_count": 23,
|
|
"required_owner_response_field_count": 12,
|
|
"reviewer_check_count": 12,
|
|
"outcome_lane_count": 7,
|
|
"blocked_action_count": 18,
|
|
"request_sent_count": 0,
|
|
"recipient_confirmed_count": 0,
|
|
"owner_response_received_count": 0,
|
|
"owner_response_accepted_count": 0,
|
|
"owner_response_rejected_count": 0,
|
|
"owner_response_quarantined_count": 0,
|
|
"supplement_requested_count": 0,
|
|
"redacted_export_received_count": 0,
|
|
"accepted_redacted_export_count": 0,
|
|
"rendered_diff_candidate_count": 0,
|
|
"rendered_diff_ready_count": 0,
|
|
"nginx_test_authorized_count": 0,
|
|
"nginx_test_executed_count": 0,
|
|
"nginx_reload_authorized_count": 0,
|
|
"nginx_reload_executed_count": 0,
|
|
"route_smoke_authorized_count": 0,
|
|
"route_smoke_executed_count": 0,
|
|
"dns_tls_probe_authorized_count": 0,
|
|
"certbot_renew_authorized_count": 0,
|
|
"maintenance_window_accepted_count": 0,
|
|
"rollback_owner_accepted_count": 0,
|
|
"runtime_gate_count": 0,
|
|
"action_button_count": 0,
|
|
}
|
|
for key, expected in expected_public_gateway_owner_response_acceptance_summary.items():
|
|
assert_equal(
|
|
f"public_gateway_owner_response_acceptance.summary.{key}",
|
|
public_gateway_owner_response_acceptance["summary"][key],
|
|
expected,
|
|
)
|
|
for key, value in public_gateway_owner_response_acceptance["execution_boundaries"].items():
|
|
if key == "not_authorization":
|
|
assert_true(f"public_gateway_owner_response_acceptance.execution_boundaries.{key}", value)
|
|
else:
|
|
assert_false(f"public_gateway_owner_response_acceptance.execution_boundaries.{key}", value)
|
|
expected_public_gateway_owner_response_acceptance_ids = [
|
|
"public_gateway_owner_response_acceptance:host188_all_sites",
|
|
"public_gateway_owner_response_acceptance:host188_internal_tools_https",
|
|
"public_gateway_owner_response_acceptance:host110_ollama_proxy",
|
|
]
|
|
assert_equal(
|
|
"public_gateway_owner_response_acceptance.acceptance_candidate_ids",
|
|
[
|
|
item["acceptance_candidate_id"]
|
|
for item in public_gateway_owner_response_acceptance["acceptance_candidates"]
|
|
],
|
|
expected_public_gateway_owner_response_acceptance_ids,
|
|
)
|
|
expected_public_gateway_owner_response_reviewer_checks = [
|
|
"owner_identity_present",
|
|
"decision_reason_present",
|
|
"redacted_refs_only",
|
|
"raw_conf_absent",
|
|
"secret_value_absent",
|
|
"route_scope_matches_snapshot",
|
|
"rendered_diff_ref_not_payload",
|
|
"nginx_test_separate_approval",
|
|
"route_smoke_plan_present",
|
|
"maintenance_window_present",
|
|
"rollback_owner_present",
|
|
"counts_transition_safe",
|
|
]
|
|
assert_equal(
|
|
"public_gateway_owner_response_acceptance.reviewer_check_ids",
|
|
[item["check_id"] for item in public_gateway_owner_response_acceptance["reviewer_checks"]],
|
|
expected_public_gateway_owner_response_reviewer_checks,
|
|
)
|
|
expected_public_gateway_owner_response_outcome_lanes = [
|
|
"waiting_owner_response",
|
|
"quarantine_raw_payload",
|
|
"reject_secret_or_unredacted_conf",
|
|
"request_supplement",
|
|
"ready_for_rendered_diff_review",
|
|
"owner_review_only_update",
|
|
"waiting_runtime_gate",
|
|
]
|
|
assert_equal(
|
|
"public_gateway_owner_response_acceptance.outcome_lane_ids",
|
|
[item["lane_id"] for item in public_gateway_owner_response_acceptance["outcome_lanes"]],
|
|
expected_public_gateway_owner_response_outcome_lanes,
|
|
)
|
|
expected_public_gateway_owner_response_blocked_actions = [
|
|
"read_live_conf_over_ssh",
|
|
"store_raw_live_conf",
|
|
"accept_unredacted_live_conf",
|
|
"collect_secret_value",
|
|
"render_diff_from_unredacted_payload",
|
|
"mark_owner_response_accepted_without_reviewer_record",
|
|
"nginx_test_without_separate_approval",
|
|
"nginx_reload_without_separate_approval",
|
|
"route_smoke_without_matrix",
|
|
"dns_probe_without_approval",
|
|
"tls_probe_without_approval",
|
|
"certbot_renew_without_approval",
|
|
"modify_nginx_conf",
|
|
"modify_dns_tls_config",
|
|
"change_public_route",
|
|
"write_production_host",
|
|
"open_runtime_gate",
|
|
"add_action_button",
|
|
]
|
|
assert_equal(
|
|
"public_gateway_owner_response_acceptance.blocked_actions",
|
|
public_gateway_owner_response_acceptance["blocked_actions"],
|
|
expected_public_gateway_owner_response_blocked_actions,
|
|
)
|
|
for item in public_gateway_owner_response_acceptance["acceptance_candidates"]:
|
|
assert_equal(
|
|
f"public_gateway_owner_response_acceptance.{item['acceptance_candidate_id']}.field_count",
|
|
len(item["acceptance_fields"]),
|
|
23,
|
|
)
|
|
assert_equal(
|
|
f"public_gateway_owner_response_acceptance.{item['acceptance_candidate_id']}.required_owner_response_fields",
|
|
len(item["required_owner_response_fields"]),
|
|
12,
|
|
)
|
|
assert_equal(
|
|
f"public_gateway_owner_response_acceptance.{item['acceptance_candidate_id']}.reviewer_checks",
|
|
len(item["reviewer_checks"]),
|
|
12,
|
|
)
|
|
assert_equal(
|
|
f"public_gateway_owner_response_acceptance.{item['acceptance_candidate_id']}.outcome_lanes",
|
|
len(item["outcome_lanes"]),
|
|
7,
|
|
)
|
|
assert_equal(
|
|
f"public_gateway_owner_response_acceptance.{item['acceptance_candidate_id']}.blocked_actions",
|
|
len(item["blocked_actions"]),
|
|
18,
|
|
)
|
|
assert_true(
|
|
f"public_gateway_owner_response_acceptance.{item['acceptance_candidate_id']}.not_approval",
|
|
item["not_approval"],
|
|
)
|
|
for false_key in [
|
|
"request_sent",
|
|
"recipient_confirmed",
|
|
"owner_response_received",
|
|
"owner_response_accepted",
|
|
"owner_response_rejected",
|
|
"owner_response_quarantined",
|
|
"supplement_requested",
|
|
"redacted_export_received",
|
|
"accepted_redacted_export",
|
|
"rendered_diff_candidate",
|
|
"rendered_diff_ready",
|
|
"nginx_test_authorized",
|
|
"nginx_test_executed",
|
|
"nginx_reload_authorized",
|
|
"nginx_reload_executed",
|
|
"route_smoke_authorized",
|
|
"route_smoke_executed",
|
|
"dns_tls_probe_authorized",
|
|
"certbot_renew_authorized",
|
|
"maintenance_window_accepted",
|
|
"rollback_owner_accepted",
|
|
"production_write_authorized",
|
|
"runtime_gate",
|
|
"action_buttons_allowed",
|
|
]:
|
|
assert_false(
|
|
f"public_gateway_owner_response_acceptance.{item['acceptance_candidate_id']}.{false_key}",
|
|
item[false_key],
|
|
)
|
|
assert_equal(
|
|
"public_gateway_rendered_diff_acceptance.schema",
|
|
public_gateway_rendered_diff_acceptance["schema_version"],
|
|
"public_gateway_rendered_diff_acceptance_v1",
|
|
)
|
|
assert_equal(
|
|
"public_gateway_rendered_diff_acceptance.source_rendered_diff_gate_schema_version",
|
|
public_gateway_rendered_diff_acceptance["source_rendered_diff_gate_schema_version"],
|
|
"public_gateway_rendered_diff_gate_draft_v1",
|
|
)
|
|
assert_equal(
|
|
"public_gateway_rendered_diff_acceptance.source_owner_response_acceptance_schema_version",
|
|
public_gateway_rendered_diff_acceptance["source_owner_response_acceptance_schema_version"],
|
|
"public_gateway_owner_response_acceptance_v1",
|
|
)
|
|
assert_equal(
|
|
"public_gateway_rendered_diff_acceptance.status",
|
|
public_gateway_rendered_diff_acceptance["status"],
|
|
"rendered_diff_acceptance_ledger_ready_no_runtime_action",
|
|
)
|
|
expected_public_gateway_rendered_diff_acceptance_summary = {
|
|
"source_diff_gate_candidate_count": 3,
|
|
"source_owner_response_acceptance_candidate_count": 3,
|
|
"diff_acceptance_candidate_count": 3,
|
|
"c0_diff_acceptance_candidate_count": 2,
|
|
"c1_diff_acceptance_candidate_count": 1,
|
|
"diff_acceptance_field_count": 25,
|
|
"required_evidence_field_count": 14,
|
|
"reviewer_check_count": 15,
|
|
"outcome_lane_count": 8,
|
|
"blocked_action_count": 22,
|
|
"owner_response_accepted_count": 0,
|
|
"redacted_export_accepted_count": 0,
|
|
"rendered_diff_received_count": 0,
|
|
"rendered_diff_accepted_count": 0,
|
|
"nginx_test_evidence_received_count": 0,
|
|
"nginx_test_evidence_accepted_count": 0,
|
|
"route_smoke_matrix_received_count": 0,
|
|
"route_smoke_matrix_accepted_count": 0,
|
|
"route_smoke_result_received_count": 0,
|
|
"route_smoke_result_accepted_count": 0,
|
|
"tls_acme_impact_accepted_count": 0,
|
|
"maintenance_window_accepted_count": 0,
|
|
"rollback_owner_accepted_count": 0,
|
|
"postcheck_evidence_accepted_count": 0,
|
|
"nginx_test_authorized_count": 0,
|
|
"nginx_test_executed_count": 0,
|
|
"nginx_reload_authorized_count": 0,
|
|
"nginx_reload_executed_count": 0,
|
|
"route_smoke_authorized_count": 0,
|
|
"route_smoke_executed_count": 0,
|
|
"dns_tls_probe_authorized_count": 0,
|
|
"certbot_renew_authorized_count": 0,
|
|
"runtime_gate_count": 0,
|
|
"action_button_count": 0,
|
|
}
|
|
for key, expected in expected_public_gateway_rendered_diff_acceptance_summary.items():
|
|
assert_equal(
|
|
f"public_gateway_rendered_diff_acceptance.summary.{key}",
|
|
public_gateway_rendered_diff_acceptance["summary"][key],
|
|
expected,
|
|
)
|
|
for key, value in public_gateway_rendered_diff_acceptance["execution_boundaries"].items():
|
|
if key == "not_authorization":
|
|
assert_true(f"public_gateway_rendered_diff_acceptance.execution_boundaries.{key}", value)
|
|
else:
|
|
assert_false(f"public_gateway_rendered_diff_acceptance.execution_boundaries.{key}", value)
|
|
expected_public_gateway_rendered_diff_acceptance_ids = [
|
|
"public_gateway_rendered_diff_acceptance:host188_all_sites",
|
|
"public_gateway_rendered_diff_acceptance:host188_internal_tools_https",
|
|
"public_gateway_rendered_diff_acceptance:host110_ollama_proxy",
|
|
]
|
|
assert_equal(
|
|
"public_gateway_rendered_diff_acceptance.diff_acceptance_ids",
|
|
[
|
|
item["diff_acceptance_id"]
|
|
for item in public_gateway_rendered_diff_acceptance["diff_acceptance_candidates"]
|
|
],
|
|
expected_public_gateway_rendered_diff_acceptance_ids,
|
|
)
|
|
expected_public_gateway_rendered_diff_acceptance_reviewer_checks = [
|
|
"owner_response_accepted_first",
|
|
"redacted_live_conf_ref_only",
|
|
"rendered_diff_ref_not_payload",
|
|
"diff_scope_matches_config_id",
|
|
"nginx_test_evidence_is_readback_only",
|
|
"nginx_test_result_has_timestamp",
|
|
"route_smoke_matrix_complete",
|
|
"tls_acme_impact_separated",
|
|
"secret_value_absent",
|
|
"maintenance_window_present",
|
|
"rollback_owner_and_ref_present",
|
|
"postcheck_plan_present",
|
|
"no_execution_request_embedded",
|
|
"counts_transition_safe",
|
|
"action_button_absent",
|
|
]
|
|
assert_equal(
|
|
"public_gateway_rendered_diff_acceptance.reviewer_check_ids",
|
|
[item["check_id"] for item in public_gateway_rendered_diff_acceptance["reviewer_checks"]],
|
|
expected_public_gateway_rendered_diff_acceptance_reviewer_checks,
|
|
)
|
|
expected_public_gateway_rendered_diff_acceptance_outcome_lanes = [
|
|
"waiting_owner_response_acceptance",
|
|
"waiting_rendered_diff_evidence",
|
|
"quarantine_raw_conf_or_payload",
|
|
"reject_secret_or_execution_request",
|
|
"request_evidence_supplement",
|
|
"ready_for_reviewer_acceptance",
|
|
"accepted_for_runtime_gate_planning",
|
|
"waiting_separate_runtime_approval",
|
|
]
|
|
assert_equal(
|
|
"public_gateway_rendered_diff_acceptance.outcome_lane_ids",
|
|
[item["lane_id"] for item in public_gateway_rendered_diff_acceptance["outcome_lanes"]],
|
|
expected_public_gateway_rendered_diff_acceptance_outcome_lanes,
|
|
)
|
|
expected_public_gateway_rendered_diff_acceptance_blocked_actions = [
|
|
"read_live_conf_over_ssh",
|
|
"store_raw_live_conf",
|
|
"store_full_rendered_diff_payload",
|
|
"accept_unredacted_live_conf",
|
|
"collect_secret_value",
|
|
"accept_execution_request_inside_evidence",
|
|
"mark_rendered_diff_accepted_without_owner_response",
|
|
"mark_rendered_diff_accepted_without_reviewer_record",
|
|
"run_nginx_test_from_diff_acceptance",
|
|
"run_route_smoke_from_diff_acceptance",
|
|
"nginx_reload_from_diff_acceptance",
|
|
"dns_probe_from_diff_acceptance",
|
|
"tls_probe_from_diff_acceptance",
|
|
"certbot_renew_from_diff_acceptance",
|
|
"modify_nginx_conf",
|
|
"modify_dns_tls_config",
|
|
"change_public_route",
|
|
"change_admin_route",
|
|
"change_websocket_route",
|
|
"write_production_host",
|
|
"open_runtime_gate",
|
|
"add_action_button",
|
|
]
|
|
assert_equal(
|
|
"public_gateway_rendered_diff_acceptance.blocked_actions",
|
|
public_gateway_rendered_diff_acceptance["blocked_actions"],
|
|
expected_public_gateway_rendered_diff_acceptance_blocked_actions,
|
|
)
|
|
for item in public_gateway_rendered_diff_acceptance["diff_acceptance_candidates"]:
|
|
assert_equal(
|
|
f"public_gateway_rendered_diff_acceptance.{item['diff_acceptance_id']}.field_count",
|
|
len(item["acceptance_fields"]),
|
|
25,
|
|
)
|
|
assert_equal(
|
|
f"public_gateway_rendered_diff_acceptance.{item['diff_acceptance_id']}.required_evidence_fields",
|
|
len(item["required_evidence_fields"]),
|
|
14,
|
|
)
|
|
assert_equal(
|
|
f"public_gateway_rendered_diff_acceptance.{item['diff_acceptance_id']}.reviewer_checks",
|
|
len(item["reviewer_checks"]),
|
|
15,
|
|
)
|
|
assert_equal(
|
|
f"public_gateway_rendered_diff_acceptance.{item['diff_acceptance_id']}.outcome_lanes",
|
|
len(item["outcome_lanes"]),
|
|
8,
|
|
)
|
|
assert_equal(
|
|
f"public_gateway_rendered_diff_acceptance.{item['diff_acceptance_id']}.blocked_actions",
|
|
len(item["blocked_actions"]),
|
|
22,
|
|
)
|
|
assert_true(
|
|
f"public_gateway_rendered_diff_acceptance.{item['diff_acceptance_id']}.not_approval",
|
|
item["not_approval"],
|
|
)
|
|
for false_key in [
|
|
"owner_response_accepted",
|
|
"redacted_export_accepted",
|
|
"rendered_diff_received",
|
|
"rendered_diff_accepted",
|
|
"nginx_test_evidence_received",
|
|
"nginx_test_evidence_accepted",
|
|
"route_smoke_matrix_received",
|
|
"route_smoke_matrix_accepted",
|
|
"route_smoke_result_received",
|
|
"route_smoke_result_accepted",
|
|
"tls_acme_impact_accepted",
|
|
"maintenance_window_accepted",
|
|
"rollback_owner_accepted",
|
|
"postcheck_evidence_accepted",
|
|
"nginx_test_authorized",
|
|
"nginx_test_executed",
|
|
"nginx_reload_authorized",
|
|
"nginx_reload_executed",
|
|
"route_smoke_authorized",
|
|
"route_smoke_executed",
|
|
"dns_tls_probe_authorized",
|
|
"certbot_renew_authorized",
|
|
"production_write_authorized",
|
|
"runtime_gate",
|
|
"action_buttons_allowed",
|
|
]:
|
|
assert_false(
|
|
f"public_gateway_rendered_diff_acceptance.{item['diff_acceptance_id']}.{false_key}",
|
|
item[false_key],
|
|
)
|
|
for source_path in [
|
|
"docs/security/public-gateway-preflight-inventory.snapshot.json",
|
|
"docs/security/PUBLIC-GATEWAY-PREFLIGHT-INVENTORY.md",
|
|
"docs/security/public-gateway-owner-response-acceptance.snapshot.json",
|
|
"docs/security/PUBLIC-GATEWAY-OWNER-RESPONSE-ACCEPTANCE.md",
|
|
"docs/security/public-gateway-rendered-diff-acceptance.snapshot.json",
|
|
"docs/security/PUBLIC-GATEWAY-RENDERED-DIFF-ACCEPTANCE.md",
|
|
"docs/schemas/public_gateway_preflight_inventory_v1.schema.json",
|
|
"docs/security/k8s-argocd-owner-response-acceptance.snapshot.json",
|
|
"docs/security/K8S-ARGOCD-OWNER-RESPONSE-ACCEPTANCE.md",
|
|
"docs/security/k8s-argocd-change-evidence-acceptance.snapshot.json",
|
|
"docs/security/K8S-ARGOCD-CHANGE-EVIDENCE-ACCEPTANCE.md",
|
|
"docs/security/host-service-config-inventory.snapshot.json",
|
|
"docs/security/HOST-SERVICE-CONFIG-INVENTORY.md",
|
|
"docs/schemas/host_service_config_inventory_v1.schema.json",
|
|
"docs/security/ssh-network-access-inventory.snapshot.json",
|
|
"docs/security/SSH-NETWORK-ACCESS-INVENTORY.md",
|
|
"docs/security/port-firewall-change-evidence-acceptance.snapshot.json",
|
|
"docs/security/PORT-FIREWALL-CHANGE-EVIDENCE-ACCEPTANCE.md",
|
|
"docs/schemas/ssh_network_access_inventory_v1.schema.json",
|
|
"docs/security/backup-restore-escrow-inventory.snapshot.json",
|
|
"docs/security/BACKUP-RESTORE-ESCROW-INVENTORY.md",
|
|
"docs/security/backup-restore-owner-response-acceptance.snapshot.json",
|
|
"docs/security/BACKUP-RESTORE-OWNER-RESPONSE-ACCEPTANCE.md",
|
|
"docs/schemas/backup_restore_escrow_inventory_v1.schema.json",
|
|
"docs/security/monitoring-alerting-observability-inventory.snapshot.json",
|
|
"docs/security/MONITORING-ALERTING-OBSERVABILITY-INVENTORY.md",
|
|
"docs/schemas/monitoring_alerting_observability_inventory_v1.schema.json",
|
|
"docs/security/public-runtime-config-change-evidence-acceptance.snapshot.json",
|
|
"docs/security/PUBLIC-RUNTIME-CONFIG-CHANGE-EVIDENCE-ACCEPTANCE.md",
|
|
]:
|
|
assert_contains(
|
|
"iwooos_projection.source_paths.config_inventory",
|
|
iwooos_projection["source_paths"],
|
|
source_path,
|
|
)
|
|
assert_true(
|
|
"iwooos_projection.summary.high_value_config_control_coverage_first_layer",
|
|
iwooos_projection["summary"]["high_value_config_control_coverage_first_layer"],
|
|
)
|
|
assert_equal(
|
|
"iwooos_projection.summary.high_value_config_control_coverage_summary_count",
|
|
iwooos_projection["summary"]["high_value_config_control_coverage_summary_count"],
|
|
4,
|
|
)
|
|
assert_equal(
|
|
"iwooos_projection.summary.high_value_config_control_coverage_item_count",
|
|
iwooos_projection["summary"]["high_value_config_control_coverage_item_count"],
|
|
4,
|
|
)
|
|
expected_high_value_config_coverage_summary = {
|
|
"high_value_config_control_coverage_category_count": 14,
|
|
"high_value_config_control_coverage_c0_category_count": 8,
|
|
"high_value_config_control_coverage_c1_category_count": 4,
|
|
"high_value_config_control_coverage_average_percent": 68,
|
|
"high_value_config_control_coverage_needs_live_evidence_count": 9,
|
|
"high_value_config_control_coverage_owner_response_required_count": 14,
|
|
"high_value_config_control_coverage_owner_response_received_count": 0,
|
|
"high_value_config_control_coverage_owner_response_accepted_count": 0,
|
|
"high_value_config_control_coverage_runtime_gate_count": 0,
|
|
"high_value_config_control_coverage_action_button_count": 0,
|
|
"high_value_config_control_coverage_lowest_category_count": 4,
|
|
}
|
|
for key, expected in expected_high_value_config_coverage_summary.items():
|
|
assert_equal(
|
|
f"iwooos_projection.summary.{key}",
|
|
iwooos_projection["summary"][key],
|
|
expected,
|
|
)
|
|
expected_host_service_projection_summary = {
|
|
"host_service_config_inventory_first_layer": True,
|
|
"host_service_config_inventory_surface_count": 9,
|
|
"host_service_config_inventory_source_exists_count": 9,
|
|
"host_service_config_inventory_expected_host_scope_count": 5,
|
|
"host_service_config_inventory_docker_compose_source_count": 5,
|
|
"host_service_config_inventory_host_repair_whitelist_count": 2,
|
|
"host_service_config_inventory_systemd_restart_surface_count": 1,
|
|
"host_service_config_inventory_write_capable_surface_count": 3,
|
|
"host_service_config_inventory_owner_response_required_count": 9,
|
|
"host_service_config_inventory_owner_response_received_count": 0,
|
|
"host_service_config_inventory_owner_response_accepted_count": 0,
|
|
"host_service_config_inventory_live_evidence_required_count": 8,
|
|
"host_service_config_inventory_live_evidence_received_count": 0,
|
|
"host_service_config_inventory_restart_window_accepted_count": 0,
|
|
"host_service_config_inventory_rollback_owner_accepted_count": 0,
|
|
"host_service_config_inventory_runtime_gate_count": 0,
|
|
"host_service_config_inventory_action_button_count": 0,
|
|
"host_service_config_inventory_coverage_percent_before_inventory": 42,
|
|
"host_service_config_inventory_coverage_percent_after_inventory": 50,
|
|
}
|
|
for key, expected in expected_host_service_projection_summary.items():
|
|
assert_equal(
|
|
f"iwooos_projection.summary.{key}",
|
|
iwooos_projection["summary"][key],
|
|
expected,
|
|
)
|
|
expected_ssh_network_projection_summary = {
|
|
"ssh_network_access_inventory_first_layer": True,
|
|
"ssh_network_access_inventory_surface_count": 16,
|
|
"ssh_network_access_inventory_source_exists_count": 16,
|
|
"ssh_network_access_inventory_expected_scope_count": 16,
|
|
"ssh_network_access_inventory_ssh_source_surface_count": 11,
|
|
"ssh_network_access_inventory_network_policy_surface_count": 2,
|
|
"ssh_network_access_inventory_nodeport_surface_count": 2,
|
|
"ssh_network_access_inventory_sudoers_surface_count": 1,
|
|
"ssh_network_access_inventory_wireguard_surface_count": 1,
|
|
"ssh_network_access_inventory_write_capable_surface_count": 6,
|
|
"ssh_network_access_inventory_owner_response_required_count": 16,
|
|
"ssh_network_access_inventory_owner_response_received_count": 0,
|
|
"ssh_network_access_inventory_owner_response_accepted_count": 0,
|
|
"ssh_network_access_inventory_live_evidence_required_count": 16,
|
|
"ssh_network_access_inventory_live_evidence_received_count": 0,
|
|
"ssh_network_access_inventory_maintenance_window_accepted_count": 0,
|
|
"ssh_network_access_inventory_rollback_owner_accepted_count": 0,
|
|
"ssh_network_access_inventory_runtime_gate_count": 0,
|
|
"ssh_network_access_inventory_action_button_count": 0,
|
|
"ssh_network_access_inventory_coverage_percent_before_inventory": 48,
|
|
"ssh_network_access_inventory_coverage_percent_after_inventory": 54,
|
|
"ssh_network_owner_response_acceptance_first_layer": True,
|
|
"ssh_network_owner_response_acceptance_candidate_count": 16,
|
|
"ssh_network_owner_response_acceptance_write_capable_candidate_count": 6,
|
|
"ssh_network_owner_response_acceptance_live_evidence_required_candidate_count": 16,
|
|
"ssh_network_owner_response_acceptance_reviewer_check_count": 15,
|
|
"ssh_network_owner_response_acceptance_outcome_lane_count": 7,
|
|
"ssh_network_owner_response_acceptance_blocked_action_count": 22,
|
|
"ssh_network_owner_response_acceptance_owner_response_received_count": 0,
|
|
"ssh_network_owner_response_acceptance_owner_response_accepted_count": 0,
|
|
"ssh_network_owner_response_acceptance_firewall_owner_accepted_count": 0,
|
|
"ssh_network_owner_response_acceptance_port_policy_accepted_count": 0,
|
|
"ssh_network_owner_response_acceptance_wireguard_cutover_accepted_count": 0,
|
|
"ssh_network_owner_response_acceptance_runtime_gate_count": 0,
|
|
"ssh_network_owner_response_acceptance_action_button_count": 0,
|
|
"ssh_network_owner_response_acceptance_coverage_percent_after_acceptance": 58,
|
|
"port_firewall_change_evidence_acceptance_first_layer": True,
|
|
"port_firewall_change_evidence_acceptance_candidate_count": 14,
|
|
"port_firewall_change_evidence_acceptance_write_capable_candidate_count": 6,
|
|
"port_firewall_change_evidence_acceptance_policy_or_exposure_candidate_count": 5,
|
|
"port_firewall_change_evidence_acceptance_required_evidence_field_count": 16,
|
|
"port_firewall_change_evidence_acceptance_reviewer_check_count": 16,
|
|
"port_firewall_change_evidence_acceptance_outcome_lane_count": 8,
|
|
"port_firewall_change_evidence_acceptance_blocked_action_count": 24,
|
|
"port_firewall_change_evidence_acceptance_received_count": 0,
|
|
"port_firewall_change_evidence_acceptance_accepted_count": 0,
|
|
"port_firewall_change_evidence_acceptance_actor_identified_count": 0,
|
|
"port_firewall_change_evidence_acceptance_cross_project_sync_accepted_count": 0,
|
|
"port_firewall_change_evidence_acceptance_postcheck_evidence_accepted_count": 0,
|
|
"port_firewall_change_evidence_acceptance_runtime_gate_count": 0,
|
|
"port_firewall_change_evidence_acceptance_action_button_count": 0,
|
|
"port_firewall_change_evidence_acceptance_coverage_percent_after_acceptance": 60,
|
|
"k8s_argocd_change_evidence_acceptance_first_layer": True,
|
|
"k8s_argocd_change_evidence_acceptance_candidate_count": 4,
|
|
"k8s_argocd_change_evidence_acceptance_c0_candidate_count": 3,
|
|
"k8s_argocd_change_evidence_acceptance_c1_candidate_count": 1,
|
|
"k8s_argocd_change_evidence_acceptance_write_capable_candidate_count": 4,
|
|
"k8s_argocd_change_evidence_acceptance_source_manifest_file_count": 49,
|
|
"k8s_argocd_change_evidence_acceptance_source_yaml_manifest_file_count": 45,
|
|
"k8s_argocd_change_evidence_acceptance_network_policy_object_count": 6,
|
|
"k8s_argocd_change_evidence_acceptance_secret_object_count": 6,
|
|
"k8s_argocd_change_evidence_acceptance_rbac_object_count": 5,
|
|
"k8s_argocd_change_evidence_acceptance_required_evidence_field_count": 18,
|
|
"k8s_argocd_change_evidence_acceptance_reviewer_check_count": 18,
|
|
"k8s_argocd_change_evidence_acceptance_outcome_lane_count": 8,
|
|
"k8s_argocd_change_evidence_acceptance_blocked_action_count": 28,
|
|
"k8s_argocd_change_evidence_acceptance_received_count": 0,
|
|
"k8s_argocd_change_evidence_acceptance_accepted_count": 0,
|
|
"k8s_argocd_change_evidence_acceptance_rendered_manifest_diff_accepted_count": 0,
|
|
"k8s_argocd_change_evidence_acceptance_argocd_application_readback_accepted_count": 0,
|
|
"k8s_argocd_change_evidence_acceptance_argocd_sync_revision_accepted_count": 0,
|
|
"k8s_argocd_change_evidence_acceptance_rollout_status_accepted_count": 0,
|
|
"k8s_argocd_change_evidence_acceptance_service_route_smoke_accepted_count": 0,
|
|
"k8s_argocd_change_evidence_acceptance_metrics_alert_accepted_count": 0,
|
|
"k8s_argocd_change_evidence_acceptance_runtime_approval_package_ready_count": 0,
|
|
"k8s_argocd_change_evidence_acceptance_runtime_gate_count": 0,
|
|
"k8s_argocd_change_evidence_acceptance_action_button_count": 0,
|
|
"k8s_argocd_change_evidence_acceptance_coverage_percent_after_acceptance": 64,
|
|
"cd_runner_secret_injection_change_evidence_acceptance_first_layer": True,
|
|
"cd_runner_secret_injection_change_evidence_acceptance_candidate_count": 5,
|
|
"cd_runner_secret_injection_change_evidence_acceptance_c0_candidate_count": 4,
|
|
"cd_runner_secret_injection_change_evidence_acceptance_c1_candidate_count": 1,
|
|
"cd_runner_secret_injection_change_evidence_acceptance_write_capable_candidate_count": 5,
|
|
"cd_runner_secret_injection_change_evidence_acceptance_local_workflow_file_count": 33,
|
|
"cd_runner_secret_injection_change_evidence_acceptance_gitea_workflow_file_count": 12,
|
|
"cd_runner_secret_injection_change_evidence_acceptance_github_workflow_file_count": 21,
|
|
"cd_runner_secret_injection_change_evidence_acceptance_local_referenced_secret_name_count": 42,
|
|
"cd_runner_secret_injection_change_evidence_acceptance_runner_label_count": 5,
|
|
"cd_runner_secret_injection_change_evidence_acceptance_export_request_count": 9,
|
|
"cd_runner_secret_injection_change_evidence_acceptance_export_lane_count": 5,
|
|
"cd_runner_secret_injection_change_evidence_acceptance_owner_response_template_count": 5,
|
|
"cd_runner_secret_injection_change_evidence_acceptance_required_evidence_field_count": 19,
|
|
"cd_runner_secret_injection_change_evidence_acceptance_reviewer_check_count": 19,
|
|
"cd_runner_secret_injection_change_evidence_acceptance_outcome_lane_count": 8,
|
|
"cd_runner_secret_injection_change_evidence_acceptance_blocked_action_count": 32,
|
|
"cd_runner_secret_injection_change_evidence_acceptance_received_count": 0,
|
|
"cd_runner_secret_injection_change_evidence_acceptance_accepted_count": 0,
|
|
"cd_runner_secret_injection_change_evidence_acceptance_workflow_diff_accepted_count": 0,
|
|
"cd_runner_secret_injection_change_evidence_acceptance_runner_attestation_accepted_count": 0,
|
|
"cd_runner_secret_injection_change_evidence_acceptance_secret_name_parity_accepted_count": 0,
|
|
"cd_runner_secret_injection_change_evidence_acceptance_secret_injection_route_accepted_count": 0,
|
|
"cd_runner_secret_injection_change_evidence_acceptance_deploy_marker_readback_accepted_count": 0,
|
|
"cd_runner_secret_injection_change_evidence_acceptance_guard_result_accepted_count": 0,
|
|
"cd_runner_secret_injection_change_evidence_acceptance_postcheck_evidence_accepted_count": 0,
|
|
"cd_runner_secret_injection_change_evidence_acceptance_runtime_approval_package_ready_count": 0,
|
|
"cd_runner_secret_injection_change_evidence_acceptance_runtime_gate_count": 0,
|
|
"cd_runner_secret_injection_change_evidence_acceptance_action_button_count": 0,
|
|
"cd_runner_secret_injection_change_evidence_acceptance_secret_metadata_coverage_percent_before_acceptance": 66,
|
|
"cd_runner_secret_injection_change_evidence_acceptance_secret_metadata_coverage_percent_after_acceptance": 68,
|
|
"cd_runner_secret_injection_change_evidence_acceptance_gitea_workflow_runner_coverage_percent_before_acceptance": 70,
|
|
"cd_runner_secret_injection_change_evidence_acceptance_gitea_workflow_runner_coverage_percent_after_acceptance": 72,
|
|
"public_runtime_config_change_evidence_acceptance_first_layer": True,
|
|
"public_runtime_config_change_evidence_acceptance_candidate_count": 6,
|
|
"public_runtime_config_change_evidence_acceptance_c0_candidate_count": 5,
|
|
"public_runtime_config_change_evidence_acceptance_c1_candidate_count": 1,
|
|
"public_runtime_config_change_evidence_acceptance_write_capable_candidate_count": 6,
|
|
"public_runtime_config_change_evidence_acceptance_source_ref_count": 20,
|
|
"public_runtime_config_change_evidence_acceptance_required_evidence_field_count": 21,
|
|
"public_runtime_config_change_evidence_acceptance_reviewer_check_count": 21,
|
|
"public_runtime_config_change_evidence_acceptance_outcome_lane_count": 8,
|
|
"public_runtime_config_change_evidence_acceptance_blocked_action_count": 32,
|
|
"public_runtime_config_change_evidence_acceptance_received_count": 0,
|
|
"public_runtime_config_change_evidence_acceptance_accepted_count": 0,
|
|
"public_runtime_config_change_evidence_acceptance_route_scope_accepted_count": 0,
|
|
"public_runtime_config_change_evidence_acceptance_admin_auth_boundary_accepted_count": 0,
|
|
"public_runtime_config_change_evidence_acceptance_api_contract_readback_accepted_count": 0,
|
|
"public_runtime_config_change_evidence_acceptance_cors_origin_diff_accepted_count": 0,
|
|
"public_runtime_config_change_evidence_acceptance_frontend_env_diff_accepted_count": 0,
|
|
"public_runtime_config_change_evidence_acceptance_i18n_redaction_review_accepted_count": 0,
|
|
"public_runtime_config_change_evidence_acceptance_desktop_mobile_smoke_accepted_count": 0,
|
|
"public_runtime_config_change_evidence_acceptance_sensitive_string_scan_accepted_count": 0,
|
|
"public_runtime_config_change_evidence_acceptance_postcheck_evidence_accepted_count": 0,
|
|
"public_runtime_config_change_evidence_acceptance_runtime_approval_package_ready_count": 0,
|
|
"public_runtime_config_change_evidence_acceptance_runtime_gate_count": 0,
|
|
"public_runtime_config_change_evidence_acceptance_action_button_count": 0,
|
|
"public_runtime_config_change_evidence_acceptance_coverage_percent_before_acceptance": 62,
|
|
"public_runtime_config_change_evidence_acceptance_coverage_percent_after_acceptance": 64,
|
|
}
|
|
for key, expected in expected_ssh_network_projection_summary.items():
|
|
assert_equal(
|
|
f"iwooos_projection.summary.{key}",
|
|
iwooos_projection["summary"][key],
|
|
expected,
|
|
)
|
|
expected_backup_restore_projection_summary = {
|
|
"backup_restore_escrow_inventory_first_layer": True,
|
|
"backup_restore_escrow_inventory_surface_count": 38,
|
|
"backup_restore_escrow_inventory_source_exists_count": 38,
|
|
"backup_restore_escrow_inventory_expected_scope_count": 38,
|
|
"backup_restore_escrow_inventory_backup_script_surface_count": 15,
|
|
"backup_restore_escrow_inventory_restore_drill_surface_count": 4,
|
|
"backup_restore_escrow_inventory_offsite_escrow_surface_count": 8,
|
|
"backup_restore_escrow_inventory_velero_surface_count": 5,
|
|
"backup_restore_escrow_inventory_retention_surface_count": 3,
|
|
"backup_restore_escrow_inventory_credential_surface_count": 5,
|
|
"backup_restore_escrow_inventory_alert_surface_count": 1,
|
|
"backup_restore_escrow_inventory_dr_readiness_contract_surface_count": 3,
|
|
"backup_restore_escrow_inventory_write_capable_surface_count": 27,
|
|
"backup_restore_escrow_inventory_owner_response_required_count": 38,
|
|
"backup_restore_escrow_inventory_owner_response_received_count": 0,
|
|
"backup_restore_escrow_inventory_owner_response_accepted_count": 0,
|
|
"backup_restore_escrow_inventory_live_evidence_required_count": 38,
|
|
"backup_restore_escrow_inventory_live_evidence_received_count": 0,
|
|
"backup_restore_escrow_inventory_restore_drill_accepted_count": 0,
|
|
"backup_restore_escrow_inventory_offsite_sync_accepted_count": 0,
|
|
"backup_restore_escrow_inventory_credential_escrow_accepted_count": 0,
|
|
"backup_restore_escrow_inventory_retention_change_accepted_count": 0,
|
|
"backup_restore_escrow_inventory_maintenance_window_accepted_count": 0,
|
|
"backup_restore_escrow_inventory_rollback_owner_accepted_count": 0,
|
|
"backup_restore_escrow_inventory_runtime_gate_count": 0,
|
|
"backup_restore_escrow_inventory_action_button_count": 0,
|
|
"backup_restore_escrow_inventory_coverage_percent_before_inventory": 52,
|
|
"backup_restore_escrow_inventory_coverage_percent_after_inventory": 58,
|
|
}
|
|
for key, expected in expected_backup_restore_projection_summary.items():
|
|
assert_equal(
|
|
f"iwooos_projection.summary.{key}",
|
|
iwooos_projection["summary"][key],
|
|
expected,
|
|
)
|
|
expected_monitoring_alerting_observability_projection_summary = {
|
|
"monitoring_alerting_observability_inventory_first_layer": True,
|
|
"monitoring_alerting_observability_inventory_surface_count": 60,
|
|
"monitoring_alerting_observability_inventory_source_exists_count": 60,
|
|
"monitoring_alerting_observability_inventory_expected_scope_count": 60,
|
|
"monitoring_alerting_observability_inventory_prometheus_config_surface_count": 8,
|
|
"monitoring_alerting_observability_inventory_alert_rule_surface_count": 13,
|
|
"monitoring_alerting_observability_inventory_alertmanager_receiver_surface_count": 1,
|
|
"monitoring_alerting_observability_inventory_grafana_surface_count": 6,
|
|
"monitoring_alerting_observability_inventory_signoz_surface_count": 3,
|
|
"monitoring_alerting_observability_inventory_sentry_surface_count": 4,
|
|
"monitoring_alerting_observability_inventory_langfuse_surface_count": 3,
|
|
"monitoring_alerting_observability_inventory_notification_policy_surface_count": 4,
|
|
"monitoring_alerting_observability_inventory_telegram_surface_count": 3,
|
|
"monitoring_alerting_observability_inventory_otel_surface_count": 1,
|
|
"monitoring_alerting_observability_inventory_deploy_or_reload_surface_count": 6,
|
|
"monitoring_alerting_observability_inventory_drift_guard_surface_count": 1,
|
|
"monitoring_alerting_observability_inventory_smoke_surface_count": 4,
|
|
"monitoring_alerting_observability_inventory_write_capable_surface_count": 11,
|
|
"monitoring_alerting_observability_inventory_surfaces_requiring_owner_response_count": 60,
|
|
"monitoring_alerting_observability_inventory_surfaces_requiring_live_evidence_count": 60,
|
|
"monitoring_alerting_observability_inventory_owner_response_received_count": 0,
|
|
"monitoring_alerting_observability_inventory_owner_response_accepted_count": 0,
|
|
"monitoring_alerting_observability_inventory_live_evidence_received_count": 0,
|
|
"monitoring_alerting_observability_inventory_reload_owner_accepted_count": 0,
|
|
"monitoring_alerting_observability_inventory_receiver_owner_accepted_count": 0,
|
|
"monitoring_alerting_observability_inventory_route_smoke_accepted_count": 0,
|
|
"monitoring_alerting_observability_inventory_maintenance_window_accepted_count": 0,
|
|
"monitoring_alerting_observability_inventory_rollback_owner_accepted_count": 0,
|
|
"monitoring_alerting_observability_inventory_runtime_gate_count": 0,
|
|
"monitoring_alerting_observability_inventory_action_button_count": 0,
|
|
"monitoring_alerting_observability_inventory_coverage_percent_before_inventory": 56,
|
|
"monitoring_alerting_observability_inventory_coverage_percent_after_inventory": 62,
|
|
}
|
|
for key, expected in expected_monitoring_alerting_observability_projection_summary.items():
|
|
assert_equal(
|
|
f"iwooos_projection.summary.{key}",
|
|
iwooos_projection["summary"][key],
|
|
expected,
|
|
)
|
|
expected_public_gateway_preflight_projection_summary = {
|
|
"public_gateway_preflight_first_layer": True,
|
|
"public_gateway_preflight_summary_count": 4,
|
|
"public_gateway_preflight_item_count": 6,
|
|
"public_gateway_preflight_source_config_count": 3,
|
|
"public_gateway_preflight_c0_source_config_count": 2,
|
|
"public_gateway_preflight_managed_domain_count": 14,
|
|
"public_gateway_preflight_route_impact_count": 14,
|
|
"public_gateway_preflight_unique_upstream_count": 14,
|
|
"public_gateway_preflight_tls_certificate_path_count": 10,
|
|
"public_gateway_preflight_certificate_owner_confirmation_required_count": 4,
|
|
"public_gateway_preflight_admin_route_domain_count": 1,
|
|
"public_gateway_preflight_websocket_route_domain_count": 6,
|
|
"public_gateway_preflight_acme_challenge_domain_count": 7,
|
|
"public_gateway_preflight_gate_count": 12,
|
|
"public_gateway_preflight_repo_only_ready_count": 2,
|
|
"public_gateway_preflight_owner_acceptance_required_gate_count": 10,
|
|
"public_gateway_preflight_gate_accepted_count": 0,
|
|
"public_gateway_preflight_owner_response_received_count": 0,
|
|
"public_gateway_preflight_owner_response_accepted_count": 0,
|
|
"public_gateway_preflight_owner_provided_live_conf_received_count": 0,
|
|
"public_gateway_preflight_rendered_diff_ready_count": 0,
|
|
"public_gateway_preflight_nginx_test_evidence_count": 0,
|
|
"public_gateway_preflight_route_smoke_evidence_count": 0,
|
|
"public_gateway_preflight_maintenance_window_accepted_count": 0,
|
|
"public_gateway_preflight_rollback_owner_accepted_count": 0,
|
|
"public_gateway_preflight_runtime_gate_count": 0,
|
|
"public_gateway_preflight_action_button_count": 0,
|
|
"public_gateway_preflight_coverage_percent_before_preflight": 78,
|
|
"public_gateway_preflight_coverage_percent_after_preflight": 84,
|
|
}
|
|
for key, expected in expected_public_gateway_preflight_projection_summary.items():
|
|
assert_equal(
|
|
f"iwooos_projection.summary.{key}",
|
|
iwooos_projection["summary"][key],
|
|
expected,
|
|
)
|
|
assert_true(
|
|
"iwooos_projection.summary.high_value_config_owner_packet_first_layer",
|
|
iwooos_projection["summary"]["high_value_config_owner_packet_first_layer"],
|
|
)
|
|
assert_equal(
|
|
"iwooos_projection.summary.high_value_config_owner_packet_summary_count",
|
|
iwooos_projection["summary"]["high_value_config_owner_packet_summary_count"],
|
|
4,
|
|
)
|
|
assert_equal(
|
|
"iwooos_projection.summary.high_value_config_owner_packet_item_count",
|
|
iwooos_projection["summary"]["high_value_config_owner_packet_item_count"],
|
|
6,
|
|
)
|
|
assert_equal(
|
|
"iwooos_projection.summary.high_value_config_owner_packet_count",
|
|
iwooos_projection["summary"]["high_value_config_owner_packet_count"],
|
|
3,
|
|
)
|
|
assert_equal(
|
|
"iwooos_projection.summary.high_value_config_owner_packet_c0_packet_count",
|
|
iwooos_projection["summary"]["high_value_config_owner_packet_c0_packet_count"],
|
|
2,
|
|
)
|
|
for key in [
|
|
"high_value_config_owner_packet_c1_packet_count",
|
|
"high_value_config_owner_packet_request_sent_count",
|
|
"high_value_config_owner_packet_received_response_count",
|
|
"high_value_config_owner_packet_accepted_response_count",
|
|
"high_value_config_owner_packet_runtime_gate_count",
|
|
]:
|
|
assert_equal(
|
|
f"iwooos_projection.summary.{key}",
|
|
iwooos_projection["summary"][key],
|
|
0,
|
|
)
|
|
assert_true(
|
|
"iwooos_projection.summary.awooop_high_value_config_owner_packet_first_layer",
|
|
iwooos_projection["summary"]["awooop_high_value_config_owner_packet_first_layer"],
|
|
)
|
|
assert_equal(
|
|
"iwooos_projection.summary.awooop_high_value_config_owner_packet_summary_count",
|
|
iwooos_projection["summary"]["awooop_high_value_config_owner_packet_summary_count"],
|
|
4,
|
|
)
|
|
assert_equal(
|
|
"iwooos_projection.summary.awooop_high_value_config_owner_packet_ref_count",
|
|
iwooos_projection["summary"]["awooop_high_value_config_owner_packet_ref_count"],
|
|
4,
|
|
)
|
|
assert_equal(
|
|
"iwooos_projection.summary.awooop_high_value_config_owner_packet_boundary_count",
|
|
iwooos_projection["summary"]["awooop_high_value_config_owner_packet_boundary_count"],
|
|
15,
|
|
)
|
|
for key in [
|
|
"awooop_high_value_config_owner_packet_request_sent_count",
|
|
"awooop_high_value_config_owner_packet_received_response_count",
|
|
"awooop_high_value_config_owner_packet_accepted_response_count",
|
|
"awooop_high_value_config_owner_packet_runtime_gate_count",
|
|
]:
|
|
assert_equal(
|
|
f"iwooos_projection.summary.{key}",
|
|
iwooos_projection["summary"][key],
|
|
0,
|
|
)
|
|
assert_equal(
|
|
"high_value_config_owner_packet_intake.schema_version",
|
|
high_value_config_owner_packet_intake["schema_version"],
|
|
"high_value_config_owner_packet_intake_preflight_v1",
|
|
)
|
|
assert_equal(
|
|
"high_value_config_owner_packet_intake.source_owner_packet_schema_version",
|
|
high_value_config_owner_packet_intake["source_owner_packet_schema_version"],
|
|
"high_value_config_owner_packet_v1",
|
|
)
|
|
assert_equal(
|
|
"high_value_config_owner_packet_intake.status",
|
|
high_value_config_owner_packet_intake["status"],
|
|
"request_dispatch_preflight_ready",
|
|
)
|
|
expected_high_value_config_owner_packet_intake_summary = {
|
|
"packet_count": 3,
|
|
"c0_packet_count": 2,
|
|
"c1_packet_count": 0,
|
|
"canonical_owner_field_count": 9,
|
|
"required_owner_field_total": 27,
|
|
"dispatch_preflight_check_count": 9,
|
|
"reviewer_intake_lane_count": 5,
|
|
"blocked_request_count": 16,
|
|
"request_sent_count": 0,
|
|
"received_response_count": 0,
|
|
"accepted_response_count": 0,
|
|
"rejected_response_count": 0,
|
|
"reviewer_queue_write_count": 0,
|
|
"runtime_gate_count": 0,
|
|
"action_button_count": 0,
|
|
}
|
|
for key, expected in expected_high_value_config_owner_packet_intake_summary.items():
|
|
assert_equal(
|
|
f"high_value_config_owner_packet_intake.summary.{key}",
|
|
high_value_config_owner_packet_intake["summary"][key],
|
|
expected,
|
|
)
|
|
for false_key in [
|
|
"dispatch_authorized",
|
|
"request_sent",
|
|
"reviewer_queue_write",
|
|
"runtime_execution_authorized",
|
|
"secret_value_collection_allowed",
|
|
"production_write_authorized",
|
|
"host_write_authorized",
|
|
"nginx_reload_authorized",
|
|
"dns_tls_change_authorized",
|
|
"workflow_modification_authorized",
|
|
"active_scan_authorized",
|
|
"action_buttons_allowed",
|
|
]:
|
|
assert_false(
|
|
f"high_value_config_owner_packet_intake.execution_boundaries.{false_key}",
|
|
high_value_config_owner_packet_intake["execution_boundaries"][false_key],
|
|
)
|
|
assert_true(
|
|
"high_value_config_owner_packet_intake.execution_boundaries.not_authorization",
|
|
high_value_config_owner_packet_intake["execution_boundaries"]["not_authorization"],
|
|
)
|
|
expected_high_value_config_owner_packet_intake_ids = [
|
|
"high_value_config_owner_packet:dns_tls_certbot",
|
|
"high_value_config_owner_packet:nginx_public_gateway",
|
|
"high_value_config_owner_packet:security_evidence_tooling",
|
|
]
|
|
assert_equal(
|
|
"high_value_config_owner_packet_intake.packet_ids",
|
|
[item["packet_id"] for item in high_value_config_owner_packet_intake["intake_packets"]],
|
|
expected_high_value_config_owner_packet_intake_ids,
|
|
)
|
|
expected_high_value_config_owner_packet_intake_check_ids = [
|
|
"baseline_commit_synced",
|
|
"source_snapshot_current",
|
|
"packet_scope_mapped",
|
|
"canonical_fields_present",
|
|
"redacted_evidence_refs_only",
|
|
"no_sensitive_payload",
|
|
"no_execution_request",
|
|
"maintenance_and_rollback_fields_present",
|
|
"validation_plan_present",
|
|
]
|
|
assert_equal(
|
|
"high_value_config_owner_packet_intake.dispatch_preflight_check_ids",
|
|
[
|
|
item["check_id"]
|
|
for item in high_value_config_owner_packet_intake["dispatch_preflight_checks"]
|
|
],
|
|
expected_high_value_config_owner_packet_intake_check_ids,
|
|
)
|
|
expected_high_value_config_owner_packet_intake_lane_ids = [
|
|
"keep_waiting_owner_response",
|
|
"request_more_evidence",
|
|
"quarantine_sensitive_payload",
|
|
"reject_execution_request",
|
|
"ready_for_reviewer_validation",
|
|
]
|
|
assert_equal(
|
|
"high_value_config_owner_packet_intake.reviewer_intake_lane_ids",
|
|
[item["lane_id"] for item in high_value_config_owner_packet_intake["reviewer_intake_lanes"]],
|
|
expected_high_value_config_owner_packet_intake_lane_ids,
|
|
)
|
|
for packet in high_value_config_owner_packet_intake["intake_packets"]:
|
|
assert_equal(
|
|
f"high_value_config_owner_packet_intake.{packet['packet_id']}.required_owner_field_count",
|
|
len(packet["required_owner_fields"]),
|
|
9,
|
|
)
|
|
assert_true(
|
|
f"high_value_config_owner_packet_intake.{packet['packet_id']}.not_authorization",
|
|
packet["not_authorization"],
|
|
)
|
|
for false_key in [
|
|
"request_sent",
|
|
"received_response",
|
|
"accepted_response",
|
|
"rejected_response",
|
|
"reviewer_queue_write",
|
|
"runtime_gate",
|
|
"action_buttons_allowed",
|
|
"secret_value_collection_allowed",
|
|
"production_write_authorized",
|
|
]:
|
|
assert_false(
|
|
f"high_value_config_owner_packet_intake.{packet['packet_id']}.{false_key}",
|
|
packet[false_key],
|
|
)
|
|
assert_equal(
|
|
"high_value_config_owner_request_draft.schema_version",
|
|
high_value_config_owner_request_draft["schema_version"],
|
|
"high_value_config_owner_request_draft_v1",
|
|
)
|
|
assert_equal(
|
|
"high_value_config_owner_request_draft.source_intake_preflight_schema_version",
|
|
high_value_config_owner_request_draft["source_intake_preflight_schema_version"],
|
|
"high_value_config_owner_packet_intake_preflight_v1",
|
|
)
|
|
assert_equal(
|
|
"high_value_config_owner_request_draft.status",
|
|
high_value_config_owner_request_draft["status"],
|
|
"owner_request_draft_ready_not_dispatched",
|
|
)
|
|
expected_high_value_config_owner_request_draft_summary = {
|
|
"request_draft_count": 3,
|
|
"c0_request_draft_count": 2,
|
|
"c1_request_draft_count": 0,
|
|
"dispatch_preflight_check_count": 9,
|
|
"reviewer_intake_lane_count": 5,
|
|
"handoff_envelope_field_count": 11,
|
|
"required_owner_field_total": 27,
|
|
"forbidden_payload_count": 12,
|
|
"blocked_request_count": 16,
|
|
"request_sent_count": 0,
|
|
"recipient_confirmed_count": 0,
|
|
"audit_event_emitted_count": 0,
|
|
"received_response_count": 0,
|
|
"accepted_response_count": 0,
|
|
"rejected_response_count": 0,
|
|
"reviewer_queue_write_count": 0,
|
|
"runtime_gate_count": 0,
|
|
"action_button_count": 0,
|
|
}
|
|
for key, expected in expected_high_value_config_owner_request_draft_summary.items():
|
|
assert_equal(
|
|
f"high_value_config_owner_request_draft.summary.{key}",
|
|
high_value_config_owner_request_draft["summary"][key],
|
|
expected,
|
|
)
|
|
for false_key in [
|
|
"dispatch_authorized",
|
|
"request_sent",
|
|
"recipient_confirmed",
|
|
"audit_event_emitted",
|
|
"reviewer_queue_write",
|
|
"runtime_execution_authorized",
|
|
"secret_value_collection_allowed",
|
|
"production_write_authorized",
|
|
"host_write_authorized",
|
|
"nginx_reload_authorized",
|
|
"dns_tls_change_authorized",
|
|
"workflow_modification_authorized",
|
|
"active_scan_authorized",
|
|
"action_buttons_allowed",
|
|
]:
|
|
assert_false(
|
|
f"high_value_config_owner_request_draft.execution_boundaries.{false_key}",
|
|
high_value_config_owner_request_draft["execution_boundaries"][false_key],
|
|
)
|
|
assert_true(
|
|
"high_value_config_owner_request_draft.execution_boundaries.not_authorization",
|
|
high_value_config_owner_request_draft["execution_boundaries"]["not_authorization"],
|
|
)
|
|
expected_high_value_config_owner_request_draft_ids = [
|
|
"high_value_config_owner_request:dns_tls_certbot",
|
|
"high_value_config_owner_request:nginx_public_gateway",
|
|
"high_value_config_owner_request:security_evidence_tooling",
|
|
]
|
|
assert_equal(
|
|
"high_value_config_owner_request_draft.request_ids",
|
|
[item["request_id"] for item in high_value_config_owner_request_draft["request_drafts"]],
|
|
expected_high_value_config_owner_request_draft_ids,
|
|
)
|
|
expected_high_value_config_owner_request_handoff_fields = [
|
|
"request_id",
|
|
"stage_id",
|
|
"packet_id",
|
|
"recipient_role_or_team",
|
|
"sender_role_or_team",
|
|
"requested_response_window",
|
|
"allowed_response_format",
|
|
"redacted_evidence_refs",
|
|
"forbidden_payloads",
|
|
"followup_owner",
|
|
"not_approval",
|
|
]
|
|
assert_equal(
|
|
"high_value_config_owner_request_draft.handoff_envelope_fields",
|
|
high_value_config_owner_request_draft["handoff_envelope_fields"],
|
|
expected_high_value_config_owner_request_handoff_fields,
|
|
)
|
|
for draft in high_value_config_owner_request_draft["request_drafts"]:
|
|
assert_equal(
|
|
f"high_value_config_owner_request_draft.{draft['request_id']}.stage_id",
|
|
draft["stage_id"],
|
|
"P0-14",
|
|
)
|
|
assert_equal(
|
|
f"high_value_config_owner_request_draft.{draft['request_id']}.status",
|
|
draft["status"],
|
|
"draft_not_dispatched",
|
|
)
|
|
assert_equal(
|
|
f"high_value_config_owner_request_draft.{draft['request_id']}.response_field_count",
|
|
len(draft["allowed_response_format"]["fields"]),
|
|
9,
|
|
)
|
|
assert_true(
|
|
f"high_value_config_owner_request_draft.{draft['request_id']}.not_approval",
|
|
draft["not_approval"],
|
|
)
|
|
for false_key in [
|
|
"request_sent",
|
|
"recipient_confirmed",
|
|
"audit_event_emitted",
|
|
"received_response",
|
|
"accepted_response",
|
|
"rejected_response",
|
|
"reviewer_queue_write",
|
|
"runtime_gate",
|
|
"action_buttons_allowed",
|
|
"secret_value_collection_allowed",
|
|
"production_write_authorized",
|
|
]:
|
|
assert_false(
|
|
f"high_value_config_owner_request_draft.{draft['request_id']}.{false_key}",
|
|
draft[false_key],
|
|
)
|
|
expected_iwooos_surface_ids = [
|
|
"security_compliance",
|
|
"legacy_security",
|
|
"legacy_compliance",
|
|
"alerts",
|
|
"errors",
|
|
"authorizations",
|
|
"governance",
|
|
"alert_operation_logs",
|
|
"awooop_approvals",
|
|
"code_review",
|
|
]
|
|
assert_equal(
|
|
"iwooos_projection.summary.existing_frontend_surface_count",
|
|
iwooos_projection["summary"]["existing_frontend_surface_count"],
|
|
len(expected_iwooos_surface_ids),
|
|
)
|
|
assert_equal(
|
|
"iwooos_projection.summary.frontend_surface_reverse_bridge_status_count",
|
|
iwooos_projection["summary"]["frontend_surface_reverse_bridge_status_count"],
|
|
len(expected_iwooos_surface_ids),
|
|
)
|
|
expected_iwooos_coverage_group_ids = [
|
|
"signals_and_exposure",
|
|
"human_control_boundary",
|
|
"governance_and_audit",
|
|
"engineering_review",
|
|
]
|
|
expected_iwooos_conflict_control_ids = [
|
|
"preserve_original_route_ownership",
|
|
"no_runtime_lift_from_index",
|
|
"code_review_not_deploy_gate",
|
|
"awooop_approval_not_security_approval",
|
|
"frontend_index_does_not_call_kali",
|
|
]
|
|
expected_iwooos_journey_step_ids = [
|
|
"read_current_posture",
|
|
"open_existing_security_surface",
|
|
"triage_non_blocking_lane",
|
|
"collect_owner_evidence",
|
|
"wait_for_human_decision",
|
|
"prepare_followup_runtime_gate",
|
|
]
|
|
expected_iwooos_evidence_readiness_item_ids = [
|
|
"s4_9_gitea_owner_attestation_response",
|
|
"s4_10_github_target_owner_response",
|
|
"s4_11_refs_truth_owner_response",
|
|
"s4_12_workflow_secret_owner_response",
|
|
"s1_6_redacted_finding_ingestion",
|
|
"s1_6_kali_scan_scope_approval",
|
|
"s3_4_followup_runtime_gate",
|
|
]
|
|
expected_iwooos_host_coverage_item_ids = [
|
|
"kali_112_security_host",
|
|
"dev_168_development_host",
|
|
"dev_111_development_host",
|
|
]
|
|
expected_iwooos_kali_maintenance_readiness_item_ids = [
|
|
"kali_112_read_only_snapshot",
|
|
"kali_112_scanner_health",
|
|
"kali_112_upgradable_package_count",
|
|
"kali_112_failed_systemd_unit_count",
|
|
"kali_112_service_hardening_gap",
|
|
"kali_112_full_upgrade_reboot_gate",
|
|
]
|
|
expected_iwooos_host_action_gate_item_ids = [
|
|
"host_active_scan_gate",
|
|
"host_credentialed_scan_gate",
|
|
"kali_execute_gate",
|
|
"ssh_host_change_gate",
|
|
"kali_host_update_gate",
|
|
"runtime_blocking_control_gate",
|
|
]
|
|
expected_iwooos_host_evidence_readiness_item_ids = [
|
|
"host_scope_boundary_evidence",
|
|
"host_owner_decision_record_evidence",
|
|
"host_credential_handling_evidence",
|
|
"host_maintenance_window_evidence",
|
|
"host_rollback_plan_evidence",
|
|
"host_validation_metrics_evidence",
|
|
"host_redacted_ingestion_evidence",
|
|
]
|
|
expected_iwooos_host_evidence_collection_step_ids = [
|
|
"collect_scope_boundary_first",
|
|
"collect_owner_decision_second",
|
|
"collect_credential_handling_third",
|
|
"collect_maintenance_window_fourth",
|
|
"collect_rollback_plan_fifth",
|
|
"collect_validation_metrics_sixth",
|
|
"collect_redacted_ingestion_seventh",
|
|
]
|
|
expected_iwooos_host_evidence_intake_preflight_check_ids = [
|
|
"host_metadata_pointer_shape_check",
|
|
"host_collection_dependency_order_check",
|
|
"host_scope_boundary_before_scan_check",
|
|
"host_owner_decision_before_change_check",
|
|
"host_credential_plaintext_rejection_check",
|
|
"host_raw_payload_rejection_check",
|
|
"host_counter_transition_freeze_check",
|
|
]
|
|
expected_iwooos_host_evidence_review_outcome_lane_ids = [
|
|
"host_ready_for_human_review_lane",
|
|
"host_needs_scope_evidence_lane",
|
|
"host_needs_owner_decision_lane",
|
|
"host_quarantine_dependency_skip_lane",
|
|
"host_reject_raw_payload_lane",
|
|
"host_reject_credential_plaintext_lane",
|
|
"host_waiting_runtime_gate_lane",
|
|
]
|
|
expected_iwooos_host_evidence_review_handoff_packet_ids = [
|
|
"host_scope_summary_handoff_packet",
|
|
"host_owner_decision_handoff_packet",
|
|
"host_credential_handling_handoff_packet",
|
|
"host_maintenance_rollback_handoff_packet",
|
|
"host_validation_metrics_handoff_packet",
|
|
"host_redaction_attestation_handoff_packet",
|
|
"host_runtime_gate_pointer_handoff_packet",
|
|
]
|
|
expected_iwooos_host_evidence_reviewer_checklist_item_ids = [
|
|
"host_scope_boundary_match_check",
|
|
"host_owner_decision_scope_expiry_check",
|
|
"host_credential_handling_metadata_only_check",
|
|
"host_redaction_attestation_pass_check",
|
|
"host_maintenance_rollback_complete_check",
|
|
"host_validation_metrics_linked_check",
|
|
"host_runtime_gate_separated_check",
|
|
]
|
|
expected_iwooos_host_evidence_reviewer_outcome_lane_ids = [
|
|
"host_ready_for_owner_decision_outcome_lane",
|
|
"host_scope_mismatch_outcome_lane",
|
|
"host_owner_decision_expired_outcome_lane",
|
|
"host_credential_metadata_failed_outcome_lane",
|
|
"host_redaction_failed_outcome_lane",
|
|
"host_rollback_missing_outcome_lane",
|
|
"host_runtime_gate_required_outcome_lane",
|
|
]
|
|
expected_iwooos_host_owner_decision_candidate_packet_ids = [
|
|
"host_scope_approval_candidate_packet",
|
|
"host_scan_mode_candidate_packet",
|
|
"host_credential_handling_candidate_packet",
|
|
"host_maintenance_window_candidate_packet",
|
|
"host_rollback_owner_candidate_packet",
|
|
"host_validation_metrics_candidate_packet",
|
|
"host_runtime_gate_candidate_packet",
|
|
]
|
|
expected_iwooos_host_owner_decision_review_checklist_item_ids = [
|
|
"host_scope_boundary_readable_review_check",
|
|
"host_scan_mode_not_authorization_review_check",
|
|
"host_credential_boundary_metadata_only_review_check",
|
|
"host_maintenance_window_not_change_review_check",
|
|
"host_rollback_owner_readable_review_check",
|
|
"host_validation_metrics_predefined_review_check",
|
|
"host_runtime_gate_still_separate_review_check",
|
|
]
|
|
expected_iwooos_host_owner_decision_review_outcome_lane_ids = [
|
|
"host_ready_for_decision_record_outcome_lane",
|
|
"host_scope_refresh_required_decision_outcome_lane",
|
|
"host_scan_mode_scope_required_decision_outcome_lane",
|
|
"host_credential_boundary_failed_decision_outcome_lane",
|
|
"host_maintenance_window_required_decision_outcome_lane",
|
|
"host_rollback_owner_required_decision_outcome_lane",
|
|
"host_runtime_gate_required_decision_outcome_lane",
|
|
]
|
|
expected_iwooos_host_owner_decision_record_draft_packet_ids = [
|
|
"host_decision_record_scope_draft_packet",
|
|
"host_decision_record_scan_mode_draft_packet",
|
|
"host_decision_record_credential_boundary_draft_packet",
|
|
"host_decision_record_maintenance_constraints_draft_packet",
|
|
"host_decision_record_rollback_owner_draft_packet",
|
|
"host_decision_record_validation_metrics_draft_packet",
|
|
"host_decision_record_runtime_gate_draft_packet",
|
|
]
|
|
expected_iwooos_host_owner_decision_record_draft_review_checklist_item_ids = [
|
|
"host_decision_record_scope_statement_review_check",
|
|
"host_decision_record_scan_mode_review_check",
|
|
"host_decision_record_credential_boundary_review_check",
|
|
"host_decision_record_maintenance_constraints_review_check",
|
|
"host_decision_record_rollback_owner_review_check",
|
|
"host_decision_record_validation_metrics_review_check",
|
|
"host_decision_record_runtime_gate_review_check",
|
|
]
|
|
expected_iwooos_host_owner_decision_record_draft_review_outcome_lane_ids = [
|
|
"host_decision_record_ready_for_writeup_outcome_lane",
|
|
"host_decision_record_scope_draft_incomplete_outcome_lane",
|
|
"host_decision_record_scan_mode_ambiguous_outcome_lane",
|
|
"host_decision_record_credential_boundary_incomplete_outcome_lane",
|
|
"host_decision_record_maintenance_constraints_incomplete_outcome_lane",
|
|
"host_decision_record_rollback_owner_incomplete_outcome_lane",
|
|
"host_decision_record_runtime_gate_required_outcome_lane",
|
|
]
|
|
expected_iwooos_host_owner_decision_record_writeup_packet_ids = [
|
|
"host_decision_record_summary_writeup_packet",
|
|
"host_decision_record_scope_writeup_packet",
|
|
"host_decision_record_scan_mode_limits_writeup_packet",
|
|
"host_decision_record_credential_boundary_writeup_packet",
|
|
"host_decision_record_maintenance_rollback_writeup_packet",
|
|
"host_decision_record_validation_evidence_writeup_packet",
|
|
"host_decision_record_runtime_gate_pointer_writeup_packet",
|
|
]
|
|
expected_iwooos_host_owner_decision_record_writeup_review_checklist_item_ids = [
|
|
"host_decision_record_summary_writeup_review_check",
|
|
"host_decision_record_scope_writeup_review_check",
|
|
"host_decision_record_scan_mode_limits_writeup_review_check",
|
|
"host_decision_record_credential_boundary_writeup_review_check",
|
|
"host_decision_record_maintenance_rollback_writeup_review_check",
|
|
"host_decision_record_validation_evidence_writeup_review_check",
|
|
"host_decision_record_runtime_gate_writeup_review_check",
|
|
]
|
|
expected_iwooos_host_owner_decision_record_writeup_review_outcome_lane_ids = [
|
|
"host_decision_record_writeup_review_ready_for_formal_record_outcome_lane",
|
|
"host_decision_record_writeup_summary_needs_clarification_outcome_lane",
|
|
"host_decision_record_writeup_scope_expiry_needs_refresh_outcome_lane",
|
|
"host_decision_record_writeup_scan_mode_ambiguous_outcome_lane",
|
|
"host_decision_record_writeup_credential_boundary_failed_outcome_lane",
|
|
"host_decision_record_writeup_maintenance_rollback_incomplete_outcome_lane",
|
|
"host_decision_record_writeup_runtime_gate_required_outcome_lane",
|
|
]
|
|
expected_iwooos_host_owner_decision_record_formal_candidate_packet_ids = [
|
|
"host_decision_record_formal_candidate_identity_packet",
|
|
"host_decision_record_formal_candidate_decision_summary_packet",
|
|
"host_decision_record_formal_candidate_approved_scope_packet",
|
|
"host_decision_record_formal_candidate_scan_mode_limits_packet",
|
|
"host_decision_record_formal_candidate_credential_boundary_packet",
|
|
"host_decision_record_formal_candidate_maintenance_rollback_packet",
|
|
"host_decision_record_formal_candidate_validation_runtime_gate_packet",
|
|
]
|
|
expected_iwooos_host_owner_decision_record_formal_candidate_review_checklist_item_ids = [
|
|
"host_decision_record_formal_candidate_identity_review_check",
|
|
"host_decision_record_formal_candidate_summary_review_check",
|
|
"host_decision_record_formal_candidate_scope_review_check",
|
|
"host_decision_record_formal_candidate_scan_limits_review_check",
|
|
"host_decision_record_formal_candidate_credential_boundary_review_check",
|
|
"host_decision_record_formal_candidate_maintenance_rollback_review_check",
|
|
"host_decision_record_formal_candidate_runtime_gate_review_check",
|
|
]
|
|
expected_iwooos_host_owner_decision_record_formal_candidate_review_outcome_lane_ids = [
|
|
"host_decision_record_formal_candidate_review_ready_for_record_queue_outcome_lane",
|
|
"host_decision_record_formal_candidate_review_identity_needs_trace_outcome_lane",
|
|
"host_decision_record_formal_candidate_review_summary_needs_clarification_outcome_lane",
|
|
"host_decision_record_formal_candidate_review_scope_expiry_needs_refresh_outcome_lane",
|
|
"host_decision_record_formal_candidate_review_scan_limits_ambiguous_outcome_lane",
|
|
"host_decision_record_formal_candidate_review_credential_boundary_failed_outcome_lane",
|
|
"host_decision_record_formal_candidate_review_maintenance_rollback_incomplete_outcome_lane",
|
|
"host_decision_record_formal_candidate_review_runtime_gate_required_outcome_lane",
|
|
]
|
|
expected_iwooos_host_owner_decision_record_formal_record_queue_packet_ids = [
|
|
"host_decision_record_formal_record_queue_identity_packet",
|
|
"host_decision_record_formal_record_queue_decision_summary_packet",
|
|
"host_decision_record_formal_record_queue_scope_expiry_packet",
|
|
"host_decision_record_formal_record_queue_scan_limits_packet",
|
|
"host_decision_record_formal_record_queue_credential_boundary_packet",
|
|
"host_decision_record_formal_record_queue_maintenance_rollback_packet",
|
|
"host_decision_record_formal_record_queue_validation_runtime_gate_packet",
|
|
"host_decision_record_formal_record_queue_no_execution_attestation_packet",
|
|
]
|
|
expected_iwooos_host_owner_decision_record_formal_record_queue_review_checklist_item_ids = [
|
|
"host_decision_record_formal_record_queue_review_identity_traceable_check",
|
|
"host_decision_record_formal_record_queue_review_decision_summary_readable_check",
|
|
"host_decision_record_formal_record_queue_review_scope_expiry_fresh_check",
|
|
"host_decision_record_formal_record_queue_review_scan_limits_not_authorization_check",
|
|
"host_decision_record_formal_record_queue_review_credential_boundary_metadata_only_check",
|
|
"host_decision_record_formal_record_queue_review_maintenance_rollback_linked_check",
|
|
"host_decision_record_formal_record_queue_review_validation_runtime_gate_separate_check",
|
|
"host_decision_record_formal_record_queue_review_no_execution_attestation_present_check",
|
|
]
|
|
expected_iwooos_host_owner_decision_record_formal_record_queue_review_outcome_lane_ids = [
|
|
"host_decision_record_formal_record_queue_review_ready_for_human_record_owner_handoff_outcome_lane",
|
|
"host_decision_record_formal_record_queue_review_identity_needs_trace_refresh_outcome_lane",
|
|
"host_decision_record_formal_record_queue_review_summary_needs_clarification_outcome_lane",
|
|
"host_decision_record_formal_record_queue_review_scope_expiry_needs_refresh_outcome_lane",
|
|
"host_decision_record_formal_record_queue_review_scan_limits_ambiguous_outcome_lane",
|
|
"host_decision_record_formal_record_queue_review_credential_boundary_failed_outcome_lane",
|
|
"host_decision_record_formal_record_queue_review_maintenance_rollback_incomplete_outcome_lane",
|
|
"host_decision_record_formal_record_queue_review_runtime_gate_required_outcome_lane",
|
|
]
|
|
expected_iwooos_host_owner_decision_record_human_handoff_readiness_packet_ids = [
|
|
"host_decision_record_handoff_readiness_identity_trace_packet",
|
|
"host_decision_record_handoff_readiness_owner_boundary_packet",
|
|
"host_decision_record_handoff_readiness_decision_summary_packet",
|
|
"host_decision_record_handoff_readiness_scope_expiry_packet",
|
|
"host_decision_record_handoff_readiness_scan_limits_packet",
|
|
"host_decision_record_handoff_readiness_credential_boundary_packet",
|
|
"host_decision_record_handoff_readiness_maintenance_rollback_packet",
|
|
"host_decision_record_handoff_readiness_runtime_gate_packet",
|
|
]
|
|
expected_iwooos_host_owner_decision_record_human_handoff_readiness_review_checklist_item_ids = [
|
|
"host_decision_record_handoff_readiness_review_identity_trace_readable_check",
|
|
"host_decision_record_handoff_readiness_review_owner_boundary_readable_check",
|
|
"host_decision_record_handoff_readiness_review_decision_summary_readable_check",
|
|
"host_decision_record_handoff_readiness_review_scope_expiry_current_check",
|
|
"host_decision_record_handoff_readiness_review_scan_limits_not_authorization_check",
|
|
"host_decision_record_handoff_readiness_review_credential_boundary_metadata_only_check",
|
|
"host_decision_record_handoff_readiness_review_maintenance_rollback_traceable_check",
|
|
"host_decision_record_handoff_readiness_review_runtime_gate_separate_check",
|
|
]
|
|
expected_iwooos_host_owner_decision_record_human_handoff_readiness_review_outcome_lane_ids = [
|
|
"host_decision_record_handoff_readiness_review_ready_for_human_record_owner_review_candidate_outcome_lane",
|
|
"host_decision_record_handoff_readiness_review_identity_trace_needs_refresh_outcome_lane",
|
|
"host_decision_record_handoff_readiness_review_owner_boundary_needs_clarification_outcome_lane",
|
|
"host_decision_record_handoff_readiness_review_decision_summary_needs_clarification_outcome_lane",
|
|
"host_decision_record_handoff_readiness_review_scope_expiry_needs_refresh_outcome_lane",
|
|
"host_decision_record_handoff_readiness_review_scan_limits_ambiguous_outcome_lane",
|
|
"host_decision_record_handoff_readiness_review_credential_boundary_failed_outcome_lane",
|
|
"host_decision_record_handoff_readiness_review_maintenance_rollback_incomplete_outcome_lane",
|
|
"host_decision_record_handoff_readiness_review_runtime_gate_required_outcome_lane",
|
|
]
|
|
expected_iwooos_host_owner_decision_record_human_record_owner_review_candidate_packet_ids = [
|
|
"host_decision_record_human_record_owner_review_candidate_identity_packet",
|
|
"host_decision_record_human_record_owner_review_candidate_owner_boundary_packet",
|
|
"host_decision_record_human_record_owner_review_candidate_decision_summary_packet",
|
|
"host_decision_record_human_record_owner_review_candidate_scope_expiry_packet",
|
|
"host_decision_record_human_record_owner_review_candidate_scan_limits_packet",
|
|
"host_decision_record_human_record_owner_review_candidate_credential_boundary_packet",
|
|
"host_decision_record_human_record_owner_review_candidate_maintenance_rollback_packet",
|
|
"host_decision_record_human_record_owner_review_candidate_validation_runtime_gate_packet",
|
|
"host_decision_record_human_record_owner_review_candidate_no_execution_attestation_packet",
|
|
]
|
|
expected_iwooos_host_owner_decision_record_human_record_owner_review_candidate_checklist_item_ids = [
|
|
"host_decision_record_human_record_owner_review_candidate_identity_traceable_check",
|
|
"host_decision_record_human_record_owner_review_candidate_owner_boundary_readable_check",
|
|
"host_decision_record_human_record_owner_review_candidate_decision_summary_readable_check",
|
|
"host_decision_record_human_record_owner_review_candidate_scope_expiry_current_check",
|
|
"host_decision_record_human_record_owner_review_candidate_scan_limits_not_authorization_check",
|
|
"host_decision_record_human_record_owner_review_candidate_credential_boundary_metadata_only_check",
|
|
"host_decision_record_human_record_owner_review_candidate_maintenance_rollback_traceable_check",
|
|
"host_decision_record_human_record_owner_review_candidate_validation_runtime_gate_separate_check",
|
|
"host_decision_record_human_record_owner_review_candidate_no_execution_attestation_present_check",
|
|
]
|
|
expected_iwooos_host_owner_decision_record_human_record_owner_review_candidate_outcome_lane_ids = [
|
|
"host_decision_record_human_record_owner_review_candidate_ready_for_human_record_owner_review_preparation_outcome_lane",
|
|
"host_decision_record_human_record_owner_review_candidate_identity_trace_needs_refresh_outcome_lane",
|
|
"host_decision_record_human_record_owner_review_candidate_owner_boundary_needs_clarification_outcome_lane",
|
|
"host_decision_record_human_record_owner_review_candidate_decision_summary_needs_clarification_outcome_lane",
|
|
"host_decision_record_human_record_owner_review_candidate_scope_expiry_needs_refresh_outcome_lane",
|
|
"host_decision_record_human_record_owner_review_candidate_scan_limits_ambiguous_outcome_lane",
|
|
"host_decision_record_human_record_owner_review_candidate_credential_boundary_failed_outcome_lane",
|
|
"host_decision_record_human_record_owner_review_candidate_maintenance_rollback_incomplete_outcome_lane",
|
|
"host_decision_record_human_record_owner_review_candidate_runtime_gate_required_outcome_lane",
|
|
]
|
|
expected_iwooos_host_owner_decision_record_human_record_owner_review_preparation_packet_ids = [
|
|
"host_decision_record_human_record_owner_review_preparation_identity_trace_packet",
|
|
"host_decision_record_human_record_owner_review_preparation_owner_boundary_packet",
|
|
"host_decision_record_human_record_owner_review_preparation_decision_summary_packet",
|
|
"host_decision_record_human_record_owner_review_preparation_scope_expiry_packet",
|
|
"host_decision_record_human_record_owner_review_preparation_scan_limits_packet",
|
|
"host_decision_record_human_record_owner_review_preparation_credential_boundary_packet",
|
|
"host_decision_record_human_record_owner_review_preparation_maintenance_rollback_packet",
|
|
"host_decision_record_human_record_owner_review_preparation_validation_runtime_gate_packet",
|
|
"host_decision_record_human_record_owner_review_preparation_no_execution_attestation_packet",
|
|
]
|
|
expected_iwooos_host_owner_decision_record_human_record_owner_review_preparation_checklist_item_ids = [
|
|
"host_decision_record_human_record_owner_review_preparation_identity_trace_readable_check",
|
|
"host_decision_record_human_record_owner_review_preparation_owner_boundary_readable_check",
|
|
"host_decision_record_human_record_owner_review_preparation_decision_summary_readable_check",
|
|
"host_decision_record_human_record_owner_review_preparation_scope_expiry_current_check",
|
|
"host_decision_record_human_record_owner_review_preparation_scan_limits_not_authorization_check",
|
|
"host_decision_record_human_record_owner_review_preparation_credential_boundary_metadata_only_check",
|
|
"host_decision_record_human_record_owner_review_preparation_maintenance_rollback_traceable_check",
|
|
"host_decision_record_human_record_owner_review_preparation_validation_runtime_gate_separate_check",
|
|
"host_decision_record_human_record_owner_review_preparation_no_execution_attestation_present_check",
|
|
]
|
|
assert_equal(
|
|
"iwooos_projection.summary.visual_command_dashboard_widget_count",
|
|
iwooos_projection["summary"]["visual_command_dashboard_widget_count"],
|
|
14,
|
|
)
|
|
assert_true(
|
|
"iwooos_projection.summary.visual_command_dashboard_first_layer",
|
|
iwooos_projection["summary"]["visual_command_dashboard_first_layer"],
|
|
)
|
|
assert_false(
|
|
"iwooos_projection.summary.visual_command_dashboard_default_visible",
|
|
iwooos_projection["summary"]["visual_command_dashboard_default_visible"],
|
|
)
|
|
assert_true(
|
|
"iwooos_projection.summary.professional_security_experience_first_layer",
|
|
iwooos_projection["summary"]["professional_security_experience_first_layer"],
|
|
)
|
|
assert_false(
|
|
"iwooos_projection.summary.professional_security_experience_default_visible",
|
|
iwooos_projection["summary"]["professional_security_experience_default_visible"],
|
|
)
|
|
assert_equal(
|
|
"iwooos_projection.summary.professional_security_experience_tab_count",
|
|
iwooos_projection["summary"]["professional_security_experience_tab_count"],
|
|
3,
|
|
)
|
|
assert_equal(
|
|
"iwooos_projection.summary.professional_security_experience_attack_path_node_count",
|
|
iwooos_projection["summary"]["professional_security_experience_attack_path_node_count"],
|
|
6,
|
|
)
|
|
assert_equal(
|
|
"iwooos_projection.summary.professional_security_experience_asset_heat_cell_count",
|
|
iwooos_projection["summary"]["professional_security_experience_asset_heat_cell_count"],
|
|
9,
|
|
)
|
|
assert_equal(
|
|
"iwooos_projection.summary.professional_security_experience_response_flow_step_count",
|
|
iwooos_projection["summary"]["professional_security_experience_response_flow_step_count"],
|
|
5,
|
|
)
|
|
assert_true(
|
|
"iwooos_projection.summary.concrete_work_snapshot_first_layer",
|
|
iwooos_projection["summary"]["concrete_work_snapshot_first_layer"],
|
|
)
|
|
assert_false(
|
|
"iwooos_projection.summary.concrete_work_snapshot_default_visible",
|
|
iwooos_projection["summary"]["concrete_work_snapshot_default_visible"],
|
|
)
|
|
assert_equal(
|
|
"iwooos_projection.summary.concrete_work_snapshot_workstream_count",
|
|
iwooos_projection["summary"]["concrete_work_snapshot_workstream_count"],
|
|
6,
|
|
)
|
|
assert_true(
|
|
"iwooos_projection.summary.long_form_sections_default_collapsed",
|
|
iwooos_projection["summary"]["long_form_sections_default_collapsed"],
|
|
)
|
|
assert_equal(
|
|
"iwooos_projection.summary.frontend_surface_coverage_group_count",
|
|
iwooos_projection["summary"]["frontend_surface_coverage_group_count"],
|
|
len(expected_iwooos_coverage_group_ids),
|
|
)
|
|
assert_equal(
|
|
"iwooos_projection.summary.frontend_surface_conflict_control_count",
|
|
iwooos_projection["summary"]["frontend_surface_conflict_control_count"],
|
|
len(expected_iwooos_conflict_control_ids),
|
|
)
|
|
assert_equal(
|
|
"iwooos_projection.summary.operator_journey_step_count",
|
|
iwooos_projection["summary"]["operator_journey_step_count"],
|
|
len(expected_iwooos_journey_step_ids),
|
|
)
|
|
assert_equal(
|
|
"iwooos_projection.summary.owner_evidence_readiness_item_count",
|
|
iwooos_projection["summary"]["owner_evidence_readiness_item_count"],
|
|
len(expected_iwooos_evidence_readiness_item_ids),
|
|
)
|
|
assert_equal(
|
|
"iwooos_projection.summary.host_coverage_item_count",
|
|
iwooos_projection["summary"]["host_coverage_item_count"],
|
|
len(expected_iwooos_host_coverage_item_ids),
|
|
)
|
|
assert_equal(
|
|
"iwooos_projection.summary.kali_maintenance_readiness_item_count",
|
|
iwooos_projection["summary"]["kali_maintenance_readiness_item_count"],
|
|
len(expected_iwooos_kali_maintenance_readiness_item_ids),
|
|
)
|
|
assert_equal(
|
|
"iwooos_projection.summary.host_action_gate_item_count",
|
|
iwooos_projection["summary"]["host_action_gate_item_count"],
|
|
len(expected_iwooos_host_action_gate_item_ids),
|
|
)
|
|
assert_equal(
|
|
"iwooos_projection.summary.host_evidence_readiness_item_count",
|
|
iwooos_projection["summary"]["host_evidence_readiness_item_count"],
|
|
len(expected_iwooos_host_evidence_readiness_item_ids),
|
|
)
|
|
assert_equal(
|
|
"iwooos_projection.summary.host_evidence_collection_step_count",
|
|
iwooos_projection["summary"]["host_evidence_collection_step_count"],
|
|
len(expected_iwooos_host_evidence_collection_step_ids),
|
|
)
|
|
assert_equal(
|
|
"iwooos_projection.summary.host_evidence_intake_preflight_check_count",
|
|
iwooos_projection["summary"]["host_evidence_intake_preflight_check_count"],
|
|
len(expected_iwooos_host_evidence_intake_preflight_check_ids),
|
|
)
|
|
assert_equal(
|
|
"iwooos_projection.summary.host_evidence_review_outcome_lane_count",
|
|
iwooos_projection["summary"]["host_evidence_review_outcome_lane_count"],
|
|
len(expected_iwooos_host_evidence_review_outcome_lane_ids),
|
|
)
|
|
assert_equal(
|
|
"iwooos_projection.summary.host_evidence_review_handoff_packet_count",
|
|
iwooos_projection["summary"]["host_evidence_review_handoff_packet_count"],
|
|
len(expected_iwooos_host_evidence_review_handoff_packet_ids),
|
|
)
|
|
assert_equal(
|
|
"iwooos_projection.summary.host_evidence_reviewer_checklist_item_count",
|
|
iwooos_projection["summary"]["host_evidence_reviewer_checklist_item_count"],
|
|
len(expected_iwooos_host_evidence_reviewer_checklist_item_ids),
|
|
)
|
|
assert_equal(
|
|
"iwooos_projection.summary.host_evidence_reviewer_outcome_lane_count",
|
|
iwooos_projection["summary"]["host_evidence_reviewer_outcome_lane_count"],
|
|
len(expected_iwooos_host_evidence_reviewer_outcome_lane_ids),
|
|
)
|
|
assert_equal(
|
|
"iwooos_projection.summary.host_owner_decision_candidate_packet_count",
|
|
iwooos_projection["summary"]["host_owner_decision_candidate_packet_count"],
|
|
len(expected_iwooos_host_owner_decision_candidate_packet_ids),
|
|
)
|
|
assert_equal(
|
|
"iwooos_projection.summary.host_owner_decision_review_checklist_item_count",
|
|
iwooos_projection["summary"]["host_owner_decision_review_checklist_item_count"],
|
|
len(expected_iwooos_host_owner_decision_review_checklist_item_ids),
|
|
)
|
|
assert_equal(
|
|
"iwooos_projection.summary.host_owner_decision_review_outcome_lane_count",
|
|
iwooos_projection["summary"]["host_owner_decision_review_outcome_lane_count"],
|
|
len(expected_iwooos_host_owner_decision_review_outcome_lane_ids),
|
|
)
|
|
assert_equal(
|
|
"iwooos_projection.summary.host_owner_decision_record_draft_packet_count",
|
|
iwooos_projection["summary"]["host_owner_decision_record_draft_packet_count"],
|
|
len(expected_iwooos_host_owner_decision_record_draft_packet_ids),
|
|
)
|
|
assert_equal(
|
|
"iwooos_projection.summary.host_owner_decision_record_draft_review_checklist_item_count",
|
|
iwooos_projection["summary"]["host_owner_decision_record_draft_review_checklist_item_count"],
|
|
len(expected_iwooos_host_owner_decision_record_draft_review_checklist_item_ids),
|
|
)
|
|
assert_equal(
|
|
"iwooos_projection.summary.host_owner_decision_record_draft_review_outcome_lane_count",
|
|
iwooos_projection["summary"]["host_owner_decision_record_draft_review_outcome_lane_count"],
|
|
len(expected_iwooos_host_owner_decision_record_draft_review_outcome_lane_ids),
|
|
)
|
|
assert_equal(
|
|
"iwooos_projection.summary.host_owner_decision_record_writeup_packet_count",
|
|
iwooos_projection["summary"]["host_owner_decision_record_writeup_packet_count"],
|
|
len(expected_iwooos_host_owner_decision_record_writeup_packet_ids),
|
|
)
|
|
assert_equal(
|
|
"iwooos_projection.summary.host_owner_decision_record_writeup_review_checklist_item_count",
|
|
iwooos_projection["summary"]["host_owner_decision_record_writeup_review_checklist_item_count"],
|
|
len(expected_iwooos_host_owner_decision_record_writeup_review_checklist_item_ids),
|
|
)
|
|
assert_equal(
|
|
"iwooos_projection.summary.host_owner_decision_record_writeup_review_outcome_lane_count",
|
|
iwooos_projection["summary"]["host_owner_decision_record_writeup_review_outcome_lane_count"],
|
|
len(expected_iwooos_host_owner_decision_record_writeup_review_outcome_lane_ids),
|
|
)
|
|
assert_equal(
|
|
"iwooos_projection.summary.host_owner_decision_record_formal_candidate_packet_count",
|
|
iwooos_projection["summary"]["host_owner_decision_record_formal_candidate_packet_count"],
|
|
len(expected_iwooos_host_owner_decision_record_formal_candidate_packet_ids),
|
|
)
|
|
assert_equal(
|
|
"iwooos_projection.summary.host_owner_decision_record_formal_candidate_review_checklist_item_count",
|
|
iwooos_projection["summary"]["host_owner_decision_record_formal_candidate_review_checklist_item_count"],
|
|
len(expected_iwooos_host_owner_decision_record_formal_candidate_review_checklist_item_ids),
|
|
)
|
|
assert_equal(
|
|
"iwooos_projection.summary.host_owner_decision_record_formal_candidate_review_outcome_lane_count",
|
|
iwooos_projection["summary"]["host_owner_decision_record_formal_candidate_review_outcome_lane_count"],
|
|
len(expected_iwooos_host_owner_decision_record_formal_candidate_review_outcome_lane_ids),
|
|
)
|
|
assert_equal(
|
|
"iwooos_projection.summary.host_owner_decision_record_formal_record_queue_packet_count",
|
|
iwooos_projection["summary"]["host_owner_decision_record_formal_record_queue_packet_count"],
|
|
len(expected_iwooos_host_owner_decision_record_formal_record_queue_packet_ids),
|
|
)
|
|
assert_equal(
|
|
"iwooos_projection.summary.host_owner_decision_record_formal_record_queue_review_checklist_item_count",
|
|
iwooos_projection["summary"]["host_owner_decision_record_formal_record_queue_review_checklist_item_count"],
|
|
len(expected_iwooos_host_owner_decision_record_formal_record_queue_review_checklist_item_ids),
|
|
)
|
|
assert_equal(
|
|
"iwooos_projection.summary.host_owner_decision_record_formal_record_queue_review_outcome_lane_count",
|
|
iwooos_projection["summary"]["host_owner_decision_record_formal_record_queue_review_outcome_lane_count"],
|
|
len(expected_iwooos_host_owner_decision_record_formal_record_queue_review_outcome_lane_ids),
|
|
)
|
|
assert_equal(
|
|
"iwooos_projection.summary.host_owner_decision_record_human_handoff_readiness_packet_count",
|
|
iwooos_projection["summary"]["host_owner_decision_record_human_handoff_readiness_packet_count"],
|
|
len(expected_iwooos_host_owner_decision_record_human_handoff_readiness_packet_ids),
|
|
)
|
|
assert_equal(
|
|
"iwooos_projection.summary.host_owner_decision_record_human_handoff_readiness_review_checklist_item_count",
|
|
iwooos_projection["summary"]["host_owner_decision_record_human_handoff_readiness_review_checklist_item_count"],
|
|
len(expected_iwooos_host_owner_decision_record_human_handoff_readiness_review_checklist_item_ids),
|
|
)
|
|
assert_equal(
|
|
"iwooos_projection.summary.host_owner_decision_record_human_handoff_readiness_review_outcome_lane_count",
|
|
iwooos_projection["summary"]["host_owner_decision_record_human_handoff_readiness_review_outcome_lane_count"],
|
|
len(expected_iwooos_host_owner_decision_record_human_handoff_readiness_review_outcome_lane_ids),
|
|
)
|
|
assert_equal(
|
|
"iwooos_projection.summary.host_owner_decision_record_human_record_owner_review_candidate_packet_count",
|
|
iwooos_projection["summary"]["host_owner_decision_record_human_record_owner_review_candidate_packet_count"],
|
|
len(expected_iwooos_host_owner_decision_record_human_record_owner_review_candidate_packet_ids),
|
|
)
|
|
assert_equal(
|
|
"iwooos_projection.summary.host_owner_decision_record_human_record_owner_review_candidate_checklist_item_count",
|
|
iwooos_projection["summary"][
|
|
"host_owner_decision_record_human_record_owner_review_candidate_checklist_item_count"
|
|
],
|
|
len(expected_iwooos_host_owner_decision_record_human_record_owner_review_candidate_checklist_item_ids),
|
|
)
|
|
assert_equal(
|
|
"iwooos_projection.summary.host_owner_decision_record_human_record_owner_review_candidate_outcome_lane_count",
|
|
iwooos_projection["summary"][
|
|
"host_owner_decision_record_human_record_owner_review_candidate_outcome_lane_count"
|
|
],
|
|
len(expected_iwooos_host_owner_decision_record_human_record_owner_review_candidate_outcome_lane_ids),
|
|
)
|
|
assert_equal(
|
|
"iwooos_projection.summary.host_owner_decision_record_human_record_owner_review_preparation_packet_count",
|
|
iwooos_projection["summary"]["host_owner_decision_record_human_record_owner_review_preparation_packet_count"],
|
|
len(expected_iwooos_host_owner_decision_record_human_record_owner_review_preparation_packet_ids),
|
|
)
|
|
assert_equal(
|
|
"iwooos_projection.summary.host_owner_decision_record_human_record_owner_review_preparation_checklist_item_count",
|
|
iwooos_projection["summary"][
|
|
"host_owner_decision_record_human_record_owner_review_preparation_checklist_item_count"
|
|
],
|
|
len(expected_iwooos_host_owner_decision_record_human_record_owner_review_preparation_checklist_item_ids),
|
|
)
|
|
iwooos_progress = iwooos_projection["progress"]
|
|
assert_equal("iwooos_projection.progress.overall_percent", iwooos_progress["overall_percent"], progress["overall_percent"])
|
|
assert_equal(
|
|
"iwooos_projection.progress.framework_percent_min",
|
|
iwooos_progress["framework_percent_min"],
|
|
progress["framework_percent_min"],
|
|
)
|
|
assert_equal(
|
|
"iwooos_projection.progress.framework_percent_max",
|
|
iwooos_progress["framework_percent_max"],
|
|
progress["framework_percent_max"],
|
|
)
|
|
assert_equal(
|
|
"iwooos_projection.progress.runtime_landing_percent_min",
|
|
iwooos_progress["runtime_landing_percent_min"],
|
|
progress["runtime_landing_percent_min"],
|
|
)
|
|
assert_equal(
|
|
"iwooos_projection.progress.runtime_landing_percent_max",
|
|
iwooos_progress["runtime_landing_percent_max"],
|
|
progress["runtime_landing_percent_max"],
|
|
)
|
|
assert_equal(
|
|
"iwooos_projection.progress.headline_status",
|
|
iwooos_progress["headline_status"],
|
|
progress_display_policy["headline_status"],
|
|
)
|
|
assert_true("iwooos_projection.progress.not_authorization", iwooos_progress["not_authorization"])
|
|
expected_awooop_read_only_landing_item_ids = [
|
|
"awooop_landing_rollup_snapshot_readable",
|
|
"awooop_landing_evidence_refs_readable",
|
|
"awooop_landing_guard_checks_known",
|
|
"awooop_landing_route_groups_known",
|
|
"awooop_landing_forbidden_outputs_locked",
|
|
"awooop_landing_production_handoff_pending",
|
|
]
|
|
assert_equal(
|
|
"iwooos_projection.summary.awooop_read_only_landing_readiness_item_count",
|
|
iwooos_projection["summary"]["awooop_read_only_landing_readiness_item_count"],
|
|
len(expected_awooop_read_only_landing_item_ids),
|
|
)
|
|
awooop_read_only_landing_items = iwooos_projection["awooop_read_only_landing_readiness_items"]
|
|
assert_equal(
|
|
"iwooos_projection.awooop_read_only_landing_readiness_items.item_ids",
|
|
[item["item_id"] for item in awooop_read_only_landing_items],
|
|
expected_awooop_read_only_landing_item_ids,
|
|
)
|
|
assert_equal(
|
|
"iwooos_projection.awooop_read_only_landing_readiness_items.display_order",
|
|
[item["display_order"] for item in awooop_read_only_landing_items],
|
|
list(range(1, len(expected_awooop_read_only_landing_item_ids) + 1)),
|
|
)
|
|
assert_equal(
|
|
"iwooos_projection.awooop_read_only_landing_readiness_items.current_states",
|
|
[item["current_state"] for item in awooop_read_only_landing_items],
|
|
[
|
|
"ready_for_read_only_intake",
|
|
"ready_for_read_only_intake",
|
|
"ready_for_read_only_intake",
|
|
"ready_for_read_only_intake",
|
|
"ready_for_read_only_intake",
|
|
"production_read_only_consumption_verified",
|
|
],
|
|
)
|
|
assert_equal(
|
|
"iwooos_projection.awooop_read_only_landing_readiness_items.landing_dependencies",
|
|
[item["landing_dependency"] for item in awooop_read_only_landing_items],
|
|
[
|
|
"security_mirror_status_rollup_snapshot",
|
|
"evidence_refs",
|
|
"guard_checks",
|
|
"security_mirror_route_groups",
|
|
"forbidden_outputs",
|
|
"awooop_mainline_consumption",
|
|
],
|
|
)
|
|
for item in awooop_read_only_landing_items:
|
|
landing_completed = item["item_id"] == "awooop_landing_production_handoff_pending"
|
|
assert_equal(
|
|
f"iwooos_projection.awooop_read_only_landing_readiness_items.{item['item_id']}.display_mode",
|
|
item["display_mode"],
|
|
"awooop_read_only_landing_readiness_only",
|
|
)
|
|
assert_equal(
|
|
f"iwooos_projection.awooop_read_only_landing_readiness_items.{item['item_id']}.headline_percent_delta",
|
|
item["headline_percent_delta"],
|
|
3 if landing_completed else 0,
|
|
)
|
|
if landing_completed:
|
|
assert_true(
|
|
f"iwooos_projection.awooop_read_only_landing_readiness_items.{item['item_id']}.production_landing_enabled",
|
|
item["production_landing_enabled"],
|
|
)
|
|
else:
|
|
assert_false(
|
|
f"iwooos_projection.awooop_read_only_landing_readiness_items.{item['item_id']}.production_landing_enabled",
|
|
item["production_landing_enabled"],
|
|
)
|
|
assert_false(
|
|
f"iwooos_projection.awooop_read_only_landing_readiness_items.{item['item_id']}.execution_router_linked",
|
|
item["execution_router_linked"],
|
|
)
|
|
if landing_completed:
|
|
assert_true(
|
|
f"iwooos_projection.awooop_read_only_landing_readiness_items.{item['item_id']}.progress_change_applied",
|
|
item["progress_change_applied"],
|
|
)
|
|
else:
|
|
assert_false(
|
|
f"iwooos_projection.awooop_read_only_landing_readiness_items.{item['item_id']}.progress_change_applied",
|
|
item["progress_change_applied"],
|
|
)
|
|
assert_false(
|
|
f"iwooos_projection.awooop_read_only_landing_readiness_items.{item['item_id']}.runtime_execution_authorized",
|
|
item["runtime_execution_authorized"],
|
|
)
|
|
assert_false(
|
|
f"iwooos_projection.awooop_read_only_landing_readiness_items.{item['item_id']}.action_buttons_allowed",
|
|
item["action_buttons_allowed"],
|
|
)
|
|
assert_true(
|
|
f"iwooos_projection.awooop_read_only_landing_readiness_items.{item['item_id']}.not_authorization",
|
|
item["not_authorization"],
|
|
)
|
|
expected_awooop_cross_session_handoff_packet_ids = [
|
|
"awooop_handoff_branch_and_pr_anchor",
|
|
"awooop_handoff_progress_semantics",
|
|
"awooop_handoff_required_guard_commands",
|
|
"awooop_handoff_forbidden_runtime_actions",
|
|
"awooop_handoff_read_only_inputs",
|
|
"awooop_handoff_next_coordination_gate",
|
|
]
|
|
assert_equal(
|
|
"iwooos_projection.summary.awooop_cross_session_handoff_packet_count",
|
|
iwooos_projection["summary"]["awooop_cross_session_handoff_packet_count"],
|
|
len(expected_awooop_cross_session_handoff_packet_ids),
|
|
)
|
|
awooop_cross_session_handoff_packets = iwooos_projection["awooop_cross_session_handoff_packets"]
|
|
assert_equal(
|
|
"iwooos_projection.awooop_cross_session_handoff_packets.packet_ids",
|
|
[item["packet_id"] for item in awooop_cross_session_handoff_packets],
|
|
expected_awooop_cross_session_handoff_packet_ids,
|
|
)
|
|
assert_equal(
|
|
"iwooos_projection.awooop_cross_session_handoff_packets.display_order",
|
|
[item["display_order"] for item in awooop_cross_session_handoff_packets],
|
|
list(range(1, len(expected_awooop_cross_session_handoff_packet_ids) + 1)),
|
|
)
|
|
assert_equal(
|
|
"iwooos_projection.awooop_cross_session_handoff_packets.handoff_axes",
|
|
[item["handoff_axis"] for item in awooop_cross_session_handoff_packets],
|
|
[
|
|
"branch_and_pr_anchor",
|
|
"progress_semantics",
|
|
"required_guard_commands",
|
|
"forbidden_runtime_actions",
|
|
"read_only_inputs",
|
|
"next_coordination_gate",
|
|
],
|
|
)
|
|
assert_equal(
|
|
"iwooos_projection.awooop_cross_session_handoff_packets.current_states",
|
|
[item["current_state"] for item in awooop_cross_session_handoff_packets],
|
|
[
|
|
"ready_for_parallel_session_sync",
|
|
"ready_for_parallel_session_sync",
|
|
"ready_for_parallel_session_sync",
|
|
"ready_for_parallel_session_sync",
|
|
"ready_for_parallel_session_sync",
|
|
"production_landing_evidence_recorded_waiting_remaining_gates",
|
|
],
|
|
)
|
|
for item in awooop_cross_session_handoff_packets:
|
|
assert_equal(
|
|
f"iwooos_projection.awooop_cross_session_handoff_packets.{item['packet_id']}.display_mode",
|
|
item["display_mode"],
|
|
"awooop_cross_session_handoff_packet_only",
|
|
)
|
|
assert_equal(
|
|
f"iwooos_projection.awooop_cross_session_handoff_packets.{item['packet_id']}.headline_percent_delta",
|
|
item["headline_percent_delta"],
|
|
0,
|
|
)
|
|
assert_false(
|
|
f"iwooos_projection.awooop_cross_session_handoff_packets.{item['packet_id']}.production_landing_enabled",
|
|
item["production_landing_enabled"],
|
|
)
|
|
assert_false(
|
|
f"iwooos_projection.awooop_cross_session_handoff_packets.{item['packet_id']}.execution_router_linked",
|
|
item["execution_router_linked"],
|
|
)
|
|
assert_false(
|
|
f"iwooos_projection.awooop_cross_session_handoff_packets.{item['packet_id']}.progress_change_applied",
|
|
item["progress_change_applied"],
|
|
)
|
|
assert_false(
|
|
f"iwooos_projection.awooop_cross_session_handoff_packets.{item['packet_id']}.runtime_execution_authorized",
|
|
item["runtime_execution_authorized"],
|
|
)
|
|
assert_false(
|
|
f"iwooos_projection.awooop_cross_session_handoff_packets.{item['packet_id']}.action_buttons_allowed",
|
|
item["action_buttons_allowed"],
|
|
)
|
|
assert_true(
|
|
f"iwooos_projection.awooop_cross_session_handoff_packets.{item['packet_id']}.not_authorization",
|
|
item["not_authorization"],
|
|
)
|
|
expected_progress_hold_movement_gate_ids = [
|
|
"progress_hold_owner_response_accepted",
|
|
"progress_hold_redacted_payload_ingested",
|
|
"progress_hold_active_runtime_gate",
|
|
"progress_hold_github_primary_ready",
|
|
"progress_hold_awooop_read_only_landing",
|
|
]
|
|
assert_equal(
|
|
"iwooos_projection.summary.progress_hold_movement_gate_count",
|
|
iwooos_projection["summary"]["progress_hold_movement_gate_count"],
|
|
len(expected_progress_hold_movement_gate_ids),
|
|
)
|
|
progress_hold_movement_gates = iwooos_projection["progress_hold_movement_gates"]
|
|
assert_equal(
|
|
"iwooos_projection.progress_hold_movement_gates.gate_ids",
|
|
[item["gate_id"] for item in progress_hold_movement_gates],
|
|
expected_progress_hold_movement_gate_ids,
|
|
)
|
|
assert_equal(
|
|
"iwooos_projection.progress_hold_movement_gates.display_order",
|
|
[item["display_order"] for item in progress_hold_movement_gates],
|
|
list(range(1, len(expected_progress_hold_movement_gate_ids) + 1)),
|
|
)
|
|
assert_equal(
|
|
"iwooos_projection.progress_hold_movement_gates.movement_signals",
|
|
[item["movement_signal"] for item in progress_hold_movement_gates],
|
|
[
|
|
"owner_response_accepted",
|
|
"redacted_payload_ingested",
|
|
"active_runtime_gate",
|
|
"github_primary_ready",
|
|
"awooop_read_only_landing",
|
|
],
|
|
)
|
|
assert_equal(
|
|
"iwooos_projection.progress_hold_movement_gates.current_counter_names",
|
|
[item["current_counter_name"] for item in progress_hold_movement_gates],
|
|
[
|
|
"owner_response_validation_accepted_count",
|
|
"payloads_ingested",
|
|
"active_runtime_gate_count",
|
|
"github_primary_ready_count",
|
|
"awooop_read_only_production_landing_evidence_count",
|
|
],
|
|
)
|
|
assert_equal(
|
|
"iwooos_projection.progress_hold_movement_gates.current_counter_values",
|
|
[item["current_counter_value"] for item in progress_hold_movement_gates],
|
|
[0, False, 0, 0, 1],
|
|
)
|
|
for item in progress_hold_movement_gates:
|
|
awooop_landing_gate = item["gate_id"] == "progress_hold_awooop_read_only_landing"
|
|
assert_equal(
|
|
f"iwooos_projection.progress_hold_movement_gates.{item['gate_id']}.display_mode",
|
|
item["display_mode"],
|
|
"progress_hold_movement_gate_only",
|
|
)
|
|
assert_equal(
|
|
f"iwooos_projection.progress_hold_movement_gates.{item['gate_id']}.headline_percent_delta",
|
|
item["headline_percent_delta"],
|
|
3 if awooop_landing_gate else 0,
|
|
)
|
|
assert_equal(
|
|
f"iwooos_projection.progress_hold_movement_gates.{item['gate_id']}.owner_response_received_count",
|
|
item["owner_response_received_count"],
|
|
0,
|
|
)
|
|
assert_equal(
|
|
f"iwooos_projection.progress_hold_movement_gates.{item['gate_id']}.owner_response_accepted_count",
|
|
item["owner_response_accepted_count"],
|
|
0,
|
|
)
|
|
assert_false(
|
|
f"iwooos_projection.progress_hold_movement_gates.{item['gate_id']}.payloads_ingested",
|
|
item["payloads_ingested"],
|
|
)
|
|
assert_equal(
|
|
f"iwooos_projection.progress_hold_movement_gates.{item['gate_id']}.active_runtime_gate_count",
|
|
item["active_runtime_gate_count"],
|
|
0,
|
|
)
|
|
assert_equal(
|
|
f"iwooos_projection.progress_hold_movement_gates.{item['gate_id']}.github_primary_ready_count",
|
|
item["github_primary_ready_count"],
|
|
0,
|
|
)
|
|
if awooop_landing_gate:
|
|
assert_true(
|
|
f"iwooos_projection.progress_hold_movement_gates.{item['gate_id']}.production_landing_enabled",
|
|
item["production_landing_enabled"],
|
|
)
|
|
assert_true(
|
|
f"iwooos_projection.progress_hold_movement_gates.{item['gate_id']}.progress_change_applied",
|
|
item["progress_change_applied"],
|
|
)
|
|
else:
|
|
assert_false(
|
|
f"iwooos_projection.progress_hold_movement_gates.{item['gate_id']}.production_landing_enabled",
|
|
item["production_landing_enabled"],
|
|
)
|
|
assert_false(
|
|
f"iwooos_projection.progress_hold_movement_gates.{item['gate_id']}.progress_change_applied",
|
|
item["progress_change_applied"],
|
|
)
|
|
assert_false(
|
|
f"iwooos_projection.progress_hold_movement_gates.{item['gate_id']}.runtime_execution_authorized",
|
|
item["runtime_execution_authorized"],
|
|
)
|
|
assert_false(
|
|
f"iwooos_projection.progress_hold_movement_gates.{item['gate_id']}.action_buttons_allowed",
|
|
item["action_buttons_allowed"],
|
|
)
|
|
assert_true(
|
|
f"iwooos_projection.progress_hold_movement_gates.{item['gate_id']}.not_authorization",
|
|
item["not_authorization"],
|
|
)
|
|
assert_equal(
|
|
"iwooos_projection.summary.progress_acceleration_lane_count",
|
|
iwooos_projection["summary"]["progress_acceleration_lane_count"],
|
|
6,
|
|
)
|
|
progress_acceleration_lanes = iwooos_projection["progress_acceleration_lanes"]
|
|
expected_progress_acceleration_lane_ids = [
|
|
"progress_acceleration_owner_responses",
|
|
"progress_acceleration_redacted_ingestion",
|
|
"progress_acceleration_runtime_gate",
|
|
"progress_acceleration_github_readiness",
|
|
"progress_acceleration_awooop_landing",
|
|
"progress_acceleration_cadence_compression",
|
|
]
|
|
assert_equal(
|
|
"iwooos_projection.progress_acceleration_lanes.lane_ids",
|
|
[item["lane_id"] for item in progress_acceleration_lanes],
|
|
expected_progress_acceleration_lane_ids,
|
|
)
|
|
assert_equal(
|
|
"iwooos_projection.progress_acceleration_lanes.display_order",
|
|
[item["display_order"] for item in progress_acceleration_lanes],
|
|
list(range(1, len(expected_progress_acceleration_lane_ids) + 1)),
|
|
)
|
|
for item in progress_acceleration_lanes:
|
|
assert_equal(
|
|
f"iwooos_projection.progress_acceleration_lanes.{item['lane_id']}.display_mode",
|
|
item["display_mode"],
|
|
"progress_acceleration_only",
|
|
)
|
|
assert_equal(
|
|
f"iwooos_projection.progress_acceleration_lanes.{item['lane_id']}.owner_response_received_count",
|
|
item["owner_response_received_count"],
|
|
0,
|
|
)
|
|
assert_equal(
|
|
f"iwooos_projection.progress_acceleration_lanes.{item['lane_id']}.owner_response_accepted_count",
|
|
item["owner_response_accepted_count"],
|
|
0,
|
|
)
|
|
assert_false(
|
|
f"iwooos_projection.progress_acceleration_lanes.{item['lane_id']}.payloads_ingested",
|
|
item["payloads_ingested"],
|
|
)
|
|
assert_equal(
|
|
f"iwooos_projection.progress_acceleration_lanes.{item['lane_id']}.active_runtime_gate_count",
|
|
item["active_runtime_gate_count"],
|
|
0,
|
|
)
|
|
assert_equal(
|
|
f"iwooos_projection.progress_acceleration_lanes.{item['lane_id']}.github_primary_ready_count",
|
|
item["github_primary_ready_count"],
|
|
0,
|
|
)
|
|
if item["lane_id"] == "progress_acceleration_awooop_landing":
|
|
assert_true(
|
|
f"iwooos_projection.progress_acceleration_lanes.{item['lane_id']}.production_landing_enabled",
|
|
item["production_landing_enabled"],
|
|
)
|
|
else:
|
|
assert_false(
|
|
f"iwooos_projection.progress_acceleration_lanes.{item['lane_id']}.production_landing_enabled",
|
|
item["production_landing_enabled"],
|
|
)
|
|
assert_false(
|
|
f"iwooos_projection.progress_acceleration_lanes.{item['lane_id']}.runtime_execution_authorized",
|
|
item["runtime_execution_authorized"],
|
|
)
|
|
assert_false(
|
|
f"iwooos_projection.progress_acceleration_lanes.{item['lane_id']}.action_buttons_allowed",
|
|
item["action_buttons_allowed"],
|
|
)
|
|
assert_true(
|
|
f"iwooos_projection.progress_acceleration_lanes.{item['lane_id']}.not_authorization",
|
|
item["not_authorization"],
|
|
)
|
|
expected_owner_response_next_action_focus_ids = [
|
|
"owner_response_focus_s4_9_gitea_owner_attestation",
|
|
"owner_response_focus_s4_10_github_target_owner_decision",
|
|
"owner_response_focus_s4_11_refs_truth_owner_response",
|
|
"owner_response_focus_s4_12_workflow_secret_name_owner_response",
|
|
]
|
|
assert_equal(
|
|
"iwooos_projection.summary.owner_response_next_action_focus_item_count",
|
|
iwooos_projection["summary"]["owner_response_next_action_focus_item_count"],
|
|
len(expected_owner_response_next_action_focus_ids),
|
|
)
|
|
owner_response_focus_items = iwooos_projection["owner_response_next_action_focus_items"]
|
|
assert_equal(
|
|
"iwooos_projection.owner_response_next_action_focus_items.ids",
|
|
[item["focus_id"] for item in owner_response_focus_items],
|
|
expected_owner_response_next_action_focus_ids,
|
|
)
|
|
assert_equal(
|
|
"iwooos_projection.owner_response_next_action_focus_items.display_order",
|
|
[item["display_order"] for item in owner_response_focus_items],
|
|
list(range(1, len(expected_owner_response_next_action_focus_ids) + 1)),
|
|
)
|
|
assert_equal(
|
|
"iwooos_projection.owner_response_next_action_focus_items.source_rollup_lane_ids",
|
|
[item["source_rollup_lane_id"] for item in owner_response_focus_items],
|
|
[
|
|
"s4_9_gitea_inventory_owner_attestation_response",
|
|
"s4_10_github_target_owner_decision_response",
|
|
"s4_11_ref_truth_owner_response",
|
|
"s4_12_workflow_secret_name_owner_response",
|
|
],
|
|
)
|
|
assert_equal(
|
|
"iwooos_projection.owner_response_next_action_focus_items.blocked_until_previous_focus_accepted",
|
|
[item["blocked_until_previous_focus_accepted"] for item in owner_response_focus_items],
|
|
[False, True, True, True],
|
|
)
|
|
for item in owner_response_focus_items:
|
|
assert_equal(
|
|
f"iwooos_projection.owner_response_next_action_focus_items.{item['focus_id']}.display_mode",
|
|
item["display_mode"],
|
|
"owner_response_next_action_focus_only",
|
|
)
|
|
assert_equal(
|
|
f"iwooos_projection.owner_response_next_action_focus_items.{item['focus_id']}.owner_response_received_count",
|
|
item["owner_response_received_count"],
|
|
0,
|
|
)
|
|
assert_equal(
|
|
f"iwooos_projection.owner_response_next_action_focus_items.{item['focus_id']}.owner_response_accepted_count",
|
|
item["owner_response_accepted_count"],
|
|
0,
|
|
)
|
|
assert_equal(
|
|
f"iwooos_projection.owner_response_next_action_focus_items.{item['focus_id']}.owner_response_rejected_count",
|
|
item["owner_response_rejected_count"],
|
|
0,
|
|
)
|
|
assert_equal(
|
|
f"iwooos_projection.owner_response_next_action_focus_items.{item['focus_id']}.audit_events_emitted_count",
|
|
item["audit_events_emitted_count"],
|
|
0,
|
|
)
|
|
assert_false(
|
|
f"iwooos_projection.owner_response_next_action_focus_items.{item['focus_id']}.auto_chase_allowed",
|
|
item["auto_chase_allowed"],
|
|
)
|
|
assert_false(
|
|
f"iwooos_projection.owner_response_next_action_focus_items.{item['focus_id']}.autofill_allowed",
|
|
item["autofill_allowed"],
|
|
)
|
|
assert_false(
|
|
f"iwooos_projection.owner_response_next_action_focus_items.{item['focus_id']}.mark_received_allowed",
|
|
item["mark_received_allowed"],
|
|
)
|
|
assert_false(
|
|
f"iwooos_projection.owner_response_next_action_focus_items.{item['focus_id']}.mark_accepted_allowed",
|
|
item["mark_accepted_allowed"],
|
|
)
|
|
assert_false(
|
|
f"iwooos_projection.owner_response_next_action_focus_items.{item['focus_id']}.approval_record_created",
|
|
item["approval_record_created"],
|
|
)
|
|
assert_false(
|
|
f"iwooos_projection.owner_response_next_action_focus_items.{item['focus_id']}.runtime_gate_opened",
|
|
item["runtime_gate_opened"],
|
|
)
|
|
assert_false(
|
|
f"iwooos_projection.owner_response_next_action_focus_items.{item['focus_id']}.repo_or_refs_mutation_allowed",
|
|
item["repo_or_refs_mutation_allowed"],
|
|
)
|
|
assert_false(
|
|
f"iwooos_projection.owner_response_next_action_focus_items.{item['focus_id']}.secret_value_collection_allowed",
|
|
item["secret_value_collection_allowed"],
|
|
)
|
|
assert_false(
|
|
f"iwooos_projection.owner_response_next_action_focus_items.{item['focus_id']}.runtime_execution_authorized",
|
|
item["runtime_execution_authorized"],
|
|
)
|
|
assert_false(
|
|
f"iwooos_projection.owner_response_next_action_focus_items.{item['focus_id']}.action_buttons_allowed",
|
|
item["action_buttons_allowed"],
|
|
)
|
|
assert_true(
|
|
f"iwooos_projection.owner_response_next_action_focus_items.{item['focus_id']}.not_authorization",
|
|
item["not_authorization"],
|
|
)
|
|
source_control_readiness_items = iwooos_projection["source_control_primary_readiness_items"]
|
|
assert_equal(
|
|
"iwooos_projection.source_control_primary_readiness_items.ids",
|
|
[item["item_id"] for item in source_control_readiness_items],
|
|
expected_iwooos_source_control_primary_readiness_item_ids,
|
|
)
|
|
assert_equal(
|
|
"iwooos_projection.source_control_primary_readiness_items.display_order",
|
|
[item["display_order"] for item in source_control_readiness_items],
|
|
list(range(1, len(expected_iwooos_source_control_primary_readiness_item_ids) + 1)),
|
|
)
|
|
assert_equal(
|
|
"iwooos_projection.source_control_primary_readiness_items.gate_ids",
|
|
[item["gate_id"] for item in source_control_readiness_items],
|
|
["S4.0", "S4.0", "S4.13", "S4.11", "S4.12", "S4.4"],
|
|
)
|
|
for item in source_control_readiness_items:
|
|
assert_equal(
|
|
f"iwooos_projection.source_control_primary_readiness_items.{item['item_id']}.display_mode",
|
|
item["display_mode"],
|
|
"github_primary_readiness_only",
|
|
)
|
|
assert_equal(
|
|
f"iwooos_projection.source_control_primary_readiness_items.{item['item_id']}.primary_ready_count",
|
|
item["primary_ready_count"],
|
|
0,
|
|
)
|
|
assert_equal(
|
|
f"iwooos_projection.source_control_primary_readiness_items.{item['item_id']}.owner_response_received_count",
|
|
item["owner_response_received_count"],
|
|
0,
|
|
)
|
|
assert_equal(
|
|
f"iwooos_projection.source_control_primary_readiness_items.{item['item_id']}.owner_response_accepted_count",
|
|
item["owner_response_accepted_count"],
|
|
0,
|
|
)
|
|
assert_false(
|
|
f"iwooos_projection.source_control_primary_readiness_items.{item['item_id']}.github_primary_switch_authorized",
|
|
item["github_primary_switch_authorized"],
|
|
)
|
|
assert_false(
|
|
f"iwooos_projection.source_control_primary_readiness_items.{item['item_id']}.runtime_execution_authorized",
|
|
item["runtime_execution_authorized"],
|
|
)
|
|
assert_false(
|
|
f"iwooos_projection.source_control_primary_readiness_items.{item['item_id']}.action_buttons_allowed",
|
|
item["action_buttons_allowed"],
|
|
)
|
|
assert_true(
|
|
f"iwooos_projection.source_control_primary_readiness_items.{item['item_id']}.not_authorization",
|
|
item["not_authorization"],
|
|
)
|
|
expected_s4_9_owner_response_request_template_ids = [
|
|
"response-public-only-vs-local-gitea-gap",
|
|
"response-org-user-endpoint-identity",
|
|
"response-internal-110-adjacent-scope",
|
|
"response-repo-owner-canonical-scope",
|
|
"response-legacy-or-inaccessible-disposition",
|
|
]
|
|
assert_equal(
|
|
"iwooos_projection.summary.s4_9_owner_response_request_template_count",
|
|
iwooos_projection["summary"]["s4_9_owner_response_request_template_count"],
|
|
len(expected_s4_9_owner_response_request_template_ids),
|
|
)
|
|
assert_equal(
|
|
"s49_request_draft.schema_version",
|
|
s49_request_draft["schema_version"],
|
|
"gitea_inventory_owner_attestation_request_draft_v1",
|
|
)
|
|
assert_equal("s49_request_draft.status", s49_request_draft["status"], "request_draft_ready_not_sent")
|
|
assert_equal("s49_request_draft.stage_id", s49_request_draft["stage_id"], "S4.9")
|
|
assert_equal("s49_request_draft.mode", s49_request_draft["mode"], "owner_request_draft_only")
|
|
assert_false("s49_request_draft.runtime_execution_authorized", s49_request_draft["runtime_execution_authorized"])
|
|
assert_true(
|
|
"s49_request_draft.summary.request_draft_package_ready",
|
|
s49_request_draft["summary"]["request_draft_package_ready"],
|
|
)
|
|
assert_equal(
|
|
"s49_request_draft.summary.request_draft_template_count",
|
|
s49_request_draft["summary"]["request_draft_template_count"],
|
|
len(expected_s4_9_owner_response_request_template_ids),
|
|
)
|
|
assert_equal(
|
|
"s49_request_draft.summary.request_draft_template_ready_count",
|
|
s49_request_draft["summary"]["request_draft_template_ready_count"],
|
|
len(expected_s4_9_owner_response_request_template_ids),
|
|
)
|
|
assert_true(
|
|
"s49_request_draft.summary.frontstage_package_visible",
|
|
s49_request_draft["summary"]["frontstage_package_visible"],
|
|
)
|
|
assert_equal(
|
|
"s49_request_draft.summary.frontstage_card_count",
|
|
s49_request_draft["summary"]["frontstage_card_count"],
|
|
len(expected_s4_9_owner_response_request_template_ids),
|
|
)
|
|
assert_true(
|
|
"s49_request_draft.summary.frontstage_detail_visible",
|
|
s49_request_draft["summary"]["frontstage_detail_visible"],
|
|
)
|
|
assert_equal(
|
|
"s49_request_draft.summary.frontstage_detail_row_count",
|
|
s49_request_draft["summary"]["frontstage_detail_row_count"],
|
|
len(expected_s4_9_owner_response_request_template_ids),
|
|
)
|
|
assert_equal(
|
|
"s49_request_draft.summary.frontstage_required_field_total",
|
|
s49_request_draft["summary"]["frontstage_required_field_total"],
|
|
30,
|
|
)
|
|
assert_equal(
|
|
"s49_request_draft.summary.frontstage_forbidden_action_count",
|
|
s49_request_draft["summary"]["frontstage_forbidden_action_count"],
|
|
10,
|
|
)
|
|
assert_false("s49_request_draft.summary.request_sent", s49_request_draft["summary"]["request_sent"])
|
|
assert_equal("s49_request_draft.summary.request_sent_count", s49_request_draft["summary"]["request_sent_count"], 0)
|
|
assert_equal(
|
|
"s49_request_draft.summary.owner_response_received_count",
|
|
s49_request_draft["summary"]["owner_response_received_count"],
|
|
0,
|
|
)
|
|
assert_equal(
|
|
"s49_request_draft.summary.owner_response_accepted_count",
|
|
s49_request_draft["summary"]["owner_response_accepted_count"],
|
|
0,
|
|
)
|
|
assert_equal(
|
|
"s49_request_draft.summary.owner_response_rejected_count",
|
|
s49_request_draft["summary"]["owner_response_rejected_count"],
|
|
0,
|
|
)
|
|
assert_equal(
|
|
"s49_request_draft.summary.audit_events_emitted_count",
|
|
s49_request_draft["summary"]["audit_events_emitted_count"],
|
|
0,
|
|
)
|
|
assert_false("s49_request_draft.summary.runtime_gate_opened", s49_request_draft["summary"]["runtime_gate_opened"])
|
|
assert_false("s49_request_draft.summary.action_buttons_allowed", s49_request_draft["summary"]["action_buttons_allowed"])
|
|
assert_true("s49_request_draft.summary.not_authorization", s49_request_draft["summary"]["not_authorization"])
|
|
assert_equal(
|
|
"s49_request_draft.request_draft_templates.ids",
|
|
[item["template_id"] for item in s49_request_draft["request_draft_templates"]],
|
|
expected_s4_9_owner_response_request_template_ids,
|
|
)
|
|
assert_equal(
|
|
"s49_request_draft.request_draft_templates.display_order",
|
|
[item["display_order"] for item in s49_request_draft["request_draft_templates"]],
|
|
list(range(1, len(expected_s4_9_owner_response_request_template_ids) + 1)),
|
|
)
|
|
for item in s49_request_draft["request_draft_templates"]:
|
|
assert_equal(
|
|
f"s49_request_draft.request_draft_templates.{item['template_id']}.draft_status",
|
|
item["draft_status"],
|
|
"ready_not_sent",
|
|
)
|
|
s4_9_owner_response_request_templates = iwooos_projection["s4_9_owner_response_request_templates"]
|
|
assert_equal(
|
|
"iwooos_projection.s4_9_owner_response_request_templates.ids",
|
|
[item["template_id"] for item in s4_9_owner_response_request_templates],
|
|
expected_s4_9_owner_response_request_template_ids,
|
|
)
|
|
assert_equal(
|
|
"iwooos_projection.s4_9_owner_response_request_templates.display_order",
|
|
[item["display_order"] for item in s4_9_owner_response_request_templates],
|
|
list(range(1, len(expected_s4_9_owner_response_request_template_ids) + 1)),
|
|
)
|
|
assert_equal(
|
|
"iwooos_projection.s4_9_owner_response_request_templates.source_template_status_ids",
|
|
[item["source_template_status_id"] for item in s4_9_owner_response_request_templates],
|
|
expected_s4_9_owner_response_request_template_ids,
|
|
)
|
|
assert_equal(
|
|
"iwooos_projection.s4_9_owner_response_request_templates.attestation_item_ids",
|
|
[item["attestation_item_id"] for item in s4_9_owner_response_request_templates],
|
|
[
|
|
"public_only_vs_local_gitea_gap",
|
|
"org_user_endpoint_identity",
|
|
"internal_110_adjacent_scope",
|
|
"repo_owner_canonical_scope",
|
|
"legacy_or_inaccessible_repo_disposition",
|
|
],
|
|
)
|
|
for item in s4_9_owner_response_request_templates:
|
|
assert_equal(
|
|
f"iwooos_projection.s4_9_owner_response_request_templates.{item['template_id']}.request_status",
|
|
item["request_status"],
|
|
"request_ready_not_sent",
|
|
)
|
|
assert_equal(
|
|
f"iwooos_projection.s4_9_owner_response_request_templates.{item['template_id']}.current_state",
|
|
item["current_state"],
|
|
"waiting_owner_response",
|
|
)
|
|
assert_equal(
|
|
f"iwooos_projection.s4_9_owner_response_request_templates.{item['template_id']}.display_mode",
|
|
item["display_mode"],
|
|
"s4_9_owner_response_request_template_only",
|
|
)
|
|
assert_equal(
|
|
f"iwooos_projection.s4_9_owner_response_request_templates.{item['template_id']}.request_sent_count",
|
|
item["request_sent_count"],
|
|
0,
|
|
)
|
|
assert_equal(
|
|
f"iwooos_projection.s4_9_owner_response_request_templates.{item['template_id']}.owner_response_received_count",
|
|
item["owner_response_received_count"],
|
|
0,
|
|
)
|
|
assert_equal(
|
|
f"iwooos_projection.s4_9_owner_response_request_templates.{item['template_id']}.owner_response_accepted_count",
|
|
item["owner_response_accepted_count"],
|
|
0,
|
|
)
|
|
assert_equal(
|
|
f"iwooos_projection.s4_9_owner_response_request_templates.{item['template_id']}.owner_response_rejected_count",
|
|
item["owner_response_rejected_count"],
|
|
0,
|
|
)
|
|
assert_equal(
|
|
f"iwooos_projection.s4_9_owner_response_request_templates.{item['template_id']}.audit_events_emitted_count",
|
|
item["audit_events_emitted_count"],
|
|
0,
|
|
)
|
|
for flag in [
|
|
"auto_chase_allowed",
|
|
"autofill_allowed",
|
|
"request_send_allowed",
|
|
"mark_received_allowed",
|
|
"mark_accepted_allowed",
|
|
"approval_record_created",
|
|
"gitea_inventory_completed",
|
|
"gitea_write_allowed",
|
|
"repo_or_refs_mutation_allowed",
|
|
"github_primary_ready",
|
|
"secret_value_collection_allowed",
|
|
"runtime_execution_authorized",
|
|
"action_buttons_allowed",
|
|
]:
|
|
assert_false(
|
|
f"iwooos_projection.s4_9_owner_response_request_templates.{item['template_id']}.{flag}",
|
|
item[flag],
|
|
)
|
|
assert_true(
|
|
f"iwooos_projection.s4_9_owner_response_request_templates.{item['template_id']}.not_authorization",
|
|
item["not_authorization"],
|
|
)
|
|
expected_s4_9_owner_response_preflight_ids = [
|
|
"s4_9_preflight_known_attestation_item",
|
|
"s4_9_preflight_required_owner_fields",
|
|
"s4_9_preflight_allowed_decision",
|
|
"s4_9_preflight_redacted_evidence_only",
|
|
"s4_9_preflight_no_execution_request",
|
|
"s4_9_preflight_all_five_items_before_accepted",
|
|
]
|
|
assert_equal(
|
|
"iwooos_projection.summary.s4_9_owner_response_preflight_check_count",
|
|
iwooos_projection["summary"]["s4_9_owner_response_preflight_check_count"],
|
|
len(expected_s4_9_owner_response_preflight_ids),
|
|
)
|
|
s4_9_owner_response_preflight_checks = iwooos_projection["s4_9_owner_response_preflight_checks"]
|
|
assert_equal(
|
|
"iwooos_projection.s4_9_owner_response_preflight_checks.ids",
|
|
[item["preflight_id"] for item in s4_9_owner_response_preflight_checks],
|
|
expected_s4_9_owner_response_preflight_ids,
|
|
)
|
|
assert_equal(
|
|
"iwooos_projection.s4_9_owner_response_preflight_checks.display_order",
|
|
[item["display_order"] for item in s4_9_owner_response_preflight_checks],
|
|
list(range(1, len(expected_s4_9_owner_response_preflight_ids) + 1)),
|
|
)
|
|
assert_equal(
|
|
"iwooos_projection.s4_9_owner_response_preflight_checks.source_check_ids",
|
|
[item["source_check_id"] for item in s4_9_owner_response_preflight_checks],
|
|
[
|
|
"preflight-known-attestation-item",
|
|
"preflight-required-owner-fields",
|
|
"preflight-allowed-decision",
|
|
"preflight-redacted-evidence-only",
|
|
"preflight-no-execution-request",
|
|
"preflight-all-five-items-before-accepted",
|
|
],
|
|
)
|
|
assert_equal(
|
|
"iwooos_projection.s4_9_owner_response_preflight_checks.failure_lanes",
|
|
[item["failure_lane"] for item in s4_9_owner_response_preflight_checks],
|
|
[
|
|
"request_owner_correction",
|
|
"request_more_evidence",
|
|
"request_owner_correction",
|
|
"quarantine_sensitive_payload",
|
|
"reject_execution_request",
|
|
"keep_waiting_owner_response",
|
|
],
|
|
)
|
|
for item in s4_9_owner_response_preflight_checks:
|
|
assert_equal(
|
|
f"iwooos_projection.s4_9_owner_response_preflight_checks.{item['preflight_id']}.source_packet",
|
|
item["source_packet"],
|
|
"docs/security/GITEA-INVENTORY-OWNER-ATTESTATION-RESPONSE.md",
|
|
)
|
|
assert_equal(
|
|
f"iwooos_projection.s4_9_owner_response_preflight_checks.{item['preflight_id']}.display_mode",
|
|
item["display_mode"],
|
|
"s4_9_owner_response_preflight_only",
|
|
)
|
|
assert_true(f"iwooos_projection.s4_9_owner_response_preflight_checks.{item['preflight_id']}.required", item["required"])
|
|
assert_equal(
|
|
f"iwooos_projection.s4_9_owner_response_preflight_checks.{item['preflight_id']}.request_sent_count",
|
|
item["request_sent_count"],
|
|
0,
|
|
)
|
|
assert_equal(
|
|
f"iwooos_projection.s4_9_owner_response_preflight_checks.{item['preflight_id']}.owner_response_received_count",
|
|
item["owner_response_received_count"],
|
|
0,
|
|
)
|
|
assert_equal(
|
|
f"iwooos_projection.s4_9_owner_response_preflight_checks.{item['preflight_id']}.owner_response_accepted_count",
|
|
item["owner_response_accepted_count"],
|
|
0,
|
|
)
|
|
assert_equal(
|
|
f"iwooos_projection.s4_9_owner_response_preflight_checks.{item['preflight_id']}.owner_response_rejected_count",
|
|
item["owner_response_rejected_count"],
|
|
0,
|
|
)
|
|
assert_equal(
|
|
f"iwooos_projection.s4_9_owner_response_preflight_checks.{item['preflight_id']}.preflight_passed_count",
|
|
item["preflight_passed_count"],
|
|
0,
|
|
)
|
|
assert_equal(
|
|
f"iwooos_projection.s4_9_owner_response_preflight_checks.{item['preflight_id']}.audit_events_emitted_count",
|
|
item["audit_events_emitted_count"],
|
|
0,
|
|
)
|
|
for flag in [
|
|
"request_sent_allowed",
|
|
"owner_response_collection_allowed",
|
|
"mark_passed_allowed",
|
|
"mark_received_allowed",
|
|
"mark_accepted_allowed",
|
|
"approval_record_created",
|
|
"runtime_gate_opened",
|
|
"gitea_write_allowed",
|
|
"repo_or_refs_mutation_allowed",
|
|
"secret_value_collection_allowed",
|
|
"sensitive_payload_allowed",
|
|
"runtime_execution_authorized",
|
|
"action_buttons_allowed",
|
|
]:
|
|
assert_false(
|
|
f"iwooos_projection.s4_9_owner_response_preflight_checks.{item['preflight_id']}.{flag}",
|
|
item[flag],
|
|
)
|
|
assert_true(
|
|
f"iwooos_projection.s4_9_owner_response_preflight_checks.{item['preflight_id']}.not_authorization",
|
|
item["not_authorization"],
|
|
)
|
|
assert_equal(
|
|
"iwooos_projection.posture_pillars.ids",
|
|
[item["pillar_id"] for item in iwooos_projection["posture_pillars"]],
|
|
["exposure_posture", "source_control_supply_chain", "kali_112_mesh", "approval_boundary"],
|
|
)
|
|
assert_equal(
|
|
"iwooos_projection.posture_pillars.display_order",
|
|
[item["display_order"] for item in iwooos_projection["posture_pillars"]],
|
|
[1, 2, 3, 4],
|
|
)
|
|
for item in iwooos_projection["posture_pillars"]:
|
|
assert_equal(f"iwooos_projection.posture_pillars.{item['pillar_id']}.display_mode", item["display_mode"], "posture_only")
|
|
assert_false(
|
|
f"iwooos_projection.posture_pillars.{item['pillar_id']}.runtime_execution_authorized",
|
|
item["runtime_execution_authorized"],
|
|
)
|
|
assert_true(f"iwooos_projection.posture_pillars.{item['pillar_id']}.not_authorization", item["not_authorization"])
|
|
iwooos_surfaces = iwooos_projection["existing_frontend_surfaces"]
|
|
assert_equal(
|
|
"iwooos_projection.existing_frontend_surfaces.ids",
|
|
[item["surface_id"] for item in iwooos_surfaces],
|
|
expected_iwooos_surface_ids,
|
|
)
|
|
assert_equal(
|
|
"iwooos_projection.existing_frontend_surfaces.display_order",
|
|
[item["display_order"] for item in iwooos_surfaces],
|
|
list(range(1, len(expected_iwooos_surface_ids) + 1)),
|
|
)
|
|
for item in iwooos_surfaces:
|
|
assert_equal(
|
|
f"iwooos_projection.existing_frontend_surfaces.{item['surface_id']}.display_mode",
|
|
item["display_mode"],
|
|
"link_only",
|
|
)
|
|
assert_false(
|
|
f"iwooos_projection.existing_frontend_surfaces.{item['surface_id']}.runtime_execution_authorized",
|
|
item["runtime_execution_authorized"],
|
|
)
|
|
assert_false(
|
|
f"iwooos_projection.existing_frontend_surfaces.{item['surface_id']}.action_buttons_allowed",
|
|
item["action_buttons_allowed"],
|
|
)
|
|
assert_true(
|
|
f"iwooos_projection.existing_frontend_surfaces.{item['surface_id']}.not_authorization",
|
|
item["not_authorization"],
|
|
)
|
|
iwooos_surface_bridge_statuses = iwooos_projection["frontend_surface_reverse_bridge_statuses"]
|
|
assert_equal(
|
|
"iwooos_projection.frontend_surface_reverse_bridge_statuses.ids",
|
|
[item["surface_id"] for item in iwooos_surface_bridge_statuses],
|
|
expected_iwooos_surface_ids,
|
|
)
|
|
assert_equal(
|
|
"iwooos_projection.frontend_surface_reverse_bridge_statuses.display_order",
|
|
[item["display_order"] for item in iwooos_surface_bridge_statuses],
|
|
list(range(1, len(expected_iwooos_surface_ids) + 1)),
|
|
)
|
|
expected_iwooos_surface_bridge_states = [
|
|
"embedded_bridge_visible",
|
|
"direct_bridge_visible",
|
|
"direct_bridge_visible",
|
|
"direct_bridge_visible",
|
|
"direct_bridge_visible",
|
|
"direct_bridge_visible",
|
|
"direct_bridge_visible",
|
|
"direct_bridge_visible",
|
|
"awooop_candidate_visible",
|
|
"review_handoff_candidate_visible",
|
|
]
|
|
assert_equal(
|
|
"iwooos_projection.frontend_surface_reverse_bridge_statuses.states",
|
|
[item["reverse_bridge_state"] for item in iwooos_surface_bridge_statuses],
|
|
expected_iwooos_surface_bridge_states,
|
|
)
|
|
for item in iwooos_surface_bridge_statuses:
|
|
assert_equal(
|
|
f"iwooos_projection.frontend_surface_reverse_bridge_statuses.{item['surface_id']}.display_mode",
|
|
item["display_mode"],
|
|
"reverse_bridge_status_only",
|
|
)
|
|
assert_false(
|
|
f"iwooos_projection.frontend_surface_reverse_bridge_statuses.{item['surface_id']}.runtime_execution_authorized",
|
|
item["runtime_execution_authorized"],
|
|
)
|
|
assert_false(
|
|
f"iwooos_projection.frontend_surface_reverse_bridge_statuses.{item['surface_id']}.action_buttons_allowed",
|
|
item["action_buttons_allowed"],
|
|
)
|
|
assert_true(
|
|
f"iwooos_projection.frontend_surface_reverse_bridge_statuses.{item['surface_id']}.not_authorization",
|
|
item["not_authorization"],
|
|
)
|
|
iwooos_coverage_groups = iwooos_projection["frontend_surface_coverage_groups"]
|
|
assert_equal(
|
|
"iwooos_projection.frontend_surface_coverage_groups.ids",
|
|
[item["group_id"] for item in iwooos_coverage_groups],
|
|
expected_iwooos_coverage_group_ids,
|
|
)
|
|
assert_equal(
|
|
"iwooos_projection.frontend_surface_coverage_groups.display_order",
|
|
[item["display_order"] for item in iwooos_coverage_groups],
|
|
list(range(1, len(expected_iwooos_coverage_group_ids) + 1)),
|
|
)
|
|
covered_surface_ids = sorted({surface_id for item in iwooos_coverage_groups for surface_id in item["surface_ids"]})
|
|
assert_equal("iwooos_projection.frontend_surface_coverage_groups.coverage", covered_surface_ids, sorted(expected_iwooos_surface_ids))
|
|
for item in iwooos_coverage_groups:
|
|
assert_equal(
|
|
f"iwooos_projection.frontend_surface_coverage_groups.{item['group_id']}.display_mode",
|
|
item["display_mode"],
|
|
"coverage_only",
|
|
)
|
|
assert_false(
|
|
f"iwooos_projection.frontend_surface_coverage_groups.{item['group_id']}.runtime_execution_authorized",
|
|
item["runtime_execution_authorized"],
|
|
)
|
|
assert_false(
|
|
f"iwooos_projection.frontend_surface_coverage_groups.{item['group_id']}.action_buttons_allowed",
|
|
item["action_buttons_allowed"],
|
|
)
|
|
assert_true(
|
|
f"iwooos_projection.frontend_surface_coverage_groups.{item['group_id']}.not_authorization",
|
|
item["not_authorization"],
|
|
)
|
|
iwooos_conflict_controls = iwooos_projection["frontend_surface_conflict_controls"]
|
|
assert_equal(
|
|
"iwooos_projection.frontend_surface_conflict_controls.ids",
|
|
[item["control_id"] for item in iwooos_conflict_controls],
|
|
expected_iwooos_conflict_control_ids,
|
|
)
|
|
assert_equal(
|
|
"iwooos_projection.frontend_surface_conflict_controls.display_order",
|
|
[item["display_order"] for item in iwooos_conflict_controls],
|
|
list(range(1, len(expected_iwooos_conflict_control_ids) + 1)),
|
|
)
|
|
for item in iwooos_conflict_controls:
|
|
assert_equal(
|
|
f"iwooos_projection.frontend_surface_conflict_controls.{item['control_id']}.display_mode",
|
|
item["display_mode"],
|
|
"conflict_control_only",
|
|
)
|
|
assert_false(
|
|
f"iwooos_projection.frontend_surface_conflict_controls.{item['control_id']}.runtime_execution_authorized",
|
|
item["runtime_execution_authorized"],
|
|
)
|
|
assert_false(
|
|
f"iwooos_projection.frontend_surface_conflict_controls.{item['control_id']}.action_buttons_allowed",
|
|
item["action_buttons_allowed"],
|
|
)
|
|
assert_true(
|
|
f"iwooos_projection.frontend_surface_conflict_controls.{item['control_id']}.not_authorization",
|
|
item["not_authorization"],
|
|
)
|
|
iwooos_journey_steps = iwooos_projection["operator_journey_steps"]
|
|
assert_equal(
|
|
"iwooos_projection.operator_journey_steps.ids",
|
|
[item["step_id"] for item in iwooos_journey_steps],
|
|
expected_iwooos_journey_step_ids,
|
|
)
|
|
assert_equal(
|
|
"iwooos_projection.operator_journey_steps.display_order",
|
|
[item["display_order"] for item in iwooos_journey_steps],
|
|
list(range(1, len(expected_iwooos_journey_step_ids) + 1)),
|
|
)
|
|
for item in iwooos_journey_steps:
|
|
assert_equal(
|
|
f"iwooos_projection.operator_journey_steps.{item['step_id']}.display_mode",
|
|
item["display_mode"],
|
|
"journey_only",
|
|
)
|
|
assert_false(
|
|
f"iwooos_projection.operator_journey_steps.{item['step_id']}.runtime_execution_authorized",
|
|
item["runtime_execution_authorized"],
|
|
)
|
|
assert_false(
|
|
f"iwooos_projection.operator_journey_steps.{item['step_id']}.action_buttons_allowed",
|
|
item["action_buttons_allowed"],
|
|
)
|
|
assert_true(
|
|
f"iwooos_projection.operator_journey_steps.{item['step_id']}.not_authorization",
|
|
item["not_authorization"],
|
|
)
|
|
iwooos_evidence_readiness = iwooos_projection["owner_evidence_readiness_items"]
|
|
assert_equal(
|
|
"iwooos_projection.owner_evidence_readiness_items.ids",
|
|
[item["item_id"] for item in iwooos_evidence_readiness],
|
|
expected_iwooos_evidence_readiness_item_ids,
|
|
)
|
|
assert_equal(
|
|
"iwooos_projection.owner_evidence_readiness_items.display_order",
|
|
[item["display_order"] for item in iwooos_evidence_readiness],
|
|
list(range(1, len(expected_iwooos_evidence_readiness_item_ids) + 1)),
|
|
)
|
|
for item in iwooos_evidence_readiness:
|
|
assert_equal(
|
|
f"iwooos_projection.owner_evidence_readiness_items.{item['item_id']}.display_mode",
|
|
item["display_mode"],
|
|
"readiness_only",
|
|
)
|
|
assert_equal(
|
|
f"iwooos_projection.owner_evidence_readiness_items.{item['item_id']}.received_count",
|
|
item["received_count"],
|
|
0,
|
|
)
|
|
assert_equal(
|
|
f"iwooos_projection.owner_evidence_readiness_items.{item['item_id']}.accepted_count",
|
|
item["accepted_count"],
|
|
0,
|
|
)
|
|
assert_false(
|
|
f"iwooos_projection.owner_evidence_readiness_items.{item['item_id']}.runtime_execution_authorized",
|
|
item["runtime_execution_authorized"],
|
|
)
|
|
assert_false(
|
|
f"iwooos_projection.owner_evidence_readiness_items.{item['item_id']}.action_buttons_allowed",
|
|
item["action_buttons_allowed"],
|
|
)
|
|
assert_true(
|
|
f"iwooos_projection.owner_evidence_readiness_items.{item['item_id']}.not_authorization",
|
|
item["not_authorization"],
|
|
)
|
|
iwooos_host_coverage = iwooos_projection["host_coverage_items"]
|
|
assert_equal(
|
|
"iwooos_projection.host_coverage_items.ids",
|
|
[item["host_id"] for item in iwooos_host_coverage],
|
|
expected_iwooos_host_coverage_item_ids,
|
|
)
|
|
assert_equal(
|
|
"iwooos_projection.host_coverage_items.display_order",
|
|
[item["display_order"] for item in iwooos_host_coverage],
|
|
list(range(1, len(expected_iwooos_host_coverage_item_ids) + 1)),
|
|
)
|
|
for item in iwooos_host_coverage:
|
|
assert_equal(
|
|
f"iwooos_projection.host_coverage_items.{item['host_id']}.display_mode",
|
|
item["display_mode"],
|
|
"coverage_only",
|
|
)
|
|
assert_false(
|
|
f"iwooos_projection.host_coverage_items.{item['host_id']}.active_scan_authorized",
|
|
item["active_scan_authorized"],
|
|
)
|
|
assert_false(
|
|
f"iwooos_projection.host_coverage_items.{item['host_id']}.ssh_change_authorized",
|
|
item["ssh_change_authorized"],
|
|
)
|
|
assert_false(
|
|
f"iwooos_projection.host_coverage_items.{item['host_id']}.runtime_execution_authorized",
|
|
item["runtime_execution_authorized"],
|
|
)
|
|
assert_false(
|
|
f"iwooos_projection.host_coverage_items.{item['host_id']}.action_buttons_allowed",
|
|
item["action_buttons_allowed"],
|
|
)
|
|
assert_true(
|
|
f"iwooos_projection.host_coverage_items.{item['host_id']}.not_authorization",
|
|
item["not_authorization"],
|
|
)
|
|
iwooos_kali_maintenance_readiness = iwooos_projection["kali_maintenance_readiness_items"]
|
|
assert_equal(
|
|
"iwooos_projection.kali_maintenance_readiness_items.ids",
|
|
[item["item_id"] for item in iwooos_kali_maintenance_readiness],
|
|
expected_iwooos_kali_maintenance_readiness_item_ids,
|
|
)
|
|
assert_equal(
|
|
"iwooos_projection.kali_maintenance_readiness_items.display_order",
|
|
[item["display_order"] for item in iwooos_kali_maintenance_readiness],
|
|
list(range(1, len(expected_iwooos_kali_maintenance_readiness_item_ids) + 1)),
|
|
)
|
|
assert_equal(
|
|
"iwooos_projection.kali_maintenance_readiness_items.upgradable_package_count",
|
|
iwooos_kali_maintenance_readiness[2]["metric_value"],
|
|
1994,
|
|
)
|
|
assert_equal(
|
|
"iwooos_projection.kali_maintenance_readiness_items.failed_systemd_unit_count",
|
|
iwooos_kali_maintenance_readiness[3]["metric_value"],
|
|
1,
|
|
)
|
|
assert_equal(
|
|
"iwooos_projection.kali_maintenance_readiness_items.scanner_health",
|
|
iwooos_kali_maintenance_readiness[1]["metric_value"],
|
|
"healthy",
|
|
)
|
|
assert_equal(
|
|
"iwooos_projection.kali_maintenance_readiness_items.scanner_api_health_endpoint",
|
|
iwooos_kali_maintenance_readiness[1]["scanner_api_health_endpoint"],
|
|
"127.0.0.1:8080/health",
|
|
)
|
|
assert_equal(
|
|
"iwooos_projection.kali_maintenance_readiness_items.scanner_service_state",
|
|
iwooos_kali_maintenance_readiness[1]["scanner_service_state"],
|
|
"active",
|
|
)
|
|
assert_equal(
|
|
"iwooos_projection.kali_maintenance_readiness_items.scanner_service_enabled",
|
|
iwooos_kali_maintenance_readiness[1]["scanner_service_enabled"],
|
|
"enabled",
|
|
)
|
|
assert_equal(
|
|
"iwooos_projection.kali_maintenance_readiness_items.failed_unit_name",
|
|
iwooos_kali_maintenance_readiness[3]["failed_unit_name"],
|
|
"networking.service",
|
|
)
|
|
assert_equal(
|
|
"iwooos_projection.kali_maintenance_readiness_items.hardening_enabled_count",
|
|
iwooos_kali_maintenance_readiness[4]["enabled_count"],
|
|
0,
|
|
)
|
|
assert_equal(
|
|
"iwooos_projection.kali_maintenance_readiness_items.hardening_expected_count",
|
|
iwooos_kali_maintenance_readiness[4]["expected_count"],
|
|
4,
|
|
)
|
|
assert_equal(
|
|
"iwooos_projection.kali_maintenance_readiness_items.hardening_missing_controls",
|
|
iwooos_kali_maintenance_readiness[4]["missing_controls"],
|
|
["NoNewPrivileges", "PrivateTmp", "ProtectSystem", "ProtectHome"],
|
|
)
|
|
assert_equal(
|
|
"iwooos_projection.kali_maintenance_readiness_items.reboot_gate_queue_item",
|
|
iwooos_kali_maintenance_readiness[5]["source_queue_item_id"],
|
|
"kali-full-upgrade-reboot-approval-20260513",
|
|
)
|
|
for item in iwooos_kali_maintenance_readiness:
|
|
assert_equal(
|
|
f"iwooos_projection.kali_maintenance_readiness_items.{item['item_id']}.display_mode",
|
|
item["display_mode"],
|
|
"maintenance_readiness_only",
|
|
)
|
|
assert_false(
|
|
f"iwooos_projection.kali_maintenance_readiness_items.{item['item_id']}.runtime_execution_authorized",
|
|
item["runtime_execution_authorized"],
|
|
)
|
|
if "full_upgrade_authorized" in item:
|
|
assert_false(
|
|
f"iwooos_projection.kali_maintenance_readiness_items.{item['item_id']}.full_upgrade_authorized",
|
|
item["full_upgrade_authorized"],
|
|
)
|
|
if "reboot_authorized" in item:
|
|
assert_false(
|
|
f"iwooos_projection.kali_maintenance_readiness_items.{item['item_id']}.reboot_authorized",
|
|
item["reboot_authorized"],
|
|
)
|
|
if "package_update_executed" in item:
|
|
assert_false(
|
|
f"iwooos_projection.kali_maintenance_readiness_items.{item['item_id']}.package_update_executed",
|
|
item["package_update_executed"],
|
|
)
|
|
if "host_reboot_executed" in item:
|
|
assert_false(
|
|
f"iwooos_projection.kali_maintenance_readiness_items.{item['item_id']}.host_reboot_executed",
|
|
item["host_reboot_executed"],
|
|
)
|
|
if "active_scan_executed" in item:
|
|
assert_false(
|
|
f"iwooos_projection.kali_maintenance_readiness_items.{item['item_id']}.active_scan_executed",
|
|
item["active_scan_executed"],
|
|
)
|
|
if "action_buttons_allowed" in item:
|
|
assert_false(
|
|
f"iwooos_projection.kali_maintenance_readiness_items.{item['item_id']}.action_buttons_allowed",
|
|
item["action_buttons_allowed"],
|
|
)
|
|
assert_true(
|
|
f"iwooos_projection.kali_maintenance_readiness_items.{item['item_id']}.not_authorization",
|
|
item["not_authorization"],
|
|
)
|
|
iwooos_host_action_gates = iwooos_projection["host_action_gate_items"]
|
|
assert_equal(
|
|
"iwooos_projection.host_action_gate_items.ids",
|
|
[item["action_id"] for item in iwooos_host_action_gates],
|
|
expected_iwooos_host_action_gate_item_ids,
|
|
)
|
|
assert_equal(
|
|
"iwooos_projection.host_action_gate_items.display_order",
|
|
[item["display_order"] for item in iwooos_host_action_gates],
|
|
list(range(1, len(expected_iwooos_host_action_gate_item_ids) + 1)),
|
|
)
|
|
for item in iwooos_host_action_gates:
|
|
assert_equal(
|
|
f"iwooos_projection.host_action_gate_items.{item['action_id']}.display_mode",
|
|
item["display_mode"],
|
|
"gate_only",
|
|
)
|
|
assert_false(
|
|
f"iwooos_projection.host_action_gate_items.{item['action_id']}.active_scan_authorized",
|
|
item["active_scan_authorized"],
|
|
)
|
|
assert_false(
|
|
f"iwooos_projection.host_action_gate_items.{item['action_id']}.credentialed_scan_authorized",
|
|
item["credentialed_scan_authorized"],
|
|
)
|
|
assert_false(
|
|
f"iwooos_projection.host_action_gate_items.{item['action_id']}.ssh_change_authorized",
|
|
item["ssh_change_authorized"],
|
|
)
|
|
assert_false(
|
|
f"iwooos_projection.host_action_gate_items.{item['action_id']}.host_update_authorized",
|
|
item["host_update_authorized"],
|
|
)
|
|
assert_false(
|
|
f"iwooos_projection.host_action_gate_items.{item['action_id']}.runtime_execution_authorized",
|
|
item["runtime_execution_authorized"],
|
|
)
|
|
assert_false(
|
|
f"iwooos_projection.host_action_gate_items.{item['action_id']}.action_buttons_allowed",
|
|
item["action_buttons_allowed"],
|
|
)
|
|
assert_true(
|
|
f"iwooos_projection.host_action_gate_items.{item['action_id']}.not_authorization",
|
|
item["not_authorization"],
|
|
)
|
|
iwooos_host_evidence_readiness = iwooos_projection["host_evidence_readiness_items"]
|
|
assert_equal(
|
|
"iwooos_projection.host_evidence_readiness_items.ids",
|
|
[item["item_id"] for item in iwooos_host_evidence_readiness],
|
|
expected_iwooos_host_evidence_readiness_item_ids,
|
|
)
|
|
assert_equal(
|
|
"iwooos_projection.host_evidence_readiness_items.display_order",
|
|
[item["display_order"] for item in iwooos_host_evidence_readiness],
|
|
list(range(1, len(expected_iwooos_host_evidence_readiness_item_ids) + 1)),
|
|
)
|
|
for item in iwooos_host_evidence_readiness:
|
|
assert_equal(
|
|
f"iwooos_projection.host_evidence_readiness_items.{item['item_id']}.display_mode",
|
|
item["display_mode"],
|
|
"evidence_readiness_only",
|
|
)
|
|
assert_equal(
|
|
f"iwooos_projection.host_evidence_readiness_items.{item['item_id']}.received_count",
|
|
item["received_count"],
|
|
0,
|
|
)
|
|
assert_equal(
|
|
f"iwooos_projection.host_evidence_readiness_items.{item['item_id']}.accepted_count",
|
|
item["accepted_count"],
|
|
0,
|
|
)
|
|
assert_false(
|
|
f"iwooos_projection.host_evidence_readiness_items.{item['item_id']}.active_scan_authorized",
|
|
item["active_scan_authorized"],
|
|
)
|
|
assert_false(
|
|
f"iwooos_projection.host_evidence_readiness_items.{item['item_id']}.credentialed_scan_authorized",
|
|
item["credentialed_scan_authorized"],
|
|
)
|
|
assert_false(
|
|
f"iwooos_projection.host_evidence_readiness_items.{item['item_id']}.ssh_change_authorized",
|
|
item["ssh_change_authorized"],
|
|
)
|
|
assert_false(
|
|
f"iwooos_projection.host_evidence_readiness_items.{item['item_id']}.host_update_authorized",
|
|
item["host_update_authorized"],
|
|
)
|
|
assert_false(
|
|
f"iwooos_projection.host_evidence_readiness_items.{item['item_id']}.runtime_execution_authorized",
|
|
item["runtime_execution_authorized"],
|
|
)
|
|
assert_false(
|
|
f"iwooos_projection.host_evidence_readiness_items.{item['item_id']}.action_buttons_allowed",
|
|
item["action_buttons_allowed"],
|
|
)
|
|
assert_true(
|
|
f"iwooos_projection.host_evidence_readiness_items.{item['item_id']}.not_authorization",
|
|
item["not_authorization"],
|
|
)
|
|
iwooos_host_evidence_collection_order = iwooos_projection["host_evidence_collection_order"]
|
|
assert_equal(
|
|
"iwooos_projection.host_evidence_collection_order.ids",
|
|
[item["step_id"] for item in iwooos_host_evidence_collection_order],
|
|
expected_iwooos_host_evidence_collection_step_ids,
|
|
)
|
|
assert_equal(
|
|
"iwooos_projection.host_evidence_collection_order.display_order",
|
|
[item["display_order"] for item in iwooos_host_evidence_collection_order],
|
|
list(range(1, len(expected_iwooos_host_evidence_collection_step_ids) + 1)),
|
|
)
|
|
expected_iwooos_host_evidence_collection_source_ids = [
|
|
"host_scope_boundary_evidence",
|
|
"host_owner_decision_record_evidence",
|
|
"host_credential_handling_evidence",
|
|
"host_maintenance_window_evidence",
|
|
"host_rollback_plan_evidence",
|
|
"host_validation_metrics_evidence",
|
|
"host_redacted_ingestion_evidence",
|
|
]
|
|
assert_equal(
|
|
"iwooos_projection.host_evidence_collection_order.source_item_ids",
|
|
[item["source_item_id"] for item in iwooos_host_evidence_collection_order],
|
|
expected_iwooos_host_evidence_collection_source_ids,
|
|
)
|
|
expected_iwooos_host_evidence_collection_dependencies = [
|
|
[],
|
|
["collect_scope_boundary_first"],
|
|
["collect_owner_decision_second"],
|
|
["collect_owner_decision_second"],
|
|
["collect_maintenance_window_fourth"],
|
|
["collect_rollback_plan_fifth"],
|
|
["collect_validation_metrics_sixth"],
|
|
]
|
|
assert_equal(
|
|
"iwooos_projection.host_evidence_collection_order.depends_on_step_ids",
|
|
[item["depends_on_step_ids"] for item in iwooos_host_evidence_collection_order],
|
|
expected_iwooos_host_evidence_collection_dependencies,
|
|
)
|
|
for item in iwooos_host_evidence_collection_order:
|
|
assert_equal(
|
|
f"iwooos_projection.host_evidence_collection_order.{item['step_id']}.display_mode",
|
|
item["display_mode"],
|
|
"collection_order_only",
|
|
)
|
|
assert_equal(
|
|
f"iwooos_projection.host_evidence_collection_order.{item['step_id']}.received_count",
|
|
item["received_count"],
|
|
0,
|
|
)
|
|
assert_equal(
|
|
f"iwooos_projection.host_evidence_collection_order.{item['step_id']}.accepted_count",
|
|
item["accepted_count"],
|
|
0,
|
|
)
|
|
assert_false(
|
|
f"iwooos_projection.host_evidence_collection_order.{item['step_id']}.runtime_execution_authorized",
|
|
item["runtime_execution_authorized"],
|
|
)
|
|
assert_false(
|
|
f"iwooos_projection.host_evidence_collection_order.{item['step_id']}.action_buttons_allowed",
|
|
item["action_buttons_allowed"],
|
|
)
|
|
assert_true(
|
|
f"iwooos_projection.host_evidence_collection_order.{item['step_id']}.not_authorization",
|
|
item["not_authorization"],
|
|
)
|
|
iwooos_host_evidence_intake_preflight = iwooos_projection["host_evidence_intake_preflight_checks"]
|
|
assert_equal(
|
|
"iwooos_projection.host_evidence_intake_preflight_checks.ids",
|
|
[item["check_id"] for item in iwooos_host_evidence_intake_preflight],
|
|
expected_iwooos_host_evidence_intake_preflight_check_ids,
|
|
)
|
|
assert_equal(
|
|
"iwooos_projection.host_evidence_intake_preflight_checks.display_order",
|
|
[item["display_order"] for item in iwooos_host_evidence_intake_preflight],
|
|
list(range(1, len(expected_iwooos_host_evidence_intake_preflight_check_ids) + 1)),
|
|
)
|
|
expected_iwooos_host_evidence_intake_preflight_rejection_lanes = [
|
|
"reject_missing_redacted_metadata_pointer",
|
|
"quarantine_dependency_skip",
|
|
"reject_scan_without_scope",
|
|
"reject_change_without_owner_decision",
|
|
"reject_plaintext_credential_or_secret_value",
|
|
"reject_raw_payload_ingestion",
|
|
"reject_frontend_counter_transition",
|
|
]
|
|
assert_equal(
|
|
"iwooos_projection.host_evidence_intake_preflight_checks.rejection_lanes",
|
|
[item["rejection_lane"] for item in iwooos_host_evidence_intake_preflight],
|
|
expected_iwooos_host_evidence_intake_preflight_rejection_lanes,
|
|
)
|
|
for item in iwooos_host_evidence_intake_preflight:
|
|
assert_equal(
|
|
f"iwooos_projection.host_evidence_intake_preflight_checks.{item['check_id']}.display_mode",
|
|
item["display_mode"],
|
|
"intake_preflight_only",
|
|
)
|
|
assert_equal(
|
|
f"iwooos_projection.host_evidence_intake_preflight_checks.{item['check_id']}.received_count",
|
|
item["received_count"],
|
|
0,
|
|
)
|
|
assert_equal(
|
|
f"iwooos_projection.host_evidence_intake_preflight_checks.{item['check_id']}.accepted_count",
|
|
item["accepted_count"],
|
|
0,
|
|
)
|
|
assert_false(
|
|
f"iwooos_projection.host_evidence_intake_preflight_checks.{item['check_id']}.raw_payload_allowed",
|
|
item["raw_payload_allowed"],
|
|
)
|
|
assert_false(
|
|
f"iwooos_projection.host_evidence_intake_preflight_checks.{item['check_id']}.secret_value_collection_allowed",
|
|
item["secret_value_collection_allowed"],
|
|
)
|
|
assert_false(
|
|
f"iwooos_projection.host_evidence_intake_preflight_checks.{item['check_id']}.runtime_execution_authorized",
|
|
item["runtime_execution_authorized"],
|
|
)
|
|
assert_false(
|
|
f"iwooos_projection.host_evidence_intake_preflight_checks.{item['check_id']}.action_buttons_allowed",
|
|
item["action_buttons_allowed"],
|
|
)
|
|
assert_true(
|
|
f"iwooos_projection.host_evidence_intake_preflight_checks.{item['check_id']}.not_authorization",
|
|
item["not_authorization"],
|
|
)
|
|
iwooos_host_evidence_review_outcome_lanes = iwooos_projection["host_evidence_review_outcome_lanes"]
|
|
assert_equal(
|
|
"iwooos_projection.host_evidence_review_outcome_lanes.ids",
|
|
[item["lane_id"] for item in iwooos_host_evidence_review_outcome_lanes],
|
|
expected_iwooos_host_evidence_review_outcome_lane_ids,
|
|
)
|
|
assert_equal(
|
|
"iwooos_projection.host_evidence_review_outcome_lanes.display_order",
|
|
[item["display_order"] for item in iwooos_host_evidence_review_outcome_lanes],
|
|
list(range(1, len(expected_iwooos_host_evidence_review_outcome_lane_ids) + 1)),
|
|
)
|
|
expected_iwooos_host_evidence_review_outcome_states = [
|
|
"candidate_only_not_received",
|
|
"needs_scope_evidence",
|
|
"needs_owner_decision_pointer",
|
|
"quarantine_dependency_skip",
|
|
"rejected_raw_payload",
|
|
"rejected_plaintext_credential",
|
|
"waiting_followup_runtime_gate",
|
|
]
|
|
assert_equal(
|
|
"iwooos_projection.host_evidence_review_outcome_lanes.outcome_states",
|
|
[item["outcome_state"] for item in iwooos_host_evidence_review_outcome_lanes],
|
|
expected_iwooos_host_evidence_review_outcome_states,
|
|
)
|
|
for item in iwooos_host_evidence_review_outcome_lanes:
|
|
assert_equal(
|
|
f"iwooos_projection.host_evidence_review_outcome_lanes.{item['lane_id']}.display_mode",
|
|
item["display_mode"],
|
|
"review_outcome_only",
|
|
)
|
|
assert_equal(
|
|
f"iwooos_projection.host_evidence_review_outcome_lanes.{item['lane_id']}.received_count",
|
|
item["received_count"],
|
|
0,
|
|
)
|
|
assert_equal(
|
|
f"iwooos_projection.host_evidence_review_outcome_lanes.{item['lane_id']}.accepted_count",
|
|
item["accepted_count"],
|
|
0,
|
|
)
|
|
assert_false(
|
|
f"iwooos_projection.host_evidence_review_outcome_lanes.{item['lane_id']}.approval_record_created",
|
|
item["approval_record_created"],
|
|
)
|
|
assert_false(
|
|
f"iwooos_projection.host_evidence_review_outcome_lanes.{item['lane_id']}.runtime_execution_authorized",
|
|
item["runtime_execution_authorized"],
|
|
)
|
|
assert_false(
|
|
f"iwooos_projection.host_evidence_review_outcome_lanes.{item['lane_id']}.action_buttons_allowed",
|
|
item["action_buttons_allowed"],
|
|
)
|
|
assert_true(
|
|
f"iwooos_projection.host_evidence_review_outcome_lanes.{item['lane_id']}.not_authorization",
|
|
item["not_authorization"],
|
|
)
|
|
iwooos_host_evidence_review_handoff_packets = iwooos_projection["host_evidence_review_handoff_packets"]
|
|
assert_equal(
|
|
"iwooos_projection.host_evidence_review_handoff_packets.ids",
|
|
[item["packet_id"] for item in iwooos_host_evidence_review_handoff_packets],
|
|
expected_iwooos_host_evidence_review_handoff_packet_ids,
|
|
)
|
|
assert_equal(
|
|
"iwooos_projection.host_evidence_review_handoff_packets.display_order",
|
|
[item["display_order"] for item in iwooos_host_evidence_review_handoff_packets],
|
|
list(range(1, len(expected_iwooos_host_evidence_review_handoff_packet_ids) + 1)),
|
|
)
|
|
expected_iwooos_host_evidence_review_handoff_requirements = [
|
|
"redacted_scope_boundary_summary",
|
|
"owner_decision_record_pointer",
|
|
"credential_handling_metadata_only_statement",
|
|
"maintenance_window_and_rollback_pointer",
|
|
"post_review_validation_metrics_pointer",
|
|
"redaction_attestation_metadata_only",
|
|
"followup_runtime_gate_pointer_only",
|
|
]
|
|
assert_equal(
|
|
"iwooos_projection.host_evidence_review_handoff_packets.packet_requirements",
|
|
[item["packet_requirement"] for item in iwooos_host_evidence_review_handoff_packets],
|
|
expected_iwooos_host_evidence_review_handoff_requirements,
|
|
)
|
|
for item in iwooos_host_evidence_review_handoff_packets:
|
|
assert_equal(
|
|
f"iwooos_projection.host_evidence_review_handoff_packets.{item['packet_id']}.display_mode",
|
|
item["display_mode"],
|
|
"review_handoff_only",
|
|
)
|
|
assert_equal(
|
|
f"iwooos_projection.host_evidence_review_handoff_packets.{item['packet_id']}.received_count",
|
|
item["received_count"],
|
|
0,
|
|
)
|
|
assert_equal(
|
|
f"iwooos_projection.host_evidence_review_handoff_packets.{item['packet_id']}.accepted_count",
|
|
item["accepted_count"],
|
|
0,
|
|
)
|
|
assert_false(
|
|
f"iwooos_projection.host_evidence_review_handoff_packets.{item['packet_id']}.approval_record_created",
|
|
item["approval_record_created"],
|
|
)
|
|
assert_false(
|
|
f"iwooos_projection.host_evidence_review_handoff_packets.{item['packet_id']}.raw_payload_allowed",
|
|
item["raw_payload_allowed"],
|
|
)
|
|
assert_false(
|
|
f"iwooos_projection.host_evidence_review_handoff_packets.{item['packet_id']}.secret_value_collection_allowed",
|
|
item["secret_value_collection_allowed"],
|
|
)
|
|
assert_false(
|
|
f"iwooos_projection.host_evidence_review_handoff_packets.{item['packet_id']}.runtime_execution_authorized",
|
|
item["runtime_execution_authorized"],
|
|
)
|
|
assert_false(
|
|
f"iwooos_projection.host_evidence_review_handoff_packets.{item['packet_id']}.action_buttons_allowed",
|
|
item["action_buttons_allowed"],
|
|
)
|
|
assert_true(
|
|
f"iwooos_projection.host_evidence_review_handoff_packets.{item['packet_id']}.not_authorization",
|
|
item["not_authorization"],
|
|
)
|
|
iwooos_host_evidence_reviewer_checklist = iwooos_projection["host_evidence_reviewer_checklist_items"]
|
|
assert_equal(
|
|
"iwooos_projection.host_evidence_reviewer_checklist_items.ids",
|
|
[item["check_id"] for item in iwooos_host_evidence_reviewer_checklist],
|
|
expected_iwooos_host_evidence_reviewer_checklist_item_ids,
|
|
)
|
|
assert_equal(
|
|
"iwooos_projection.host_evidence_reviewer_checklist_items.display_order",
|
|
[item["display_order"] for item in iwooos_host_evidence_reviewer_checklist],
|
|
list(range(1, len(expected_iwooos_host_evidence_reviewer_checklist_item_ids) + 1)),
|
|
)
|
|
expected_iwooos_host_evidence_reviewer_checklist_pass_conditions = [
|
|
"redacted_scope_pointer_only_no_scan_started",
|
|
"decision_pointer_only_no_approval_record_created",
|
|
"secret_value_collection_false",
|
|
"raw_payload_allowed_false",
|
|
"future_change_conditions_only_no_change_execution",
|
|
"validation_pointer_only_runtime_gate_closed",
|
|
"active_runtime_gates_zero_action_buttons_false",
|
|
]
|
|
assert_equal(
|
|
"iwooos_projection.host_evidence_reviewer_checklist_items.pass_conditions",
|
|
[item["pass_condition"] for item in iwooos_host_evidence_reviewer_checklist],
|
|
expected_iwooos_host_evidence_reviewer_checklist_pass_conditions,
|
|
)
|
|
for item in iwooos_host_evidence_reviewer_checklist:
|
|
assert_equal(
|
|
f"iwooos_projection.host_evidence_reviewer_checklist_items.{item['check_id']}.display_mode",
|
|
item["display_mode"],
|
|
"reviewer_checklist_only",
|
|
)
|
|
assert_equal(
|
|
f"iwooos_projection.host_evidence_reviewer_checklist_items.{item['check_id']}.received_count",
|
|
item["received_count"],
|
|
0,
|
|
)
|
|
assert_equal(
|
|
f"iwooos_projection.host_evidence_reviewer_checklist_items.{item['check_id']}.accepted_count",
|
|
item["accepted_count"],
|
|
0,
|
|
)
|
|
assert_false(
|
|
f"iwooos_projection.host_evidence_reviewer_checklist_items.{item['check_id']}.approval_record_created",
|
|
item["approval_record_created"],
|
|
)
|
|
assert_false(
|
|
f"iwooos_projection.host_evidence_reviewer_checklist_items.{item['check_id']}.runtime_gate_opened",
|
|
item["runtime_gate_opened"],
|
|
)
|
|
assert_false(
|
|
f"iwooos_projection.host_evidence_reviewer_checklist_items.{item['check_id']}.raw_payload_allowed",
|
|
item["raw_payload_allowed"],
|
|
)
|
|
assert_false(
|
|
f"iwooos_projection.host_evidence_reviewer_checklist_items.{item['check_id']}.secret_value_collection_allowed",
|
|
item["secret_value_collection_allowed"],
|
|
)
|
|
assert_false(
|
|
f"iwooos_projection.host_evidence_reviewer_checklist_items.{item['check_id']}.runtime_execution_authorized",
|
|
item["runtime_execution_authorized"],
|
|
)
|
|
assert_false(
|
|
f"iwooos_projection.host_evidence_reviewer_checklist_items.{item['check_id']}.action_buttons_allowed",
|
|
item["action_buttons_allowed"],
|
|
)
|
|
assert_true(
|
|
f"iwooos_projection.host_evidence_reviewer_checklist_items.{item['check_id']}.not_authorization",
|
|
item["not_authorization"],
|
|
)
|
|
iwooos_host_evidence_reviewer_outcome_lanes = iwooos_projection["host_evidence_reviewer_outcome_lanes"]
|
|
assert_equal(
|
|
"iwooos_projection.host_evidence_reviewer_outcome_lanes.ids",
|
|
[item["lane_id"] for item in iwooos_host_evidence_reviewer_outcome_lanes],
|
|
expected_iwooos_host_evidence_reviewer_outcome_lane_ids,
|
|
)
|
|
assert_equal(
|
|
"iwooos_projection.host_evidence_reviewer_outcome_lanes.display_order",
|
|
[item["display_order"] for item in iwooos_host_evidence_reviewer_outcome_lanes],
|
|
list(range(1, len(expected_iwooos_host_evidence_reviewer_outcome_lane_ids) + 1)),
|
|
)
|
|
expected_iwooos_host_evidence_reviewer_outcome_states = [
|
|
"candidate_only_not_accepted",
|
|
"needs_scope_rework",
|
|
"needs_owner_decision_refresh",
|
|
"quarantine_credential_metadata_gap",
|
|
"rejected_redaction_failed",
|
|
"needs_rollback_evidence",
|
|
"waiting_separate_runtime_gate",
|
|
]
|
|
assert_equal(
|
|
"iwooos_projection.host_evidence_reviewer_outcome_lanes.outcome_states",
|
|
[item["outcome_state"] for item in iwooos_host_evidence_reviewer_outcome_lanes],
|
|
expected_iwooos_host_evidence_reviewer_outcome_states,
|
|
)
|
|
for item in iwooos_host_evidence_reviewer_outcome_lanes:
|
|
assert_equal(
|
|
f"iwooos_projection.host_evidence_reviewer_outcome_lanes.{item['lane_id']}.display_mode",
|
|
item["display_mode"],
|
|
"reviewer_outcome_only",
|
|
)
|
|
assert_equal(
|
|
f"iwooos_projection.host_evidence_reviewer_outcome_lanes.{item['lane_id']}.checklist_passed_count",
|
|
item["checklist_passed_count"],
|
|
0,
|
|
)
|
|
assert_equal(
|
|
f"iwooos_projection.host_evidence_reviewer_outcome_lanes.{item['lane_id']}.received_count",
|
|
item["received_count"],
|
|
0,
|
|
)
|
|
assert_equal(
|
|
f"iwooos_projection.host_evidence_reviewer_outcome_lanes.{item['lane_id']}.accepted_count",
|
|
item["accepted_count"],
|
|
0,
|
|
)
|
|
assert_false(
|
|
f"iwooos_projection.host_evidence_reviewer_outcome_lanes.{item['lane_id']}.approval_record_created",
|
|
item["approval_record_created"],
|
|
)
|
|
assert_false(
|
|
f"iwooos_projection.host_evidence_reviewer_outcome_lanes.{item['lane_id']}.runtime_gate_opened",
|
|
item["runtime_gate_opened"],
|
|
)
|
|
assert_false(
|
|
f"iwooos_projection.host_evidence_reviewer_outcome_lanes.{item['lane_id']}.raw_payload_allowed",
|
|
item["raw_payload_allowed"],
|
|
)
|
|
assert_false(
|
|
f"iwooos_projection.host_evidence_reviewer_outcome_lanes.{item['lane_id']}.secret_value_collection_allowed",
|
|
item["secret_value_collection_allowed"],
|
|
)
|
|
assert_false(
|
|
f"iwooos_projection.host_evidence_reviewer_outcome_lanes.{item['lane_id']}.runtime_execution_authorized",
|
|
item["runtime_execution_authorized"],
|
|
)
|
|
assert_false(
|
|
f"iwooos_projection.host_evidence_reviewer_outcome_lanes.{item['lane_id']}.action_buttons_allowed",
|
|
item["action_buttons_allowed"],
|
|
)
|
|
assert_true(
|
|
f"iwooos_projection.host_evidence_reviewer_outcome_lanes.{item['lane_id']}.not_authorization",
|
|
item["not_authorization"],
|
|
)
|
|
iwooos_host_owner_decision_candidate_packets = iwooos_projection["host_owner_decision_candidate_packets"]
|
|
assert_equal(
|
|
"iwooos_projection.host_owner_decision_candidate_packets.ids",
|
|
[item["packet_id"] for item in iwooos_host_owner_decision_candidate_packets],
|
|
expected_iwooos_host_owner_decision_candidate_packet_ids,
|
|
)
|
|
assert_equal(
|
|
"iwooos_projection.host_owner_decision_candidate_packets.display_order",
|
|
[item["display_order"] for item in iwooos_host_owner_decision_candidate_packets],
|
|
list(range(1, len(expected_iwooos_host_owner_decision_candidate_packet_ids) + 1)),
|
|
)
|
|
expected_iwooos_host_owner_decision_scopes = [
|
|
"scope_boundary_hosts_networks_services_exclusions",
|
|
"observe_only_future_active_or_credentialed_scan_mode",
|
|
"metadata_only_credential_handling_boundary",
|
|
"future_maintenance_window_constraints",
|
|
"rollback_owner_and_recovery_path",
|
|
"post_check_metrics_and_baseline_pointer",
|
|
"separate_runtime_gate_requirement",
|
|
]
|
|
assert_equal(
|
|
"iwooos_projection.host_owner_decision_candidate_packets.decision_scopes",
|
|
[item["decision_scope"] for item in iwooos_host_owner_decision_candidate_packets],
|
|
expected_iwooos_host_owner_decision_scopes,
|
|
)
|
|
for item in iwooos_host_owner_decision_candidate_packets:
|
|
assert_equal(
|
|
f"iwooos_projection.host_owner_decision_candidate_packets.{item['packet_id']}.display_mode",
|
|
item["display_mode"],
|
|
"owner_decision_candidate_only",
|
|
)
|
|
assert_equal(
|
|
f"iwooos_projection.host_owner_decision_candidate_packets.{item['packet_id']}.owner_decision_received_count",
|
|
item["owner_decision_received_count"],
|
|
0,
|
|
)
|
|
assert_equal(
|
|
f"iwooos_projection.host_owner_decision_candidate_packets.{item['packet_id']}.owner_decision_accepted_count",
|
|
item["owner_decision_accepted_count"],
|
|
0,
|
|
)
|
|
assert_false(
|
|
f"iwooos_projection.host_owner_decision_candidate_packets.{item['packet_id']}.owner_approval_record_created",
|
|
item["owner_approval_record_created"],
|
|
)
|
|
assert_false(
|
|
f"iwooos_projection.host_owner_decision_candidate_packets.{item['packet_id']}.runtime_gate_opened",
|
|
item["runtime_gate_opened"],
|
|
)
|
|
assert_false(
|
|
f"iwooos_projection.host_owner_decision_candidate_packets.{item['packet_id']}.raw_payload_allowed",
|
|
item["raw_payload_allowed"],
|
|
)
|
|
assert_false(
|
|
f"iwooos_projection.host_owner_decision_candidate_packets.{item['packet_id']}.secret_value_collection_allowed",
|
|
item["secret_value_collection_allowed"],
|
|
)
|
|
assert_false(
|
|
f"iwooos_projection.host_owner_decision_candidate_packets.{item['packet_id']}.runtime_execution_authorized",
|
|
item["runtime_execution_authorized"],
|
|
)
|
|
assert_false(
|
|
f"iwooos_projection.host_owner_decision_candidate_packets.{item['packet_id']}.action_buttons_allowed",
|
|
item["action_buttons_allowed"],
|
|
)
|
|
assert_true(
|
|
f"iwooos_projection.host_owner_decision_candidate_packets.{item['packet_id']}.not_authorization",
|
|
item["not_authorization"],
|
|
)
|
|
iwooos_host_owner_decision_review_checklist = iwooos_projection["host_owner_decision_review_checklist_items"]
|
|
assert_equal(
|
|
"iwooos_projection.host_owner_decision_review_checklist_items.ids",
|
|
[item["check_id"] for item in iwooos_host_owner_decision_review_checklist],
|
|
expected_iwooos_host_owner_decision_review_checklist_item_ids,
|
|
)
|
|
assert_equal(
|
|
"iwooos_projection.host_owner_decision_review_checklist_items.display_order",
|
|
[item["display_order"] for item in iwooos_host_owner_decision_review_checklist],
|
|
list(range(1, len(expected_iwooos_host_owner_decision_review_checklist_item_ids) + 1)),
|
|
)
|
|
expected_iwooos_host_owner_decision_review_guard_conditions = [
|
|
"scope_review_only_owner_decision_received_zero",
|
|
"active_scan_and_credentialed_scan_authorized_false",
|
|
"secret_value_collection_allowed_false",
|
|
"host_update_authorized_false",
|
|
"owner_approval_record_created_false",
|
|
"runtime_gate_opened_false",
|
|
"action_buttons_allowed_false_runtime_gate_separate",
|
|
]
|
|
assert_equal(
|
|
"iwooos_projection.host_owner_decision_review_checklist_items.guard_conditions",
|
|
[item["guard_condition"] for item in iwooos_host_owner_decision_review_checklist],
|
|
expected_iwooos_host_owner_decision_review_guard_conditions,
|
|
)
|
|
for item in iwooos_host_owner_decision_review_checklist:
|
|
assert_equal(
|
|
f"iwooos_projection.host_owner_decision_review_checklist_items.{item['check_id']}.display_mode",
|
|
item["display_mode"],
|
|
"owner_decision_review_checklist_only",
|
|
)
|
|
assert_equal(
|
|
f"iwooos_projection.host_owner_decision_review_checklist_items.{item['check_id']}.owner_decision_received_count",
|
|
item["owner_decision_received_count"],
|
|
0,
|
|
)
|
|
assert_equal(
|
|
f"iwooos_projection.host_owner_decision_review_checklist_items.{item['check_id']}.owner_decision_accepted_count",
|
|
item["owner_decision_accepted_count"],
|
|
0,
|
|
)
|
|
assert_false(
|
|
f"iwooos_projection.host_owner_decision_review_checklist_items.{item['check_id']}.owner_approval_record_created",
|
|
item["owner_approval_record_created"],
|
|
)
|
|
assert_false(
|
|
f"iwooos_projection.host_owner_decision_review_checklist_items.{item['check_id']}.runtime_gate_opened",
|
|
item["runtime_gate_opened"],
|
|
)
|
|
assert_false(
|
|
f"iwooos_projection.host_owner_decision_review_checklist_items.{item['check_id']}.raw_payload_allowed",
|
|
item["raw_payload_allowed"],
|
|
)
|
|
assert_false(
|
|
f"iwooos_projection.host_owner_decision_review_checklist_items.{item['check_id']}.secret_value_collection_allowed",
|
|
item["secret_value_collection_allowed"],
|
|
)
|
|
assert_false(
|
|
f"iwooos_projection.host_owner_decision_review_checklist_items.{item['check_id']}.runtime_execution_authorized",
|
|
item["runtime_execution_authorized"],
|
|
)
|
|
assert_false(
|
|
f"iwooos_projection.host_owner_decision_review_checklist_items.{item['check_id']}.action_buttons_allowed",
|
|
item["action_buttons_allowed"],
|
|
)
|
|
assert_true(
|
|
f"iwooos_projection.host_owner_decision_review_checklist_items.{item['check_id']}.not_authorization",
|
|
item["not_authorization"],
|
|
)
|
|
iwooos_host_owner_decision_review_outcome_lanes = iwooos_projection["host_owner_decision_review_outcome_lanes"]
|
|
assert_equal(
|
|
"iwooos_projection.host_owner_decision_review_outcome_lanes.ids",
|
|
[item["lane_id"] for item in iwooos_host_owner_decision_review_outcome_lanes],
|
|
expected_iwooos_host_owner_decision_review_outcome_lane_ids,
|
|
)
|
|
assert_equal(
|
|
"iwooos_projection.host_owner_decision_review_outcome_lanes.display_order",
|
|
[item["display_order"] for item in iwooos_host_owner_decision_review_outcome_lanes],
|
|
list(range(1, len(expected_iwooos_host_owner_decision_review_outcome_lane_ids) + 1)),
|
|
)
|
|
expected_iwooos_host_owner_decision_review_outcome_states = [
|
|
"candidate_decision_record_only",
|
|
"needs_scope_refresh",
|
|
"needs_scan_mode_scope_review",
|
|
"quarantine_credential_boundary_gap",
|
|
"needs_maintenance_window",
|
|
"needs_rollback_owner",
|
|
"waiting_separate_runtime_gate",
|
|
]
|
|
assert_equal(
|
|
"iwooos_projection.host_owner_decision_review_outcome_lanes.outcome_states",
|
|
[item["outcome_state"] for item in iwooos_host_owner_decision_review_outcome_lanes],
|
|
expected_iwooos_host_owner_decision_review_outcome_states,
|
|
)
|
|
for item in iwooos_host_owner_decision_review_outcome_lanes:
|
|
assert_equal(
|
|
f"iwooos_projection.host_owner_decision_review_outcome_lanes.{item['lane_id']}.display_mode",
|
|
item["display_mode"],
|
|
"owner_decision_review_outcome_only",
|
|
)
|
|
assert_equal(
|
|
f"iwooos_projection.host_owner_decision_review_outcome_lanes.{item['lane_id']}.owner_decision_review_passed_count",
|
|
item["owner_decision_review_passed_count"],
|
|
0,
|
|
)
|
|
assert_equal(
|
|
f"iwooos_projection.host_owner_decision_review_outcome_lanes.{item['lane_id']}.owner_decision_received_count",
|
|
item["owner_decision_received_count"],
|
|
0,
|
|
)
|
|
assert_equal(
|
|
f"iwooos_projection.host_owner_decision_review_outcome_lanes.{item['lane_id']}.owner_decision_accepted_count",
|
|
item["owner_decision_accepted_count"],
|
|
0,
|
|
)
|
|
assert_false(
|
|
f"iwooos_projection.host_owner_decision_review_outcome_lanes.{item['lane_id']}.owner_approval_record_created",
|
|
item["owner_approval_record_created"],
|
|
)
|
|
assert_false(
|
|
f"iwooos_projection.host_owner_decision_review_outcome_lanes.{item['lane_id']}.runtime_gate_opened",
|
|
item["runtime_gate_opened"],
|
|
)
|
|
assert_false(
|
|
f"iwooos_projection.host_owner_decision_review_outcome_lanes.{item['lane_id']}.raw_payload_allowed",
|
|
item["raw_payload_allowed"],
|
|
)
|
|
assert_false(
|
|
f"iwooos_projection.host_owner_decision_review_outcome_lanes.{item['lane_id']}.secret_value_collection_allowed",
|
|
item["secret_value_collection_allowed"],
|
|
)
|
|
assert_false(
|
|
f"iwooos_projection.host_owner_decision_review_outcome_lanes.{item['lane_id']}.runtime_execution_authorized",
|
|
item["runtime_execution_authorized"],
|
|
)
|
|
assert_false(
|
|
f"iwooos_projection.host_owner_decision_review_outcome_lanes.{item['lane_id']}.action_buttons_allowed",
|
|
item["action_buttons_allowed"],
|
|
)
|
|
assert_true(
|
|
f"iwooos_projection.host_owner_decision_review_outcome_lanes.{item['lane_id']}.not_authorization",
|
|
item["not_authorization"],
|
|
)
|
|
iwooos_host_owner_decision_record_draft_packets = iwooos_projection[
|
|
"host_owner_decision_record_draft_packets"
|
|
]
|
|
assert_equal(
|
|
"iwooos_projection.host_owner_decision_record_draft_packets.ids",
|
|
[item["packet_id"] for item in iwooos_host_owner_decision_record_draft_packets],
|
|
expected_iwooos_host_owner_decision_record_draft_packet_ids,
|
|
)
|
|
assert_equal(
|
|
"iwooos_projection.host_owner_decision_record_draft_packets.display_order",
|
|
[item["display_order"] for item in iwooos_host_owner_decision_record_draft_packets],
|
|
list(range(1, len(expected_iwooos_host_owner_decision_record_draft_packet_ids) + 1)),
|
|
)
|
|
expected_iwooos_host_owner_decision_record_draft_fields = [
|
|
"scope_statement",
|
|
"scan_mode_statement",
|
|
"credential_boundary_statement",
|
|
"maintenance_constraints_statement",
|
|
"rollback_owner_statement",
|
|
"validation_metrics_statement",
|
|
"runtime_gate_pointer_statement",
|
|
]
|
|
assert_equal(
|
|
"iwooos_projection.host_owner_decision_record_draft_packets.draft_fields",
|
|
[item["draft_field"] for item in iwooos_host_owner_decision_record_draft_packets],
|
|
expected_iwooos_host_owner_decision_record_draft_fields,
|
|
)
|
|
for item in iwooos_host_owner_decision_record_draft_packets:
|
|
assert_equal(
|
|
f"iwooos_projection.host_owner_decision_record_draft_packets.{item['packet_id']}.display_mode",
|
|
item["display_mode"],
|
|
"owner_decision_record_draft_only",
|
|
)
|
|
assert_false(
|
|
f"iwooos_projection.host_owner_decision_record_draft_packets.{item['packet_id']}.decision_record_created",
|
|
item["decision_record_created"],
|
|
)
|
|
assert_equal(
|
|
f"iwooos_projection.host_owner_decision_record_draft_packets.{item['packet_id']}.owner_decision_received_count",
|
|
item["owner_decision_received_count"],
|
|
0,
|
|
)
|
|
assert_equal(
|
|
f"iwooos_projection.host_owner_decision_record_draft_packets.{item['packet_id']}.owner_decision_accepted_count",
|
|
item["owner_decision_accepted_count"],
|
|
0,
|
|
)
|
|
assert_false(
|
|
f"iwooos_projection.host_owner_decision_record_draft_packets.{item['packet_id']}.owner_approval_record_created",
|
|
item["owner_approval_record_created"],
|
|
)
|
|
assert_false(
|
|
f"iwooos_projection.host_owner_decision_record_draft_packets.{item['packet_id']}.runtime_gate_opened",
|
|
item["runtime_gate_opened"],
|
|
)
|
|
assert_false(
|
|
f"iwooos_projection.host_owner_decision_record_draft_packets.{item['packet_id']}.raw_payload_allowed",
|
|
item["raw_payload_allowed"],
|
|
)
|
|
assert_false(
|
|
f"iwooos_projection.host_owner_decision_record_draft_packets.{item['packet_id']}.secret_value_collection_allowed",
|
|
item["secret_value_collection_allowed"],
|
|
)
|
|
assert_false(
|
|
f"iwooos_projection.host_owner_decision_record_draft_packets.{item['packet_id']}.runtime_execution_authorized",
|
|
item["runtime_execution_authorized"],
|
|
)
|
|
assert_false(
|
|
f"iwooos_projection.host_owner_decision_record_draft_packets.{item['packet_id']}.action_buttons_allowed",
|
|
item["action_buttons_allowed"],
|
|
)
|
|
assert_true(
|
|
f"iwooos_projection.host_owner_decision_record_draft_packets.{item['packet_id']}.not_authorization",
|
|
item["not_authorization"],
|
|
)
|
|
iwooos_host_owner_decision_record_draft_review_checklist = iwooos_projection[
|
|
"host_owner_decision_record_draft_review_checklist_items"
|
|
]
|
|
assert_equal(
|
|
"iwooos_projection.host_owner_decision_record_draft_review_checklist_items.ids",
|
|
[item["check_id"] for item in iwooos_host_owner_decision_record_draft_review_checklist],
|
|
expected_iwooos_host_owner_decision_record_draft_review_checklist_item_ids,
|
|
)
|
|
assert_equal(
|
|
"iwooos_projection.host_owner_decision_record_draft_review_checklist_items.display_order",
|
|
[item["display_order"] for item in iwooos_host_owner_decision_record_draft_review_checklist],
|
|
list(range(1, len(expected_iwooos_host_owner_decision_record_draft_review_checklist_item_ids) + 1)),
|
|
)
|
|
expected_iwooos_host_owner_decision_record_draft_review_conditions = [
|
|
"scope_statement_metadata_complete",
|
|
"scan_mode_not_authorization_confirmed",
|
|
"credential_boundary_metadata_only_confirmed",
|
|
"maintenance_constraints_no_change_confirmed",
|
|
"rollback_owner_recovery_pointer_readable",
|
|
"validation_metrics_baseline_linked",
|
|
"runtime_gate_separate_and_closed",
|
|
]
|
|
assert_equal(
|
|
"iwooos_projection.host_owner_decision_record_draft_review_checklist_items.review_conditions",
|
|
[item["review_condition"] for item in iwooos_host_owner_decision_record_draft_review_checklist],
|
|
expected_iwooos_host_owner_decision_record_draft_review_conditions,
|
|
)
|
|
for item in iwooos_host_owner_decision_record_draft_review_checklist:
|
|
assert_equal(
|
|
f"iwooos_projection.host_owner_decision_record_draft_review_checklist_items.{item['check_id']}.display_mode",
|
|
item["display_mode"],
|
|
"owner_decision_record_draft_review_checklist_only",
|
|
)
|
|
assert_equal(
|
|
f"iwooos_projection.host_owner_decision_record_draft_review_checklist_items.{item['check_id']}.decision_record_review_passed_count",
|
|
item["decision_record_review_passed_count"],
|
|
0,
|
|
)
|
|
assert_false(
|
|
f"iwooos_projection.host_owner_decision_record_draft_review_checklist_items.{item['check_id']}.decision_record_created",
|
|
item["decision_record_created"],
|
|
)
|
|
assert_equal(
|
|
f"iwooos_projection.host_owner_decision_record_draft_review_checklist_items.{item['check_id']}.owner_decision_received_count",
|
|
item["owner_decision_received_count"],
|
|
0,
|
|
)
|
|
assert_equal(
|
|
f"iwooos_projection.host_owner_decision_record_draft_review_checklist_items.{item['check_id']}.owner_decision_accepted_count",
|
|
item["owner_decision_accepted_count"],
|
|
0,
|
|
)
|
|
assert_false(
|
|
f"iwooos_projection.host_owner_decision_record_draft_review_checklist_items.{item['check_id']}.owner_approval_record_created",
|
|
item["owner_approval_record_created"],
|
|
)
|
|
assert_false(
|
|
f"iwooos_projection.host_owner_decision_record_draft_review_checklist_items.{item['check_id']}.runtime_gate_opened",
|
|
item["runtime_gate_opened"],
|
|
)
|
|
assert_false(
|
|
f"iwooos_projection.host_owner_decision_record_draft_review_checklist_items.{item['check_id']}.raw_payload_allowed",
|
|
item["raw_payload_allowed"],
|
|
)
|
|
assert_false(
|
|
f"iwooos_projection.host_owner_decision_record_draft_review_checklist_items.{item['check_id']}.secret_value_collection_allowed",
|
|
item["secret_value_collection_allowed"],
|
|
)
|
|
assert_false(
|
|
f"iwooos_projection.host_owner_decision_record_draft_review_checklist_items.{item['check_id']}.runtime_execution_authorized",
|
|
item["runtime_execution_authorized"],
|
|
)
|
|
assert_false(
|
|
f"iwooos_projection.host_owner_decision_record_draft_review_checklist_items.{item['check_id']}.action_buttons_allowed",
|
|
item["action_buttons_allowed"],
|
|
)
|
|
assert_true(
|
|
f"iwooos_projection.host_owner_decision_record_draft_review_checklist_items.{item['check_id']}.not_authorization",
|
|
item["not_authorization"],
|
|
)
|
|
iwooos_host_owner_decision_record_draft_review_outcome_lanes = iwooos_projection[
|
|
"host_owner_decision_record_draft_review_outcome_lanes"
|
|
]
|
|
assert_equal(
|
|
"iwooos_projection.host_owner_decision_record_draft_review_outcome_lanes.ids",
|
|
[item["lane_id"] for item in iwooos_host_owner_decision_record_draft_review_outcome_lanes],
|
|
expected_iwooos_host_owner_decision_record_draft_review_outcome_lane_ids,
|
|
)
|
|
assert_equal(
|
|
"iwooos_projection.host_owner_decision_record_draft_review_outcome_lanes.display_order",
|
|
[item["display_order"] for item in iwooos_host_owner_decision_record_draft_review_outcome_lanes],
|
|
list(range(1, len(expected_iwooos_host_owner_decision_record_draft_review_outcome_lane_ids) + 1)),
|
|
)
|
|
expected_iwooos_host_owner_decision_record_draft_review_outcome_states = [
|
|
"candidate_decision_record_writeup_only",
|
|
"needs_scope_statement_refresh",
|
|
"needs_scan_mode_wording_refresh",
|
|
"needs_credential_boundary_metadata_refresh",
|
|
"needs_maintenance_constraints_refresh",
|
|
"needs_rollback_owner_refresh",
|
|
"waiting_separate_runtime_gate",
|
|
]
|
|
assert_equal(
|
|
"iwooos_projection.host_owner_decision_record_draft_review_outcome_lanes.outcome_states",
|
|
[item["outcome_state"] for item in iwooos_host_owner_decision_record_draft_review_outcome_lanes],
|
|
expected_iwooos_host_owner_decision_record_draft_review_outcome_states,
|
|
)
|
|
for item in iwooos_host_owner_decision_record_draft_review_outcome_lanes:
|
|
assert_equal(
|
|
f"iwooos_projection.host_owner_decision_record_draft_review_outcome_lanes.{item['lane_id']}.display_mode",
|
|
item["display_mode"],
|
|
"owner_decision_record_draft_review_outcome_only",
|
|
)
|
|
assert_equal(
|
|
f"iwooos_projection.host_owner_decision_record_draft_review_outcome_lanes.{item['lane_id']}.decision_record_review_passed_count",
|
|
item["decision_record_review_passed_count"],
|
|
0,
|
|
)
|
|
assert_false(
|
|
f"iwooos_projection.host_owner_decision_record_draft_review_outcome_lanes.{item['lane_id']}.decision_record_created",
|
|
item["decision_record_created"],
|
|
)
|
|
assert_equal(
|
|
f"iwooos_projection.host_owner_decision_record_draft_review_outcome_lanes.{item['lane_id']}.owner_decision_received_count",
|
|
item["owner_decision_received_count"],
|
|
0,
|
|
)
|
|
assert_equal(
|
|
f"iwooos_projection.host_owner_decision_record_draft_review_outcome_lanes.{item['lane_id']}.owner_decision_accepted_count",
|
|
item["owner_decision_accepted_count"],
|
|
0,
|
|
)
|
|
assert_false(
|
|
f"iwooos_projection.host_owner_decision_record_draft_review_outcome_lanes.{item['lane_id']}.owner_approval_record_created",
|
|
item["owner_approval_record_created"],
|
|
)
|
|
assert_false(
|
|
f"iwooos_projection.host_owner_decision_record_draft_review_outcome_lanes.{item['lane_id']}.runtime_gate_opened",
|
|
item["runtime_gate_opened"],
|
|
)
|
|
assert_false(
|
|
f"iwooos_projection.host_owner_decision_record_draft_review_outcome_lanes.{item['lane_id']}.raw_payload_allowed",
|
|
item["raw_payload_allowed"],
|
|
)
|
|
assert_false(
|
|
f"iwooos_projection.host_owner_decision_record_draft_review_outcome_lanes.{item['lane_id']}.secret_value_collection_allowed",
|
|
item["secret_value_collection_allowed"],
|
|
)
|
|
assert_false(
|
|
f"iwooos_projection.host_owner_decision_record_draft_review_outcome_lanes.{item['lane_id']}.runtime_execution_authorized",
|
|
item["runtime_execution_authorized"],
|
|
)
|
|
assert_false(
|
|
f"iwooos_projection.host_owner_decision_record_draft_review_outcome_lanes.{item['lane_id']}.action_buttons_allowed",
|
|
item["action_buttons_allowed"],
|
|
)
|
|
assert_true(
|
|
f"iwooos_projection.host_owner_decision_record_draft_review_outcome_lanes.{item['lane_id']}.not_authorization",
|
|
item["not_authorization"],
|
|
)
|
|
iwooos_host_owner_decision_record_writeup_packets = iwooos_projection[
|
|
"host_owner_decision_record_writeup_packets"
|
|
]
|
|
assert_equal(
|
|
"iwooos_projection.host_owner_decision_record_writeup_packets.ids",
|
|
[item["packet_id"] for item in iwooos_host_owner_decision_record_writeup_packets],
|
|
expected_iwooos_host_owner_decision_record_writeup_packet_ids,
|
|
)
|
|
assert_equal(
|
|
"iwooos_projection.host_owner_decision_record_writeup_packets.display_order",
|
|
[item["display_order"] for item in iwooos_host_owner_decision_record_writeup_packets],
|
|
list(range(1, len(expected_iwooos_host_owner_decision_record_writeup_packet_ids) + 1)),
|
|
)
|
|
expected_iwooos_host_owner_decision_record_writeup_fields = [
|
|
"decision_summary",
|
|
"approved_scope_statement",
|
|
"scan_mode_limits_statement",
|
|
"credential_boundary_statement",
|
|
"maintenance_and_rollback_statement",
|
|
"validation_evidence_statement",
|
|
"runtime_gate_pointer_statement",
|
|
]
|
|
assert_equal(
|
|
"iwooos_projection.host_owner_decision_record_writeup_packets.writeup_fields",
|
|
[item["writeup_field"] for item in iwooos_host_owner_decision_record_writeup_packets],
|
|
expected_iwooos_host_owner_decision_record_writeup_fields,
|
|
)
|
|
for item in iwooos_host_owner_decision_record_writeup_packets:
|
|
assert_equal(
|
|
f"iwooos_projection.host_owner_decision_record_writeup_packets.{item['packet_id']}.display_mode",
|
|
item["display_mode"],
|
|
"owner_decision_record_writeup_only",
|
|
)
|
|
assert_equal(
|
|
f"iwooos_projection.host_owner_decision_record_writeup_packets.{item['packet_id']}.decision_record_writeup_completed_count",
|
|
item["decision_record_writeup_completed_count"],
|
|
0,
|
|
)
|
|
assert_false(
|
|
f"iwooos_projection.host_owner_decision_record_writeup_packets.{item['packet_id']}.decision_record_created",
|
|
item["decision_record_created"],
|
|
)
|
|
assert_equal(
|
|
f"iwooos_projection.host_owner_decision_record_writeup_packets.{item['packet_id']}.owner_decision_received_count",
|
|
item["owner_decision_received_count"],
|
|
0,
|
|
)
|
|
assert_equal(
|
|
f"iwooos_projection.host_owner_decision_record_writeup_packets.{item['packet_id']}.owner_decision_accepted_count",
|
|
item["owner_decision_accepted_count"],
|
|
0,
|
|
)
|
|
assert_false(
|
|
f"iwooos_projection.host_owner_decision_record_writeup_packets.{item['packet_id']}.owner_approval_record_created",
|
|
item["owner_approval_record_created"],
|
|
)
|
|
assert_false(
|
|
f"iwooos_projection.host_owner_decision_record_writeup_packets.{item['packet_id']}.runtime_gate_opened",
|
|
item["runtime_gate_opened"],
|
|
)
|
|
assert_false(
|
|
f"iwooos_projection.host_owner_decision_record_writeup_packets.{item['packet_id']}.raw_payload_allowed",
|
|
item["raw_payload_allowed"],
|
|
)
|
|
assert_false(
|
|
f"iwooos_projection.host_owner_decision_record_writeup_packets.{item['packet_id']}.secret_value_collection_allowed",
|
|
item["secret_value_collection_allowed"],
|
|
)
|
|
assert_false(
|
|
f"iwooos_projection.host_owner_decision_record_writeup_packets.{item['packet_id']}.runtime_execution_authorized",
|
|
item["runtime_execution_authorized"],
|
|
)
|
|
assert_false(
|
|
f"iwooos_projection.host_owner_decision_record_writeup_packets.{item['packet_id']}.action_buttons_allowed",
|
|
item["action_buttons_allowed"],
|
|
)
|
|
assert_true(
|
|
f"iwooos_projection.host_owner_decision_record_writeup_packets.{item['packet_id']}.not_authorization",
|
|
item["not_authorization"],
|
|
)
|
|
iwooos_host_owner_decision_record_writeup_review_checklist_items = iwooos_projection[
|
|
"host_owner_decision_record_writeup_review_checklist_items"
|
|
]
|
|
assert_equal(
|
|
"iwooos_projection.host_owner_decision_record_writeup_review_checklist_items.ids",
|
|
[item["check_id"] for item in iwooos_host_owner_decision_record_writeup_review_checklist_items],
|
|
expected_iwooos_host_owner_decision_record_writeup_review_checklist_item_ids,
|
|
)
|
|
assert_equal(
|
|
"iwooos_projection.host_owner_decision_record_writeup_review_checklist_items.display_order",
|
|
[item["display_order"] for item in iwooos_host_owner_decision_record_writeup_review_checklist_items],
|
|
list(range(1, len(expected_iwooos_host_owner_decision_record_writeup_review_checklist_item_ids) + 1)),
|
|
)
|
|
expected_iwooos_host_owner_decision_record_writeup_review_conditions = [
|
|
"decision_summary_risk_acceptance_and_no_execution_statement_readable",
|
|
"scope_exclusion_observation_intent_and_expiry_complete",
|
|
"scan_mode_limits_explicit_and_not_authorization",
|
|
"credential_boundary_metadata_only_and_no_secret_collection",
|
|
"maintenance_window_constraints_rollback_and_human_contact_linked",
|
|
"validation_metrics_baseline_evidence_and_acceptance_condition_linked",
|
|
"runtime_gate_pointer_separate_and_closed",
|
|
]
|
|
assert_equal(
|
|
"iwooos_projection.host_owner_decision_record_writeup_review_checklist_items.review_conditions",
|
|
[item["review_condition"] for item in iwooos_host_owner_decision_record_writeup_review_checklist_items],
|
|
expected_iwooos_host_owner_decision_record_writeup_review_conditions,
|
|
)
|
|
for item in iwooos_host_owner_decision_record_writeup_review_checklist_items:
|
|
assert_equal(
|
|
f"iwooos_projection.host_owner_decision_record_writeup_review_checklist_items.{item['check_id']}.display_mode",
|
|
item["display_mode"],
|
|
"owner_decision_record_writeup_review_checklist_only",
|
|
)
|
|
assert_equal(
|
|
f"iwooos_projection.host_owner_decision_record_writeup_review_checklist_items.{item['check_id']}.decision_record_writeup_review_passed_count",
|
|
item["decision_record_writeup_review_passed_count"],
|
|
0,
|
|
)
|
|
assert_equal(
|
|
f"iwooos_projection.host_owner_decision_record_writeup_review_checklist_items.{item['check_id']}.decision_record_writeup_completed_count",
|
|
item["decision_record_writeup_completed_count"],
|
|
0,
|
|
)
|
|
assert_false(
|
|
f"iwooos_projection.host_owner_decision_record_writeup_review_checklist_items.{item['check_id']}.decision_record_created",
|
|
item["decision_record_created"],
|
|
)
|
|
assert_equal(
|
|
f"iwooos_projection.host_owner_decision_record_writeup_review_checklist_items.{item['check_id']}.owner_decision_received_count",
|
|
item["owner_decision_received_count"],
|
|
0,
|
|
)
|
|
assert_equal(
|
|
f"iwooos_projection.host_owner_decision_record_writeup_review_checklist_items.{item['check_id']}.owner_decision_accepted_count",
|
|
item["owner_decision_accepted_count"],
|
|
0,
|
|
)
|
|
assert_false(
|
|
f"iwooos_projection.host_owner_decision_record_writeup_review_checklist_items.{item['check_id']}.owner_approval_record_created",
|
|
item["owner_approval_record_created"],
|
|
)
|
|
assert_false(
|
|
f"iwooos_projection.host_owner_decision_record_writeup_review_checklist_items.{item['check_id']}.runtime_gate_opened",
|
|
item["runtime_gate_opened"],
|
|
)
|
|
assert_false(
|
|
f"iwooos_projection.host_owner_decision_record_writeup_review_checklist_items.{item['check_id']}.raw_payload_allowed",
|
|
item["raw_payload_allowed"],
|
|
)
|
|
assert_false(
|
|
f"iwooos_projection.host_owner_decision_record_writeup_review_checklist_items.{item['check_id']}.secret_value_collection_allowed",
|
|
item["secret_value_collection_allowed"],
|
|
)
|
|
assert_false(
|
|
f"iwooos_projection.host_owner_decision_record_writeup_review_checklist_items.{item['check_id']}.runtime_execution_authorized",
|
|
item["runtime_execution_authorized"],
|
|
)
|
|
assert_false(
|
|
f"iwooos_projection.host_owner_decision_record_writeup_review_checklist_items.{item['check_id']}.action_buttons_allowed",
|
|
item["action_buttons_allowed"],
|
|
)
|
|
assert_true(
|
|
f"iwooos_projection.host_owner_decision_record_writeup_review_checklist_items.{item['check_id']}.not_authorization",
|
|
item["not_authorization"],
|
|
)
|
|
iwooos_host_owner_decision_record_writeup_review_outcome_lanes = iwooos_projection[
|
|
"host_owner_decision_record_writeup_review_outcome_lanes"
|
|
]
|
|
assert_equal(
|
|
"iwooos_projection.host_owner_decision_record_writeup_review_outcome_lanes.ids",
|
|
[item["lane_id"] for item in iwooos_host_owner_decision_record_writeup_review_outcome_lanes],
|
|
expected_iwooos_host_owner_decision_record_writeup_review_outcome_lane_ids,
|
|
)
|
|
assert_equal(
|
|
"iwooos_projection.host_owner_decision_record_writeup_review_outcome_lanes.display_order",
|
|
[item["display_order"] for item in iwooos_host_owner_decision_record_writeup_review_outcome_lanes],
|
|
list(range(1, len(expected_iwooos_host_owner_decision_record_writeup_review_outcome_lane_ids) + 1)),
|
|
)
|
|
expected_iwooos_host_owner_decision_record_writeup_review_outcome_states = [
|
|
"candidate_formal_decision_record_only",
|
|
"needs_decision_summary_clarification",
|
|
"needs_scope_and_expiry_refresh",
|
|
"needs_scan_mode_limit_wording_refresh",
|
|
"needs_credential_boundary_metadata_refresh",
|
|
"needs_maintenance_rollback_refresh",
|
|
"waiting_separate_runtime_gate",
|
|
]
|
|
assert_equal(
|
|
"iwooos_projection.host_owner_decision_record_writeup_review_outcome_lanes.outcome_states",
|
|
[item["outcome_state"] for item in iwooos_host_owner_decision_record_writeup_review_outcome_lanes],
|
|
expected_iwooos_host_owner_decision_record_writeup_review_outcome_states,
|
|
)
|
|
for item in iwooos_host_owner_decision_record_writeup_review_outcome_lanes:
|
|
assert_equal(
|
|
f"iwooos_projection.host_owner_decision_record_writeup_review_outcome_lanes.{item['lane_id']}.display_mode",
|
|
item["display_mode"],
|
|
"owner_decision_record_writeup_review_outcome_only",
|
|
)
|
|
assert_equal(
|
|
f"iwooos_projection.host_owner_decision_record_writeup_review_outcome_lanes.{item['lane_id']}.decision_record_writeup_review_passed_count",
|
|
item["decision_record_writeup_review_passed_count"],
|
|
0,
|
|
)
|
|
assert_equal(
|
|
f"iwooos_projection.host_owner_decision_record_writeup_review_outcome_lanes.{item['lane_id']}.decision_record_writeup_completed_count",
|
|
item["decision_record_writeup_completed_count"],
|
|
0,
|
|
)
|
|
assert_false(
|
|
f"iwooos_projection.host_owner_decision_record_writeup_review_outcome_lanes.{item['lane_id']}.decision_record_created",
|
|
item["decision_record_created"],
|
|
)
|
|
assert_equal(
|
|
f"iwooos_projection.host_owner_decision_record_writeup_review_outcome_lanes.{item['lane_id']}.owner_decision_received_count",
|
|
item["owner_decision_received_count"],
|
|
0,
|
|
)
|
|
assert_equal(
|
|
f"iwooos_projection.host_owner_decision_record_writeup_review_outcome_lanes.{item['lane_id']}.owner_decision_accepted_count",
|
|
item["owner_decision_accepted_count"],
|
|
0,
|
|
)
|
|
assert_false(
|
|
f"iwooos_projection.host_owner_decision_record_writeup_review_outcome_lanes.{item['lane_id']}.owner_approval_record_created",
|
|
item["owner_approval_record_created"],
|
|
)
|
|
assert_false(
|
|
f"iwooos_projection.host_owner_decision_record_writeup_review_outcome_lanes.{item['lane_id']}.runtime_gate_opened",
|
|
item["runtime_gate_opened"],
|
|
)
|
|
assert_false(
|
|
f"iwooos_projection.host_owner_decision_record_writeup_review_outcome_lanes.{item['lane_id']}.raw_payload_allowed",
|
|
item["raw_payload_allowed"],
|
|
)
|
|
assert_false(
|
|
f"iwooos_projection.host_owner_decision_record_writeup_review_outcome_lanes.{item['lane_id']}.secret_value_collection_allowed",
|
|
item["secret_value_collection_allowed"],
|
|
)
|
|
assert_false(
|
|
f"iwooos_projection.host_owner_decision_record_writeup_review_outcome_lanes.{item['lane_id']}.runtime_execution_authorized",
|
|
item["runtime_execution_authorized"],
|
|
)
|
|
assert_false(
|
|
f"iwooos_projection.host_owner_decision_record_writeup_review_outcome_lanes.{item['lane_id']}.action_buttons_allowed",
|
|
item["action_buttons_allowed"],
|
|
)
|
|
assert_true(
|
|
f"iwooos_projection.host_owner_decision_record_writeup_review_outcome_lanes.{item['lane_id']}.not_authorization",
|
|
item["not_authorization"],
|
|
)
|
|
iwooos_host_owner_decision_record_formal_candidate_packets = iwooos_projection[
|
|
"host_owner_decision_record_formal_candidate_packets"
|
|
]
|
|
assert_equal(
|
|
"iwooos_projection.host_owner_decision_record_formal_candidate_packets.ids",
|
|
[item["packet_id"] for item in iwooos_host_owner_decision_record_formal_candidate_packets],
|
|
expected_iwooos_host_owner_decision_record_formal_candidate_packet_ids,
|
|
)
|
|
assert_equal(
|
|
"iwooos_projection.host_owner_decision_record_formal_candidate_packets.display_order",
|
|
[item["display_order"] for item in iwooos_host_owner_decision_record_formal_candidate_packets],
|
|
list(range(1, len(expected_iwooos_host_owner_decision_record_formal_candidate_packet_ids) + 1)),
|
|
)
|
|
expected_iwooos_host_owner_decision_record_formal_candidate_fields = [
|
|
"record_identity_and_version",
|
|
"decision_summary",
|
|
"approved_scope_statement",
|
|
"scan_mode_limits_statement",
|
|
"credential_boundary_statement",
|
|
"maintenance_and_rollback_statement",
|
|
"validation_and_runtime_gate_statement",
|
|
]
|
|
assert_equal(
|
|
"iwooos_projection.host_owner_decision_record_formal_candidate_packets.candidate_fields",
|
|
[item["candidate_field"] for item in iwooos_host_owner_decision_record_formal_candidate_packets],
|
|
expected_iwooos_host_owner_decision_record_formal_candidate_fields,
|
|
)
|
|
for item in iwooos_host_owner_decision_record_formal_candidate_packets:
|
|
assert_equal(
|
|
f"iwooos_projection.host_owner_decision_record_formal_candidate_packets.{item['packet_id']}.source_lane_id",
|
|
item["source_lane_id"],
|
|
"host_decision_record_writeup_review_ready_for_formal_record_outcome_lane",
|
|
)
|
|
assert_equal(
|
|
f"iwooos_projection.host_owner_decision_record_formal_candidate_packets.{item['packet_id']}.display_mode",
|
|
item["display_mode"],
|
|
"owner_decision_record_formal_candidate_only",
|
|
)
|
|
assert_equal(
|
|
f"iwooos_projection.host_owner_decision_record_formal_candidate_packets.{item['packet_id']}.formal_record_candidate_finalized_count",
|
|
item["formal_record_candidate_finalized_count"],
|
|
0,
|
|
)
|
|
assert_false(
|
|
f"iwooos_projection.host_owner_decision_record_formal_candidate_packets.{item['packet_id']}.decision_record_created",
|
|
item["decision_record_created"],
|
|
)
|
|
assert_equal(
|
|
f"iwooos_projection.host_owner_decision_record_formal_candidate_packets.{item['packet_id']}.owner_decision_received_count",
|
|
item["owner_decision_received_count"],
|
|
0,
|
|
)
|
|
assert_equal(
|
|
f"iwooos_projection.host_owner_decision_record_formal_candidate_packets.{item['packet_id']}.owner_decision_accepted_count",
|
|
item["owner_decision_accepted_count"],
|
|
0,
|
|
)
|
|
assert_false(
|
|
f"iwooos_projection.host_owner_decision_record_formal_candidate_packets.{item['packet_id']}.owner_approval_record_created",
|
|
item["owner_approval_record_created"],
|
|
)
|
|
assert_false(
|
|
f"iwooos_projection.host_owner_decision_record_formal_candidate_packets.{item['packet_id']}.runtime_gate_opened",
|
|
item["runtime_gate_opened"],
|
|
)
|
|
assert_false(
|
|
f"iwooos_projection.host_owner_decision_record_formal_candidate_packets.{item['packet_id']}.raw_payload_allowed",
|
|
item["raw_payload_allowed"],
|
|
)
|
|
assert_false(
|
|
f"iwooos_projection.host_owner_decision_record_formal_candidate_packets.{item['packet_id']}.secret_value_collection_allowed",
|
|
item["secret_value_collection_allowed"],
|
|
)
|
|
assert_false(
|
|
f"iwooos_projection.host_owner_decision_record_formal_candidate_packets.{item['packet_id']}.runtime_execution_authorized",
|
|
item["runtime_execution_authorized"],
|
|
)
|
|
assert_false(
|
|
f"iwooos_projection.host_owner_decision_record_formal_candidate_packets.{item['packet_id']}.action_buttons_allowed",
|
|
item["action_buttons_allowed"],
|
|
)
|
|
assert_true(
|
|
f"iwooos_projection.host_owner_decision_record_formal_candidate_packets.{item['packet_id']}.not_authorization",
|
|
item["not_authorization"],
|
|
)
|
|
iwooos_host_owner_decision_record_formal_candidate_review_checklist_items = iwooos_projection[
|
|
"host_owner_decision_record_formal_candidate_review_checklist_items"
|
|
]
|
|
assert_equal(
|
|
"iwooos_projection.host_owner_decision_record_formal_candidate_review_checklist_items.ids",
|
|
[item["check_id"] for item in iwooos_host_owner_decision_record_formal_candidate_review_checklist_items],
|
|
expected_iwooos_host_owner_decision_record_formal_candidate_review_checklist_item_ids,
|
|
)
|
|
assert_equal(
|
|
"iwooos_projection.host_owner_decision_record_formal_candidate_review_checklist_items.display_order",
|
|
[item["display_order"] for item in iwooos_host_owner_decision_record_formal_candidate_review_checklist_items],
|
|
list(range(1, len(expected_iwooos_host_owner_decision_record_formal_candidate_review_checklist_item_ids) + 1)),
|
|
)
|
|
expected_iwooos_host_owner_decision_record_formal_candidate_review_conditions = [
|
|
"record_identity_version_owner_scope_and_trace_source_readable",
|
|
"decision_summary_risk_acceptance_and_no_execution_statement_readable",
|
|
"scope_exclusion_observation_intent_and_expiry_consistent",
|
|
"scan_limits_explicit_and_not_authorization",
|
|
"credential_boundary_metadata_only_masked_and_no_secret_collection",
|
|
"maintenance_window_constraints_rollback_and_human_contact_traceable",
|
|
"validation_evidence_linked_and_runtime_gate_separate_closed",
|
|
]
|
|
assert_equal(
|
|
"iwooos_projection.host_owner_decision_record_formal_candidate_review_checklist_items.review_conditions",
|
|
[
|
|
item["review_condition"]
|
|
for item in iwooos_host_owner_decision_record_formal_candidate_review_checklist_items
|
|
],
|
|
expected_iwooos_host_owner_decision_record_formal_candidate_review_conditions,
|
|
)
|
|
for item in iwooos_host_owner_decision_record_formal_candidate_review_checklist_items:
|
|
assert_equal(
|
|
f"iwooos_projection.host_owner_decision_record_formal_candidate_review_checklist_items.{item['check_id']}.display_mode",
|
|
item["display_mode"],
|
|
"owner_decision_record_formal_candidate_review_checklist_only",
|
|
)
|
|
assert_equal(
|
|
f"iwooos_projection.host_owner_decision_record_formal_candidate_review_checklist_items.{item['check_id']}.formal_record_candidate_review_passed_count",
|
|
item["formal_record_candidate_review_passed_count"],
|
|
0,
|
|
)
|
|
assert_equal(
|
|
f"iwooos_projection.host_owner_decision_record_formal_candidate_review_checklist_items.{item['check_id']}.formal_record_candidate_finalized_count",
|
|
item["formal_record_candidate_finalized_count"],
|
|
0,
|
|
)
|
|
assert_false(
|
|
f"iwooos_projection.host_owner_decision_record_formal_candidate_review_checklist_items.{item['check_id']}.decision_record_created",
|
|
item["decision_record_created"],
|
|
)
|
|
assert_equal(
|
|
f"iwooos_projection.host_owner_decision_record_formal_candidate_review_checklist_items.{item['check_id']}.owner_decision_received_count",
|
|
item["owner_decision_received_count"],
|
|
0,
|
|
)
|
|
assert_equal(
|
|
f"iwooos_projection.host_owner_decision_record_formal_candidate_review_checklist_items.{item['check_id']}.owner_decision_accepted_count",
|
|
item["owner_decision_accepted_count"],
|
|
0,
|
|
)
|
|
assert_false(
|
|
f"iwooos_projection.host_owner_decision_record_formal_candidate_review_checklist_items.{item['check_id']}.owner_approval_record_created",
|
|
item["owner_approval_record_created"],
|
|
)
|
|
assert_false(
|
|
f"iwooos_projection.host_owner_decision_record_formal_candidate_review_checklist_items.{item['check_id']}.runtime_gate_opened",
|
|
item["runtime_gate_opened"],
|
|
)
|
|
assert_false(
|
|
f"iwooos_projection.host_owner_decision_record_formal_candidate_review_checklist_items.{item['check_id']}.raw_payload_allowed",
|
|
item["raw_payload_allowed"],
|
|
)
|
|
assert_false(
|
|
f"iwooos_projection.host_owner_decision_record_formal_candidate_review_checklist_items.{item['check_id']}.secret_value_collection_allowed",
|
|
item["secret_value_collection_allowed"],
|
|
)
|
|
assert_false(
|
|
f"iwooos_projection.host_owner_decision_record_formal_candidate_review_checklist_items.{item['check_id']}.runtime_execution_authorized",
|
|
item["runtime_execution_authorized"],
|
|
)
|
|
assert_false(
|
|
f"iwooos_projection.host_owner_decision_record_formal_candidate_review_checklist_items.{item['check_id']}.action_buttons_allowed",
|
|
item["action_buttons_allowed"],
|
|
)
|
|
assert_true(
|
|
f"iwooos_projection.host_owner_decision_record_formal_candidate_review_checklist_items.{item['check_id']}.not_authorization",
|
|
item["not_authorization"],
|
|
)
|
|
iwooos_host_owner_decision_record_formal_candidate_review_outcome_lanes = iwooos_projection[
|
|
"host_owner_decision_record_formal_candidate_review_outcome_lanes"
|
|
]
|
|
assert_equal(
|
|
"iwooos_projection.host_owner_decision_record_formal_candidate_review_outcome_lanes.ids",
|
|
[item["lane_id"] for item in iwooos_host_owner_decision_record_formal_candidate_review_outcome_lanes],
|
|
expected_iwooos_host_owner_decision_record_formal_candidate_review_outcome_lane_ids,
|
|
)
|
|
assert_equal(
|
|
"iwooos_projection.host_owner_decision_record_formal_candidate_review_outcome_lanes.display_order",
|
|
[item["display_order"] for item in iwooos_host_owner_decision_record_formal_candidate_review_outcome_lanes],
|
|
list(range(1, len(expected_iwooos_host_owner_decision_record_formal_candidate_review_outcome_lane_ids) + 1)),
|
|
)
|
|
expected_iwooos_host_owner_decision_record_formal_candidate_review_outcome_states = [
|
|
"ready_for_separate_human_record_queue",
|
|
"record_identity_trace_missing",
|
|
"decision_summary_needs_clarification",
|
|
"scope_expiry_needs_refresh",
|
|
"scan_limits_ambiguous_not_authorization",
|
|
"credential_boundary_failed",
|
|
"maintenance_rollback_incomplete",
|
|
"waiting_separate_runtime_gate",
|
|
]
|
|
assert_equal(
|
|
"iwooos_projection.host_owner_decision_record_formal_candidate_review_outcome_lanes.outcome_states",
|
|
[item["outcome_state"] for item in iwooos_host_owner_decision_record_formal_candidate_review_outcome_lanes],
|
|
expected_iwooos_host_owner_decision_record_formal_candidate_review_outcome_states,
|
|
)
|
|
for item in iwooos_host_owner_decision_record_formal_candidate_review_outcome_lanes:
|
|
assert_equal(
|
|
f"iwooos_projection.host_owner_decision_record_formal_candidate_review_outcome_lanes.{item['lane_id']}.display_mode",
|
|
item["display_mode"],
|
|
"owner_decision_record_formal_candidate_review_outcome_only",
|
|
)
|
|
assert_equal(
|
|
f"iwooos_projection.host_owner_decision_record_formal_candidate_review_outcome_lanes.{item['lane_id']}.formal_record_candidate_review_passed_count",
|
|
item["formal_record_candidate_review_passed_count"],
|
|
0,
|
|
)
|
|
assert_equal(
|
|
f"iwooos_projection.host_owner_decision_record_formal_candidate_review_outcome_lanes.{item['lane_id']}.formal_record_candidate_finalized_count",
|
|
item["formal_record_candidate_finalized_count"],
|
|
0,
|
|
)
|
|
assert_false(
|
|
f"iwooos_projection.host_owner_decision_record_formal_candidate_review_outcome_lanes.{item['lane_id']}.decision_record_created",
|
|
item["decision_record_created"],
|
|
)
|
|
assert_equal(
|
|
f"iwooos_projection.host_owner_decision_record_formal_candidate_review_outcome_lanes.{item['lane_id']}.owner_decision_received_count",
|
|
item["owner_decision_received_count"],
|
|
0,
|
|
)
|
|
assert_equal(
|
|
f"iwooos_projection.host_owner_decision_record_formal_candidate_review_outcome_lanes.{item['lane_id']}.owner_decision_accepted_count",
|
|
item["owner_decision_accepted_count"],
|
|
0,
|
|
)
|
|
assert_false(
|
|
f"iwooos_projection.host_owner_decision_record_formal_candidate_review_outcome_lanes.{item['lane_id']}.owner_approval_record_created",
|
|
item["owner_approval_record_created"],
|
|
)
|
|
assert_false(
|
|
f"iwooos_projection.host_owner_decision_record_formal_candidate_review_outcome_lanes.{item['lane_id']}.runtime_gate_opened",
|
|
item["runtime_gate_opened"],
|
|
)
|
|
assert_false(
|
|
f"iwooos_projection.host_owner_decision_record_formal_candidate_review_outcome_lanes.{item['lane_id']}.raw_payload_allowed",
|
|
item["raw_payload_allowed"],
|
|
)
|
|
assert_false(
|
|
f"iwooos_projection.host_owner_decision_record_formal_candidate_review_outcome_lanes.{item['lane_id']}.secret_value_collection_allowed",
|
|
item["secret_value_collection_allowed"],
|
|
)
|
|
assert_false(
|
|
f"iwooos_projection.host_owner_decision_record_formal_candidate_review_outcome_lanes.{item['lane_id']}.runtime_execution_authorized",
|
|
item["runtime_execution_authorized"],
|
|
)
|
|
assert_false(
|
|
f"iwooos_projection.host_owner_decision_record_formal_candidate_review_outcome_lanes.{item['lane_id']}.action_buttons_allowed",
|
|
item["action_buttons_allowed"],
|
|
)
|
|
assert_true(
|
|
f"iwooos_projection.host_owner_decision_record_formal_candidate_review_outcome_lanes.{item['lane_id']}.not_authorization",
|
|
item["not_authorization"],
|
|
)
|
|
iwooos_host_owner_decision_record_formal_record_queue_packets = iwooos_projection[
|
|
"host_owner_decision_record_formal_record_queue_packets"
|
|
]
|
|
assert_equal(
|
|
"iwooos_projection.host_owner_decision_record_formal_record_queue_packets.ids",
|
|
[item["packet_id"] for item in iwooos_host_owner_decision_record_formal_record_queue_packets],
|
|
expected_iwooos_host_owner_decision_record_formal_record_queue_packet_ids,
|
|
)
|
|
assert_equal(
|
|
"iwooos_projection.host_owner_decision_record_formal_record_queue_packets.display_order",
|
|
[item["display_order"] for item in iwooos_host_owner_decision_record_formal_record_queue_packets],
|
|
list(range(1, len(expected_iwooos_host_owner_decision_record_formal_record_queue_packet_ids) + 1)),
|
|
)
|
|
expected_iwooos_host_owner_decision_record_formal_record_queue_fields = [
|
|
"record_identity_queue_packet",
|
|
"decision_summary_queue_packet",
|
|
"scope_expiry_queue_packet",
|
|
"scan_limits_queue_packet",
|
|
"credential_boundary_queue_packet",
|
|
"maintenance_rollback_queue_packet",
|
|
"validation_runtime_gate_queue_packet",
|
|
"no_execution_attestation_queue_packet",
|
|
]
|
|
assert_equal(
|
|
"iwooos_projection.host_owner_decision_record_formal_record_queue_packets.queue_fields",
|
|
[item["queue_field"] for item in iwooos_host_owner_decision_record_formal_record_queue_packets],
|
|
expected_iwooos_host_owner_decision_record_formal_record_queue_fields,
|
|
)
|
|
for item in iwooos_host_owner_decision_record_formal_record_queue_packets:
|
|
assert_equal(
|
|
f"iwooos_projection.host_owner_decision_record_formal_record_queue_packets.{item['packet_id']}.source_lane_id",
|
|
item["source_lane_id"],
|
|
"host_decision_record_formal_candidate_review_ready_for_record_queue_outcome_lane",
|
|
)
|
|
assert_equal(
|
|
f"iwooos_projection.host_owner_decision_record_formal_record_queue_packets.{item['packet_id']}.display_mode",
|
|
item["display_mode"],
|
|
"owner_decision_record_formal_record_queue_packet_only",
|
|
)
|
|
assert_equal(
|
|
f"iwooos_projection.host_owner_decision_record_formal_record_queue_packets.{item['packet_id']}.formal_record_queue_enqueued_count",
|
|
item["formal_record_queue_enqueued_count"],
|
|
0,
|
|
)
|
|
assert_false(
|
|
f"iwooos_projection.host_owner_decision_record_formal_record_queue_packets.{item['packet_id']}.decision_record_created",
|
|
item["decision_record_created"],
|
|
)
|
|
assert_equal(
|
|
f"iwooos_projection.host_owner_decision_record_formal_record_queue_packets.{item['packet_id']}.owner_decision_received_count",
|
|
item["owner_decision_received_count"],
|
|
0,
|
|
)
|
|
assert_equal(
|
|
f"iwooos_projection.host_owner_decision_record_formal_record_queue_packets.{item['packet_id']}.owner_decision_accepted_count",
|
|
item["owner_decision_accepted_count"],
|
|
0,
|
|
)
|
|
assert_false(
|
|
f"iwooos_projection.host_owner_decision_record_formal_record_queue_packets.{item['packet_id']}.owner_approval_record_created",
|
|
item["owner_approval_record_created"],
|
|
)
|
|
assert_false(
|
|
f"iwooos_projection.host_owner_decision_record_formal_record_queue_packets.{item['packet_id']}.runtime_gate_opened",
|
|
item["runtime_gate_opened"],
|
|
)
|
|
assert_false(
|
|
f"iwooos_projection.host_owner_decision_record_formal_record_queue_packets.{item['packet_id']}.raw_payload_allowed",
|
|
item["raw_payload_allowed"],
|
|
)
|
|
assert_false(
|
|
f"iwooos_projection.host_owner_decision_record_formal_record_queue_packets.{item['packet_id']}.secret_value_collection_allowed",
|
|
item["secret_value_collection_allowed"],
|
|
)
|
|
assert_false(
|
|
f"iwooos_projection.host_owner_decision_record_formal_record_queue_packets.{item['packet_id']}.runtime_execution_authorized",
|
|
item["runtime_execution_authorized"],
|
|
)
|
|
assert_false(
|
|
f"iwooos_projection.host_owner_decision_record_formal_record_queue_packets.{item['packet_id']}.action_buttons_allowed",
|
|
item["action_buttons_allowed"],
|
|
)
|
|
assert_true(
|
|
f"iwooos_projection.host_owner_decision_record_formal_record_queue_packets.{item['packet_id']}.not_authorization",
|
|
item["not_authorization"],
|
|
)
|
|
iwooos_host_owner_decision_record_formal_record_queue_review_checklist_items = iwooos_projection[
|
|
"host_owner_decision_record_formal_record_queue_review_checklist_items"
|
|
]
|
|
assert_equal(
|
|
"iwooos_projection.host_owner_decision_record_formal_record_queue_review_checklist_items.ids",
|
|
[item["item_id"] for item in iwooos_host_owner_decision_record_formal_record_queue_review_checklist_items],
|
|
expected_iwooos_host_owner_decision_record_formal_record_queue_review_checklist_item_ids,
|
|
)
|
|
assert_equal(
|
|
"iwooos_projection.host_owner_decision_record_formal_record_queue_review_checklist_items.display_order",
|
|
[item["display_order"] for item in iwooos_host_owner_decision_record_formal_record_queue_review_checklist_items],
|
|
list(range(1, len(expected_iwooos_host_owner_decision_record_formal_record_queue_review_checklist_item_ids) + 1)),
|
|
)
|
|
assert_equal(
|
|
"iwooos_projection.host_owner_decision_record_formal_record_queue_review_checklist_items.source_packet_ids",
|
|
[item["source_packet_id"] for item in iwooos_host_owner_decision_record_formal_record_queue_review_checklist_items],
|
|
expected_iwooos_host_owner_decision_record_formal_record_queue_packet_ids,
|
|
)
|
|
expected_iwooos_host_owner_decision_record_formal_record_queue_review_conditions = [
|
|
"identity_traceable_to_candidate_source",
|
|
"decision_summary_readable_without_approval_semantics",
|
|
"scope_expiry_current_and_bounded",
|
|
"scan_limits_not_authorization",
|
|
"credential_boundary_metadata_only",
|
|
"maintenance_rollback_pointer_linked",
|
|
"validation_runtime_gate_separate",
|
|
"no_execution_attestation_present",
|
|
]
|
|
assert_equal(
|
|
"iwooos_projection.host_owner_decision_record_formal_record_queue_review_checklist_items.review_conditions",
|
|
[item["review_condition"] for item in iwooos_host_owner_decision_record_formal_record_queue_review_checklist_items],
|
|
expected_iwooos_host_owner_decision_record_formal_record_queue_review_conditions,
|
|
)
|
|
for item in iwooos_host_owner_decision_record_formal_record_queue_review_checklist_items:
|
|
assert_equal(
|
|
f"iwooos_projection.host_owner_decision_record_formal_record_queue_review_checklist_items.{item['item_id']}.display_mode",
|
|
item["display_mode"],
|
|
"owner_decision_record_formal_record_queue_review_checklist_only",
|
|
)
|
|
assert_equal(
|
|
f"iwooos_projection.host_owner_decision_record_formal_record_queue_review_checklist_items.{item['item_id']}.formal_record_queue_review_passed_count",
|
|
item["formal_record_queue_review_passed_count"],
|
|
0,
|
|
)
|
|
assert_equal(
|
|
f"iwooos_projection.host_owner_decision_record_formal_record_queue_review_checklist_items.{item['item_id']}.formal_record_queue_enqueued_count",
|
|
item["formal_record_queue_enqueued_count"],
|
|
0,
|
|
)
|
|
assert_false(
|
|
f"iwooos_projection.host_owner_decision_record_formal_record_queue_review_checklist_items.{item['item_id']}.decision_record_created",
|
|
item["decision_record_created"],
|
|
)
|
|
assert_equal(
|
|
f"iwooos_projection.host_owner_decision_record_formal_record_queue_review_checklist_items.{item['item_id']}.owner_decision_received_count",
|
|
item["owner_decision_received_count"],
|
|
0,
|
|
)
|
|
assert_equal(
|
|
f"iwooos_projection.host_owner_decision_record_formal_record_queue_review_checklist_items.{item['item_id']}.owner_decision_accepted_count",
|
|
item["owner_decision_accepted_count"],
|
|
0,
|
|
)
|
|
assert_false(
|
|
f"iwooos_projection.host_owner_decision_record_formal_record_queue_review_checklist_items.{item['item_id']}.owner_approval_record_created",
|
|
item["owner_approval_record_created"],
|
|
)
|
|
assert_false(
|
|
f"iwooos_projection.host_owner_decision_record_formal_record_queue_review_checklist_items.{item['item_id']}.runtime_gate_opened",
|
|
item["runtime_gate_opened"],
|
|
)
|
|
assert_false(
|
|
f"iwooos_projection.host_owner_decision_record_formal_record_queue_review_checklist_items.{item['item_id']}.raw_payload_allowed",
|
|
item["raw_payload_allowed"],
|
|
)
|
|
assert_false(
|
|
f"iwooos_projection.host_owner_decision_record_formal_record_queue_review_checklist_items.{item['item_id']}.secret_value_collection_allowed",
|
|
item["secret_value_collection_allowed"],
|
|
)
|
|
assert_false(
|
|
f"iwooos_projection.host_owner_decision_record_formal_record_queue_review_checklist_items.{item['item_id']}.runtime_execution_authorized",
|
|
item["runtime_execution_authorized"],
|
|
)
|
|
assert_false(
|
|
f"iwooos_projection.host_owner_decision_record_formal_record_queue_review_checklist_items.{item['item_id']}.action_buttons_allowed",
|
|
item["action_buttons_allowed"],
|
|
)
|
|
assert_true(
|
|
f"iwooos_projection.host_owner_decision_record_formal_record_queue_review_checklist_items.{item['item_id']}.not_authorization",
|
|
item["not_authorization"],
|
|
)
|
|
iwooos_host_owner_decision_record_formal_record_queue_review_outcome_lanes = iwooos_projection[
|
|
"host_owner_decision_record_formal_record_queue_review_outcome_lanes"
|
|
]
|
|
assert_equal(
|
|
"iwooos_projection.host_owner_decision_record_formal_record_queue_review_outcome_lanes.ids",
|
|
[item["lane_id"] for item in iwooos_host_owner_decision_record_formal_record_queue_review_outcome_lanes],
|
|
expected_iwooos_host_owner_decision_record_formal_record_queue_review_outcome_lane_ids,
|
|
)
|
|
assert_equal(
|
|
"iwooos_projection.host_owner_decision_record_formal_record_queue_review_outcome_lanes.display_order",
|
|
[item["display_order"] for item in iwooos_host_owner_decision_record_formal_record_queue_review_outcome_lanes],
|
|
list(range(1, len(expected_iwooos_host_owner_decision_record_formal_record_queue_review_outcome_lane_ids) + 1)),
|
|
)
|
|
expected_iwooos_host_owner_decision_record_formal_record_queue_review_outcome_states = [
|
|
"ready_for_human_record_owner_handoff",
|
|
"identity_needs_trace_refresh",
|
|
"decision_summary_needs_clarification",
|
|
"scope_expiry_needs_refresh",
|
|
"scan_limits_remain_ambiguous",
|
|
"credential_boundary_failed",
|
|
"maintenance_rollback_incomplete",
|
|
"runtime_gate_still_required",
|
|
]
|
|
assert_equal(
|
|
"iwooos_projection.host_owner_decision_record_formal_record_queue_review_outcome_lanes.outcome_states",
|
|
[item["outcome_state"] for item in iwooos_host_owner_decision_record_formal_record_queue_review_outcome_lanes],
|
|
expected_iwooos_host_owner_decision_record_formal_record_queue_review_outcome_states,
|
|
)
|
|
for item in iwooos_host_owner_decision_record_formal_record_queue_review_outcome_lanes:
|
|
assert_equal(
|
|
f"iwooos_projection.host_owner_decision_record_formal_record_queue_review_outcome_lanes.{item['lane_id']}.display_mode",
|
|
item["display_mode"],
|
|
"owner_decision_record_formal_record_queue_review_outcome_only",
|
|
)
|
|
assert_equal(
|
|
f"iwooos_projection.host_owner_decision_record_formal_record_queue_review_outcome_lanes.{item['lane_id']}.formal_record_queue_review_passed_count",
|
|
item["formal_record_queue_review_passed_count"],
|
|
0,
|
|
)
|
|
assert_equal(
|
|
f"iwooos_projection.host_owner_decision_record_formal_record_queue_review_outcome_lanes.{item['lane_id']}.formal_record_queue_enqueued_count",
|
|
item["formal_record_queue_enqueued_count"],
|
|
0,
|
|
)
|
|
assert_false(
|
|
f"iwooos_projection.host_owner_decision_record_formal_record_queue_review_outcome_lanes.{item['lane_id']}.decision_record_created",
|
|
item["decision_record_created"],
|
|
)
|
|
assert_equal(
|
|
f"iwooos_projection.host_owner_decision_record_formal_record_queue_review_outcome_lanes.{item['lane_id']}.owner_decision_received_count",
|
|
item["owner_decision_received_count"],
|
|
0,
|
|
)
|
|
assert_equal(
|
|
f"iwooos_projection.host_owner_decision_record_formal_record_queue_review_outcome_lanes.{item['lane_id']}.owner_decision_accepted_count",
|
|
item["owner_decision_accepted_count"],
|
|
0,
|
|
)
|
|
assert_false(
|
|
f"iwooos_projection.host_owner_decision_record_formal_record_queue_review_outcome_lanes.{item['lane_id']}.owner_approval_record_created",
|
|
item["owner_approval_record_created"],
|
|
)
|
|
assert_false(
|
|
f"iwooos_projection.host_owner_decision_record_formal_record_queue_review_outcome_lanes.{item['lane_id']}.runtime_gate_opened",
|
|
item["runtime_gate_opened"],
|
|
)
|
|
assert_false(
|
|
f"iwooos_projection.host_owner_decision_record_formal_record_queue_review_outcome_lanes.{item['lane_id']}.raw_payload_allowed",
|
|
item["raw_payload_allowed"],
|
|
)
|
|
assert_false(
|
|
f"iwooos_projection.host_owner_decision_record_formal_record_queue_review_outcome_lanes.{item['lane_id']}.secret_value_collection_allowed",
|
|
item["secret_value_collection_allowed"],
|
|
)
|
|
assert_false(
|
|
f"iwooos_projection.host_owner_decision_record_formal_record_queue_review_outcome_lanes.{item['lane_id']}.runtime_execution_authorized",
|
|
item["runtime_execution_authorized"],
|
|
)
|
|
assert_false(
|
|
f"iwooos_projection.host_owner_decision_record_formal_record_queue_review_outcome_lanes.{item['lane_id']}.action_buttons_allowed",
|
|
item["action_buttons_allowed"],
|
|
)
|
|
assert_true(
|
|
f"iwooos_projection.host_owner_decision_record_formal_record_queue_review_outcome_lanes.{item['lane_id']}.not_authorization",
|
|
item["not_authorization"],
|
|
)
|
|
iwooos_host_owner_decision_record_human_handoff_readiness_packets = iwooos_projection[
|
|
"host_owner_decision_record_human_handoff_readiness_packets"
|
|
]
|
|
assert_equal(
|
|
"iwooos_projection.host_owner_decision_record_human_handoff_readiness_packets.ids",
|
|
[item["packet_id"] for item in iwooos_host_owner_decision_record_human_handoff_readiness_packets],
|
|
expected_iwooos_host_owner_decision_record_human_handoff_readiness_packet_ids,
|
|
)
|
|
assert_equal(
|
|
"iwooos_projection.host_owner_decision_record_human_handoff_readiness_packets.display_order",
|
|
[item["display_order"] for item in iwooos_host_owner_decision_record_human_handoff_readiness_packets],
|
|
list(range(1, len(expected_iwooos_host_owner_decision_record_human_handoff_readiness_packet_ids) + 1)),
|
|
)
|
|
expected_iwooos_host_owner_decision_record_human_handoff_readiness_fields = [
|
|
"record_identity_and_trace",
|
|
"human_record_owner_contact_boundary",
|
|
"decision_summary_and_no_execution_statement",
|
|
"approved_scope_and_expiry_window",
|
|
"observe_only_and_future_scan_limits",
|
|
"metadata_only_credential_boundary",
|
|
"maintenance_constraints_and_rollback_owner",
|
|
"independent_runtime_gate_and_no_action_buttons",
|
|
]
|
|
assert_equal(
|
|
"iwooos_projection.host_owner_decision_record_human_handoff_readiness_packets.readiness_fields",
|
|
[item["readiness_field"] for item in iwooos_host_owner_decision_record_human_handoff_readiness_packets],
|
|
expected_iwooos_host_owner_decision_record_human_handoff_readiness_fields,
|
|
)
|
|
for item in iwooos_host_owner_decision_record_human_handoff_readiness_packets:
|
|
assert_equal(
|
|
f"iwooos_projection.host_owner_decision_record_human_handoff_readiness_packets.{item['packet_id']}.display_mode",
|
|
item["display_mode"],
|
|
"owner_decision_record_human_handoff_readiness_only",
|
|
)
|
|
assert_equal(
|
|
f"iwooos_projection.host_owner_decision_record_human_handoff_readiness_packets.{item['packet_id']}.source_outcome_lane_id",
|
|
item["source_outcome_lane_id"],
|
|
"host_decision_record_formal_record_queue_review_ready_for_human_record_owner_handoff_outcome_lane",
|
|
)
|
|
assert_equal(
|
|
f"iwooos_projection.host_owner_decision_record_human_handoff_readiness_packets.{item['packet_id']}.human_record_owner_handoff_started_count",
|
|
item["human_record_owner_handoff_started_count"],
|
|
0,
|
|
)
|
|
assert_equal(
|
|
f"iwooos_projection.host_owner_decision_record_human_handoff_readiness_packets.{item['packet_id']}.human_record_owner_handoff_ready_count",
|
|
item["human_record_owner_handoff_ready_count"],
|
|
0,
|
|
)
|
|
assert_equal(
|
|
f"iwooos_projection.host_owner_decision_record_human_handoff_readiness_packets.{item['packet_id']}.formal_record_queue_review_passed_count",
|
|
item["formal_record_queue_review_passed_count"],
|
|
0,
|
|
)
|
|
assert_equal(
|
|
f"iwooos_projection.host_owner_decision_record_human_handoff_readiness_packets.{item['packet_id']}.formal_record_queue_enqueued_count",
|
|
item["formal_record_queue_enqueued_count"],
|
|
0,
|
|
)
|
|
assert_false(
|
|
f"iwooos_projection.host_owner_decision_record_human_handoff_readiness_packets.{item['packet_id']}.decision_record_created",
|
|
item["decision_record_created"],
|
|
)
|
|
assert_equal(
|
|
f"iwooos_projection.host_owner_decision_record_human_handoff_readiness_packets.{item['packet_id']}.owner_decision_received_count",
|
|
item["owner_decision_received_count"],
|
|
0,
|
|
)
|
|
assert_equal(
|
|
f"iwooos_projection.host_owner_decision_record_human_handoff_readiness_packets.{item['packet_id']}.owner_decision_accepted_count",
|
|
item["owner_decision_accepted_count"],
|
|
0,
|
|
)
|
|
assert_false(
|
|
f"iwooos_projection.host_owner_decision_record_human_handoff_readiness_packets.{item['packet_id']}.owner_approval_record_created",
|
|
item["owner_approval_record_created"],
|
|
)
|
|
assert_false(
|
|
f"iwooos_projection.host_owner_decision_record_human_handoff_readiness_packets.{item['packet_id']}.runtime_gate_opened",
|
|
item["runtime_gate_opened"],
|
|
)
|
|
assert_false(
|
|
f"iwooos_projection.host_owner_decision_record_human_handoff_readiness_packets.{item['packet_id']}.raw_payload_allowed",
|
|
item["raw_payload_allowed"],
|
|
)
|
|
assert_false(
|
|
f"iwooos_projection.host_owner_decision_record_human_handoff_readiness_packets.{item['packet_id']}.secret_value_collection_allowed",
|
|
item["secret_value_collection_allowed"],
|
|
)
|
|
assert_false(
|
|
f"iwooos_projection.host_owner_decision_record_human_handoff_readiness_packets.{item['packet_id']}.runtime_execution_authorized",
|
|
item["runtime_execution_authorized"],
|
|
)
|
|
assert_false(
|
|
f"iwooos_projection.host_owner_decision_record_human_handoff_readiness_packets.{item['packet_id']}.action_buttons_allowed",
|
|
item["action_buttons_allowed"],
|
|
)
|
|
assert_true(
|
|
f"iwooos_projection.host_owner_decision_record_human_handoff_readiness_packets.{item['packet_id']}.not_authorization",
|
|
item["not_authorization"],
|
|
)
|
|
iwooos_host_owner_decision_record_human_handoff_readiness_review_checklist_items = iwooos_projection[
|
|
"host_owner_decision_record_human_handoff_readiness_review_checklist_items"
|
|
]
|
|
assert_equal(
|
|
"iwooos_projection.host_owner_decision_record_human_handoff_readiness_review_checklist_items.ids",
|
|
[item["item_id"] for item in iwooos_host_owner_decision_record_human_handoff_readiness_review_checklist_items],
|
|
expected_iwooos_host_owner_decision_record_human_handoff_readiness_review_checklist_item_ids,
|
|
)
|
|
assert_equal(
|
|
"iwooos_projection.host_owner_decision_record_human_handoff_readiness_review_checklist_items.display_order",
|
|
[item["display_order"] for item in iwooos_host_owner_decision_record_human_handoff_readiness_review_checklist_items],
|
|
list(
|
|
range(
|
|
1,
|
|
len(expected_iwooos_host_owner_decision_record_human_handoff_readiness_review_checklist_item_ids) + 1,
|
|
)
|
|
),
|
|
)
|
|
expected_iwooos_host_owner_decision_record_human_handoff_readiness_review_conditions = [
|
|
"identity_trace_readable",
|
|
"owner_boundary_readable",
|
|
"decision_summary_readable",
|
|
"scope_expiry_current",
|
|
"scan_limits_not_authorization",
|
|
"credential_boundary_metadata_only",
|
|
"maintenance_rollback_traceable",
|
|
"runtime_gate_separate",
|
|
]
|
|
assert_equal(
|
|
"iwooos_projection.host_owner_decision_record_human_handoff_readiness_review_checklist_items.review_conditions",
|
|
[
|
|
item["review_condition"]
|
|
for item in iwooos_host_owner_decision_record_human_handoff_readiness_review_checklist_items
|
|
],
|
|
expected_iwooos_host_owner_decision_record_human_handoff_readiness_review_conditions,
|
|
)
|
|
for item in iwooos_host_owner_decision_record_human_handoff_readiness_review_checklist_items:
|
|
assert_equal(
|
|
f"iwooos_projection.host_owner_decision_record_human_handoff_readiness_review_checklist_items.{item['item_id']}.display_mode",
|
|
item["display_mode"],
|
|
"owner_decision_record_human_handoff_readiness_review_checklist_only",
|
|
)
|
|
assert_equal(
|
|
f"iwooos_projection.host_owner_decision_record_human_handoff_readiness_review_checklist_items.{item['item_id']}.human_record_owner_handoff_review_passed_count",
|
|
item["human_record_owner_handoff_review_passed_count"],
|
|
0,
|
|
)
|
|
assert_equal(
|
|
f"iwooos_projection.host_owner_decision_record_human_handoff_readiness_review_checklist_items.{item['item_id']}.human_record_owner_handoff_started_count",
|
|
item["human_record_owner_handoff_started_count"],
|
|
0,
|
|
)
|
|
assert_equal(
|
|
f"iwooos_projection.host_owner_decision_record_human_handoff_readiness_review_checklist_items.{item['item_id']}.human_record_owner_handoff_ready_count",
|
|
item["human_record_owner_handoff_ready_count"],
|
|
0,
|
|
)
|
|
assert_equal(
|
|
f"iwooos_projection.host_owner_decision_record_human_handoff_readiness_review_checklist_items.{item['item_id']}.formal_record_queue_review_passed_count",
|
|
item["formal_record_queue_review_passed_count"],
|
|
0,
|
|
)
|
|
assert_equal(
|
|
f"iwooos_projection.host_owner_decision_record_human_handoff_readiness_review_checklist_items.{item['item_id']}.formal_record_queue_enqueued_count",
|
|
item["formal_record_queue_enqueued_count"],
|
|
0,
|
|
)
|
|
assert_false(
|
|
f"iwooos_projection.host_owner_decision_record_human_handoff_readiness_review_checklist_items.{item['item_id']}.decision_record_created",
|
|
item["decision_record_created"],
|
|
)
|
|
assert_equal(
|
|
f"iwooos_projection.host_owner_decision_record_human_handoff_readiness_review_checklist_items.{item['item_id']}.owner_decision_received_count",
|
|
item["owner_decision_received_count"],
|
|
0,
|
|
)
|
|
assert_equal(
|
|
f"iwooos_projection.host_owner_decision_record_human_handoff_readiness_review_checklist_items.{item['item_id']}.owner_decision_accepted_count",
|
|
item["owner_decision_accepted_count"],
|
|
0,
|
|
)
|
|
assert_false(
|
|
f"iwooos_projection.host_owner_decision_record_human_handoff_readiness_review_checklist_items.{item['item_id']}.owner_approval_record_created",
|
|
item["owner_approval_record_created"],
|
|
)
|
|
assert_false(
|
|
f"iwooos_projection.host_owner_decision_record_human_handoff_readiness_review_checklist_items.{item['item_id']}.runtime_gate_opened",
|
|
item["runtime_gate_opened"],
|
|
)
|
|
assert_false(
|
|
f"iwooos_projection.host_owner_decision_record_human_handoff_readiness_review_checklist_items.{item['item_id']}.raw_payload_allowed",
|
|
item["raw_payload_allowed"],
|
|
)
|
|
assert_false(
|
|
f"iwooos_projection.host_owner_decision_record_human_handoff_readiness_review_checklist_items.{item['item_id']}.secret_value_collection_allowed",
|
|
item["secret_value_collection_allowed"],
|
|
)
|
|
assert_false(
|
|
f"iwooos_projection.host_owner_decision_record_human_handoff_readiness_review_checklist_items.{item['item_id']}.runtime_execution_authorized",
|
|
item["runtime_execution_authorized"],
|
|
)
|
|
assert_false(
|
|
f"iwooos_projection.host_owner_decision_record_human_handoff_readiness_review_checklist_items.{item['item_id']}.action_buttons_allowed",
|
|
item["action_buttons_allowed"],
|
|
)
|
|
assert_true(
|
|
f"iwooos_projection.host_owner_decision_record_human_handoff_readiness_review_checklist_items.{item['item_id']}.not_authorization",
|
|
item["not_authorization"],
|
|
)
|
|
iwooos_host_owner_decision_record_human_handoff_readiness_review_outcome_lanes = iwooos_projection[
|
|
"host_owner_decision_record_human_handoff_readiness_review_outcome_lanes"
|
|
]
|
|
assert_equal(
|
|
"iwooos_projection.host_owner_decision_record_human_handoff_readiness_review_outcome_lanes.ids",
|
|
[item["lane_id"] for item in iwooos_host_owner_decision_record_human_handoff_readiness_review_outcome_lanes],
|
|
expected_iwooos_host_owner_decision_record_human_handoff_readiness_review_outcome_lane_ids,
|
|
)
|
|
assert_equal(
|
|
"iwooos_projection.host_owner_decision_record_human_handoff_readiness_review_outcome_lanes.display_order",
|
|
[item["display_order"] for item in iwooos_host_owner_decision_record_human_handoff_readiness_review_outcome_lanes],
|
|
list(
|
|
range(
|
|
1,
|
|
len(expected_iwooos_host_owner_decision_record_human_handoff_readiness_review_outcome_lane_ids) + 1,
|
|
)
|
|
),
|
|
)
|
|
expected_iwooos_host_owner_decision_record_human_handoff_readiness_review_outcome_states = [
|
|
"ready_for_human_record_owner_review_candidate",
|
|
"identity_trace_needs_refresh",
|
|
"owner_boundary_needs_clarification",
|
|
"decision_summary_needs_clarification",
|
|
"scope_expiry_needs_refresh",
|
|
"scan_limits_remain_ambiguous",
|
|
"credential_boundary_failed",
|
|
"maintenance_rollback_incomplete",
|
|
"runtime_gate_still_required",
|
|
]
|
|
assert_equal(
|
|
"iwooos_projection.host_owner_decision_record_human_handoff_readiness_review_outcome_lanes.outcome_states",
|
|
[item["outcome_state"] for item in iwooos_host_owner_decision_record_human_handoff_readiness_review_outcome_lanes],
|
|
expected_iwooos_host_owner_decision_record_human_handoff_readiness_review_outcome_states,
|
|
)
|
|
for item in iwooos_host_owner_decision_record_human_handoff_readiness_review_outcome_lanes:
|
|
assert_equal(
|
|
f"iwooos_projection.host_owner_decision_record_human_handoff_readiness_review_outcome_lanes.{item['lane_id']}.display_mode",
|
|
item["display_mode"],
|
|
"owner_decision_record_human_handoff_readiness_review_outcome_only",
|
|
)
|
|
assert_equal(
|
|
f"iwooos_projection.host_owner_decision_record_human_handoff_readiness_review_outcome_lanes.{item['lane_id']}.human_record_owner_handoff_review_passed_count",
|
|
item["human_record_owner_handoff_review_passed_count"],
|
|
0,
|
|
)
|
|
assert_equal(
|
|
f"iwooos_projection.host_owner_decision_record_human_handoff_readiness_review_outcome_lanes.{item['lane_id']}.human_record_owner_handoff_started_count",
|
|
item["human_record_owner_handoff_started_count"],
|
|
0,
|
|
)
|
|
assert_equal(
|
|
f"iwooos_projection.host_owner_decision_record_human_handoff_readiness_review_outcome_lanes.{item['lane_id']}.human_record_owner_handoff_ready_count",
|
|
item["human_record_owner_handoff_ready_count"],
|
|
0,
|
|
)
|
|
assert_equal(
|
|
f"iwooos_projection.host_owner_decision_record_human_handoff_readiness_review_outcome_lanes.{item['lane_id']}.formal_record_queue_review_passed_count",
|
|
item["formal_record_queue_review_passed_count"],
|
|
0,
|
|
)
|
|
assert_equal(
|
|
f"iwooos_projection.host_owner_decision_record_human_handoff_readiness_review_outcome_lanes.{item['lane_id']}.formal_record_queue_enqueued_count",
|
|
item["formal_record_queue_enqueued_count"],
|
|
0,
|
|
)
|
|
assert_false(
|
|
f"iwooos_projection.host_owner_decision_record_human_handoff_readiness_review_outcome_lanes.{item['lane_id']}.decision_record_created",
|
|
item["decision_record_created"],
|
|
)
|
|
assert_equal(
|
|
f"iwooos_projection.host_owner_decision_record_human_handoff_readiness_review_outcome_lanes.{item['lane_id']}.owner_decision_received_count",
|
|
item["owner_decision_received_count"],
|
|
0,
|
|
)
|
|
assert_equal(
|
|
f"iwooos_projection.host_owner_decision_record_human_handoff_readiness_review_outcome_lanes.{item['lane_id']}.owner_decision_accepted_count",
|
|
item["owner_decision_accepted_count"],
|
|
0,
|
|
)
|
|
assert_false(
|
|
f"iwooos_projection.host_owner_decision_record_human_handoff_readiness_review_outcome_lanes.{item['lane_id']}.owner_approval_record_created",
|
|
item["owner_approval_record_created"],
|
|
)
|
|
assert_false(
|
|
f"iwooos_projection.host_owner_decision_record_human_handoff_readiness_review_outcome_lanes.{item['lane_id']}.runtime_gate_opened",
|
|
item["runtime_gate_opened"],
|
|
)
|
|
assert_false(
|
|
f"iwooos_projection.host_owner_decision_record_human_handoff_readiness_review_outcome_lanes.{item['lane_id']}.raw_payload_allowed",
|
|
item["raw_payload_allowed"],
|
|
)
|
|
assert_false(
|
|
f"iwooos_projection.host_owner_decision_record_human_handoff_readiness_review_outcome_lanes.{item['lane_id']}.secret_value_collection_allowed",
|
|
item["secret_value_collection_allowed"],
|
|
)
|
|
assert_false(
|
|
f"iwooos_projection.host_owner_decision_record_human_handoff_readiness_review_outcome_lanes.{item['lane_id']}.runtime_execution_authorized",
|
|
item["runtime_execution_authorized"],
|
|
)
|
|
assert_false(
|
|
f"iwooos_projection.host_owner_decision_record_human_handoff_readiness_review_outcome_lanes.{item['lane_id']}.action_buttons_allowed",
|
|
item["action_buttons_allowed"],
|
|
)
|
|
assert_true(
|
|
f"iwooos_projection.host_owner_decision_record_human_handoff_readiness_review_outcome_lanes.{item['lane_id']}.not_authorization",
|
|
item["not_authorization"],
|
|
)
|
|
iwooos_host_owner_decision_record_human_record_owner_review_candidate_packets = iwooos_projection[
|
|
"host_owner_decision_record_human_record_owner_review_candidate_packets"
|
|
]
|
|
assert_equal(
|
|
"iwooos_projection.host_owner_decision_record_human_record_owner_review_candidate_packets.ids",
|
|
[item["packet_id"] for item in iwooos_host_owner_decision_record_human_record_owner_review_candidate_packets],
|
|
expected_iwooos_host_owner_decision_record_human_record_owner_review_candidate_packet_ids,
|
|
)
|
|
assert_equal(
|
|
"iwooos_projection.host_owner_decision_record_human_record_owner_review_candidate_packets.display_order",
|
|
[item["display_order"] for item in iwooos_host_owner_decision_record_human_record_owner_review_candidate_packets],
|
|
list(
|
|
range(
|
|
1,
|
|
len(expected_iwooos_host_owner_decision_record_human_record_owner_review_candidate_packet_ids) + 1,
|
|
)
|
|
),
|
|
)
|
|
expected_iwooos_host_owner_decision_record_human_record_owner_review_candidate_fields = [
|
|
"candidate_identity_and_trace",
|
|
"human_record_owner_boundary",
|
|
"decision_summary_and_no_execution_statement",
|
|
"approved_scope_and_expiry_window",
|
|
"observe_only_and_future_scan_limits",
|
|
"metadata_only_credential_boundary",
|
|
"maintenance_constraints_and_rollback_owner",
|
|
"validation_evidence_and_independent_runtime_gate",
|
|
"no_execution_no_approval_attestation",
|
|
]
|
|
assert_equal(
|
|
"iwooos_projection.host_owner_decision_record_human_record_owner_review_candidate_packets.review_candidate_fields",
|
|
[
|
|
item["review_candidate_field"]
|
|
for item in iwooos_host_owner_decision_record_human_record_owner_review_candidate_packets
|
|
],
|
|
expected_iwooos_host_owner_decision_record_human_record_owner_review_candidate_fields,
|
|
)
|
|
for item in iwooos_host_owner_decision_record_human_record_owner_review_candidate_packets:
|
|
assert_equal(
|
|
f"iwooos_projection.host_owner_decision_record_human_record_owner_review_candidate_packets.{item['packet_id']}.source_outcome_lane_id",
|
|
item["source_outcome_lane_id"],
|
|
"host_decision_record_handoff_readiness_review_ready_for_human_record_owner_review_candidate_outcome_lane",
|
|
)
|
|
assert_equal(
|
|
f"iwooos_projection.host_owner_decision_record_human_record_owner_review_candidate_packets.{item['packet_id']}.display_mode",
|
|
item["display_mode"],
|
|
"owner_decision_record_human_record_owner_review_candidate_packet_only",
|
|
)
|
|
assert_equal(
|
|
f"iwooos_projection.host_owner_decision_record_human_record_owner_review_candidate_packets.{item['packet_id']}.human_record_owner_review_started_count",
|
|
item["human_record_owner_review_started_count"],
|
|
0,
|
|
)
|
|
assert_equal(
|
|
f"iwooos_projection.host_owner_decision_record_human_record_owner_review_candidate_packets.{item['packet_id']}.human_record_owner_review_ready_count",
|
|
item["human_record_owner_review_ready_count"],
|
|
0,
|
|
)
|
|
assert_equal(
|
|
f"iwooos_projection.host_owner_decision_record_human_record_owner_review_candidate_packets.{item['packet_id']}.human_record_owner_handoff_review_passed_count",
|
|
item["human_record_owner_handoff_review_passed_count"],
|
|
0,
|
|
)
|
|
assert_equal(
|
|
f"iwooos_projection.host_owner_decision_record_human_record_owner_review_candidate_packets.{item['packet_id']}.human_record_owner_handoff_started_count",
|
|
item["human_record_owner_handoff_started_count"],
|
|
0,
|
|
)
|
|
assert_equal(
|
|
f"iwooos_projection.host_owner_decision_record_human_record_owner_review_candidate_packets.{item['packet_id']}.human_record_owner_handoff_ready_count",
|
|
item["human_record_owner_handoff_ready_count"],
|
|
0,
|
|
)
|
|
assert_equal(
|
|
f"iwooos_projection.host_owner_decision_record_human_record_owner_review_candidate_packets.{item['packet_id']}.formal_record_queue_review_passed_count",
|
|
item["formal_record_queue_review_passed_count"],
|
|
0,
|
|
)
|
|
assert_equal(
|
|
f"iwooos_projection.host_owner_decision_record_human_record_owner_review_candidate_packets.{item['packet_id']}.formal_record_queue_enqueued_count",
|
|
item["formal_record_queue_enqueued_count"],
|
|
0,
|
|
)
|
|
assert_false(
|
|
f"iwooos_projection.host_owner_decision_record_human_record_owner_review_candidate_packets.{item['packet_id']}.decision_record_created",
|
|
item["decision_record_created"],
|
|
)
|
|
assert_equal(
|
|
f"iwooos_projection.host_owner_decision_record_human_record_owner_review_candidate_packets.{item['packet_id']}.owner_decision_received_count",
|
|
item["owner_decision_received_count"],
|
|
0,
|
|
)
|
|
assert_equal(
|
|
f"iwooos_projection.host_owner_decision_record_human_record_owner_review_candidate_packets.{item['packet_id']}.owner_decision_accepted_count",
|
|
item["owner_decision_accepted_count"],
|
|
0,
|
|
)
|
|
assert_false(
|
|
f"iwooos_projection.host_owner_decision_record_human_record_owner_review_candidate_packets.{item['packet_id']}.owner_approval_record_created",
|
|
item["owner_approval_record_created"],
|
|
)
|
|
assert_false(
|
|
f"iwooos_projection.host_owner_decision_record_human_record_owner_review_candidate_packets.{item['packet_id']}.runtime_gate_opened",
|
|
item["runtime_gate_opened"],
|
|
)
|
|
assert_false(
|
|
f"iwooos_projection.host_owner_decision_record_human_record_owner_review_candidate_packets.{item['packet_id']}.raw_payload_allowed",
|
|
item["raw_payload_allowed"],
|
|
)
|
|
assert_false(
|
|
f"iwooos_projection.host_owner_decision_record_human_record_owner_review_candidate_packets.{item['packet_id']}.secret_value_collection_allowed",
|
|
item["secret_value_collection_allowed"],
|
|
)
|
|
assert_false(
|
|
f"iwooos_projection.host_owner_decision_record_human_record_owner_review_candidate_packets.{item['packet_id']}.runtime_execution_authorized",
|
|
item["runtime_execution_authorized"],
|
|
)
|
|
assert_false(
|
|
f"iwooos_projection.host_owner_decision_record_human_record_owner_review_candidate_packets.{item['packet_id']}.action_buttons_allowed",
|
|
item["action_buttons_allowed"],
|
|
)
|
|
assert_true(
|
|
f"iwooos_projection.host_owner_decision_record_human_record_owner_review_candidate_packets.{item['packet_id']}.not_authorization",
|
|
item["not_authorization"],
|
|
)
|
|
iwooos_host_owner_decision_record_human_record_owner_review_candidate_checklist_items = iwooos_projection[
|
|
"host_owner_decision_record_human_record_owner_review_candidate_checklist_items"
|
|
]
|
|
assert_equal(
|
|
"iwooos_projection.host_owner_decision_record_human_record_owner_review_candidate_checklist_items.ids",
|
|
[
|
|
item["item_id"]
|
|
for item in iwooos_host_owner_decision_record_human_record_owner_review_candidate_checklist_items
|
|
],
|
|
expected_iwooos_host_owner_decision_record_human_record_owner_review_candidate_checklist_item_ids,
|
|
)
|
|
assert_equal(
|
|
"iwooos_projection.host_owner_decision_record_human_record_owner_review_candidate_checklist_items.display_order",
|
|
[
|
|
item["display_order"]
|
|
for item in iwooos_host_owner_decision_record_human_record_owner_review_candidate_checklist_items
|
|
],
|
|
list(
|
|
range(
|
|
1,
|
|
len(expected_iwooos_host_owner_decision_record_human_record_owner_review_candidate_checklist_item_ids)
|
|
+ 1,
|
|
)
|
|
),
|
|
)
|
|
expected_iwooos_host_owner_decision_record_human_record_owner_review_candidate_review_conditions = [
|
|
"candidate_identity_traceable",
|
|
"candidate_owner_boundary_readable",
|
|
"candidate_decision_summary_readable",
|
|
"candidate_scope_expiry_current",
|
|
"candidate_scan_limits_not_authorization",
|
|
"candidate_credential_boundary_metadata_only",
|
|
"candidate_maintenance_rollback_traceable",
|
|
"candidate_validation_runtime_gate_separate",
|
|
"candidate_no_execution_attestation_present",
|
|
]
|
|
assert_equal(
|
|
"iwooos_projection.host_owner_decision_record_human_record_owner_review_candidate_checklist_items.review_conditions",
|
|
[
|
|
item["review_condition"]
|
|
for item in iwooos_host_owner_decision_record_human_record_owner_review_candidate_checklist_items
|
|
],
|
|
expected_iwooos_host_owner_decision_record_human_record_owner_review_candidate_review_conditions,
|
|
)
|
|
for item in iwooos_host_owner_decision_record_human_record_owner_review_candidate_checklist_items:
|
|
assert_equal(
|
|
f"iwooos_projection.host_owner_decision_record_human_record_owner_review_candidate_checklist_items.{item['item_id']}.display_mode",
|
|
item["display_mode"],
|
|
"owner_decision_record_human_record_owner_review_candidate_checklist_only",
|
|
)
|
|
assert_equal(
|
|
f"iwooos_projection.host_owner_decision_record_human_record_owner_review_candidate_checklist_items.{item['item_id']}.human_record_owner_review_check_passed_count",
|
|
item["human_record_owner_review_check_passed_count"],
|
|
0,
|
|
)
|
|
assert_equal(
|
|
f"iwooos_projection.host_owner_decision_record_human_record_owner_review_candidate_checklist_items.{item['item_id']}.human_record_owner_review_started_count",
|
|
item["human_record_owner_review_started_count"],
|
|
0,
|
|
)
|
|
assert_equal(
|
|
f"iwooos_projection.host_owner_decision_record_human_record_owner_review_candidate_checklist_items.{item['item_id']}.human_record_owner_review_ready_count",
|
|
item["human_record_owner_review_ready_count"],
|
|
0,
|
|
)
|
|
assert_equal(
|
|
f"iwooos_projection.host_owner_decision_record_human_record_owner_review_candidate_checklist_items.{item['item_id']}.human_record_owner_handoff_review_passed_count",
|
|
item["human_record_owner_handoff_review_passed_count"],
|
|
0,
|
|
)
|
|
assert_equal(
|
|
f"iwooos_projection.host_owner_decision_record_human_record_owner_review_candidate_checklist_items.{item['item_id']}.human_record_owner_handoff_started_count",
|
|
item["human_record_owner_handoff_started_count"],
|
|
0,
|
|
)
|
|
assert_equal(
|
|
f"iwooos_projection.host_owner_decision_record_human_record_owner_review_candidate_checklist_items.{item['item_id']}.human_record_owner_handoff_ready_count",
|
|
item["human_record_owner_handoff_ready_count"],
|
|
0,
|
|
)
|
|
assert_equal(
|
|
f"iwooos_projection.host_owner_decision_record_human_record_owner_review_candidate_checklist_items.{item['item_id']}.formal_record_queue_review_passed_count",
|
|
item["formal_record_queue_review_passed_count"],
|
|
0,
|
|
)
|
|
assert_equal(
|
|
f"iwooos_projection.host_owner_decision_record_human_record_owner_review_candidate_checklist_items.{item['item_id']}.formal_record_queue_enqueued_count",
|
|
item["formal_record_queue_enqueued_count"],
|
|
0,
|
|
)
|
|
assert_false(
|
|
f"iwooos_projection.host_owner_decision_record_human_record_owner_review_candidate_checklist_items.{item['item_id']}.decision_record_created",
|
|
item["decision_record_created"],
|
|
)
|
|
assert_equal(
|
|
f"iwooos_projection.host_owner_decision_record_human_record_owner_review_candidate_checklist_items.{item['item_id']}.owner_decision_received_count",
|
|
item["owner_decision_received_count"],
|
|
0,
|
|
)
|
|
assert_equal(
|
|
f"iwooos_projection.host_owner_decision_record_human_record_owner_review_candidate_checklist_items.{item['item_id']}.owner_decision_accepted_count",
|
|
item["owner_decision_accepted_count"],
|
|
0,
|
|
)
|
|
assert_false(
|
|
f"iwooos_projection.host_owner_decision_record_human_record_owner_review_candidate_checklist_items.{item['item_id']}.owner_approval_record_created",
|
|
item["owner_approval_record_created"],
|
|
)
|
|
assert_false(
|
|
f"iwooos_projection.host_owner_decision_record_human_record_owner_review_candidate_checklist_items.{item['item_id']}.runtime_gate_opened",
|
|
item["runtime_gate_opened"],
|
|
)
|
|
assert_false(
|
|
f"iwooos_projection.host_owner_decision_record_human_record_owner_review_candidate_checklist_items.{item['item_id']}.raw_payload_allowed",
|
|
item["raw_payload_allowed"],
|
|
)
|
|
assert_false(
|
|
f"iwooos_projection.host_owner_decision_record_human_record_owner_review_candidate_checklist_items.{item['item_id']}.secret_value_collection_allowed",
|
|
item["secret_value_collection_allowed"],
|
|
)
|
|
assert_false(
|
|
f"iwooos_projection.host_owner_decision_record_human_record_owner_review_candidate_checklist_items.{item['item_id']}.runtime_execution_authorized",
|
|
item["runtime_execution_authorized"],
|
|
)
|
|
assert_false(
|
|
f"iwooos_projection.host_owner_decision_record_human_record_owner_review_candidate_checklist_items.{item['item_id']}.action_buttons_allowed",
|
|
item["action_buttons_allowed"],
|
|
)
|
|
assert_true(
|
|
f"iwooos_projection.host_owner_decision_record_human_record_owner_review_candidate_checklist_items.{item['item_id']}.not_authorization",
|
|
item["not_authorization"],
|
|
)
|
|
iwooos_host_owner_decision_record_human_record_owner_review_candidate_outcome_lanes = iwooos_projection[
|
|
"host_owner_decision_record_human_record_owner_review_candidate_outcome_lanes"
|
|
]
|
|
assert_equal(
|
|
"iwooos_projection.host_owner_decision_record_human_record_owner_review_candidate_outcome_lanes.ids",
|
|
[
|
|
item["lane_id"]
|
|
for item in iwooos_host_owner_decision_record_human_record_owner_review_candidate_outcome_lanes
|
|
],
|
|
expected_iwooos_host_owner_decision_record_human_record_owner_review_candidate_outcome_lane_ids,
|
|
)
|
|
assert_equal(
|
|
"iwooos_projection.host_owner_decision_record_human_record_owner_review_candidate_outcome_lanes.display_order",
|
|
[
|
|
item["display_order"]
|
|
for item in iwooos_host_owner_decision_record_human_record_owner_review_candidate_outcome_lanes
|
|
],
|
|
list(
|
|
range(
|
|
1,
|
|
len(expected_iwooos_host_owner_decision_record_human_record_owner_review_candidate_outcome_lane_ids)
|
|
+ 1,
|
|
)
|
|
),
|
|
)
|
|
expected_iwooos_host_owner_decision_record_human_record_owner_review_candidate_outcome_states = [
|
|
"ready_for_human_record_owner_review_preparation_candidate",
|
|
"identity_trace_needs_refresh",
|
|
"owner_boundary_needs_clarification",
|
|
"decision_summary_needs_clarification",
|
|
"scope_expiry_needs_refresh",
|
|
"scan_limits_remain_ambiguous",
|
|
"credential_boundary_failed",
|
|
"maintenance_rollback_incomplete",
|
|
"runtime_gate_still_required",
|
|
]
|
|
assert_equal(
|
|
"iwooos_projection.host_owner_decision_record_human_record_owner_review_candidate_outcome_lanes.outcome_states",
|
|
[
|
|
item["outcome_state"]
|
|
for item in iwooos_host_owner_decision_record_human_record_owner_review_candidate_outcome_lanes
|
|
],
|
|
expected_iwooos_host_owner_decision_record_human_record_owner_review_candidate_outcome_states,
|
|
)
|
|
for item in iwooos_host_owner_decision_record_human_record_owner_review_candidate_outcome_lanes:
|
|
assert_equal(
|
|
f"iwooos_projection.host_owner_decision_record_human_record_owner_review_candidate_outcome_lanes.{item['lane_id']}.display_mode",
|
|
item["display_mode"],
|
|
"owner_decision_record_human_record_owner_review_candidate_outcome_only",
|
|
)
|
|
assert_equal(
|
|
f"iwooos_projection.host_owner_decision_record_human_record_owner_review_candidate_outcome_lanes.{item['lane_id']}.human_record_owner_review_check_passed_count",
|
|
item["human_record_owner_review_check_passed_count"],
|
|
0,
|
|
)
|
|
assert_equal(
|
|
f"iwooos_projection.host_owner_decision_record_human_record_owner_review_candidate_outcome_lanes.{item['lane_id']}.human_record_owner_review_started_count",
|
|
item["human_record_owner_review_started_count"],
|
|
0,
|
|
)
|
|
assert_equal(
|
|
f"iwooos_projection.host_owner_decision_record_human_record_owner_review_candidate_outcome_lanes.{item['lane_id']}.human_record_owner_review_ready_count",
|
|
item["human_record_owner_review_ready_count"],
|
|
0,
|
|
)
|
|
assert_equal(
|
|
f"iwooos_projection.host_owner_decision_record_human_record_owner_review_candidate_outcome_lanes.{item['lane_id']}.human_record_owner_handoff_review_passed_count",
|
|
item["human_record_owner_handoff_review_passed_count"],
|
|
0,
|
|
)
|
|
assert_equal(
|
|
f"iwooos_projection.host_owner_decision_record_human_record_owner_review_candidate_outcome_lanes.{item['lane_id']}.human_record_owner_handoff_started_count",
|
|
item["human_record_owner_handoff_started_count"],
|
|
0,
|
|
)
|
|
assert_equal(
|
|
f"iwooos_projection.host_owner_decision_record_human_record_owner_review_candidate_outcome_lanes.{item['lane_id']}.human_record_owner_handoff_ready_count",
|
|
item["human_record_owner_handoff_ready_count"],
|
|
0,
|
|
)
|
|
assert_equal(
|
|
f"iwooos_projection.host_owner_decision_record_human_record_owner_review_candidate_outcome_lanes.{item['lane_id']}.formal_record_queue_review_passed_count",
|
|
item["formal_record_queue_review_passed_count"],
|
|
0,
|
|
)
|
|
assert_equal(
|
|
f"iwooos_projection.host_owner_decision_record_human_record_owner_review_candidate_outcome_lanes.{item['lane_id']}.formal_record_queue_enqueued_count",
|
|
item["formal_record_queue_enqueued_count"],
|
|
0,
|
|
)
|
|
assert_false(
|
|
f"iwooos_projection.host_owner_decision_record_human_record_owner_review_candidate_outcome_lanes.{item['lane_id']}.decision_record_created",
|
|
item["decision_record_created"],
|
|
)
|
|
assert_equal(
|
|
f"iwooos_projection.host_owner_decision_record_human_record_owner_review_candidate_outcome_lanes.{item['lane_id']}.owner_decision_received_count",
|
|
item["owner_decision_received_count"],
|
|
0,
|
|
)
|
|
assert_equal(
|
|
f"iwooos_projection.host_owner_decision_record_human_record_owner_review_candidate_outcome_lanes.{item['lane_id']}.owner_decision_accepted_count",
|
|
item["owner_decision_accepted_count"],
|
|
0,
|
|
)
|
|
assert_false(
|
|
f"iwooos_projection.host_owner_decision_record_human_record_owner_review_candidate_outcome_lanes.{item['lane_id']}.owner_approval_record_created",
|
|
item["owner_approval_record_created"],
|
|
)
|
|
assert_false(
|
|
f"iwooos_projection.host_owner_decision_record_human_record_owner_review_candidate_outcome_lanes.{item['lane_id']}.runtime_gate_opened",
|
|
item["runtime_gate_opened"],
|
|
)
|
|
assert_false(
|
|
f"iwooos_projection.host_owner_decision_record_human_record_owner_review_candidate_outcome_lanes.{item['lane_id']}.raw_payload_allowed",
|
|
item["raw_payload_allowed"],
|
|
)
|
|
assert_false(
|
|
f"iwooos_projection.host_owner_decision_record_human_record_owner_review_candidate_outcome_lanes.{item['lane_id']}.secret_value_collection_allowed",
|
|
item["secret_value_collection_allowed"],
|
|
)
|
|
assert_false(
|
|
f"iwooos_projection.host_owner_decision_record_human_record_owner_review_candidate_outcome_lanes.{item['lane_id']}.runtime_execution_authorized",
|
|
item["runtime_execution_authorized"],
|
|
)
|
|
assert_false(
|
|
f"iwooos_projection.host_owner_decision_record_human_record_owner_review_candidate_outcome_lanes.{item['lane_id']}.action_buttons_allowed",
|
|
item["action_buttons_allowed"],
|
|
)
|
|
assert_true(
|
|
f"iwooos_projection.host_owner_decision_record_human_record_owner_review_candidate_outcome_lanes.{item['lane_id']}.not_authorization",
|
|
item["not_authorization"],
|
|
)
|
|
iwooos_host_owner_decision_record_human_record_owner_review_preparation_packets = iwooos_projection[
|
|
"host_owner_decision_record_human_record_owner_review_preparation_packets"
|
|
]
|
|
assert_equal(
|
|
"iwooos_projection.host_owner_decision_record_human_record_owner_review_preparation_packets.ids",
|
|
[
|
|
item["packet_id"]
|
|
for item in iwooos_host_owner_decision_record_human_record_owner_review_preparation_packets
|
|
],
|
|
expected_iwooos_host_owner_decision_record_human_record_owner_review_preparation_packet_ids,
|
|
)
|
|
assert_equal(
|
|
"iwooos_projection.host_owner_decision_record_human_record_owner_review_preparation_packets.display_order",
|
|
[
|
|
item["display_order"]
|
|
for item in iwooos_host_owner_decision_record_human_record_owner_review_preparation_packets
|
|
],
|
|
list(
|
|
range(
|
|
1,
|
|
len(expected_iwooos_host_owner_decision_record_human_record_owner_review_preparation_packet_ids) + 1,
|
|
)
|
|
),
|
|
)
|
|
expected_iwooos_host_owner_decision_record_human_record_owner_review_preparation_fields = [
|
|
"preparation_identity_trace",
|
|
"preparation_owner_boundary",
|
|
"preparation_decision_summary",
|
|
"preparation_scope_expiry",
|
|
"preparation_scan_limits",
|
|
"preparation_credential_boundary",
|
|
"preparation_maintenance_rollback",
|
|
"preparation_validation_runtime_gate",
|
|
"preparation_no_execution_attestation",
|
|
]
|
|
assert_equal(
|
|
"iwooos_projection.host_owner_decision_record_human_record_owner_review_preparation_packets.preparation_fields",
|
|
[
|
|
item["preparation_field"]
|
|
for item in iwooos_host_owner_decision_record_human_record_owner_review_preparation_packets
|
|
],
|
|
expected_iwooos_host_owner_decision_record_human_record_owner_review_preparation_fields,
|
|
)
|
|
for item in iwooos_host_owner_decision_record_human_record_owner_review_preparation_packets:
|
|
assert_equal(
|
|
f"iwooos_projection.host_owner_decision_record_human_record_owner_review_preparation_packets.{item['packet_id']}.source_outcome_lane_id",
|
|
item["source_outcome_lane_id"],
|
|
"host_decision_record_human_record_owner_review_candidate_ready_for_human_record_owner_review_preparation_outcome_lane",
|
|
)
|
|
assert_equal(
|
|
f"iwooos_projection.host_owner_decision_record_human_record_owner_review_preparation_packets.{item['packet_id']}.display_mode",
|
|
item["display_mode"],
|
|
"owner_decision_record_human_record_owner_review_preparation_packet_only",
|
|
)
|
|
assert_equal(
|
|
f"iwooos_projection.host_owner_decision_record_human_record_owner_review_preparation_packets.{item['packet_id']}.human_record_owner_review_prepared_count",
|
|
item["human_record_owner_review_prepared_count"],
|
|
0,
|
|
)
|
|
assert_equal(
|
|
f"iwooos_projection.host_owner_decision_record_human_record_owner_review_preparation_packets.{item['packet_id']}.human_record_owner_review_check_passed_count",
|
|
item["human_record_owner_review_check_passed_count"],
|
|
0,
|
|
)
|
|
assert_equal(
|
|
f"iwooos_projection.host_owner_decision_record_human_record_owner_review_preparation_packets.{item['packet_id']}.human_record_owner_review_started_count",
|
|
item["human_record_owner_review_started_count"],
|
|
0,
|
|
)
|
|
assert_equal(
|
|
f"iwooos_projection.host_owner_decision_record_human_record_owner_review_preparation_packets.{item['packet_id']}.human_record_owner_review_ready_count",
|
|
item["human_record_owner_review_ready_count"],
|
|
0,
|
|
)
|
|
assert_equal(
|
|
f"iwooos_projection.host_owner_decision_record_human_record_owner_review_preparation_packets.{item['packet_id']}.human_record_owner_handoff_review_passed_count",
|
|
item["human_record_owner_handoff_review_passed_count"],
|
|
0,
|
|
)
|
|
assert_equal(
|
|
f"iwooos_projection.host_owner_decision_record_human_record_owner_review_preparation_packets.{item['packet_id']}.human_record_owner_handoff_started_count",
|
|
item["human_record_owner_handoff_started_count"],
|
|
0,
|
|
)
|
|
assert_equal(
|
|
f"iwooos_projection.host_owner_decision_record_human_record_owner_review_preparation_packets.{item['packet_id']}.human_record_owner_handoff_ready_count",
|
|
item["human_record_owner_handoff_ready_count"],
|
|
0,
|
|
)
|
|
assert_equal(
|
|
f"iwooos_projection.host_owner_decision_record_human_record_owner_review_preparation_packets.{item['packet_id']}.formal_record_queue_review_passed_count",
|
|
item["formal_record_queue_review_passed_count"],
|
|
0,
|
|
)
|
|
assert_equal(
|
|
f"iwooos_projection.host_owner_decision_record_human_record_owner_review_preparation_packets.{item['packet_id']}.formal_record_queue_enqueued_count",
|
|
item["formal_record_queue_enqueued_count"],
|
|
0,
|
|
)
|
|
assert_false(
|
|
f"iwooos_projection.host_owner_decision_record_human_record_owner_review_preparation_packets.{item['packet_id']}.decision_record_created",
|
|
item["decision_record_created"],
|
|
)
|
|
assert_equal(
|
|
f"iwooos_projection.host_owner_decision_record_human_record_owner_review_preparation_packets.{item['packet_id']}.owner_decision_received_count",
|
|
item["owner_decision_received_count"],
|
|
0,
|
|
)
|
|
assert_equal(
|
|
f"iwooos_projection.host_owner_decision_record_human_record_owner_review_preparation_packets.{item['packet_id']}.owner_decision_accepted_count",
|
|
item["owner_decision_accepted_count"],
|
|
0,
|
|
)
|
|
assert_false(
|
|
f"iwooos_projection.host_owner_decision_record_human_record_owner_review_preparation_packets.{item['packet_id']}.owner_approval_record_created",
|
|
item["owner_approval_record_created"],
|
|
)
|
|
assert_false(
|
|
f"iwooos_projection.host_owner_decision_record_human_record_owner_review_preparation_packets.{item['packet_id']}.runtime_gate_opened",
|
|
item["runtime_gate_opened"],
|
|
)
|
|
assert_false(
|
|
f"iwooos_projection.host_owner_decision_record_human_record_owner_review_preparation_packets.{item['packet_id']}.raw_payload_allowed",
|
|
item["raw_payload_allowed"],
|
|
)
|
|
assert_false(
|
|
f"iwooos_projection.host_owner_decision_record_human_record_owner_review_preparation_packets.{item['packet_id']}.secret_value_collection_allowed",
|
|
item["secret_value_collection_allowed"],
|
|
)
|
|
assert_false(
|
|
f"iwooos_projection.host_owner_decision_record_human_record_owner_review_preparation_packets.{item['packet_id']}.runtime_execution_authorized",
|
|
item["runtime_execution_authorized"],
|
|
)
|
|
assert_false(
|
|
f"iwooos_projection.host_owner_decision_record_human_record_owner_review_preparation_packets.{item['packet_id']}.action_buttons_allowed",
|
|
item["action_buttons_allowed"],
|
|
)
|
|
assert_true(
|
|
f"iwooos_projection.host_owner_decision_record_human_record_owner_review_preparation_packets.{item['packet_id']}.not_authorization",
|
|
item["not_authorization"],
|
|
)
|
|
iwooos_host_owner_decision_record_human_record_owner_review_preparation_checklist_items = iwooos_projection[
|
|
"host_owner_decision_record_human_record_owner_review_preparation_checklist_items"
|
|
]
|
|
assert_equal(
|
|
"iwooos_projection.host_owner_decision_record_human_record_owner_review_preparation_checklist_items.ids",
|
|
[
|
|
item["item_id"]
|
|
for item in iwooos_host_owner_decision_record_human_record_owner_review_preparation_checklist_items
|
|
],
|
|
expected_iwooos_host_owner_decision_record_human_record_owner_review_preparation_checklist_item_ids,
|
|
)
|
|
assert_equal(
|
|
"iwooos_projection.host_owner_decision_record_human_record_owner_review_preparation_checklist_items.display_order",
|
|
[
|
|
item["display_order"]
|
|
for item in iwooos_host_owner_decision_record_human_record_owner_review_preparation_checklist_items
|
|
],
|
|
list(
|
|
range(
|
|
1,
|
|
len(expected_iwooos_host_owner_decision_record_human_record_owner_review_preparation_checklist_item_ids) + 1,
|
|
)
|
|
),
|
|
)
|
|
expected_iwooos_host_owner_decision_record_human_record_owner_review_preparation_review_conditions = [
|
|
"preparation_identity_trace_readable",
|
|
"preparation_owner_boundary_readable",
|
|
"preparation_decision_summary_readable",
|
|
"preparation_scope_expiry_current",
|
|
"preparation_scan_limits_not_authorization",
|
|
"preparation_credential_boundary_metadata_only",
|
|
"preparation_maintenance_rollback_traceable",
|
|
"preparation_validation_runtime_gate_separate",
|
|
"preparation_no_execution_attestation_present",
|
|
]
|
|
assert_equal(
|
|
"iwooos_projection.host_owner_decision_record_human_record_owner_review_preparation_checklist_items.review_conditions",
|
|
[
|
|
item["review_condition"]
|
|
for item in iwooos_host_owner_decision_record_human_record_owner_review_preparation_checklist_items
|
|
],
|
|
expected_iwooos_host_owner_decision_record_human_record_owner_review_preparation_review_conditions,
|
|
)
|
|
expected_iwooos_host_owner_decision_record_human_record_owner_review_preparation_failure_routes = [
|
|
"refresh_preparation_identity_trace",
|
|
"clarify_preparation_owner_boundary",
|
|
"clarify_preparation_decision_summary",
|
|
"refresh_preparation_scope_expiry",
|
|
"clarify_preparation_scan_limits",
|
|
"quarantine_preparation_credential_boundary",
|
|
"complete_preparation_maintenance_rollback",
|
|
"keep_runtime_gate_separate",
|
|
"keep_no_execution_attestation_visible",
|
|
]
|
|
assert_equal(
|
|
"iwooos_projection.host_owner_decision_record_human_record_owner_review_preparation_checklist_items.failure_routes",
|
|
[
|
|
item["failure_route"]
|
|
for item in iwooos_host_owner_decision_record_human_record_owner_review_preparation_checklist_items
|
|
],
|
|
expected_iwooos_host_owner_decision_record_human_record_owner_review_preparation_failure_routes,
|
|
)
|
|
assert_equal(
|
|
"iwooos_projection.host_owner_decision_record_human_record_owner_review_preparation_checklist_items.source_preparation_packet_ids",
|
|
[
|
|
item["source_preparation_packet_id"]
|
|
for item in iwooos_host_owner_decision_record_human_record_owner_review_preparation_checklist_items
|
|
],
|
|
expected_iwooos_host_owner_decision_record_human_record_owner_review_preparation_packet_ids,
|
|
)
|
|
for item in iwooos_host_owner_decision_record_human_record_owner_review_preparation_checklist_items:
|
|
assert_equal(
|
|
f"iwooos_projection.host_owner_decision_record_human_record_owner_review_preparation_checklist_items.{item['item_id']}.display_mode",
|
|
item["display_mode"],
|
|
"owner_decision_record_human_record_owner_review_preparation_checklist_only",
|
|
)
|
|
assert_equal(
|
|
f"iwooos_projection.host_owner_decision_record_human_record_owner_review_preparation_checklist_items.{item['item_id']}.human_record_owner_review_prepared_count",
|
|
item["human_record_owner_review_prepared_count"],
|
|
0,
|
|
)
|
|
assert_equal(
|
|
f"iwooos_projection.host_owner_decision_record_human_record_owner_review_preparation_checklist_items.{item['item_id']}.human_record_owner_review_check_passed_count",
|
|
item["human_record_owner_review_check_passed_count"],
|
|
0,
|
|
)
|
|
assert_equal(
|
|
f"iwooos_projection.host_owner_decision_record_human_record_owner_review_preparation_checklist_items.{item['item_id']}.human_record_owner_review_started_count",
|
|
item["human_record_owner_review_started_count"],
|
|
0,
|
|
)
|
|
assert_equal(
|
|
f"iwooos_projection.host_owner_decision_record_human_record_owner_review_preparation_checklist_items.{item['item_id']}.human_record_owner_review_ready_count",
|
|
item["human_record_owner_review_ready_count"],
|
|
0,
|
|
)
|
|
assert_equal(
|
|
f"iwooos_projection.host_owner_decision_record_human_record_owner_review_preparation_checklist_items.{item['item_id']}.human_record_owner_handoff_review_passed_count",
|
|
item["human_record_owner_handoff_review_passed_count"],
|
|
0,
|
|
)
|
|
assert_equal(
|
|
f"iwooos_projection.host_owner_decision_record_human_record_owner_review_preparation_checklist_items.{item['item_id']}.human_record_owner_handoff_started_count",
|
|
item["human_record_owner_handoff_started_count"],
|
|
0,
|
|
)
|
|
assert_equal(
|
|
f"iwooos_projection.host_owner_decision_record_human_record_owner_review_preparation_checklist_items.{item['item_id']}.human_record_owner_handoff_ready_count",
|
|
item["human_record_owner_handoff_ready_count"],
|
|
0,
|
|
)
|
|
assert_equal(
|
|
f"iwooos_projection.host_owner_decision_record_human_record_owner_review_preparation_checklist_items.{item['item_id']}.formal_record_queue_review_passed_count",
|
|
item["formal_record_queue_review_passed_count"],
|
|
0,
|
|
)
|
|
assert_equal(
|
|
f"iwooos_projection.host_owner_decision_record_human_record_owner_review_preparation_checklist_items.{item['item_id']}.formal_record_queue_enqueued_count",
|
|
item["formal_record_queue_enqueued_count"],
|
|
0,
|
|
)
|
|
assert_false(
|
|
f"iwooos_projection.host_owner_decision_record_human_record_owner_review_preparation_checklist_items.{item['item_id']}.decision_record_created",
|
|
item["decision_record_created"],
|
|
)
|
|
assert_equal(
|
|
f"iwooos_projection.host_owner_decision_record_human_record_owner_review_preparation_checklist_items.{item['item_id']}.owner_decision_received_count",
|
|
item["owner_decision_received_count"],
|
|
0,
|
|
)
|
|
assert_equal(
|
|
f"iwooos_projection.host_owner_decision_record_human_record_owner_review_preparation_checklist_items.{item['item_id']}.owner_decision_accepted_count",
|
|
item["owner_decision_accepted_count"],
|
|
0,
|
|
)
|
|
assert_false(
|
|
f"iwooos_projection.host_owner_decision_record_human_record_owner_review_preparation_checklist_items.{item['item_id']}.owner_approval_record_created",
|
|
item["owner_approval_record_created"],
|
|
)
|
|
assert_false(
|
|
f"iwooos_projection.host_owner_decision_record_human_record_owner_review_preparation_checklist_items.{item['item_id']}.runtime_gate_opened",
|
|
item["runtime_gate_opened"],
|
|
)
|
|
assert_false(
|
|
f"iwooos_projection.host_owner_decision_record_human_record_owner_review_preparation_checklist_items.{item['item_id']}.raw_payload_allowed",
|
|
item["raw_payload_allowed"],
|
|
)
|
|
assert_false(
|
|
f"iwooos_projection.host_owner_decision_record_human_record_owner_review_preparation_checklist_items.{item['item_id']}.secret_value_collection_allowed",
|
|
item["secret_value_collection_allowed"],
|
|
)
|
|
assert_false(
|
|
f"iwooos_projection.host_owner_decision_record_human_record_owner_review_preparation_checklist_items.{item['item_id']}.runtime_execution_authorized",
|
|
item["runtime_execution_authorized"],
|
|
)
|
|
assert_false(
|
|
f"iwooos_projection.host_owner_decision_record_human_record_owner_review_preparation_checklist_items.{item['item_id']}.action_buttons_allowed",
|
|
item["action_buttons_allowed"],
|
|
)
|
|
assert_true(
|
|
f"iwooos_projection.host_owner_decision_record_human_record_owner_review_preparation_checklist_items.{item['item_id']}.not_authorization",
|
|
item["not_authorization"],
|
|
)
|
|
assert_equal(
|
|
"iwooos_projection.non_blocking_lane_ids",
|
|
iwooos_projection["non_blocking_lane_ids"],
|
|
expected_low_friction_lane_ids,
|
|
)
|
|
for evidence_ref in [
|
|
"docs/security/iwooos-posture-projection.snapshot.json",
|
|
"docs/security/security-rollout-policy.snapshot.json",
|
|
"docs/security/security-mirror-status-rollup.snapshot.json",
|
|
"docs/security/source-control-owner-response-validation-rollup.snapshot.json",
|
|
"docs/security/kali-integration-status.snapshot.json",
|
|
]:
|
|
assert_contains("iwooos_projection.evidence_refs", iwooos_projection["evidence_refs"], evidence_ref)
|
|
latest_kali_observation = kali_status["latest_read_only_observation"]
|
|
assert_equal(
|
|
"kali_status.latest_read_only_observation.observed_at_taipei",
|
|
latest_kali_observation["observed_at_taipei"],
|
|
"2026-06-04T08:55:43+08:00",
|
|
)
|
|
assert_equal(
|
|
"kali_status.latest_read_only_observation.collection_mode",
|
|
latest_kali_observation["collection_mode"],
|
|
"ssh_batch_read_only_existing_key",
|
|
)
|
|
assert_equal(
|
|
"kali_status.latest_read_only_observation.upgradable_package_count",
|
|
latest_kali_observation["upgradable_package_count"],
|
|
1994,
|
|
)
|
|
assert_equal(
|
|
"kali_status.latest_read_only_observation.failed_systemd_unit_count",
|
|
latest_kali_observation["failed_systemd_unit_count"],
|
|
1,
|
|
)
|
|
assert_equal(
|
|
"kali_status.latest_read_only_observation.scanner_api_health_status",
|
|
latest_kali_observation["scanner_api_health_status"],
|
|
"healthy",
|
|
)
|
|
assert_equal(
|
|
"kali_status.latest_read_only_observation.scanner_api_health_endpoint",
|
|
latest_kali_observation["scanner_api_health_endpoint"],
|
|
"127.0.0.1:8080/health",
|
|
)
|
|
assert_equal(
|
|
"kali_status.latest_read_only_observation.scanner_service_state",
|
|
latest_kali_observation["scanner_service_state"],
|
|
"active",
|
|
)
|
|
assert_equal(
|
|
"kali_status.latest_read_only_observation.scanner_service_enabled",
|
|
latest_kali_observation["scanner_service_enabled"],
|
|
"enabled",
|
|
)
|
|
assert_equal(
|
|
"kali_status.latest_read_only_observation.failed_systemd_unit_names",
|
|
latest_kali_observation["failed_systemd_unit_names"],
|
|
["networking.service"],
|
|
)
|
|
assert_equal(
|
|
"kali_status.latest_read_only_observation.scanner_systemd_hardening_enabled_count",
|
|
latest_kali_observation["scanner_systemd_hardening_enabled_count"],
|
|
0,
|
|
)
|
|
assert_equal(
|
|
"kali_status.latest_read_only_observation.scanner_systemd_hardening_expected_count",
|
|
latest_kali_observation["scanner_systemd_hardening_expected_count"],
|
|
4,
|
|
)
|
|
assert_equal(
|
|
"kali_status.latest_read_only_observation.scanner_systemd_hardening_missing",
|
|
latest_kali_observation["scanner_systemd_hardening_missing"],
|
|
["NoNewPrivileges", "PrivateTmp", "ProtectSystem", "ProtectHome"],
|
|
)
|
|
for forbidden_runtime_flag in [
|
|
"runtime_actions_executed",
|
|
"active_scan_executed",
|
|
"package_update_executed",
|
|
"host_reboot_executed",
|
|
]:
|
|
assert_false(
|
|
f"kali_status.latest_read_only_observation.{forbidden_runtime_flag}",
|
|
latest_kali_observation[forbidden_runtime_flag],
|
|
)
|
|
for output in [
|
|
"display_security_posture",
|
|
"display_progress_estimate",
|
|
"display_visual_command_dashboard",
|
|
"display_professional_security_experience",
|
|
"display_concrete_work_snapshot",
|
|
"display_global_security_mesh_matrix",
|
|
"display_host_tool_evidence_chain",
|
|
"display_awooop_read_only_landing_readiness",
|
|
"display_awooop_cross_session_handoff_packets",
|
|
"display_progress_hold_movement_gates",
|
|
"display_progress_acceleration_lanes",
|
|
"display_owner_response_next_action_focus",
|
|
"display_s4_9_owner_response_preflight_checks",
|
|
"display_s4_9_owner_response_request_templates",
|
|
"display_non_blocking_lanes",
|
|
"display_existing_frontend_security_surfaces",
|
|
"display_frontend_surface_reverse_bridge_statuses",
|
|
"display_frontend_surface_coverage_matrix",
|
|
"display_frontend_surface_conflict_controls",
|
|
"display_operator_journey_steps",
|
|
"display_owner_evidence_readiness_board",
|
|
"display_host_coverage_view",
|
|
"display_kali_maintenance_readiness_board",
|
|
"display_host_action_gate_matrix",
|
|
"display_host_evidence_readiness_board",
|
|
"display_host_evidence_collection_order",
|
|
"display_host_evidence_intake_preflight_checks",
|
|
"display_host_evidence_review_outcome_lanes",
|
|
"display_host_evidence_review_handoff_packets",
|
|
"display_host_evidence_reviewer_checklist",
|
|
"display_host_evidence_reviewer_outcome_lanes",
|
|
"display_host_owner_decision_candidate_packets",
|
|
"display_host_owner_decision_review_checklist",
|
|
"display_host_owner_decision_review_outcome_lanes",
|
|
"display_host_owner_decision_record_draft_packets",
|
|
"display_host_owner_decision_record_draft_review_checklist",
|
|
"display_host_owner_decision_record_draft_review_outcome_lanes",
|
|
"display_host_owner_decision_record_writeup_packets",
|
|
"display_host_owner_decision_record_writeup_review_checklist",
|
|
"display_host_owner_decision_record_writeup_review_outcome_lanes",
|
|
"display_host_owner_decision_record_formal_candidate_packets",
|
|
"display_host_owner_decision_record_formal_candidate_review_checklist",
|
|
"display_host_owner_decision_record_formal_candidate_review_outcome_lanes",
|
|
"display_host_owner_decision_record_formal_record_queue_packets",
|
|
"display_host_owner_decision_record_formal_record_queue_review_checklist",
|
|
"display_host_owner_decision_record_formal_record_queue_review_outcome_lanes",
|
|
"display_host_owner_decision_record_human_handoff_readiness_packets",
|
|
"display_host_owner_decision_record_human_handoff_readiness_review_checklist",
|
|
"display_host_owner_decision_record_human_handoff_readiness_review_outcome_lanes",
|
|
"display_host_owner_decision_record_human_record_owner_review_candidate_packets",
|
|
"display_host_owner_decision_record_human_record_owner_review_candidate_checklist",
|
|
"display_host_owner_decision_record_human_record_owner_review_candidate_outcome_lanes",
|
|
"display_host_owner_decision_record_human_record_owner_review_preparation_packets",
|
|
"display_host_owner_decision_record_human_record_owner_review_preparation_checklist",
|
|
"display_evidence_refs",
|
|
"display_forbidden_actions",
|
|
"display_source_control_primary_readiness_board",
|
|
"display_vibework_security_onboarding",
|
|
"display_agent_bounty_security_onboarding",
|
|
"display_rollout_risk_read_only",
|
|
"display_high_value_config_owner_packet",
|
|
"display_awooop_high_value_config_owner_packet_read_only",
|
|
]:
|
|
assert_contains("iwooos_projection.allowed_frontend_outputs", iwooos_projection["allowed_frontend_outputs"], output)
|
|
for output in [
|
|
"add_scan_button",
|
|
"add_execute_button",
|
|
"add_repair_button",
|
|
"start_kali_scan",
|
|
"call_kali_execute_endpoint",
|
|
"create_github_repo",
|
|
"sync_git_refs",
|
|
"modify_workflow_or_secret",
|
|
"reload_nginx_from_owner_packet",
|
|
"rotate_secret_from_owner_packet",
|
|
"run_agent_bounty_runtime_from_owner_packet",
|
|
"send_owner_request_from_awooop_high_value_config_packet",
|
|
"mark_owner_packet_received_from_awooop",
|
|
"mark_owner_packet_accepted_from_awooop",
|
|
"open_runtime_gate_from_awooop_high_value_config_packet",
|
|
"reload_nginx_from_awooop_owner_packet",
|
|
"run_agent_bounty_runtime_from_awooop_owner_packet",
|
|
"enable_runner",
|
|
"ssh_to_host",
|
|
"open_ssh_session",
|
|
"update_kali_host",
|
|
"auto_update_host",
|
|
"run_host_package_upgrade",
|
|
"credentialed_scan_host",
|
|
"mark_host_evidence_received",
|
|
"mark_host_evidence_accepted",
|
|
"ingest_raw_host_evidence",
|
|
"treat_reverse_bridge_status_as_authorization",
|
|
"create_runtime_gate_from_reverse_bridge_status",
|
|
"create_code_review_blocker_from_reverse_bridge_status",
|
|
"create_gitea_or_github_action_from_reverse_bridge_status",
|
|
"advance_host_collection_state",
|
|
"skip_host_evidence_dependency",
|
|
"accept_host_evidence_without_preflight",
|
|
"ingest_host_evidence_raw_payload",
|
|
"collect_host_credential_plaintext",
|
|
"advance_host_evidence_counters_from_frontend",
|
|
"create_host_approval_from_review_lane",
|
|
"treat_host_review_lane_as_runtime_gate",
|
|
"mark_host_review_outcome_accepted",
|
|
"treat_host_handoff_packet_as_approval",
|
|
"mark_host_handoff_packet_received",
|
|
"store_host_handoff_sensitive_payload",
|
|
"treat_host_reviewer_check_as_approval",
|
|
"mark_host_reviewer_check_passed_from_frontend",
|
|
"open_runtime_gate_from_reviewer_check",
|
|
"treat_host_reviewer_outcome_as_approval",
|
|
"mark_host_reviewer_outcome_passed",
|
|
"open_runtime_gate_from_reviewer_outcome",
|
|
"treat_host_owner_decision_candidate_as_approval",
|
|
"mark_host_owner_decision_approved",
|
|
"open_runtime_gate_from_owner_decision_candidate",
|
|
"treat_host_owner_decision_review_check_as_approval",
|
|
"mark_host_owner_decision_review_passed",
|
|
"open_runtime_gate_from_owner_decision_review_check",
|
|
"treat_host_owner_decision_review_outcome_as_approval",
|
|
"mark_host_owner_decision_review_outcome_passed",
|
|
"open_runtime_gate_from_owner_decision_review_outcome",
|
|
"create_host_owner_decision_record_from_draft",
|
|
"mark_host_owner_decision_record_created",
|
|
"open_runtime_gate_from_owner_decision_record_draft",
|
|
"treat_host_owner_decision_record_draft_review_as_approval",
|
|
"mark_host_owner_decision_record_draft_review_passed",
|
|
"create_host_owner_decision_record_from_draft_review",
|
|
"open_runtime_gate_from_owner_decision_record_draft_review",
|
|
"treat_host_owner_decision_record_draft_review_outcome_as_approval",
|
|
"mark_host_owner_decision_record_draft_review_outcome_passed",
|
|
"create_host_owner_decision_record_from_draft_review_outcome",
|
|
"open_runtime_gate_from_owner_decision_record_draft_review_outcome",
|
|
"create_host_owner_decision_record_from_writeup",
|
|
"mark_host_owner_decision_record_writeup_completed",
|
|
"mark_host_owner_decision_record_accepted_from_writeup",
|
|
"open_runtime_gate_from_owner_decision_record_writeup",
|
|
"treat_host_owner_decision_record_writeup_review_as_approval",
|
|
"mark_host_owner_decision_record_writeup_review_passed",
|
|
"mark_host_owner_decision_record_writeup_review_completed",
|
|
"create_host_owner_decision_record_from_writeup_review",
|
|
"open_runtime_gate_from_owner_decision_record_writeup_review",
|
|
"treat_host_owner_decision_record_writeup_review_outcome_as_approval",
|
|
"mark_host_owner_decision_record_writeup_review_outcome_passed",
|
|
"mark_host_owner_decision_record_writeup_review_outcome_completed",
|
|
"create_host_owner_decision_record_from_writeup_review_outcome",
|
|
"open_runtime_gate_from_owner_decision_record_writeup_review_outcome",
|
|
"treat_host_owner_decision_record_formal_candidate_as_approval",
|
|
"mark_host_owner_decision_record_formal_candidate_finalized",
|
|
"create_host_owner_decision_record_from_formal_candidate",
|
|
"accept_host_owner_decision_record_from_formal_candidate",
|
|
"open_runtime_gate_from_owner_decision_record_formal_candidate",
|
|
"treat_host_owner_decision_record_formal_candidate_review_as_approval",
|
|
"mark_host_owner_decision_record_formal_candidate_review_passed",
|
|
"mark_host_owner_decision_record_formal_candidate_review_finalized",
|
|
"create_host_owner_decision_record_from_formal_candidate_review",
|
|
"open_runtime_gate_from_owner_decision_record_formal_candidate_review",
|
|
"treat_host_owner_decision_record_formal_candidate_review_outcome_as_approval",
|
|
"mark_host_owner_decision_record_formal_candidate_review_outcome_passed",
|
|
"mark_host_owner_decision_record_formal_candidate_review_outcome_finalized",
|
|
"create_host_owner_decision_record_from_formal_candidate_review_outcome",
|
|
"open_runtime_gate_from_owner_decision_record_formal_candidate_review_outcome",
|
|
"treat_host_owner_decision_record_formal_record_queue_packet_as_approval",
|
|
"enqueue_host_owner_decision_record_formal_record_queue_from_frontend",
|
|
"create_host_owner_decision_record_from_formal_record_queue_packet",
|
|
"accept_host_owner_decision_record_from_formal_record_queue_packet",
|
|
"open_runtime_gate_from_owner_decision_record_formal_record_queue_packet",
|
|
"treat_host_owner_decision_record_formal_record_queue_review_as_approval",
|
|
"mark_host_owner_decision_record_formal_record_queue_review_passed",
|
|
"enqueue_host_owner_decision_record_from_formal_record_queue_review",
|
|
"create_host_owner_decision_record_from_formal_record_queue_review",
|
|
"open_runtime_gate_from_formal_record_queue_review",
|
|
"treat_host_owner_decision_record_formal_record_queue_review_outcome_as_approval",
|
|
"mark_host_owner_decision_record_formal_record_queue_review_outcome_passed",
|
|
"enqueue_host_owner_decision_record_from_formal_record_queue_review_outcome",
|
|
"create_host_owner_decision_record_from_formal_record_queue_review_outcome",
|
|
"open_runtime_gate_from_formal_record_queue_review_outcome",
|
|
"treat_host_owner_decision_record_handoff_readiness_as_approval",
|
|
"start_human_record_owner_handoff_from_readiness_packet",
|
|
"mark_human_record_owner_handoff_ready_from_frontend",
|
|
"create_host_owner_decision_record_from_handoff_readiness",
|
|
"open_runtime_gate_from_handoff_readiness",
|
|
"treat_host_owner_decision_record_handoff_readiness_review_as_approval",
|
|
"mark_human_record_owner_handoff_readiness_review_passed",
|
|
"start_human_record_owner_handoff_from_readiness_review",
|
|
"create_host_owner_decision_record_from_handoff_readiness_review",
|
|
"open_runtime_gate_from_handoff_readiness_review",
|
|
"treat_host_owner_decision_record_handoff_readiness_review_outcome_as_approval",
|
|
"mark_human_record_owner_handoff_readiness_review_outcome_passed",
|
|
"start_human_record_owner_handoff_from_readiness_review_outcome",
|
|
"create_host_owner_decision_record_from_handoff_readiness_review_outcome",
|
|
"open_runtime_gate_from_handoff_readiness_review_outcome",
|
|
"treat_host_owner_decision_record_human_record_owner_review_candidate_packet_as_approval",
|
|
"start_human_record_owner_review_from_candidate_packet",
|
|
"mark_human_record_owner_review_ready_from_candidate_packet",
|
|
"collect_owner_decision_from_human_record_owner_review_candidate_packet",
|
|
"create_host_owner_decision_record_from_human_record_owner_review_candidate_packet",
|
|
"open_runtime_gate_from_human_record_owner_review_candidate_packet",
|
|
"treat_host_owner_decision_record_human_record_owner_review_candidate_checklist_as_approval",
|
|
"mark_human_record_owner_review_candidate_checklist_passed",
|
|
"start_human_record_owner_review_from_candidate_checklist",
|
|
"mark_human_record_owner_review_ready_from_candidate_checklist",
|
|
"collect_owner_decision_from_human_record_owner_review_candidate_checklist",
|
|
"create_host_owner_decision_record_from_human_record_owner_review_candidate_checklist",
|
|
"open_runtime_gate_from_human_record_owner_review_candidate_checklist",
|
|
"treat_host_owner_decision_record_human_record_owner_review_candidate_outcome_as_approval",
|
|
"mark_human_record_owner_review_candidate_outcome_passed",
|
|
"start_human_record_owner_review_from_candidate_outcome",
|
|
"mark_human_record_owner_review_ready_from_candidate_outcome",
|
|
"collect_owner_decision_from_human_record_owner_review_candidate_outcome",
|
|
"create_host_owner_decision_record_from_human_record_owner_review_candidate_outcome",
|
|
"open_runtime_gate_from_human_record_owner_review_candidate_outcome",
|
|
"treat_host_owner_decision_record_human_record_owner_review_preparation_packet_as_approval",
|
|
"mark_human_record_owner_review_preparation_completed",
|
|
"start_human_record_owner_review_from_preparation_packet",
|
|
"mark_human_record_owner_review_ready_from_preparation_packet",
|
|
"collect_owner_decision_from_human_record_owner_review_preparation_packet",
|
|
"create_host_owner_decision_record_from_human_record_owner_review_preparation_packet",
|
|
"open_runtime_gate_from_human_record_owner_review_preparation_packet",
|
|
"treat_host_owner_decision_record_human_record_owner_review_preparation_checklist_as_approval",
|
|
"mark_human_record_owner_review_preparation_checklist_passed",
|
|
"mark_human_record_owner_review_prepared_from_preparation_checklist",
|
|
"start_human_record_owner_review_from_preparation_checklist",
|
|
"mark_human_record_owner_review_ready_from_preparation_checklist",
|
|
"collect_owner_decision_from_human_record_owner_review_preparation_checklist",
|
|
"create_host_owner_decision_record_from_human_record_owner_review_preparation_checklist",
|
|
"open_runtime_gate_from_human_record_owner_review_preparation_checklist",
|
|
"treat_awooop_landing_readiness_as_production_consumption",
|
|
"enable_awooop_execution_router_from_landing_readiness",
|
|
"mark_production_landing_enabled_from_readiness",
|
|
"create_action_button_from_awooop_landing_readiness",
|
|
"skip_guard_from_awooop_landing_readiness",
|
|
"mark_progress_changed_from_awooop_landing_readiness",
|
|
"treat_awooop_handoff_as_production_consumption",
|
|
"merge_from_awooop_handoff",
|
|
"deploy_from_awooop_handoff",
|
|
"switch_primary_from_awooop_handoff",
|
|
"modify_refs_from_awooop_handoff",
|
|
"skip_guard_from_awooop_handoff",
|
|
"mark_progress_changed_from_awooop_handoff",
|
|
"treat_progress_hold_gate_as_percent_increase",
|
|
"increase_headline_without_gate_evidence",
|
|
"mark_owner_response_received_from_hold_gate",
|
|
"mark_payload_ingested_from_hold_gate",
|
|
"open_runtime_gate_from_hold_gate",
|
|
"mark_github_primary_ready_from_hold_gate",
|
|
"enable_production_landing_from_hold_gate",
|
|
"treat_progress_acceleration_as_authorization",
|
|
"increase_headline_from_progress_acceleration_lane",
|
|
"open_runtime_gate_from_progress_acceleration_lane",
|
|
"mark_owner_response_received_from_progress_acceleration_lane",
|
|
"enable_github_primary_from_progress_acceleration_lane",
|
|
"enable_production_execution_from_progress_acceleration_lane",
|
|
"treat_owner_response_focus_as_received",
|
|
"collect_owner_response_from_iwooos_focus",
|
|
"autofill_owner_response_from_iwooos_focus",
|
|
"mark_owner_response_accepted_from_iwooos_focus",
|
|
"skip_s4_9_from_owner_response_focus",
|
|
"open_runtime_gate_from_owner_response_focus",
|
|
"switch_github_primary_from_owner_response_focus",
|
|
"create_repo_from_owner_response_focus",
|
|
"treat_s4_9_preflight_as_request_sent",
|
|
"treat_s4_9_preflight_as_received",
|
|
"mark_s4_9_preflight_passed_from_frontend",
|
|
"accept_s4_9_owner_response_from_preflight",
|
|
"emit_s4_9_audit_event_from_preflight",
|
|
"open_runtime_gate_from_s4_9_preflight",
|
|
"write_gitea_from_s4_9_preflight",
|
|
"sync_refs_from_s4_9_preflight",
|
|
"switch_primary_from_s4_9_preflight",
|
|
"send_s4_9_owner_response_request_from_iwooos",
|
|
"treat_s4_9_template_as_request_sent",
|
|
"mark_s4_9_template_received_from_iwooos",
|
|
"mark_s4_9_template_accepted_from_iwooos",
|
|
"autofill_s4_9_template_from_iwooos",
|
|
"create_gitea_inventory_from_s4_9_template",
|
|
"write_gitea_from_s4_9_template",
|
|
"sync_refs_from_s4_9_template",
|
|
"switch_primary_from_s4_9_template",
|
|
"collect_token_from_s4_9_template",
|
|
"create_github_repo_from_primary_readiness_board",
|
|
"change_repo_visibility_from_primary_readiness_board",
|
|
"sync_refs_from_primary_readiness_board",
|
|
"delete_refs_from_primary_readiness_board",
|
|
"force_push_from_primary_readiness_board",
|
|
"switch_github_primary_from_primary_readiness_board",
|
|
"collect_secret_value_from_primary_readiness_board",
|
|
"disable_gitea_from_primary_readiness_board",
|
|
"apply_runtime_blocking_control",
|
|
"switch_github_primary",
|
|
"production_deploy",
|
|
"treat_progress_as_authorization",
|
|
]:
|
|
assert_contains("iwooos_projection.forbidden_frontend_outputs", iwooos_projection["forbidden_frontend_outputs"], output)
|
|
|
|
assert_text_contains("awooop_home_page.security_mirror_panel", awooop_home_page, "SecurityMirrorPanel")
|
|
assert_text_contains("awooop_home_page.security_mirror_metrics", awooop_home_page, "securityMirrorMetrics")
|
|
assert_text_contains("awooop_home_page.security_mirror_headline_current", awooop_home_page, 'value: "64%"')
|
|
assert_text_contains("awooop_home_page.security_mirror_framework_current", awooop_home_page, 'value: "92%"')
|
|
assert_text_contains("awooop_home_page.iwooos_link", awooop_home_page, 'href="/iwooos"')
|
|
for text in [
|
|
"read_only_production_landing_evidence_count=1",
|
|
"execution_router_linked=false",
|
|
"runtime_execution_authorized=false",
|
|
"action_buttons_allowed=false",
|
|
]:
|
|
assert_text_contains("awooop_home_page.security_mirror_boundary", awooop_home_page, text)
|
|
for key in ["title", "subtitle", "badge", "openIwooos", "metrics", "checkpoints"]:
|
|
assert_contains(
|
|
"web_messages.zh-TW.awooop.home.securityMirror",
|
|
list(web_messages_zh["awooop"]["home"]["securityMirror"].keys()),
|
|
key,
|
|
)
|
|
assert_contains(
|
|
"web_messages.en.awooop.home.securityMirror",
|
|
list(web_messages_en["awooop"]["home"]["securityMirror"].keys()),
|
|
key,
|
|
)
|
|
|
|
assert_text_contains(
|
|
"awooop_home_page.github_primary_panel",
|
|
awooop_home_page,
|
|
"GitHubPrimaryReadinessHomePanel",
|
|
)
|
|
assert_text_contains(
|
|
"awooop_home_page.github_primary_metrics",
|
|
awooop_home_page,
|
|
"githubPrimaryReadinessMetrics",
|
|
)
|
|
assert_text_contains("awooop_home_page.github_primary_iwooos_link", awooop_home_page, 'href="/iwooos"')
|
|
for text in [
|
|
"source_control_primary_readiness_gate_v1",
|
|
"source_control_owner_response_validation_rollup_v1",
|
|
"source_control_primary_rollback_adr_v1",
|
|
"source_control_workflow_secret_name_inventory_v1",
|
|
"repo_creation_authorized=false",
|
|
"refs_mutation_authorized=false",
|
|
"secret_value_collection_allowed=false",
|
|
"github_primary_switch_authorized=false",
|
|
"gitea_disablement_authorized=false",
|
|
"runtime_execution_authorized=false",
|
|
"action_buttons_allowed=false",
|
|
]:
|
|
assert_text_contains("awooop_home_page.github_primary_boundary", awooop_home_page, text)
|
|
for key in [
|
|
"title",
|
|
"subtitle",
|
|
"badge",
|
|
"openIwooos",
|
|
"metrics",
|
|
"readinessRefsTitle",
|
|
"readinessRefs",
|
|
"boundaryLabel",
|
|
"boundaryTitle",
|
|
"boundaryDetail",
|
|
]:
|
|
assert_contains(
|
|
"web_messages.zh-TW.awooop.home.githubPrimaryReadiness",
|
|
list(web_messages_zh["awooop"]["home"]["githubPrimaryReadiness"].keys()),
|
|
key,
|
|
)
|
|
assert_contains(
|
|
"web_messages.en.awooop.home.githubPrimaryReadiness",
|
|
list(web_messages_en["awooop"]["home"]["githubPrimaryReadiness"].keys()),
|
|
key,
|
|
)
|
|
|
|
assert_text_contains(
|
|
"awooop_home_page.owner_response_validation_panel",
|
|
awooop_home_page,
|
|
"OwnerResponseValidationRollupPanel",
|
|
)
|
|
assert_text_contains(
|
|
"awooop_home_page.owner_response_validation_packets",
|
|
awooop_home_page,
|
|
"ownerResponseValidationPackets",
|
|
)
|
|
assert_text_contains(
|
|
"awooop_home_page.owner_response_validation_checks",
|
|
awooop_home_page,
|
|
"ownerResponseValidationChecks",
|
|
)
|
|
assert_text_contains("awooop_home_page.owner_response_validation_iwooos_link", awooop_home_page, 'href="/iwooos"')
|
|
for text in [
|
|
"source_control_owner_response_validation_rollup_v1",
|
|
"S4.9",
|
|
"S4.10",
|
|
"S4.11",
|
|
"S4.12",
|
|
"owner_response_validation_received_count=0",
|
|
"owner_response_validation_accepted_count=0",
|
|
"owner_response_validation_rejected_count=0",
|
|
"repo_creation_authorized=false",
|
|
"refs_sync_authorized=false",
|
|
"workflow_modification_authorized=false",
|
|
"secret_value_collection_allowed=false",
|
|
"github_primary_switch_authorized=false",
|
|
"runtime_execution_authorized=false",
|
|
"action_buttons_allowed=false",
|
|
]:
|
|
assert_text_contains("awooop_home_page.owner_response_validation_boundary", awooop_home_page, text)
|
|
for key in [
|
|
"title",
|
|
"subtitle",
|
|
"badge",
|
|
"openIwooos",
|
|
"packetsTitle",
|
|
"validationTitle",
|
|
"boundaryLabel",
|
|
"boundaryTitle",
|
|
"boundaryDetail",
|
|
"fields",
|
|
"metrics",
|
|
"packets",
|
|
"checks",
|
|
]:
|
|
assert_contains(
|
|
"web_messages.zh-TW.awooop.home.ownerResponseValidation",
|
|
list(web_messages_zh["awooop"]["home"]["ownerResponseValidation"].keys()),
|
|
key,
|
|
)
|
|
assert_contains(
|
|
"web_messages.en.awooop.home.ownerResponseValidation",
|
|
list(web_messages_en["awooop"]["home"]["ownerResponseValidation"].keys()),
|
|
key,
|
|
)
|
|
|
|
assert_text_contains(
|
|
"awooop_home_page.high_value_config_owner_packet_panel",
|
|
awooop_home_page,
|
|
"HighValueConfigOwnerPacketHomePanel",
|
|
)
|
|
assert_text_contains(
|
|
"awooop_home_page.high_value_config_owner_packet_metrics",
|
|
awooop_home_page,
|
|
"highValueConfigOwnerPacketMetrics",
|
|
)
|
|
assert_text_contains(
|
|
"awooop_home_page.high_value_config_owner_packet_refs",
|
|
awooop_home_page,
|
|
"highValueConfigOwnerPacketRefs",
|
|
)
|
|
assert_text_contains(
|
|
"awooop_home_page.high_value_config_owner_packet_testid",
|
|
awooop_home_page,
|
|
'data-testid="awooop-high-value-config-owner-packet-board"',
|
|
)
|
|
assert_text_contains(
|
|
"awooop_home_page.high_value_config_owner_packet_boundary_testid",
|
|
awooop_home_page,
|
|
'data-testid="awooop-high-value-config-owner-packet-boundaries"',
|
|
)
|
|
assert_text_contains("awooop_home_page.high_value_config_owner_packet_iwooos_link", awooop_home_page, 'href="/iwooos"')
|
|
for text in [
|
|
"awooop_high_value_config_owner_packet_summary_count=4",
|
|
"awooop_high_value_config_owner_packet_ref_count=4",
|
|
"high_value_config_owner_packet_count=3",
|
|
"high_value_config_owner_packet_c0_packet_count=2",
|
|
"high_value_config_owner_packet_request_sent_count=0",
|
|
"high_value_config_owner_packet_received_response_count=0",
|
|
"high_value_config_owner_packet_accepted_response_count=0",
|
|
"runtime_execution_authorized=false",
|
|
"action_buttons_allowed=false",
|
|
"send_owner_request_allowed=false",
|
|
"mark_received_allowed=false",
|
|
"mark_accepted_allowed=false",
|
|
"nginx_reload_authorized=false",
|
|
"workflow_modification_authorized=false",
|
|
"agent_bounty_runtime_authorized=false",
|
|
]:
|
|
assert_text_contains("awooop_home_page.high_value_config_owner_packet_boundary", awooop_home_page, text)
|
|
for key in [
|
|
"title",
|
|
"subtitle",
|
|
"badge",
|
|
"openIwooos",
|
|
"refsTitle",
|
|
"boundaryLabel",
|
|
"boundaryTitle",
|
|
"boundaryDetail",
|
|
"metrics",
|
|
"refs",
|
|
]:
|
|
assert_contains(
|
|
"web_messages.zh-TW.awooop.home.highValueConfigOwnerPacket",
|
|
list(web_messages_zh["awooop"]["home"]["highValueConfigOwnerPacket"].keys()),
|
|
key,
|
|
)
|
|
assert_contains(
|
|
"web_messages.en.awooop.home.highValueConfigOwnerPacket",
|
|
list(web_messages_en["awooop"]["home"]["highValueConfigOwnerPacket"].keys()),
|
|
key,
|
|
)
|
|
for key in ["packetDrafts", "c0Packets", "responses", "runtimeGate"]:
|
|
assert_contains(
|
|
"web_messages.zh-TW.awooop.home.highValueConfigOwnerPacket.metrics",
|
|
list(web_messages_zh["awooop"]["home"]["highValueConfigOwnerPacket"]["metrics"].keys()),
|
|
key,
|
|
)
|
|
assert_contains(
|
|
"web_messages.en.awooop.home.highValueConfigOwnerPacket.metrics",
|
|
list(web_messages_en["awooop"]["home"]["highValueConfigOwnerPacket"]["metrics"].keys()),
|
|
key,
|
|
)
|
|
for key in ["packetDraft", "c0Scope", "s49Envelope", "runtimeBoundary"]:
|
|
assert_contains(
|
|
"web_messages.zh-TW.awooop.home.highValueConfigOwnerPacket.refs",
|
|
list(web_messages_zh["awooop"]["home"]["highValueConfigOwnerPacket"]["refs"].keys()),
|
|
key,
|
|
)
|
|
assert_contains(
|
|
"web_messages.en.awooop.home.highValueConfigOwnerPacket.refs",
|
|
list(web_messages_en["awooop"]["home"]["highValueConfigOwnerPacket"]["refs"].keys()),
|
|
key,
|
|
)
|
|
|
|
assert_text_contains("awooop_work_items_page.security_mirror_item", awooop_work_items_page, "iwooosSecurityMirror")
|
|
assert_text_contains("awooop_work_items_page.github_primary_item", awooop_work_items_page, "githubPrimaryReadiness")
|
|
assert_text_contains("awooop_work_items_page.owner_response_validation_item", awooop_work_items_page, "ownerResponseValidation")
|
|
assert_text_contains(
|
|
"awooop_work_items_page.telegram_source_traditional_chinese",
|
|
awooop_work_items_page,
|
|
'source: "telegram_callback / 真相鏈鏡像"',
|
|
)
|
|
assert_text_contains(
|
|
"awooop_work_items_page.security_mirror_source",
|
|
awooop_work_items_page,
|
|
"security_mirror_status_rollup_v1 / iwooos_posture_projection_v1",
|
|
)
|
|
assert_text_contains(
|
|
"awooop_work_items_page.github_primary_source",
|
|
awooop_work_items_page,
|
|
"source-control-primary-readiness-gate.snapshot.json / iwooos_posture_projection_v1",
|
|
)
|
|
assert_text_contains(
|
|
"awooop_work_items_page.owner_response_validation_source",
|
|
awooop_work_items_page,
|
|
"source-control-owner-response-validation-rollup.snapshot.json / security_mirror_status_rollup_v1",
|
|
)
|
|
assert_text_contains("awooop_work_items_page.security_mirror_href", awooop_work_items_page, 'href: "/iwooos"')
|
|
assert_text_contains("awooop_work_items_page.security_mirror_status", awooop_work_items_page, 'status: "watching"')
|
|
assert_text_contains("awooop_work_items_page.security_mirror_headline_current", awooop_work_items_page, 'headline: "64%"')
|
|
assert_text_contains("awooop_work_items_page.security_mirror_framework_current", awooop_work_items_page, 'framework: "92%"')
|
|
for key in ["iwooos"]:
|
|
assert_contains(
|
|
"web_messages.zh-TW.awooop.workItems.surfaces",
|
|
list(web_messages_zh["awooop"]["workItems"]["surfaces"].keys()),
|
|
key,
|
|
)
|
|
assert_contains(
|
|
"web_messages.en.awooop.workItems.surfaces",
|
|
list(web_messages_en["awooop"]["workItems"]["surfaces"].keys()),
|
|
key,
|
|
)
|
|
for section in ["items", "gates", "evidence"]:
|
|
assert_contains(
|
|
f"web_messages.zh-TW.awooop.workItems.{section}",
|
|
list(web_messages_zh["awooop"]["workItems"][section].keys()),
|
|
"iwooosSecurityMirror",
|
|
)
|
|
assert_contains(
|
|
f"web_messages.en.awooop.workItems.{section}",
|
|
list(web_messages_en["awooop"]["workItems"][section].keys()),
|
|
"iwooosSecurityMirror",
|
|
)
|
|
assert_contains(
|
|
f"web_messages.zh-TW.awooop.workItems.{section}",
|
|
list(web_messages_zh["awooop"]["workItems"][section].keys()),
|
|
"githubPrimaryReadiness",
|
|
)
|
|
assert_contains(
|
|
f"web_messages.en.awooop.workItems.{section}",
|
|
list(web_messages_en["awooop"]["workItems"][section].keys()),
|
|
"githubPrimaryReadiness",
|
|
)
|
|
assert_contains(
|
|
f"web_messages.zh-TW.awooop.workItems.{section}",
|
|
list(web_messages_zh["awooop"]["workItems"][section].keys()),
|
|
"ownerResponseValidation",
|
|
)
|
|
assert_contains(
|
|
f"web_messages.en.awooop.workItems.{section}",
|
|
list(web_messages_en["awooop"]["workItems"][section].keys()),
|
|
"ownerResponseValidation",
|
|
)
|
|
for key in ["iwooosSecurityMirrorOwner", "iwooosSecurityMirrorBoundary"]:
|
|
assert_contains(
|
|
"web_messages.zh-TW.awooop.workItems.evidence",
|
|
list(web_messages_zh["awooop"]["workItems"]["evidence"].keys()),
|
|
key,
|
|
)
|
|
assert_contains(
|
|
"web_messages.en.awooop.workItems.evidence",
|
|
list(web_messages_en["awooop"]["workItems"]["evidence"].keys()),
|
|
key,
|
|
)
|
|
for key in ["githubPrimaryOwnerResponses", "githubPrimaryWorkflowNames", "githubPrimaryBoundary"]:
|
|
assert_contains(
|
|
"web_messages.zh-TW.awooop.workItems.evidence",
|
|
list(web_messages_zh["awooop"]["workItems"]["evidence"].keys()),
|
|
key,
|
|
)
|
|
for key in [
|
|
"ownerResponseValidationChecks",
|
|
"ownerResponseValidationBoundary",
|
|
]:
|
|
assert_contains(
|
|
"web_messages.zh-TW.awooop.workItems.evidence",
|
|
list(web_messages_zh["awooop"]["workItems"]["evidence"].keys()),
|
|
key,
|
|
)
|
|
assert_contains(
|
|
"web_messages.en.awooop.workItems.evidence",
|
|
list(web_messages_en["awooop"]["workItems"]["evidence"].keys()),
|
|
key,
|
|
)
|
|
assert_contains(
|
|
"web_messages.en.awooop.workItems.evidence",
|
|
list(web_messages_en["awooop"]["workItems"]["evidence"].keys()),
|
|
key,
|
|
)
|
|
|
|
assert_text_contains(
|
|
"awooop_tenants_page.security_tenant_scope_panel",
|
|
awooop_tenants_page,
|
|
"SecurityTenantScopeCandidatePanel",
|
|
)
|
|
assert_text_contains("awooop_tenants_page.iwooos_link", awooop_tenants_page, 'href="/iwooos"')
|
|
for text in [
|
|
"tenantScopeBoundaryItems",
|
|
"migrationLocked",
|
|
"policyLocked",
|
|
"runtimeLocked",
|
|
"actionButtonsLocked",
|
|
"boundaryItems.runtimeLocked",
|
|
"boundaryItems.actionButtonsLocked",
|
|
]:
|
|
assert_text_contains("awooop_tenants_page.security_tenant_boundary", awooop_tenants_page, text)
|
|
for text in [
|
|
"tenant_migration_mode_changed=false",
|
|
"tenant_policy_mutation_authorized=false",
|
|
"runtime_execution_authorized=false",
|
|
"action_buttons_allowed=false",
|
|
"4 gates = false",
|
|
]:
|
|
assert_text_not_contains("awooop_tenants_page.security_tenant_raw_boundary_leak", awooop_tenants_page, text)
|
|
for text in [
|
|
"AWOOOI 第一租戶",
|
|
"IwoooS 資安鏡像",
|
|
"host:kali-readonly / host:dev-b / host:dev-a",
|
|
"S4.9-S4.12 負責人回覆等待中",
|
|
]:
|
|
assert_text_contains("awooop_tenants_page.security_tenant_scope_refs", awooop_tenants_page, text)
|
|
assert_text_not_contains(
|
|
"awooop_tenants_page.security_tenant_scope_refs_legacy_host_suffix",
|
|
awooop_tenants_page,
|
|
"Kali 112 / 開發主機 168 / 開發主機 111",
|
|
)
|
|
for key in [
|
|
"title",
|
|
"subtitle",
|
|
"badge",
|
|
"scopeRefsTitle",
|
|
"boundaryLabel",
|
|
"boundaryTitle",
|
|
"boundaryDetail",
|
|
"openIwooos",
|
|
"metrics",
|
|
"scopeRefs",
|
|
"boundaryItems",
|
|
]:
|
|
assert_contains(
|
|
"web_messages.zh-TW.awooop.tenants.securityTenantScopeCandidate",
|
|
list(web_messages_zh["awooop"]["tenants"]["securityTenantScopeCandidate"].keys()),
|
|
key,
|
|
)
|
|
assert_contains(
|
|
"web_messages.en.awooop.tenants.securityTenantScopeCandidate",
|
|
list(web_messages_en["awooop"]["tenants"]["securityTenantScopeCandidate"].keys()),
|
|
key,
|
|
)
|
|
for key in ["migrationLocked", "policyLocked", "runtimeLocked", "actionButtonsLocked"]:
|
|
assert_contains(
|
|
"web_messages.zh-TW.awooop.tenants.securityTenantScopeCandidate.boundaryItems",
|
|
list(web_messages_zh["awooop"]["tenants"]["securityTenantScopeCandidate"]["boundaryItems"].keys()),
|
|
key,
|
|
)
|
|
assert_contains(
|
|
"web_messages.en.awooop.tenants.securityTenantScopeCandidate.boundaryItems",
|
|
list(web_messages_en["awooop"]["tenants"]["securityTenantScopeCandidate"]["boundaryItems"].keys()),
|
|
key,
|
|
)
|
|
|
|
assert_text_contains(
|
|
"awooop_tenants_page.github_tenant_scope_panel",
|
|
awooop_tenants_page,
|
|
"GitHubTenantReadinessScopePanel",
|
|
)
|
|
assert_text_contains(
|
|
"awooop_tenants_page.github_tenant_scope_metrics",
|
|
awooop_tenants_page,
|
|
"githubTenantReadinessMetrics",
|
|
)
|
|
assert_text_contains(
|
|
"awooop_tenants_page.github_tenant_scope_iwooos_link",
|
|
awooop_tenants_page,
|
|
'href="/iwooos"',
|
|
)
|
|
for text in [
|
|
"AWOOOI 第一租戶原始碼管控範圍",
|
|
"S4.9 Gitea 清冊負責人證明",
|
|
"S4.10 GitHub 目標負責人決策",
|
|
"S4.12 工作流程 / 機密名稱負責人回覆",
|
|
"githubTenantReadinessBoundaries",
|
|
"sourceScopeWaiting",
|
|
"ownerResponseWaiting",
|
|
"repoCreationLocked",
|
|
"refsMutationLocked",
|
|
"githubPrimaryLocked",
|
|
"giteaDisableLocked",
|
|
"tenantPolicyLocked",
|
|
"runtimeLocked",
|
|
"actionButtonsLocked",
|
|
]:
|
|
assert_text_contains("awooop_tenants_page.github_tenant_scope_boundary", awooop_tenants_page, text)
|
|
for text in [
|
|
"tenant_source_control_scope_accepted=false",
|
|
"repo_owner_response_accepted=false",
|
|
"repo_creation_authorized=false",
|
|
"refs_mutation_authorized=false",
|
|
"github_primary_switch_authorized=false",
|
|
"gitea_disablement_authorized=false",
|
|
"tenant_policy_mutation_authorized=false",
|
|
"runtime_execution_authorized=false",
|
|
"action_buttons_allowed=false",
|
|
]:
|
|
assert_text_not_contains("awooop_tenants_page.github_tenant_raw_boundary_leak", awooop_tenants_page, text)
|
|
for key in [
|
|
"title",
|
|
"subtitle",
|
|
"badge",
|
|
"openIwooos",
|
|
"scopeRefsTitle",
|
|
"boundaryLabel",
|
|
"boundaryTitle",
|
|
"boundaryDetail",
|
|
"metrics",
|
|
"scopeRefs",
|
|
"boundaryItems",
|
|
]:
|
|
assert_contains(
|
|
"web_messages.zh-TW.awooop.tenants.githubTenantReadinessScope",
|
|
list(web_messages_zh["awooop"]["tenants"]["githubTenantReadinessScope"].keys()),
|
|
key,
|
|
)
|
|
assert_contains(
|
|
"web_messages.en.awooop.tenants.githubTenantReadinessScope",
|
|
list(web_messages_en["awooop"]["tenants"]["githubTenantReadinessScope"].keys()),
|
|
key,
|
|
)
|
|
for key in [
|
|
"sourceScopeWaiting",
|
|
"ownerResponseWaiting",
|
|
"repoCreationLocked",
|
|
"refsMutationLocked",
|
|
"githubPrimaryLocked",
|
|
"giteaDisableLocked",
|
|
"tenantPolicyLocked",
|
|
"runtimeLocked",
|
|
"actionButtonsLocked",
|
|
]:
|
|
assert_contains(
|
|
"web_messages.zh-TW.awooop.tenants.githubTenantReadinessScope.boundaryItems",
|
|
list(web_messages_zh["awooop"]["tenants"]["githubTenantReadinessScope"]["boundaryItems"].keys()),
|
|
key,
|
|
)
|
|
assert_contains(
|
|
"web_messages.en.awooop.tenants.githubTenantReadinessScope.boundaryItems",
|
|
list(web_messages_en["awooop"]["tenants"]["githubTenantReadinessScope"]["boundaryItems"].keys()),
|
|
key,
|
|
)
|
|
|
|
for text in [
|
|
"sourcePublicScopeCode(index)",
|
|
"assetPublicCode(index)",
|
|
"routePublicCode(index)",
|
|
"tenantPublicCode(index)",
|
|
"tenantPublicName(tenant, index)",
|
|
"tenantBudgetState(tenant)",
|
|
"isPublicAssetTextSafe",
|
|
"lookupPublicProductName",
|
|
"publicChineseAssetText",
|
|
"assetPublicProductName(item, index)",
|
|
"routePublicProductName(route, index)",
|
|
"sourcePublicProductName(repo, index)",
|
|
"sourceRepos.map((repo, index)",
|
|
"sourceRiskLabel(repo.risk, t)",
|
|
"sourceReadinessLabel(repo.readiness_state, t)",
|
|
"sourceActionLabel(repo.readiness_state, t)",
|
|
"redactedScope",
|
|
"nextControl",
|
|
"租戶代號",
|
|
"公開名稱",
|
|
"預算狀態",
|
|
"已提交證據參照",
|
|
"完整證據路徑保留在只讀台帳與 guard",
|
|
]:
|
|
assert_text_contains("awooop_tenants_page.source_namespace_redaction", awooop_tenants_page, text)
|
|
for text in [
|
|
"{repo.github_repo}",
|
|
"{repo.source_key}",
|
|
"{repo.source_scope_id}",
|
|
"key={`${repo.source_scope_id}",
|
|
"{repo.risk}",
|
|
"{repo.readiness_state}",
|
|
"{repo.scope_status}",
|
|
"namespace_redacted={String(repo.source_namespace_redacted)}",
|
|
"blocked_waiting_",
|
|
"observe_scope_review",
|
|
"blockers=",
|
|
"repo_owner_namespace_redacted=true",
|
|
"raw_repository_namespace_visible=false",
|
|
"public_api_raw_repo_namespace_allowed=false",
|
|
"{tenant.display_name || \"--\"}",
|
|
"budget?.toLocaleString",
|
|
"minimumFractionDigits",
|
|
"專案 ID",
|
|
"預算上限 (USD)",
|
|
"{item.project_id}",
|
|
"publicAssetText(item.product_name, item.project_id)",
|
|
"publicAssetText(route.product_name, route.product_id)",
|
|
"evidence_refs.map((ref)",
|
|
"{ref}",
|
|
]:
|
|
assert_text_not_contains("awooop_tenants_page.raw_source_control_status_render", awooop_tenants_page, text)
|
|
assert_text_not_contains(
|
|
"awooop_tenants_page.raw_repo_namespace_personal_owner",
|
|
awooop_tenants_page,
|
|
"owenhytsai",
|
|
)
|
|
assert_text_not_contains(
|
|
"awooop_tenants_page.raw_repo_namespace_external_org",
|
|
awooop_tenants_page,
|
|
"nexu-io",
|
|
)
|
|
for text in [
|
|
"source_scope_id",
|
|
"source_namespace_redacted",
|
|
"只讀資產台帳;不修改租戶、路由、主機或專案庫。",
|
|
"公開回應只顯示產品代號、範圍代號與繁中管控狀態",
|
|
"執行期閘門維持關閉",
|
|
]:
|
|
assert_text_contains("platform_operator_service.source_namespace_redaction", platform_operator_service, text)
|
|
for text in [
|
|
"repo_owner_namespace_redacted=true",
|
|
"raw_repository_namespace_visible=false",
|
|
"public_api_raw_repo_namespace_allowed=false",
|
|
"public_product_identity_redacted=true",
|
|
"read_only_inventory_only=true",
|
|
"runtime_execution_authorized=false",
|
|
"action_buttons_allowed=false",
|
|
"public_api_raw_project_slug_allowed=false",
|
|
]:
|
|
assert_text_not_contains("platform_operator_service.raw_boundary_key_leak", platform_operator_service, text)
|
|
for text in ["source_scope_id", "source_namespace_redacted"]:
|
|
assert_text_contains("tenants_api_contract.source_namespace_redaction", tenants_api_contract, text)
|
|
tenant_global_assets_messages_zh = json.dumps(
|
|
web_messages_zh["awooop"]["tenants"]["globalAssets"], ensure_ascii=False
|
|
)
|
|
tenant_global_assets_messages_en = json.dumps(
|
|
web_messages_en["awooop"]["tenants"]["globalAssets"], ensure_ascii=False
|
|
)
|
|
for text in [
|
|
"脫敏原始碼範圍",
|
|
"範圍代號",
|
|
"脫敏範圍代號",
|
|
"已脫敏範圍",
|
|
"下一步管控",
|
|
"待參照一致性證據",
|
|
"待目標與可見性決策",
|
|
"未接受前不得建立專案庫或改可見性",
|
|
"不揭露原始負責人或命名空間",
|
|
"不修改租戶、路由、主機或專案庫",
|
|
"不顯示完整來源字串",
|
|
]:
|
|
assert_text_contains("web_messages.zh-TW.awooop.tenants.global_assets_redaction", tenant_global_assets_messages_zh, text)
|
|
assert_text_contains("web_messages.en.awooop.tenants.global_assets_redaction", tenant_global_assets_messages_en, text)
|
|
|
|
assert_text_contains(
|
|
"awooop_tenants_page.owner_response_validation_scope_panel",
|
|
awooop_tenants_page,
|
|
"OwnerResponseValidationTenantScopePanel",
|
|
)
|
|
assert_text_contains(
|
|
"awooop_tenants_page.owner_response_validation_refs",
|
|
awooop_tenants_page,
|
|
"ownerResponseValidationTenantRefs",
|
|
)
|
|
assert_text_contains(
|
|
"awooop_tenants_page.owner_response_validation_iwooos_link",
|
|
awooop_tenants_page,
|
|
'href="/iwooos"',
|
|
)
|
|
for text in [
|
|
"ownerResponseValidationTenantBoundaries",
|
|
"responseNotReceived",
|
|
"responseNotAccepted",
|
|
"responseNotRejected",
|
|
"tenantScopeWaiting",
|
|
"tenantPolicyLocked",
|
|
"repoCreationLocked",
|
|
"refsSyncLocked",
|
|
"workflowLocked",
|
|
"secretValueBlocked",
|
|
"githubPrimaryLocked",
|
|
"runtimeLocked",
|
|
"actionButtonsLocked",
|
|
]:
|
|
assert_text_contains("awooop_tenants_page.owner_response_validation_boundary", awooop_tenants_page, text)
|
|
for text in [
|
|
"source_control_owner_response_validation_rollup_v1",
|
|
"gitea_inventory_owner_attestation_response_v1",
|
|
"github_target_owner_decision_response_v1",
|
|
"source_control_ref_truth_owner_response_v1",
|
|
"source_control_workflow_secret_name_owner_response_v1",
|
|
"owner_response_validation_received_count=0",
|
|
"owner_response_validation_accepted_count=0",
|
|
"owner_response_validation_rejected_count=0",
|
|
"tenant_source_control_scope_accepted=false",
|
|
"tenant_policy_mutation_authorized=false",
|
|
"repo_creation_authorized=false",
|
|
"refs_sync_authorized=false",
|
|
"workflow_modification_authorized=false",
|
|
"secret_value_collection_allowed=false",
|
|
"github_primary_switch_authorized=false",
|
|
"runtime_execution_authorized=false",
|
|
"action_buttons_allowed=false",
|
|
]:
|
|
assert_text_not_contains("awooop_tenants_page.owner_response_validation_raw_boundary_leak", awooop_tenants_page, text)
|
|
for key in [
|
|
"title",
|
|
"subtitle",
|
|
"badge",
|
|
"openIwooos",
|
|
"scopeRefsTitle",
|
|
"boundaryLabel",
|
|
"boundaryTitle",
|
|
"boundaryDetail",
|
|
"metrics",
|
|
"scopeRefs",
|
|
"boundaryItems",
|
|
]:
|
|
assert_contains(
|
|
"web_messages.zh-TW.awooop.tenants.ownerResponseValidationScope",
|
|
list(web_messages_zh["awooop"]["tenants"]["ownerResponseValidationScope"].keys()),
|
|
key,
|
|
)
|
|
assert_contains(
|
|
"web_messages.en.awooop.tenants.ownerResponseValidationScope",
|
|
list(web_messages_en["awooop"]["tenants"]["ownerResponseValidationScope"].keys()),
|
|
key,
|
|
)
|
|
for key in [
|
|
"responseNotReceived",
|
|
"responseNotAccepted",
|
|
"responseNotRejected",
|
|
"tenantScopeWaiting",
|
|
"tenantPolicyLocked",
|
|
"repoCreationLocked",
|
|
"refsSyncLocked",
|
|
"workflowLocked",
|
|
"secretValueBlocked",
|
|
"githubPrimaryLocked",
|
|
"runtimeLocked",
|
|
"actionButtonsLocked",
|
|
]:
|
|
assert_contains(
|
|
"web_messages.zh-TW.awooop.tenants.ownerResponseValidationScope.boundaryItems",
|
|
list(web_messages_zh["awooop"]["tenants"]["ownerResponseValidationScope"]["boundaryItems"].keys()),
|
|
key,
|
|
)
|
|
assert_contains(
|
|
"web_messages.en.awooop.tenants.ownerResponseValidationScope.boundaryItems",
|
|
list(web_messages_en["awooop"]["tenants"]["ownerResponseValidationScope"]["boundaryItems"].keys()),
|
|
key,
|
|
)
|
|
for key in [
|
|
"validationRollup",
|
|
"giteaAttestation",
|
|
"githubTarget",
|
|
"refsTruth",
|
|
"workflowSecret",
|
|
]:
|
|
assert_contains(
|
|
"web_messages.zh-TW.awooop.tenants.ownerResponseValidationScope.scopeRefs",
|
|
list(web_messages_zh["awooop"]["tenants"]["ownerResponseValidationScope"]["scopeRefs"].keys()),
|
|
key,
|
|
)
|
|
assert_contains(
|
|
"web_messages.en.awooop.tenants.ownerResponseValidationScope.scopeRefs",
|
|
list(web_messages_en["awooop"]["tenants"]["ownerResponseValidationScope"]["scopeRefs"].keys()),
|
|
key,
|
|
)
|
|
|
|
assert_text_contains(
|
|
"awooop_runs_page.security_run_state_panel",
|
|
awooop_runs_page,
|
|
"SecurityRunStateCandidatePanel",
|
|
)
|
|
assert_text_contains("awooop_runs_page.iwooos_link", awooop_runs_page, 'href="/iwooos"')
|
|
for text in [
|
|
"security_run_created=false",
|
|
"execution_router_linked=false",
|
|
"runtime_execution_authorized=false",
|
|
"action_buttons_allowed=false",
|
|
]:
|
|
assert_text_contains("awooop_runs_page.security_run_boundary", awooop_runs_page, text)
|
|
for text in [
|
|
"security_mirror_run_state_candidate",
|
|
"read_only_dry_run_only",
|
|
"S4.9-S4.12 負責人回覆等待中",
|
|
"主動執行期閘門 0",
|
|
]:
|
|
assert_text_contains("awooop_runs_page.security_run_refs", awooop_runs_page, text)
|
|
for key in [
|
|
"title",
|
|
"subtitle",
|
|
"badge",
|
|
"runRefsTitle",
|
|
"boundaryLabel",
|
|
"boundaryTitle",
|
|
"boundaryDetail",
|
|
"openIwooos",
|
|
"metrics",
|
|
"runRefs",
|
|
]:
|
|
assert_contains(
|
|
"web_messages.zh-TW.awooop.runs.securityRunStateCandidate",
|
|
list(web_messages_zh["awooop"]["runs"]["securityRunStateCandidate"].keys()),
|
|
key,
|
|
)
|
|
assert_contains(
|
|
"web_messages.en.awooop.runs.securityRunStateCandidate",
|
|
list(web_messages_en["awooop"]["runs"]["securityRunStateCandidate"].keys()),
|
|
key,
|
|
)
|
|
|
|
assert_text_contains(
|
|
"awooop_runs_page.github_run_boundary_panel",
|
|
awooop_runs_page,
|
|
"GitHubRunReadinessBoundaryPanel",
|
|
)
|
|
assert_text_contains(
|
|
"awooop_runs_page.github_run_boundary_metrics",
|
|
awooop_runs_page,
|
|
"githubRunReadinessMetrics",
|
|
)
|
|
assert_text_contains(
|
|
"awooop_runs_page.github_run_boundary_iwooos_link",
|
|
awooop_runs_page,
|
|
'href="/iwooos"',
|
|
)
|
|
for text in [
|
|
"source_control_primary_readiness_gate_v1",
|
|
"source_control_owner_response_validation_rollup_v1",
|
|
"source_control_workflow_secret_name_inventory_v1",
|
|
"source_control_primary_rollback_adr_v1",
|
|
"security_run_created=false",
|
|
"github_primary_run_created=false",
|
|
"execution_router_linked=false",
|
|
"repo_creation_authorized=false",
|
|
"refs_mutation_authorized=false",
|
|
"workflow_secret_modification_authorized=false",
|
|
"secret_value_collection_allowed=false",
|
|
"github_primary_switch_authorized=false",
|
|
"gitea_disablement_authorized=false",
|
|
"runtime_execution_authorized=false",
|
|
"action_buttons_allowed=false",
|
|
]:
|
|
assert_text_contains("awooop_runs_page.github_run_boundary", awooop_runs_page, text)
|
|
for key in [
|
|
"title",
|
|
"subtitle",
|
|
"badge",
|
|
"openIwooos",
|
|
"runRefsTitle",
|
|
"boundaryLabel",
|
|
"boundaryTitle",
|
|
"boundaryDetail",
|
|
"metrics",
|
|
"runRefs",
|
|
]:
|
|
assert_contains(
|
|
"web_messages.zh-TW.awooop.runs.githubRunReadinessBoundary",
|
|
list(web_messages_zh["awooop"]["runs"]["githubRunReadinessBoundary"].keys()),
|
|
key,
|
|
)
|
|
assert_contains(
|
|
"web_messages.en.awooop.runs.githubRunReadinessBoundary",
|
|
list(web_messages_en["awooop"]["runs"]["githubRunReadinessBoundary"].keys()),
|
|
key,
|
|
)
|
|
|
|
assert_text_contains(
|
|
"awooop_runs_page.owner_response_validation_run_boundary_panel",
|
|
awooop_runs_page,
|
|
"OwnerResponseValidationRunBoundaryPanel",
|
|
)
|
|
assert_text_contains(
|
|
"awooop_runs_page.owner_response_validation_run_refs",
|
|
awooop_runs_page,
|
|
"ownerResponseValidationRunRefs",
|
|
)
|
|
assert_text_contains(
|
|
"awooop_runs_page.owner_response_validation_run_iwooos_link",
|
|
awooop_runs_page,
|
|
'href="/iwooos"',
|
|
)
|
|
for text in [
|
|
"source_control_owner_response_validation_rollup_v1",
|
|
"gitea_inventory_owner_attestation_response_v1",
|
|
"github_target_owner_decision_response_v1",
|
|
"source_control_ref_truth_owner_response_v1",
|
|
"source_control_workflow_secret_name_owner_response_v1",
|
|
"owner_response_validation_received_count=0",
|
|
"owner_response_validation_accepted_count=0",
|
|
"owner_response_validation_rejected_count=0",
|
|
"security_run_created=false",
|
|
"owner_response_validation_run_created=false",
|
|
"platform_run_creation_authorized=false",
|
|
"execution_router_linked=false",
|
|
"approval_record_created=false",
|
|
"repo_creation_authorized=false",
|
|
"refs_sync_authorized=false",
|
|
"workflow_modification_authorized=false",
|
|
"secret_value_collection_allowed=false",
|
|
"github_primary_switch_authorized=false",
|
|
"runtime_execution_authorized=false",
|
|
"action_buttons_allowed=false",
|
|
]:
|
|
assert_text_contains("awooop_runs_page.owner_response_validation_run_boundary", awooop_runs_page, text)
|
|
for key in [
|
|
"title",
|
|
"subtitle",
|
|
"badge",
|
|
"openIwooos",
|
|
"runRefsTitle",
|
|
"boundaryLabel",
|
|
"boundaryTitle",
|
|
"boundaryDetail",
|
|
"metrics",
|
|
"runRefs",
|
|
]:
|
|
assert_contains(
|
|
"web_messages.zh-TW.awooop.runs.ownerResponseValidationRunBoundary",
|
|
list(web_messages_zh["awooop"]["runs"]["ownerResponseValidationRunBoundary"].keys()),
|
|
key,
|
|
)
|
|
assert_contains(
|
|
"web_messages.en.awooop.runs.ownerResponseValidationRunBoundary",
|
|
list(web_messages_en["awooop"]["runs"]["ownerResponseValidationRunBoundary"].keys()),
|
|
key,
|
|
)
|
|
for key in [
|
|
"validationRollup",
|
|
"giteaAttestation",
|
|
"githubTarget",
|
|
"refsTruth",
|
|
"workflowSecret",
|
|
]:
|
|
assert_contains(
|
|
"web_messages.zh-TW.awooop.runs.ownerResponseValidationRunBoundary.runRefs",
|
|
list(web_messages_zh["awooop"]["runs"]["ownerResponseValidationRunBoundary"]["runRefs"].keys()),
|
|
key,
|
|
)
|
|
assert_contains(
|
|
"web_messages.en.awooop.runs.ownerResponseValidationRunBoundary.runRefs",
|
|
list(web_messages_en["awooop"]["runs"]["ownerResponseValidationRunBoundary"]["runRefs"].keys()),
|
|
key,
|
|
)
|
|
|
|
assert_text_contains(
|
|
"awooop_run_detail_page.owner_response_validation_detail_boundary_panel",
|
|
awooop_run_detail_page,
|
|
"OwnerResponseValidationDetailBoundaryPanel",
|
|
)
|
|
assert_text_contains(
|
|
"awooop_run_detail_page.owner_response_validation_detail_refs",
|
|
awooop_run_detail_page,
|
|
"ownerResponseValidationDetailRefs",
|
|
)
|
|
assert_text_contains(
|
|
"awooop_run_detail_page.owner_response_validation_detail_iwooos_link",
|
|
awooop_run_detail_page,
|
|
'href="/iwooos"',
|
|
)
|
|
for text in [
|
|
"source_control_owner_response_validation_rollup_v1",
|
|
"gitea_inventory_owner_attestation_response_v1",
|
|
"github_target_owner_decision_response_v1",
|
|
"source_control_ref_truth_owner_response_v1",
|
|
"source_control_workflow_secret_name_owner_response_v1",
|
|
"owner_response_validation_received_count=0",
|
|
"owner_response_validation_accepted_count=0",
|
|
"owner_response_validation_rejected_count=0",
|
|
"run_detail_owner_response_linked=false",
|
|
"run_detail_approval_record_created=false",
|
|
"mcp_execution_authorized=false",
|
|
"remediation_execution_authorized=false",
|
|
"platform_run_creation_authorized=false",
|
|
"execution_router_linked=false",
|
|
"repo_creation_authorized=false",
|
|
"refs_sync_authorized=false",
|
|
"workflow_modification_authorized=false",
|
|
"secret_value_collection_allowed=false",
|
|
"github_primary_switch_authorized=false",
|
|
"runtime_execution_authorized=false",
|
|
"action_buttons_allowed=false",
|
|
]:
|
|
assert_text_contains("awooop_run_detail_page.owner_response_validation_detail_boundary", awooop_run_detail_page, text)
|
|
for key in [
|
|
"title",
|
|
"subtitle",
|
|
"badge",
|
|
"openIwooos",
|
|
"detailRefsTitle",
|
|
"boundaryLabel",
|
|
"boundaryTitle",
|
|
"boundaryDetail",
|
|
"metrics",
|
|
"detailRefs",
|
|
]:
|
|
assert_contains(
|
|
"web_messages.zh-TW.awooop.runDetail.ownerResponseValidationDetailBoundary",
|
|
list(web_messages_zh["awooop"]["runDetail"]["ownerResponseValidationDetailBoundary"].keys()),
|
|
key,
|
|
)
|
|
assert_contains(
|
|
"web_messages.en.awooop.runDetail.ownerResponseValidationDetailBoundary",
|
|
list(web_messages_en["awooop"]["runDetail"]["ownerResponseValidationDetailBoundary"].keys()),
|
|
key,
|
|
)
|
|
for key in [
|
|
"validationRollup",
|
|
"giteaAttestation",
|
|
"githubTarget",
|
|
"refsTruth",
|
|
"workflowSecret",
|
|
]:
|
|
assert_contains(
|
|
"web_messages.zh-TW.awooop.runDetail.ownerResponseValidationDetailBoundary.detailRefs",
|
|
list(web_messages_zh["awooop"]["runDetail"]["ownerResponseValidationDetailBoundary"]["detailRefs"].keys()),
|
|
key,
|
|
)
|
|
assert_contains(
|
|
"web_messages.en.awooop.runDetail.ownerResponseValidationDetailBoundary.detailRefs",
|
|
list(web_messages_en["awooop"]["runDetail"]["ownerResponseValidationDetailBoundary"]["detailRefs"].keys()),
|
|
key,
|
|
)
|
|
|
|
assert_text_contains(
|
|
"awooop_approval_detail_page.owner_response_validation_decision_panel",
|
|
awooop_approval_detail_page,
|
|
"OwnerResponseValidationDecisionBoundaryPanel",
|
|
)
|
|
assert_text_contains(
|
|
"awooop_approval_detail_page.owner_response_validation_decision_refs",
|
|
awooop_approval_detail_page,
|
|
"ownerResponseValidationDecisionRefs",
|
|
)
|
|
assert_text_contains(
|
|
"awooop_approval_detail_page.owner_response_validation_decision_iwooos_link",
|
|
awooop_approval_detail_page,
|
|
'href="/iwooos"',
|
|
)
|
|
for text in [
|
|
"source_control_owner_response_validation_rollup_v1",
|
|
"gitea_inventory_owner_attestation_response_v1",
|
|
"github_target_owner_decision_response_v1",
|
|
"source_control_ref_truth_owner_response_v1",
|
|
"source_control_workflow_secret_name_owner_response_v1",
|
|
"owner_response_validation_received_count=0",
|
|
"owner_response_validation_accepted_count=0",
|
|
"owner_response_validation_rejected_count=0",
|
|
"approval_decision_owner_response_linked=false",
|
|
"owner_response_acceptance_authorized=false",
|
|
"security_approval_record_created=false",
|
|
"platform_run_creation_authorized=false",
|
|
"execution_router_linked=false",
|
|
"repo_creation_authorized=false",
|
|
"refs_sync_authorized=false",
|
|
"workflow_modification_authorized=false",
|
|
"secret_value_collection_allowed=false",
|
|
"github_primary_switch_authorized=false",
|
|
"runtime_execution_authorized=false",
|
|
"action_buttons_allowed=false",
|
|
]:
|
|
assert_text_contains(
|
|
"awooop_approval_detail_page.owner_response_validation_decision_boundary",
|
|
awooop_approval_detail_page,
|
|
text,
|
|
)
|
|
for key in [
|
|
"title",
|
|
"subtitle",
|
|
"badge",
|
|
"openIwooos",
|
|
"decisionRefsTitle",
|
|
"boundaryLabel",
|
|
"boundaryTitle",
|
|
"boundaryDetail",
|
|
"metrics",
|
|
"decisionRefs",
|
|
]:
|
|
assert_contains(
|
|
"web_messages.zh-TW.awooop.approvalDecision.ownerResponseValidationDecisionBoundary",
|
|
list(web_messages_zh["awooop"]["approvalDecision"]["ownerResponseValidationDecisionBoundary"].keys()),
|
|
key,
|
|
)
|
|
assert_contains(
|
|
"web_messages.en.awooop.approvalDecision.ownerResponseValidationDecisionBoundary",
|
|
list(web_messages_en["awooop"]["approvalDecision"]["ownerResponseValidationDecisionBoundary"].keys()),
|
|
key,
|
|
)
|
|
for key in [
|
|
"validationRollup",
|
|
"giteaAttestation",
|
|
"githubTarget",
|
|
"refsTruth",
|
|
"workflowSecret",
|
|
]:
|
|
assert_contains(
|
|
"web_messages.zh-TW.awooop.approvalDecision.ownerResponseValidationDecisionBoundary.decisionRefs",
|
|
list(
|
|
web_messages_zh["awooop"]["approvalDecision"]["ownerResponseValidationDecisionBoundary"][
|
|
"decisionRefs"
|
|
].keys()
|
|
),
|
|
key,
|
|
)
|
|
assert_contains(
|
|
"web_messages.en.awooop.approvalDecision.ownerResponseValidationDecisionBoundary.decisionRefs",
|
|
list(
|
|
web_messages_en["awooop"]["approvalDecision"]["ownerResponseValidationDecisionBoundary"][
|
|
"decisionRefs"
|
|
].keys()
|
|
),
|
|
key,
|
|
)
|
|
|
|
assert_text_contains("awooop_approvals_page.security_owner_response_panel", awooop_approvals_page, "SecurityOwnerResponseGatePanel")
|
|
assert_text_contains("awooop_approvals_page.iwooos_link", awooop_approvals_page, 'href="/iwooos"')
|
|
assert_text_contains("awooop_approvals_page.security_owner_response_headline_current", awooop_approvals_page, 'value: "64%"')
|
|
for text in [
|
|
"approval_record_created=false",
|
|
"owner_response_accepted_count=0",
|
|
"runtime_execution_authorized=false",
|
|
"action_buttons_allowed=false",
|
|
]:
|
|
assert_text_contains("awooop_approvals_page.security_owner_response_boundary", awooop_approvals_page, text)
|
|
for key in [
|
|
"title",
|
|
"subtitle",
|
|
"badge",
|
|
"ownerChecksTitle",
|
|
"boundaryLabel",
|
|
"boundaryTitle",
|
|
"boundaryDetail",
|
|
"openIwooos",
|
|
"metrics",
|
|
"checks",
|
|
]:
|
|
assert_contains(
|
|
"web_messages.zh-TW.awooop.approvals.securityOwnerResponseGate",
|
|
list(web_messages_zh["awooop"]["approvals"]["securityOwnerResponseGate"].keys()),
|
|
key,
|
|
)
|
|
assert_contains(
|
|
"web_messages.en.awooop.approvals.securityOwnerResponseGate",
|
|
list(web_messages_en["awooop"]["approvals"]["securityOwnerResponseGate"].keys()),
|
|
key,
|
|
)
|
|
|
|
assert_text_contains(
|
|
"awooop_approvals_page.github_primary_boundary_panel",
|
|
awooop_approvals_page,
|
|
"GitHubPrimaryReadinessApprovalBoundaryPanel",
|
|
)
|
|
for text in [
|
|
"approval_record_created=false",
|
|
"github_primary_approval_granted=false",
|
|
"owner_response_accepted_count=0",
|
|
"repo_creation_authorized=false",
|
|
"refs_mutation_authorized=false",
|
|
"secret_value_collection_allowed=false",
|
|
"runtime_execution_authorized=false",
|
|
"action_buttons_allowed=false",
|
|
]:
|
|
assert_text_contains("awooop_approvals_page.github_primary_boundary", awooop_approvals_page, text)
|
|
for text in [
|
|
"S4.9",
|
|
"S4.10",
|
|
"S4.11",
|
|
"S4.12",
|
|
"giteaOwnerAttestation",
|
|
"githubTargetOwner",
|
|
"refsTruthOwner",
|
|
"workflowSecretOwner",
|
|
]:
|
|
assert_text_contains("awooop_approvals_page.github_primary_response_lanes", awooop_approvals_page, text)
|
|
for key in [
|
|
"title",
|
|
"subtitle",
|
|
"badge",
|
|
"responseLanesTitle",
|
|
"boundaryLabel",
|
|
"boundaryTitle",
|
|
"boundaryDetail",
|
|
"openIwooos",
|
|
"metrics",
|
|
"responseLanes",
|
|
]:
|
|
assert_contains(
|
|
"web_messages.zh-TW.awooop.approvals.githubPrimaryReadinessGate",
|
|
list(web_messages_zh["awooop"]["approvals"]["githubPrimaryReadinessGate"].keys()),
|
|
key,
|
|
)
|
|
assert_contains(
|
|
"web_messages.en.awooop.approvals.githubPrimaryReadinessGate",
|
|
list(web_messages_en["awooop"]["approvals"]["githubPrimaryReadinessGate"].keys()),
|
|
key,
|
|
)
|
|
|
|
assert_text_contains(
|
|
"awooop_approvals_page.owner_response_validation_boundary_panel",
|
|
awooop_approvals_page,
|
|
"OwnerResponseValidationApprovalBoundaryPanel",
|
|
)
|
|
assert_text_contains("awooop_approvals_page.owner_response_validation_iwooos_link", awooop_approvals_page, 'href="/iwooos"')
|
|
for text in [
|
|
"owner_response_validation_received_count=0",
|
|
"owner_response_validation_accepted_count=0",
|
|
"owner_response_validation_rejected_count=0",
|
|
"approval_record_created=false",
|
|
"repo_creation_authorized=false",
|
|
"refs_sync_authorized=false",
|
|
"workflow_modification_authorized=false",
|
|
"secret_value_collection_allowed=false",
|
|
"github_primary_switch_authorized=false",
|
|
"runtime_execution_authorized=false",
|
|
"action_buttons_allowed=false",
|
|
]:
|
|
assert_text_contains("awooop_approvals_page.owner_response_validation_boundary", awooop_approvals_page, text)
|
|
for text in [
|
|
"source_control_owner_response_validation_rollup_v1",
|
|
"gitea_inventory_owner_attestation_response_v1",
|
|
"github_target_owner_decision_response_v1",
|
|
"source_control_ref_truth_owner_response_v1",
|
|
"source_control_workflow_secret_name_owner_response_v1",
|
|
]:
|
|
assert_text_contains("awooop_approvals_page.owner_response_validation_refs", awooop_approvals_page, text)
|
|
for key in [
|
|
"title",
|
|
"subtitle",
|
|
"badge",
|
|
"reviewRefsTitle",
|
|
"boundaryLabel",
|
|
"boundaryTitle",
|
|
"boundaryDetail",
|
|
"openIwooos",
|
|
"metrics",
|
|
"reviewRefs",
|
|
]:
|
|
assert_contains(
|
|
"web_messages.zh-TW.awooop.approvals.ownerResponseValidationBoundary",
|
|
list(web_messages_zh["awooop"]["approvals"]["ownerResponseValidationBoundary"].keys()),
|
|
key,
|
|
)
|
|
assert_contains(
|
|
"web_messages.en.awooop.approvals.ownerResponseValidationBoundary",
|
|
list(web_messages_en["awooop"]["approvals"]["ownerResponseValidationBoundary"].keys()),
|
|
key,
|
|
)
|
|
|
|
assert_text_contains("awooop_contracts_page.security_contract_candidate_panel", awooop_contracts_page, "SecurityContractCandidatePanel")
|
|
assert_text_contains("awooop_contracts_page.iwooos_link", awooop_contracts_page, 'href="/iwooos"')
|
|
assert_text_contains("awooop_contracts_page.project_header_traditional_chinese", awooop_contracts_page, "專案 ID")
|
|
assert_text_contains("awooop_contracts_page.hash_header_traditional_chinese", awooop_contracts_page, "雜湊")
|
|
assert_text_not_contains("awooop_contracts_page.project_header_english", awooop_contracts_page, "Project ID")
|
|
assert_text_not_contains("awooop_contracts_page.hash_header_english", awooop_contracts_page, ">Hash<")
|
|
for text in [
|
|
"contract_publish_authorized=false",
|
|
"contract_mutation_authorized=false",
|
|
"runtime_execution_authorized=false",
|
|
"action_buttons_allowed=false",
|
|
]:
|
|
assert_text_contains("awooop_contracts_page.security_contract_boundary", awooop_contracts_page, text)
|
|
for text in [
|
|
"security_mirror_status_rollup_v1",
|
|
"iwooos_posture_projection_v1",
|
|
"source_control_owner_response_validation_rollup_v1",
|
|
"security_rollout_policy_v1",
|
|
]:
|
|
assert_text_contains("awooop_contracts_page.security_contract_refs", awooop_contracts_page, text)
|
|
for key in [
|
|
"title",
|
|
"subtitle",
|
|
"badge",
|
|
"contractRefsTitle",
|
|
"boundaryLabel",
|
|
"boundaryTitle",
|
|
"boundaryDetail",
|
|
"openIwooos",
|
|
"metrics",
|
|
"contractRefs",
|
|
]:
|
|
assert_contains(
|
|
"web_messages.zh-TW.awooop.contracts.securityContractCandidate",
|
|
list(web_messages_zh["awooop"]["contracts"]["securityContractCandidate"].keys()),
|
|
key,
|
|
)
|
|
assert_contains(
|
|
"web_messages.en.awooop.contracts.securityContractCandidate",
|
|
list(web_messages_en["awooop"]["contracts"]["securityContractCandidate"].keys()),
|
|
key,
|
|
)
|
|
|
|
assert_text_contains(
|
|
"awooop_contracts_page.github_primary_readiness_candidate_panel",
|
|
awooop_contracts_page,
|
|
"GitHubPrimaryReadinessContractCandidatePanel",
|
|
)
|
|
for text in [
|
|
"repo_creation_authorized=false",
|
|
"refs_mutation_authorized=false",
|
|
"secret_value_collection_allowed=false",
|
|
"github_primary_switch_authorized=false",
|
|
"gitea_disablement_authorized=false",
|
|
"runtime_execution_authorized=false",
|
|
"action_buttons_allowed=false",
|
|
]:
|
|
assert_text_contains("awooop_contracts_page.github_primary_boundary", awooop_contracts_page, text)
|
|
for text in [
|
|
"source_control_primary_readiness_gate_v1",
|
|
"source_control_owner_response_validation_rollup_v1",
|
|
"source_control_primary_rollback_adr_v1",
|
|
"source_control_workflow_secret_name_inventory_v1",
|
|
"iwooos_posture_projection_v1",
|
|
]:
|
|
assert_text_contains("awooop_contracts_page.github_primary_refs", awooop_contracts_page, text)
|
|
for key in [
|
|
"title",
|
|
"subtitle",
|
|
"badge",
|
|
"contractRefsTitle",
|
|
"boundaryLabel",
|
|
"boundaryTitle",
|
|
"boundaryDetail",
|
|
"openIwooos",
|
|
"metrics",
|
|
"contractRefs",
|
|
]:
|
|
assert_contains(
|
|
"web_messages.zh-TW.awooop.contracts.githubPrimaryReadinessCandidate",
|
|
list(web_messages_zh["awooop"]["contracts"]["githubPrimaryReadinessCandidate"].keys()),
|
|
key,
|
|
)
|
|
assert_contains(
|
|
"web_messages.en.awooop.contracts.githubPrimaryReadinessCandidate",
|
|
list(web_messages_en["awooop"]["contracts"]["githubPrimaryReadinessCandidate"].keys()),
|
|
key,
|
|
)
|
|
|
|
assert_text_contains(
|
|
"awooop_contracts_page.owner_response_validation_candidate_panel",
|
|
awooop_contracts_page,
|
|
"OwnerResponseValidationContractCandidatePanel",
|
|
)
|
|
for text in [
|
|
"owner_response_validation_received_count=0",
|
|
"owner_response_validation_accepted_count=0",
|
|
"approval_record_created=false",
|
|
"repo_creation_authorized=false",
|
|
"refs_sync_authorized=false",
|
|
"workflow_modification_authorized=false",
|
|
"secret_value_collection_allowed=false",
|
|
"github_primary_switch_authorized=false",
|
|
"runtime_execution_authorized=false",
|
|
"action_buttons_allowed=false",
|
|
]:
|
|
assert_text_contains("awooop_contracts_page.owner_response_validation_boundary", awooop_contracts_page, text)
|
|
for text in [
|
|
"source_control_owner_response_validation_rollup_v1",
|
|
"gitea_inventory_owner_attestation_response_v1",
|
|
"github_target_owner_decision_response_v1",
|
|
"source_control_ref_truth_owner_response_v1",
|
|
"source_control_workflow_secret_name_owner_response_v1",
|
|
]:
|
|
assert_text_contains("awooop_contracts_page.owner_response_validation_refs", awooop_contracts_page, text)
|
|
for key in [
|
|
"title",
|
|
"subtitle",
|
|
"badge",
|
|
"contractRefsTitle",
|
|
"boundaryLabel",
|
|
"boundaryTitle",
|
|
"boundaryDetail",
|
|
"openIwooos",
|
|
"metrics",
|
|
"contractRefs",
|
|
]:
|
|
assert_contains(
|
|
"web_messages.zh-TW.awooop.contracts.ownerResponseValidationCandidate",
|
|
list(web_messages_zh["awooop"]["contracts"]["ownerResponseValidationCandidate"].keys()),
|
|
key,
|
|
)
|
|
assert_contains(
|
|
"web_messages.en.awooop.contracts.ownerResponseValidationCandidate",
|
|
list(web_messages_en["awooop"]["contracts"]["ownerResponseValidationCandidate"].keys()),
|
|
key,
|
|
)
|
|
|
|
assert_text_contains("iwooos_bridge.component", iwooos_bridge, "IwoooSReadOnlyBridge")
|
|
assert_text_contains("iwooos_bridge.testid", iwooos_bridge, 'data-testid="iwooos-read-only-bridge"')
|
|
assert_text_contains("iwooos_bridge.iwooos_link", iwooos_bridge, 'href="/iwooos"')
|
|
assert_text_contains("iwooos_bridge.overall_current", iwooos_bridge, "value: '64%'")
|
|
assert_text_contains("iwooos_bridge.framework_current", iwooos_bridge, "value: '92%'")
|
|
for text in [
|
|
"runtime_execution_authorized=false",
|
|
"active_runtime_gate_count=0",
|
|
"action_buttons_allowed=false",
|
|
"not_authorization=true",
|
|
]:
|
|
assert_text_contains("iwooos_bridge.boundary", iwooos_bridge, text)
|
|
for source_text in [
|
|
security_panel,
|
|
compliance_panel,
|
|
standalone_security_page,
|
|
standalone_compliance_page,
|
|
]:
|
|
assert_text_contains("existing_security_pages.iwooos_bridge_import", source_text, "IwoooSReadOnlyBridge")
|
|
assert_text_contains("existing_security_pages.iwooos_bridge_render", source_text, "<IwoooSReadOnlyBridge />")
|
|
for source_text in [
|
|
alerts_page,
|
|
authorizations_page,
|
|
governance_page,
|
|
errors_panel,
|
|
]:
|
|
assert_text_contains("security_control_pages.iwooos_bridge_import", source_text, "IwoooSReadOnlyBridge")
|
|
assert_text_contains("security_control_pages.iwooos_bridge_render", source_text, "<IwoooSReadOnlyBridge />")
|
|
for source_text in [
|
|
alert_operation_logs_page,
|
|
code_review_page,
|
|
]:
|
|
assert_text_contains("audit_engineering_pages.iwooos_bridge_import", source_text, "IwoooSReadOnlyBridge")
|
|
assert_text_contains(
|
|
"audit_engineering_pages.iwooos_bridge_render",
|
|
source_text,
|
|
'<IwoooSReadOnlyBridge variant="dark" />',
|
|
)
|
|
code_review_surface_text = "\n".join(
|
|
[
|
|
code_review_page,
|
|
"\n".join(collect_string_values(web_messages_zh.get("codeReview", {}))),
|
|
]
|
|
)
|
|
for text in [
|
|
'data-testid="code-review-codex-handoff-board"',
|
|
'data-testid="code-review-codex-candidate-work"',
|
|
"codex_handoff_mode=read_only_candidate",
|
|
"codex_auto_coding_enabled=false",
|
|
"runtime_execution_authorized=false",
|
|
"production_deploy_authorized=false",
|
|
"action_buttons_allowed=false",
|
|
"CR-CX-04",
|
|
]:
|
|
assert_text_contains("code_review_page.codex_handoff_structure", code_review_page, text)
|
|
for text in [
|
|
"審查後 Coding 工作橋接",
|
|
"Codex 工作草稿",
|
|
"可交給 Codex 起草",
|
|
"需人工批准後接手",
|
|
"禁止自動轉工作",
|
|
"前端體驗、測試補洞、文件同步、低風險重構",
|
|
"Kali 更新、掃描、GitHub primary、正式部署",
|
|
"維持只讀候選與人工閘門",
|
|
]:
|
|
assert_text_contains("code_review_page.codex_handoff_read_only", code_review_surface_text, text)
|
|
assert_text_contains("iwooos_page.surface_connection_board", iwooos_projection_page, "surfaceConnectionStatuses")
|
|
assert_text_contains("iwooos_page.surface_connection_testid", iwooos_projection_page, 'data-testid="iwooos-surface-connection-board"')
|
|
assert_text_contains("iwooos_page.surface_connection_embedded", iwooos_projection_page, "embeddedBridge")
|
|
assert_text_contains("iwooos_page.surface_connection_direct", iwooos_projection_page, "directBridge")
|
|
assert_text_contains("iwooos_page.surface_connection_awooop", iwooos_projection_page, "awooopCandidate")
|
|
assert_text_contains("iwooos_page.code_review_handoff_surface_testid", iwooos_projection_page, "iwooos-code-review-handoff-surface-card")
|
|
assert_text_contains("iwooos_page.code_review_handoff_surface_state", iwooos_projection_page, "reviewHandoffCandidate")
|
|
assert_text_contains("iwooos_page.source_control_readiness_board", iwooos_projection_page, "sourceControlReadinessItems")
|
|
assert_text_contains(
|
|
"iwooos_page.source_control_readiness_testid",
|
|
iwooos_projection_page,
|
|
'data-testid="iwooos-source-control-readiness-board"',
|
|
)
|
|
assert_text_contains("iwooos_page.source_control_readiness_component", iwooos_projection_page, "SourceControlReadinessCard")
|
|
assert_text_contains("iwooos_page.awooop_coverage_board", iwooos_projection_page, "awooopCoverageStatuses")
|
|
assert_text_contains(
|
|
"iwooos_page.awooop_coverage_testid",
|
|
iwooos_projection_page,
|
|
'data-testid="iwooos-awooop-coverage-board"',
|
|
)
|
|
assert_text_contains("iwooos_page.awooop_coverage_component", iwooos_projection_page, "AwoooPCoverageStatusCard")
|
|
for text in [
|
|
"/awooop",
|
|
"/awooop/work-items",
|
|
"/awooop/contracts",
|
|
"/awooop/tenants",
|
|
"/awooop/runs",
|
|
"/awooop/runs/[run_id]",
|
|
"/awooop/approvals",
|
|
"/awooop/approvals/[run_id]",
|
|
"awooop_route_coverage_count=8",
|
|
"awooop_route_coverage_visible_count=8",
|
|
"runtime_execution_authorized=false",
|
|
"active_runtime_gate_count=0",
|
|
"action_buttons_allowed=false",
|
|
"not_authorization=true",
|
|
"repo_creation_authorized=false",
|
|
"refs_sync_authorized=false",
|
|
"workflow_modification_authorized=false",
|
|
"secret_value_collection_allowed=false",
|
|
"github_primary_switch_authorized=false",
|
|
"gitea_disablement_authorized=false",
|
|
]:
|
|
assert_text_contains("iwooos_page.awooop_coverage_boundary", iwooos_projection_page, text)
|
|
assert_text_contains("iwooos_page.security_convergence_steps", iwooos_projection_page, "securityConvergenceSteps")
|
|
assert_text_contains(
|
|
"iwooos_page.security_convergence_testid",
|
|
iwooos_projection_page,
|
|
'data-testid="iwooos-security-convergence-roadmap"',
|
|
)
|
|
assert_text_contains(
|
|
"iwooos_page.security_convergence_component",
|
|
iwooos_projection_page,
|
|
"SecurityConvergenceRoadmapBoard",
|
|
)
|
|
for text in [
|
|
"phase_tightening_mode=gradual",
|
|
"initial_enforcement_level=observe_warn_only",
|
|
"blocking_controls_enabled=false",
|
|
"runtime_execution_authorized=false",
|
|
"active_runtime_gate_count=0",
|
|
"action_buttons_allowed=false",
|
|
"owner_response_required_before_blocking=true",
|
|
"not_authorization=true",
|
|
"kali_execute_authorized=false",
|
|
"host_update_authorized=false",
|
|
"github_primary_switch_authorized=false",
|
|
"gitea_disablement_authorized=false",
|
|
]:
|
|
assert_text_contains("iwooos_page.security_convergence_boundary", iwooos_projection_page, text)
|
|
assert_text_contains(
|
|
"iwooos_page.owner_response_collection_packets",
|
|
iwooos_projection_page,
|
|
"ownerResponseCollectionPackets",
|
|
)
|
|
assert_text_contains(
|
|
"iwooos_page.owner_response_collection_testid",
|
|
iwooos_projection_page,
|
|
'data-testid="iwooos-owner-response-collection-board"',
|
|
)
|
|
assert_text_contains(
|
|
"iwooos_page.owner_response_collection_component",
|
|
iwooos_projection_page,
|
|
"OwnerResponseCollectionBoard",
|
|
)
|
|
for text in [
|
|
"owner_response_collection_packet_count=4",
|
|
"owner_response_required_template_count=24",
|
|
"owner_response_received_count=0",
|
|
"owner_response_accepted_count=0",
|
|
"owner_response_rejected_count=0",
|
|
"owner_response_collection_mode=human_intake_only",
|
|
"request_packet_visible=true",
|
|
"response_packet_created=false",
|
|
"runtime_execution_authorized=false",
|
|
"active_runtime_gate_count=0",
|
|
"action_buttons_allowed=false",
|
|
"not_authorization=true",
|
|
"secret_value_collection_allowed=false",
|
|
"repo_creation_authorized=false",
|
|
"refs_sync_authorized=false",
|
|
"workflow_modification_authorized=false",
|
|
]:
|
|
assert_text_contains("iwooos_page.owner_response_collection_boundary", iwooos_projection_page, text)
|
|
assert_text_contains(
|
|
"iwooos_page.owner_response_intake_safety_rules",
|
|
iwooos_projection_page,
|
|
"ownerResponseIntakeSafetyRules",
|
|
)
|
|
assert_text_contains(
|
|
"iwooos_page.owner_response_intake_safety_testid",
|
|
iwooos_projection_page,
|
|
'data-testid="iwooos-owner-response-intake-safety-board"',
|
|
)
|
|
assert_text_contains(
|
|
"iwooos_page.owner_response_intake_safety_component",
|
|
iwooos_projection_page,
|
|
"OwnerResponseIntakeSafetyBoard",
|
|
)
|
|
for text in [
|
|
"owner_response_intake_safety_rule_count=6",
|
|
"owner_response_payload_ingested_count=0",
|
|
"owner_response_quarantine_count=0",
|
|
"owner_response_rejection_count=0",
|
|
"owner_response_auto_accept_allowed=false",
|
|
"owner_response_secret_value_quarantine_required=true",
|
|
"owner_response_mutation_request_allowed=false",
|
|
"runtime_execution_authorized=false",
|
|
"active_runtime_gate_count=0",
|
|
"action_buttons_allowed=false",
|
|
"not_authorization=true",
|
|
"secret_value_collection_allowed=false",
|
|
"repo_creation_authorized=false",
|
|
"refs_sync_authorized=false",
|
|
"workflow_modification_authorized=false",
|
|
"kali_execute_authorized=false",
|
|
]:
|
|
assert_text_contains("iwooos_page.owner_response_intake_safety_boundary", iwooos_projection_page, text)
|
|
assert_text_contains(
|
|
"iwooos_page.owner_response_review_outcome_lanes",
|
|
iwooos_projection_page,
|
|
"ownerResponseReviewOutcomeLanes",
|
|
)
|
|
assert_text_contains(
|
|
"iwooos_page.owner_response_review_outcome_testid",
|
|
iwooos_projection_page,
|
|
'data-testid="iwooos-owner-response-review-outcome-board"',
|
|
)
|
|
assert_text_contains(
|
|
"iwooos_page.owner_response_review_outcome_component",
|
|
iwooos_projection_page,
|
|
"OwnerResponseReviewOutcomeBoard",
|
|
)
|
|
for text in [
|
|
"owner_response_review_outcome_lane_count=7",
|
|
"owner_response_review_ready_count=0",
|
|
"owner_response_review_accepted_count=0",
|
|
"owner_response_review_escalated_count=0",
|
|
"owner_response_review_runtime_gate_count=0",
|
|
"owner_response_review_auto_decision_allowed=false",
|
|
"owner_response_review_human_decision_required=true",
|
|
"owner_response_review_only_updates_readonly_state=true",
|
|
"runtime_execution_authorized=false",
|
|
"active_runtime_gate_count=0",
|
|
"action_buttons_allowed=false",
|
|
"not_authorization=true",
|
|
"repo_creation_authorized=false",
|
|
"refs_sync_authorized=false",
|
|
"workflow_modification_authorized=false",
|
|
"github_primary_switch_authorized=false",
|
|
]:
|
|
assert_text_contains("iwooos_page.owner_response_review_outcome_boundary", iwooos_projection_page, text)
|
|
assert_text_contains(
|
|
"iwooos_page.owner_response_human_decision_queue_items",
|
|
iwooos_projection_page,
|
|
"ownerResponseHumanDecisionQueueItems",
|
|
)
|
|
assert_text_contains(
|
|
"iwooos_page.owner_response_human_decision_queue_testid",
|
|
iwooos_projection_page,
|
|
'data-testid="iwooos-owner-response-human-decision-queue-board"',
|
|
)
|
|
assert_text_contains(
|
|
"iwooos_page.owner_response_human_decision_queue_component",
|
|
iwooos_projection_page,
|
|
"OwnerResponseHumanDecisionQueueBoard",
|
|
)
|
|
for text in [
|
|
"owner_response_human_decision_queue_item_count=6",
|
|
"owner_response_human_decision_ready_count=0",
|
|
"owner_response_human_decision_approved_count=0",
|
|
"owner_response_human_decision_runtime_gate_count=0",
|
|
"owner_response_human_decision_record_created=false",
|
|
"owner_response_human_decision_auto_approval_allowed=false",
|
|
"owner_response_human_decision_requires_reviewer=true",
|
|
"owner_response_human_decision_only_prepares_packet=true",
|
|
"runtime_execution_authorized=false",
|
|
"active_runtime_gate_count=0",
|
|
"action_buttons_allowed=false",
|
|
"not_authorization=true",
|
|
"repo_creation_authorized=false",
|
|
"refs_sync_authorized=false",
|
|
"workflow_modification_authorized=false",
|
|
"github_primary_switch_authorized=false",
|
|
"gitea_disablement_authorized=false",
|
|
]:
|
|
assert_text_contains("iwooos_page.owner_response_human_decision_queue_boundary", iwooos_projection_page, text)
|
|
assert_text_contains(
|
|
"iwooos_page.owner_response_decision_record_draft_guard_items",
|
|
iwooos_projection_page,
|
|
"ownerResponseDecisionRecordDraftGuardItems",
|
|
)
|
|
assert_text_contains(
|
|
"iwooos_page.owner_response_decision_record_draft_guard_testid",
|
|
iwooos_projection_page,
|
|
'data-testid="iwooos-owner-response-decision-record-draft-guard-board"',
|
|
)
|
|
assert_text_contains(
|
|
"iwooos_page.owner_response_decision_record_draft_guard_component",
|
|
iwooos_projection_page,
|
|
"OwnerResponseDecisionRecordDraftGuardBoard",
|
|
)
|
|
for text in [
|
|
"owner_response_decision_record_draft_guard_count=6",
|
|
"owner_response_decision_record_draft_created_count=0",
|
|
"owner_response_decision_record_formal_count=0",
|
|
"owner_response_decision_record_approved_count=0",
|
|
"owner_response_decision_record_runtime_gate_count=0",
|
|
"owner_response_decision_record_draft_only=true",
|
|
"owner_response_decision_record_write_authorized=false",
|
|
"owner_response_decision_record_execution_authorized=false",
|
|
"runtime_execution_authorized=false",
|
|
"active_runtime_gate_count=0",
|
|
"action_buttons_allowed=false",
|
|
"not_authorization=true",
|
|
"repo_creation_authorized=false",
|
|
"refs_sync_authorized=false",
|
|
"workflow_modification_authorized=false",
|
|
"github_primary_switch_authorized=false",
|
|
"gitea_disablement_authorized=false",
|
|
]:
|
|
assert_text_contains(
|
|
"iwooos_page.owner_response_decision_record_draft_guard_boundary",
|
|
iwooos_projection_page,
|
|
text,
|
|
)
|
|
assert_text_contains(
|
|
"iwooos_page.owner_response_formal_record_candidate_preflight_items",
|
|
iwooos_projection_page,
|
|
"ownerResponseFormalRecordCandidatePreflightItems",
|
|
)
|
|
assert_text_contains(
|
|
"iwooos_page.owner_response_formal_record_candidate_preflight_testid",
|
|
iwooos_projection_page,
|
|
'data-testid="iwooos-owner-response-formal-record-candidate-preflight-board"',
|
|
)
|
|
assert_text_contains(
|
|
"iwooos_page.owner_response_formal_record_candidate_preflight_component",
|
|
iwooos_projection_page,
|
|
"OwnerResponseFormalRecordCandidatePreflightBoard",
|
|
)
|
|
for text in [
|
|
"owner_response_formal_record_candidate_preflight_count=7",
|
|
"owner_response_formal_record_candidate_count=0",
|
|
"owner_response_formal_record_created_count=0",
|
|
"owner_response_formal_record_approved_count=0",
|
|
"owner_response_formal_record_runtime_gate_count=0",
|
|
"owner_response_formal_record_candidate_only=true",
|
|
"owner_response_formal_record_write_authorized=false",
|
|
"owner_response_formal_record_approval_authorized=false",
|
|
"owner_response_formal_record_execution_authorized=false",
|
|
"runtime_execution_authorized=false",
|
|
"active_runtime_gate_count=0",
|
|
"action_buttons_allowed=false",
|
|
"not_authorization=true",
|
|
"repo_creation_authorized=false",
|
|
"refs_sync_authorized=false",
|
|
"workflow_modification_authorized=false",
|
|
"github_primary_switch_authorized=false",
|
|
"gitea_disablement_authorized=false",
|
|
]:
|
|
assert_text_contains(
|
|
"iwooos_page.owner_response_formal_record_candidate_preflight_boundary",
|
|
iwooos_projection_page,
|
|
text,
|
|
)
|
|
assert_text_contains(
|
|
"iwooos_page.owner_response_formal_record_candidate_outcome_lanes",
|
|
iwooos_projection_page,
|
|
"ownerResponseFormalRecordCandidateOutcomeLanes",
|
|
)
|
|
assert_text_contains(
|
|
"iwooos_page.owner_response_formal_record_candidate_outcome_testid",
|
|
iwooos_projection_page,
|
|
'data-testid="iwooos-owner-response-formal-record-candidate-outcome-board"',
|
|
)
|
|
assert_text_contains(
|
|
"iwooos_page.owner_response_formal_record_candidate_outcome_component",
|
|
iwooos_projection_page,
|
|
"OwnerResponseFormalRecordCandidateOutcomeBoard",
|
|
)
|
|
for text in [
|
|
"owner_response_formal_record_candidate_outcome_lane_count=8",
|
|
"owner_response_formal_record_candidate_ready_count=0",
|
|
"owner_response_formal_record_candidate_returned_count=0",
|
|
"owner_response_formal_record_candidate_quarantine_count=0",
|
|
"owner_response_formal_record_candidate_rejected_count=0",
|
|
"owner_response_formal_record_candidate_promoted_count=0",
|
|
"owner_response_formal_record_candidate_review_only=true",
|
|
"owner_response_formal_record_auto_promotion_allowed=false",
|
|
"owner_response_formal_record_write_authorized=false",
|
|
"owner_response_formal_record_approval_authorized=false",
|
|
"owner_response_formal_record_execution_authorized=false",
|
|
"runtime_execution_authorized=false",
|
|
"active_runtime_gate_count=0",
|
|
"action_buttons_allowed=false",
|
|
"not_authorization=true",
|
|
"secret_value_collection_allowed=false",
|
|
"repo_creation_authorized=false",
|
|
"refs_sync_authorized=false",
|
|
"workflow_modification_authorized=false",
|
|
"github_primary_switch_authorized=false",
|
|
"gitea_disablement_authorized=false",
|
|
]:
|
|
assert_text_contains(
|
|
"iwooos_page.owner_response_formal_record_candidate_outcome_boundary",
|
|
iwooos_projection_page,
|
|
text,
|
|
)
|
|
assert_text_contains(
|
|
"iwooos_page.owner_response_formal_record_owner_handoff_packets",
|
|
iwooos_projection_page,
|
|
"ownerResponseFormalRecordOwnerHandoffPackets",
|
|
)
|
|
assert_text_contains(
|
|
"iwooos_page.owner_response_formal_record_owner_handoff_testid",
|
|
iwooos_projection_page,
|
|
'data-testid="iwooos-owner-response-formal-record-owner-handoff-board"',
|
|
)
|
|
assert_text_contains(
|
|
"iwooos_page.owner_response_formal_record_owner_handoff_component",
|
|
iwooos_projection_page,
|
|
"OwnerResponseFormalRecordOwnerHandoffBoard",
|
|
)
|
|
for text in [
|
|
"owner_response_formal_record_owner_handoff_packet_count=7",
|
|
"owner_response_formal_record_owner_handoff_ready_count=0",
|
|
"owner_response_formal_record_owner_assigned_count=0",
|
|
"owner_response_formal_record_created_count=0",
|
|
"owner_response_formal_record_approved_count=0",
|
|
"owner_response_formal_record_runtime_gate_count=0",
|
|
"owner_response_formal_record_owner_handoff_only=true",
|
|
"owner_response_formal_record_owner_assignment_authorized=false",
|
|
"owner_response_formal_record_write_authorized=false",
|
|
"owner_response_formal_record_approval_authorized=false",
|
|
"owner_response_formal_record_execution_authorized=false",
|
|
"runtime_execution_authorized=false",
|
|
"active_runtime_gate_count=0",
|
|
"action_buttons_allowed=false",
|
|
"not_authorization=true",
|
|
"secret_value_collection_allowed=false",
|
|
"repo_creation_authorized=false",
|
|
"refs_sync_authorized=false",
|
|
"workflow_modification_authorized=false",
|
|
"github_primary_switch_authorized=false",
|
|
"gitea_disablement_authorized=false",
|
|
]:
|
|
assert_text_contains(
|
|
"iwooos_page.owner_response_formal_record_owner_handoff_boundary",
|
|
iwooos_projection_page,
|
|
text,
|
|
)
|
|
assert_text_contains(
|
|
"iwooos_page.owner_response_formal_record_owner_handoff_review_items",
|
|
iwooos_projection_page,
|
|
"ownerResponseFormalRecordOwnerHandoffReviewItems",
|
|
)
|
|
assert_text_contains(
|
|
"iwooos_page.owner_response_formal_record_owner_handoff_review_testid",
|
|
iwooos_projection_page,
|
|
'data-testid="iwooos-owner-response-formal-record-owner-handoff-review-board"',
|
|
)
|
|
assert_text_contains(
|
|
"iwooos_page.owner_response_formal_record_owner_handoff_review_component",
|
|
iwooos_projection_page,
|
|
"OwnerResponseFormalRecordOwnerHandoffReviewBoard",
|
|
)
|
|
for text in [
|
|
"owner_response_formal_record_owner_handoff_review_check_count=7",
|
|
"owner_response_formal_record_owner_handoff_review_passed_count=0",
|
|
"owner_response_formal_record_owner_assigned_count=0",
|
|
"owner_response_formal_record_created_count=0",
|
|
"owner_response_formal_record_approved_count=0",
|
|
"owner_response_formal_record_runtime_gate_count=0",
|
|
"owner_response_formal_record_owner_handoff_review_only=true",
|
|
"owner_response_formal_record_owner_assignment_authorized=false",
|
|
"owner_response_formal_record_write_authorized=false",
|
|
"owner_response_formal_record_approval_authorized=false",
|
|
"owner_response_formal_record_execution_authorized=false",
|
|
"runtime_execution_authorized=false",
|
|
"active_runtime_gate_count=0",
|
|
"action_buttons_allowed=false",
|
|
"not_authorization=true",
|
|
"secret_value_collection_allowed=false",
|
|
"repo_creation_authorized=false",
|
|
"refs_sync_authorized=false",
|
|
"workflow_modification_authorized=false",
|
|
"github_primary_switch_authorized=false",
|
|
"gitea_disablement_authorized=false",
|
|
]:
|
|
assert_text_contains(
|
|
"iwooos_page.owner_response_formal_record_owner_handoff_review_boundary",
|
|
iwooos_projection_page,
|
|
text,
|
|
)
|
|
assert_text_contains(
|
|
"iwooos_page.owner_response_formal_record_owner_handoff_review_outcome_lanes",
|
|
iwooos_projection_page,
|
|
"ownerResponseFormalRecordOwnerHandoffReviewOutcomeLanes",
|
|
)
|
|
assert_text_contains(
|
|
"iwooos_page.owner_response_formal_record_owner_handoff_review_outcome_testid",
|
|
iwooos_projection_page,
|
|
'data-testid="iwooos-owner-response-formal-record-owner-handoff-review-outcome-board"',
|
|
)
|
|
assert_text_contains(
|
|
"iwooos_page.owner_response_formal_record_owner_handoff_review_outcome_component",
|
|
iwooos_projection_page,
|
|
"OwnerResponseFormalRecordOwnerHandoffReviewOutcomeBoard",
|
|
)
|
|
for text in [
|
|
"owner_response_formal_record_owner_handoff_review_outcome_lane_count=8",
|
|
"owner_response_formal_record_owner_handoff_review_ready_count=0",
|
|
"owner_response_formal_record_owner_handoff_review_returned_count=0",
|
|
"owner_response_formal_record_owner_handoff_review_quarantine_count=0",
|
|
"owner_response_formal_record_owner_handoff_review_rejected_count=0",
|
|
"owner_response_formal_record_owner_handoff_review_promoted_count=0",
|
|
"owner_response_formal_record_owner_handoff_review_outcome_only=true",
|
|
"owner_response_formal_record_owner_assignment_authorized=false",
|
|
"owner_response_formal_record_write_authorized=false",
|
|
"owner_response_formal_record_approval_authorized=false",
|
|
"owner_response_formal_record_execution_authorized=false",
|
|
"runtime_execution_authorized=false",
|
|
"active_runtime_gate_count=0",
|
|
"action_buttons_allowed=false",
|
|
"not_authorization=true",
|
|
"secret_value_collection_allowed=false",
|
|
"repo_creation_authorized=false",
|
|
"refs_sync_authorized=false",
|
|
"workflow_modification_authorized=false",
|
|
"github_primary_switch_authorized=false",
|
|
"gitea_disablement_authorized=false",
|
|
]:
|
|
assert_text_contains(
|
|
"iwooos_page.owner_response_formal_record_owner_handoff_review_outcome_boundary",
|
|
iwooos_projection_page,
|
|
text,
|
|
)
|
|
assert_text_contains(
|
|
"iwooos_page.owner_response_formal_record_owner_review_preparation_packets",
|
|
iwooos_projection_page,
|
|
"ownerResponseFormalRecordOwnerReviewPreparationPackets",
|
|
)
|
|
assert_text_contains(
|
|
"iwooos_page.owner_response_formal_record_owner_review_preparation_testid",
|
|
iwooos_projection_page,
|
|
'data-testid="iwooos-owner-response-formal-record-owner-review-preparation-board"',
|
|
)
|
|
assert_text_contains(
|
|
"iwooos_page.owner_response_formal_record_owner_review_preparation_component",
|
|
iwooos_projection_page,
|
|
"OwnerResponseFormalRecordOwnerReviewPreparationBoard",
|
|
)
|
|
for text in [
|
|
"owner_response_formal_record_owner_review_preparation_packet_count=8",
|
|
"owner_response_formal_record_owner_review_preparation_ready_count=0",
|
|
"owner_response_formal_record_owner_assigned_count=0",
|
|
"owner_response_formal_record_created_count=0",
|
|
"owner_response_formal_record_approved_count=0",
|
|
"owner_response_formal_record_runtime_gate_count=0",
|
|
"owner_response_formal_record_owner_review_preparation_only=true",
|
|
"owner_response_formal_record_owner_assignment_authorized=false",
|
|
"owner_response_formal_record_write_authorized=false",
|
|
"owner_response_formal_record_approval_authorized=false",
|
|
"owner_response_formal_record_execution_authorized=false",
|
|
"runtime_execution_authorized=false",
|
|
"active_runtime_gate_count=0",
|
|
"action_buttons_allowed=false",
|
|
"not_authorization=true",
|
|
"secret_value_collection_allowed=false",
|
|
"repo_creation_authorized=false",
|
|
"refs_sync_authorized=false",
|
|
"workflow_modification_authorized=false",
|
|
"github_primary_switch_authorized=false",
|
|
"gitea_disablement_authorized=false",
|
|
]:
|
|
assert_text_contains(
|
|
"iwooos_page.owner_response_formal_record_owner_review_preparation_boundary",
|
|
iwooos_projection_page,
|
|
text,
|
|
)
|
|
assert_text_contains(
|
|
"iwooos_page.owner_response_formal_record_owner_review_checklist_items",
|
|
iwooos_projection_page,
|
|
"ownerResponseFormalRecordOwnerReviewChecklistItems",
|
|
)
|
|
assert_text_contains(
|
|
"iwooos_page.owner_response_formal_record_owner_review_checklist_testid",
|
|
iwooos_projection_page,
|
|
'data-testid="iwooos-owner-response-formal-record-owner-review-checklist-board"',
|
|
)
|
|
assert_text_contains(
|
|
"iwooos_page.owner_response_formal_record_owner_review_checklist_component",
|
|
iwooos_projection_page,
|
|
"OwnerResponseFormalRecordOwnerReviewChecklistBoard",
|
|
)
|
|
for text in [
|
|
"owner_response_formal_record_owner_review_check_count=8",
|
|
"owner_response_formal_record_owner_review_passed_count=0",
|
|
"owner_response_formal_record_owner_assigned_count=0",
|
|
"owner_response_formal_record_created_count=0",
|
|
"owner_response_formal_record_approved_count=0",
|
|
"owner_response_formal_record_runtime_gate_count=0",
|
|
"owner_response_formal_record_owner_review_checklist_only=true",
|
|
"owner_response_formal_record_owner_assignment_authorized=false",
|
|
"owner_response_formal_record_write_authorized=false",
|
|
"owner_response_formal_record_approval_authorized=false",
|
|
"owner_response_formal_record_execution_authorized=false",
|
|
"runtime_execution_authorized=false",
|
|
"active_runtime_gate_count=0",
|
|
"action_buttons_allowed=false",
|
|
"not_authorization=true",
|
|
"secret_value_collection_allowed=false",
|
|
"repo_creation_authorized=false",
|
|
"refs_sync_authorized=false",
|
|
"workflow_modification_authorized=false",
|
|
"github_primary_switch_authorized=false",
|
|
"gitea_disablement_authorized=false",
|
|
]:
|
|
assert_text_contains(
|
|
"iwooos_page.owner_response_formal_record_owner_review_checklist_boundary",
|
|
iwooos_projection_page,
|
|
text,
|
|
)
|
|
assert_text_contains(
|
|
"iwooos_page.owner_response_formal_record_owner_review_outcome_lanes",
|
|
iwooos_projection_page,
|
|
"ownerResponseFormalRecordOwnerReviewOutcomeLanes",
|
|
)
|
|
assert_text_contains(
|
|
"iwooos_page.owner_response_formal_record_owner_review_outcome_testid",
|
|
iwooos_projection_page,
|
|
'data-testid="iwooos-owner-response-formal-record-owner-review-outcome-board"',
|
|
)
|
|
assert_text_contains(
|
|
"iwooos_page.owner_response_formal_record_owner_review_outcome_component",
|
|
iwooos_projection_page,
|
|
"OwnerResponseFormalRecordOwnerReviewOutcomeBoard",
|
|
)
|
|
for text in [
|
|
"owner_response_formal_record_owner_review_outcome_lane_count=8",
|
|
"owner_response_formal_record_owner_review_outcome_ready_count=0",
|
|
"owner_response_formal_record_owner_review_outcome_returned_count=0",
|
|
"owner_response_formal_record_owner_review_outcome_quarantine_count=0",
|
|
"owner_response_formal_record_owner_review_outcome_rejected_count=0",
|
|
"owner_response_formal_record_owner_review_outcome_promoted_count=0",
|
|
"owner_response_formal_record_owner_review_outcome_only=true",
|
|
"owner_response_formal_record_owner_assignment_authorized=false",
|
|
"owner_response_formal_record_write_authorized=false",
|
|
"owner_response_formal_record_approval_authorized=false",
|
|
"owner_response_formal_record_execution_authorized=false",
|
|
"runtime_execution_authorized=false",
|
|
"active_runtime_gate_count=0",
|
|
"action_buttons_allowed=false",
|
|
"not_authorization=true",
|
|
"secret_value_collection_allowed=false",
|
|
"repo_creation_authorized=false",
|
|
"refs_sync_authorized=false",
|
|
"workflow_modification_authorized=false",
|
|
"github_primary_switch_authorized=false",
|
|
"gitea_disablement_authorized=false",
|
|
]:
|
|
assert_text_contains(
|
|
"iwooos_page.owner_response_formal_record_owner_review_outcome_boundary",
|
|
iwooos_projection_page,
|
|
text,
|
|
)
|
|
assert_text_contains(
|
|
"iwooos_page.owner_response_formal_record_owner_assignment_preparation_packets",
|
|
iwooos_projection_page,
|
|
"ownerResponseFormalRecordOwnerAssignmentPreparationPackets",
|
|
)
|
|
assert_text_contains(
|
|
"iwooos_page.owner_response_formal_record_owner_assignment_preparation_testid",
|
|
iwooos_projection_page,
|
|
'data-testid="iwooos-owner-response-formal-record-owner-assignment-preparation-board"',
|
|
)
|
|
assert_text_contains(
|
|
"iwooos_page.owner_response_formal_record_owner_assignment_preparation_component",
|
|
iwooos_projection_page,
|
|
"OwnerResponseFormalRecordOwnerAssignmentPreparationBoard",
|
|
)
|
|
for text in [
|
|
"owner_response_formal_record_owner_assignment_preparation_packet_count=8",
|
|
"owner_response_formal_record_owner_assignment_preparation_ready_count=0",
|
|
"owner_response_formal_record_owner_assigned_count=0",
|
|
"owner_response_formal_record_created_count=0",
|
|
"owner_response_formal_record_approved_count=0",
|
|
"owner_response_formal_record_runtime_gate_count=0",
|
|
"owner_response_formal_record_owner_assignment_preparation_only=true",
|
|
"owner_response_formal_record_owner_assignment_authorized=false",
|
|
"owner_response_formal_record_write_authorized=false",
|
|
"owner_response_formal_record_approval_authorized=false",
|
|
"owner_response_formal_record_execution_authorized=false",
|
|
"runtime_execution_authorized=false",
|
|
"active_runtime_gate_count=0",
|
|
"action_buttons_allowed=false",
|
|
"not_authorization=true",
|
|
"secret_value_collection_allowed=false",
|
|
"repo_creation_authorized=false",
|
|
"refs_sync_authorized=false",
|
|
"workflow_modification_authorized=false",
|
|
"github_primary_switch_authorized=false",
|
|
"gitea_disablement_authorized=false",
|
|
]:
|
|
assert_text_contains(
|
|
"iwooos_page.owner_response_formal_record_owner_assignment_preparation_boundary",
|
|
iwooos_projection_page,
|
|
text,
|
|
)
|
|
assert_text_contains(
|
|
"iwooos_page.owner_response_formal_record_owner_assignment_checklist_items",
|
|
iwooos_projection_page,
|
|
"ownerResponseFormalRecordOwnerAssignmentChecklistItems",
|
|
)
|
|
assert_text_contains(
|
|
"iwooos_page.owner_response_formal_record_owner_assignment_checklist_testid",
|
|
iwooos_projection_page,
|
|
'data-testid="iwooos-owner-response-formal-record-owner-assignment-checklist-board"',
|
|
)
|
|
assert_text_contains(
|
|
"iwooos_page.owner_response_formal_record_owner_assignment_checklist_component",
|
|
iwooos_projection_page,
|
|
"OwnerResponseFormalRecordOwnerAssignmentChecklistBoard",
|
|
)
|
|
for text in [
|
|
"owner_response_formal_record_owner_assignment_check_count=8",
|
|
"owner_response_formal_record_owner_assignment_check_passed_count=0",
|
|
"owner_response_formal_record_owner_assigned_count=0",
|
|
"owner_response_formal_record_created_count=0",
|
|
"owner_response_formal_record_approved_count=0",
|
|
"owner_response_formal_record_runtime_gate_count=0",
|
|
"owner_response_formal_record_owner_assignment_checklist_only=true",
|
|
"owner_response_formal_record_owner_assignment_authorized=false",
|
|
"owner_response_formal_record_write_authorized=false",
|
|
"owner_response_formal_record_approval_authorized=false",
|
|
"owner_response_formal_record_execution_authorized=false",
|
|
"runtime_execution_authorized=false",
|
|
"active_runtime_gate_count=0",
|
|
"action_buttons_allowed=false",
|
|
"not_authorization=true",
|
|
"secret_value_collection_allowed=false",
|
|
"repo_creation_authorized=false",
|
|
"refs_sync_authorized=false",
|
|
"workflow_modification_authorized=false",
|
|
"github_primary_switch_authorized=false",
|
|
"gitea_disablement_authorized=false",
|
|
]:
|
|
assert_text_contains(
|
|
"iwooos_page.owner_response_formal_record_owner_assignment_checklist_boundary",
|
|
iwooos_projection_page,
|
|
text,
|
|
)
|
|
assert_text_contains(
|
|
"iwooos_page.owner_response_formal_record_owner_assignment_outcome_lanes",
|
|
iwooos_projection_page,
|
|
"ownerResponseFormalRecordOwnerAssignmentOutcomeLanes",
|
|
)
|
|
assert_text_contains(
|
|
"iwooos_page.owner_response_formal_record_owner_assignment_outcome_testid",
|
|
iwooos_projection_page,
|
|
'data-testid="iwooos-owner-response-formal-record-owner-assignment-outcome-board"',
|
|
)
|
|
assert_text_contains(
|
|
"iwooos_page.owner_response_formal_record_owner_assignment_outcome_component",
|
|
iwooos_projection_page,
|
|
"OwnerResponseFormalRecordOwnerAssignmentOutcomeBoard",
|
|
)
|
|
for text in [
|
|
"owner_response_formal_record_owner_assignment_outcome_lane_count=8",
|
|
"owner_response_formal_record_owner_assignment_outcome_ready_count=0",
|
|
"owner_response_formal_record_owner_assignment_outcome_returned_count=0",
|
|
"owner_response_formal_record_owner_assignment_outcome_quarantine_count=0",
|
|
"owner_response_formal_record_owner_assignment_outcome_rejected_count=0",
|
|
"owner_response_formal_record_owner_assignment_outcome_promoted_count=0",
|
|
"owner_response_formal_record_owner_assignment_outcome_only=true",
|
|
"owner_response_formal_record_owner_assignment_authorized=false",
|
|
"owner_response_formal_record_write_authorized=false",
|
|
"owner_response_formal_record_approval_authorized=false",
|
|
"owner_response_formal_record_execution_authorized=false",
|
|
"runtime_execution_authorized=false",
|
|
"active_runtime_gate_count=0",
|
|
"action_buttons_allowed=false",
|
|
"not_authorization=true",
|
|
"secret_value_collection_allowed=false",
|
|
"repo_creation_authorized=false",
|
|
"refs_sync_authorized=false",
|
|
"workflow_modification_authorized=false",
|
|
"github_primary_switch_authorized=false",
|
|
"gitea_disablement_authorized=false",
|
|
]:
|
|
assert_text_contains(
|
|
"iwooos_page.owner_response_formal_record_owner_assignment_outcome_boundary",
|
|
iwooos_projection_page,
|
|
text,
|
|
)
|
|
assert_text_contains(
|
|
"iwooos_page.owner_response_formal_record_owner_assignment_decision_preparation_packets",
|
|
iwooos_projection_page,
|
|
"ownerResponseFormalRecordOwnerAssignmentDecisionPreparationPackets",
|
|
)
|
|
assert_text_contains(
|
|
"iwooos_page.owner_response_formal_record_owner_assignment_decision_preparation_testid",
|
|
iwooos_projection_page,
|
|
'data-testid="iwooos-owner-response-formal-record-owner-assignment-decision-preparation-board"',
|
|
)
|
|
assert_text_contains(
|
|
"iwooos_page.owner_response_formal_record_owner_assignment_decision_preparation_component",
|
|
iwooos_projection_page,
|
|
"OwnerResponseFormalRecordOwnerAssignmentDecisionPreparationBoard",
|
|
)
|
|
for text in [
|
|
"owner_response_formal_record_owner_assignment_decision_preparation_packet_count=8",
|
|
"owner_response_formal_record_owner_assignment_decision_preparation_ready_count=0",
|
|
"owner_response_formal_record_owner_assignment_decision_created_count=0",
|
|
"owner_response_formal_record_owner_assigned_count=0",
|
|
"owner_response_formal_record_created_count=0",
|
|
"owner_response_formal_record_approved_count=0",
|
|
"owner_response_formal_record_runtime_gate_count=0",
|
|
"owner_response_formal_record_owner_assignment_decision_preparation_only=true",
|
|
"owner_response_formal_record_owner_assignment_authorized=false",
|
|
"owner_response_formal_record_write_authorized=false",
|
|
"owner_response_formal_record_approval_authorized=false",
|
|
"owner_response_formal_record_execution_authorized=false",
|
|
"runtime_execution_authorized=false",
|
|
"active_runtime_gate_count=0",
|
|
"action_buttons_allowed=false",
|
|
"not_authorization=true",
|
|
"secret_value_collection_allowed=false",
|
|
"repo_creation_authorized=false",
|
|
"refs_sync_authorized=false",
|
|
"workflow_modification_authorized=false",
|
|
"github_primary_switch_authorized=false",
|
|
"gitea_disablement_authorized=false",
|
|
]:
|
|
assert_text_contains(
|
|
"iwooos_page.owner_response_formal_record_owner_assignment_decision_preparation_boundary",
|
|
iwooos_projection_page,
|
|
text,
|
|
)
|
|
assert_text_contains(
|
|
"iwooos_page.owner_response_formal_record_owner_assignment_decision_checklist_items",
|
|
iwooos_projection_page,
|
|
"ownerResponseFormalRecordOwnerAssignmentDecisionChecklistItems",
|
|
)
|
|
assert_text_contains(
|
|
"iwooos_page.owner_response_formal_record_owner_assignment_decision_checklist_testid",
|
|
iwooos_projection_page,
|
|
'data-testid="iwooos-owner-response-formal-record-owner-assignment-decision-checklist-board"',
|
|
)
|
|
assert_text_contains(
|
|
"iwooos_page.owner_response_formal_record_owner_assignment_decision_checklist_component",
|
|
iwooos_projection_page,
|
|
"OwnerResponseFormalRecordOwnerAssignmentDecisionChecklistBoard",
|
|
)
|
|
for text in [
|
|
"owner_response_formal_record_owner_assignment_decision_check_count=8",
|
|
"owner_response_formal_record_owner_assignment_decision_check_passed_count=0",
|
|
"owner_response_formal_record_owner_assignment_decision_created_count=0",
|
|
"owner_response_formal_record_owner_assigned_count=0",
|
|
"owner_response_formal_record_created_count=0",
|
|
"owner_response_formal_record_approved_count=0",
|
|
"owner_response_formal_record_runtime_gate_count=0",
|
|
"owner_response_formal_record_owner_assignment_decision_checklist_only=true",
|
|
"owner_response_formal_record_owner_assignment_authorized=false",
|
|
"owner_response_formal_record_write_authorized=false",
|
|
"owner_response_formal_record_approval_authorized=false",
|
|
"owner_response_formal_record_execution_authorized=false",
|
|
"runtime_execution_authorized=false",
|
|
"active_runtime_gate_count=0",
|
|
"action_buttons_allowed=false",
|
|
"not_authorization=true",
|
|
"secret_value_collection_allowed=false",
|
|
"repo_creation_authorized=false",
|
|
"refs_sync_authorized=false",
|
|
"workflow_modification_authorized=false",
|
|
"github_primary_switch_authorized=false",
|
|
"gitea_disablement_authorized=false",
|
|
]:
|
|
assert_text_contains(
|
|
"iwooos_page.owner_response_formal_record_owner_assignment_decision_checklist_boundary",
|
|
iwooos_projection_page,
|
|
text,
|
|
)
|
|
assert_text_contains(
|
|
"iwooos_page.headline_movement_acceptance_gate_items",
|
|
iwooos_projection_page,
|
|
"headlineMovementAcceptanceGates",
|
|
)
|
|
assert_text_contains(
|
|
"iwooos_page.headline_movement_acceptance_gate_testid",
|
|
iwooos_projection_page,
|
|
'data-testid="iwooos-headline-movement-acceptance-gate-board"',
|
|
)
|
|
assert_text_contains(
|
|
"iwooos_page.headline_movement_acceptance_gate_component",
|
|
iwooos_projection_page,
|
|
"HeadlineMovementAcceptanceGateBoard",
|
|
)
|
|
assert_text_contains(
|
|
"iwooos_page.operator_next_tasks_items",
|
|
iwooos_projection_page,
|
|
"operatorNextTasks",
|
|
)
|
|
assert_text_contains(
|
|
"iwooos_page.operator_next_tasks_board",
|
|
iwooos_projection_page,
|
|
"IwoooSOperatorNextTasksBoard",
|
|
)
|
|
assert_text_contains(
|
|
"iwooos_page.operator_next_tasks_testid",
|
|
iwooos_projection_page,
|
|
'data-testid="iwooos-operator-next-tasks-board"',
|
|
)
|
|
assert_text_contains(
|
|
"iwooos_page.stage_completion_report_items",
|
|
iwooos_projection_page,
|
|
"stageCompletionReportItems",
|
|
)
|
|
assert_text_contains(
|
|
"iwooos_page.stage_completion_report_board",
|
|
iwooos_projection_page,
|
|
"IwoooSStageCompletionReportBoard",
|
|
)
|
|
assert_text_contains(
|
|
"iwooos_page.stage_completion_report_testid",
|
|
iwooos_projection_page,
|
|
'data-testid="iwooos-stage-completion-report-board"',
|
|
)
|
|
assert_text_not_contains(
|
|
"iwooos_page.stage_completion_report_stale_cd_run",
|
|
iwooos_projection_page,
|
|
"CD 3261",
|
|
)
|
|
stage_report_messages_zh = json.dumps(
|
|
web_messages_zh["iwooos"]["stageCompletionReport"],
|
|
ensure_ascii=False,
|
|
sort_keys=True,
|
|
)
|
|
stage_report_messages_en = json.dumps(
|
|
web_messages_en["iwooos"]["stageCompletionReport"],
|
|
ensure_ascii=False,
|
|
sort_keys=True,
|
|
)
|
|
assert_text_not_contains(
|
|
"iwooos_messages.stage_completion_report_stale_cd_run_zh",
|
|
stage_report_messages_zh,
|
|
"CD 3261",
|
|
)
|
|
assert_text_not_contains(
|
|
"iwooos_messages.stage_completion_report_stale_cd_run_en",
|
|
stage_report_messages_en,
|
|
"CD 3261",
|
|
)
|
|
assert_text_contains(
|
|
"iwooos_messages.stage_completion_report_deploy_marker_zh",
|
|
stage_report_messages_zh,
|
|
"deploy marker",
|
|
)
|
|
assert_text_contains(
|
|
"iwooos_messages.stage_completion_report_deploy_marker_en",
|
|
stage_report_messages_en,
|
|
"deploy marker",
|
|
)
|
|
for text in [
|
|
"headline_percent_after_this_stage=64",
|
|
"headline_movement_signal_count=2",
|
|
"awooop_read_only_production_landing_evidence_count=1",
|
|
"kali_112_read_only_production_evidence_count=1",
|
|
"owner_response_received_count=0",
|
|
"owner_response_accepted_count=0",
|
|
"owner_response_acceptance_gate_open=false",
|
|
"redacted_payload_ingested=false",
|
|
"active_runtime_gate_count=0",
|
|
"github_primary_ready_count=0",
|
|
"production_landing_enabled=true",
|
|
"execution_router_linked=false",
|
|
"progress_review_authorized=true",
|
|
"runtime_execution_authorized=false",
|
|
"action_buttons_allowed=false",
|
|
"not_authorization=true",
|
|
"secret_value_collection_allowed=false",
|
|
"repo_creation_authorized=false",
|
|
"refs_sync_authorized=false",
|
|
"workflow_modification_authorized=false",
|
|
"github_primary_switch_authorized=false",
|
|
"gitea_disablement_authorized=false",
|
|
]:
|
|
assert_text_contains(
|
|
"iwooos_page.headline_movement_acceptance_gate_boundary",
|
|
iwooos_projection_page,
|
|
text,
|
|
)
|
|
assert_contains(
|
|
"web_messages.zh-TW.iwooos.headlineMovementAcceptanceGate",
|
|
list(web_messages_zh["iwooos"].keys()),
|
|
"headlineMovementAcceptanceGate",
|
|
)
|
|
assert_contains(
|
|
"web_messages.en.iwooos.headlineMovementAcceptanceGate",
|
|
list(web_messages_en["iwooos"].keys()),
|
|
"headlineMovementAcceptanceGate",
|
|
)
|
|
for key in ["title", "subtitle", "summary", "items", "boundaryTitle"]:
|
|
assert_contains(
|
|
"web_messages.zh-TW.iwooos.headlineMovementAcceptanceGate.keys",
|
|
list(web_messages_zh["iwooos"]["headlineMovementAcceptanceGate"].keys()),
|
|
key,
|
|
)
|
|
assert_contains(
|
|
"web_messages.en.iwooos.headlineMovementAcceptanceGate.keys",
|
|
list(web_messages_en["iwooos"]["headlineMovementAcceptanceGate"].keys()),
|
|
key,
|
|
)
|
|
for key in [
|
|
"s49OwnerResponseAccepted",
|
|
"redactedPayloadAccepted",
|
|
"runtimeGateApproved",
|
|
"githubPrimaryEvidenceReady",
|
|
"awooopProductionLandingProof",
|
|
"kali112ReadOnlyProof",
|
|
"nextHeadlineReviewRecord",
|
|
]:
|
|
assert_contains(
|
|
"web_messages.zh-TW.iwooos.headlineMovementAcceptanceGate.items",
|
|
list(web_messages_zh["iwooos"]["headlineMovementAcceptanceGate"]["items"].keys()),
|
|
key,
|
|
)
|
|
assert_contains(
|
|
"web_messages.en.iwooos.headlineMovementAcceptanceGate.items",
|
|
list(web_messages_en["iwooos"]["headlineMovementAcceptanceGate"]["items"].keys()),
|
|
key,
|
|
)
|
|
assert_text_contains(
|
|
"iwooos_page.s49_owner_response_work_order_items",
|
|
iwooos_projection_page,
|
|
"s49OwnerResponseWorkOrderItems",
|
|
)
|
|
assert_text_contains(
|
|
"iwooos_page.s49_owner_response_work_order_testid",
|
|
iwooos_projection_page,
|
|
'data-testid="iwooos-s49-owner-response-work-order-board"',
|
|
)
|
|
assert_text_contains(
|
|
"iwooos_page.s49_owner_response_work_order_component",
|
|
iwooos_projection_page,
|
|
"S49OwnerResponseWorkOrderBoard",
|
|
)
|
|
for text in [
|
|
"s4_9_owner_response_work_order_item_count=5",
|
|
"s4_9_owner_response_required_field_count=6",
|
|
"s4_9_owner_response_received_count=0",
|
|
"s4_9_owner_response_accepted_count=0",
|
|
"s4_9_owner_response_rejected_count=0",
|
|
"s4_9_owner_response_request_sent=false",
|
|
"s4_9_owner_response_intake_open=false",
|
|
"owner_response_acceptance_gate_open=false",
|
|
"audit_events_emitted=0",
|
|
"progress_review_authorized=false",
|
|
"runtime_execution_authorized=false",
|
|
"active_runtime_gate_count=0",
|
|
"action_buttons_allowed=false",
|
|
"not_authorization=true",
|
|
"secret_value_collection_allowed=false",
|
|
"repo_creation_authorized=false",
|
|
"refs_sync_authorized=false",
|
|
"workflow_modification_authorized=false",
|
|
"github_primary_switch_authorized=false",
|
|
"gitea_disablement_authorized=false",
|
|
]:
|
|
assert_text_contains(
|
|
"iwooos_page.s49_owner_response_work_order_boundary",
|
|
iwooos_projection_page,
|
|
text,
|
|
)
|
|
assert_contains(
|
|
"web_messages.zh-TW.iwooos.s49OwnerResponseWorkOrder",
|
|
list(web_messages_zh["iwooos"].keys()),
|
|
"s49OwnerResponseWorkOrder",
|
|
)
|
|
assert_contains(
|
|
"web_messages.en.iwooos.s49OwnerResponseWorkOrder",
|
|
list(web_messages_en["iwooos"].keys()),
|
|
"s49OwnerResponseWorkOrder",
|
|
)
|
|
for key in ["title", "subtitle", "summary", "items", "boundaryTitle"]:
|
|
assert_contains(
|
|
"web_messages.zh-TW.iwooos.s49OwnerResponseWorkOrder.keys",
|
|
list(web_messages_zh["iwooos"]["s49OwnerResponseWorkOrder"].keys()),
|
|
key,
|
|
)
|
|
assert_contains(
|
|
"web_messages.en.iwooos.s49OwnerResponseWorkOrder.keys",
|
|
list(web_messages_en["iwooos"]["s49OwnerResponseWorkOrder"].keys()),
|
|
key,
|
|
)
|
|
for key in [
|
|
"scopeGapResponse",
|
|
"endpointIdentityResponse",
|
|
"adjacentSourceResponse",
|
|
"canonicalOwnerResponse",
|
|
"legacyDispositionResponse",
|
|
]:
|
|
assert_contains(
|
|
"web_messages.zh-TW.iwooos.s49OwnerResponseWorkOrder.items",
|
|
list(web_messages_zh["iwooos"]["s49OwnerResponseWorkOrder"]["items"].keys()),
|
|
key,
|
|
)
|
|
assert_contains(
|
|
"web_messages.en.iwooos.s49OwnerResponseWorkOrder.items",
|
|
list(web_messages_en["iwooos"]["s49OwnerResponseWorkOrder"]["items"].keys()),
|
|
key,
|
|
)
|
|
assert_text_contains(
|
|
"iwooos_page.s49_owner_response_envelope_fields",
|
|
iwooos_projection_page,
|
|
"s49OwnerResponseEnvelopeFields",
|
|
)
|
|
assert_text_contains(
|
|
"iwooos_page.s49_owner_response_envelope_testid",
|
|
iwooos_projection_page,
|
|
'data-testid="iwooos-s49-owner-response-envelope-board"',
|
|
)
|
|
assert_text_contains(
|
|
"iwooos_page.s49_owner_response_envelope_component",
|
|
iwooos_projection_page,
|
|
"S49OwnerResponseEnvelopeBoard",
|
|
)
|
|
for text in [
|
|
"s4_9_owner_response_envelope_field_count=6",
|
|
"s4_9_owner_response_envelope_filled_count=0",
|
|
"s4_9_owner_response_envelope_submitted_count=0",
|
|
"s4_9_owner_response_envelope_accepted_count=0",
|
|
"s4_9_owner_response_envelope_rejected_count=0",
|
|
"s4_9_owner_response_request_sent=false",
|
|
"s4_9_owner_response_received_count=0",
|
|
"s4_9_owner_response_accepted_count=0",
|
|
"owner_response_acceptance_gate_open=false",
|
|
"audit_events_emitted=0",
|
|
"progress_review_authorized=false",
|
|
"runtime_execution_authorized=false",
|
|
"active_runtime_gate_count=0",
|
|
"action_buttons_allowed=false",
|
|
"not_authorization=true",
|
|
"secret_value_collection_allowed=false",
|
|
"repo_creation_authorized=false",
|
|
"refs_sync_authorized=false",
|
|
"workflow_modification_authorized=false",
|
|
"github_primary_switch_authorized=false",
|
|
"gitea_disablement_authorized=false",
|
|
]:
|
|
assert_text_contains(
|
|
"iwooos_page.s49_owner_response_envelope_boundary",
|
|
iwooos_projection_page,
|
|
text,
|
|
)
|
|
assert_contains(
|
|
"web_messages.zh-TW.iwooos.s49OwnerResponseEnvelope",
|
|
list(web_messages_zh["iwooos"].keys()),
|
|
"s49OwnerResponseEnvelope",
|
|
)
|
|
assert_contains(
|
|
"web_messages.en.iwooos.s49OwnerResponseEnvelope",
|
|
list(web_messages_en["iwooos"].keys()),
|
|
"s49OwnerResponseEnvelope",
|
|
)
|
|
for key in ["title", "subtitle", "summary", "items", "boundaryTitle"]:
|
|
assert_contains(
|
|
"web_messages.zh-TW.iwooos.s49OwnerResponseEnvelope.keys",
|
|
list(web_messages_zh["iwooos"]["s49OwnerResponseEnvelope"].keys()),
|
|
key,
|
|
)
|
|
assert_contains(
|
|
"web_messages.en.iwooos.s49OwnerResponseEnvelope.keys",
|
|
list(web_messages_en["iwooos"]["s49OwnerResponseEnvelope"].keys()),
|
|
key,
|
|
)
|
|
for key in [
|
|
"ownerRoleTeam",
|
|
"decision",
|
|
"decisionReason",
|
|
"affectedScope",
|
|
"redactedEvidenceRefs",
|
|
"followupOwner",
|
|
]:
|
|
assert_contains(
|
|
"web_messages.zh-TW.iwooos.s49OwnerResponseEnvelope.items",
|
|
list(web_messages_zh["iwooos"]["s49OwnerResponseEnvelope"]["items"].keys()),
|
|
key,
|
|
)
|
|
assert_contains(
|
|
"web_messages.en.iwooos.s49OwnerResponseEnvelope.items",
|
|
list(web_messages_en["iwooos"]["s49OwnerResponseEnvelope"]["items"].keys()),
|
|
key,
|
|
)
|
|
assert_text_contains(
|
|
"iwooos_page.s49_owner_response_envelope_preflight_checks",
|
|
iwooos_projection_page,
|
|
"s49OwnerResponseEnvelopePreflightChecks",
|
|
)
|
|
assert_text_contains(
|
|
"iwooos_page.s49_owner_response_envelope_preflight_testid",
|
|
iwooos_projection_page,
|
|
'data-testid="iwooos-s49-owner-response-envelope-preflight-board"',
|
|
)
|
|
assert_text_contains(
|
|
"iwooos_page.s49_owner_response_envelope_preflight_component",
|
|
iwooos_projection_page,
|
|
"S49OwnerResponseEnvelopePreflightBoard",
|
|
)
|
|
for text in [
|
|
"s4_9_owner_response_envelope_preflight_check_count=6",
|
|
"s4_9_owner_response_envelope_preflight_passed_count=0",
|
|
"s4_9_owner_response_envelope_ready_to_submit_count=0",
|
|
"s4_9_owner_response_envelope_submitted_count=0",
|
|
"s4_9_owner_response_envelope_accepted_count=0",
|
|
"s4_9_owner_response_request_sent=false",
|
|
"s4_9_owner_response_received_count=0",
|
|
"s4_9_owner_response_accepted_count=0",
|
|
"owner_response_acceptance_gate_open=false",
|
|
"audit_events_emitted=0",
|
|
"progress_review_authorized=false",
|
|
"runtime_execution_authorized=false",
|
|
"active_runtime_gate_count=0",
|
|
"action_buttons_allowed=false",
|
|
"not_authorization=true",
|
|
"secret_value_collection_allowed=false",
|
|
"repo_creation_authorized=false",
|
|
"refs_sync_authorized=false",
|
|
"workflow_modification_authorized=false",
|
|
"github_primary_switch_authorized=false",
|
|
"gitea_disablement_authorized=false",
|
|
]:
|
|
assert_text_contains(
|
|
"iwooos_page.s49_owner_response_envelope_preflight_boundary",
|
|
iwooos_projection_page,
|
|
text,
|
|
)
|
|
assert_contains(
|
|
"web_messages.zh-TW.iwooos.s49OwnerResponseEnvelopePreflight",
|
|
list(web_messages_zh["iwooos"].keys()),
|
|
"s49OwnerResponseEnvelopePreflight",
|
|
)
|
|
assert_contains(
|
|
"web_messages.en.iwooos.s49OwnerResponseEnvelopePreflight",
|
|
list(web_messages_en["iwooos"].keys()),
|
|
"s49OwnerResponseEnvelopePreflight",
|
|
)
|
|
for key in ["title", "subtitle", "summary", "items", "boundaryTitle"]:
|
|
assert_contains(
|
|
"web_messages.zh-TW.iwooos.s49OwnerResponseEnvelopePreflight.keys",
|
|
list(web_messages_zh["iwooos"]["s49OwnerResponseEnvelopePreflight"].keys()),
|
|
key,
|
|
)
|
|
assert_contains(
|
|
"web_messages.en.iwooos.s49OwnerResponseEnvelopePreflight.keys",
|
|
list(web_messages_en["iwooos"]["s49OwnerResponseEnvelopePreflight"].keys()),
|
|
key,
|
|
)
|
|
for key in [
|
|
"fieldCompleteness",
|
|
"allowedDisposition",
|
|
"redactedEvidence",
|
|
"scopeTraceability",
|
|
"mutationRequestRejected",
|
|
"followupOwnerTrace",
|
|
]:
|
|
assert_contains(
|
|
"web_messages.zh-TW.iwooos.s49OwnerResponseEnvelopePreflight.items",
|
|
list(web_messages_zh["iwooos"]["s49OwnerResponseEnvelopePreflight"]["items"].keys()),
|
|
key,
|
|
)
|
|
assert_contains(
|
|
"web_messages.en.iwooos.s49OwnerResponseEnvelopePreflight.items",
|
|
list(web_messages_en["iwooos"]["s49OwnerResponseEnvelopePreflight"]["items"].keys()),
|
|
key,
|
|
)
|
|
assert_text_contains(
|
|
"iwooos_page.s49_owner_response_envelope_preflight_outcome_lanes",
|
|
iwooos_projection_page,
|
|
"s49OwnerResponseEnvelopePreflightOutcomeLanes",
|
|
)
|
|
assert_text_contains(
|
|
"iwooos_page.s49_owner_response_envelope_preflight_outcome_testid",
|
|
iwooos_projection_page,
|
|
'data-testid="iwooos-s49-owner-response-envelope-preflight-outcome-board"',
|
|
)
|
|
assert_text_contains(
|
|
"iwooos_page.s49_owner_response_envelope_preflight_outcome_component",
|
|
iwooos_projection_page,
|
|
"S49OwnerResponseEnvelopePreflightOutcomeBoard",
|
|
)
|
|
for text in [
|
|
"s4_9_owner_response_envelope_preflight_outcome_lane_count=7",
|
|
"s4_9_owner_response_envelope_preflight_ready_for_intake_count=0",
|
|
"s4_9_owner_response_envelope_preflight_quarantined_count=0",
|
|
"s4_9_owner_response_envelope_preflight_rejected_count=0",
|
|
"s4_9_owner_response_envelope_submitted_count=0",
|
|
"s4_9_owner_response_envelope_accepted_count=0",
|
|
"s4_9_owner_response_request_sent=false",
|
|
"s4_9_owner_response_received_count=0",
|
|
"s4_9_owner_response_accepted_count=0",
|
|
"owner_response_acceptance_gate_open=false",
|
|
"audit_events_emitted=0",
|
|
"progress_review_authorized=false",
|
|
"runtime_execution_authorized=false",
|
|
"active_runtime_gate_count=0",
|
|
"action_buttons_allowed=false",
|
|
"not_authorization=true",
|
|
"secret_value_collection_allowed=false",
|
|
"repo_creation_authorized=false",
|
|
"refs_sync_authorized=false",
|
|
"workflow_modification_authorized=false",
|
|
"github_primary_switch_authorized=false",
|
|
"gitea_disablement_authorized=false",
|
|
]:
|
|
assert_text_contains(
|
|
"iwooos_page.s49_owner_response_envelope_preflight_outcome_boundary",
|
|
iwooos_projection_page,
|
|
text,
|
|
)
|
|
assert_contains(
|
|
"web_messages.zh-TW.iwooos.s49OwnerResponseEnvelopePreflightOutcome",
|
|
list(web_messages_zh["iwooos"].keys()),
|
|
"s49OwnerResponseEnvelopePreflightOutcome",
|
|
)
|
|
assert_contains(
|
|
"web_messages.en.iwooos.s49OwnerResponseEnvelopePreflightOutcome",
|
|
list(web_messages_en["iwooos"].keys()),
|
|
"s49OwnerResponseEnvelopePreflightOutcome",
|
|
)
|
|
for key in ["title", "subtitle", "summary", "items", "boundaryTitle"]:
|
|
assert_contains(
|
|
"web_messages.zh-TW.iwooos.s49OwnerResponseEnvelopePreflightOutcome.keys",
|
|
list(web_messages_zh["iwooos"]["s49OwnerResponseEnvelopePreflightOutcome"].keys()),
|
|
key,
|
|
)
|
|
assert_contains(
|
|
"web_messages.en.iwooos.s49OwnerResponseEnvelopePreflightOutcome.keys",
|
|
list(web_messages_en["iwooos"]["s49OwnerResponseEnvelopePreflightOutcome"].keys()),
|
|
key,
|
|
)
|
|
for key in [
|
|
"keepEnvelopeWaiting",
|
|
"requestFieldCompletion",
|
|
"requestDispositionCorrection",
|
|
"quarantineSensitiveEvidence",
|
|
"requestScopeCorrection",
|
|
"rejectMutationRequest",
|
|
"keepFollowupOwnerWaiting",
|
|
]:
|
|
assert_contains(
|
|
"web_messages.zh-TW.iwooos.s49OwnerResponseEnvelopePreflightOutcome.items",
|
|
list(web_messages_zh["iwooos"]["s49OwnerResponseEnvelopePreflightOutcome"]["items"].keys()),
|
|
key,
|
|
)
|
|
assert_contains(
|
|
"web_messages.en.iwooos.s49OwnerResponseEnvelopePreflightOutcome.items",
|
|
list(web_messages_en["iwooos"]["s49OwnerResponseEnvelopePreflightOutcome"]["items"].keys()),
|
|
key,
|
|
)
|
|
assert_text_contains(
|
|
"iwooos_page.s49_owner_response_request_draft_items",
|
|
iwooos_projection_page,
|
|
"s49OwnerResponseRequestDraftItems",
|
|
)
|
|
assert_text_contains(
|
|
"iwooos_page.s49_owner_response_request_draft_testid",
|
|
iwooos_projection_page,
|
|
'data-testid="iwooos-s49-owner-response-request-draft-board"',
|
|
)
|
|
assert_text_contains(
|
|
"iwooos_page.s49_owner_response_request_draft_component",
|
|
iwooos_projection_page,
|
|
"S49OwnerResponseRequestDraftBoard",
|
|
)
|
|
for text in [
|
|
"s4_9_owner_response_request_draft_item_count=6",
|
|
"s4_9_owner_response_request_draft_ready_count=0",
|
|
"s4_9_owner_response_request_dispatch_authorized=false",
|
|
"s4_9_owner_response_request_sent=false",
|
|
"s4_9_owner_response_request_sent_count=0",
|
|
"s4_9_owner_response_request_recipients_confirmed_count=0",
|
|
"s4_9_owner_response_request_audit_event_draft_count=1",
|
|
"s4_9_owner_response_request_audit_events_emitted=0",
|
|
"s4_9_owner_response_received_count=0",
|
|
"s4_9_owner_response_accepted_count=0",
|
|
"owner_response_acceptance_gate_open=false",
|
|
"audit_events_emitted=0",
|
|
"progress_review_authorized=false",
|
|
"runtime_execution_authorized=false",
|
|
"active_runtime_gate_count=0",
|
|
"action_buttons_allowed=false",
|
|
"not_authorization=true",
|
|
"secret_value_collection_allowed=false",
|
|
"repo_creation_authorized=false",
|
|
"refs_sync_authorized=false",
|
|
"workflow_modification_authorized=false",
|
|
"github_primary_switch_authorized=false",
|
|
"gitea_disablement_authorized=false",
|
|
]:
|
|
assert_text_contains(
|
|
"iwooos_page.s49_owner_response_request_draft_boundary",
|
|
iwooos_projection_page,
|
|
text,
|
|
)
|
|
assert_contains(
|
|
"web_messages.zh-TW.iwooos.s49OwnerResponseRequestDraft",
|
|
list(web_messages_zh["iwooos"].keys()),
|
|
"s49OwnerResponseRequestDraft",
|
|
)
|
|
assert_contains(
|
|
"web_messages.en.iwooos.s49OwnerResponseRequestDraft",
|
|
list(web_messages_en["iwooos"].keys()),
|
|
"s49OwnerResponseRequestDraft",
|
|
)
|
|
for key in ["title", "subtitle", "summary", "items", "boundaryTitle"]:
|
|
assert_contains(
|
|
"web_messages.zh-TW.iwooos.s49OwnerResponseRequestDraft.keys",
|
|
list(web_messages_zh["iwooos"]["s49OwnerResponseRequestDraft"].keys()),
|
|
key,
|
|
)
|
|
assert_contains(
|
|
"web_messages.en.iwooos.s49OwnerResponseRequestDraft.keys",
|
|
list(web_messages_en["iwooos"]["s49OwnerResponseRequestDraft"].keys()),
|
|
key,
|
|
)
|
|
for key in [
|
|
"scopeMappingDraft",
|
|
"ownerRecipientDraft",
|
|
"redactedEvidenceDraft",
|
|
"noMutationClauseDraft",
|
|
"auditTemplateDraft",
|
|
"manualDispatchGateDraft",
|
|
]:
|
|
assert_contains(
|
|
"web_messages.zh-TW.iwooos.s49OwnerResponseRequestDraft.items",
|
|
list(web_messages_zh["iwooos"]["s49OwnerResponseRequestDraft"]["items"].keys()),
|
|
key,
|
|
)
|
|
assert_contains(
|
|
"web_messages.en.iwooos.s49OwnerResponseRequestDraft.items",
|
|
list(web_messages_en["iwooos"]["s49OwnerResponseRequestDraft"]["items"].keys()),
|
|
key,
|
|
)
|
|
assert_text_contains(
|
|
"iwooos_page.s49_owner_response_dispatch_flow_steps",
|
|
iwooos_projection_page,
|
|
"s49OwnerResponseDispatchFlowSteps",
|
|
)
|
|
assert_text_contains(
|
|
"iwooos_page.s49_owner_response_dispatch_flow_testid",
|
|
iwooos_projection_page,
|
|
'data-testid="iwooos-s49-owner-response-dispatch-flow-board"',
|
|
)
|
|
assert_text_contains(
|
|
"iwooos_page.s49_owner_response_dispatch_flow_component",
|
|
iwooos_projection_page,
|
|
"S49OwnerResponseDispatchFlowBoard",
|
|
)
|
|
for text in [
|
|
"s4_9_owner_response_dispatch_flow_step_count=6",
|
|
"s4_9_owner_response_dispatch_flow_current_step=request_draft",
|
|
"s4_9_owner_response_dispatch_flow_completed_count=0",
|
|
"s4_9_owner_response_dispatch_flow_blocked_count=0",
|
|
"s4_9_owner_response_request_sent=false",
|
|
"s4_9_owner_response_request_sent_count=0",
|
|
"s4_9_owner_response_received_count=0",
|
|
"s4_9_owner_response_accepted_count=0",
|
|
"s4_9_owner_response_request_dispatch_authorized=false",
|
|
"owner_response_acceptance_gate_open=false",
|
|
"audit_events_emitted=0",
|
|
"progress_review_authorized=false",
|
|
"runtime_execution_authorized=false",
|
|
"active_runtime_gate_count=0",
|
|
"action_buttons_allowed=false",
|
|
"not_authorization=true",
|
|
"secret_value_collection_allowed=false",
|
|
"repo_creation_authorized=false",
|
|
"refs_sync_authorized=false",
|
|
"workflow_modification_authorized=false",
|
|
"github_primary_switch_authorized=false",
|
|
"gitea_disablement_authorized=false",
|
|
]:
|
|
assert_text_contains(
|
|
"iwooos_page.s49_owner_response_dispatch_flow_boundary",
|
|
iwooos_projection_page,
|
|
text,
|
|
)
|
|
assert_contains(
|
|
"web_messages.zh-TW.iwooos.s49OwnerResponseDispatchFlow",
|
|
list(web_messages_zh["iwooos"].keys()),
|
|
"s49OwnerResponseDispatchFlow",
|
|
)
|
|
assert_contains(
|
|
"web_messages.en.iwooos.s49OwnerResponseDispatchFlow",
|
|
list(web_messages_en["iwooos"].keys()),
|
|
"s49OwnerResponseDispatchFlow",
|
|
)
|
|
for key in ["title", "subtitle", "summary", "items", "boundaryTitle", "boundaryIntro"]:
|
|
assert_contains(
|
|
"web_messages.zh-TW.iwooos.s49OwnerResponseDispatchFlow.keys",
|
|
list(web_messages_zh["iwooos"]["s49OwnerResponseDispatchFlow"].keys()),
|
|
key,
|
|
)
|
|
assert_contains(
|
|
"web_messages.en.iwooos.s49OwnerResponseDispatchFlow.keys",
|
|
list(web_messages_en["iwooos"]["s49OwnerResponseDispatchFlow"].keys()),
|
|
key,
|
|
)
|
|
for key in [
|
|
"workOrder",
|
|
"envelope",
|
|
"preflight",
|
|
"outcome",
|
|
"requestDraft",
|
|
"manualDispatchGate",
|
|
]:
|
|
assert_contains(
|
|
"web_messages.zh-TW.iwooos.s49OwnerResponseDispatchFlow.items",
|
|
list(web_messages_zh["iwooos"]["s49OwnerResponseDispatchFlow"]["items"].keys()),
|
|
key,
|
|
)
|
|
assert_contains(
|
|
"web_messages.en.iwooos.s49OwnerResponseDispatchFlow.items",
|
|
list(web_messages_en["iwooos"]["s49OwnerResponseDispatchFlow"]["items"].keys()),
|
|
key,
|
|
)
|
|
assert_text_contains(
|
|
"security_compliance_page.frontstage_bridge_testid",
|
|
security_compliance_page,
|
|
'data-testid="security-compliance-iwooos-frontstage-bridge"',
|
|
)
|
|
assert_text_contains(
|
|
"security_compliance_page.authoritative_iwooos_strip_testid",
|
|
security_compliance_page,
|
|
'data-testid="security-compliance-authoritative-iwooos-strip"',
|
|
)
|
|
assert_text_contains(
|
|
"security_compliance_page.frontstage_component",
|
|
security_compliance_page,
|
|
"SecurityComplianceFrontStage",
|
|
)
|
|
assert_text_contains(
|
|
"security_compliance_page.authority_progress_current",
|
|
security_compliance_page,
|
|
'value: "64%"',
|
|
)
|
|
assert_text_contains(
|
|
"security_compliance_page.frontstage_route_role_map_testid",
|
|
security_compliance_page,
|
|
'data-testid="security-compliance-frontstage-route-role-map"',
|
|
)
|
|
assert_text_contains(
|
|
"security_compliance_page.low_friction_rollout_ladder_testid",
|
|
security_compliance_page,
|
|
'data-testid="security-compliance-low-friction-rollout-ladder"',
|
|
)
|
|
assert_text_contains(
|
|
"security_compliance_page.frontstage_boundary_codes_testid",
|
|
security_compliance_page,
|
|
'data-testid="security-compliance-frontstage-boundary-codes"',
|
|
)
|
|
assert_text_contains(
|
|
"iwooos_page.security_compliance_frontstage_testid",
|
|
iwooos_projection_page,
|
|
'data-testid="iwooos-security-compliance-frontstage-board"',
|
|
)
|
|
assert_text_contains(
|
|
"iwooos_page.security_compliance_frontstage_component",
|
|
iwooos_projection_page,
|
|
"SecurityComplianceFrontStageBoard",
|
|
)
|
|
for text in [
|
|
"security_compliance_route_preserved=true",
|
|
"security_compliance_removed=false",
|
|
"security_compliance_integration_mode=iwooos_frontstage_bridge",
|
|
"iwooos_authoritative_security_entry=true",
|
|
"runtime_execution_authorized=false",
|
|
"active_runtime_gate_count=0",
|
|
"action_buttons_allowed=false",
|
|
"not_authorization=true",
|
|
]:
|
|
assert_text_contains(
|
|
"security_compliance_page.frontstage_boundary",
|
|
security_compliance_page,
|
|
text,
|
|
)
|
|
assert_text_contains(
|
|
"iwooos_page.security_compliance_frontstage_boundary",
|
|
iwooos_projection_page,
|
|
text,
|
|
)
|
|
for text in [
|
|
"security_compliance_frontstage_route_role_count=5",
|
|
"security_compliance_frontstage_primary_source=iwooos",
|
|
"security_compliance_frontstage_execution_entry_count=0",
|
|
"security_compliance_frontstage_links_read_only=true",
|
|
"security_compliance_authoritative_entry=iwooos",
|
|
"security_compliance_frontstage_summary_mode=compact_first",
|
|
"security_compliance_frontstage_default_detail_collapsed=true",
|
|
]:
|
|
assert_text_contains(
|
|
"security_compliance_page.frontstage_route_role_boundary",
|
|
security_compliance_page,
|
|
text,
|
|
)
|
|
for text in [
|
|
"security_compliance_rollout_phase_count=5",
|
|
"security_compliance_rollout_current_phase=observe_first",
|
|
"security_compliance_rollout_runtime_phase_enabled=false",
|
|
"security_compliance_rollout_enforcement_enabled=false",
|
|
"security_compliance_rollout_action_buttons_allowed=false",
|
|
]:
|
|
assert_text_contains(
|
|
"security_compliance_page.low_friction_rollout_boundary",
|
|
security_compliance_page,
|
|
text,
|
|
)
|
|
for text in [
|
|
"secret_value_collection_allowed=false",
|
|
"repo_creation_authorized=false",
|
|
"refs_sync_authorized=false",
|
|
"workflow_modification_authorized=false",
|
|
"github_primary_switch_authorized=false",
|
|
"gitea_disablement_authorized=false",
|
|
]:
|
|
assert_text_contains(
|
|
"iwooos_page.security_compliance_frontstage_hard_boundary",
|
|
iwooos_projection_page,
|
|
text,
|
|
)
|
|
assert_contains(
|
|
"web_messages.zh-TW.securityCompliance",
|
|
list(web_messages_zh.keys()),
|
|
"securityCompliance",
|
|
)
|
|
assert_contains(
|
|
"web_messages.en.securityCompliance",
|
|
list(web_messages_en.keys()),
|
|
"securityCompliance",
|
|
)
|
|
for key in [
|
|
"eyebrow",
|
|
"title",
|
|
"subtitle",
|
|
"openIwooos",
|
|
"boundaryTitle",
|
|
"boundaryIntro",
|
|
"routeRoleTitle",
|
|
"routeRoleSubtitle",
|
|
"routeLabel",
|
|
"rolloutTitle",
|
|
"rolloutSubtitle",
|
|
"phaseLabel",
|
|
"boundaryCodesSummary",
|
|
"authority",
|
|
"items",
|
|
"routeRoles",
|
|
"rolloutPhases",
|
|
]:
|
|
assert_contains(
|
|
"web_messages.zh-TW.securityCompliance.frontStage.keys",
|
|
list(web_messages_zh["securityCompliance"]["frontStage"].keys()),
|
|
key,
|
|
)
|
|
assert_contains(
|
|
"web_messages.en.securityCompliance.frontStage.keys",
|
|
list(web_messages_en["securityCompliance"]["frontStage"].keys()),
|
|
key,
|
|
)
|
|
for key in ["eyebrow", "title", "body", "open", "signals"]:
|
|
assert_contains(
|
|
"web_messages.zh-TW.securityCompliance.frontStage.authority.keys",
|
|
list(web_messages_zh["securityCompliance"]["frontStage"]["authority"].keys()),
|
|
key,
|
|
)
|
|
assert_contains(
|
|
"web_messages.en.securityCompliance.frontStage.authority.keys",
|
|
list(web_messages_en["securityCompliance"]["frontStage"]["authority"].keys()),
|
|
key,
|
|
)
|
|
for key in ["source", "progress", "gate", "mode"]:
|
|
assert_contains(
|
|
"web_messages.zh-TW.securityCompliance.frontStage.authority.signals",
|
|
list(web_messages_zh["securityCompliance"]["frontStage"]["authority"]["signals"].keys()),
|
|
key,
|
|
)
|
|
assert_contains(
|
|
"web_messages.en.securityCompliance.frontStage.authority.signals",
|
|
list(web_messages_en["securityCompliance"]["frontStage"]["authority"]["signals"].keys()),
|
|
key,
|
|
)
|
|
for key in ["routePreserved", "iwooosBridge", "dedupeNarrative", "noRuntimeControl"]:
|
|
assert_contains(
|
|
"web_messages.zh-TW.securityCompliance.frontStage.items",
|
|
list(web_messages_zh["securityCompliance"]["frontStage"]["items"].keys()),
|
|
key,
|
|
)
|
|
assert_contains(
|
|
"web_messages.en.securityCompliance.frontStage.items",
|
|
list(web_messages_en["securityCompliance"]["frontStage"]["items"].keys()),
|
|
key,
|
|
)
|
|
for key in [
|
|
"iwooosOverview",
|
|
"securityComplianceHub",
|
|
"securityMonitor",
|
|
"complianceStats",
|
|
"awooopApprovals",
|
|
]:
|
|
assert_contains(
|
|
"web_messages.zh-TW.securityCompliance.frontStage.routeRoles",
|
|
list(web_messages_zh["securityCompliance"]["frontStage"]["routeRoles"].keys()),
|
|
key,
|
|
)
|
|
assert_contains(
|
|
"web_messages.en.securityCompliance.frontStage.routeRoles",
|
|
list(web_messages_en["securityCompliance"]["frontStage"]["routeRoles"].keys()),
|
|
key,
|
|
)
|
|
for key in [
|
|
"observe",
|
|
"evidence",
|
|
"humanReview",
|
|
"runtimeGate",
|
|
"tightening",
|
|
]:
|
|
assert_contains(
|
|
"web_messages.zh-TW.securityCompliance.frontStage.rolloutPhases",
|
|
list(web_messages_zh["securityCompliance"]["frontStage"]["rolloutPhases"].keys()),
|
|
key,
|
|
)
|
|
assert_contains(
|
|
"web_messages.en.securityCompliance.frontStage.rolloutPhases",
|
|
list(web_messages_en["securityCompliance"]["frontStage"]["rolloutPhases"].keys()),
|
|
key,
|
|
)
|
|
assert_contains(
|
|
"web_messages.zh-TW.iwooos.securityComplianceFrontStage",
|
|
list(web_messages_zh["iwooos"].keys()),
|
|
"securityComplianceFrontStage",
|
|
)
|
|
assert_contains(
|
|
"web_messages.en.iwooos.securityComplianceFrontStage",
|
|
list(web_messages_en["iwooos"].keys()),
|
|
"securityComplianceFrontStage",
|
|
)
|
|
for key in ["title", "subtitle", "summary", "items", "decisionLabel", "boundaryTitle", "boundaryIntro"]:
|
|
assert_contains(
|
|
"web_messages.zh-TW.iwooos.securityComplianceFrontStage.keys",
|
|
list(web_messages_zh["iwooos"]["securityComplianceFrontStage"].keys()),
|
|
key,
|
|
)
|
|
assert_contains(
|
|
"web_messages.en.iwooos.securityComplianceFrontStage.keys",
|
|
list(web_messages_en["iwooos"]["securityComplianceFrontStage"].keys()),
|
|
key,
|
|
)
|
|
for key in ["route", "decision", "removed", "runtime"]:
|
|
assert_contains(
|
|
"web_messages.zh-TW.iwooos.securityComplianceFrontStage.summary",
|
|
list(web_messages_zh["iwooos"]["securityComplianceFrontStage"]["summary"].keys()),
|
|
key,
|
|
)
|
|
assert_contains(
|
|
"web_messages.en.iwooos.securityComplianceFrontStage.summary",
|
|
list(web_messages_en["iwooos"]["securityComplianceFrontStage"]["summary"].keys()),
|
|
key,
|
|
)
|
|
for key in ["routePreserved", "frontStageBridge", "singleSecurityNarrative", "runtimeControls"]:
|
|
assert_contains(
|
|
"web_messages.zh-TW.iwooos.securityComplianceFrontStage.items",
|
|
list(web_messages_zh["iwooos"]["securityComplianceFrontStage"]["items"].keys()),
|
|
key,
|
|
)
|
|
assert_contains(
|
|
"web_messages.en.iwooos.securityComplianceFrontStage.items",
|
|
list(web_messages_en["iwooos"]["securityComplianceFrontStage"]["items"].keys()),
|
|
key,
|
|
)
|
|
assert_text_contains(
|
|
"iwooos_page.frontstage_security_entry_roles_testid",
|
|
iwooos_projection_page,
|
|
'data-testid="iwooos-frontstage-security-entry-roles-board"',
|
|
)
|
|
assert_text_contains(
|
|
"iwooos_page.frontstage_security_entry_roles_component",
|
|
iwooos_projection_page,
|
|
"FrontstageSecurityEntryRolesBoard",
|
|
)
|
|
for text in [
|
|
"frontstage_security_entry_role_count=5",
|
|
"frontstage_security_primary_entry=iwooos",
|
|
"frontstage_security_familiar_entry=security_compliance",
|
|
"frontstage_security_execution_entry_count=0",
|
|
"frontstage_security_links_read_only=true",
|
|
"frontstage_security_operator_confusion_reduction=true",
|
|
"frontstage_security_action_buttons_allowed=false",
|
|
"runtime_execution_authorized=false",
|
|
"active_runtime_gate_count=0",
|
|
"action_buttons_allowed=false",
|
|
"not_authorization=true",
|
|
"secret_value_collection_allowed=false",
|
|
"repo_creation_authorized=false",
|
|
"refs_sync_authorized=false",
|
|
"workflow_modification_authorized=false",
|
|
"github_primary_switch_authorized=false",
|
|
"gitea_disablement_authorized=false",
|
|
]:
|
|
assert_text_contains(
|
|
"iwooos_page.frontstage_security_entry_roles_boundary",
|
|
iwooos_projection_page,
|
|
text,
|
|
)
|
|
assert_contains(
|
|
"web_messages.zh-TW.iwooos.frontstageEntryRoles",
|
|
list(web_messages_zh["iwooos"].keys()),
|
|
"frontstageEntryRoles",
|
|
)
|
|
assert_contains(
|
|
"web_messages.en.iwooos.frontstageEntryRoles",
|
|
list(web_messages_en["iwooos"].keys()),
|
|
"frontstageEntryRoles",
|
|
)
|
|
for key in ["title", "subtitle", "summary", "items", "routeLabel", "boundaryTitle", "boundaryIntro"]:
|
|
assert_contains(
|
|
"web_messages.zh-TW.iwooos.frontstageEntryRoles.keys",
|
|
list(web_messages_zh["iwooos"]["frontstageEntryRoles"].keys()),
|
|
key,
|
|
)
|
|
assert_contains(
|
|
"web_messages.en.iwooos.frontstageEntryRoles.keys",
|
|
list(web_messages_en["iwooos"]["frontstageEntryRoles"].keys()),
|
|
key,
|
|
)
|
|
for key in ["entries", "primary", "familiar", "execution"]:
|
|
assert_contains(
|
|
"web_messages.zh-TW.iwooos.frontstageEntryRoles.summary",
|
|
list(web_messages_zh["iwooos"]["frontstageEntryRoles"]["summary"].keys()),
|
|
key,
|
|
)
|
|
assert_contains(
|
|
"web_messages.en.iwooos.frontstageEntryRoles.summary",
|
|
list(web_messages_en["iwooos"]["frontstageEntryRoles"]["summary"].keys()),
|
|
key,
|
|
)
|
|
for key in [
|
|
"iwooosOverview",
|
|
"securityComplianceHub",
|
|
"securityMonitor",
|
|
"complianceStats",
|
|
"awooopApprovals",
|
|
]:
|
|
assert_contains(
|
|
"web_messages.zh-TW.iwooos.frontstageEntryRoles.items",
|
|
list(web_messages_zh["iwooos"]["frontstageEntryRoles"]["items"].keys()),
|
|
key,
|
|
)
|
|
assert_contains(
|
|
"web_messages.en.iwooos.frontstageEntryRoles.items",
|
|
list(web_messages_en["iwooos"]["frontstageEntryRoles"]["items"].keys()),
|
|
key,
|
|
)
|
|
assert_text_contains(
|
|
"iwooos_page.low_friction_rollout_testid",
|
|
iwooos_projection_page,
|
|
'data-testid="iwooos-low-friction-rollout-ladder-board"',
|
|
)
|
|
assert_text_contains(
|
|
"iwooos_page.low_friction_rollout_component",
|
|
iwooos_projection_page,
|
|
"IwoooSLowFrictionRolloutLadderBoard",
|
|
)
|
|
for text in [
|
|
"iwooos_rollout_phase_count=5",
|
|
"iwooos_rollout_current_phase=observe_first",
|
|
"iwooos_rollout_frontstage_source=security_compliance_s2_110",
|
|
"iwooos_rollout_runtime_phase_enabled=false",
|
|
"iwooos_rollout_enforcement_enabled=false",
|
|
"iwooos_rollout_action_buttons_allowed=false",
|
|
"runtime_execution_authorized=false",
|
|
"active_runtime_gate_count=0",
|
|
"action_buttons_allowed=false",
|
|
"not_authorization=true",
|
|
"secret_value_collection_allowed=false",
|
|
"repo_creation_authorized=false",
|
|
"refs_sync_authorized=false",
|
|
"workflow_modification_authorized=false",
|
|
"github_primary_switch_authorized=false",
|
|
"gitea_disablement_authorized=false",
|
|
]:
|
|
assert_text_contains(
|
|
"iwooos_page.low_friction_rollout_boundary",
|
|
iwooos_projection_page,
|
|
text,
|
|
)
|
|
assert_contains(
|
|
"web_messages.zh-TW.iwooos.lowFrictionRollout",
|
|
list(web_messages_zh["iwooos"].keys()),
|
|
"lowFrictionRollout",
|
|
)
|
|
assert_contains(
|
|
"web_messages.en.iwooos.lowFrictionRollout",
|
|
list(web_messages_en["iwooos"].keys()),
|
|
"lowFrictionRollout",
|
|
)
|
|
for key in ["title", "subtitle", "summary", "items", "phaseLabel", "boundaryTitle", "boundaryIntro"]:
|
|
assert_contains(
|
|
"web_messages.zh-TW.iwooos.lowFrictionRollout.keys",
|
|
list(web_messages_zh["iwooos"]["lowFrictionRollout"].keys()),
|
|
key,
|
|
)
|
|
assert_contains(
|
|
"web_messages.en.iwooos.lowFrictionRollout.keys",
|
|
list(web_messages_en["iwooos"]["lowFrictionRollout"].keys()),
|
|
key,
|
|
)
|
|
for key in ["phases", "current", "runtime", "enforcement"]:
|
|
assert_contains(
|
|
"web_messages.zh-TW.iwooos.lowFrictionRollout.summary",
|
|
list(web_messages_zh["iwooos"]["lowFrictionRollout"]["summary"].keys()),
|
|
key,
|
|
)
|
|
assert_contains(
|
|
"web_messages.en.iwooos.lowFrictionRollout.summary",
|
|
list(web_messages_en["iwooos"]["lowFrictionRollout"]["summary"].keys()),
|
|
key,
|
|
)
|
|
for key in ["observe", "evidence", "humanReview", "runtimeGate", "tightening"]:
|
|
assert_contains(
|
|
"web_messages.zh-TW.iwooos.lowFrictionRollout.items",
|
|
list(web_messages_zh["iwooos"]["lowFrictionRollout"]["items"].keys()),
|
|
key,
|
|
)
|
|
assert_contains(
|
|
"web_messages.en.iwooos.lowFrictionRollout.items",
|
|
list(web_messages_en["iwooos"]["lowFrictionRollout"]["items"].keys()),
|
|
key,
|
|
)
|
|
assert_text_contains(
|
|
"iwooos_page.low_friction_next_actions_testid",
|
|
iwooos_projection_page,
|
|
'data-testid="iwooos-low-friction-next-actions-board"',
|
|
)
|
|
assert_text_contains(
|
|
"iwooos_page.low_friction_next_actions_component",
|
|
iwooos_projection_page,
|
|
"IwoooSLowFrictionNextActionsBoard",
|
|
)
|
|
for text in [
|
|
"iwooos_next_action_item_count=4",
|
|
"iwooos_next_action_allowed_mode=observe_and_evidence_only",
|
|
"iwooos_next_action_runtime_gate_required=true",
|
|
"iwooos_next_action_scan_authorized=false",
|
|
"iwooos_next_action_host_change_authorized=false",
|
|
"iwooos_next_action_deploy_authorized=false",
|
|
"iwooos_next_action_source_control_mutation_authorized=false",
|
|
"runtime_execution_authorized=false",
|
|
"active_runtime_gate_count=0",
|
|
"action_buttons_allowed=false",
|
|
"not_authorization=true",
|
|
"secret_value_collection_allowed=false",
|
|
"repo_creation_authorized=false",
|
|
"refs_sync_authorized=false",
|
|
"workflow_modification_authorized=false",
|
|
"github_primary_switch_authorized=false",
|
|
"gitea_disablement_authorized=false",
|
|
]:
|
|
assert_text_contains(
|
|
"iwooos_page.low_friction_next_actions_boundary",
|
|
iwooos_projection_page,
|
|
text,
|
|
)
|
|
assert_contains(
|
|
"web_messages.zh-TW.iwooos.lowFrictionNextActions",
|
|
list(web_messages_zh["iwooos"].keys()),
|
|
"lowFrictionNextActions",
|
|
)
|
|
assert_contains(
|
|
"web_messages.en.iwooos.lowFrictionNextActions",
|
|
list(web_messages_en["iwooos"].keys()),
|
|
"lowFrictionNextActions",
|
|
)
|
|
for key in ["title", "subtitle", "summary", "items", "boundaryTitle", "boundaryIntro"]:
|
|
assert_contains(
|
|
"web_messages.zh-TW.iwooos.lowFrictionNextActions.keys",
|
|
list(web_messages_zh["iwooos"]["lowFrictionNextActions"].keys()),
|
|
key,
|
|
)
|
|
assert_contains(
|
|
"web_messages.en.iwooos.lowFrictionNextActions.keys",
|
|
list(web_messages_en["iwooos"]["lowFrictionNextActions"].keys()),
|
|
key,
|
|
)
|
|
for key in ["allowed", "prep", "blocked", "runtime"]:
|
|
assert_contains(
|
|
"web_messages.zh-TW.iwooos.lowFrictionNextActions.summary",
|
|
list(web_messages_zh["iwooos"]["lowFrictionNextActions"]["summary"].keys()),
|
|
key,
|
|
)
|
|
assert_contains(
|
|
"web_messages.en.iwooos.lowFrictionNextActions.summary",
|
|
list(web_messages_en["iwooos"]["lowFrictionNextActions"]["summary"].keys()),
|
|
key,
|
|
)
|
|
for key in ["observeInventory", "evidencePacket", "humanReviewPrep", "runtimeClosed"]:
|
|
assert_contains(
|
|
"web_messages.zh-TW.iwooos.lowFrictionNextActions.items",
|
|
list(web_messages_zh["iwooos"]["lowFrictionNextActions"]["items"].keys()),
|
|
key,
|
|
)
|
|
assert_contains(
|
|
"web_messages.en.iwooos.lowFrictionNextActions.items",
|
|
list(web_messages_en["iwooos"]["lowFrictionNextActions"]["items"].keys()),
|
|
key,
|
|
)
|
|
assert_text_contains(
|
|
"iwooos_page.progress_movement_signals_testid",
|
|
iwooos_projection_page,
|
|
'data-testid="iwooos-progress-movement-signals-board"',
|
|
)
|
|
assert_text_contains(
|
|
"iwooos_page.progress_movement_signals_component",
|
|
iwooos_projection_page,
|
|
"IwoooSProgressMovementSignalsBoard",
|
|
)
|
|
for text in [
|
|
"{ key: 'headline', value: '64%', tone: 'warn' as const }",
|
|
"{ key: 'signals', value: '6', tone: 'warn' as const }",
|
|
"{ key: 'passed', value: '2', tone: 'steady' as const }",
|
|
"{ key: 'runtime', value: '0', tone: 'locked' as const }",
|
|
]:
|
|
assert_text_contains("iwooos_page.progress_movement_signals_summary", iwooos_projection_page, text)
|
|
for text in [
|
|
"iwooos_progress_movement_signal_count=6",
|
|
"iwooos_progress_current_headline_percent=64",
|
|
"iwooos_progress_owner_response_accepted_count=0",
|
|
"iwooos_progress_redacted_payload_ingested=false",
|
|
"iwooos_progress_active_runtime_gate_count=0",
|
|
"iwooos_progress_github_primary_ready_count=0",
|
|
"iwooos_progress_awooop_landing_evidence_count=1",
|
|
"iwooos_progress_kali_112_read_only_evidence_count=1",
|
|
"iwooos_progress_review_authorized=true",
|
|
"runtime_execution_authorized=false",
|
|
"active_runtime_gate_count=0",
|
|
"action_buttons_allowed=false",
|
|
"not_authorization=true",
|
|
"secret_value_collection_allowed=false",
|
|
"repo_creation_authorized=false",
|
|
"refs_sync_authorized=false",
|
|
"workflow_modification_authorized=false",
|
|
"github_primary_switch_authorized=false",
|
|
"gitea_disablement_authorized=false",
|
|
]:
|
|
assert_text_contains(
|
|
"iwooos_page.progress_movement_signals_boundary",
|
|
iwooos_projection_page,
|
|
text,
|
|
)
|
|
assert_contains(
|
|
"web_messages.zh-TW.iwooos.progressMovementSignals",
|
|
list(web_messages_zh["iwooos"].keys()),
|
|
"progressMovementSignals",
|
|
)
|
|
assert_contains(
|
|
"web_messages.en.iwooos.progressMovementSignals",
|
|
list(web_messages_en["iwooos"].keys()),
|
|
"progressMovementSignals",
|
|
)
|
|
for key in ["title", "subtitle", "summary", "items", "boundaryTitle", "boundaryIntro"]:
|
|
assert_contains(
|
|
"web_messages.zh-TW.iwooos.progressMovementSignals.keys",
|
|
list(web_messages_zh["iwooos"]["progressMovementSignals"].keys()),
|
|
key,
|
|
)
|
|
assert_contains(
|
|
"web_messages.en.iwooos.progressMovementSignals.keys",
|
|
list(web_messages_en["iwooos"]["progressMovementSignals"].keys()),
|
|
key,
|
|
)
|
|
for key in ["headline", "signals", "passed", "runtime"]:
|
|
assert_contains(
|
|
"web_messages.zh-TW.iwooos.progressMovementSignals.summary",
|
|
list(web_messages_zh["iwooos"]["progressMovementSignals"]["summary"].keys()),
|
|
key,
|
|
)
|
|
assert_contains(
|
|
"web_messages.en.iwooos.progressMovementSignals.summary",
|
|
list(web_messages_en["iwooos"]["progressMovementSignals"]["summary"].keys()),
|
|
key,
|
|
)
|
|
for key in ["ownerResponse", "redactedEvidence", "runtimeGate", "sourceControl", "awooopLanding"]:
|
|
assert_contains(
|
|
"web_messages.zh-TW.iwooos.progressMovementSignals.items",
|
|
list(web_messages_zh["iwooos"]["progressMovementSignals"]["items"].keys()),
|
|
key,
|
|
)
|
|
assert_contains(
|
|
"web_messages.en.iwooos.progressMovementSignals.items",
|
|
list(web_messages_en["iwooos"]["progressMovementSignals"]["items"].keys()),
|
|
key,
|
|
)
|
|
assert_text_contains(
|
|
"iwooos_page.concrete_security_work_map_testid",
|
|
iwooos_projection_page,
|
|
'data-testid="iwooos-concrete-security-work-map-board"',
|
|
)
|
|
assert_text_contains(
|
|
"iwooos_page.concrete_security_work_map_component",
|
|
iwooos_projection_page,
|
|
"IwoooSConcreteSecurityWorkMapBoard",
|
|
)
|
|
for text in [
|
|
"iwooos_concrete_security_workstream_count=6",
|
|
"iwooos_concrete_security_visible_workstream_count=6",
|
|
"iwooos_concrete_security_framework_only_stream_count=6",
|
|
"iwooos_concrete_security_runtime_workstream_count=0",
|
|
"iwooos_concrete_security_next_real_gate=s4_9_owner_response_accepted",
|
|
"iwooos_concrete_security_owner_response_received_count=0",
|
|
"iwooos_concrete_security_owner_response_accepted_count=0",
|
|
"iwooos_concrete_security_redacted_payload_ingested=false",
|
|
"iwooos_concrete_security_active_runtime_gate_count=0",
|
|
"iwooos_concrete_security_github_primary_ready_count=0",
|
|
"iwooos_concrete_security_kali_scan_authorized=false",
|
|
"iwooos_concrete_security_host_change_authorized=false",
|
|
"runtime_execution_authorized=false",
|
|
"active_runtime_gate_count=0",
|
|
"action_buttons_allowed=false",
|
|
"not_authorization=true",
|
|
"secret_value_collection_allowed=false",
|
|
"repo_creation_authorized=false",
|
|
"refs_sync_authorized=false",
|
|
"workflow_modification_authorized=false",
|
|
"github_primary_switch_authorized=false",
|
|
"gitea_disablement_authorized=false",
|
|
]:
|
|
assert_text_contains(
|
|
"iwooos_page.concrete_security_work_map_boundary",
|
|
iwooos_projection_page,
|
|
text,
|
|
)
|
|
assert_contains(
|
|
"web_messages.zh-TW.iwooos.concreteSecurityWorkMap",
|
|
list(web_messages_zh["iwooos"].keys()),
|
|
"concreteSecurityWorkMap",
|
|
)
|
|
assert_contains(
|
|
"web_messages.en.iwooos.concreteSecurityWorkMap",
|
|
list(web_messages_en["iwooos"].keys()),
|
|
"concreteSecurityWorkMap",
|
|
)
|
|
for key in ["title", "subtitle", "summary", "items", "workLabel", "boundaryTitle", "boundaryIntro"]:
|
|
assert_contains(
|
|
"web_messages.zh-TW.iwooos.concreteSecurityWorkMap.keys",
|
|
list(web_messages_zh["iwooos"]["concreteSecurityWorkMap"].keys()),
|
|
key,
|
|
)
|
|
assert_contains(
|
|
"web_messages.en.iwooos.concreteSecurityWorkMap.keys",
|
|
list(web_messages_en["iwooos"]["concreteSecurityWorkMap"].keys()),
|
|
key,
|
|
)
|
|
for key in ["streams", "visible", "realGate", "runtime"]:
|
|
assert_contains(
|
|
"web_messages.zh-TW.iwooos.concreteSecurityWorkMap.summary",
|
|
list(web_messages_zh["iwooos"]["concreteSecurityWorkMap"]["summary"].keys()),
|
|
key,
|
|
)
|
|
assert_contains(
|
|
"web_messages.en.iwooos.concreteSecurityWorkMap.summary",
|
|
list(web_messages_en["iwooos"]["concreteSecurityWorkMap"]["summary"].keys()),
|
|
key,
|
|
)
|
|
for key in [
|
|
"frontstageVisibility",
|
|
"hostScopeInventory",
|
|
"sourceControlMigration",
|
|
"ownerEvidenceIntake",
|
|
"reviewerHumanFlow",
|
|
"runtimeExecutionGate",
|
|
]:
|
|
assert_contains(
|
|
"web_messages.zh-TW.iwooos.concreteSecurityWorkMap.items",
|
|
list(web_messages_zh["iwooos"]["concreteSecurityWorkMap"]["items"].keys()),
|
|
key,
|
|
)
|
|
assert_contains(
|
|
"web_messages.en.iwooos.concreteSecurityWorkMap.items",
|
|
list(web_messages_en["iwooos"]["concreteSecurityWorkMap"]["items"].keys()),
|
|
key,
|
|
)
|
|
assert_text_contains(
|
|
"iwooos_page.concrete_security_delivery_checklist_testid",
|
|
iwooos_projection_page,
|
|
'data-testid="iwooos-concrete-security-delivery-checklist-board"',
|
|
)
|
|
assert_text_contains(
|
|
"iwooos_page.concrete_security_delivery_checklist_component",
|
|
iwooos_projection_page,
|
|
"IwoooSConcreteSecurityDeliveryChecklistBoard",
|
|
)
|
|
for text in [
|
|
"iwooos_concrete_security_delivery_item_count=6",
|
|
"iwooos_concrete_security_delivery_visible_item_count=6",
|
|
"iwooos_concrete_security_delivery_framework_only_count=6",
|
|
"iwooos_concrete_security_delivery_runtime_item_count=0",
|
|
"iwooos_concrete_security_delivery_next_owner_evidence=s4_9_owner_response",
|
|
"iwooos_concrete_security_delivery_ready_for_runtime_count=0",
|
|
"iwooos_concrete_security_delivery_evidence_received_count=0",
|
|
"iwooos_concrete_security_delivery_evidence_accepted_count=0",
|
|
"iwooos_concrete_security_delivery_reviewer_queue_open=false",
|
|
"iwooos_concrete_security_delivery_git_primary_ready=false",
|
|
"iwooos_concrete_security_delivery_kali_execution_ready=false",
|
|
"runtime_execution_authorized=false",
|
|
"active_runtime_gate_count=0",
|
|
"action_buttons_allowed=false",
|
|
"not_authorization=true",
|
|
"secret_value_collection_allowed=false",
|
|
"repo_creation_authorized=false",
|
|
"refs_sync_authorized=false",
|
|
"workflow_modification_authorized=false",
|
|
"github_primary_switch_authorized=false",
|
|
"gitea_disablement_authorized=false",
|
|
]:
|
|
assert_text_contains(
|
|
"iwooos_page.concrete_security_delivery_checklist_boundary",
|
|
iwooos_projection_page,
|
|
text,
|
|
)
|
|
assert_contains(
|
|
"web_messages.zh-TW.iwooos.concreteSecurityDeliveryChecklist",
|
|
list(web_messages_zh["iwooos"].keys()),
|
|
"concreteSecurityDeliveryChecklist",
|
|
)
|
|
assert_contains(
|
|
"web_messages.en.iwooos.concreteSecurityDeliveryChecklist",
|
|
list(web_messages_en["iwooos"].keys()),
|
|
"concreteSecurityDeliveryChecklist",
|
|
)
|
|
for key in [
|
|
"title",
|
|
"subtitle",
|
|
"summary",
|
|
"items",
|
|
"deliverableLabel",
|
|
"deliveredLabel",
|
|
"nextLabel",
|
|
"blockedLabel",
|
|
"boundaryTitle",
|
|
"boundaryIntro",
|
|
]:
|
|
assert_contains(
|
|
"web_messages.zh-TW.iwooos.concreteSecurityDeliveryChecklist.keys",
|
|
list(web_messages_zh["iwooos"]["concreteSecurityDeliveryChecklist"].keys()),
|
|
key,
|
|
)
|
|
assert_contains(
|
|
"web_messages.en.iwooos.concreteSecurityDeliveryChecklist.keys",
|
|
list(web_messages_en["iwooos"]["concreteSecurityDeliveryChecklist"].keys()),
|
|
key,
|
|
)
|
|
for key in ["items", "framework", "blocked", "runtime"]:
|
|
assert_contains(
|
|
"web_messages.zh-TW.iwooos.concreteSecurityDeliveryChecklist.summary",
|
|
list(web_messages_zh["iwooos"]["concreteSecurityDeliveryChecklist"]["summary"].keys()),
|
|
key,
|
|
)
|
|
assert_contains(
|
|
"web_messages.en.iwooos.concreteSecurityDeliveryChecklist.summary",
|
|
list(web_messages_en["iwooos"]["concreteSecurityDeliveryChecklist"]["summary"].keys()),
|
|
key,
|
|
)
|
|
for key in [
|
|
"visibilitySurface",
|
|
"hostScopeEvidence",
|
|
"sourceControlEvidence",
|
|
"s49OwnerPacket",
|
|
"reviewerPreparation",
|
|
"runtimeGate",
|
|
]:
|
|
assert_contains(
|
|
"web_messages.zh-TW.iwooos.concreteSecurityDeliveryChecklist.items",
|
|
list(web_messages_zh["iwooos"]["concreteSecurityDeliveryChecklist"]["items"].keys()),
|
|
key,
|
|
)
|
|
assert_contains(
|
|
"web_messages.en.iwooos.concreteSecurityDeliveryChecklist.items",
|
|
list(web_messages_en["iwooos"]["concreteSecurityDeliveryChecklist"]["items"].keys()),
|
|
key,
|
|
)
|
|
assert_text_contains(
|
|
"iwooos_page.concrete_security_blocker_resolution_testid",
|
|
iwooos_projection_page,
|
|
'data-testid="iwooos-concrete-security-blocker-resolution-board"',
|
|
)
|
|
assert_text_contains(
|
|
"iwooos_page.concrete_security_blocker_resolution_component",
|
|
iwooos_projection_page,
|
|
"IwoooSConcreteSecurityBlockerResolutionBoard",
|
|
)
|
|
for text in [
|
|
"iwooos_concrete_security_blocker_count=6",
|
|
"iwooos_concrete_security_visible_blocker_count=6",
|
|
"iwooos_concrete_security_headline_blocker_count=6",
|
|
"iwooos_concrete_security_blocker_resolved_count=0",
|
|
"iwooos_concrete_security_first_resolvable_blocker=s4_9_owner_response_missing",
|
|
"iwooos_concrete_security_owner_response_required=true",
|
|
"iwooos_concrete_security_redacted_evidence_required=true",
|
|
"iwooos_concrete_security_reviewer_queue_open=false",
|
|
"iwooos_concrete_security_github_primary_ready=false",
|
|
"iwooos_concrete_security_kali_execution_ready=false",
|
|
"iwooos_concrete_security_runtime_gate_open=false",
|
|
"runtime_execution_authorized=false",
|
|
"active_runtime_gate_count=0",
|
|
"action_buttons_allowed=false",
|
|
"not_authorization=true",
|
|
"secret_value_collection_allowed=false",
|
|
"repo_creation_authorized=false",
|
|
"refs_sync_authorized=false",
|
|
"workflow_modification_authorized=false",
|
|
"github_primary_switch_authorized=false",
|
|
"gitea_disablement_authorized=false",
|
|
]:
|
|
assert_text_contains(
|
|
"iwooos_page.concrete_security_blocker_resolution_boundary",
|
|
iwooos_projection_page,
|
|
text,
|
|
)
|
|
assert_contains(
|
|
"web_messages.zh-TW.iwooos.concreteSecurityBlockerResolution",
|
|
list(web_messages_zh["iwooos"].keys()),
|
|
"concreteSecurityBlockerResolution",
|
|
)
|
|
assert_contains(
|
|
"web_messages.en.iwooos.concreteSecurityBlockerResolution",
|
|
list(web_messages_en["iwooos"].keys()),
|
|
"concreteSecurityBlockerResolution",
|
|
)
|
|
for key in [
|
|
"title",
|
|
"subtitle",
|
|
"summary",
|
|
"items",
|
|
"blockerLabel",
|
|
"whyLabel",
|
|
"unlockLabel",
|
|
"boundaryTitle",
|
|
"boundaryIntro",
|
|
]:
|
|
assert_contains(
|
|
"web_messages.zh-TW.iwooos.concreteSecurityBlockerResolution.keys",
|
|
list(web_messages_zh["iwooos"]["concreteSecurityBlockerResolution"].keys()),
|
|
key,
|
|
)
|
|
assert_contains(
|
|
"web_messages.en.iwooos.concreteSecurityBlockerResolution.keys",
|
|
list(web_messages_en["iwooos"]["concreteSecurityBlockerResolution"].keys()),
|
|
key,
|
|
)
|
|
for key in ["blockers", "resolved", "first", "runtime"]:
|
|
assert_contains(
|
|
"web_messages.zh-TW.iwooos.concreteSecurityBlockerResolution.summary",
|
|
list(web_messages_zh["iwooos"]["concreteSecurityBlockerResolution"]["summary"].keys()),
|
|
key,
|
|
)
|
|
assert_contains(
|
|
"web_messages.en.iwooos.concreteSecurityBlockerResolution.summary",
|
|
list(web_messages_en["iwooos"]["concreteSecurityBlockerResolution"]["summary"].keys()),
|
|
key,
|
|
)
|
|
for key in [
|
|
"ownerResponseMissing",
|
|
"redactedEvidenceMissing",
|
|
"reviewerQueueClosed",
|
|
"sourceControlNotReady",
|
|
"hostEvidencePending",
|
|
"runtimeGateClosed",
|
|
]:
|
|
assert_contains(
|
|
"web_messages.zh-TW.iwooos.concreteSecurityBlockerResolution.items",
|
|
list(web_messages_zh["iwooos"]["concreteSecurityBlockerResolution"]["items"].keys()),
|
|
key,
|
|
)
|
|
assert_contains(
|
|
"web_messages.en.iwooos.concreteSecurityBlockerResolution.items",
|
|
list(web_messages_en["iwooos"]["concreteSecurityBlockerResolution"]["items"].keys()),
|
|
key,
|
|
)
|
|
assert_text_contains(
|
|
"iwooos_page.all_product_coverage_snapshot_testid",
|
|
iwooos_projection_page,
|
|
'data-testid="iwooos-all-product-coverage-snapshot-board"',
|
|
)
|
|
assert_text_contains(
|
|
"iwooos_page.all_product_coverage_snapshot_boundary_testid",
|
|
iwooos_projection_page,
|
|
'data-testid="iwooos-all-product-coverage-snapshot-boundaries"',
|
|
)
|
|
assert_text_contains(
|
|
"iwooos_page.all_product_coverage_snapshot_component",
|
|
iwooos_projection_page,
|
|
"IwoooSAllProductCoverageSnapshotBoard",
|
|
)
|
|
for text in [
|
|
"iwooos_all_product_coverage_snapshot_scope_count=8",
|
|
"iwooos_all_product_coverage_snapshot_read_only_count=8",
|
|
"iwooos_all_product_coverage_snapshot_runtime_ready_count=0",
|
|
"iwooos_all_product_coverage_snapshot_default_summary_mode=compact_first",
|
|
"iwooos_all_product_coverage_snapshot_detail_ledger_collapsed=true",
|
|
"iwooos_all_product_coverage_snapshot_next_gate=s4_9_owner_response_accepted",
|
|
"vibework_project_read_only_in_scope=true",
|
|
"vibework_runtime_ready=false",
|
|
"agent_bounty_project_read_only_in_scope=true",
|
|
"agent_bounty_runtime_ready=false",
|
|
"runtime_execution_authorized=false",
|
|
"active_runtime_gate_count=0",
|
|
"action_buttons_allowed=false",
|
|
"not_authorization=true",
|
|
"secret_value_collection_allowed=false",
|
|
"repo_creation_authorized=false",
|
|
"refs_sync_authorized=false",
|
|
"workflow_modification_authorized=false",
|
|
"github_primary_switch_authorized=false",
|
|
"gitea_disablement_authorized=false",
|
|
]:
|
|
assert_text_contains(
|
|
"iwooos_page.all_product_coverage_snapshot_boundary",
|
|
iwooos_projection_page,
|
|
text,
|
|
)
|
|
assert_contains(
|
|
"web_messages.zh-TW.iwooos.allProductCoverageSnapshot",
|
|
list(web_messages_zh["iwooos"].keys()),
|
|
"allProductCoverageSnapshot",
|
|
)
|
|
assert_contains(
|
|
"web_messages.en.iwooos.allProductCoverageSnapshot",
|
|
list(web_messages_en["iwooos"].keys()),
|
|
"allProductCoverageSnapshot",
|
|
)
|
|
for key in [
|
|
"title",
|
|
"subtitle",
|
|
"summary",
|
|
"states",
|
|
"items",
|
|
"boundaryTitle",
|
|
"boundaryIntro",
|
|
]:
|
|
assert_contains(
|
|
"web_messages.zh-TW.iwooos.allProductCoverageSnapshot.keys",
|
|
list(web_messages_zh["iwooos"]["allProductCoverageSnapshot"].keys()),
|
|
key,
|
|
)
|
|
assert_contains(
|
|
"web_messages.en.iwooos.allProductCoverageSnapshot.keys",
|
|
list(web_messages_en["iwooos"]["allProductCoverageSnapshot"].keys()),
|
|
key,
|
|
)
|
|
for key in ["scopeCount", "readOnlyScopes", "runtimeReady", "nextGate"]:
|
|
assert_contains(
|
|
"web_messages.zh-TW.iwooos.allProductCoverageSnapshot.summary",
|
|
list(web_messages_zh["iwooos"]["allProductCoverageSnapshot"]["summary"].keys()),
|
|
key,
|
|
)
|
|
assert_contains(
|
|
"web_messages.en.iwooos.allProductCoverageSnapshot.summary",
|
|
list(web_messages_en["iwooos"]["allProductCoverageSnapshot"]["summary"].keys()),
|
|
key,
|
|
)
|
|
for key in [
|
|
"connected",
|
|
"visible",
|
|
"waitingEvidence",
|
|
"approvalRequired",
|
|
"readOnlyFirst",
|
|
"newProjectReadOnly",
|
|
"templateReady",
|
|
]:
|
|
assert_contains(
|
|
"web_messages.zh-TW.iwooos.allProductCoverageSnapshot.states",
|
|
list(web_messages_zh["iwooos"]["allProductCoverageSnapshot"]["states"].keys()),
|
|
key,
|
|
)
|
|
assert_contains(
|
|
"web_messages.en.iwooos.allProductCoverageSnapshot.states",
|
|
list(web_messages_en["iwooos"]["allProductCoverageSnapshot"]["states"].keys()),
|
|
key,
|
|
)
|
|
for key in [
|
|
"awoooiCore",
|
|
"websites",
|
|
"sourceControl",
|
|
"hosts",
|
|
"toolsMonitoring",
|
|
"vibeWork",
|
|
"agentBountyProtocol",
|
|
"futureProducts",
|
|
]:
|
|
assert_contains(
|
|
"web_messages.zh-TW.iwooos.allProductCoverageSnapshot.items",
|
|
list(web_messages_zh["iwooos"]["allProductCoverageSnapshot"]["items"].keys()),
|
|
key,
|
|
)
|
|
assert_contains(
|
|
"web_messages.en.iwooos.allProductCoverageSnapshot.items",
|
|
list(web_messages_en["iwooos"]["allProductCoverageSnapshot"]["items"].keys()),
|
|
key,
|
|
)
|
|
assert_text_contains(
|
|
"iwooos_page.global_security_mesh_matrix_testid",
|
|
iwooos_projection_page,
|
|
'data-testid="iwooos-global-security-mesh-matrix-board"',
|
|
)
|
|
assert_text_contains(
|
|
"iwooos_page.global_security_mesh_matrix_boundary_testid",
|
|
iwooos_projection_page,
|
|
'data-testid="iwooos-global-security-mesh-matrix-boundaries"',
|
|
)
|
|
assert_text_contains(
|
|
"iwooos_page.global_security_mesh_matrix_component",
|
|
iwooos_projection_page,
|
|
"IwoooSGlobalSecurityMeshMatrixBoard",
|
|
)
|
|
for text in [
|
|
"iwooos_global_security_mesh_first_layer=true",
|
|
"iwooos_global_security_mesh_asset_count=9",
|
|
"iwooos_global_security_mesh_read_only_count=9",
|
|
"iwooos_global_security_mesh_runtime_gate_count=0",
|
|
"iwooos_global_security_mesh_source_control_mutation_authorized=false",
|
|
"iwooos_global_security_mesh_kali_execution_authorized=false",
|
|
"iwooos_global_security_mesh_host_change_authorized=false",
|
|
"iwooos_global_security_mesh_scan_authorized=false",
|
|
"iwooos_global_security_mesh_production_deploy_authorized=false",
|
|
"runtime_execution_authorized=false",
|
|
"active_runtime_gate_count=0",
|
|
"action_buttons_allowed=false",
|
|
"not_authorization=true",
|
|
]:
|
|
assert_text_contains(
|
|
"iwooos_page.global_security_mesh_matrix_boundary",
|
|
iwooos_projection_page,
|
|
text,
|
|
)
|
|
assert_contains(
|
|
"web_messages.zh-TW.iwooos.globalSecurityMeshMatrix",
|
|
list(web_messages_zh["iwooos"].keys()),
|
|
"globalSecurityMeshMatrix",
|
|
)
|
|
assert_contains(
|
|
"web_messages.en.iwooos.globalSecurityMeshMatrix",
|
|
list(web_messages_en["iwooos"].keys()),
|
|
"globalSecurityMeshMatrix",
|
|
)
|
|
for key in [
|
|
"eyebrow",
|
|
"title",
|
|
"subtitle",
|
|
"coverageLabel",
|
|
"evidenceLabel",
|
|
"runtimeLabel",
|
|
"nextLabel",
|
|
"boundaryTitle",
|
|
"boundaryIntro",
|
|
"summary",
|
|
"items",
|
|
]:
|
|
assert_contains(
|
|
"web_messages.zh-TW.iwooos.globalSecurityMeshMatrix.keys",
|
|
list(web_messages_zh["iwooos"]["globalSecurityMeshMatrix"].keys()),
|
|
key,
|
|
)
|
|
assert_contains(
|
|
"web_messages.en.iwooos.globalSecurityMeshMatrix.keys",
|
|
list(web_messages_en["iwooos"]["globalSecurityMeshMatrix"].keys()),
|
|
key,
|
|
)
|
|
for key in ["assets", "readOnly", "runtime", "nextGate"]:
|
|
assert_contains(
|
|
"web_messages.zh-TW.iwooos.globalSecurityMeshMatrix.summary",
|
|
list(web_messages_zh["iwooos"]["globalSecurityMeshMatrix"]["summary"].keys()),
|
|
key,
|
|
)
|
|
assert_contains(
|
|
"web_messages.en.iwooos.globalSecurityMeshMatrix.summary",
|
|
list(web_messages_en["iwooos"]["globalSecurityMeshMatrix"]["summary"].keys()),
|
|
key,
|
|
)
|
|
for key in ["awoooi", "awooop", "iwooos", "publicSites", "vibeWork", "agentBountyProtocol", "kali112", "devHosts", "sourceControl"]:
|
|
assert_contains(
|
|
"web_messages.zh-TW.iwooos.globalSecurityMeshMatrix.items",
|
|
list(web_messages_zh["iwooos"]["globalSecurityMeshMatrix"]["items"].keys()),
|
|
key,
|
|
)
|
|
assert_contains(
|
|
"web_messages.en.iwooos.globalSecurityMeshMatrix.items",
|
|
list(web_messages_en["iwooos"]["globalSecurityMeshMatrix"]["items"].keys()),
|
|
key,
|
|
)
|
|
assert_text_contains(
|
|
"iwooos_page.host_tool_evidence_chain_testid",
|
|
iwooos_projection_page,
|
|
'data-testid="iwooos-host-tool-evidence-chain-board"',
|
|
)
|
|
assert_text_contains(
|
|
"iwooos_page.host_tool_evidence_chain_boundary_testid",
|
|
iwooos_projection_page,
|
|
'data-testid="iwooos-host-tool-evidence-chain-boundaries"',
|
|
)
|
|
assert_text_contains(
|
|
"iwooos_page.host_tool_evidence_chain_component",
|
|
iwooos_projection_page,
|
|
"IwoooSHostToolEvidenceChainBoard",
|
|
)
|
|
for text in [
|
|
"iwooos_host_tool_evidence_chain_first_layer=true",
|
|
"iwooos_host_tool_evidence_chain_host_count=3",
|
|
"iwooos_host_tool_evidence_chain_tool_lane_count=6",
|
|
"iwooos_host_tool_evidence_chain_step_count=5",
|
|
"kali_112_integrated_as_read_only=true",
|
|
"dev_hosts_111_168_integrated_as_read_only=true",
|
|
"monitoring_tools_evidence_chain_linked=true",
|
|
"kali_112_execute_authorized=false",
|
|
"host_update_authorized=false",
|
|
"active_scan_authorized=false",
|
|
"ssh_mutation_authorized=false",
|
|
"runtime_execution_authorized=false",
|
|
"active_runtime_gate_count=0",
|
|
"action_buttons_allowed=false",
|
|
"not_authorization=true",
|
|
]:
|
|
assert_text_contains(
|
|
"iwooos_page.host_tool_evidence_chain_boundary",
|
|
iwooos_projection_page,
|
|
text,
|
|
)
|
|
assert_contains(
|
|
"web_messages.zh-TW.iwooos.hostToolEvidenceChain",
|
|
list(web_messages_zh["iwooos"].keys()),
|
|
"hostToolEvidenceChain",
|
|
)
|
|
assert_contains(
|
|
"web_messages.en.iwooos.hostToolEvidenceChain",
|
|
list(web_messages_en["iwooos"].keys()),
|
|
"hostToolEvidenceChain",
|
|
)
|
|
for key in [
|
|
"eyebrow",
|
|
"title",
|
|
"subtitle",
|
|
"flowTitle",
|
|
"evidenceLabel",
|
|
"nextLabel",
|
|
"boundaryTitle",
|
|
"boundaryIntro",
|
|
"summary",
|
|
"steps",
|
|
"items",
|
|
]:
|
|
assert_contains(
|
|
"web_messages.zh-TW.iwooos.hostToolEvidenceChain.keys",
|
|
list(web_messages_zh["iwooos"]["hostToolEvidenceChain"].keys()),
|
|
key,
|
|
)
|
|
assert_contains(
|
|
"web_messages.en.iwooos.hostToolEvidenceChain.keys",
|
|
list(web_messages_en["iwooos"]["hostToolEvidenceChain"].keys()),
|
|
key,
|
|
)
|
|
for key in ["hosts", "toolLanes", "linkedEvidence", "runtime"]:
|
|
assert_contains(
|
|
"web_messages.zh-TW.iwooos.hostToolEvidenceChain.summary",
|
|
list(web_messages_zh["iwooos"]["hostToolEvidenceChain"]["summary"].keys()),
|
|
key,
|
|
)
|
|
assert_contains(
|
|
"web_messages.en.iwooos.hostToolEvidenceChain.summary",
|
|
list(web_messages_en["iwooos"]["hostToolEvidenceChain"]["summary"].keys()),
|
|
key,
|
|
)
|
|
for key in ["observe", "evidence", "review", "ownerGate", "runtimeHold"]:
|
|
assert_contains(
|
|
"web_messages.zh-TW.iwooos.hostToolEvidenceChain.steps",
|
|
list(web_messages_zh["iwooos"]["hostToolEvidenceChain"]["steps"].keys()),
|
|
key,
|
|
)
|
|
assert_contains(
|
|
"web_messages.en.iwooos.hostToolEvidenceChain.steps",
|
|
list(web_messages_en["iwooos"]["hostToolEvidenceChain"]["steps"].keys()),
|
|
key,
|
|
)
|
|
for key in ["kali112", "dev111", "dev168", "monitoringTools", "automationTools", "sourceControl"]:
|
|
assert_contains(
|
|
"web_messages.zh-TW.iwooos.hostToolEvidenceChain.items",
|
|
list(web_messages_zh["iwooos"]["hostToolEvidenceChain"]["items"].keys()),
|
|
key,
|
|
)
|
|
assert_contains(
|
|
"web_messages.en.iwooos.hostToolEvidenceChain.items",
|
|
list(web_messages_en["iwooos"]["hostToolEvidenceChain"]["items"].keys()),
|
|
key,
|
|
)
|
|
assert_text_contains(
|
|
"iwooos_page.vibework_security_onboarding_testid",
|
|
iwooos_projection_page,
|
|
'data-testid="iwooos-vibework-security-onboarding-board"',
|
|
)
|
|
assert_text_contains(
|
|
"iwooos_page.vibework_security_onboarding_boundary_testid",
|
|
iwooos_projection_page,
|
|
'data-testid="iwooos-vibework-security-onboarding-boundaries"',
|
|
)
|
|
assert_text_contains(
|
|
"iwooos_page.vibework_security_onboarding_component",
|
|
iwooos_projection_page,
|
|
"IwoooSMissionProductSecurityOnboardingBoard",
|
|
)
|
|
for text in [
|
|
"vibework_security_onboarding_item_count=6",
|
|
"vibework_security_onboarding_read_only=true",
|
|
"vibework_owner_evidence_received=false",
|
|
"vibework_data_classification_received=false",
|
|
"vibework_source_control_evidence_received=false",
|
|
"vibework_deployment_boundary_received=false",
|
|
"vibework_runtime_gate_open=false",
|
|
"runtime_execution_authorized=false",
|
|
"active_runtime_gate_count=0",
|
|
"action_buttons_allowed=false",
|
|
"not_authorization=true",
|
|
"repo_creation_authorized=false",
|
|
"refs_sync_authorized=false",
|
|
"workflow_modification_authorized=false",
|
|
"production_deploy_authorized=false",
|
|
]:
|
|
assert_text_contains(
|
|
"iwooos_page.vibework_security_onboarding_boundary",
|
|
iwooos_projection_page,
|
|
text,
|
|
)
|
|
assert_contains(
|
|
"web_messages.zh-TW.iwooos.vibeWorkSecurityOnboarding",
|
|
list(web_messages_zh["iwooos"].keys()),
|
|
"vibeWorkSecurityOnboarding",
|
|
)
|
|
assert_contains(
|
|
"web_messages.en.iwooos.vibeWorkSecurityOnboarding",
|
|
list(web_messages_en["iwooos"].keys()),
|
|
"vibeWorkSecurityOnboarding",
|
|
)
|
|
for key in [
|
|
"eyebrow",
|
|
"title",
|
|
"subtitle",
|
|
"summary",
|
|
"items",
|
|
"checkLabel",
|
|
"stateLabel",
|
|
"missingLabel",
|
|
"nextLabel",
|
|
"boundaryTitle",
|
|
"boundaryIntro",
|
|
]:
|
|
assert_contains(
|
|
"web_messages.zh-TW.iwooos.vibeWorkSecurityOnboarding.keys",
|
|
list(web_messages_zh["iwooos"]["vibeWorkSecurityOnboarding"].keys()),
|
|
key,
|
|
)
|
|
assert_contains(
|
|
"web_messages.en.iwooos.vibeWorkSecurityOnboarding.keys",
|
|
list(web_messages_en["iwooos"]["vibeWorkSecurityOnboarding"].keys()),
|
|
key,
|
|
)
|
|
for key in ["readOnly", "missingEvidence", "runtime"]:
|
|
assert_contains(
|
|
"web_messages.zh-TW.iwooos.vibeWorkSecurityOnboarding.summary",
|
|
list(web_messages_zh["iwooos"]["vibeWorkSecurityOnboarding"]["summary"].keys()),
|
|
key,
|
|
)
|
|
assert_contains(
|
|
"web_messages.en.iwooos.vibeWorkSecurityOnboarding.summary",
|
|
list(web_messages_en["iwooos"]["vibeWorkSecurityOnboarding"]["summary"].keys()),
|
|
key,
|
|
)
|
|
for key in ["owner", "dataClass", "sourceRepo", "deployBoundary", "evidencePointer", "runtimeGate"]:
|
|
assert_contains(
|
|
"web_messages.zh-TW.iwooos.vibeWorkSecurityOnboarding.items",
|
|
list(web_messages_zh["iwooos"]["vibeWorkSecurityOnboarding"]["items"].keys()),
|
|
key,
|
|
)
|
|
assert_contains(
|
|
"web_messages.en.iwooos.vibeWorkSecurityOnboarding.items",
|
|
list(web_messages_en["iwooos"]["vibeWorkSecurityOnboarding"]["items"].keys()),
|
|
key,
|
|
)
|
|
assert_text_contains(
|
|
"iwooos_page.agent_bounty_security_onboarding_testid",
|
|
iwooos_projection_page,
|
|
'data-testid="iwooos-agent-bounty-security-onboarding-board"',
|
|
)
|
|
assert_text_contains(
|
|
"iwooos_page.agent_bounty_security_onboarding_boundary_testid",
|
|
iwooos_projection_page,
|
|
'data-testid="iwooos-agent-bounty-security-onboarding-boundaries"',
|
|
)
|
|
assert_text_contains(
|
|
"iwooos_page.agent_bounty_security_onboarding_component",
|
|
iwooos_projection_page,
|
|
"IwoooSAgentBountySecurityOnboardingBoard",
|
|
)
|
|
for text in [
|
|
"agent_bounty_security_onboarding_item_count=7",
|
|
"agent_bounty_security_onboarding_read_only=true",
|
|
"agent_bounty_owner_evidence_received=false",
|
|
"agent_bounty_data_classification_received=false",
|
|
"agent_bounty_source_control_evidence_received=false",
|
|
"agent_bounty_deployment_boundary_received=false",
|
|
"agent_bounty_external_agent_boundary_received=false",
|
|
"agent_bounty_treasury_boundary_received=false",
|
|
"agent_bounty_auto_claim_submit_authorized=false",
|
|
"agent_bounty_bounty_payout_authorized=false",
|
|
"agent_bounty_runtime_gate_open=false",
|
|
"runtime_execution_authorized=false",
|
|
"active_runtime_gate_count=0",
|
|
"action_buttons_allowed=false",
|
|
"not_authorization=true",
|
|
"repo_creation_authorized=false",
|
|
"refs_sync_authorized=false",
|
|
"workflow_modification_authorized=false",
|
|
"production_deploy_authorized=false",
|
|
]:
|
|
assert_text_contains(
|
|
"iwooos_page.agent_bounty_security_onboarding_boundary",
|
|
iwooos_projection_page,
|
|
text,
|
|
)
|
|
assert_contains(
|
|
"web_messages.zh-TW.iwooos.agentBountySecurityOnboarding",
|
|
list(web_messages_zh["iwooos"].keys()),
|
|
"agentBountySecurityOnboarding",
|
|
)
|
|
assert_contains(
|
|
"web_messages.en.iwooos.agentBountySecurityOnboarding",
|
|
list(web_messages_en["iwooos"].keys()),
|
|
"agentBountySecurityOnboarding",
|
|
)
|
|
for key in [
|
|
"eyebrow",
|
|
"title",
|
|
"subtitle",
|
|
"summary",
|
|
"items",
|
|
"checkLabel",
|
|
"stateLabel",
|
|
"missingLabel",
|
|
"nextLabel",
|
|
"boundaryTitle",
|
|
"boundaryIntro",
|
|
]:
|
|
assert_contains(
|
|
"web_messages.zh-TW.iwooos.agentBountySecurityOnboarding.keys",
|
|
list(web_messages_zh["iwooos"]["agentBountySecurityOnboarding"].keys()),
|
|
key,
|
|
)
|
|
assert_contains(
|
|
"web_messages.en.iwooos.agentBountySecurityOnboarding.keys",
|
|
list(web_messages_en["iwooos"]["agentBountySecurityOnboarding"].keys()),
|
|
key,
|
|
)
|
|
for key in ["readOnly", "missingEvidence", "runtime"]:
|
|
assert_contains(
|
|
"web_messages.zh-TW.iwooos.agentBountySecurityOnboarding.summary",
|
|
list(web_messages_zh["iwooos"]["agentBountySecurityOnboarding"]["summary"].keys()),
|
|
key,
|
|
)
|
|
assert_contains(
|
|
"web_messages.en.iwooos.agentBountySecurityOnboarding.summary",
|
|
list(web_messages_en["iwooos"]["agentBountySecurityOnboarding"]["summary"].keys()),
|
|
key,
|
|
)
|
|
for key in ["owner", "dataClass", "sourceRepo", "deployBoundary", "externalAgent", "treasuryBoundary", "runtimeGate"]:
|
|
assert_contains(
|
|
"web_messages.zh-TW.iwooos.agentBountySecurityOnboarding.items",
|
|
list(web_messages_zh["iwooos"]["agentBountySecurityOnboarding"]["items"].keys()),
|
|
key,
|
|
)
|
|
assert_contains(
|
|
"web_messages.en.iwooos.agentBountySecurityOnboarding.items",
|
|
list(web_messages_en["iwooos"]["agentBountySecurityOnboarding"]["items"].keys()),
|
|
key,
|
|
)
|
|
assert_text_contains(
|
|
"iwooos_page.rollout_risk_read_only_testid",
|
|
iwooos_projection_page,
|
|
'data-testid="iwooos-rollout-risk-read-only-board"',
|
|
)
|
|
assert_text_contains(
|
|
"iwooos_page.rollout_risk_read_only_boundary_testid",
|
|
iwooos_projection_page,
|
|
'data-testid="iwooos-rollout-risk-read-only-boundaries"',
|
|
)
|
|
assert_text_contains(
|
|
"iwooos_page.rollout_risk_read_only_component",
|
|
iwooos_projection_page,
|
|
"IwoooSRolloutRiskReadOnlyBoard",
|
|
)
|
|
for text in [
|
|
"rollout_risk_read_only_card_count=4",
|
|
"rollout_risk_source_deploy_marker=16756d24",
|
|
"rollout_risk_awoooi_rollout_risk=1",
|
|
"rollout_risk_argocd_health=Degraded",
|
|
"rollout_risk_resource_sync=OutOfSync",
|
|
"rollout_risk_api_health_passed=true",
|
|
"rollout_risk_playwright_smoke_passed=true",
|
|
"rollout_risk_requires_read_only_triage=true",
|
|
"rollout_risk_runtime_gate_count=0",
|
|
"runtime_execution_authorized=false",
|
|
"active_runtime_gate_count=0",
|
|
"action_buttons_allowed=false",
|
|
"not_authorization=true",
|
|
"argocd_sync_authorized=false",
|
|
"kubectl_action_authorized=false",
|
|
"host_restart_authorized=false",
|
|
]:
|
|
assert_text_contains(
|
|
"iwooos_page.rollout_risk_read_only_boundary",
|
|
iwooos_projection_page,
|
|
text,
|
|
)
|
|
assert_contains(
|
|
"web_messages.zh-TW.iwooos.rolloutRiskReadOnly",
|
|
list(web_messages_zh["iwooos"].keys()),
|
|
"rolloutRiskReadOnly",
|
|
)
|
|
assert_contains(
|
|
"web_messages.en.iwooos.rolloutRiskReadOnly",
|
|
list(web_messages_en["iwooos"].keys()),
|
|
"rolloutRiskReadOnly",
|
|
)
|
|
for key in [
|
|
"eyebrow",
|
|
"title",
|
|
"subtitle",
|
|
"signalLabel",
|
|
"stateLabel",
|
|
"boundaryTitle",
|
|
"boundaryIntro",
|
|
"summary",
|
|
"items",
|
|
]:
|
|
assert_contains(
|
|
"web_messages.zh-TW.iwooos.rolloutRiskReadOnly.keys",
|
|
list(web_messages_zh["iwooos"]["rolloutRiskReadOnly"].keys()),
|
|
key,
|
|
)
|
|
assert_contains(
|
|
"web_messages.en.iwooos.rolloutRiskReadOnly.keys",
|
|
list(web_messages_en["iwooos"]["rolloutRiskReadOnly"].keys()),
|
|
key,
|
|
)
|
|
for key in ["sourceDeployMarker", "rolloutRisk", "runtimeGate"]:
|
|
assert_contains(
|
|
"web_messages.zh-TW.iwooos.rolloutRiskReadOnly.summary",
|
|
list(web_messages_zh["iwooos"]["rolloutRiskReadOnly"]["summary"].keys()),
|
|
key,
|
|
)
|
|
assert_contains(
|
|
"web_messages.en.iwooos.rolloutRiskReadOnly.summary",
|
|
list(web_messages_en["iwooos"]["rolloutRiskReadOnly"]["summary"].keys()),
|
|
key,
|
|
)
|
|
for key in ["argocdHealth", "resourceSync", "smokePassed", "riskBoundary"]:
|
|
assert_contains(
|
|
"web_messages.zh-TW.iwooos.rolloutRiskReadOnly.items",
|
|
list(web_messages_zh["iwooos"]["rolloutRiskReadOnly"]["items"].keys()),
|
|
key,
|
|
)
|
|
assert_contains(
|
|
"web_messages.en.iwooos.rolloutRiskReadOnly.items",
|
|
list(web_messages_en["iwooos"]["rolloutRiskReadOnly"]["items"].keys()),
|
|
key,
|
|
)
|
|
assert_text_contains(
|
|
"iwooos_page.high_value_config_control_coverage_testid",
|
|
iwooos_projection_page,
|
|
'data-testid="iwooos-high-value-config-control-coverage-board"',
|
|
)
|
|
assert_text_contains(
|
|
"iwooos_page.high_value_config_control_coverage_boundary_testid",
|
|
iwooos_projection_page,
|
|
'data-testid="iwooos-high-value-config-control-coverage-boundaries"',
|
|
)
|
|
assert_text_contains(
|
|
"iwooos_page.high_value_config_control_coverage_component",
|
|
iwooos_projection_page,
|
|
"IwoooSHighValueConfigControlCoverageBoard",
|
|
)
|
|
assert_text_contains(
|
|
"iwooos_page.high_value_config_control_coverage_docker_systemd_percent",
|
|
iwooos_projection_page,
|
|
"{ key: 'dockerSystemd', rank: 'P1-1', value: '54%'",
|
|
)
|
|
assert_text_contains(
|
|
"iwooos_page.high_value_config_control_coverage_ssh_network_percent",
|
|
iwooos_projection_page,
|
|
"{ key: 'sshNetwork', rank: 'P1-2', value: '60%'",
|
|
)
|
|
assert_text_contains(
|
|
"iwooos_page.high_value_config_control_coverage_backup_restore_percent",
|
|
iwooos_projection_page,
|
|
"{ key: 'backupRestore', rank: 'P1-3', value: '62%'",
|
|
)
|
|
assert_text_contains(
|
|
"iwooos_page.high_value_config_control_coverage_monitoring_percent",
|
|
iwooos_projection_page,
|
|
"{ key: 'monitoring', rank: 'P1-4', value: '62%'",
|
|
)
|
|
assert_text_before(
|
|
"iwooos_page.high_value_config_control_coverage_before_owner_packet",
|
|
iwooos_projection_page,
|
|
"<IwoooSHighValueConfigControlCoverageBoard />",
|
|
"<IwoooSHighValueConfigOwnerPacketBoard />",
|
|
)
|
|
for text in [
|
|
"high_value_config_control_coverage_frontstage_summary_count=4",
|
|
"high_value_config_control_coverage_frontstage_item_count=4",
|
|
"high_value_config_control_coverage_category_count=14",
|
|
"high_value_config_control_coverage_c0_category_count=8",
|
|
"high_value_config_control_coverage_c1_category_count=4",
|
|
"high_value_config_control_coverage_average_percent=68",
|
|
"high_value_config_control_coverage_needs_live_evidence_count=9",
|
|
"high_value_config_control_coverage_owner_response_required_count=14",
|
|
"high_value_config_control_coverage_owner_response_received_count=0",
|
|
"high_value_config_control_coverage_owner_response_accepted_count=0",
|
|
"high_value_config_control_coverage_runtime_gate_count=0",
|
|
"high_value_config_control_coverage_action_button_count=0",
|
|
"nginx_public_gateway_coverage_percent=88",
|
|
"k8s_production_gitops_coverage_percent=64",
|
|
"secret_metadata_coverage_percent=68",
|
|
"gitea_workflow_runner_source_control_coverage_percent=72",
|
|
"public_admin_api_runtime_config_coverage_percent=64",
|
|
"public_runtime_config_change_evidence_acceptance_candidate_count=6",
|
|
"public_runtime_config_change_evidence_acceptance_c0_candidate_count=5",
|
|
"public_runtime_config_change_evidence_acceptance_c1_candidate_count=1",
|
|
"public_runtime_config_change_evidence_acceptance_write_capable_candidate_count=6",
|
|
"public_runtime_config_change_evidence_acceptance_source_ref_count=20",
|
|
"public_runtime_config_change_evidence_acceptance_required_evidence_field_count=21",
|
|
"public_runtime_config_change_evidence_acceptance_reviewer_check_count=21",
|
|
"public_runtime_config_change_evidence_acceptance_outcome_lane_count=8",
|
|
"public_runtime_config_change_evidence_acceptance_blocked_action_count=32",
|
|
"public_runtime_config_change_evidence_acceptance_received_count=0",
|
|
"public_runtime_config_change_evidence_acceptance_accepted_count=0",
|
|
"public_runtime_config_change_evidence_acceptance_route_scope_accepted_count=0",
|
|
"public_runtime_config_change_evidence_acceptance_admin_auth_boundary_accepted_count=0",
|
|
"public_runtime_config_change_evidence_acceptance_api_contract_readback_accepted_count=0",
|
|
"public_runtime_config_change_evidence_acceptance_cors_origin_diff_accepted_count=0",
|
|
"public_runtime_config_change_evidence_acceptance_frontend_env_diff_accepted_count=0",
|
|
"public_runtime_config_change_evidence_acceptance_i18n_redaction_review_accepted_count=0",
|
|
"public_runtime_config_change_evidence_acceptance_desktop_mobile_smoke_accepted_count=0",
|
|
"public_runtime_config_change_evidence_acceptance_sensitive_string_scan_accepted_count=0",
|
|
"public_runtime_config_change_evidence_acceptance_postcheck_evidence_accepted_count=0",
|
|
"public_runtime_config_change_evidence_acceptance_runtime_approval_package_ready_count=0",
|
|
"public_runtime_config_change_evidence_acceptance_runtime_gate_count=0",
|
|
"cd_runner_secret_injection_change_evidence_acceptance_candidate_count=5",
|
|
"cd_runner_secret_injection_change_evidence_acceptance_c0_candidate_count=4",
|
|
"cd_runner_secret_injection_change_evidence_acceptance_c1_candidate_count=1",
|
|
"cd_runner_secret_injection_change_evidence_acceptance_write_capable_candidate_count=5",
|
|
"cd_runner_secret_injection_change_evidence_acceptance_local_workflow_file_count=33",
|
|
"cd_runner_secret_injection_change_evidence_acceptance_gitea_workflow_file_count=12",
|
|
"cd_runner_secret_injection_change_evidence_acceptance_github_workflow_file_count=21",
|
|
"cd_runner_secret_injection_change_evidence_acceptance_local_referenced_secret_name_count=42",
|
|
"cd_runner_secret_injection_change_evidence_acceptance_runner_label_count=5",
|
|
"cd_runner_secret_injection_change_evidence_acceptance_required_evidence_field_count=19",
|
|
"cd_runner_secret_injection_change_evidence_acceptance_reviewer_check_count=19",
|
|
"cd_runner_secret_injection_change_evidence_acceptance_outcome_lane_count=8",
|
|
"cd_runner_secret_injection_change_evidence_acceptance_blocked_action_count=32",
|
|
"cd_runner_secret_injection_change_evidence_acceptance_received_count=0",
|
|
"cd_runner_secret_injection_change_evidence_acceptance_accepted_count=0",
|
|
"cd_runner_secret_injection_change_evidence_acceptance_workflow_diff_accepted_count=0",
|
|
"cd_runner_secret_injection_change_evidence_acceptance_runner_attestation_accepted_count=0",
|
|
"cd_runner_secret_injection_change_evidence_acceptance_secret_name_parity_accepted_count=0",
|
|
"cd_runner_secret_injection_change_evidence_acceptance_secret_injection_route_accepted_count=0",
|
|
"cd_runner_secret_injection_change_evidence_acceptance_deploy_marker_readback_accepted_count=0",
|
|
"cd_runner_secret_injection_change_evidence_acceptance_guard_result_accepted_count=0",
|
|
"cd_runner_secret_injection_change_evidence_acceptance_postcheck_evidence_accepted_count=0",
|
|
"cd_runner_secret_injection_change_evidence_acceptance_runtime_approval_package_ready_count=0",
|
|
"cd_runner_secret_injection_change_evidence_acceptance_runtime_gate_count=0",
|
|
"k8s_argocd_change_evidence_acceptance_candidate_count=4",
|
|
"k8s_argocd_change_evidence_acceptance_c0_candidate_count=3",
|
|
"k8s_argocd_change_evidence_acceptance_write_capable_candidate_count=4",
|
|
"k8s_argocd_change_evidence_acceptance_required_evidence_field_count=18",
|
|
"k8s_argocd_change_evidence_acceptance_reviewer_check_count=18",
|
|
"k8s_argocd_change_evidence_acceptance_outcome_lane_count=8",
|
|
"k8s_argocd_change_evidence_acceptance_blocked_action_count=28",
|
|
"k8s_argocd_change_evidence_acceptance_received_count=0",
|
|
"k8s_argocd_change_evidence_acceptance_accepted_count=0",
|
|
"k8s_argocd_change_evidence_acceptance_runtime_approval_package_ready_count=0",
|
|
"k8s_argocd_change_evidence_acceptance_runtime_gate_count=0",
|
|
"public_gateway_rendered_diff_acceptance_candidate_count=3",
|
|
"public_gateway_rendered_diff_acceptance_reviewer_check_count=15",
|
|
"public_gateway_rendered_diff_acceptance_runtime_gate_count=0",
|
|
"public_gateway_preflight_inventory_source_config_count=3",
|
|
"public_gateway_preflight_inventory_route_impact_count=14",
|
|
"public_gateway_preflight_inventory_preflight_gate_count=12",
|
|
"public_gateway_preflight_inventory_runtime_gate_count=0",
|
|
"host_service_config_inventory_surface_count=9",
|
|
"host_service_config_inventory_write_capable_surface_count=3",
|
|
"host_service_config_inventory_runtime_gate_count=0",
|
|
"host_service_owner_response_acceptance_candidate_count=9",
|
|
"host_service_owner_response_acceptance_write_capable_candidate_count=3",
|
|
"host_service_owner_response_acceptance_reviewer_check_count=14",
|
|
"host_service_owner_response_acceptance_runtime_gate_count=0",
|
|
"ssh_network_access_inventory_surface_count=16",
|
|
"ssh_network_access_inventory_write_capable_surface_count=6",
|
|
"ssh_network_access_inventory_runtime_gate_count=0",
|
|
"ssh_network_owner_response_acceptance_candidate_count=16",
|
|
"ssh_network_owner_response_acceptance_write_capable_candidate_count=6",
|
|
"ssh_network_owner_response_acceptance_reviewer_check_count=15",
|
|
"ssh_network_owner_response_acceptance_runtime_gate_count=0",
|
|
"ssh_network_owner_response_acceptance_firewall_owner_accepted_count=0",
|
|
"ssh_network_owner_response_acceptance_port_policy_accepted_count=0",
|
|
"ssh_network_owner_response_acceptance_wireguard_cutover_accepted_count=0",
|
|
"port_firewall_change_evidence_acceptance_candidate_count=14",
|
|
"port_firewall_change_evidence_acceptance_write_capable_candidate_count=6",
|
|
"port_firewall_change_evidence_acceptance_policy_or_exposure_candidate_count=5",
|
|
"port_firewall_change_evidence_acceptance_required_evidence_field_count=16",
|
|
"port_firewall_change_evidence_acceptance_reviewer_check_count=16",
|
|
"port_firewall_change_evidence_acceptance_outcome_lane_count=8",
|
|
"port_firewall_change_evidence_acceptance_blocked_action_count=24",
|
|
"port_firewall_change_evidence_acceptance_received_count=0",
|
|
"port_firewall_change_evidence_acceptance_accepted_count=0",
|
|
"port_firewall_change_evidence_acceptance_actor_identified_count=0",
|
|
"port_firewall_change_evidence_acceptance_cross_project_sync_accepted_count=0",
|
|
"port_firewall_change_evidence_acceptance_postcheck_evidence_accepted_count=0",
|
|
"port_firewall_change_evidence_acceptance_runtime_gate_count=0",
|
|
"backup_restore_escrow_inventory_surface_count=38",
|
|
"backup_restore_escrow_inventory_write_capable_surface_count=27",
|
|
"backup_restore_escrow_inventory_runtime_gate_count=0",
|
|
"backup_restore_escrow_inventory_restore_drill_accepted_count=0",
|
|
"backup_restore_escrow_inventory_offsite_sync_accepted_count=0",
|
|
"backup_restore_escrow_inventory_credential_escrow_accepted_count=0",
|
|
"backup_restore_escrow_inventory_retention_change_accepted_count=0",
|
|
"monitoring_alerting_observability_inventory_surface_count=60",
|
|
"monitoring_alerting_observability_inventory_alert_rule_surface_count=13",
|
|
"monitoring_alerting_observability_inventory_deploy_or_reload_surface_count=6",
|
|
"monitoring_alerting_observability_inventory_write_capable_surface_count=11",
|
|
"monitoring_alerting_observability_inventory_runtime_gate_count=0",
|
|
"monitoring_alerting_observability_inventory_reload_owner_accepted_count=0",
|
|
"monitoring_alerting_observability_inventory_receiver_owner_accepted_count=0",
|
|
"monitoring_alerting_observability_inventory_route_smoke_accepted_count=0",
|
|
"docker_compose_action_authorized=false",
|
|
"systemctl_action_authorized=false",
|
|
"repair_bot_execution_authorized=false",
|
|
"ansible_apply_authorized=false",
|
|
"ssh_read_authorized=false",
|
|
"ssh_write_authorized=false",
|
|
"sudo_action_authorized=false",
|
|
"firewall_change_authorized=false",
|
|
"port_change_authorized=false",
|
|
"port_close_authorized=false",
|
|
"port_open_authorized=false",
|
|
"network_policy_apply_authorized=false",
|
|
"nodeport_change_authorized=false",
|
|
"wireguard_change_authorized=false",
|
|
"known_hosts_patch_authorized=false",
|
|
"host_keyscan_authorized=false",
|
|
"runtime_execution_authorized=false",
|
|
"host_write_authorized=false",
|
|
"host_live_conf_read_authorized=false",
|
|
"nginx_test_authorized=false",
|
|
"public_gateway_reload_authorized=false",
|
|
"public_route_change_authorized=false",
|
|
"admin_route_change_authorized=false",
|
|
"websocket_route_change_authorized=false",
|
|
"acme_challenge_change_authorized=false",
|
|
"route_smoke_authorized=false",
|
|
"rollback_executed=false",
|
|
"nginx_reload_authorized=false",
|
|
"dns_tls_change_authorized=false",
|
|
"certbot_renew_authorized=false",
|
|
"argocd_api_read_authorized=false",
|
|
"helm_upgrade_authorized=false",
|
|
"rbac_change_authorized=false",
|
|
"backup_run_authorized=false",
|
|
"restore_run_authorized=false",
|
|
"restore_drill_authorized=false",
|
|
"offsite_sync_authorized=false",
|
|
"offsite_remote_delete_authorized=false",
|
|
"credential_escrow_marker_write_authorized=false",
|
|
"retention_change_authorized=false",
|
|
"restic_prune_authorized=false",
|
|
"rclone_config_authorized=false",
|
|
"velero_restore_authorized=false",
|
|
"prometheus_reload_authorized=false",
|
|
"alertmanager_reload_authorized=false",
|
|
"grafana_dashboard_apply_authorized=false",
|
|
"signoz_rule_apply_authorized=false",
|
|
"sentry_deploy_authorized=false",
|
|
"langfuse_config_change_authorized=false",
|
|
"otel_collector_reload_authorized=false",
|
|
"receiver_route_change_authorized=false",
|
|
"silence_policy_change_authorized=false",
|
|
"telegram_send_authorized=false",
|
|
"notification_route_change_authorized=false",
|
|
"webhook_receiver_change_authorized=false",
|
|
"remote_write_change_authorized=false",
|
|
"exporter_deploy_authorized=false",
|
|
"live_alert_fire_authorized=false",
|
|
"alert_chain_smoke_authorized=false",
|
|
"workflow_modification_authorized=false",
|
|
"webhook_modification_authorized=false",
|
|
"runner_change_authorized=false",
|
|
"deploy_key_change_authorized=false",
|
|
"branch_protection_change_authorized=false",
|
|
"codeowners_change_authorized=false",
|
|
"repo_secret_change_authorized=false",
|
|
"secret_hash_collection_allowed=false",
|
|
"partial_token_collection_allowed=false",
|
|
"secret_rotation_authorized=false",
|
|
"secret_store_read_authorized=false",
|
|
"secret_injection_change_authorized=false",
|
|
"runtime_config_change_authorized=false",
|
|
"api_route_change_authorized=false",
|
|
"cors_change_authorized=false",
|
|
"frontend_env_change_authorized=false",
|
|
"middleware_auth_change_authorized=false",
|
|
"callback_url_change_authorized=false",
|
|
"webhook_secret_change_authorized=false",
|
|
"security_header_change_authorized=false",
|
|
"cookie_policy_change_authorized=false",
|
|
"csrf_disable_authorized=false",
|
|
"rate_limit_disable_authorized=false",
|
|
"api_contract_change_authorized=false",
|
|
"i18n_public_text_internal_identity_allowed=false",
|
|
"internal_ip_exposure_allowed=false",
|
|
"repo_namespace_exposure_allowed=false",
|
|
"owner_namespace_exposure_allowed=false",
|
|
"internal_status_code_exposure_allowed=false",
|
|
"internal_transcript_exposure_allowed=false",
|
|
"raw_payload_storage_allowed=false",
|
|
"desktop_mobile_smoke_authorized=false",
|
|
"database_migration_authorized=false",
|
|
"github_hosted_runner_enable_authorized=false",
|
|
"gitea_action_dispatch_authorized=false",
|
|
"cd_pipeline_run_authorized=false",
|
|
"deploy_marker_write_authorized=false",
|
|
"k8s_secret_injection_authorized=false",
|
|
"production_deploy_authorized=false",
|
|
"refs_sync_authorized=false",
|
|
"force_push_authorized=false",
|
|
"github_primary_switch_authorized=false",
|
|
"disable_gitea_authorized=false",
|
|
"active_scan_authorized=false",
|
|
"agent_bounty_runtime_authorized=false",
|
|
]:
|
|
assert_text_contains(
|
|
"iwooos_page.high_value_config_control_coverage_boundary",
|
|
iwooos_projection_page,
|
|
text,
|
|
)
|
|
assert_text_contains(
|
|
"iwooos_page.critical_config_priority_testid",
|
|
iwooos_projection_page,
|
|
'data-testid="iwooos-critical-config-priority-board"',
|
|
)
|
|
assert_text_contains(
|
|
"iwooos_page.critical_config_priority_nginx_percent",
|
|
iwooos_projection_page,
|
|
"{ key: 'nginxGateway', rank: 'P0-1', state: '88% / live 0'",
|
|
)
|
|
assert_text_contains(
|
|
"iwooos_page.critical_config_priority_dns_percent",
|
|
iwooos_projection_page,
|
|
"{ key: 'dnsTls', rank: 'P0-2', state: '78% / probe 0'",
|
|
)
|
|
assert_text_contains(
|
|
"iwooos_page.critical_config_priority_k8s_percent",
|
|
iwooos_projection_page,
|
|
"{ key: 'k8sArgocd', rank: 'P0-3', state: '64% / sync 0'",
|
|
)
|
|
assert_text_contains(
|
|
"iwooos_page.critical_config_priority_workflow_secret_percent",
|
|
iwooos_projection_page,
|
|
"{ key: 'workflowSecret', rank: 'P0-4', state: '68% / 72%'",
|
|
)
|
|
assert_text_contains(
|
|
"iwooos_page.critical_config_priority_public_runtime_percent",
|
|
iwooos_projection_page,
|
|
"{ key: 'publicRuntime', rank: 'P0-5', state: '64% / route 0'",
|
|
)
|
|
for text in [
|
|
"critical_config_priority_frontstage_summary_count=4",
|
|
"critical_config_priority_item_count=6",
|
|
"critical_config_priority_p0_category_count=6",
|
|
"critical_config_priority_owner_response_received_count=0",
|
|
"critical_config_priority_owner_response_accepted_count=0",
|
|
"critical_config_priority_live_evidence_received_count=0",
|
|
"critical_config_priority_runtime_gate_count=0",
|
|
"critical_config_priority_action_button_count=0",
|
|
"nginx_public_gateway_owner_response_received=false",
|
|
"nginx_public_gateway_live_conf_evidence_received=false",
|
|
"nginx_public_gateway_rendered_diff_accepted=false",
|
|
"nginx_public_gateway_rendered_diff_acceptance_candidate_count=3",
|
|
"nginx_public_gateway_nginx_test_evidence_count=0",
|
|
"secret_metadata_coverage_percent=68",
|
|
"gitea_workflow_runner_source_control_coverage_percent=72",
|
|
"public_admin_api_runtime_config_coverage_percent=64",
|
|
"public_runtime_config_change_evidence_acceptance_candidate_count=6",
|
|
"public_runtime_config_change_evidence_acceptance_c0_candidate_count=5",
|
|
"public_runtime_config_change_evidence_acceptance_write_capable_candidate_count=6",
|
|
"public_runtime_config_change_evidence_acceptance_required_evidence_field_count=21",
|
|
"public_runtime_config_change_evidence_acceptance_reviewer_check_count=21",
|
|
"public_runtime_config_change_evidence_acceptance_outcome_lane_count=8",
|
|
"public_runtime_config_change_evidence_acceptance_blocked_action_count=32",
|
|
"public_runtime_config_change_evidence_acceptance_received_count=0",
|
|
"public_runtime_config_change_evidence_acceptance_accepted_count=0",
|
|
"public_runtime_config_change_evidence_acceptance_route_scope_accepted_count=0",
|
|
"public_runtime_config_change_evidence_acceptance_admin_auth_boundary_accepted_count=0",
|
|
"public_runtime_config_change_evidence_acceptance_api_contract_readback_accepted_count=0",
|
|
"public_runtime_config_change_evidence_acceptance_cors_origin_diff_accepted_count=0",
|
|
"public_runtime_config_change_evidence_acceptance_frontend_env_diff_accepted_count=0",
|
|
"public_runtime_config_change_evidence_acceptance_i18n_redaction_review_accepted_count=0",
|
|
"public_runtime_config_change_evidence_acceptance_desktop_mobile_smoke_accepted_count=0",
|
|
"public_runtime_config_change_evidence_acceptance_sensitive_string_scan_accepted_count=0",
|
|
"public_runtime_config_change_evidence_acceptance_runtime_approval_package_ready_count=0",
|
|
"public_runtime_config_change_evidence_acceptance_runtime_gate_count=0",
|
|
"cd_runner_secret_injection_change_evidence_acceptance_candidate_count=5",
|
|
"cd_runner_secret_injection_change_evidence_acceptance_c0_candidate_count=4",
|
|
"cd_runner_secret_injection_change_evidence_acceptance_write_capable_candidate_count=5",
|
|
"cd_runner_secret_injection_change_evidence_acceptance_required_evidence_field_count=19",
|
|
"cd_runner_secret_injection_change_evidence_acceptance_reviewer_check_count=19",
|
|
"cd_runner_secret_injection_change_evidence_acceptance_outcome_lane_count=8",
|
|
"cd_runner_secret_injection_change_evidence_acceptance_blocked_action_count=32",
|
|
"cd_runner_secret_injection_change_evidence_acceptance_received_count=0",
|
|
"cd_runner_secret_injection_change_evidence_acceptance_accepted_count=0",
|
|
"cd_runner_secret_injection_change_evidence_acceptance_workflow_diff_accepted_count=0",
|
|
"cd_runner_secret_injection_change_evidence_acceptance_runner_attestation_accepted_count=0",
|
|
"cd_runner_secret_injection_change_evidence_acceptance_secret_name_parity_accepted_count=0",
|
|
"cd_runner_secret_injection_change_evidence_acceptance_secret_injection_route_accepted_count=0",
|
|
"cd_runner_secret_injection_change_evidence_acceptance_runtime_approval_package_ready_count=0",
|
|
"cd_runner_secret_injection_change_evidence_acceptance_runtime_gate_count=0",
|
|
"k8s_argocd_change_evidence_acceptance_candidate_count=4",
|
|
"k8s_argocd_change_evidence_acceptance_c0_candidate_count=3",
|
|
"k8s_argocd_change_evidence_acceptance_write_capable_candidate_count=4",
|
|
"k8s_argocd_change_evidence_acceptance_required_evidence_field_count=18",
|
|
"k8s_argocd_change_evidence_acceptance_reviewer_check_count=18",
|
|
"k8s_argocd_change_evidence_acceptance_outcome_lane_count=8",
|
|
"k8s_argocd_change_evidence_acceptance_blocked_action_count=28",
|
|
"k8s_argocd_change_evidence_acceptance_received_count=0",
|
|
"k8s_argocd_change_evidence_acceptance_accepted_count=0",
|
|
"k8s_argocd_change_evidence_acceptance_runtime_approval_package_ready_count=0",
|
|
"k8s_argocd_change_evidence_acceptance_runtime_gate_count=0",
|
|
"argocd_api_read_authorized=false",
|
|
"argocd_sync_authorized=false",
|
|
"kubectl_action_authorized=false",
|
|
"helm_upgrade_authorized=false",
|
|
"network_policy_apply_authorized=false",
|
|
"nodeport_change_authorized=false",
|
|
"rbac_change_authorized=false",
|
|
"runner_change_authorized=false",
|
|
"repo_secret_change_authorized=false",
|
|
"secret_injection_change_authorized=false",
|
|
"runtime_config_change_authorized=false",
|
|
"api_route_change_authorized=false",
|
|
"cors_change_authorized=false",
|
|
"frontend_env_change_authorized=false",
|
|
"middleware_auth_change_authorized=false",
|
|
"callback_url_change_authorized=false",
|
|
"webhook_secret_change_authorized=false",
|
|
"security_header_change_authorized=false",
|
|
"cookie_policy_change_authorized=false",
|
|
"csrf_disable_authorized=false",
|
|
"rate_limit_disable_authorized=false",
|
|
"api_contract_change_authorized=false",
|
|
"i18n_public_text_internal_identity_allowed=false",
|
|
"internal_ip_exposure_allowed=false",
|
|
"repo_namespace_exposure_allowed=false",
|
|
"owner_namespace_exposure_allowed=false",
|
|
"internal_status_code_exposure_allowed=false",
|
|
"internal_transcript_exposure_allowed=false",
|
|
"raw_payload_storage_allowed=false",
|
|
"gitea_action_dispatch_authorized=false",
|
|
"cd_pipeline_run_authorized=false",
|
|
"production_deploy_authorized=false",
|
|
"force_push_authorized=false",
|
|
"github_primary_switch_authorized=false",
|
|
"runtime_execution_authorized=false",
|
|
"active_runtime_gate_count=0",
|
|
"action_buttons_allowed=false",
|
|
"not_authorization=true",
|
|
]:
|
|
assert_text_contains(
|
|
"iwooos_page.critical_config_priority_boundary",
|
|
iwooos_projection_page,
|
|
text,
|
|
)
|
|
assert_contains(
|
|
"web_messages.zh-TW.iwooos.criticalConfigPriority",
|
|
list(web_messages_zh["iwooos"].keys()),
|
|
"criticalConfigPriority",
|
|
)
|
|
assert_contains(
|
|
"web_messages.en.iwooos.criticalConfigPriority",
|
|
list(web_messages_en["iwooos"].keys()),
|
|
"criticalConfigPriority",
|
|
)
|
|
assert_text_contains(
|
|
"web_messages.zh-TW.iwooos.criticalConfigPriority.items.k8sArgocd.body",
|
|
web_messages_zh["iwooos"]["criticalConfigPriority"]["items"]["k8sArgocd"]["body"],
|
|
"GitOps 變更證據驗收",
|
|
)
|
|
assert_text_contains(
|
|
"web_messages.en.iwooos.criticalConfigPriority.items.k8sArgocd.body",
|
|
web_messages_en["iwooos"]["criticalConfigPriority"]["items"]["k8sArgocd"]["body"],
|
|
"GitOps 變更證據驗收",
|
|
)
|
|
for locale, messages in [
|
|
("zh-TW", web_messages_zh),
|
|
("en", web_messages_en),
|
|
]:
|
|
public_runtime_body = messages["iwooos"]["criticalConfigPriority"]["items"]["publicRuntime"]["body"]
|
|
assert_text_contains(
|
|
f"web_messages.{locale}.iwooos.criticalConfigPriority.items.publicRuntime.body.acceptance",
|
|
public_runtime_body,
|
|
"變更證據驗收",
|
|
)
|
|
assert_text_contains(
|
|
f"web_messages.{locale}.iwooos.criticalConfigPriority.items.publicRuntime.body.redaction",
|
|
public_runtime_body,
|
|
"不得暴露 raw namespace",
|
|
)
|
|
assert_contains(
|
|
"web_messages.zh-TW.iwooos.highValueConfigControlCoverage",
|
|
list(web_messages_zh["iwooos"].keys()),
|
|
"highValueConfigControlCoverage",
|
|
)
|
|
assert_contains(
|
|
"web_messages.en.iwooos.highValueConfigControlCoverage",
|
|
list(web_messages_en["iwooos"].keys()),
|
|
"highValueConfigControlCoverage",
|
|
)
|
|
assert_text_contains(
|
|
"iwooos_page.public_gateway_preflight_testid",
|
|
iwooos_projection_page,
|
|
'data-testid="iwooos-public-gateway-preflight-board"',
|
|
)
|
|
assert_text_contains(
|
|
"iwooos_page.public_gateway_preflight_boundary_testid",
|
|
iwooos_projection_page,
|
|
'data-testid="iwooos-public-gateway-preflight-boundaries"',
|
|
)
|
|
assert_text_contains(
|
|
"iwooos_page.public_gateway_preflight_component",
|
|
iwooos_projection_page,
|
|
"IwoooSPublicGatewayPreflightBoard",
|
|
)
|
|
assert_text_before(
|
|
"iwooos_page.public_gateway_preflight_before_owner_packet",
|
|
iwooos_projection_page,
|
|
"<IwoooSPublicGatewayPreflightBoard />",
|
|
"<IwoooSHighValueConfigOwnerPacketBoard />",
|
|
)
|
|
for text in [
|
|
"public_gateway_preflight_frontstage_summary_count=4",
|
|
"public_gateway_preflight_frontstage_item_count=6",
|
|
"public_gateway_preflight_source_config_count=3",
|
|
"public_gateway_preflight_c0_source_config_count=2",
|
|
"public_gateway_preflight_managed_domain_count=14",
|
|
"public_gateway_preflight_route_impact_count=14",
|
|
"public_gateway_preflight_unique_upstream_count=14",
|
|
"public_gateway_preflight_tls_certificate_path_count=10",
|
|
"public_gateway_preflight_certificate_owner_confirmation_required_count=4",
|
|
"public_gateway_preflight_admin_route_domain_count=1",
|
|
"public_gateway_preflight_websocket_route_domain_count=6",
|
|
"public_gateway_preflight_acme_challenge_domain_count=7",
|
|
"public_gateway_preflight_gate_count=12",
|
|
"public_gateway_preflight_repo_only_ready_count=2",
|
|
"public_gateway_preflight_owner_acceptance_required_gate_count=10",
|
|
"public_gateway_preflight_gate_accepted_count=0",
|
|
"public_gateway_preflight_owner_response_received_count=0",
|
|
"public_gateway_preflight_owner_response_accepted_count=0",
|
|
"public_gateway_preflight_owner_provided_live_conf_received_count=0",
|
|
"public_gateway_preflight_rendered_diff_ready_count=0",
|
|
"public_gateway_preflight_nginx_test_evidence_count=0",
|
|
"public_gateway_preflight_route_smoke_evidence_count=0",
|
|
"public_gateway_preflight_maintenance_window_accepted_count=0",
|
|
"public_gateway_preflight_rollback_owner_accepted_count=0",
|
|
"public_gateway_preflight_runtime_gate_count=0",
|
|
"public_gateway_preflight_action_button_count=0",
|
|
"public_gateway_preflight_coverage_percent_before_preflight=78",
|
|
"public_gateway_preflight_coverage_percent_after_preflight=84",
|
|
"host_live_conf_read_authorized=false",
|
|
"nginx_test_authorized=false",
|
|
"nginx_reload_authorized=false",
|
|
"public_gateway_reload_authorized=false",
|
|
"public_route_change_authorized=false",
|
|
"admin_route_change_authorized=false",
|
|
"websocket_route_change_authorized=false",
|
|
"acme_challenge_change_authorized=false",
|
|
"route_smoke_authorized=false",
|
|
"rollback_executed=false",
|
|
"secret_value_collection_allowed=false",
|
|
"action_buttons_allowed=false",
|
|
"not_authorization=true",
|
|
]:
|
|
assert_text_contains(
|
|
"iwooos_page.public_gateway_preflight_boundary",
|
|
iwooos_projection_page,
|
|
text,
|
|
)
|
|
assert_contains(
|
|
"web_messages.zh-TW.iwooos.publicGatewayPreflight",
|
|
list(web_messages_zh["iwooos"].keys()),
|
|
"publicGatewayPreflight",
|
|
)
|
|
assert_contains(
|
|
"web_messages.en.iwooos.publicGatewayPreflight",
|
|
list(web_messages_en["iwooos"].keys()),
|
|
"publicGatewayPreflight",
|
|
)
|
|
for key in [
|
|
"eyebrow",
|
|
"title",
|
|
"subtitle",
|
|
"stateLabel",
|
|
"boundaryTitle",
|
|
"boundaryIntro",
|
|
"summary",
|
|
"items",
|
|
]:
|
|
assert_contains(
|
|
"web_messages.zh-TW.iwooos.publicGatewayPreflight.keys",
|
|
list(web_messages_zh["iwooos"]["publicGatewayPreflight"].keys()),
|
|
key,
|
|
)
|
|
assert_contains(
|
|
"web_messages.en.iwooos.publicGatewayPreflight.keys",
|
|
list(web_messages_en["iwooos"]["publicGatewayPreflight"].keys()),
|
|
key,
|
|
)
|
|
for key in ["sourceConfigs", "routeImpacts", "preflightGates", "runtimeGate"]:
|
|
assert_contains(
|
|
"web_messages.zh-TW.iwooos.publicGatewayPreflight.summary",
|
|
list(web_messages_zh["iwooos"]["publicGatewayPreflight"]["summary"].keys()),
|
|
key,
|
|
)
|
|
assert_contains(
|
|
"web_messages.en.iwooos.publicGatewayPreflight.summary",
|
|
list(web_messages_en["iwooos"]["publicGatewayPreflight"]["summary"].keys()),
|
|
key,
|
|
)
|
|
for key in ["sourceHash", "affectedRoutes", "ownerLiveDiff", "nginxTest", "routeSmoke", "reloadBoundary"]:
|
|
assert_contains(
|
|
"web_messages.zh-TW.iwooos.publicGatewayPreflight.items",
|
|
list(web_messages_zh["iwooos"]["publicGatewayPreflight"]["items"].keys()),
|
|
key,
|
|
)
|
|
assert_contains(
|
|
"web_messages.en.iwooos.publicGatewayPreflight.items",
|
|
list(web_messages_en["iwooos"]["publicGatewayPreflight"]["items"].keys()),
|
|
key,
|
|
)
|
|
for key in ["categories", "c0", "coverage", "runtimeGate"]:
|
|
assert_contains(
|
|
"web_messages.zh-TW.iwooos.highValueConfigControlCoverage.summary",
|
|
list(web_messages_zh["iwooos"]["highValueConfigControlCoverage"]["summary"].keys()),
|
|
key,
|
|
)
|
|
assert_contains(
|
|
"web_messages.en.iwooos.highValueConfigControlCoverage.summary",
|
|
list(web_messages_en["iwooos"]["highValueConfigControlCoverage"]["summary"].keys()),
|
|
key,
|
|
)
|
|
for key in ["dockerSystemd", "sshNetwork", "backupRestore", "monitoring"]:
|
|
assert_contains(
|
|
"web_messages.zh-TW.iwooos.highValueConfigControlCoverage.items",
|
|
list(web_messages_zh["iwooos"]["highValueConfigControlCoverage"]["items"].keys()),
|
|
key,
|
|
)
|
|
assert_contains(
|
|
"web_messages.en.iwooos.highValueConfigControlCoverage.items",
|
|
list(web_messages_en["iwooos"]["highValueConfigControlCoverage"]["items"].keys()),
|
|
key,
|
|
)
|
|
assert_text_contains(
|
|
"web_messages.zh-TW.iwooos.highValueConfigControlCoverage.items.sshNetwork.body",
|
|
web_messages_zh["iwooos"]["highValueConfigControlCoverage"]["items"]["sshNetwork"]["body"],
|
|
"16 個 SSH / network access surface",
|
|
)
|
|
assert_text_contains(
|
|
"web_messages.en.iwooos.highValueConfigControlCoverage.items.sshNetwork.body",
|
|
web_messages_en["iwooos"]["highValueConfigControlCoverage"]["items"]["sshNetwork"]["body"],
|
|
"16 個 SSH / network access surface",
|
|
)
|
|
assert_text_contains(
|
|
"web_messages.zh-TW.iwooos.highValueConfigControlCoverage.items.backupRestore.body",
|
|
web_messages_zh["iwooos"]["highValueConfigControlCoverage"]["items"]["backupRestore"]["body"],
|
|
"38 個 backup / restore / escrow / retention surface",
|
|
)
|
|
assert_text_contains(
|
|
"web_messages.en.iwooos.highValueConfigControlCoverage.items.backupRestore.body",
|
|
web_messages_en["iwooos"]["highValueConfigControlCoverage"]["items"]["backupRestore"]["body"],
|
|
"38 個 backup / restore / escrow / retention surface",
|
|
)
|
|
assert_text_contains(
|
|
"iwooos_page.high_value_config_owner_packet_testid",
|
|
iwooos_projection_page,
|
|
'data-testid="iwooos-high-value-config-owner-packet-board"',
|
|
)
|
|
assert_text_contains(
|
|
"iwooos_page.high_value_config_owner_packet_boundary_testid",
|
|
iwooos_projection_page,
|
|
'data-testid="iwooos-high-value-config-owner-packet-boundaries"',
|
|
)
|
|
assert_text_contains(
|
|
"iwooos_page.high_value_config_owner_packet_component",
|
|
iwooos_projection_page,
|
|
"IwoooSHighValueConfigOwnerPacketBoard",
|
|
)
|
|
for text in [
|
|
"high_value_config_owner_packet_frontstage_summary_count=4",
|
|
"high_value_config_owner_packet_frontstage_item_count=6",
|
|
"high_value_config_owner_packet_count=3",
|
|
"high_value_config_owner_packet_c0_packet_count=2",
|
|
"high_value_config_owner_packet_c1_packet_count=0",
|
|
"high_value_config_owner_packet_request_sent_count=0",
|
|
"high_value_config_owner_packet_received_response_count=0",
|
|
"high_value_config_owner_packet_accepted_response_count=0",
|
|
"high_value_config_owner_packet_runtime_gate_count=0",
|
|
"high_value_config_owner_packet_action_buttons_allowed=false",
|
|
"runtime_execution_authorized=false",
|
|
"active_runtime_gate_count=0",
|
|
"action_buttons_allowed=false",
|
|
"not_authorization=true",
|
|
"secret_value_collection_allowed=false",
|
|
"nginx_reload_authorized=false",
|
|
"workflow_modification_authorized=false",
|
|
"agent_bounty_runtime_authorized=false",
|
|
]:
|
|
assert_text_contains(
|
|
"iwooos_page.high_value_config_owner_packet_boundary",
|
|
iwooos_projection_page,
|
|
text,
|
|
)
|
|
assert_contains(
|
|
"web_messages.zh-TW.iwooos.highValueConfigOwnerPacket",
|
|
list(web_messages_zh["iwooos"].keys()),
|
|
"highValueConfigOwnerPacket",
|
|
)
|
|
assert_contains(
|
|
"web_messages.en.iwooos.highValueConfigOwnerPacket",
|
|
list(web_messages_en["iwooos"].keys()),
|
|
"highValueConfigOwnerPacket",
|
|
)
|
|
for key in [
|
|
"eyebrow",
|
|
"title",
|
|
"subtitle",
|
|
"gateLabel",
|
|
"stateLabel",
|
|
"boundaryTitle",
|
|
"boundaryIntro",
|
|
"summary",
|
|
"items",
|
|
]:
|
|
assert_contains(
|
|
"web_messages.zh-TW.iwooos.highValueConfigOwnerPacket.keys",
|
|
list(web_messages_zh["iwooos"]["highValueConfigOwnerPacket"].keys()),
|
|
key,
|
|
)
|
|
assert_contains(
|
|
"web_messages.en.iwooos.highValueConfigOwnerPacket.keys",
|
|
list(web_messages_en["iwooos"]["highValueConfigOwnerPacket"].keys()),
|
|
key,
|
|
)
|
|
for key in ["packetCount", "c0Packets", "responses", "runtimeGate"]:
|
|
assert_contains(
|
|
"web_messages.zh-TW.iwooos.highValueConfigOwnerPacket.summary",
|
|
list(web_messages_zh["iwooos"]["highValueConfigOwnerPacket"]["summary"].keys()),
|
|
key,
|
|
)
|
|
assert_contains(
|
|
"web_messages.en.iwooos.highValueConfigOwnerPacket.summary",
|
|
list(web_messages_en["iwooos"]["highValueConfigOwnerPacket"]["summary"].keys()),
|
|
key,
|
|
)
|
|
for key in ["packetDraft", "currentTier", "canonicalFields", "requestState", "responseState", "runtimeBoundary"]:
|
|
assert_contains(
|
|
"web_messages.zh-TW.iwooos.highValueConfigOwnerPacket.items",
|
|
list(web_messages_zh["iwooos"]["highValueConfigOwnerPacket"]["items"].keys()),
|
|
key,
|
|
)
|
|
assert_contains(
|
|
"web_messages.en.iwooos.highValueConfigOwnerPacket.items",
|
|
list(web_messages_en["iwooos"]["highValueConfigOwnerPacket"]["items"].keys()),
|
|
key,
|
|
)
|
|
domain_tls_summary = domain_tls_inventory["summary"]
|
|
assert_equal("domain_tls_inventory.schema", domain_tls_inventory["schema_version"], "domain_tls_certbot_inventory_v1")
|
|
assert_equal("domain_tls_inventory.summary.source_config_count", domain_tls_summary["source_config_count"], 3)
|
|
assert_equal("domain_tls_inventory.summary.managed_domain_count", domain_tls_summary["managed_domain_count"], 14)
|
|
assert_equal(
|
|
"domain_tls_inventory.summary.unique_certificate_path_count",
|
|
domain_tls_summary["unique_certificate_path_count"],
|
|
10,
|
|
)
|
|
assert_equal(
|
|
"domain_tls_inventory.summary.acme_challenge_domain_count",
|
|
domain_tls_summary["acme_challenge_domain_count"],
|
|
7,
|
|
)
|
|
assert_equal(
|
|
"domain_tls_inventory.summary.certificate_owner_confirmation_required_count",
|
|
domain_tls_summary["certificate_owner_confirmation_required_count"],
|
|
4,
|
|
)
|
|
assert_equal("domain_tls_inventory.summary.runtime_gate_count", domain_tls_summary["runtime_gate_count"], 0)
|
|
assert_false("domain_tls_inventory.summary.live_tls_probe_executed", domain_tls_summary["live_tls_probe_executed"])
|
|
assert_false("domain_tls_inventory.summary.dns_change_executed", domain_tls_summary["dns_change_executed"])
|
|
assert_false("domain_tls_inventory.summary.certbot_renew_executed", domain_tls_summary["certbot_renew_executed"])
|
|
assert_false("domain_tls_inventory.summary.nginx_reload_executed", domain_tls_summary["nginx_reload_executed"])
|
|
assert_false("domain_tls_inventory.summary.action_buttons_allowed", domain_tls_summary["action_buttons_allowed"])
|
|
domain_tls_owner_confirmation_summary = domain_tls_owner_confirmation_request["summary"]
|
|
assert_equal(
|
|
"domain_tls_owner_confirmation_request.schema",
|
|
domain_tls_owner_confirmation_request["schema_version"],
|
|
"domain_tls_certbot_owner_confirmation_request_v1",
|
|
)
|
|
assert_equal(
|
|
"domain_tls_owner_confirmation_request.source_inventory_schema_version",
|
|
domain_tls_owner_confirmation_request["source_inventory_schema_version"],
|
|
"domain_tls_certbot_inventory_v1",
|
|
)
|
|
assert_equal(
|
|
"domain_tls_owner_confirmation_request.status",
|
|
domain_tls_owner_confirmation_request["status"],
|
|
"owner_confirmation_request_ready_not_dispatched",
|
|
)
|
|
expected_domain_tls_owner_confirmation_summary = {
|
|
"owner_confirmation_request_count": 4,
|
|
"c0_owner_confirmation_request_count": 4,
|
|
"c1_owner_confirmation_request_count": 0,
|
|
"required_owner_field_count": 9,
|
|
"request_field_count": 16,
|
|
"confirmation_question_count": 5,
|
|
"rejection_guard_count": 12,
|
|
"request_sent_count": 0,
|
|
"recipient_confirmed_count": 0,
|
|
"owner_response_received_count": 0,
|
|
"owner_response_accepted_count": 0,
|
|
"owner_response_rejected_count": 0,
|
|
"quarantined_payload_count": 0,
|
|
"dns_query_authorized_count": 0,
|
|
"dns_query_executed_count": 0,
|
|
"live_tls_probe_authorized_count": 0,
|
|
"live_tls_probe_executed_count": 0,
|
|
"certbot_renew_authorized_count": 0,
|
|
"certbot_renew_executed_count": 0,
|
|
"nginx_reload_authorized_count": 0,
|
|
"nginx_reload_executed_count": 0,
|
|
"host_write_authorized_count": 0,
|
|
"runtime_gate_count": 0,
|
|
"action_button_count": 0,
|
|
}
|
|
for key, expected in expected_domain_tls_owner_confirmation_summary.items():
|
|
assert_equal(
|
|
f"domain_tls_owner_confirmation_request.summary.{key}",
|
|
domain_tls_owner_confirmation_summary[key],
|
|
expected,
|
|
)
|
|
for false_key in [
|
|
"request_sent",
|
|
"recipient_confirmed",
|
|
"owner_response_received",
|
|
"owner_response_accepted",
|
|
"dns_query_authorized",
|
|
"dns_query_executed",
|
|
"live_tls_probe_authorized",
|
|
"live_tls_probe_executed",
|
|
"certbot_renew_authorized",
|
|
"certbot_renew_executed",
|
|
"nginx_reload_authorized",
|
|
"nginx_reload_executed",
|
|
"host_write_authorized",
|
|
"host_write_executed",
|
|
"runtime_execution_authorized",
|
|
"action_buttons_allowed",
|
|
"secret_value_collection_allowed",
|
|
"production_write_authorized",
|
|
]:
|
|
assert_false(
|
|
f"domain_tls_owner_confirmation_request.execution_boundaries.{false_key}",
|
|
domain_tls_owner_confirmation_request["execution_boundaries"][false_key],
|
|
)
|
|
assert_true(
|
|
"domain_tls_owner_confirmation_request.execution_boundaries.not_authorization",
|
|
domain_tls_owner_confirmation_request["execution_boundaries"]["not_authorization"],
|
|
)
|
|
expected_domain_tls_owner_confirmation_ids = [
|
|
"domain_tls_certbot_owner_confirmation:gitea.wooo.work",
|
|
"domain_tls_certbot_owner_confirmation:langfuse.wooo.work",
|
|
"domain_tls_certbot_owner_confirmation:signoz.wooo.work",
|
|
"domain_tls_certbot_owner_confirmation:tsenyang.com",
|
|
]
|
|
assert_equal(
|
|
"domain_tls_owner_confirmation_request.request_ids",
|
|
[item["request_id"] for item in domain_tls_owner_confirmation_request["owner_confirmation_requests"]],
|
|
expected_domain_tls_owner_confirmation_ids,
|
|
)
|
|
expected_domain_tls_confirmation_question_ids = [
|
|
"certificate_coverage_basis",
|
|
"certificate_expiry_metadata_ref",
|
|
"renewal_owner_and_method",
|
|
"acme_challenge_route_owner",
|
|
"postcheck_and_rollback_owner",
|
|
]
|
|
assert_equal(
|
|
"domain_tls_owner_confirmation_request.confirmation_question_ids",
|
|
[item["question_id"] for item in domain_tls_owner_confirmation_request["confirmation_questions"]],
|
|
expected_domain_tls_confirmation_question_ids,
|
|
)
|
|
expected_domain_tls_rejection_guards = [
|
|
"tls_private_key_or_raw_cert_payload",
|
|
"certbot_account_key_or_credentials",
|
|
"dns_provider_or_registrar_credential",
|
|
"token_secret_cookie_session",
|
|
"authorization_header_or_basic_auth",
|
|
"unredacted_certbot_log_or_env_dump",
|
|
"shell_history_or_private_key_path_dump",
|
|
"dns_query_or_tls_probe_request",
|
|
"certbot_renew_execution_request",
|
|
"nginx_reload_or_route_change_request",
|
|
"ssh_host_write_or_runtime_request",
|
|
"production_write_or_action_button_request",
|
|
]
|
|
assert_equal(
|
|
"domain_tls_owner_confirmation_request.rejection_guards",
|
|
domain_tls_owner_confirmation_request["rejection_guards"],
|
|
expected_domain_tls_rejection_guards,
|
|
)
|
|
for request in domain_tls_owner_confirmation_request["owner_confirmation_requests"]:
|
|
assert_equal(
|
|
f"domain_tls_owner_confirmation_request.{request['request_id']}.request_field_count",
|
|
len(request["request_fields"]),
|
|
16,
|
|
)
|
|
assert_equal(
|
|
f"domain_tls_owner_confirmation_request.{request['request_id']}.required_owner_field_count",
|
|
len(request["required_owner_fields"]),
|
|
9,
|
|
)
|
|
assert_equal(
|
|
f"domain_tls_owner_confirmation_request.{request['request_id']}.confirmation_question_count",
|
|
len(request["confirmation_questions"]),
|
|
5,
|
|
)
|
|
assert_true(
|
|
f"domain_tls_owner_confirmation_request.{request['request_id']}.not_approval",
|
|
request["not_approval"],
|
|
)
|
|
for false_key in [
|
|
"request_sent",
|
|
"recipient_confirmed",
|
|
"owner_response_received",
|
|
"owner_response_accepted",
|
|
"owner_response_rejected",
|
|
"quarantine_written",
|
|
"dns_query_authorized",
|
|
"dns_query_executed",
|
|
"live_tls_probe_authorized",
|
|
"live_tls_probe_executed",
|
|
"certbot_renew_authorized",
|
|
"certbot_renew_executed",
|
|
"nginx_reload_authorized",
|
|
"nginx_reload_executed",
|
|
"host_write_authorized",
|
|
"runtime_gate",
|
|
"action_buttons_allowed",
|
|
"secret_value_collection_allowed",
|
|
"production_write_authorized",
|
|
]:
|
|
assert_false(
|
|
f"domain_tls_owner_confirmation_request.{request['request_id']}.{false_key}",
|
|
request[false_key],
|
|
)
|
|
domain_tls_owner_response_acceptance_summary = domain_tls_owner_response_acceptance["summary"]
|
|
assert_equal(
|
|
"domain_tls_owner_response_acceptance.schema",
|
|
domain_tls_owner_response_acceptance["schema_version"],
|
|
"domain_tls_certbot_owner_response_acceptance_v1",
|
|
)
|
|
assert_equal(
|
|
"domain_tls_owner_response_acceptance.source_owner_confirmation_request_schema_version",
|
|
domain_tls_owner_response_acceptance["source_owner_confirmation_request_schema_version"],
|
|
"domain_tls_certbot_owner_confirmation_request_v1",
|
|
)
|
|
assert_equal(
|
|
"domain_tls_owner_response_acceptance.status",
|
|
domain_tls_owner_response_acceptance["status"],
|
|
"owner_response_acceptance_ledger_ready_no_runtime_action",
|
|
)
|
|
expected_domain_tls_owner_response_acceptance_summary = {
|
|
"source_owner_confirmation_request_count": 4,
|
|
"acceptance_candidate_count": 4,
|
|
"c0_acceptance_candidate_count": 4,
|
|
"acceptance_field_count": 23,
|
|
"required_owner_response_field_count": 13,
|
|
"reviewer_check_count": 13,
|
|
"outcome_lane_count": 7,
|
|
"blocked_action_count": 20,
|
|
"request_sent_count": 0,
|
|
"recipient_confirmed_count": 0,
|
|
"owner_response_received_count": 0,
|
|
"owner_response_accepted_count": 0,
|
|
"owner_response_rejected_count": 0,
|
|
"owner_response_quarantined_count": 0,
|
|
"supplement_requested_count": 0,
|
|
"certificate_coverage_confirmed_count": 0,
|
|
"certificate_expiry_metadata_accepted_count": 0,
|
|
"renewal_owner_accepted_count": 0,
|
|
"acme_route_owner_accepted_count": 0,
|
|
"maintenance_window_accepted_count": 0,
|
|
"rollback_owner_accepted_count": 0,
|
|
"dns_query_authorized_count": 0,
|
|
"dns_query_executed_count": 0,
|
|
"live_tls_probe_authorized_count": 0,
|
|
"live_tls_probe_executed_count": 0,
|
|
"certbot_renew_authorized_count": 0,
|
|
"certbot_renew_executed_count": 0,
|
|
"nginx_reload_authorized_count": 0,
|
|
"nginx_reload_executed_count": 0,
|
|
"route_smoke_authorized_count": 0,
|
|
"route_smoke_executed_count": 0,
|
|
"host_write_authorized_count": 0,
|
|
"runtime_gate_count": 0,
|
|
"action_button_count": 0,
|
|
}
|
|
for key, expected in expected_domain_tls_owner_response_acceptance_summary.items():
|
|
assert_equal(
|
|
f"domain_tls_owner_response_acceptance.summary.{key}",
|
|
domain_tls_owner_response_acceptance_summary[key],
|
|
expected,
|
|
)
|
|
for false_key in [
|
|
"request_dispatch_authorized",
|
|
"owner_response_accepted",
|
|
"raw_certificate_storage_allowed",
|
|
"tls_private_key_read_authorized",
|
|
"secret_value_collection_allowed",
|
|
"dns_query_authorized",
|
|
"dns_query_executed",
|
|
"live_tls_probe_authorized",
|
|
"live_tls_probe_executed",
|
|
"certbot_renew_authorized",
|
|
"certbot_renew_executed",
|
|
"nginx_reload_authorized",
|
|
"nginx_reload_executed",
|
|
"route_smoke_authorized",
|
|
"route_smoke_executed",
|
|
"host_write_authorized",
|
|
"production_write_authorized",
|
|
"runtime_execution_authorized",
|
|
"action_buttons_allowed",
|
|
]:
|
|
assert_false(
|
|
f"domain_tls_owner_response_acceptance.execution_boundaries.{false_key}",
|
|
domain_tls_owner_response_acceptance["execution_boundaries"][false_key],
|
|
)
|
|
assert_true(
|
|
"domain_tls_owner_response_acceptance.execution_boundaries.not_authorization",
|
|
domain_tls_owner_response_acceptance["execution_boundaries"]["not_authorization"],
|
|
)
|
|
expected_domain_tls_owner_response_acceptance_ids = [
|
|
"domain_tls_certbot_owner_response_acceptance:gitea.wooo.work",
|
|
"domain_tls_certbot_owner_response_acceptance:langfuse.wooo.work",
|
|
"domain_tls_certbot_owner_response_acceptance:signoz.wooo.work",
|
|
"domain_tls_certbot_owner_response_acceptance:tsenyang.com",
|
|
]
|
|
assert_equal(
|
|
"domain_tls_owner_response_acceptance.candidate_ids",
|
|
[item["acceptance_candidate_id"] for item in domain_tls_owner_response_acceptance["acceptance_candidates"]],
|
|
expected_domain_tls_owner_response_acceptance_ids,
|
|
)
|
|
expected_domain_tls_owner_response_acceptance_checks = [
|
|
"owner_identity_present",
|
|
"decision_and_reason_present",
|
|
"redacted_refs_only",
|
|
"raw_certificate_absent",
|
|
"secret_value_absent",
|
|
"coverage_basis_ref_present",
|
|
"expiry_metadata_ref_not_probe",
|
|
"renewal_owner_separate_from_action",
|
|
"acme_route_owner_present",
|
|
"maintenance_window_present",
|
|
"rollback_owner_present",
|
|
"validation_plan_present",
|
|
"counts_transition_safe",
|
|
]
|
|
assert_equal(
|
|
"domain_tls_owner_response_acceptance.reviewer_checks",
|
|
[item["check_id"] for item in domain_tls_owner_response_acceptance["reviewer_checks"]],
|
|
expected_domain_tls_owner_response_acceptance_checks,
|
|
)
|
|
expected_domain_tls_owner_response_acceptance_lanes = [
|
|
"waiting_owner_response",
|
|
"quarantine_raw_certificate_or_secret",
|
|
"reject_execution_request",
|
|
"request_supplement",
|
|
"ready_for_certificate_coverage_review",
|
|
"owner_review_only_update",
|
|
"waiting_runtime_gate",
|
|
]
|
|
assert_equal(
|
|
"domain_tls_owner_response_acceptance.outcome_lanes",
|
|
[item["lane_id"] for item in domain_tls_owner_response_acceptance["outcome_lanes"]],
|
|
expected_domain_tls_owner_response_acceptance_lanes,
|
|
)
|
|
expected_domain_tls_owner_response_acceptance_blocked_actions = [
|
|
"perform_dns_query",
|
|
"perform_live_tls_probe",
|
|
"run_certbot_renew",
|
|
"run_nginx_reload",
|
|
"run_route_smoke",
|
|
"read_tls_private_key",
|
|
"store_raw_certificate_payload",
|
|
"store_dns_provider_credential",
|
|
"store_certbot_account_key",
|
|
"collect_secret_value",
|
|
"accept_unredacted_certbot_log",
|
|
"accept_shell_history_or_env_dump",
|
|
"mark_owner_response_accepted_without_reviewer_record",
|
|
"mark_certificate_coverage_confirmed_without_ref",
|
|
"modify_dns_record",
|
|
"modify_tls_certificate_path",
|
|
"modify_acme_challenge_route",
|
|
"write_production_host",
|
|
"open_runtime_gate",
|
|
"add_action_button",
|
|
]
|
|
assert_equal(
|
|
"domain_tls_owner_response_acceptance.blocked_actions",
|
|
domain_tls_owner_response_acceptance["blocked_actions"],
|
|
expected_domain_tls_owner_response_acceptance_blocked_actions,
|
|
)
|
|
for candidate in domain_tls_owner_response_acceptance["acceptance_candidates"]:
|
|
assert_equal(
|
|
f"domain_tls_owner_response_acceptance.{candidate['acceptance_candidate_id']}.acceptance_field_count",
|
|
len(candidate["acceptance_fields"]),
|
|
23,
|
|
)
|
|
assert_equal(
|
|
f"domain_tls_owner_response_acceptance.{candidate['acceptance_candidate_id']}.required_owner_response_field_count",
|
|
len(candidate["required_owner_response_fields"]),
|
|
13,
|
|
)
|
|
assert_equal(
|
|
f"domain_tls_owner_response_acceptance.{candidate['acceptance_candidate_id']}.reviewer_check_count",
|
|
len(candidate["reviewer_checks"]),
|
|
13,
|
|
)
|
|
assert_equal(
|
|
f"domain_tls_owner_response_acceptance.{candidate['acceptance_candidate_id']}.outcome_lane_count",
|
|
len(candidate["outcome_lanes"]),
|
|
7,
|
|
)
|
|
assert_true(
|
|
f"domain_tls_owner_response_acceptance.{candidate['acceptance_candidate_id']}.not_approval",
|
|
candidate["not_approval"],
|
|
)
|
|
for false_key in [
|
|
"request_sent",
|
|
"recipient_confirmed",
|
|
"owner_response_received",
|
|
"owner_response_accepted",
|
|
"owner_response_rejected",
|
|
"owner_response_quarantined",
|
|
"supplement_requested",
|
|
"certificate_coverage_confirmed",
|
|
"certificate_expiry_metadata_accepted",
|
|
"renewal_owner_accepted",
|
|
"acme_route_owner_accepted",
|
|
"maintenance_window_accepted",
|
|
"rollback_owner_accepted",
|
|
"dns_query_authorized",
|
|
"dns_query_executed",
|
|
"live_tls_probe_authorized",
|
|
"live_tls_probe_executed",
|
|
"certbot_renew_authorized",
|
|
"certbot_renew_executed",
|
|
"nginx_reload_authorized",
|
|
"nginx_reload_executed",
|
|
"route_smoke_authorized",
|
|
"route_smoke_executed",
|
|
"host_write_authorized",
|
|
"production_write_authorized",
|
|
"runtime_gate",
|
|
"action_buttons_allowed",
|
|
"secret_value_collection_allowed",
|
|
]:
|
|
assert_false(
|
|
f"domain_tls_owner_response_acceptance.{candidate['acceptance_candidate_id']}.{false_key}",
|
|
candidate[false_key],
|
|
)
|
|
k8s_argocd_summary = k8s_argocd_manifest_inventory["summary"]
|
|
assert_equal(
|
|
"k8s_argocd_manifest_inventory.schema",
|
|
k8s_argocd_manifest_inventory["schema_version"],
|
|
"k8s_argocd_manifest_inventory_v1",
|
|
)
|
|
assert_equal(
|
|
"k8s_argocd_manifest_inventory.status",
|
|
k8s_argocd_manifest_inventory["status"],
|
|
"repo_only_inventory_ready_no_live_cluster_read",
|
|
)
|
|
expected_k8s_argocd_summary = {
|
|
"scan_group_count": 4,
|
|
"file_count": 49,
|
|
"c0_file_count": 36,
|
|
"c1_file_count": 13,
|
|
"yaml_manifest_file_count": 45,
|
|
"supporting_source_file_count": 4,
|
|
"unique_kind_count": 20,
|
|
"top_level_kind_marker_count": 56,
|
|
"deployment_object_count": 5,
|
|
"cronjob_object_count": 5,
|
|
"secret_object_count": 6,
|
|
"network_policy_object_count": 6,
|
|
"rbac_object_count": 5,
|
|
"autoscaling_object_count": 6,
|
|
"argocd_application_count": 1,
|
|
"prometheus_rule_count": 4,
|
|
"required_owner_field_count": 11,
|
|
"evidence_gap_count": 8,
|
|
"blocked_action_count": 13,
|
|
"owner_response_received_count": 0,
|
|
"owner_response_accepted_count": 0,
|
|
"rendered_manifest_diff_ready_count": 0,
|
|
"argocd_health_readback_received_count": 0,
|
|
"argocd_sync_authorized_count": 0,
|
|
"argocd_sync_executed_count": 0,
|
|
"kubectl_action_authorized_count": 0,
|
|
"kubectl_action_executed_count": 0,
|
|
"live_cluster_read_authorized_count": 0,
|
|
"live_cluster_read_executed_count": 0,
|
|
"secret_value_collection_allowed_count": 0,
|
|
"runtime_gate_count": 0,
|
|
"action_button_count": 0,
|
|
}
|
|
for key, expected in expected_k8s_argocd_summary.items():
|
|
assert_equal(
|
|
f"k8s_argocd_manifest_inventory.summary.{key}",
|
|
k8s_argocd_summary[key],
|
|
expected,
|
|
)
|
|
for false_key in [
|
|
"live_cluster_read_authorized",
|
|
"live_cluster_read_executed",
|
|
"argocd_api_read_authorized",
|
|
"argocd_sync_authorized",
|
|
"argocd_sync_executed",
|
|
"kubectl_action_authorized",
|
|
"kubectl_action_executed",
|
|
"manifest_apply_authorized",
|
|
"manifest_apply_executed",
|
|
"secret_value_collection_allowed",
|
|
"production_write_authorized",
|
|
"runtime_execution_authorized",
|
|
"action_buttons_allowed",
|
|
]:
|
|
assert_false(
|
|
f"k8s_argocd_manifest_inventory.execution_boundaries.{false_key}",
|
|
k8s_argocd_manifest_inventory["execution_boundaries"][false_key],
|
|
)
|
|
assert_true(
|
|
"k8s_argocd_manifest_inventory.execution_boundaries.not_authorization",
|
|
k8s_argocd_manifest_inventory["execution_boundaries"]["not_authorization"],
|
|
)
|
|
expected_k8s_group_ids = ["awoooi_prod", "argocd", "velero", "monitoring"]
|
|
assert_equal(
|
|
"k8s_argocd_manifest_inventory.group_ids",
|
|
[item["group_id"] for item in k8s_argocd_manifest_inventory["group_summaries"]],
|
|
expected_k8s_group_ids,
|
|
)
|
|
expected_k8s_blocked_actions = [
|
|
"argocd_sync",
|
|
"kubectl_apply",
|
|
"kubectl_patch",
|
|
"kubectl_delete",
|
|
"helm_upgrade",
|
|
"secret_value_collection",
|
|
"live_cluster_write",
|
|
"manual_pod_restart",
|
|
"scale_workload",
|
|
"change_network_policy",
|
|
"change_rbac",
|
|
"restore_backup",
|
|
"open_runtime_gate",
|
|
]
|
|
assert_equal(
|
|
"k8s_argocd_manifest_inventory.blocked_actions",
|
|
k8s_argocd_manifest_inventory["blocked_actions"],
|
|
expected_k8s_blocked_actions,
|
|
)
|
|
expected_k8s_kind_counts = {
|
|
"Application": 1,
|
|
"BackupStorageLocation": 1,
|
|
"ClusterRole": 1,
|
|
"ClusterRoleBinding": 2,
|
|
"ConfigMap": 3,
|
|
"CronJob": 5,
|
|
"Deployment": 5,
|
|
"HorizontalPodAutoscaler": 3,
|
|
"Kustomization": 1,
|
|
"LimitRange": 1,
|
|
"List": 1,
|
|
"Namespace": 2,
|
|
"NetworkPolicy": 6,
|
|
"PodDisruptionBudget": 3,
|
|
"PrometheusRule": 4,
|
|
"ResourceQuota": 1,
|
|
"Secret": 6,
|
|
"Service": 5,
|
|
"ServiceAccount": 2,
|
|
"VerticalPodAutoscaler": 3,
|
|
}
|
|
assert_equal(
|
|
"k8s_argocd_manifest_inventory.kind_counts",
|
|
k8s_argocd_manifest_inventory["kind_counts"],
|
|
expected_k8s_kind_counts,
|
|
)
|
|
for row in k8s_argocd_manifest_inventory["manifest_rows"]:
|
|
for false_key in [
|
|
"owner_response_received",
|
|
"owner_response_accepted",
|
|
"rendered_manifest_diff_ready",
|
|
"argocd_health_readback_received",
|
|
"argocd_sync_authorized",
|
|
"argocd_sync_executed",
|
|
"kubectl_action_authorized",
|
|
"kubectl_action_executed",
|
|
"secret_value_collection_allowed",
|
|
"runtime_gate",
|
|
"action_buttons_allowed",
|
|
]:
|
|
assert_false(
|
|
f"k8s_argocd_manifest_inventory.manifest_rows.{row['path']}.{false_key}",
|
|
row[false_key],
|
|
)
|
|
k8s_argocd_owner_request_summary = k8s_argocd_owner_request_draft["summary"]
|
|
assert_equal(
|
|
"k8s_argocd_owner_request_draft.schema",
|
|
k8s_argocd_owner_request_draft["schema_version"],
|
|
"k8s_argocd_owner_request_draft_v1",
|
|
)
|
|
assert_equal(
|
|
"k8s_argocd_owner_request_draft.source_inventory_schema_version",
|
|
k8s_argocd_owner_request_draft["source_inventory_schema_version"],
|
|
"k8s_argocd_manifest_inventory_v1",
|
|
)
|
|
assert_equal(
|
|
"k8s_argocd_owner_request_draft.status",
|
|
k8s_argocd_owner_request_draft["status"],
|
|
"owner_request_draft_ready_not_dispatched",
|
|
)
|
|
expected_k8s_argocd_owner_request_summary = {
|
|
"request_draft_count": 4,
|
|
"c0_request_draft_count": 3,
|
|
"c1_request_draft_count": 1,
|
|
"request_field_count": 20,
|
|
"required_owner_field_count": 11,
|
|
"evidence_gap_count": 8,
|
|
"blocked_action_count": 13,
|
|
"request_sent_count": 0,
|
|
"recipient_confirmed_count": 0,
|
|
"owner_response_received_count": 0,
|
|
"owner_response_accepted_count": 0,
|
|
"owner_response_rejected_count": 0,
|
|
"rendered_manifest_diff_ready_count": 0,
|
|
"argocd_health_readback_received_count": 0,
|
|
"argocd_sync_authorized_count": 0,
|
|
"argocd_sync_executed_count": 0,
|
|
"kubectl_action_authorized_count": 0,
|
|
"kubectl_action_executed_count": 0,
|
|
"live_cluster_read_authorized_count": 0,
|
|
"live_cluster_read_executed_count": 0,
|
|
"secret_value_collection_allowed_count": 0,
|
|
"runtime_gate_count": 0,
|
|
"action_button_count": 0,
|
|
}
|
|
for key, expected in expected_k8s_argocd_owner_request_summary.items():
|
|
assert_equal(
|
|
f"k8s_argocd_owner_request_draft.summary.{key}",
|
|
k8s_argocd_owner_request_summary[key],
|
|
expected,
|
|
)
|
|
for false_key in [
|
|
"request_sent",
|
|
"recipient_confirmed",
|
|
"owner_response_received",
|
|
"owner_response_accepted",
|
|
"rendered_manifest_diff_ready",
|
|
"argocd_api_read_authorized",
|
|
"argocd_sync_authorized",
|
|
"argocd_sync_executed",
|
|
"kubectl_action_authorized",
|
|
"kubectl_action_executed",
|
|
"live_cluster_read_authorized",
|
|
"live_cluster_read_executed",
|
|
"secret_value_collection_allowed",
|
|
"production_write_authorized",
|
|
"runtime_execution_authorized",
|
|
"action_buttons_allowed",
|
|
]:
|
|
assert_false(
|
|
f"k8s_argocd_owner_request_draft.execution_boundaries.{false_key}",
|
|
k8s_argocd_owner_request_draft["execution_boundaries"][false_key],
|
|
)
|
|
assert_true(
|
|
"k8s_argocd_owner_request_draft.execution_boundaries.not_authorization",
|
|
k8s_argocd_owner_request_draft["execution_boundaries"]["not_authorization"],
|
|
)
|
|
expected_k8s_argocd_request_ids = [
|
|
"k8s_argocd_owner_request:awoooi_prod",
|
|
"k8s_argocd_owner_request:argocd",
|
|
"k8s_argocd_owner_request:velero",
|
|
"k8s_argocd_owner_request:monitoring",
|
|
]
|
|
assert_equal(
|
|
"k8s_argocd_owner_request_draft.request_ids",
|
|
[item["request_id"] for item in k8s_argocd_owner_request_draft["request_drafts"]],
|
|
expected_k8s_argocd_request_ids,
|
|
)
|
|
assert_equal(
|
|
"k8s_argocd_owner_request_draft.blocked_actions",
|
|
k8s_argocd_owner_request_draft["blocked_actions"],
|
|
expected_k8s_blocked_actions,
|
|
)
|
|
for draft in k8s_argocd_owner_request_draft["request_drafts"]:
|
|
assert_equal(
|
|
f"k8s_argocd_owner_request_draft.{draft['request_id']}.request_field_count",
|
|
len(draft["request_fields"]),
|
|
20,
|
|
)
|
|
assert_equal(
|
|
f"k8s_argocd_owner_request_draft.{draft['request_id']}.required_owner_field_count",
|
|
len(draft["required_owner_fields"]),
|
|
11,
|
|
)
|
|
assert_true(
|
|
f"k8s_argocd_owner_request_draft.{draft['request_id']}.not_approval",
|
|
draft["not_approval"],
|
|
)
|
|
for false_key in [
|
|
"request_sent",
|
|
"recipient_confirmed",
|
|
"owner_response_received",
|
|
"owner_response_accepted",
|
|
"owner_response_rejected",
|
|
"rendered_manifest_diff_ready",
|
|
"argocd_health_readback_received",
|
|
"argocd_sync_authorized",
|
|
"argocd_sync_executed",
|
|
"kubectl_action_authorized",
|
|
"kubectl_action_executed",
|
|
"live_cluster_read_authorized",
|
|
"live_cluster_read_executed",
|
|
"secret_value_collection_allowed",
|
|
"runtime_gate",
|
|
"action_buttons_allowed",
|
|
"production_write_authorized",
|
|
]:
|
|
assert_false(
|
|
f"k8s_argocd_owner_request_draft.{draft['request_id']}.{false_key}",
|
|
draft[false_key],
|
|
)
|
|
k8s_argocd_owner_response_acceptance_summary = k8s_argocd_owner_response_acceptance[
|
|
"summary"
|
|
]
|
|
assert_equal(
|
|
"k8s_argocd_owner_response_acceptance.schema",
|
|
k8s_argocd_owner_response_acceptance["schema_version"],
|
|
"k8s_argocd_owner_response_acceptance_v1",
|
|
)
|
|
assert_equal(
|
|
"k8s_argocd_owner_response_acceptance.source_inventory_schema_version",
|
|
k8s_argocd_owner_response_acceptance["source_inventory_schema_version"],
|
|
"k8s_argocd_manifest_inventory_v1",
|
|
)
|
|
assert_equal(
|
|
"k8s_argocd_owner_response_acceptance.source_owner_request_schema_version",
|
|
k8s_argocd_owner_response_acceptance["source_owner_request_schema_version"],
|
|
"k8s_argocd_owner_request_draft_v1",
|
|
)
|
|
assert_equal(
|
|
"k8s_argocd_owner_response_acceptance.status",
|
|
k8s_argocd_owner_response_acceptance["status"],
|
|
"owner_response_acceptance_ledger_ready_no_runtime_action",
|
|
)
|
|
expected_k8s_argocd_owner_response_acceptance_summary = {
|
|
"source_scan_group_count": 4,
|
|
"source_request_draft_count": 4,
|
|
"acceptance_candidate_count": 4,
|
|
"c0_acceptance_candidate_count": 3,
|
|
"c1_acceptance_candidate_count": 1,
|
|
"acceptance_field_count": 20,
|
|
"required_owner_field_count": 11,
|
|
"reviewer_check_count": 12,
|
|
"outcome_lane_count": 7,
|
|
"blocked_action_count": 18,
|
|
"request_sent_count": 0,
|
|
"recipient_confirmed_count": 0,
|
|
"owner_response_received_count": 0,
|
|
"owner_response_accepted_count": 0,
|
|
"owner_response_rejected_count": 0,
|
|
"owner_response_quarantined_count": 0,
|
|
"supplement_requested_count": 0,
|
|
"rendered_manifest_diff_candidate_count": 0,
|
|
"rendered_manifest_diff_ready_count": 0,
|
|
"argocd_health_readback_received_count": 0,
|
|
"argocd_api_read_authorized_count": 0,
|
|
"argocd_api_read_executed_count": 0,
|
|
"argocd_sync_authorized_count": 0,
|
|
"argocd_sync_executed_count": 0,
|
|
"kubectl_action_authorized_count": 0,
|
|
"kubectl_action_executed_count": 0,
|
|
"live_cluster_read_authorized_count": 0,
|
|
"live_cluster_read_executed_count": 0,
|
|
"secret_value_collection_allowed_count": 0,
|
|
"maintenance_window_accepted_count": 0,
|
|
"rollback_revision_accepted_count": 0,
|
|
"runtime_gate_count": 0,
|
|
"action_button_count": 0,
|
|
}
|
|
for key, expected in expected_k8s_argocd_owner_response_acceptance_summary.items():
|
|
assert_equal(
|
|
f"k8s_argocd_owner_response_acceptance.summary.{key}",
|
|
k8s_argocd_owner_response_acceptance_summary[key],
|
|
expected,
|
|
)
|
|
for key, value in k8s_argocd_owner_response_acceptance["execution_boundaries"].items():
|
|
if key == "not_authorization":
|
|
assert_true(f"k8s_argocd_owner_response_acceptance.execution_boundaries.{key}", value)
|
|
else:
|
|
assert_false(f"k8s_argocd_owner_response_acceptance.execution_boundaries.{key}", value)
|
|
expected_k8s_argocd_owner_response_acceptance_ids = [
|
|
"k8s_argocd_owner_response_acceptance:awoooi_prod",
|
|
"k8s_argocd_owner_response_acceptance:argocd",
|
|
"k8s_argocd_owner_response_acceptance:velero",
|
|
"k8s_argocd_owner_response_acceptance:monitoring",
|
|
]
|
|
assert_equal(
|
|
"k8s_argocd_owner_response_acceptance.acceptance_candidate_ids",
|
|
[
|
|
item["acceptance_candidate_id"]
|
|
for item in k8s_argocd_owner_response_acceptance["acceptance_candidates"]
|
|
],
|
|
expected_k8s_argocd_owner_response_acceptance_ids,
|
|
)
|
|
expected_k8s_argocd_owner_response_reviewer_checks = [
|
|
"owner_identity_present",
|
|
"decision_reason_present",
|
|
"affected_scope_matches_group",
|
|
"redacted_refs_only",
|
|
"secret_value_absent",
|
|
"argocd_health_readback_ref_shape",
|
|
"argocd_sync_revision_ref_not_execution",
|
|
"rollback_revision_present",
|
|
"rendered_manifest_diff_ref_not_payload",
|
|
"maintenance_window_present",
|
|
"validation_plan_present",
|
|
"counts_transition_safe",
|
|
]
|
|
assert_equal(
|
|
"k8s_argocd_owner_response_acceptance.reviewer_check_ids",
|
|
[item["check_id"] for item in k8s_argocd_owner_response_acceptance["reviewer_checks"]],
|
|
expected_k8s_argocd_owner_response_reviewer_checks,
|
|
)
|
|
expected_k8s_argocd_owner_response_outcome_lanes = [
|
|
"waiting_owner_response",
|
|
"quarantine_raw_payload",
|
|
"reject_secret_or_unredacted_manifest",
|
|
"request_supplement",
|
|
"ready_for_rendered_manifest_review",
|
|
"owner_review_only_update",
|
|
"waiting_runtime_gate",
|
|
]
|
|
assert_equal(
|
|
"k8s_argocd_owner_response_acceptance.outcome_lane_ids",
|
|
[item["lane_id"] for item in k8s_argocd_owner_response_acceptance["outcome_lanes"]],
|
|
expected_k8s_argocd_owner_response_outcome_lanes,
|
|
)
|
|
expected_k8s_argocd_owner_response_blocked_actions = [
|
|
"argocd_api_read_without_approval",
|
|
"live_cluster_read_without_approval",
|
|
"argocd_sync",
|
|
"kubectl_apply",
|
|
"kubectl_patch",
|
|
"kubectl_delete",
|
|
"helm_upgrade",
|
|
"secret_value_collection",
|
|
"live_cluster_write",
|
|
"manual_pod_restart",
|
|
"scale_workload",
|
|
"change_network_policy",
|
|
"change_rbac",
|
|
"restore_backup",
|
|
"render_manifest_diff_from_untrusted_payload",
|
|
"mark_owner_response_accepted_without_reviewer_record",
|
|
"open_runtime_gate",
|
|
"add_action_button",
|
|
]
|
|
assert_equal(
|
|
"k8s_argocd_owner_response_acceptance.blocked_actions",
|
|
k8s_argocd_owner_response_acceptance["blocked_actions"],
|
|
expected_k8s_argocd_owner_response_blocked_actions,
|
|
)
|
|
for item in k8s_argocd_owner_response_acceptance["acceptance_candidates"]:
|
|
assert_equal(
|
|
f"k8s_argocd_owner_response_acceptance.{item['acceptance_candidate_id']}.field_count",
|
|
len(item["acceptance_fields"]),
|
|
20,
|
|
)
|
|
assert_equal(
|
|
f"k8s_argocd_owner_response_acceptance.{item['acceptance_candidate_id']}.required_owner_fields",
|
|
len(item["required_owner_fields"]),
|
|
11,
|
|
)
|
|
assert_equal(
|
|
f"k8s_argocd_owner_response_acceptance.{item['acceptance_candidate_id']}.reviewer_checks",
|
|
len(item["reviewer_checks"]),
|
|
12,
|
|
)
|
|
assert_equal(
|
|
f"k8s_argocd_owner_response_acceptance.{item['acceptance_candidate_id']}.outcome_lanes",
|
|
len(item["outcome_lanes"]),
|
|
7,
|
|
)
|
|
assert_equal(
|
|
f"k8s_argocd_owner_response_acceptance.{item['acceptance_candidate_id']}.blocked_actions",
|
|
len(item["blocked_actions"]),
|
|
18,
|
|
)
|
|
assert_true(
|
|
f"k8s_argocd_owner_response_acceptance.{item['acceptance_candidate_id']}.not_approval",
|
|
item["not_approval"],
|
|
)
|
|
for false_key in [
|
|
"request_sent",
|
|
"recipient_confirmed",
|
|
"owner_response_received",
|
|
"owner_response_accepted",
|
|
"owner_response_rejected",
|
|
"owner_response_quarantined",
|
|
"supplement_requested",
|
|
"rendered_manifest_diff_candidate",
|
|
"rendered_manifest_diff_ready",
|
|
"argocd_health_readback_received",
|
|
"argocd_api_read_authorized",
|
|
"argocd_api_read_executed",
|
|
"argocd_sync_authorized",
|
|
"argocd_sync_executed",
|
|
"kubectl_action_authorized",
|
|
"kubectl_action_executed",
|
|
"live_cluster_read_authorized",
|
|
"live_cluster_read_executed",
|
|
"secret_value_collection_allowed",
|
|
"maintenance_window_accepted",
|
|
"rollback_revision_accepted",
|
|
"production_write_authorized",
|
|
"runtime_gate",
|
|
"action_buttons_allowed",
|
|
]:
|
|
assert_false(
|
|
f"k8s_argocd_owner_response_acceptance.{item['acceptance_candidate_id']}.{false_key}",
|
|
item[false_key],
|
|
)
|
|
assert_equal(
|
|
"k8s_argocd_change_evidence_acceptance.schema",
|
|
k8s_argocd_change_evidence_acceptance["schema_version"],
|
|
"k8s_argocd_change_evidence_acceptance_v1",
|
|
)
|
|
assert_equal(
|
|
"k8s_argocd_change_evidence_acceptance.status",
|
|
k8s_argocd_change_evidence_acceptance["status"],
|
|
"change_evidence_acceptance_ledger_ready_no_runtime_action",
|
|
)
|
|
assert_equal(
|
|
"k8s_argocd_change_evidence_acceptance.source_inventory_schema_version",
|
|
k8s_argocd_change_evidence_acceptance["source_inventory_schema_version"],
|
|
"k8s_argocd_manifest_inventory_v1",
|
|
)
|
|
assert_equal(
|
|
"k8s_argocd_change_evidence_acceptance.source_acceptance_schema_version",
|
|
k8s_argocd_change_evidence_acceptance["source_acceptance_schema_version"],
|
|
"k8s_argocd_owner_response_acceptance_v1",
|
|
)
|
|
expected_k8s_change_evidence_summary = {
|
|
"source_scan_group_count": 4,
|
|
"source_manifest_file_count": 49,
|
|
"source_yaml_manifest_file_count": 45,
|
|
"source_c0_file_count": 36,
|
|
"source_acceptance_candidate_count": 4,
|
|
"deployment_object_count": 5,
|
|
"cronjob_object_count": 5,
|
|
"secret_object_count": 6,
|
|
"network_policy_object_count": 6,
|
|
"rbac_object_count": 5,
|
|
"argocd_application_count": 1,
|
|
"prometheus_rule_count": 4,
|
|
"change_evidence_candidate_count": 4,
|
|
"c0_change_evidence_candidate_count": 3,
|
|
"c1_change_evidence_candidate_count": 1,
|
|
"write_capable_candidate_count": 4,
|
|
"gate_tag_count": 10,
|
|
"required_evidence_field_count": 18,
|
|
"change_evidence_field_count": 21,
|
|
"reviewer_check_count": 18,
|
|
"outcome_lane_count": 8,
|
|
"blocked_action_count": 28,
|
|
"change_evidence_received_count": 0,
|
|
"change_evidence_accepted_count": 0,
|
|
"change_evidence_rejected_count": 0,
|
|
"change_evidence_quarantined_count": 0,
|
|
"supplement_requested_count": 0,
|
|
"rendered_manifest_diff_accepted_count": 0,
|
|
"argocd_application_readback_accepted_count": 0,
|
|
"argocd_sync_revision_accepted_count": 0,
|
|
"health_before_accepted_count": 0,
|
|
"health_after_accepted_count": 0,
|
|
"rollout_status_accepted_count": 0,
|
|
"service_route_smoke_accepted_count": 0,
|
|
"metrics_alert_accepted_count": 0,
|
|
"secret_metadata_parity_accepted_count": 0,
|
|
"blast_radius_accepted_count": 0,
|
|
"maintenance_window_accepted_count": 0,
|
|
"rollback_revision_accepted_count": 0,
|
|
"postcheck_owner_accepted_count": 0,
|
|
"cross_project_sync_accepted_count": 0,
|
|
"runtime_approval_package_ready_count": 0,
|
|
"argocd_api_read_authorized_count": 0,
|
|
"argocd_api_read_executed_count": 0,
|
|
"argocd_sync_authorized_count": 0,
|
|
"argocd_sync_executed_count": 0,
|
|
"kubectl_action_authorized_count": 0,
|
|
"kubectl_action_executed_count": 0,
|
|
"helm_upgrade_authorized_count": 0,
|
|
"helm_upgrade_executed_count": 0,
|
|
"live_cluster_read_authorized_count": 0,
|
|
"live_cluster_read_executed_count": 0,
|
|
"network_policy_apply_authorized_count": 0,
|
|
"nodeport_change_authorized_count": 0,
|
|
"rbac_change_authorized_count": 0,
|
|
"secret_value_collection_allowed_count": 0,
|
|
"production_write_authorized_count": 0,
|
|
"runtime_gate_count": 0,
|
|
"action_button_count": 0,
|
|
"coverage_percent_before_acceptance": 62,
|
|
"coverage_percent_after_acceptance": 64,
|
|
}
|
|
for key, expected in expected_k8s_change_evidence_summary.items():
|
|
assert_equal(
|
|
f"k8s_argocd_change_evidence_acceptance.summary.{key}",
|
|
k8s_argocd_change_evidence_acceptance["summary"][key],
|
|
expected,
|
|
)
|
|
for key, value in k8s_argocd_change_evidence_acceptance["execution_boundaries"].items():
|
|
if key == "not_authorization":
|
|
assert_true(f"k8s_argocd_change_evidence_acceptance.execution_boundaries.{key}", value)
|
|
else:
|
|
assert_false(f"k8s_argocd_change_evidence_acceptance.execution_boundaries.{key}", value)
|
|
expected_k8s_change_evidence_ids = [
|
|
"k8s_argocd_change_evidence:awoooi_prod",
|
|
"k8s_argocd_change_evidence:argocd",
|
|
"k8s_argocd_change_evidence:velero",
|
|
"k8s_argocd_change_evidence:monitoring",
|
|
]
|
|
assert_equal(
|
|
"k8s_argocd_change_evidence_acceptance.candidate_ids",
|
|
[
|
|
item["change_evidence_candidate_id"]
|
|
for item in k8s_argocd_change_evidence_acceptance["change_evidence_candidates"]
|
|
],
|
|
expected_k8s_change_evidence_ids,
|
|
)
|
|
assert_equal(
|
|
"k8s_argocd_change_evidence_acceptance.reviewer_checks.count",
|
|
len(k8s_argocd_change_evidence_acceptance["reviewer_checks"]),
|
|
18,
|
|
)
|
|
assert_equal(
|
|
"k8s_argocd_change_evidence_acceptance.outcome_lanes.count",
|
|
len(k8s_argocd_change_evidence_acceptance["outcome_lanes"]),
|
|
8,
|
|
)
|
|
assert_equal(
|
|
"k8s_argocd_change_evidence_acceptance.blocked_actions.count",
|
|
len(k8s_argocd_change_evidence_acceptance["blocked_actions"]),
|
|
28,
|
|
)
|
|
for item in k8s_argocd_change_evidence_acceptance["change_evidence_candidates"]:
|
|
assert_equal(
|
|
f"k8s_argocd_change_evidence_acceptance.{item['change_evidence_candidate_id']}.change_evidence_fields",
|
|
len(item["change_evidence_fields"]),
|
|
21,
|
|
)
|
|
assert_equal(
|
|
f"k8s_argocd_change_evidence_acceptance.{item['change_evidence_candidate_id']}.required_evidence_fields",
|
|
len(item["required_evidence_fields"]),
|
|
18,
|
|
)
|
|
assert_equal(
|
|
f"k8s_argocd_change_evidence_acceptance.{item['change_evidence_candidate_id']}.reviewer_checks",
|
|
len(item["reviewer_checks"]),
|
|
18,
|
|
)
|
|
assert_equal(
|
|
f"k8s_argocd_change_evidence_acceptance.{item['change_evidence_candidate_id']}.outcome_lanes",
|
|
len(item["outcome_lanes"]),
|
|
8,
|
|
)
|
|
assert_equal(
|
|
f"k8s_argocd_change_evidence_acceptance.{item['change_evidence_candidate_id']}.blocked_actions",
|
|
len(item["blocked_actions"]),
|
|
28,
|
|
)
|
|
assert_true(
|
|
f"k8s_argocd_change_evidence_acceptance.{item['change_evidence_candidate_id']}.not_approval",
|
|
item["not_approval"],
|
|
)
|
|
for false_key in [
|
|
"change_evidence_received",
|
|
"change_evidence_accepted",
|
|
"change_evidence_rejected",
|
|
"change_evidence_quarantined",
|
|
"supplement_requested",
|
|
"proposed_commit_ref_accepted",
|
|
"rendered_manifest_diff_accepted",
|
|
"argocd_application_readback_accepted",
|
|
"argocd_sync_revision_accepted",
|
|
"health_before_accepted",
|
|
"health_after_accepted",
|
|
"rollout_status_accepted",
|
|
"service_route_smoke_accepted",
|
|
"metrics_alert_accepted",
|
|
"secret_metadata_parity_accepted",
|
|
"blast_radius_accepted",
|
|
"maintenance_window_accepted",
|
|
"rollback_revision_accepted",
|
|
"postcheck_owner_accepted",
|
|
"cross_project_sync_accepted",
|
|
"runtime_approval_package_ready",
|
|
"argocd_api_read_authorized",
|
|
"argocd_api_read_executed",
|
|
"argocd_sync_authorized",
|
|
"argocd_sync_executed",
|
|
"kubectl_action_authorized",
|
|
"kubectl_action_executed",
|
|
"helm_upgrade_authorized",
|
|
"helm_upgrade_executed",
|
|
"live_cluster_read_authorized",
|
|
"live_cluster_read_executed",
|
|
"network_policy_apply_authorized",
|
|
"nodeport_change_authorized",
|
|
"rbac_change_authorized",
|
|
"secret_value_collection_allowed",
|
|
"production_write_authorized",
|
|
"runtime_gate",
|
|
"action_buttons_allowed",
|
|
]:
|
|
assert_false(
|
|
f"k8s_argocd_change_evidence_acceptance.{item['change_evidence_candidate_id']}.{false_key}",
|
|
item[false_key],
|
|
)
|
|
assert_equal(
|
|
"cd_runner_secret_injection_change_evidence_acceptance.schema",
|
|
cd_runner_secret_injection_change_evidence_acceptance["schema_version"],
|
|
"cd_runner_secret_injection_change_evidence_acceptance_v1",
|
|
)
|
|
assert_equal(
|
|
"cd_runner_secret_injection_change_evidence_acceptance.status",
|
|
cd_runner_secret_injection_change_evidence_acceptance["status"],
|
|
"change_evidence_acceptance_ledger_ready_no_runtime_action",
|
|
)
|
|
assert_equal(
|
|
"cd_runner_secret_injection_change_evidence_acceptance.mode",
|
|
cd_runner_secret_injection_change_evidence_acceptance["mode"],
|
|
"metadata_only_no_secret_value_no_workflow_change",
|
|
)
|
|
expected_cd_runner_secret_injection_summary = {
|
|
"change_evidence_candidate_count": 5,
|
|
"c0_change_evidence_candidate_count": 4,
|
|
"c1_change_evidence_candidate_count": 1,
|
|
"write_capable_candidate_count": 5,
|
|
"local_workflow_file_count": 33,
|
|
"gitea_workflow_file_count": 12,
|
|
"github_workflow_file_count": 21,
|
|
"local_referenced_secret_name_count": 42,
|
|
"runner_label_count": 5,
|
|
"export_request_count": 9,
|
|
"export_lane_count": 5,
|
|
"owner_response_template_count": 5,
|
|
"owner_response_received_count": 0,
|
|
"owner_response_accepted_count": 0,
|
|
"required_evidence_field_count": 19,
|
|
"reviewer_check_count": 19,
|
|
"outcome_lane_count": 8,
|
|
"blocked_action_count": 32,
|
|
"change_evidence_received_count": 0,
|
|
"change_evidence_accepted_count": 0,
|
|
"workflow_diff_accepted_count": 0,
|
|
"runner_attestation_accepted_count": 0,
|
|
"secret_name_parity_accepted_count": 0,
|
|
"secret_injection_route_accepted_count": 0,
|
|
"deploy_marker_readback_accepted_count": 0,
|
|
"guard_result_accepted_count": 0,
|
|
"postcheck_evidence_accepted_count": 0,
|
|
"runtime_approval_package_ready_count": 0,
|
|
"runtime_gate_count": 0,
|
|
"action_button_count": 0,
|
|
"secret_metadata_coverage_percent_before_acceptance": 66,
|
|
"secret_metadata_coverage_percent_after_acceptance": 68,
|
|
"gitea_workflow_runner_coverage_percent_before_acceptance": 70,
|
|
"gitea_workflow_runner_coverage_percent_after_acceptance": 72,
|
|
}
|
|
for key, expected in expected_cd_runner_secret_injection_summary.items():
|
|
assert_equal(
|
|
f"cd_runner_secret_injection_change_evidence_acceptance.summary.{key}",
|
|
cd_runner_secret_injection_change_evidence_acceptance["summary"][key],
|
|
expected,
|
|
)
|
|
for key, value in cd_runner_secret_injection_change_evidence_acceptance["execution_boundaries"].items():
|
|
if key == "not_authorization":
|
|
assert_true(f"cd_runner_secret_injection_change_evidence_acceptance.execution_boundaries.{key}", value)
|
|
else:
|
|
assert_false(f"cd_runner_secret_injection_change_evidence_acceptance.execution_boundaries.{key}", value)
|
|
expected_cd_runner_secret_injection_ids = [
|
|
"cd_runner_secret_injection:cd_pipeline_deploy_marker_and_k8s_secret_injection",
|
|
"cd_runner_secret_injection:code_review_pipeline_secret_and_notification_surface",
|
|
"cd_runner_secret_injection:deploy_alerts_and_monitoring_route",
|
|
"cd_runner_secret_injection:runner_label_and_executor_attestation",
|
|
"cd_runner_secret_injection:repository_secret_name_parity_and_injection_owner",
|
|
]
|
|
assert_equal(
|
|
"cd_runner_secret_injection_change_evidence_acceptance.candidate_ids",
|
|
[
|
|
item["change_evidence_candidate_id"]
|
|
for item in cd_runner_secret_injection_change_evidence_acceptance["change_evidence_candidates"]
|
|
],
|
|
expected_cd_runner_secret_injection_ids,
|
|
)
|
|
assert_equal(
|
|
"cd_runner_secret_injection_change_evidence_acceptance.reviewer_checks.count",
|
|
len(cd_runner_secret_injection_change_evidence_acceptance["reviewer_checks"]),
|
|
19,
|
|
)
|
|
assert_equal(
|
|
"cd_runner_secret_injection_change_evidence_acceptance.outcome_lanes.count",
|
|
len(cd_runner_secret_injection_change_evidence_acceptance["outcome_lanes"]),
|
|
8,
|
|
)
|
|
assert_equal(
|
|
"cd_runner_secret_injection_change_evidence_acceptance.blocked_actions.count",
|
|
len(cd_runner_secret_injection_change_evidence_acceptance["blocked_actions"]),
|
|
32,
|
|
)
|
|
for item in cd_runner_secret_injection_change_evidence_acceptance["change_evidence_candidates"]:
|
|
assert_equal(
|
|
f"cd_runner_secret_injection_change_evidence_acceptance.{item['change_evidence_candidate_id']}.change_evidence_fields",
|
|
len(item["change_evidence_fields"]),
|
|
22,
|
|
)
|
|
assert_equal(
|
|
f"cd_runner_secret_injection_change_evidence_acceptance.{item['change_evidence_candidate_id']}.required_evidence_fields",
|
|
len(item["required_evidence_fields"]),
|
|
19,
|
|
)
|
|
assert_equal(
|
|
f"cd_runner_secret_injection_change_evidence_acceptance.{item['change_evidence_candidate_id']}.reviewer_checks",
|
|
len(item["reviewer_checks"]),
|
|
19,
|
|
)
|
|
assert_equal(
|
|
f"cd_runner_secret_injection_change_evidence_acceptance.{item['change_evidence_candidate_id']}.outcome_lanes",
|
|
len(item["outcome_lanes"]),
|
|
8,
|
|
)
|
|
assert_equal(
|
|
f"cd_runner_secret_injection_change_evidence_acceptance.{item['change_evidence_candidate_id']}.blocked_actions",
|
|
len(item["blocked_actions"]),
|
|
32,
|
|
)
|
|
assert_true(
|
|
f"cd_runner_secret_injection_change_evidence_acceptance.{item['change_evidence_candidate_id']}.not_approval",
|
|
item["not_approval"],
|
|
)
|
|
for false_key in [
|
|
"change_evidence_received",
|
|
"change_evidence_accepted",
|
|
"change_evidence_rejected",
|
|
"change_evidence_quarantined",
|
|
"workflow_diff_accepted",
|
|
"runner_attestation_accepted",
|
|
"secret_name_parity_accepted",
|
|
"secret_injection_route_accepted",
|
|
"deploy_marker_readback_accepted",
|
|
"guard_result_accepted",
|
|
"postcheck_evidence_accepted",
|
|
"runtime_approval_package_ready",
|
|
"runtime_execution_authorized",
|
|
"workflow_modification_authorized",
|
|
"webhook_modification_authorized",
|
|
"runner_change_authorized",
|
|
"deploy_key_change_authorized",
|
|
"branch_protection_change_authorized",
|
|
"codeowners_change_authorized",
|
|
"repo_secret_change_authorized",
|
|
"secret_value_collection_allowed",
|
|
"secret_hash_collection_allowed",
|
|
"partial_token_collection_allowed",
|
|
"secret_rotation_authorized",
|
|
"secret_store_read_authorized",
|
|
"secret_injection_change_authorized",
|
|
"step_env_secret_allowed",
|
|
"github_hosted_runner_enable_authorized",
|
|
"gitea_action_dispatch_authorized",
|
|
"cd_pipeline_run_authorized",
|
|
"deploy_marker_write_authorized",
|
|
"k8s_secret_injection_authorized",
|
|
"argocd_sync_authorized",
|
|
"production_deploy_authorized",
|
|
"refs_sync_authorized",
|
|
"force_push_authorized",
|
|
"github_primary_switch_authorized",
|
|
"disable_gitea_authorized",
|
|
"runtime_gate",
|
|
"action_buttons_allowed",
|
|
]:
|
|
assert_false(
|
|
f"cd_runner_secret_injection_change_evidence_acceptance.{item['change_evidence_candidate_id']}.{false_key}",
|
|
item[false_key],
|
|
)
|
|
assert_equal(
|
|
"public_runtime_config_change_evidence_acceptance.schema",
|
|
public_runtime_config_change_evidence_acceptance["schema_version"],
|
|
"public_runtime_config_change_evidence_acceptance_v1",
|
|
)
|
|
assert_equal(
|
|
"public_runtime_config_change_evidence_acceptance.status",
|
|
public_runtime_config_change_evidence_acceptance["status"],
|
|
"change_evidence_acceptance_ledger_ready_no_runtime_action",
|
|
)
|
|
assert_equal(
|
|
"public_runtime_config_change_evidence_acceptance.mode",
|
|
public_runtime_config_change_evidence_acceptance["mode"],
|
|
"metadata_only_no_secret_no_route_change_no_deploy",
|
|
)
|
|
expected_public_runtime_config_summary = {
|
|
"change_evidence_candidate_count": 6,
|
|
"c0_change_evidence_candidate_count": 5,
|
|
"c1_change_evidence_candidate_count": 1,
|
|
"write_capable_candidate_count": 6,
|
|
"source_ref_count": 20,
|
|
"existing_source_ref_count": 20,
|
|
"required_evidence_field_count": 21,
|
|
"reviewer_check_count": 21,
|
|
"outcome_lane_count": 8,
|
|
"blocked_action_count": 32,
|
|
"change_evidence_received_count": 0,
|
|
"change_evidence_accepted_count": 0,
|
|
"route_scope_accepted_count": 0,
|
|
"admin_auth_boundary_accepted_count": 0,
|
|
"api_contract_readback_accepted_count": 0,
|
|
"cors_origin_diff_accepted_count": 0,
|
|
"frontend_env_diff_accepted_count": 0,
|
|
"i18n_redaction_review_accepted_count": 0,
|
|
"webhook_callback_owner_accepted_count": 0,
|
|
"desktop_mobile_smoke_accepted_count": 0,
|
|
"sensitive_string_scan_accepted_count": 0,
|
|
"postcheck_evidence_accepted_count": 0,
|
|
"runtime_approval_package_ready_count": 0,
|
|
"runtime_gate_count": 0,
|
|
"action_button_count": 0,
|
|
"public_admin_api_runtime_config_coverage_percent_before_acceptance": 62,
|
|
"public_admin_api_runtime_config_coverage_percent_after_acceptance": 64,
|
|
}
|
|
for key, expected in expected_public_runtime_config_summary.items():
|
|
assert_equal(
|
|
f"public_runtime_config_change_evidence_acceptance.summary.{key}",
|
|
public_runtime_config_change_evidence_acceptance["summary"][key],
|
|
expected,
|
|
)
|
|
for key, value in public_runtime_config_change_evidence_acceptance["execution_boundaries"].items():
|
|
if key == "not_authorization":
|
|
assert_true(f"public_runtime_config_change_evidence_acceptance.execution_boundaries.{key}", value)
|
|
else:
|
|
assert_false(f"public_runtime_config_change_evidence_acceptance.execution_boundaries.{key}", value)
|
|
expected_public_runtime_config_ids = [
|
|
"public_runtime_config_change_evidence:public_product_route_and_i18n_redaction",
|
|
"public_runtime_config_change_evidence:admin_auth_and_operator_console_boundary",
|
|
"public_runtime_config_change_evidence:api_cors_and_public_url_runtime_config",
|
|
"public_runtime_config_change_evidence:frontend_env_and_sentry_tunnel_runtime_config",
|
|
"public_runtime_config_change_evidence:webhook_callback_and_notification_runtime_config",
|
|
"public_runtime_config_change_evidence:cross_product_runtime_route_scope",
|
|
]
|
|
assert_equal(
|
|
"public_runtime_config_change_evidence_acceptance.candidate_ids",
|
|
[
|
|
item["change_evidence_candidate_id"]
|
|
for item in public_runtime_config_change_evidence_acceptance["change_evidence_candidates"]
|
|
],
|
|
expected_public_runtime_config_ids,
|
|
)
|
|
expected_public_runtime_config_check_ids = [
|
|
"change_ref_present",
|
|
"affected_route_refs_present",
|
|
"public_url_not_internal_ip",
|
|
"admin_auth_boundary_called_out",
|
|
"api_contract_readback_present",
|
|
"cors_origin_diff_ref_only",
|
|
"frontend_env_diff_ref_present",
|
|
"i18n_redaction_review_present",
|
|
"webhook_callback_owner_present",
|
|
"desktop_mobile_smoke_present",
|
|
"api_health_readback_present",
|
|
"sensitive_string_scan_present",
|
|
"console_error_scan_present",
|
|
"no_secret_value_or_cookie",
|
|
"security_header_or_cookie_impact_called_out",
|
|
"blast_radius_present",
|
|
"maintenance_window_present",
|
|
"rollback_owner_present",
|
|
"postcheck_evidence_present",
|
|
"no_runtime_action_claim",
|
|
"cross_project_sync_noted",
|
|
]
|
|
assert_equal(
|
|
"public_runtime_config_change_evidence_acceptance.reviewer_check_ids",
|
|
[item["check_id"] for item in public_runtime_config_change_evidence_acceptance["reviewer_checks"]],
|
|
expected_public_runtime_config_check_ids,
|
|
)
|
|
expected_public_runtime_config_outcome_ids = [
|
|
"waiting_change_evidence",
|
|
"quarantine_sensitive_payload",
|
|
"reject_unredacted_or_runtime_claim",
|
|
"request_supplement",
|
|
"ready_for_reviewer_acceptance",
|
|
"ready_for_runtime_approval_package",
|
|
"waiting_maintenance_window",
|
|
"waiting_runtime_gate",
|
|
]
|
|
assert_equal(
|
|
"public_runtime_config_change_evidence_acceptance.outcome_lane_ids",
|
|
[item["lane_id"] for item in public_runtime_config_change_evidence_acceptance["outcome_lanes"]],
|
|
expected_public_runtime_config_outcome_ids,
|
|
)
|
|
expected_public_runtime_config_blocked_actions = [
|
|
"change_public_route",
|
|
"change_admin_route",
|
|
"change_api_route",
|
|
"change_cors_origin",
|
|
"modify_next_public_env",
|
|
"expose_internal_ip",
|
|
"expose_repo_slug",
|
|
"expose_owner_namespace",
|
|
"expose_secret_value",
|
|
"bypass_auth",
|
|
"change_callback_url",
|
|
"change_webhook_secret",
|
|
"modify_middleware_auth",
|
|
"disable_csrf",
|
|
"disable_rate_limit",
|
|
"change_cookie_policy",
|
|
"change_security_headers",
|
|
"publish_internal_transcript",
|
|
"publish_internal_status_code",
|
|
"deploy_frontend",
|
|
"deploy_api",
|
|
"rewrite_nginx_route",
|
|
"change_public_url",
|
|
"change_openapi_contract",
|
|
"mutate_database",
|
|
"run_migration",
|
|
"send_webhook",
|
|
"active_scan",
|
|
"enable_action_button",
|
|
"production_deploy",
|
|
"force_push",
|
|
"switch_github_primary",
|
|
]
|
|
assert_equal(
|
|
"public_runtime_config_change_evidence_acceptance.blocked_actions",
|
|
public_runtime_config_change_evidence_acceptance["blocked_actions"],
|
|
expected_public_runtime_config_blocked_actions,
|
|
)
|
|
for item in public_runtime_config_change_evidence_acceptance["change_evidence_candidates"]:
|
|
assert_equal(
|
|
f"public_runtime_config_change_evidence_acceptance.{item['change_evidence_candidate_id']}.change_evidence_fields",
|
|
len(item["change_evidence_fields"]),
|
|
24,
|
|
)
|
|
assert_equal(
|
|
f"public_runtime_config_change_evidence_acceptance.{item['change_evidence_candidate_id']}.required_evidence_fields",
|
|
len(item["required_evidence_fields"]),
|
|
21,
|
|
)
|
|
assert_equal(
|
|
f"public_runtime_config_change_evidence_acceptance.{item['change_evidence_candidate_id']}.reviewer_checks",
|
|
len(item["reviewer_checks"]),
|
|
21,
|
|
)
|
|
assert_equal(
|
|
f"public_runtime_config_change_evidence_acceptance.{item['change_evidence_candidate_id']}.outcome_lanes",
|
|
len(item["outcome_lanes"]),
|
|
8,
|
|
)
|
|
assert_equal(
|
|
f"public_runtime_config_change_evidence_acceptance.{item['change_evidence_candidate_id']}.blocked_actions",
|
|
len(item["blocked_actions"]),
|
|
32,
|
|
)
|
|
assert_true(
|
|
f"public_runtime_config_change_evidence_acceptance.{item['change_evidence_candidate_id']}.not_approval",
|
|
item["not_approval"],
|
|
)
|
|
for false_key in [
|
|
"change_evidence_received",
|
|
"change_evidence_accepted",
|
|
"change_evidence_rejected",
|
|
"change_evidence_quarantined",
|
|
"route_scope_accepted",
|
|
"admin_auth_boundary_accepted",
|
|
"api_contract_readback_accepted",
|
|
"cors_origin_diff_accepted",
|
|
"frontend_env_diff_accepted",
|
|
"i18n_redaction_review_accepted",
|
|
"webhook_callback_owner_accepted",
|
|
"desktop_mobile_smoke_accepted",
|
|
"sensitive_string_scan_accepted",
|
|
"postcheck_evidence_accepted",
|
|
"runtime_approval_package_ready",
|
|
"runtime_execution_authorized",
|
|
"runtime_config_change_authorized",
|
|
"public_route_change_authorized",
|
|
"admin_route_change_authorized",
|
|
"api_route_change_authorized",
|
|
"cors_change_authorized",
|
|
"frontend_env_change_authorized",
|
|
"middleware_auth_change_authorized",
|
|
"callback_url_change_authorized",
|
|
"webhook_receiver_change_authorized",
|
|
"webhook_secret_change_authorized",
|
|
"security_header_change_authorized",
|
|
"cookie_policy_change_authorized",
|
|
"csrf_disable_authorized",
|
|
"rate_limit_disable_authorized",
|
|
"api_contract_change_authorized",
|
|
"i18n_public_text_internal_identity_allowed",
|
|
"internal_ip_exposure_allowed",
|
|
"repo_namespace_exposure_allowed",
|
|
"owner_namespace_exposure_allowed",
|
|
"internal_status_code_exposure_allowed",
|
|
"internal_transcript_exposure_allowed",
|
|
"secret_value_collection_allowed",
|
|
"secret_hash_collection_allowed",
|
|
"partial_token_collection_allowed",
|
|
"raw_payload_storage_allowed",
|
|
"desktop_mobile_smoke_authorized",
|
|
"route_smoke_authorized",
|
|
"production_deploy_authorized",
|
|
"database_migration_authorized",
|
|
"force_push_authorized",
|
|
"github_primary_switch_authorized",
|
|
"runtime_gate",
|
|
"action_buttons_allowed",
|
|
]:
|
|
assert_false(
|
|
f"public_runtime_config_change_evidence_acceptance.{item['change_evidence_candidate_id']}.{false_key}",
|
|
item[false_key],
|
|
)
|
|
assert_equal(
|
|
"iwooos_projection.summary.domain_tls_certbot_inventory_managed_domain_count",
|
|
iwooos_projection["summary"]["domain_tls_certbot_inventory_managed_domain_count"],
|
|
14,
|
|
)
|
|
assert_equal(
|
|
"iwooos_projection.summary.domain_tls_certbot_inventory_owner_confirmation_required_count",
|
|
iwooos_projection["summary"]["domain_tls_certbot_inventory_owner_confirmation_required_count"],
|
|
4,
|
|
)
|
|
assert_equal(
|
|
"iwooos_projection.summary.domain_tls_certbot_inventory_runtime_gate_count",
|
|
iwooos_projection["summary"]["domain_tls_certbot_inventory_runtime_gate_count"],
|
|
0,
|
|
)
|
|
for source_path in [
|
|
"docs/security/domain-tls-certbot-inventory.snapshot.json",
|
|
"docs/security/DOMAIN-TLS-CERTBOT-INVENTORY.md",
|
|
"docs/schemas/domain_tls_certbot_inventory_v1.schema.json",
|
|
]:
|
|
assert_contains("iwooos_projection.source_paths", iwooos_projection["source_paths"], source_path)
|
|
assert_text_contains(
|
|
"iwooos_page.domain_tls_certbot_inventory_testid",
|
|
iwooos_projection_page,
|
|
'data-testid="iwooos-domain-tls-certbot-inventory-board"',
|
|
)
|
|
assert_text_contains(
|
|
"iwooos_page.domain_tls_certbot_inventory_boundary_testid",
|
|
iwooos_projection_page,
|
|
'data-testid="iwooos-domain-tls-certbot-inventory-boundaries"',
|
|
)
|
|
assert_text_contains(
|
|
"iwooos_page.domain_tls_certbot_inventory_component",
|
|
iwooos_projection_page,
|
|
"IwoooSDomainTlsCertbotInventoryBoard",
|
|
)
|
|
for text in [
|
|
"domain_tls_certbot_inventory_frontstage_summary_count=4",
|
|
"domain_tls_certbot_inventory_frontstage_item_count=5",
|
|
"domain_tls_certbot_inventory_source_config_count=3",
|
|
"domain_tls_certbot_inventory_managed_domain_count=14",
|
|
"domain_tls_certbot_inventory_unique_certificate_path_count=10",
|
|
"domain_tls_certbot_inventory_acme_challenge_domain_count=7",
|
|
"domain_tls_certbot_inventory_owner_confirmation_required_count=4",
|
|
"domain_tls_certbot_inventory_admin_route_domain_count=1",
|
|
"domain_tls_certbot_inventory_websocket_route_domain_count=6",
|
|
"domain_tls_certbot_inventory_request_sent_count=0",
|
|
"domain_tls_certbot_inventory_received_response_count=0",
|
|
"domain_tls_certbot_inventory_accepted_response_count=0",
|
|
"domain_tls_certbot_inventory_runtime_gate_count=0",
|
|
"domain_tls_certbot_inventory_live_tls_probe_executed=false",
|
|
"domain_tls_certbot_inventory_dns_change_executed=false",
|
|
"domain_tls_certbot_inventory_certbot_renew_executed=false",
|
|
"domain_tls_certbot_inventory_nginx_reload_executed=false",
|
|
"domain_tls_certbot_inventory_action_buttons_allowed=false",
|
|
"runtime_execution_authorized=false",
|
|
"active_runtime_gate_count=0",
|
|
"action_buttons_allowed=false",
|
|
"not_authorization=true",
|
|
"secret_value_collection_allowed=false",
|
|
]:
|
|
assert_text_contains(
|
|
"iwooos_page.domain_tls_certbot_inventory_boundary",
|
|
iwooos_projection_page,
|
|
text,
|
|
)
|
|
assert_contains(
|
|
"web_messages.zh-TW.iwooos.domainTlsCertbotInventory",
|
|
list(web_messages_zh["iwooos"].keys()),
|
|
"domainTlsCertbotInventory",
|
|
)
|
|
assert_contains(
|
|
"web_messages.en.iwooos.domainTlsCertbotInventory",
|
|
list(web_messages_en["iwooos"].keys()),
|
|
"domainTlsCertbotInventory",
|
|
)
|
|
for key in [
|
|
"eyebrow",
|
|
"title",
|
|
"subtitle",
|
|
"checkLabel",
|
|
"stateLabel",
|
|
"boundaryTitle",
|
|
"boundaryIntro",
|
|
"summary",
|
|
"items",
|
|
]:
|
|
assert_contains(
|
|
"web_messages.zh-TW.iwooos.domainTlsCertbotInventory.keys",
|
|
list(web_messages_zh["iwooos"]["domainTlsCertbotInventory"].keys()),
|
|
key,
|
|
)
|
|
assert_contains(
|
|
"web_messages.en.iwooos.domainTlsCertbotInventory.keys",
|
|
list(web_messages_en["iwooos"]["domainTlsCertbotInventory"].keys()),
|
|
key,
|
|
)
|
|
for key in ["domains", "certPaths", "ownerConfirm", "runtimeGate"]:
|
|
assert_contains(
|
|
"web_messages.zh-TW.iwooos.domainTlsCertbotInventory.summary",
|
|
list(web_messages_zh["iwooos"]["domainTlsCertbotInventory"]["summary"].keys()),
|
|
key,
|
|
)
|
|
assert_contains(
|
|
"web_messages.en.iwooos.domainTlsCertbotInventory.summary",
|
|
list(web_messages_en["iwooos"]["domainTlsCertbotInventory"]["summary"].keys()),
|
|
key,
|
|
)
|
|
for key in ["repoSource", "domainMap", "acmeRoutes", "ownerConfirmation", "runtimeBoundary"]:
|
|
assert_contains(
|
|
"web_messages.zh-TW.iwooos.domainTlsCertbotInventory.items",
|
|
list(web_messages_zh["iwooos"]["domainTlsCertbotInventory"]["items"].keys()),
|
|
key,
|
|
)
|
|
assert_contains(
|
|
"web_messages.en.iwooos.domainTlsCertbotInventory.items",
|
|
list(web_messages_en["iwooos"]["domainTlsCertbotInventory"]["items"].keys()),
|
|
key,
|
|
)
|
|
assert_text_contains(
|
|
"iwooos_page.three_axis_product_progress_testid",
|
|
iwooos_projection_page,
|
|
'data-testid="iwooos-three-axis-product-progress-board"',
|
|
)
|
|
assert_text_contains(
|
|
"iwooos_page.three_axis_product_progress_component",
|
|
iwooos_projection_page,
|
|
"IwoooSThreeAxisProductProgressBoard",
|
|
)
|
|
for text in [
|
|
"iwooos_three_axis_progress_headline_percent=64",
|
|
"iwooos_three_axis_progress_framework_percent=92",
|
|
"iwooos_three_axis_progress_runtime_percent=40-45",
|
|
"iwooos_three_axis_progress_product_scope_count=8",
|
|
"iwooos_three_axis_progress_all_products_read_only=true",
|
|
"iwooos_three_axis_progress_vibework_read_only_in_scope=true",
|
|
"iwooos_three_axis_progress_vibework_runtime_ready=false",
|
|
"iwooos_three_axis_progress_agent_bounty_read_only_in_scope=true",
|
|
"iwooos_three_axis_progress_agent_bounty_runtime_ready=false",
|
|
"iwooos_three_axis_progress_runtime_product_rollout_count=0",
|
|
"iwooos_three_axis_progress_first_runtime_gate=s4_9_owner_response_accepted",
|
|
"iwooos_three_axis_progress_owner_response_accepted_count=0",
|
|
"iwooos_three_axis_progress_active_runtime_gate_count=0",
|
|
"iwooos_three_axis_progress_production_deploy_count=1",
|
|
"iwooos_three_axis_progress_kali_execution_authorized=false",
|
|
"iwooos_three_axis_progress_source_control_mutation_authorized=false",
|
|
"runtime_execution_authorized=false",
|
|
"active_runtime_gate_count=0",
|
|
"action_buttons_allowed=false",
|
|
"not_authorization=true",
|
|
"secret_value_collection_allowed=false",
|
|
"repo_creation_authorized=false",
|
|
"refs_sync_authorized=false",
|
|
"workflow_modification_authorized=false",
|
|
"github_primary_switch_authorized=false",
|
|
"gitea_disablement_authorized=false",
|
|
]:
|
|
assert_text_contains(
|
|
"iwooos_page.three_axis_product_progress_boundary",
|
|
iwooos_projection_page,
|
|
text,
|
|
)
|
|
assert_contains(
|
|
"web_messages.zh-TW.iwooos.threeAxisProductProgress",
|
|
list(web_messages_zh["iwooos"].keys()),
|
|
"threeAxisProductProgress",
|
|
)
|
|
assert_contains(
|
|
"web_messages.en.iwooos.threeAxisProductProgress",
|
|
list(web_messages_en["iwooos"].keys()),
|
|
"threeAxisProductProgress",
|
|
)
|
|
for key in [
|
|
"title",
|
|
"subtitle",
|
|
"summary",
|
|
"items",
|
|
"scopeLabel",
|
|
"currentLabel",
|
|
"nextLabel",
|
|
"boundaryLabel",
|
|
"boundaryTitle",
|
|
"boundaryIntro",
|
|
]:
|
|
assert_contains(
|
|
"web_messages.zh-TW.iwooos.threeAxisProductProgress.keys",
|
|
list(web_messages_zh["iwooos"]["threeAxisProductProgress"].keys()),
|
|
key,
|
|
)
|
|
assert_contains(
|
|
"web_messages.en.iwooos.threeAxisProductProgress.keys",
|
|
list(web_messages_en["iwooos"]["threeAxisProductProgress"].keys()),
|
|
key,
|
|
)
|
|
for key in ["headline", "framework", "runtime", "products"]:
|
|
assert_contains(
|
|
"web_messages.zh-TW.iwooos.threeAxisProductProgress.summary",
|
|
list(web_messages_zh["iwooos"]["threeAxisProductProgress"]["summary"].keys()),
|
|
key,
|
|
)
|
|
assert_contains(
|
|
"web_messages.en.iwooos.threeAxisProductProgress.summary",
|
|
list(web_messages_en["iwooos"]["threeAxisProductProgress"]["summary"].keys()),
|
|
key,
|
|
)
|
|
for key in [
|
|
"awoooiCore",
|
|
"websites",
|
|
"sourceControl",
|
|
"hosts",
|
|
"toolsMonitoring",
|
|
"vibeWork",
|
|
"agentBountyProtocol",
|
|
"futureProducts",
|
|
]:
|
|
assert_contains(
|
|
"web_messages.zh-TW.iwooos.threeAxisProductProgress.items",
|
|
list(web_messages_zh["iwooos"]["threeAxisProductProgress"]["items"].keys()),
|
|
key,
|
|
)
|
|
assert_contains(
|
|
"web_messages.en.iwooos.threeAxisProductProgress.items",
|
|
list(web_messages_en["iwooos"]["threeAxisProductProgress"]["items"].keys()),
|
|
key,
|
|
)
|
|
assert_text_contains(
|
|
"iwooos_page.product_rollout_wave_ledger_testid",
|
|
iwooos_projection_page,
|
|
'data-testid="iwooos-product-rollout-wave-ledger-board"',
|
|
)
|
|
assert_text_contains(
|
|
"iwooos_page.product_rollout_wave_ledger_component",
|
|
iwooos_projection_page,
|
|
"IwoooSProductRolloutWaveLedgerBoard",
|
|
)
|
|
for text in [
|
|
"iwooos_product_rollout_wave_count=8",
|
|
"iwooos_product_rollout_all_products_count=8",
|
|
"iwooos_product_rollout_current_wave=read_only_visibility",
|
|
"iwooos_product_rollout_vibework_project_wave=read_only_visibility",
|
|
"iwooos_product_rollout_vibework_runtime_ready=false",
|
|
"iwooos_product_rollout_agent_bounty_project_wave=read_only_visibility",
|
|
"iwooos_product_rollout_agent_bounty_runtime_ready=false",
|
|
"iwooos_product_rollout_runtime_wave_count=0",
|
|
"iwooos_product_rollout_enforcement_wave_count=0",
|
|
"iwooos_product_rollout_owner_response_accepted_count=0",
|
|
"iwooos_product_rollout_active_runtime_gate_count=0",
|
|
"iwooos_product_rollout_first_runtime_candidate=s4_9_owner_response_accepted",
|
|
"iwooos_product_rollout_all_products_read_only=true",
|
|
"iwooos_product_rollout_public_secret_exposure_allowed=false",
|
|
"iwooos_product_rollout_kali_execution_authorized=false",
|
|
"iwooos_product_rollout_source_control_mutation_authorized=false",
|
|
"runtime_execution_authorized=false",
|
|
"active_runtime_gate_count=0",
|
|
"action_buttons_allowed=false",
|
|
"not_authorization=true",
|
|
"secret_value_collection_allowed=false",
|
|
"repo_creation_authorized=false",
|
|
"refs_sync_authorized=false",
|
|
"workflow_modification_authorized=false",
|
|
"github_primary_switch_authorized=false",
|
|
"gitea_disablement_authorized=false",
|
|
]:
|
|
assert_text_contains(
|
|
"iwooos_page.product_rollout_wave_ledger_boundary",
|
|
iwooos_projection_page,
|
|
text,
|
|
)
|
|
assert_contains(
|
|
"web_messages.zh-TW.iwooos.productRolloutWaveLedger",
|
|
list(web_messages_zh["iwooos"].keys()),
|
|
"productRolloutWaveLedger",
|
|
)
|
|
assert_contains(
|
|
"web_messages.en.iwooos.productRolloutWaveLedger",
|
|
list(web_messages_en["iwooos"].keys()),
|
|
"productRolloutWaveLedger",
|
|
)
|
|
for key in [
|
|
"title",
|
|
"subtitle",
|
|
"summary",
|
|
"items",
|
|
"waveLabel",
|
|
"allowedLabel",
|
|
"beforeRuntimeLabel",
|
|
"forbiddenLabel",
|
|
"boundaryTitle",
|
|
"boundaryIntro",
|
|
]:
|
|
assert_contains(
|
|
"web_messages.zh-TW.iwooos.productRolloutWaveLedger.keys",
|
|
list(web_messages_zh["iwooos"]["productRolloutWaveLedger"].keys()),
|
|
key,
|
|
)
|
|
assert_contains(
|
|
"web_messages.en.iwooos.productRolloutWaveLedger.keys",
|
|
list(web_messages_en["iwooos"]["productRolloutWaveLedger"].keys()),
|
|
key,
|
|
)
|
|
for key in ["waves", "current", "runtime", "nextGate"]:
|
|
assert_contains(
|
|
"web_messages.zh-TW.iwooos.productRolloutWaveLedger.summary",
|
|
list(web_messages_zh["iwooos"]["productRolloutWaveLedger"]["summary"].keys()),
|
|
key,
|
|
)
|
|
assert_contains(
|
|
"web_messages.en.iwooos.productRolloutWaveLedger.summary",
|
|
list(web_messages_en["iwooos"]["productRolloutWaveLedger"]["summary"].keys()),
|
|
key,
|
|
)
|
|
for key in [
|
|
"coreProduct",
|
|
"publicSurfaces",
|
|
"sourceControl",
|
|
"hostCoverage",
|
|
"monitoringTools",
|
|
"vibeWorkProject",
|
|
"agentBountyProtocol",
|
|
"futureTemplate",
|
|
]:
|
|
assert_contains(
|
|
"web_messages.zh-TW.iwooos.productRolloutWaveLedger.items",
|
|
list(web_messages_zh["iwooos"]["productRolloutWaveLedger"]["items"].keys()),
|
|
key,
|
|
)
|
|
assert_contains(
|
|
"web_messages.en.iwooos.productRolloutWaveLedger.items",
|
|
list(web_messages_en["iwooos"]["productRolloutWaveLedger"]["items"].keys()),
|
|
key,
|
|
)
|
|
assert_text_contains(
|
|
"iwooos_page.product_rollout_acceptance_gates_testid",
|
|
iwooos_projection_page,
|
|
'data-testid="iwooos-product-rollout-acceptance-gates-board"',
|
|
)
|
|
assert_text_contains(
|
|
"iwooos_page.product_rollout_acceptance_gates_component",
|
|
iwooos_projection_page,
|
|
"IwoooSProductRolloutAcceptanceGatesBoard",
|
|
)
|
|
for text in [
|
|
"iwooos_product_rollout_acceptance_gate_count=6",
|
|
"iwooos_product_rollout_acceptance_current_stage=read_only_acceptance",
|
|
"iwooos_product_rollout_acceptance_passed_count=0",
|
|
"iwooos_product_rollout_acceptance_failed_count=0",
|
|
"iwooos_product_rollout_acceptance_owner_response_received_count=0",
|
|
"iwooos_product_rollout_acceptance_owner_response_accepted_count=0",
|
|
"iwooos_product_rollout_acceptance_redacted_evidence_pointer_count=0",
|
|
"iwooos_product_rollout_acceptance_source_control_proof_count=0",
|
|
"iwooos_product_rollout_acceptance_host_safety_window_approved=false",
|
|
"iwooos_product_rollout_acceptance_rollback_disable_ready=false",
|
|
"iwooos_product_rollout_acceptance_runtime_gate_open=false",
|
|
"iwooos_product_rollout_acceptance_runtime_wave_count=0",
|
|
"iwooos_product_rollout_acceptance_enforcement_wave_count=0",
|
|
"iwooos_product_rollout_acceptance_public_secret_exposure_allowed=false",
|
|
"iwooos_product_rollout_acceptance_kali_execution_authorized=false",
|
|
"iwooos_product_rollout_acceptance_source_control_mutation_authorized=false",
|
|
"runtime_execution_authorized=false",
|
|
"active_runtime_gate_count=0",
|
|
"action_buttons_allowed=false",
|
|
"not_authorization=true",
|
|
"secret_value_collection_allowed=false",
|
|
"repo_creation_authorized=false",
|
|
"refs_sync_authorized=false",
|
|
"workflow_modification_authorized=false",
|
|
"github_primary_switch_authorized=false",
|
|
"gitea_disablement_authorized=false",
|
|
]:
|
|
assert_text_contains(
|
|
"iwooos_page.product_rollout_acceptance_gates_boundary",
|
|
iwooos_projection_page,
|
|
text,
|
|
)
|
|
assert_contains(
|
|
"web_messages.zh-TW.iwooos.productRolloutAcceptanceGates",
|
|
list(web_messages_zh["iwooos"].keys()),
|
|
"productRolloutAcceptanceGates",
|
|
)
|
|
assert_contains(
|
|
"web_messages.en.iwooos.productRolloutAcceptanceGates",
|
|
list(web_messages_en["iwooos"].keys()),
|
|
"productRolloutAcceptanceGates",
|
|
)
|
|
for key in [
|
|
"title",
|
|
"subtitle",
|
|
"summary",
|
|
"items",
|
|
"gateLabel",
|
|
"requiredEvidenceLabel",
|
|
"acceptanceSignalLabel",
|
|
"stillClosedLabel",
|
|
"boundaryTitle",
|
|
"boundaryIntro",
|
|
]:
|
|
assert_contains(
|
|
"web_messages.zh-TW.iwooos.productRolloutAcceptanceGates.keys",
|
|
list(web_messages_zh["iwooos"]["productRolloutAcceptanceGates"].keys()),
|
|
key,
|
|
)
|
|
assert_contains(
|
|
"web_messages.en.iwooos.productRolloutAcceptanceGates.keys",
|
|
list(web_messages_en["iwooos"]["productRolloutAcceptanceGates"].keys()),
|
|
key,
|
|
)
|
|
for key in ["gateCount", "passed", "ownerEvidence", "runtime"]:
|
|
assert_contains(
|
|
"web_messages.zh-TW.iwooos.productRolloutAcceptanceGates.summary",
|
|
list(web_messages_zh["iwooos"]["productRolloutAcceptanceGates"]["summary"].keys()),
|
|
key,
|
|
)
|
|
assert_contains(
|
|
"web_messages.en.iwooos.productRolloutAcceptanceGates.summary",
|
|
list(web_messages_en["iwooos"]["productRolloutAcceptanceGates"]["summary"].keys()),
|
|
key,
|
|
)
|
|
for key in [
|
|
"visibilityEvidence",
|
|
"ownerEvidence",
|
|
"redactionReview",
|
|
"sourceControlProof",
|
|
"hostSafetyWindow",
|
|
"rollbackDisable",
|
|
]:
|
|
assert_contains(
|
|
"web_messages.zh-TW.iwooos.productRolloutAcceptanceGates.items",
|
|
list(web_messages_zh["iwooos"]["productRolloutAcceptanceGates"]["items"].keys()),
|
|
key,
|
|
)
|
|
assert_contains(
|
|
"web_messages.en.iwooos.productRolloutAcceptanceGates.items",
|
|
list(web_messages_en["iwooos"]["productRolloutAcceptanceGates"]["items"].keys()),
|
|
key,
|
|
)
|
|
assert_text_contains(
|
|
"iwooos_page.product_rollout_acceptance_outcomes_testid",
|
|
iwooos_projection_page,
|
|
'data-testid="iwooos-product-rollout-acceptance-outcomes-board"',
|
|
)
|
|
assert_text_contains(
|
|
"iwooos_page.product_rollout_acceptance_outcomes_component",
|
|
iwooos_projection_page,
|
|
"IwoooSProductRolloutAcceptanceOutcomesBoard",
|
|
)
|
|
for text in [
|
|
"iwooos_product_rollout_acceptance_outcome_lane_count=7",
|
|
"iwooos_product_rollout_acceptance_outcome_current_stage=read_only_outcome_routing",
|
|
"iwooos_product_rollout_acceptance_outcome_keep_read_only_lane_count=1",
|
|
"iwooos_product_rollout_acceptance_outcome_returned_for_evidence_count=0",
|
|
"iwooos_product_rollout_acceptance_outcome_quarantined_count=0",
|
|
"iwooos_product_rollout_acceptance_outcome_source_control_hold_count=0",
|
|
"iwooos_product_rollout_acceptance_outcome_host_safety_hold_count=0",
|
|
"iwooos_product_rollout_acceptance_outcome_human_review_candidate_count=0",
|
|
"iwooos_product_rollout_acceptance_outcome_runtime_candidate_count=0",
|
|
"iwooos_product_rollout_acceptance_outcome_owner_response_received_count=0",
|
|
"iwooos_product_rollout_acceptance_outcome_owner_response_accepted_count=0",
|
|
"iwooos_product_rollout_acceptance_outcome_redacted_evidence_accepted_count=0",
|
|
"iwooos_product_rollout_acceptance_outcome_active_runtime_gate_count=0",
|
|
"iwooos_product_rollout_acceptance_outcome_runtime_gate_open=false",
|
|
"iwooos_product_rollout_acceptance_outcome_runtime_wave_count=0",
|
|
"iwooos_product_rollout_acceptance_outcome_enforcement_wave_count=0",
|
|
"iwooos_product_rollout_acceptance_outcome_public_secret_exposure_allowed=false",
|
|
"iwooos_product_rollout_acceptance_outcome_kali_execution_authorized=false",
|
|
"iwooos_product_rollout_acceptance_outcome_source_control_mutation_authorized=false",
|
|
"runtime_execution_authorized=false",
|
|
"active_runtime_gate_count=0",
|
|
"action_buttons_allowed=false",
|
|
"not_authorization=true",
|
|
"secret_value_collection_allowed=false",
|
|
"repo_creation_authorized=false",
|
|
"refs_sync_authorized=false",
|
|
"workflow_modification_authorized=false",
|
|
"github_primary_switch_authorized=false",
|
|
"gitea_disablement_authorized=false",
|
|
]:
|
|
assert_text_contains(
|
|
"iwooos_page.product_rollout_acceptance_outcomes_boundary",
|
|
iwooos_projection_page,
|
|
text,
|
|
)
|
|
assert_contains(
|
|
"web_messages.zh-TW.iwooos.productRolloutAcceptanceOutcomes",
|
|
list(web_messages_zh["iwooos"].keys()),
|
|
"productRolloutAcceptanceOutcomes",
|
|
)
|
|
assert_contains(
|
|
"web_messages.en.iwooos.productRolloutAcceptanceOutcomes",
|
|
list(web_messages_en["iwooos"].keys()),
|
|
"productRolloutAcceptanceOutcomes",
|
|
)
|
|
for key in [
|
|
"title",
|
|
"subtitle",
|
|
"summary",
|
|
"items",
|
|
"laneLabel",
|
|
"whyLabel",
|
|
"nextLabel",
|
|
"blockedLabel",
|
|
"boundaryTitle",
|
|
"boundaryIntro",
|
|
]:
|
|
assert_contains(
|
|
"web_messages.zh-TW.iwooos.productRolloutAcceptanceOutcomes.keys",
|
|
list(web_messages_zh["iwooos"]["productRolloutAcceptanceOutcomes"].keys()),
|
|
key,
|
|
)
|
|
assert_contains(
|
|
"web_messages.en.iwooos.productRolloutAcceptanceOutcomes.keys",
|
|
list(web_messages_en["iwooos"]["productRolloutAcceptanceOutcomes"].keys()),
|
|
key,
|
|
)
|
|
for key in ["outcomes", "accepted", "quarantine", "runtime"]:
|
|
assert_contains(
|
|
"web_messages.zh-TW.iwooos.productRolloutAcceptanceOutcomes.summary",
|
|
list(web_messages_zh["iwooos"]["productRolloutAcceptanceOutcomes"]["summary"].keys()),
|
|
key,
|
|
)
|
|
assert_contains(
|
|
"web_messages.en.iwooos.productRolloutAcceptanceOutcomes.summary",
|
|
list(web_messages_en["iwooos"]["productRolloutAcceptanceOutcomes"]["summary"].keys()),
|
|
key,
|
|
)
|
|
for key in [
|
|
"keepReadOnly",
|
|
"returnEvidence",
|
|
"quarantineSensitive",
|
|
"sourceControlHold",
|
|
"hostSafetyHold",
|
|
"humanReviewCandidate",
|
|
"runtimeDenied",
|
|
]:
|
|
assert_contains(
|
|
"web_messages.zh-TW.iwooos.productRolloutAcceptanceOutcomes.items",
|
|
list(web_messages_zh["iwooos"]["productRolloutAcceptanceOutcomes"]["items"].keys()),
|
|
key,
|
|
)
|
|
assert_contains(
|
|
"web_messages.en.iwooos.productRolloutAcceptanceOutcomes.items",
|
|
list(web_messages_en["iwooos"]["productRolloutAcceptanceOutcomes"]["items"].keys()),
|
|
key,
|
|
)
|
|
assert_text_contains(
|
|
"iwooos_page.product_evidence_wiring_map_testid",
|
|
iwooos_projection_page,
|
|
'data-testid="iwooos-product-evidence-wiring-map-board"',
|
|
)
|
|
assert_text_contains(
|
|
"iwooos_page.product_evidence_wiring_map_component",
|
|
iwooos_projection_page,
|
|
"IwoooSProductEvidenceWiringMapBoard",
|
|
)
|
|
for text in [
|
|
"iwooos_product_evidence_wiring_channel_count=6",
|
|
"iwooos_product_evidence_wiring_current_stage=read_only_evidence_wiring",
|
|
"iwooos_product_evidence_wiring_visible_channel_count=6",
|
|
"iwooos_product_evidence_wiring_connected_product_count=0",
|
|
"iwooos_product_evidence_wiring_owner_response_received_count=0",
|
|
"iwooos_product_evidence_wiring_owner_response_accepted_count=0",
|
|
"iwooos_product_evidence_wiring_redacted_evidence_pointer_accepted_count=0",
|
|
"iwooos_product_evidence_wiring_source_control_truth_accepted_count=0",
|
|
"iwooos_product_evidence_wiring_host_safety_window_approved=false",
|
|
"iwooos_product_evidence_wiring_monitoring_tool_payload_ingested=false",
|
|
"iwooos_product_evidence_wiring_ready_for_human_review_count=0",
|
|
"iwooos_product_evidence_wiring_ready_for_runtime_count=0",
|
|
"iwooos_product_evidence_wiring_runtime_gate_open=false",
|
|
"iwooos_product_evidence_wiring_public_secret_exposure_allowed=false",
|
|
"iwooos_product_evidence_wiring_kali_execution_authorized=false",
|
|
"iwooos_product_evidence_wiring_source_control_mutation_authorized=false",
|
|
"runtime_execution_authorized=false",
|
|
"active_runtime_gate_count=0",
|
|
"action_buttons_allowed=false",
|
|
"not_authorization=true",
|
|
"secret_value_collection_allowed=false",
|
|
"repo_creation_authorized=false",
|
|
"refs_sync_authorized=false",
|
|
"workflow_modification_authorized=false",
|
|
"github_primary_switch_authorized=false",
|
|
"gitea_disablement_authorized=false",
|
|
]:
|
|
assert_text_contains(
|
|
"iwooos_page.product_evidence_wiring_map_boundary",
|
|
iwooos_projection_page,
|
|
text,
|
|
)
|
|
assert_contains(
|
|
"web_messages.zh-TW.iwooos.productEvidenceWiringMap",
|
|
list(web_messages_zh["iwooos"].keys()),
|
|
"productEvidenceWiringMap",
|
|
)
|
|
assert_contains(
|
|
"web_messages.en.iwooos.productEvidenceWiringMap",
|
|
list(web_messages_en["iwooos"].keys()),
|
|
"productEvidenceWiringMap",
|
|
)
|
|
for key in [
|
|
"title",
|
|
"subtitle",
|
|
"summary",
|
|
"items",
|
|
"channelLabel",
|
|
"evidenceLabel",
|
|
"handoffLabel",
|
|
"blockedLabel",
|
|
"boundaryTitle",
|
|
"boundaryIntro",
|
|
]:
|
|
assert_contains(
|
|
"web_messages.zh-TW.iwooos.productEvidenceWiringMap.keys",
|
|
list(web_messages_zh["iwooos"]["productEvidenceWiringMap"].keys()),
|
|
key,
|
|
)
|
|
assert_contains(
|
|
"web_messages.en.iwooos.productEvidenceWiringMap.keys",
|
|
list(web_messages_en["iwooos"]["productEvidenceWiringMap"].keys()),
|
|
key,
|
|
)
|
|
for key in ["channels", "connected", "accepted", "runtime"]:
|
|
assert_contains(
|
|
"web_messages.zh-TW.iwooos.productEvidenceWiringMap.summary",
|
|
list(web_messages_zh["iwooos"]["productEvidenceWiringMap"]["summary"].keys()),
|
|
key,
|
|
)
|
|
assert_contains(
|
|
"web_messages.en.iwooos.productEvidenceWiringMap.summary",
|
|
list(web_messages_en["iwooos"]["productEvidenceWiringMap"]["summary"].keys()),
|
|
key,
|
|
)
|
|
for key in [
|
|
"productScope",
|
|
"ownerResponse",
|
|
"redactedEvidence",
|
|
"sourceControlTruth",
|
|
"hostSafetyWindow",
|
|
"monitoringToolEvidence",
|
|
]:
|
|
assert_contains(
|
|
"web_messages.zh-TW.iwooos.productEvidenceWiringMap.items",
|
|
list(web_messages_zh["iwooos"]["productEvidenceWiringMap"]["items"].keys()),
|
|
key,
|
|
)
|
|
assert_contains(
|
|
"web_messages.en.iwooos.productEvidenceWiringMap.items",
|
|
list(web_messages_en["iwooos"]["productEvidenceWiringMap"]["items"].keys()),
|
|
key,
|
|
)
|
|
assert_text_contains(
|
|
"iwooos_page.product_evidence_wiring_preflight_testid",
|
|
iwooos_projection_page,
|
|
'data-testid="iwooos-product-evidence-wiring-preflight-board"',
|
|
)
|
|
assert_text_contains(
|
|
"iwooos_page.product_evidence_wiring_preflight_component",
|
|
iwooos_projection_page,
|
|
"IwoooSProductEvidenceWiringPreflightBoard",
|
|
)
|
|
for text in [
|
|
"iwooos_product_evidence_wiring_preflight_check_count=6",
|
|
"iwooos_product_evidence_wiring_preflight_current_stage=read_only_evidence_wiring_preflight",
|
|
"iwooos_product_evidence_wiring_preflight_visible_check_count=6",
|
|
"iwooos_product_evidence_wiring_preflight_passed_count=0",
|
|
"iwooos_product_evidence_wiring_preflight_failed_count=0",
|
|
"iwooos_product_evidence_wiring_preflight_ready_for_connection_count=0",
|
|
"iwooos_product_evidence_wiring_preflight_returned_for_scope_count=0",
|
|
"iwooos_product_evidence_wiring_preflight_quarantined_count=0",
|
|
"iwooos_product_evidence_wiring_preflight_owner_response_accepted_count=0",
|
|
"iwooos_product_evidence_wiring_preflight_redacted_evidence_pointer_accepted_count=0",
|
|
"iwooos_product_evidence_wiring_preflight_source_control_truth_accepted_count=0",
|
|
"iwooos_product_evidence_wiring_preflight_host_safety_window_approved=false",
|
|
"iwooos_product_evidence_wiring_preflight_monitoring_tool_payload_ingested=false",
|
|
"iwooos_product_evidence_wiring_preflight_ready_for_human_review_count=0",
|
|
"iwooos_product_evidence_wiring_preflight_ready_for_runtime_count=0",
|
|
"iwooos_product_evidence_wiring_preflight_runtime_gate_open=false",
|
|
"iwooos_product_evidence_wiring_preflight_public_secret_exposure_allowed=false",
|
|
"iwooos_product_evidence_wiring_preflight_kali_execution_authorized=false",
|
|
"iwooos_product_evidence_wiring_preflight_source_control_mutation_authorized=false",
|
|
"runtime_execution_authorized=false",
|
|
"active_runtime_gate_count=0",
|
|
"action_buttons_allowed=false",
|
|
"not_authorization=true",
|
|
"secret_value_collection_allowed=false",
|
|
"repo_creation_authorized=false",
|
|
"refs_sync_authorized=false",
|
|
"workflow_modification_authorized=false",
|
|
"github_primary_switch_authorized=false",
|
|
"gitea_disablement_authorized=false",
|
|
]:
|
|
assert_text_contains(
|
|
"iwooos_page.product_evidence_wiring_preflight_boundary",
|
|
iwooos_projection_page,
|
|
text,
|
|
)
|
|
assert_contains(
|
|
"web_messages.zh-TW.iwooos.productEvidenceWiringPreflight",
|
|
list(web_messages_zh["iwooos"].keys()),
|
|
"productEvidenceWiringPreflight",
|
|
)
|
|
assert_contains(
|
|
"web_messages.en.iwooos.productEvidenceWiringPreflight",
|
|
list(web_messages_en["iwooos"].keys()),
|
|
"productEvidenceWiringPreflight",
|
|
)
|
|
for key in [
|
|
"title",
|
|
"subtitle",
|
|
"summary",
|
|
"items",
|
|
"checkLabel",
|
|
"checkPointLabel",
|
|
"passSignalLabel",
|
|
"failRouteLabel",
|
|
"stillClosedLabel",
|
|
"boundaryTitle",
|
|
"boundaryIntro",
|
|
]:
|
|
assert_contains(
|
|
"web_messages.zh-TW.iwooos.productEvidenceWiringPreflight.keys",
|
|
list(web_messages_zh["iwooos"]["productEvidenceWiringPreflight"].keys()),
|
|
key,
|
|
)
|
|
assert_contains(
|
|
"web_messages.en.iwooos.productEvidenceWiringPreflight.keys",
|
|
list(web_messages_en["iwooos"]["productEvidenceWiringPreflight"].keys()),
|
|
key,
|
|
)
|
|
for key in ["checks", "passed", "quarantine", "runtime"]:
|
|
assert_contains(
|
|
"web_messages.zh-TW.iwooos.productEvidenceWiringPreflight.summary",
|
|
list(web_messages_zh["iwooos"]["productEvidenceWiringPreflight"]["summary"].keys()),
|
|
key,
|
|
)
|
|
assert_contains(
|
|
"web_messages.en.iwooos.productEvidenceWiringPreflight.summary",
|
|
list(web_messages_en["iwooos"]["productEvidenceWiringPreflight"]["summary"].keys()),
|
|
key,
|
|
)
|
|
for key in [
|
|
"scopeMetadata",
|
|
"ownerEnvelope",
|
|
"redactionBoundary",
|
|
"sourceTruth",
|
|
"hostWindow",
|
|
"toolOutput",
|
|
]:
|
|
assert_contains(
|
|
"web_messages.zh-TW.iwooos.productEvidenceWiringPreflight.items",
|
|
list(web_messages_zh["iwooos"]["productEvidenceWiringPreflight"]["items"].keys()),
|
|
key,
|
|
)
|
|
assert_contains(
|
|
"web_messages.en.iwooos.productEvidenceWiringPreflight.items",
|
|
list(web_messages_en["iwooos"]["productEvidenceWiringPreflight"]["items"].keys()),
|
|
key,
|
|
)
|
|
assert_text_contains(
|
|
"iwooos_page.product_evidence_wiring_preflight_outcomes_testid",
|
|
iwooos_projection_page,
|
|
'data-testid="iwooos-product-evidence-wiring-preflight-outcomes-board"',
|
|
)
|
|
assert_text_contains(
|
|
"iwooos_page.product_evidence_wiring_preflight_outcomes_component",
|
|
iwooos_projection_page,
|
|
"IwoooSProductEvidenceWiringPreflightOutcomesBoard",
|
|
)
|
|
for text in [
|
|
"iwooos_product_evidence_wiring_preflight_outcome_lane_count=8",
|
|
"iwooos_product_evidence_wiring_preflight_outcome_current_stage=read_only_preflight_outcome_routing",
|
|
"iwooos_product_evidence_wiring_preflight_outcome_keep_read_only_lane_count=1",
|
|
"iwooos_product_evidence_wiring_preflight_outcome_ready_for_connection_count=0",
|
|
"iwooos_product_evidence_wiring_preflight_outcome_returned_for_scope_count=0",
|
|
"iwooos_product_evidence_wiring_preflight_outcome_returned_for_owner_count=0",
|
|
"iwooos_product_evidence_wiring_preflight_outcome_quarantined_count=0",
|
|
"iwooos_product_evidence_wiring_preflight_outcome_source_control_hold_count=0",
|
|
"iwooos_product_evidence_wiring_preflight_outcome_host_safety_hold_count=0",
|
|
"iwooos_product_evidence_wiring_preflight_outcome_tool_summary_hold_count=0",
|
|
"iwooos_product_evidence_wiring_preflight_outcome_runtime_candidate_count=0",
|
|
"iwooos_product_evidence_wiring_preflight_outcome_owner_response_accepted_count=0",
|
|
"iwooos_product_evidence_wiring_preflight_outcome_redacted_evidence_pointer_accepted_count=0",
|
|
"iwooos_product_evidence_wiring_preflight_outcome_source_control_truth_accepted_count=0",
|
|
"iwooos_product_evidence_wiring_preflight_outcome_ready_for_human_review_count=0",
|
|
"iwooos_product_evidence_wiring_preflight_outcome_ready_for_runtime_count=0",
|
|
"iwooos_product_evidence_wiring_preflight_outcome_runtime_gate_open=false",
|
|
"iwooos_product_evidence_wiring_preflight_outcome_public_secret_exposure_allowed=false",
|
|
"iwooos_product_evidence_wiring_preflight_outcome_kali_execution_authorized=false",
|
|
"iwooos_product_evidence_wiring_preflight_outcome_source_control_mutation_authorized=false",
|
|
"runtime_execution_authorized=false",
|
|
"active_runtime_gate_count=0",
|
|
"action_buttons_allowed=false",
|
|
"not_authorization=true",
|
|
"secret_value_collection_allowed=false",
|
|
"repo_creation_authorized=false",
|
|
"refs_sync_authorized=false",
|
|
"workflow_modification_authorized=false",
|
|
"github_primary_switch_authorized=false",
|
|
"gitea_disablement_authorized=false",
|
|
]:
|
|
assert_text_contains(
|
|
"iwooos_page.product_evidence_wiring_preflight_outcomes_boundary",
|
|
iwooos_projection_page,
|
|
text,
|
|
)
|
|
assert_contains(
|
|
"web_messages.zh-TW.iwooos.productEvidenceWiringPreflightOutcomes",
|
|
list(web_messages_zh["iwooos"].keys()),
|
|
"productEvidenceWiringPreflightOutcomes",
|
|
)
|
|
assert_contains(
|
|
"web_messages.en.iwooos.productEvidenceWiringPreflightOutcomes",
|
|
list(web_messages_en["iwooos"].keys()),
|
|
"productEvidenceWiringPreflightOutcomes",
|
|
)
|
|
for key in [
|
|
"title",
|
|
"subtitle",
|
|
"summary",
|
|
"items",
|
|
"outcomeLabel",
|
|
"whyLabel",
|
|
"nextLabel",
|
|
"blockedLabel",
|
|
"boundaryTitle",
|
|
"boundaryIntro",
|
|
]:
|
|
assert_contains(
|
|
"web_messages.zh-TW.iwooos.productEvidenceWiringPreflightOutcomes.keys",
|
|
list(web_messages_zh["iwooos"]["productEvidenceWiringPreflightOutcomes"].keys()),
|
|
key,
|
|
)
|
|
assert_contains(
|
|
"web_messages.en.iwooos.productEvidenceWiringPreflightOutcomes.keys",
|
|
list(web_messages_en["iwooos"]["productEvidenceWiringPreflightOutcomes"].keys()),
|
|
key,
|
|
)
|
|
for key in ["outcomes", "ready", "returned", "runtime"]:
|
|
assert_contains(
|
|
"web_messages.zh-TW.iwooos.productEvidenceWiringPreflightOutcomes.summary",
|
|
list(web_messages_zh["iwooos"]["productEvidenceWiringPreflightOutcomes"]["summary"].keys()),
|
|
key,
|
|
)
|
|
assert_contains(
|
|
"web_messages.en.iwooos.productEvidenceWiringPreflightOutcomes.summary",
|
|
list(web_messages_en["iwooos"]["productEvidenceWiringPreflightOutcomes"]["summary"].keys()),
|
|
key,
|
|
)
|
|
for key in [
|
|
"stayReadOnly",
|
|
"returnScope",
|
|
"returnOwnerEnvelope",
|
|
"quarantineSensitive",
|
|
"sourceTruthHold",
|
|
"hostWindowHold",
|
|
"toolSummaryHold",
|
|
"runtimeClosed",
|
|
]:
|
|
assert_contains(
|
|
"web_messages.zh-TW.iwooos.productEvidenceWiringPreflightOutcomes.items",
|
|
list(web_messages_zh["iwooos"]["productEvidenceWiringPreflightOutcomes"]["items"].keys()),
|
|
key,
|
|
)
|
|
assert_contains(
|
|
"web_messages.en.iwooos.productEvidenceWiringPreflightOutcomes.items",
|
|
list(web_messages_en["iwooos"]["productEvidenceWiringPreflightOutcomes"]["items"].keys()),
|
|
key,
|
|
)
|
|
assert_text_contains(
|
|
"iwooos_page.product_evidence_wiring_preflight_recovery_ledger_testid",
|
|
iwooos_projection_page,
|
|
'data-testid="iwooos-product-evidence-wiring-preflight-recovery-ledger-board"',
|
|
)
|
|
assert_text_contains(
|
|
"iwooos_page.product_evidence_wiring_preflight_recovery_ledger_component",
|
|
iwooos_projection_page,
|
|
"IwoooSProductEvidenceWiringPreflightRecoveryLedgerBoard",
|
|
)
|
|
for text in [
|
|
"iwooos_product_evidence_wiring_preflight_recovery_queue_count=7",
|
|
"iwooos_product_evidence_wiring_preflight_recovery_current_stage=read_only_recovery_ledger",
|
|
"iwooos_product_evidence_wiring_preflight_recovery_visible_queue_count=7",
|
|
"iwooos_product_evidence_wiring_preflight_recovery_submitted_count=0",
|
|
"iwooos_product_evidence_wiring_preflight_recovery_accepted_count=0",
|
|
"iwooos_product_evidence_wiring_preflight_recovery_returned_count=0",
|
|
"iwooos_product_evidence_wiring_preflight_recovery_quarantined_count=0",
|
|
"iwooos_product_evidence_wiring_preflight_recovery_ready_for_preflight_retry_count=0",
|
|
"iwooos_product_evidence_wiring_preflight_recovery_ready_for_human_review_count=0",
|
|
"iwooos_product_evidence_wiring_preflight_recovery_ready_for_runtime_count=0",
|
|
"iwooos_product_evidence_wiring_preflight_recovery_owner_response_accepted_count=0",
|
|
"iwooos_product_evidence_wiring_preflight_recovery_redacted_evidence_pointer_accepted_count=0",
|
|
"iwooos_product_evidence_wiring_preflight_recovery_source_control_truth_accepted_count=0",
|
|
"iwooos_product_evidence_wiring_preflight_recovery_host_safety_window_approved=false",
|
|
"iwooos_product_evidence_wiring_preflight_recovery_tool_summary_ingested=false",
|
|
"iwooos_product_evidence_wiring_preflight_recovery_runtime_gate_open=false",
|
|
"iwooos_product_evidence_wiring_preflight_recovery_public_secret_exposure_allowed=false",
|
|
"iwooos_product_evidence_wiring_preflight_recovery_kali_execution_authorized=false",
|
|
"iwooos_product_evidence_wiring_preflight_recovery_source_control_mutation_authorized=false",
|
|
"runtime_execution_authorized=false",
|
|
"active_runtime_gate_count=0",
|
|
"action_buttons_allowed=false",
|
|
"not_authorization=true",
|
|
"secret_value_collection_allowed=false",
|
|
"repo_creation_authorized=false",
|
|
"refs_sync_authorized=false",
|
|
"workflow_modification_authorized=false",
|
|
"github_primary_switch_authorized=false",
|
|
"gitea_disablement_authorized=false",
|
|
]:
|
|
assert_text_contains(
|
|
"iwooos_page.product_evidence_wiring_preflight_recovery_ledger_boundary",
|
|
iwooos_projection_page,
|
|
text,
|
|
)
|
|
assert_contains(
|
|
"web_messages.zh-TW.iwooos.productEvidenceWiringPreflightRecoveryLedger",
|
|
list(web_messages_zh["iwooos"].keys()),
|
|
"productEvidenceWiringPreflightRecoveryLedger",
|
|
)
|
|
assert_contains(
|
|
"web_messages.en.iwooos.productEvidenceWiringPreflightRecoveryLedger",
|
|
list(web_messages_en["iwooos"].keys()),
|
|
"productEvidenceWiringPreflightRecoveryLedger",
|
|
)
|
|
for key in [
|
|
"title",
|
|
"subtitle",
|
|
"summary",
|
|
"items",
|
|
"queueLabel",
|
|
"ownerLabel",
|
|
"requiredLabel",
|
|
"handoffLabel",
|
|
"blockedLabel",
|
|
"boundaryTitle",
|
|
"boundaryIntro",
|
|
]:
|
|
assert_contains(
|
|
"web_messages.zh-TW.iwooos.productEvidenceWiringPreflightRecoveryLedger.keys",
|
|
list(web_messages_zh["iwooos"]["productEvidenceWiringPreflightRecoveryLedger"].keys()),
|
|
key,
|
|
)
|
|
assert_contains(
|
|
"web_messages.en.iwooos.productEvidenceWiringPreflightRecoveryLedger.keys",
|
|
list(web_messages_en["iwooos"]["productEvidenceWiringPreflightRecoveryLedger"].keys()),
|
|
key,
|
|
)
|
|
for key in ["queues", "submitted", "accepted", "runtime"]:
|
|
assert_contains(
|
|
"web_messages.zh-TW.iwooos.productEvidenceWiringPreflightRecoveryLedger.summary",
|
|
list(web_messages_zh["iwooos"]["productEvidenceWiringPreflightRecoveryLedger"]["summary"].keys()),
|
|
key,
|
|
)
|
|
assert_contains(
|
|
"web_messages.en.iwooos.productEvidenceWiringPreflightRecoveryLedger.summary",
|
|
list(web_messages_en["iwooos"]["productEvidenceWiringPreflightRecoveryLedger"]["summary"].keys()),
|
|
key,
|
|
)
|
|
for key in [
|
|
"scopePacket",
|
|
"ownerEnvelope",
|
|
"redactedEvidence",
|
|
"sourceTruth",
|
|
"hostWindow",
|
|
"toolSummary",
|
|
"runtimeGate",
|
|
]:
|
|
assert_contains(
|
|
"web_messages.zh-TW.iwooos.productEvidenceWiringPreflightRecoveryLedger.items",
|
|
list(web_messages_zh["iwooos"]["productEvidenceWiringPreflightRecoveryLedger"]["items"].keys()),
|
|
key,
|
|
)
|
|
assert_contains(
|
|
"web_messages.en.iwooos.productEvidenceWiringPreflightRecoveryLedger.items",
|
|
list(web_messages_en["iwooos"]["productEvidenceWiringPreflightRecoveryLedger"]["items"].keys()),
|
|
key,
|
|
)
|
|
assert_text_contains(
|
|
"iwooos_page.product_evidence_wiring_preflight_retry_gates_testid",
|
|
iwooos_projection_page,
|
|
'data-testid="iwooos-product-evidence-wiring-preflight-retry-gates-board"',
|
|
)
|
|
assert_text_contains(
|
|
"iwooos_page.product_evidence_wiring_preflight_retry_gates_component",
|
|
iwooos_projection_page,
|
|
"IwoooSProductEvidenceWiringPreflightRetryGatesBoard",
|
|
)
|
|
for text in [
|
|
"iwooos_product_evidence_wiring_preflight_retry_gate_count=6",
|
|
"iwooos_product_evidence_wiring_preflight_retry_current_stage=read_only_recovery_retry_gate",
|
|
"iwooos_product_evidence_wiring_preflight_retry_visible_gate_count=6",
|
|
"iwooos_product_evidence_wiring_preflight_retry_candidate_count=0",
|
|
"iwooos_product_evidence_wiring_preflight_retry_submitted_count=0",
|
|
"iwooos_product_evidence_wiring_preflight_retry_passed_count=0",
|
|
"iwooos_product_evidence_wiring_preflight_retry_failed_count=0",
|
|
"iwooos_product_evidence_wiring_preflight_retry_returned_count=0",
|
|
"iwooos_product_evidence_wiring_preflight_retry_quarantined_count=0",
|
|
"iwooos_product_evidence_wiring_preflight_retry_ready_for_connection_count=0",
|
|
"iwooos_product_evidence_wiring_preflight_retry_ready_for_human_review_count=0",
|
|
"iwooos_product_evidence_wiring_preflight_retry_ready_for_runtime_count=0",
|
|
"iwooos_product_evidence_wiring_preflight_retry_owner_response_accepted_count=0",
|
|
"iwooos_product_evidence_wiring_preflight_retry_redacted_evidence_pointer_accepted_count=0",
|
|
"iwooos_product_evidence_wiring_preflight_retry_source_control_truth_accepted_count=0",
|
|
"iwooos_product_evidence_wiring_preflight_retry_host_safety_window_approved=false",
|
|
"iwooos_product_evidence_wiring_preflight_retry_tool_summary_ingested=false",
|
|
"iwooos_product_evidence_wiring_preflight_retry_runtime_gate_open=false",
|
|
"iwooos_product_evidence_wiring_preflight_retry_public_secret_exposure_allowed=false",
|
|
"iwooos_product_evidence_wiring_preflight_retry_kali_execution_authorized=false",
|
|
"iwooos_product_evidence_wiring_preflight_retry_source_control_mutation_authorized=false",
|
|
"runtime_execution_authorized=false",
|
|
"active_runtime_gate_count=0",
|
|
"action_buttons_allowed=false",
|
|
"not_authorization=true",
|
|
"secret_value_collection_allowed=false",
|
|
"repo_creation_authorized=false",
|
|
"refs_sync_authorized=false",
|
|
"workflow_modification_authorized=false",
|
|
"github_primary_switch_authorized=false",
|
|
"gitea_disablement_authorized=false",
|
|
]:
|
|
assert_text_contains(
|
|
"iwooos_page.product_evidence_wiring_preflight_retry_gates_boundary",
|
|
iwooos_projection_page,
|
|
text,
|
|
)
|
|
assert_contains(
|
|
"web_messages.zh-TW.iwooos.productEvidenceWiringPreflightRetryGates",
|
|
list(web_messages_zh["iwooos"].keys()),
|
|
"productEvidenceWiringPreflightRetryGates",
|
|
)
|
|
assert_contains(
|
|
"web_messages.en.iwooos.productEvidenceWiringPreflightRetryGates",
|
|
list(web_messages_en["iwooos"].keys()),
|
|
"productEvidenceWiringPreflightRetryGates",
|
|
)
|
|
for key in [
|
|
"title",
|
|
"subtitle",
|
|
"summary",
|
|
"items",
|
|
"gateLabel",
|
|
"readyLabel",
|
|
"retryLabel",
|
|
"blockedLabel",
|
|
"boundaryTitle",
|
|
"boundaryIntro",
|
|
]:
|
|
assert_contains(
|
|
"web_messages.zh-TW.iwooos.productEvidenceWiringPreflightRetryGates.keys",
|
|
list(web_messages_zh["iwooos"]["productEvidenceWiringPreflightRetryGates"].keys()),
|
|
key,
|
|
)
|
|
assert_contains(
|
|
"web_messages.en.iwooos.productEvidenceWiringPreflightRetryGates.keys",
|
|
list(web_messages_en["iwooos"]["productEvidenceWiringPreflightRetryGates"].keys()),
|
|
key,
|
|
)
|
|
for key in ["gates", "candidate", "passed", "runtime"]:
|
|
assert_contains(
|
|
"web_messages.zh-TW.iwooos.productEvidenceWiringPreflightRetryGates.summary",
|
|
list(web_messages_zh["iwooos"]["productEvidenceWiringPreflightRetryGates"]["summary"].keys()),
|
|
key,
|
|
)
|
|
assert_contains(
|
|
"web_messages.en.iwooos.productEvidenceWiringPreflightRetryGates.summary",
|
|
list(web_messages_en["iwooos"]["productEvidenceWiringPreflightRetryGates"]["summary"].keys()),
|
|
key,
|
|
)
|
|
for key in [
|
|
"scopeReady",
|
|
"ownerReady",
|
|
"redactionReady",
|
|
"sourceReady",
|
|
"hostReady",
|
|
"toolReady",
|
|
]:
|
|
assert_contains(
|
|
"web_messages.zh-TW.iwooos.productEvidenceWiringPreflightRetryGates.items",
|
|
list(web_messages_zh["iwooos"]["productEvidenceWiringPreflightRetryGates"]["items"].keys()),
|
|
key,
|
|
)
|
|
assert_contains(
|
|
"web_messages.en.iwooos.productEvidenceWiringPreflightRetryGates.items",
|
|
list(web_messages_en["iwooos"]["productEvidenceWiringPreflightRetryGates"]["items"].keys()),
|
|
key,
|
|
)
|
|
assert_text_contains(
|
|
"iwooos_page.product_evidence_wiring_preflight_retry_outcomes_testid",
|
|
iwooos_projection_page,
|
|
'data-testid="iwooos-product-evidence-wiring-preflight-retry-outcomes-board"',
|
|
)
|
|
assert_text_contains(
|
|
"iwooos_page.product_evidence_wiring_preflight_retry_outcomes_component",
|
|
iwooos_projection_page,
|
|
"IwoooSProductEvidenceWiringPreflightRetryOutcomesBoard",
|
|
)
|
|
for text in [
|
|
"iwooos_product_evidence_wiring_preflight_retry_outcome_lane_count=8",
|
|
"iwooos_product_evidence_wiring_preflight_retry_outcome_current_stage=read_only_retry_outcome_routing",
|
|
"iwooos_product_evidence_wiring_preflight_retry_outcome_visible_lane_count=8",
|
|
"iwooos_product_evidence_wiring_preflight_retry_outcome_ready_for_connection_count=0",
|
|
"iwooos_product_evidence_wiring_preflight_retry_outcome_returned_count=0",
|
|
"iwooos_product_evidence_wiring_preflight_retry_outcome_quarantined_count=0",
|
|
"iwooos_product_evidence_wiring_preflight_retry_outcome_human_review_candidate_count=0",
|
|
"iwooos_product_evidence_wiring_preflight_retry_outcome_runtime_candidate_count=0",
|
|
"iwooos_product_evidence_wiring_preflight_retry_outcome_ready_for_runtime_count=0",
|
|
"iwooos_product_evidence_wiring_preflight_retry_outcome_owner_response_accepted_count=0",
|
|
"iwooos_product_evidence_wiring_preflight_retry_outcome_redacted_evidence_pointer_accepted_count=0",
|
|
"iwooos_product_evidence_wiring_preflight_retry_outcome_source_control_truth_accepted_count=0",
|
|
"iwooos_product_evidence_wiring_preflight_retry_outcome_host_safety_window_approved=false",
|
|
"iwooos_product_evidence_wiring_preflight_retry_outcome_tool_summary_ingested=false",
|
|
"iwooos_product_evidence_wiring_preflight_retry_outcome_runtime_gate_open=false",
|
|
"iwooos_product_evidence_wiring_preflight_retry_outcome_public_secret_exposure_allowed=false",
|
|
"iwooos_product_evidence_wiring_preflight_retry_outcome_kali_execution_authorized=false",
|
|
"iwooos_product_evidence_wiring_preflight_retry_outcome_source_control_mutation_authorized=false",
|
|
"runtime_execution_authorized=false",
|
|
"active_runtime_gate_count=0",
|
|
"action_buttons_allowed=false",
|
|
"not_authorization=true",
|
|
"secret_value_collection_allowed=false",
|
|
"repo_creation_authorized=false",
|
|
"refs_sync_authorized=false",
|
|
"workflow_modification_authorized=false",
|
|
"github_primary_switch_authorized=false",
|
|
"gitea_disablement_authorized=false",
|
|
]:
|
|
assert_text_contains(
|
|
"iwooos_page.product_evidence_wiring_preflight_retry_outcomes_boundary",
|
|
iwooos_projection_page,
|
|
text,
|
|
)
|
|
assert_contains(
|
|
"web_messages.zh-TW.iwooos.productEvidenceWiringPreflightRetryOutcomes",
|
|
list(web_messages_zh["iwooos"].keys()),
|
|
"productEvidenceWiringPreflightRetryOutcomes",
|
|
)
|
|
assert_contains(
|
|
"web_messages.en.iwooos.productEvidenceWiringPreflightRetryOutcomes",
|
|
list(web_messages_en["iwooos"].keys()),
|
|
"productEvidenceWiringPreflightRetryOutcomes",
|
|
)
|
|
for key in [
|
|
"title",
|
|
"subtitle",
|
|
"summary",
|
|
"items",
|
|
"outcomeLabel",
|
|
"decisionLabel",
|
|
"nextLabel",
|
|
"blockedLabel",
|
|
"boundaryTitle",
|
|
"boundaryIntro",
|
|
]:
|
|
assert_contains(
|
|
"web_messages.zh-TW.iwooos.productEvidenceWiringPreflightRetryOutcomes.keys",
|
|
list(web_messages_zh["iwooos"]["productEvidenceWiringPreflightRetryOutcomes"].keys()),
|
|
key,
|
|
)
|
|
assert_contains(
|
|
"web_messages.en.iwooos.productEvidenceWiringPreflightRetryOutcomes.keys",
|
|
list(web_messages_en["iwooos"]["productEvidenceWiringPreflightRetryOutcomes"].keys()),
|
|
key,
|
|
)
|
|
for key in ["outcomes", "ready", "review", "runtime"]:
|
|
assert_contains(
|
|
"web_messages.zh-TW.iwooos.productEvidenceWiringPreflightRetryOutcomes.summary",
|
|
list(web_messages_zh["iwooos"]["productEvidenceWiringPreflightRetryOutcomes"]["summary"].keys()),
|
|
key,
|
|
)
|
|
assert_contains(
|
|
"web_messages.en.iwooos.productEvidenceWiringPreflightRetryOutcomes.summary",
|
|
list(web_messages_en["iwooos"]["productEvidenceWiringPreflightRetryOutcomes"]["summary"].keys()),
|
|
key,
|
|
)
|
|
for key in [
|
|
"stayCandidate",
|
|
"returnSupplement",
|
|
"quarantineSensitive",
|
|
"sourceTruthReturn",
|
|
"hostWindowPause",
|
|
"toolSummaryReturn",
|
|
"humanReviewWait",
|
|
"runtimeStillClosed",
|
|
]:
|
|
assert_contains(
|
|
"web_messages.zh-TW.iwooos.productEvidenceWiringPreflightRetryOutcomes.items",
|
|
list(web_messages_zh["iwooos"]["productEvidenceWiringPreflightRetryOutcomes"]["items"].keys()),
|
|
key,
|
|
)
|
|
assert_contains(
|
|
"web_messages.en.iwooos.productEvidenceWiringPreflightRetryOutcomes.items",
|
|
list(web_messages_en["iwooos"]["productEvidenceWiringPreflightRetryOutcomes"]["items"].keys()),
|
|
key,
|
|
)
|
|
assert_text_contains(
|
|
"iwooos_page.product_evidence_wiring_preflight_retry_review_candidate_testid",
|
|
iwooos_projection_page,
|
|
'data-testid="iwooos-product-evidence-wiring-preflight-retry-review-candidate-board"',
|
|
)
|
|
assert_text_contains(
|
|
"iwooos_page.product_evidence_wiring_preflight_retry_review_candidate_component",
|
|
iwooos_projection_page,
|
|
"IwoooSProductEvidenceWiringPreflightRetryReviewCandidateBoard",
|
|
)
|
|
for text in [
|
|
"iwooos_product_evidence_wiring_preflight_retry_review_candidate_packet_count=8",
|
|
"iwooos_product_evidence_wiring_preflight_retry_review_candidate_current_stage=read_only_retry_review_candidate_preparation",
|
|
"iwooos_product_evidence_wiring_preflight_retry_review_candidate_visible_packet_count=8",
|
|
"iwooos_product_evidence_wiring_preflight_retry_review_candidate_packet_completed_count=0",
|
|
"iwooos_product_evidence_wiring_preflight_retry_review_candidate_ready_count=0",
|
|
"iwooos_product_evidence_wiring_preflight_retry_review_candidate_queue_open=false",
|
|
"iwooos_product_evidence_wiring_preflight_retry_review_candidate_created_count=0",
|
|
"iwooos_product_evidence_wiring_preflight_retry_review_candidate_reviewer_assigned_count=0",
|
|
"iwooos_product_evidence_wiring_preflight_retry_review_candidate_audit_event_emitted_count=0",
|
|
"iwooos_product_evidence_wiring_preflight_retry_review_candidate_ready_for_connection_count=0",
|
|
"iwooos_product_evidence_wiring_preflight_retry_review_candidate_ready_for_runtime_count=0",
|
|
"iwooos_product_evidence_wiring_preflight_retry_review_candidate_owner_response_accepted_count=0",
|
|
"iwooos_product_evidence_wiring_preflight_retry_review_candidate_redacted_evidence_pointer_accepted_count=0",
|
|
"iwooos_product_evidence_wiring_preflight_retry_review_candidate_source_control_truth_accepted_count=0",
|
|
"iwooos_product_evidence_wiring_preflight_retry_review_candidate_host_safety_window_approved=false",
|
|
"iwooos_product_evidence_wiring_preflight_retry_review_candidate_tool_summary_ingested=false",
|
|
"iwooos_product_evidence_wiring_preflight_retry_review_candidate_runtime_gate_open=false",
|
|
"iwooos_product_evidence_wiring_preflight_retry_review_candidate_public_secret_exposure_allowed=false",
|
|
"iwooos_product_evidence_wiring_preflight_retry_review_candidate_kali_execution_authorized=false",
|
|
"iwooos_product_evidence_wiring_preflight_retry_review_candidate_source_control_mutation_authorized=false",
|
|
"runtime_execution_authorized=false",
|
|
"active_runtime_gate_count=0",
|
|
"action_buttons_allowed=false",
|
|
"not_authorization=true",
|
|
"secret_value_collection_allowed=false",
|
|
"repo_creation_authorized=false",
|
|
"refs_sync_authorized=false",
|
|
"workflow_modification_authorized=false",
|
|
"github_primary_switch_authorized=false",
|
|
"gitea_disablement_authorized=false",
|
|
]:
|
|
assert_text_contains(
|
|
"iwooos_page.product_evidence_wiring_preflight_retry_review_candidate_boundary",
|
|
iwooos_projection_page,
|
|
text,
|
|
)
|
|
assert_contains(
|
|
"web_messages.zh-TW.iwooos.productEvidenceWiringPreflightRetryReviewCandidate",
|
|
list(web_messages_zh["iwooos"].keys()),
|
|
"productEvidenceWiringPreflightRetryReviewCandidate",
|
|
)
|
|
assert_contains(
|
|
"web_messages.en.iwooos.productEvidenceWiringPreflightRetryReviewCandidate",
|
|
list(web_messages_en["iwooos"].keys()),
|
|
"productEvidenceWiringPreflightRetryReviewCandidate",
|
|
)
|
|
for key in [
|
|
"title",
|
|
"subtitle",
|
|
"summary",
|
|
"items",
|
|
"packetLabel",
|
|
"requiredLabel",
|
|
"handoffLabel",
|
|
"blockedLabel",
|
|
"boundaryTitle",
|
|
"boundaryIntro",
|
|
]:
|
|
assert_contains(
|
|
"web_messages.zh-TW.iwooos.productEvidenceWiringPreflightRetryReviewCandidate.keys",
|
|
list(web_messages_zh["iwooos"]["productEvidenceWiringPreflightRetryReviewCandidate"].keys()),
|
|
key,
|
|
)
|
|
assert_contains(
|
|
"web_messages.en.iwooos.productEvidenceWiringPreflightRetryReviewCandidate.keys",
|
|
list(web_messages_en["iwooos"]["productEvidenceWiringPreflightRetryReviewCandidate"].keys()),
|
|
key,
|
|
)
|
|
for key in ["packets", "ready", "queue", "runtime"]:
|
|
assert_contains(
|
|
"web_messages.zh-TW.iwooos.productEvidenceWiringPreflightRetryReviewCandidate.summary",
|
|
list(web_messages_zh["iwooos"]["productEvidenceWiringPreflightRetryReviewCandidate"]["summary"].keys()),
|
|
key,
|
|
)
|
|
assert_contains(
|
|
"web_messages.en.iwooos.productEvidenceWiringPreflightRetryReviewCandidate.summary",
|
|
list(web_messages_en["iwooos"]["productEvidenceWiringPreflightRetryReviewCandidate"]["summary"].keys()),
|
|
key,
|
|
)
|
|
for key in [
|
|
"candidateIdentity",
|
|
"sourceOutcomeTrace",
|
|
"ownerScopePacket",
|
|
"redactionAttestation",
|
|
"sourceControlReadiness",
|
|
"hostSafetyWindow",
|
|
"toolSummaryEvidence",
|
|
"runtimeSeparation",
|
|
]:
|
|
assert_contains(
|
|
"web_messages.zh-TW.iwooos.productEvidenceWiringPreflightRetryReviewCandidate.items",
|
|
list(web_messages_zh["iwooos"]["productEvidenceWiringPreflightRetryReviewCandidate"]["items"].keys()),
|
|
key,
|
|
)
|
|
assert_contains(
|
|
"web_messages.en.iwooos.productEvidenceWiringPreflightRetryReviewCandidate.items",
|
|
list(web_messages_en["iwooos"]["productEvidenceWiringPreflightRetryReviewCandidate"]["items"].keys()),
|
|
key,
|
|
)
|
|
assert_text_contains(
|
|
"iwooos_page.product_evidence_wiring_preflight_retry_review_candidate_preflight_testid",
|
|
iwooos_projection_page,
|
|
'data-testid="iwooos-product-evidence-wiring-preflight-retry-review-candidate-preflight-board"',
|
|
)
|
|
assert_text_contains(
|
|
"iwooos_page.product_evidence_wiring_preflight_retry_review_candidate_preflight_component",
|
|
iwooos_projection_page,
|
|
"IwoooSProductEvidenceWiringPreflightRetryReviewCandidatePreflightBoard",
|
|
)
|
|
for text in [
|
|
"iwooos_product_evidence_wiring_preflight_retry_review_preflight_check_count=8",
|
|
"iwooos_product_evidence_wiring_preflight_retry_review_preflight_current_stage=read_only_retry_review_candidate_preflight",
|
|
"iwooos_product_evidence_wiring_preflight_retry_review_preflight_visible_check_count=8",
|
|
"iwooos_product_evidence_wiring_preflight_retry_review_preflight_passed_count=0",
|
|
"iwooos_product_evidence_wiring_preflight_retry_review_preflight_failed_count=0",
|
|
"iwooos_product_evidence_wiring_preflight_retry_review_preflight_ready_for_queue_count=0",
|
|
"iwooos_product_evidence_wiring_preflight_retry_review_preflight_queue_open=false",
|
|
"iwooos_product_evidence_wiring_preflight_retry_review_preflight_candidate_created_count=0",
|
|
"iwooos_product_evidence_wiring_preflight_retry_review_preflight_reviewer_assigned_count=0",
|
|
"iwooos_product_evidence_wiring_preflight_retry_review_preflight_audit_event_emitted_count=0",
|
|
"iwooos_product_evidence_wiring_preflight_retry_review_preflight_ready_for_connection_count=0",
|
|
"iwooos_product_evidence_wiring_preflight_retry_review_preflight_ready_for_runtime_count=0",
|
|
"iwooos_product_evidence_wiring_preflight_retry_review_preflight_owner_response_accepted_count=0",
|
|
"iwooos_product_evidence_wiring_preflight_retry_review_preflight_redacted_evidence_pointer_accepted_count=0",
|
|
"iwooos_product_evidence_wiring_preflight_retry_review_preflight_source_control_truth_accepted_count=0",
|
|
"iwooos_product_evidence_wiring_preflight_retry_review_preflight_host_safety_window_approved=false",
|
|
"iwooos_product_evidence_wiring_preflight_retry_review_preflight_tool_summary_ingested=false",
|
|
"iwooos_product_evidence_wiring_preflight_retry_review_preflight_runtime_gate_open=false",
|
|
"iwooos_product_evidence_wiring_preflight_retry_review_preflight_public_secret_exposure_allowed=false",
|
|
"iwooos_product_evidence_wiring_preflight_retry_review_preflight_kali_execution_authorized=false",
|
|
"iwooos_product_evidence_wiring_preflight_retry_review_preflight_source_control_mutation_authorized=false",
|
|
"runtime_execution_authorized=false",
|
|
"active_runtime_gate_count=0",
|
|
"action_buttons_allowed=false",
|
|
"not_authorization=true",
|
|
"secret_value_collection_allowed=false",
|
|
"repo_creation_authorized=false",
|
|
"refs_sync_authorized=false",
|
|
"workflow_modification_authorized=false",
|
|
"github_primary_switch_authorized=false",
|
|
"gitea_disablement_authorized=false",
|
|
]:
|
|
assert_text_contains(
|
|
"iwooos_page.product_evidence_wiring_preflight_retry_review_candidate_preflight_boundary",
|
|
iwooos_projection_page,
|
|
text,
|
|
)
|
|
assert_contains(
|
|
"web_messages.zh-TW.iwooos.productEvidenceWiringPreflightRetryReviewCandidatePreflight",
|
|
list(web_messages_zh["iwooos"].keys()),
|
|
"productEvidenceWiringPreflightRetryReviewCandidatePreflight",
|
|
)
|
|
assert_contains(
|
|
"web_messages.en.iwooos.productEvidenceWiringPreflightRetryReviewCandidatePreflight",
|
|
list(web_messages_en["iwooos"].keys()),
|
|
"productEvidenceWiringPreflightRetryReviewCandidatePreflight",
|
|
)
|
|
for key in [
|
|
"title",
|
|
"subtitle",
|
|
"summary",
|
|
"items",
|
|
"checkLabel",
|
|
"requirementLabel",
|
|
"passLabel",
|
|
"failLabel",
|
|
"blockedLabel",
|
|
"boundaryTitle",
|
|
"boundaryIntro",
|
|
]:
|
|
assert_contains(
|
|
"web_messages.zh-TW.iwooos.productEvidenceWiringPreflightRetryReviewCandidatePreflight.keys",
|
|
list(web_messages_zh["iwooos"]["productEvidenceWiringPreflightRetryReviewCandidatePreflight"].keys()),
|
|
key,
|
|
)
|
|
assert_contains(
|
|
"web_messages.en.iwooos.productEvidenceWiringPreflightRetryReviewCandidatePreflight.keys",
|
|
list(web_messages_en["iwooos"]["productEvidenceWiringPreflightRetryReviewCandidatePreflight"].keys()),
|
|
key,
|
|
)
|
|
for key in ["checks", "passed", "queue", "runtime"]:
|
|
assert_contains(
|
|
"web_messages.zh-TW.iwooos.productEvidenceWiringPreflightRetryReviewCandidatePreflight.summary",
|
|
list(web_messages_zh["iwooos"]["productEvidenceWiringPreflightRetryReviewCandidatePreflight"]["summary"].keys()),
|
|
key,
|
|
)
|
|
assert_contains(
|
|
"web_messages.en.iwooos.productEvidenceWiringPreflightRetryReviewCandidatePreflight.summary",
|
|
list(web_messages_en["iwooos"]["productEvidenceWiringPreflightRetryReviewCandidatePreflight"]["summary"].keys()),
|
|
key,
|
|
)
|
|
for key in [
|
|
"candidateIdentity",
|
|
"sourceOutcomeTrace",
|
|
"ownerScope",
|
|
"redactionAttestation",
|
|
"sourceControlTruth",
|
|
"hostSafetyWindow",
|
|
"toolSummary",
|
|
"runtimeSeparation",
|
|
]:
|
|
assert_contains(
|
|
"web_messages.zh-TW.iwooos.productEvidenceWiringPreflightRetryReviewCandidatePreflight.items",
|
|
list(web_messages_zh["iwooos"]["productEvidenceWiringPreflightRetryReviewCandidatePreflight"]["items"].keys()),
|
|
key,
|
|
)
|
|
assert_contains(
|
|
"web_messages.en.iwooos.productEvidenceWiringPreflightRetryReviewCandidatePreflight.items",
|
|
list(web_messages_en["iwooos"]["productEvidenceWiringPreflightRetryReviewCandidatePreflight"]["items"].keys()),
|
|
key,
|
|
)
|
|
assert_text_contains(
|
|
"iwooos_page.product_evidence_wiring_preflight_retry_review_candidate_preflight_outcomes_testid",
|
|
iwooos_projection_page,
|
|
'data-testid="iwooos-product-evidence-wiring-preflight-retry-review-candidate-preflight-outcomes-board"',
|
|
)
|
|
assert_text_contains(
|
|
"iwooos_page.product_evidence_wiring_preflight_retry_review_candidate_preflight_outcomes_component",
|
|
iwooos_projection_page,
|
|
"IwoooSProductEvidenceWiringPreflightRetryReviewCandidatePreflightOutcomesBoard",
|
|
)
|
|
for text in [
|
|
"iwooos_product_evidence_wiring_preflight_retry_review_preflight_outcome_lane_count=8",
|
|
"iwooos_product_evidence_wiring_preflight_retry_review_preflight_outcome_current_stage=read_only_retry_review_candidate_preflight_outcome_routing",
|
|
"iwooos_product_evidence_wiring_preflight_retry_review_preflight_outcome_visible_lane_count=8",
|
|
"iwooos_product_evidence_wiring_preflight_retry_review_preflight_outcome_ready_for_queue_count=0",
|
|
"iwooos_product_evidence_wiring_preflight_retry_review_preflight_outcome_returned_count=0",
|
|
"iwooos_product_evidence_wiring_preflight_retry_review_preflight_outcome_quarantined_count=0",
|
|
"iwooos_product_evidence_wiring_preflight_retry_review_preflight_outcome_candidate_created_count=0",
|
|
"iwooos_product_evidence_wiring_preflight_retry_review_preflight_outcome_reviewer_assigned_count=0",
|
|
"iwooos_product_evidence_wiring_preflight_retry_review_preflight_outcome_audit_event_emitted_count=0",
|
|
"iwooos_product_evidence_wiring_preflight_retry_review_preflight_outcome_ready_for_connection_count=0",
|
|
"iwooos_product_evidence_wiring_preflight_retry_review_preflight_outcome_ready_for_runtime_count=0",
|
|
"iwooos_product_evidence_wiring_preflight_retry_review_preflight_outcome_owner_response_accepted_count=0",
|
|
"iwooos_product_evidence_wiring_preflight_retry_review_preflight_outcome_redacted_evidence_pointer_accepted_count=0",
|
|
"iwooos_product_evidence_wiring_preflight_retry_review_preflight_outcome_source_control_truth_accepted_count=0",
|
|
"iwooos_product_evidence_wiring_preflight_retry_review_preflight_outcome_host_safety_window_approved=false",
|
|
"iwooos_product_evidence_wiring_preflight_retry_review_preflight_outcome_tool_summary_ingested=false",
|
|
"iwooos_product_evidence_wiring_preflight_retry_review_preflight_outcome_runtime_gate_open=false",
|
|
"iwooos_product_evidence_wiring_preflight_retry_review_preflight_outcome_public_secret_exposure_allowed=false",
|
|
"iwooos_product_evidence_wiring_preflight_retry_review_preflight_outcome_kali_execution_authorized=false",
|
|
"iwooos_product_evidence_wiring_preflight_retry_review_preflight_outcome_source_control_mutation_authorized=false",
|
|
"runtime_execution_authorized=false",
|
|
"active_runtime_gate_count=0",
|
|
"action_buttons_allowed=false",
|
|
"not_authorization=true",
|
|
"secret_value_collection_allowed=false",
|
|
"repo_creation_authorized=false",
|
|
"refs_sync_authorized=false",
|
|
"workflow_modification_authorized=false",
|
|
"github_primary_switch_authorized=false",
|
|
"gitea_disablement_authorized=false",
|
|
]:
|
|
assert_text_contains(
|
|
"iwooos_page.product_evidence_wiring_preflight_retry_review_candidate_preflight_outcomes_boundary",
|
|
iwooos_projection_page,
|
|
text,
|
|
)
|
|
assert_contains(
|
|
"web_messages.zh-TW.iwooos.productEvidenceWiringPreflightRetryReviewCandidatePreflightOutcomes",
|
|
list(web_messages_zh["iwooos"].keys()),
|
|
"productEvidenceWiringPreflightRetryReviewCandidatePreflightOutcomes",
|
|
)
|
|
assert_contains(
|
|
"web_messages.en.iwooos.productEvidenceWiringPreflightRetryReviewCandidatePreflightOutcomes",
|
|
list(web_messages_en["iwooos"].keys()),
|
|
"productEvidenceWiringPreflightRetryReviewCandidatePreflightOutcomes",
|
|
)
|
|
for key in [
|
|
"title",
|
|
"subtitle",
|
|
"summary",
|
|
"items",
|
|
"outcomeLabel",
|
|
"decisionLabel",
|
|
"nextLabel",
|
|
"blockedLabel",
|
|
"boundaryTitle",
|
|
"boundaryIntro",
|
|
]:
|
|
assert_contains(
|
|
"web_messages.zh-TW.iwooos.productEvidenceWiringPreflightRetryReviewCandidatePreflightOutcomes.keys",
|
|
list(web_messages_zh["iwooos"]["productEvidenceWiringPreflightRetryReviewCandidatePreflightOutcomes"].keys()),
|
|
key,
|
|
)
|
|
assert_contains(
|
|
"web_messages.en.iwooos.productEvidenceWiringPreflightRetryReviewCandidatePreflightOutcomes.keys",
|
|
list(web_messages_en["iwooos"]["productEvidenceWiringPreflightRetryReviewCandidatePreflightOutcomes"].keys()),
|
|
key,
|
|
)
|
|
for key in ["outcomes", "ready", "queue", "runtime"]:
|
|
assert_contains(
|
|
"web_messages.zh-TW.iwooos.productEvidenceWiringPreflightRetryReviewCandidatePreflightOutcomes.summary",
|
|
list(web_messages_zh["iwooos"]["productEvidenceWiringPreflightRetryReviewCandidatePreflightOutcomes"]["summary"].keys()),
|
|
key,
|
|
)
|
|
assert_contains(
|
|
"web_messages.en.iwooos.productEvidenceWiringPreflightRetryReviewCandidatePreflightOutcomes.summary",
|
|
list(web_messages_en["iwooos"]["productEvidenceWiringPreflightRetryReviewCandidatePreflightOutcomes"]["summary"].keys()),
|
|
key,
|
|
)
|
|
for key in [
|
|
"stayReadOnly",
|
|
"returnIdentity",
|
|
"returnTrace",
|
|
"returnOwnerScope",
|
|
"quarantineRedaction",
|
|
"sourceHostHold",
|
|
"readyForHumanReviewWait",
|
|
"runtimeStillClosed",
|
|
]:
|
|
assert_contains(
|
|
"web_messages.zh-TW.iwooos.productEvidenceWiringPreflightRetryReviewCandidatePreflightOutcomes.items",
|
|
list(web_messages_zh["iwooos"]["productEvidenceWiringPreflightRetryReviewCandidatePreflightOutcomes"]["items"].keys()),
|
|
key,
|
|
)
|
|
assert_contains(
|
|
"web_messages.en.iwooos.productEvidenceWiringPreflightRetryReviewCandidatePreflightOutcomes.items",
|
|
list(web_messages_en["iwooos"]["productEvidenceWiringPreflightRetryReviewCandidatePreflightOutcomes"]["items"].keys()),
|
|
key,
|
|
)
|
|
assert_text_contains(
|
|
"iwooos_page.product_evidence_wiring_preflight_retry_review_candidate_preflight_recovery_ledger_testid",
|
|
iwooos_projection_page,
|
|
'data-testid="iwooos-product-evidence-wiring-preflight-retry-review-candidate-preflight-recovery-ledger-board"',
|
|
)
|
|
assert_text_contains(
|
|
"iwooos_page.product_evidence_wiring_preflight_retry_review_candidate_preflight_recovery_ledger_component",
|
|
iwooos_projection_page,
|
|
"IwoooSProductEvidenceWiringPreflightRetryReviewCandidatePreflightRecoveryLedgerBoard",
|
|
)
|
|
for text in [
|
|
"iwooos_product_evidence_wiring_preflight_retry_review_preflight_recovery_queue_count=8",
|
|
"iwooos_product_evidence_wiring_preflight_retry_review_preflight_recovery_current_stage=read_only_retry_review_candidate_preflight_recovery_ledger",
|
|
"iwooos_product_evidence_wiring_preflight_retry_review_preflight_recovery_visible_queue_count=8",
|
|
"iwooos_product_evidence_wiring_preflight_retry_review_preflight_recovery_submitted_count=0",
|
|
"iwooos_product_evidence_wiring_preflight_retry_review_preflight_recovery_accepted_count=0",
|
|
"iwooos_product_evidence_wiring_preflight_retry_review_preflight_recovery_rejected_count=0",
|
|
"iwooos_product_evidence_wiring_preflight_retry_review_preflight_recovery_quarantined_count=0",
|
|
"iwooos_product_evidence_wiring_preflight_retry_review_preflight_recovery_ready_for_preflight_retry_count=0",
|
|
"iwooos_product_evidence_wiring_preflight_retry_review_preflight_recovery_ready_for_human_review_count=0",
|
|
"iwooos_product_evidence_wiring_preflight_retry_review_preflight_recovery_candidate_created_count=0",
|
|
"iwooos_product_evidence_wiring_preflight_retry_review_preflight_recovery_reviewer_assigned_count=0",
|
|
"iwooos_product_evidence_wiring_preflight_retry_review_preflight_recovery_audit_event_emitted_count=0",
|
|
"iwooos_product_evidence_wiring_preflight_retry_review_preflight_recovery_ready_for_runtime_count=0",
|
|
"iwooos_product_evidence_wiring_preflight_retry_review_preflight_recovery_owner_response_accepted_count=0",
|
|
"iwooos_product_evidence_wiring_preflight_retry_review_preflight_recovery_redacted_evidence_pointer_accepted_count=0",
|
|
"iwooos_product_evidence_wiring_preflight_retry_review_preflight_recovery_source_control_truth_accepted_count=0",
|
|
"iwooos_product_evidence_wiring_preflight_retry_review_preflight_recovery_host_safety_window_approved=false",
|
|
"iwooos_product_evidence_wiring_preflight_retry_review_preflight_recovery_tool_summary_ingested=false",
|
|
"iwooos_product_evidence_wiring_preflight_retry_review_preflight_recovery_runtime_gate_open=false",
|
|
"iwooos_product_evidence_wiring_preflight_retry_review_preflight_recovery_public_secret_exposure_allowed=false",
|
|
"iwooos_product_evidence_wiring_preflight_retry_review_preflight_recovery_kali_execution_authorized=false",
|
|
"iwooos_product_evidence_wiring_preflight_retry_review_preflight_recovery_source_control_mutation_authorized=false",
|
|
"runtime_execution_authorized=false",
|
|
"active_runtime_gate_count=0",
|
|
"action_buttons_allowed=false",
|
|
"not_authorization=true",
|
|
"secret_value_collection_allowed=false",
|
|
"repo_creation_authorized=false",
|
|
"refs_sync_authorized=false",
|
|
"workflow_modification_authorized=false",
|
|
"github_primary_switch_authorized=false",
|
|
"gitea_disablement_authorized=false",
|
|
]:
|
|
assert_text_contains(
|
|
"iwooos_page.product_evidence_wiring_preflight_retry_review_candidate_preflight_recovery_ledger_boundary",
|
|
iwooos_projection_page,
|
|
text,
|
|
)
|
|
assert_contains(
|
|
"web_messages.zh-TW.iwooos.productEvidenceWiringPreflightRetryReviewCandidatePreflightRecoveryLedger",
|
|
list(web_messages_zh["iwooos"].keys()),
|
|
"productEvidenceWiringPreflightRetryReviewCandidatePreflightRecoveryLedger",
|
|
)
|
|
assert_contains(
|
|
"web_messages.en.iwooos.productEvidenceWiringPreflightRetryReviewCandidatePreflightRecoveryLedger",
|
|
list(web_messages_en["iwooos"].keys()),
|
|
"productEvidenceWiringPreflightRetryReviewCandidatePreflightRecoveryLedger",
|
|
)
|
|
for key in [
|
|
"title",
|
|
"subtitle",
|
|
"summary",
|
|
"items",
|
|
"queueLabel",
|
|
"ownerLabel",
|
|
"requiredLabel",
|
|
"recoveryLabel",
|
|
"blockedLabel",
|
|
"boundaryTitle",
|
|
"boundaryIntro",
|
|
]:
|
|
assert_contains(
|
|
"web_messages.zh-TW.iwooos.productEvidenceWiringPreflightRetryReviewCandidatePreflightRecoveryLedger.keys",
|
|
list(web_messages_zh["iwooos"]["productEvidenceWiringPreflightRetryReviewCandidatePreflightRecoveryLedger"].keys()),
|
|
key,
|
|
)
|
|
assert_contains(
|
|
"web_messages.en.iwooos.productEvidenceWiringPreflightRetryReviewCandidatePreflightRecoveryLedger.keys",
|
|
list(web_messages_en["iwooos"]["productEvidenceWiringPreflightRetryReviewCandidatePreflightRecoveryLedger"].keys()),
|
|
key,
|
|
)
|
|
for key in ["queues", "submitted", "accepted", "runtime"]:
|
|
assert_contains(
|
|
"web_messages.zh-TW.iwooos.productEvidenceWiringPreflightRetryReviewCandidatePreflightRecoveryLedger.summary",
|
|
list(web_messages_zh["iwooos"]["productEvidenceWiringPreflightRetryReviewCandidatePreflightRecoveryLedger"]["summary"].keys()),
|
|
key,
|
|
)
|
|
assert_contains(
|
|
"web_messages.en.iwooos.productEvidenceWiringPreflightRetryReviewCandidatePreflightRecoveryLedger.summary",
|
|
list(web_messages_en["iwooos"]["productEvidenceWiringPreflightRetryReviewCandidatePreflightRecoveryLedger"]["summary"].keys()),
|
|
key,
|
|
)
|
|
for key in [
|
|
"identitySupplement",
|
|
"traceSupplement",
|
|
"ownerScopeSupplement",
|
|
"redactionResubmission",
|
|
"sourceControlEvidence",
|
|
"hostWindowEvidence",
|
|
"toolSummarySupplement",
|
|
"runtimeAttestation",
|
|
]:
|
|
assert_contains(
|
|
"web_messages.zh-TW.iwooos.productEvidenceWiringPreflightRetryReviewCandidatePreflightRecoveryLedger.items",
|
|
list(web_messages_zh["iwooos"]["productEvidenceWiringPreflightRetryReviewCandidatePreflightRecoveryLedger"]["items"].keys()),
|
|
key,
|
|
)
|
|
assert_contains(
|
|
"web_messages.en.iwooos.productEvidenceWiringPreflightRetryReviewCandidatePreflightRecoveryLedger.items",
|
|
list(web_messages_en["iwooos"]["productEvidenceWiringPreflightRetryReviewCandidatePreflightRecoveryLedger"]["items"].keys()),
|
|
key,
|
|
)
|
|
assert_text_contains(
|
|
"iwooos_page.product_evidence_wiring_preflight_retry_review_candidate_preflight_recovery_retry_gates_testid",
|
|
iwooos_projection_page,
|
|
'data-testid="iwooos-product-evidence-wiring-preflight-retry-review-candidate-preflight-recovery-retry-gates-board"',
|
|
)
|
|
assert_text_contains(
|
|
"iwooos_page.product_evidence_wiring_preflight_retry_review_candidate_preflight_recovery_retry_gates_component",
|
|
iwooos_projection_page,
|
|
"IwoooSProductEvidenceWiringPreflightRetryReviewCandidatePreflightRecoveryRetryGatesBoard",
|
|
)
|
|
for text in [
|
|
"iwooos_product_evidence_wiring_preflight_retry_review_preflight_recovery_retry_gate_count=8",
|
|
"iwooos_product_evidence_wiring_preflight_retry_review_preflight_recovery_retry_current_stage=read_only_retry_review_candidate_preflight_recovery_retry_gate",
|
|
"iwooos_product_evidence_wiring_preflight_retry_review_preflight_recovery_retry_visible_gate_count=8",
|
|
"iwooos_product_evidence_wiring_preflight_retry_review_preflight_recovery_retry_candidate_count=0",
|
|
"iwooos_product_evidence_wiring_preflight_retry_review_preflight_recovery_retry_submitted_count=0",
|
|
"iwooos_product_evidence_wiring_preflight_retry_review_preflight_recovery_retry_passed_count=0",
|
|
"iwooos_product_evidence_wiring_preflight_retry_review_preflight_recovery_retry_failed_count=0",
|
|
"iwooos_product_evidence_wiring_preflight_retry_review_preflight_recovery_retry_ready_for_preflight_retry_count=0",
|
|
"iwooos_product_evidence_wiring_preflight_retry_review_preflight_recovery_retry_ready_for_human_review_count=0",
|
|
"iwooos_product_evidence_wiring_preflight_retry_review_preflight_recovery_retry_candidate_created_count=0",
|
|
"iwooos_product_evidence_wiring_preflight_retry_review_preflight_recovery_retry_reviewer_assigned_count=0",
|
|
"iwooos_product_evidence_wiring_preflight_retry_review_preflight_recovery_retry_audit_event_emitted_count=0",
|
|
"iwooos_product_evidence_wiring_preflight_retry_review_preflight_recovery_retry_ready_for_runtime_count=0",
|
|
"iwooos_product_evidence_wiring_preflight_retry_review_preflight_recovery_retry_owner_response_accepted_count=0",
|
|
"iwooos_product_evidence_wiring_preflight_retry_review_preflight_recovery_retry_redacted_evidence_pointer_accepted_count=0",
|
|
"iwooos_product_evidence_wiring_preflight_retry_review_preflight_recovery_retry_source_control_truth_accepted_count=0",
|
|
"iwooos_product_evidence_wiring_preflight_retry_review_preflight_recovery_retry_host_safety_window_approved=false",
|
|
"iwooos_product_evidence_wiring_preflight_retry_review_preflight_recovery_retry_tool_summary_ingested=false",
|
|
"iwooos_product_evidence_wiring_preflight_retry_review_preflight_recovery_retry_runtime_gate_open=false",
|
|
"iwooos_product_evidence_wiring_preflight_retry_review_preflight_recovery_retry_public_secret_exposure_allowed=false",
|
|
"iwooos_product_evidence_wiring_preflight_retry_review_preflight_recovery_retry_kali_execution_authorized=false",
|
|
"iwooos_product_evidence_wiring_preflight_retry_review_preflight_recovery_retry_source_control_mutation_authorized=false",
|
|
"runtime_execution_authorized=false",
|
|
"active_runtime_gate_count=0",
|
|
"action_buttons_allowed=false",
|
|
"not_authorization=true",
|
|
"secret_value_collection_allowed=false",
|
|
"repo_creation_authorized=false",
|
|
"refs_sync_authorized=false",
|
|
"workflow_modification_authorized=false",
|
|
"github_primary_switch_authorized=false",
|
|
"gitea_disablement_authorized=false",
|
|
]:
|
|
assert_text_contains(
|
|
"iwooos_page.product_evidence_wiring_preflight_retry_review_candidate_preflight_recovery_retry_gates_boundary",
|
|
iwooos_projection_page,
|
|
text,
|
|
)
|
|
assert_contains(
|
|
"web_messages.zh-TW.iwooos.productEvidenceWiringPreflightRetryReviewCandidatePreflightRecoveryRetryGates",
|
|
list(web_messages_zh["iwooos"].keys()),
|
|
"productEvidenceWiringPreflightRetryReviewCandidatePreflightRecoveryRetryGates",
|
|
)
|
|
assert_contains(
|
|
"web_messages.en.iwooos.productEvidenceWiringPreflightRetryReviewCandidatePreflightRecoveryRetryGates",
|
|
list(web_messages_en["iwooos"].keys()),
|
|
"productEvidenceWiringPreflightRetryReviewCandidatePreflightRecoveryRetryGates",
|
|
)
|
|
for key in [
|
|
"title",
|
|
"subtitle",
|
|
"summary",
|
|
"items",
|
|
"gateLabel",
|
|
"readyLabel",
|
|
"retryLabel",
|
|
"blockedLabel",
|
|
"boundaryTitle",
|
|
"boundaryIntro",
|
|
]:
|
|
assert_contains(
|
|
"web_messages.zh-TW.iwooos.productEvidenceWiringPreflightRetryReviewCandidatePreflightRecoveryRetryGates.keys",
|
|
list(web_messages_zh["iwooos"]["productEvidenceWiringPreflightRetryReviewCandidatePreflightRecoveryRetryGates"].keys()),
|
|
key,
|
|
)
|
|
assert_contains(
|
|
"web_messages.en.iwooos.productEvidenceWiringPreflightRetryReviewCandidatePreflightRecoveryRetryGates.keys",
|
|
list(web_messages_en["iwooos"]["productEvidenceWiringPreflightRetryReviewCandidatePreflightRecoveryRetryGates"].keys()),
|
|
key,
|
|
)
|
|
for key in ["gates", "candidates", "passed", "runtime"]:
|
|
assert_contains(
|
|
"web_messages.zh-TW.iwooos.productEvidenceWiringPreflightRetryReviewCandidatePreflightRecoveryRetryGates.summary",
|
|
list(web_messages_zh["iwooos"]["productEvidenceWiringPreflightRetryReviewCandidatePreflightRecoveryRetryGates"]["summary"].keys()),
|
|
key,
|
|
)
|
|
assert_contains(
|
|
"web_messages.en.iwooos.productEvidenceWiringPreflightRetryReviewCandidatePreflightRecoveryRetryGates.summary",
|
|
list(web_messages_en["iwooos"]["productEvidenceWiringPreflightRetryReviewCandidatePreflightRecoveryRetryGates"]["summary"].keys()),
|
|
key,
|
|
)
|
|
for key in [
|
|
"identityGate",
|
|
"traceGate",
|
|
"ownerScopeGate",
|
|
"redactionGate",
|
|
"sourceControlGate",
|
|
"hostWindowGate",
|
|
"toolSummaryGate",
|
|
"runtimeGate",
|
|
]:
|
|
assert_contains(
|
|
"web_messages.zh-TW.iwooos.productEvidenceWiringPreflightRetryReviewCandidatePreflightRecoveryRetryGates.items",
|
|
list(web_messages_zh["iwooos"]["productEvidenceWiringPreflightRetryReviewCandidatePreflightRecoveryRetryGates"]["items"].keys()),
|
|
key,
|
|
)
|
|
assert_contains(
|
|
"web_messages.en.iwooos.productEvidenceWiringPreflightRetryReviewCandidatePreflightRecoveryRetryGates.items",
|
|
list(web_messages_en["iwooos"]["productEvidenceWiringPreflightRetryReviewCandidatePreflightRecoveryRetryGates"]["items"].keys()),
|
|
key,
|
|
)
|
|
assert_text_contains(
|
|
"iwooos_page.first_progress_unlock_path_testid",
|
|
iwooos_projection_page,
|
|
'data-testid="iwooos-first-progress-unlock-path-board"',
|
|
)
|
|
assert_text_contains(
|
|
"iwooos_page.first_progress_unlock_path_component",
|
|
iwooos_projection_page,
|
|
"IwoooSFirstProgressUnlockPathBoard",
|
|
)
|
|
assert_equal(
|
|
"iwooos_page.first_progress_unlock_path_render_count",
|
|
iwooos_projection_page.count("<IwoooSFirstProgressUnlockPathBoard />"),
|
|
1,
|
|
)
|
|
assert_text_before(
|
|
"iwooos_page.first_progress_unlock_path_before_visual_dashboard",
|
|
iwooos_projection_page,
|
|
"<IwoooSFirstProgressUnlockPathBoard />",
|
|
"<IwoooSVisualCommandDashboard />",
|
|
)
|
|
assert_text_before(
|
|
"iwooos_page.first_progress_unlock_path_first_layer_order",
|
|
iwooos_projection_page,
|
|
"<IwoooSFirstProgressUnlockPathBoard />",
|
|
"<IwoooSProfessionalSecurityExperience />",
|
|
)
|
|
assert_text_before(
|
|
"iwooos_page.decision_gate_group_contains_first_progress_unlock_path",
|
|
iwooos_projection_page,
|
|
'id="iwooos-decision-gate-visuals"',
|
|
"<IwoooSFirstProgressUnlockPathBoard />",
|
|
)
|
|
assert_text_before(
|
|
"iwooos_page.first_progress_unlock_path_before_scope_evidence_group",
|
|
iwooos_projection_page,
|
|
"<IwoooSFirstProgressUnlockPathBoard />",
|
|
'id="iwooos-scope-evidence-visuals"',
|
|
)
|
|
assert_text_contains(
|
|
"iwooos_page.first_progress_unlock_path_boundary_details",
|
|
iwooos_projection_page,
|
|
'data-testid="iwooos-first-progress-unlock-path-boundaries"',
|
|
)
|
|
expected_first_progress_unlock_path_step_ids = [
|
|
"owner_response_scope",
|
|
"redacted_evidence_pointer",
|
|
"intake_preflight",
|
|
"review_acceptance",
|
|
"headline_review_candidate",
|
|
]
|
|
first_progress_unlock_path_steps = iwooos_projection["first_progress_unlock_path_steps"]
|
|
assert_equal(
|
|
"iwooos_projection.first_progress_unlock_path_steps.ids",
|
|
[item["step_id"] for item in first_progress_unlock_path_steps],
|
|
expected_first_progress_unlock_path_step_ids,
|
|
)
|
|
assert_equal(
|
|
"iwooos_projection.first_progress_unlock_path_steps.display_order",
|
|
[item["display_order"] for item in first_progress_unlock_path_steps],
|
|
list(range(1, len(expected_first_progress_unlock_path_step_ids) + 1)),
|
|
)
|
|
for item in first_progress_unlock_path_steps:
|
|
assert_equal(
|
|
f"iwooos_projection.first_progress_unlock_path_steps.{item['step_id']}.source_focus",
|
|
item["source_focus"],
|
|
"s4_9_owner_response",
|
|
)
|
|
assert_equal(
|
|
f"iwooos_projection.first_progress_unlock_path_steps.{item['step_id']}.display_mode",
|
|
item["display_mode"],
|
|
"first_layer_progress_unlock_path",
|
|
)
|
|
for count_key in [
|
|
"owner_response_received_count",
|
|
"owner_response_accepted_count",
|
|
"redacted_evidence_pointer_count",
|
|
"preflight_passed_count",
|
|
]:
|
|
assert_equal(
|
|
f"iwooos_projection.first_progress_unlock_path_steps.{item['step_id']}.{count_key}",
|
|
item[count_key],
|
|
0,
|
|
)
|
|
for flag in [
|
|
"headline_review_authorized",
|
|
"runtime_gate_opened",
|
|
"runtime_execution_authorized",
|
|
"action_buttons_allowed",
|
|
]:
|
|
assert_false(
|
|
f"iwooos_projection.first_progress_unlock_path_steps.{item['step_id']}.{flag}",
|
|
item[flag],
|
|
)
|
|
assert_true(
|
|
f"iwooos_projection.first_progress_unlock_path_steps.{item['step_id']}.not_authorization",
|
|
item["not_authorization"],
|
|
)
|
|
expected_progress_integrity_signal_ids = [
|
|
"coverageVisible",
|
|
"evidenceMissing",
|
|
"executionLocked",
|
|
]
|
|
progress_integrity_signals = iwooos_projection["progress_integrity_ribbon_signals"]
|
|
assert_equal(
|
|
"iwooos_projection.progress_integrity_ribbon_signals.ids",
|
|
[item["signal_id"] for item in progress_integrity_signals],
|
|
expected_progress_integrity_signal_ids,
|
|
)
|
|
assert_equal(
|
|
"iwooos_projection.progress_integrity_ribbon_signals.display_order",
|
|
[item["display_order"] for item in progress_integrity_signals],
|
|
list(range(1, len(expected_progress_integrity_signal_ids) + 1)),
|
|
)
|
|
assert_equal(
|
|
"iwooos_projection.progress_integrity_ribbon_signals.percents",
|
|
[item["percent"] for item in progress_integrity_signals],
|
|
[92, 0, 0],
|
|
)
|
|
assert_equal(
|
|
"iwooos_projection.progress_integrity_ribbon_signals.values",
|
|
[item["value"] for item in progress_integrity_signals],
|
|
["9 類", "0 / 3", "0"],
|
|
)
|
|
for item in progress_integrity_signals:
|
|
signal_id = item["signal_id"]
|
|
assert_equal(
|
|
f"iwooos_projection.progress_integrity_ribbon_signals.{signal_id}.display_mode",
|
|
item["display_mode"],
|
|
"first_screen_progress_integrity_ribbon",
|
|
)
|
|
assert_equal(
|
|
f"iwooos_projection.progress_integrity_ribbon_signals.{signal_id}.headline_percent",
|
|
item["headline_percent"],
|
|
64,
|
|
)
|
|
assert_equal(
|
|
f"iwooos_projection.progress_integrity_ribbon_signals.{signal_id}.headline_percent_delta",
|
|
item["headline_percent_delta"],
|
|
3,
|
|
)
|
|
assert_equal(
|
|
f"iwooos_projection.progress_integrity_ribbon_signals.{signal_id}.runtime_gate_count",
|
|
item["runtime_gate_count"],
|
|
0,
|
|
)
|
|
assert_false(
|
|
f"iwooos_projection.progress_integrity_ribbon_signals.{signal_id}.runtime_execution_authorized",
|
|
item["runtime_execution_authorized"],
|
|
)
|
|
assert_false(
|
|
f"iwooos_projection.progress_integrity_ribbon_signals.{signal_id}.action_buttons_allowed",
|
|
item["action_buttons_allowed"],
|
|
)
|
|
assert_true(
|
|
f"iwooos_projection.progress_integrity_ribbon_signals.{signal_id}.not_authorization",
|
|
item["not_authorization"],
|
|
)
|
|
evidence_signal = next(item for item in progress_integrity_signals if item["signal_id"] == "evidenceMissing")
|
|
for count_key in [
|
|
"owner_response_received_count",
|
|
"owner_response_accepted_count",
|
|
"redacted_evidence_refs_received_count",
|
|
]:
|
|
assert_equal(
|
|
f"iwooos_projection.progress_integrity_ribbon_signals.evidenceMissing.{count_key}",
|
|
evidence_signal[count_key],
|
|
0,
|
|
)
|
|
execution_signal = next(item for item in progress_integrity_signals if item["signal_id"] == "executionLocked")
|
|
for flag in ["scan_authorized", "host_change_authorized", "source_control_mutation_authorized"]:
|
|
assert_false(
|
|
f"iwooos_projection.progress_integrity_ribbon_signals.executionLocked.{flag}",
|
|
execution_signal[flag],
|
|
)
|
|
for text in [
|
|
'data-testid="iwooos-progress-integrity-ribbon"',
|
|
'data-testid="iwooos-progress-integrity-ribbon-signals"',
|
|
'data-testid="iwooos-progress-integrity-ribbon-boundaries"',
|
|
"IwoooSProgressIntegrityRibbon",
|
|
"IwoooSProgressIntegritySignal",
|
|
"progressIntegritySignals",
|
|
"progressIntegrityRibbonBoundaries",
|
|
"conic-gradient",
|
|
"progressIntegrityRibbon",
|
|
]:
|
|
assert_text_contains(
|
|
"iwooos_page.progress_integrity_ribbon",
|
|
iwooos_projection_page,
|
|
text,
|
|
)
|
|
assert_text_before(
|
|
"iwooos_page.progress_integrity_before_executive_snapshot",
|
|
iwooos_projection_page,
|
|
"<IwoooSProgressIntegrityRibbon />",
|
|
"<IwoooSExecutiveSnapshotBoard />",
|
|
)
|
|
for text in [
|
|
"iwooos_progress_integrity_ribbon_first_layer=true",
|
|
"iwooos_progress_integrity_ribbon_signal_count=3",
|
|
"iwooos_progress_integrity_ribbon_headline_percent=64",
|
|
"iwooos_progress_integrity_ribbon_headline_delta=3",
|
|
"iwooos_progress_integrity_ribbon_read_only_scope_count=9",
|
|
"iwooos_progress_integrity_ribbon_pending_evidence_gate_count=3",
|
|
"iwooos_progress_integrity_ribbon_runtime_gate_count=0",
|
|
"owner_response_received_count=0",
|
|
"owner_response_accepted_count=0",
|
|
"redacted_evidence_refs_received_count=0",
|
|
"runtime_execution_authorized=false",
|
|
"active_runtime_gate_count=0",
|
|
"action_buttons_allowed=false",
|
|
"not_authorization=true",
|
|
]:
|
|
assert_text_contains(
|
|
"iwooos_page.progress_integrity_ribbon_boundary",
|
|
iwooos_projection_page,
|
|
text,
|
|
)
|
|
expected_executive_snapshot_card_ids = [
|
|
"visibleWork",
|
|
"assetMesh",
|
|
"nextBlocker",
|
|
"reviewFixCandidate",
|
|
"runtimeLock",
|
|
]
|
|
executive_snapshot_cards = iwooos_projection["executive_snapshot_cards"]
|
|
assert_equal(
|
|
"iwooos_projection.executive_snapshot_cards.ids",
|
|
[item["card_id"] for item in executive_snapshot_cards],
|
|
expected_executive_snapshot_card_ids,
|
|
)
|
|
assert_equal(
|
|
"iwooos_projection.executive_snapshot_cards.display_order",
|
|
[item["display_order"] for item in executive_snapshot_cards],
|
|
list(range(1, len(expected_executive_snapshot_card_ids) + 1)),
|
|
)
|
|
for item in executive_snapshot_cards:
|
|
card_id = item["card_id"]
|
|
assert_equal(
|
|
f"iwooos_projection.executive_snapshot_cards.{card_id}.display_mode",
|
|
item["display_mode"],
|
|
"first_screen_executive_snapshot",
|
|
)
|
|
assert_false(
|
|
f"iwooos_projection.executive_snapshot_cards.{card_id}.execution_action_button_allowed",
|
|
item["execution_action_button_allowed"],
|
|
)
|
|
assert_false(
|
|
f"iwooos_projection.executive_snapshot_cards.{card_id}.runtime_gate_opened",
|
|
item["runtime_gate_opened"],
|
|
)
|
|
assert_false(
|
|
f"iwooos_projection.executive_snapshot_cards.{card_id}.runtime_execution_authorized",
|
|
item["runtime_execution_authorized"],
|
|
)
|
|
assert_true(
|
|
f"iwooos_projection.executive_snapshot_cards.{card_id}.not_authorization",
|
|
item["not_authorization"],
|
|
)
|
|
runtime_lock_card = next(item for item in executive_snapshot_cards if item["card_id"] == "runtimeLock")
|
|
for flag in ["scan_authorized", "host_change_authorized", "source_control_mutation_authorized"]:
|
|
assert_false(
|
|
f"iwooos_projection.executive_snapshot_cards.runtimeLock.{flag}",
|
|
runtime_lock_card[flag],
|
|
)
|
|
next_blocker_card = next(item for item in executive_snapshot_cards if item["card_id"] == "nextBlocker")
|
|
for count_key in ["owner_response_received_count", "owner_response_accepted_count"]:
|
|
assert_equal(
|
|
f"iwooos_projection.executive_snapshot_cards.nextBlocker.{count_key}",
|
|
next_blocker_card[count_key],
|
|
0,
|
|
)
|
|
review_fix_candidate_card = next(
|
|
item for item in executive_snapshot_cards if item["card_id"] == "reviewFixCandidate"
|
|
)
|
|
for count_key in ["review_fix_candidate_count"]:
|
|
assert_equal(
|
|
f"iwooos_projection.executive_snapshot_cards.reviewFixCandidate.{count_key}",
|
|
review_fix_candidate_card[count_key],
|
|
0,
|
|
)
|
|
for flag in ["automatic_code_change_authorized", "automatic_deploy_authorized"]:
|
|
assert_false(
|
|
f"iwooos_projection.executive_snapshot_cards.reviewFixCandidate.{flag}",
|
|
review_fix_candidate_card[flag],
|
|
)
|
|
expected_executive_snapshot_axis_ids = [
|
|
"framework",
|
|
"evidence",
|
|
"runtime",
|
|
]
|
|
executive_snapshot_axes = iwooos_projection["executive_snapshot_axes"]
|
|
assert_equal(
|
|
"iwooos_projection.executive_snapshot_axes.ids",
|
|
[item["axis_id"] for item in executive_snapshot_axes],
|
|
expected_executive_snapshot_axis_ids,
|
|
)
|
|
assert_equal(
|
|
"iwooos_projection.executive_snapshot_axes.display_order",
|
|
[item["display_order"] for item in executive_snapshot_axes],
|
|
list(range(1, len(expected_executive_snapshot_axis_ids) + 1)),
|
|
)
|
|
assert_equal(
|
|
"iwooos_projection.executive_snapshot_axes.percents",
|
|
[item["percent"] for item in executive_snapshot_axes],
|
|
[92, 0, 0],
|
|
)
|
|
for item in executive_snapshot_axes:
|
|
axis_id = item["axis_id"]
|
|
assert_equal(
|
|
f"iwooos_projection.executive_snapshot_axes.{axis_id}.display_mode",
|
|
item["display_mode"],
|
|
"first_screen_executive_snapshot_axis",
|
|
)
|
|
assert_false(
|
|
f"iwooos_projection.executive_snapshot_axes.{axis_id}.runtime_delta",
|
|
item["runtime_delta"],
|
|
)
|
|
assert_true(
|
|
f"iwooos_projection.executive_snapshot_axes.{axis_id}.not_authorization",
|
|
item["not_authorization"],
|
|
)
|
|
for text in [
|
|
'data-testid="iwooos-executive-snapshot-board"',
|
|
'data-testid="iwooos-executive-snapshot-overview"',
|
|
'data-testid="iwooos-executive-snapshot-axes-grid"',
|
|
'data-testid="iwooos-executive-snapshot-cards-grid"',
|
|
'data-testid="iwooos-executive-snapshot-boundaries"',
|
|
"IwoooSExecutiveSnapshotBoard",
|
|
"IwoooSExecutiveSnapshotCard",
|
|
"IwoooSExecutiveSnapshotAxis",
|
|
"iwooosExecutiveSnapshotCards",
|
|
"iwooosExecutiveSnapshotAxes",
|
|
"iwooosExecutiveSnapshotBoundaries",
|
|
]:
|
|
assert_text_contains(
|
|
"iwooos_page.executive_snapshot",
|
|
iwooos_projection_page,
|
|
text,
|
|
)
|
|
for card_id in expected_executive_snapshot_card_ids:
|
|
assert_text_contains(
|
|
f"iwooos_page.executive_snapshot_card_{card_id}",
|
|
iwooos_projection_page,
|
|
f"data-testid={{`iwooos-executive-snapshot-card-${{item.key}}`}}",
|
|
)
|
|
for axis_id in expected_executive_snapshot_axis_ids:
|
|
assert_text_contains(
|
|
f"iwooos_page.executive_snapshot_axis_{axis_id}",
|
|
iwooos_projection_page,
|
|
f"data-testid={{`iwooos-executive-snapshot-axis-${{item.key}}`}}",
|
|
)
|
|
assert_text_before(
|
|
"iwooos_page.executive_snapshot_before_focus_deck",
|
|
iwooos_projection_page,
|
|
"<IwoooSExecutiveSnapshotBoard />",
|
|
"<IwoooSFocusDeckBoard />",
|
|
)
|
|
for text in [
|
|
"iwooos_executive_snapshot_first_layer=true",
|
|
"iwooos_executive_snapshot_card_count=5",
|
|
"iwooos_executive_snapshot_axis_count=3",
|
|
"iwooos_executive_snapshot_above_focus_deck=true",
|
|
"iwooos_executive_snapshot_explains_done_next_blocked=true",
|
|
"iwooos_executive_snapshot_review_fix_candidate_count=0",
|
|
"iwooos_executive_snapshot_review_fix_candidate_execution_allowed=false",
|
|
"iwooos_executive_snapshot_execution_action_buttons_allowed=false",
|
|
"iwooos_executive_snapshot_runtime_gate_count=0",
|
|
"iwooos_executive_snapshot_owner_response_received_count=0",
|
|
"iwooos_executive_snapshot_owner_response_accepted_count=0",
|
|
"iwooos_executive_snapshot_scan_authorized=false",
|
|
"iwooos_executive_snapshot_host_change_authorized=false",
|
|
"iwooos_executive_snapshot_source_control_mutation_authorized=false",
|
|
"runtime_execution_authorized=false",
|
|
"active_runtime_gate_count=0",
|
|
"action_buttons_allowed=false",
|
|
"not_authorization=true",
|
|
]:
|
|
assert_text_contains(
|
|
"iwooos_page.executive_snapshot_boundary",
|
|
iwooos_projection_page,
|
|
text,
|
|
)
|
|
expected_first_screen_depth_map_layer_ids = [
|
|
"visible",
|
|
"advanced",
|
|
"ledger",
|
|
"runtime",
|
|
]
|
|
first_screen_depth_map_layers = iwooos_projection["first_screen_depth_map_layers"]
|
|
assert_equal(
|
|
"iwooos_projection.first_screen_depth_map_layers.ids",
|
|
[item["layer_id"] for item in first_screen_depth_map_layers],
|
|
expected_first_screen_depth_map_layer_ids,
|
|
)
|
|
assert_equal(
|
|
"iwooos_projection.first_screen_depth_map_layers.display_order",
|
|
[item["display_order"] for item in first_screen_depth_map_layers],
|
|
list(range(1, len(expected_first_screen_depth_map_layer_ids) + 1)),
|
|
)
|
|
first_screen_depth_surface_counts = {
|
|
item["layer_id"]: item["surface_count"] for item in first_screen_depth_map_layers
|
|
}
|
|
assert_equal("iwooos_projection.first_screen_depth_map_layers.visible.surface_count", first_screen_depth_surface_counts["visible"], 4)
|
|
assert_equal("iwooos_projection.first_screen_depth_map_layers.advanced.surface_count", first_screen_depth_surface_counts["advanced"], 2)
|
|
assert_equal("iwooos_projection.first_screen_depth_map_layers.ledger.surface_count", first_screen_depth_surface_counts["ledger"], 4)
|
|
assert_equal("iwooos_projection.first_screen_depth_map_layers.runtime.surface_count", first_screen_depth_surface_counts["runtime"], 0)
|
|
for item in first_screen_depth_map_layers:
|
|
layer_id = item["layer_id"]
|
|
assert_equal(
|
|
f"iwooos_projection.first_screen_depth_map_layers.{layer_id}.display_mode",
|
|
item["display_mode"],
|
|
"first_screen_depth_map",
|
|
)
|
|
assert_equal(
|
|
f"iwooos_projection.first_screen_depth_map_layers.{layer_id}.default_visible",
|
|
item["default_visible"],
|
|
layer_id == "visible",
|
|
)
|
|
assert_equal(
|
|
f"iwooos_projection.first_screen_depth_map_layers.{layer_id}.runtime_gate_count",
|
|
item["runtime_gate_count"],
|
|
0,
|
|
)
|
|
assert_false(
|
|
f"iwooos_projection.first_screen_depth_map_layers.{layer_id}.runtime_execution_authorized",
|
|
item["runtime_execution_authorized"],
|
|
)
|
|
assert_false(
|
|
f"iwooos_projection.first_screen_depth_map_layers.{layer_id}.action_buttons_allowed",
|
|
item["action_buttons_allowed"],
|
|
)
|
|
assert_true(
|
|
f"iwooos_projection.first_screen_depth_map_layers.{layer_id}.not_authorization",
|
|
item["not_authorization"],
|
|
)
|
|
runtime_depth_layer = next(item for item in first_screen_depth_map_layers if item["layer_id"] == "runtime")
|
|
for flag in ["scan_authorized", "host_change_authorized", "source_control_mutation_authorized"]:
|
|
assert_false(
|
|
f"iwooos_projection.first_screen_depth_map_layers.runtime.{flag}",
|
|
runtime_depth_layer[flag],
|
|
)
|
|
expected_progress_evidence_rail_item_ids = [
|
|
"ownerResponses",
|
|
"redactedEvidence",
|
|
"reviewAcceptance",
|
|
"githubPrimary",
|
|
"runtimeGate",
|
|
]
|
|
progress_evidence_rail_items = iwooos_projection["progress_evidence_rail_items"]
|
|
assert_equal(
|
|
"iwooos_projection.progress_evidence_rail_items.ids",
|
|
[item["item_id"] for item in progress_evidence_rail_items],
|
|
expected_progress_evidence_rail_item_ids,
|
|
)
|
|
assert_equal(
|
|
"iwooos_projection.progress_evidence_rail_items.display_order",
|
|
[item["display_order"] for item in progress_evidence_rail_items],
|
|
list(range(1, len(expected_progress_evidence_rail_item_ids) + 1)),
|
|
)
|
|
progress_evidence_rail_values = {item["item_id"]: item["value"] for item in progress_evidence_rail_items}
|
|
assert_equal("iwooos_projection.progress_evidence_rail_items.ownerResponses.value", progress_evidence_rail_values["ownerResponses"], "0/4")
|
|
assert_equal("iwooos_projection.progress_evidence_rail_items.redactedEvidence.value", progress_evidence_rail_values["redactedEvidence"], "0")
|
|
assert_equal("iwooos_projection.progress_evidence_rail_items.reviewAcceptance.value", progress_evidence_rail_values["reviewAcceptance"], "0")
|
|
assert_equal("iwooos_projection.progress_evidence_rail_items.githubPrimary.value", progress_evidence_rail_values["githubPrimary"], "0/10")
|
|
assert_equal("iwooos_projection.progress_evidence_rail_items.runtimeGate.value", progress_evidence_rail_values["runtimeGate"], "0")
|
|
for item in progress_evidence_rail_items:
|
|
item_id = item["item_id"]
|
|
assert_equal(
|
|
f"iwooos_projection.progress_evidence_rail_items.{item_id}.display_mode",
|
|
item["display_mode"],
|
|
"first_screen_progress_evidence_rail",
|
|
)
|
|
assert_equal(
|
|
f"iwooos_projection.progress_evidence_rail_items.{item_id}.runtime_gate_count",
|
|
item["runtime_gate_count"],
|
|
0,
|
|
)
|
|
assert_false(
|
|
f"iwooos_projection.progress_evidence_rail_items.{item_id}.runtime_execution_authorized",
|
|
item["runtime_execution_authorized"],
|
|
)
|
|
assert_false(
|
|
f"iwooos_projection.progress_evidence_rail_items.{item_id}.action_buttons_allowed",
|
|
item["action_buttons_allowed"],
|
|
)
|
|
assert_true(
|
|
f"iwooos_projection.progress_evidence_rail_items.{item_id}.not_authorization",
|
|
item["not_authorization"],
|
|
)
|
|
owner_response_rail_item = next(item for item in progress_evidence_rail_items if item["item_id"] == "ownerResponses")
|
|
assert_equal(
|
|
"iwooos_projection.progress_evidence_rail_items.ownerResponses.owner_response_received_count",
|
|
owner_response_rail_item["owner_response_received_count"],
|
|
0,
|
|
)
|
|
assert_equal(
|
|
"iwooos_projection.progress_evidence_rail_items.ownerResponses.owner_response_accepted_count",
|
|
owner_response_rail_item["owner_response_accepted_count"],
|
|
0,
|
|
)
|
|
redacted_evidence_rail_item = next(item for item in progress_evidence_rail_items if item["item_id"] == "redactedEvidence")
|
|
assert_equal(
|
|
"iwooos_projection.progress_evidence_rail_items.redactedEvidence.redacted_evidence_count",
|
|
redacted_evidence_rail_item["redacted_evidence_count"],
|
|
0,
|
|
)
|
|
review_acceptance_rail_item = next(item for item in progress_evidence_rail_items if item["item_id"] == "reviewAcceptance")
|
|
assert_equal(
|
|
"iwooos_projection.progress_evidence_rail_items.reviewAcceptance.review_acceptance_count",
|
|
review_acceptance_rail_item["review_acceptance_count"],
|
|
0,
|
|
)
|
|
github_primary_rail_item = next(item for item in progress_evidence_rail_items if item["item_id"] == "githubPrimary")
|
|
assert_equal(
|
|
"iwooos_projection.progress_evidence_rail_items.githubPrimary.candidate_repo_count",
|
|
github_primary_rail_item["candidate_repo_count"],
|
|
10,
|
|
)
|
|
assert_equal(
|
|
"iwooos_projection.progress_evidence_rail_items.githubPrimary.github_primary_ready_count",
|
|
github_primary_rail_item["github_primary_ready_count"],
|
|
0,
|
|
)
|
|
for flag in ["source_control_mutation_authorized"]:
|
|
assert_false(
|
|
f"iwooos_projection.progress_evidence_rail_items.githubPrimary.{flag}",
|
|
github_primary_rail_item[flag],
|
|
)
|
|
runtime_gate_rail_item = next(item for item in progress_evidence_rail_items if item["item_id"] == "runtimeGate")
|
|
for flag in ["scan_authorized", "host_change_authorized", "source_control_mutation_authorized"]:
|
|
assert_false(
|
|
f"iwooos_projection.progress_evidence_rail_items.runtimeGate.{flag}",
|
|
runtime_gate_rail_item[flag],
|
|
)
|
|
expected_evidence_unlock_queue_item_ids = [
|
|
"giteaOwner",
|
|
"githubTarget",
|
|
"refTruth",
|
|
"workflowSecrets",
|
|
]
|
|
evidence_unlock_queue_items = iwooos_projection["evidence_unlock_queue_items"]
|
|
assert_equal(
|
|
"iwooos_projection.evidence_unlock_queue_items.ids",
|
|
[item["item_id"] for item in evidence_unlock_queue_items],
|
|
expected_evidence_unlock_queue_item_ids,
|
|
)
|
|
assert_equal(
|
|
"iwooos_projection.evidence_unlock_queue_items.display_order",
|
|
[item["display_order"] for item in evidence_unlock_queue_items],
|
|
list(range(1, len(expected_evidence_unlock_queue_item_ids) + 1)),
|
|
)
|
|
evidence_unlock_queue_gates = {item["item_id"]: item["gate"] for item in evidence_unlock_queue_items}
|
|
assert_equal("iwooos_projection.evidence_unlock_queue_items.giteaOwner.gate", evidence_unlock_queue_gates["giteaOwner"], "S4.9")
|
|
assert_equal("iwooos_projection.evidence_unlock_queue_items.githubTarget.gate", evidence_unlock_queue_gates["githubTarget"], "S4.10")
|
|
assert_equal("iwooos_projection.evidence_unlock_queue_items.refTruth.gate", evidence_unlock_queue_gates["refTruth"], "S4.11")
|
|
assert_equal("iwooos_projection.evidence_unlock_queue_items.workflowSecrets.gate", evidence_unlock_queue_gates["workflowSecrets"], "S4.12")
|
|
evidence_unlock_queue_values = {item["item_id"]: item["value"] for item in evidence_unlock_queue_items}
|
|
assert_equal("iwooos_projection.evidence_unlock_queue_items.giteaOwner.value", evidence_unlock_queue_values["giteaOwner"], "草稿 5")
|
|
assert_equal("iwooos_projection.evidence_unlock_queue_items.githubTarget.value", evidence_unlock_queue_values["githubTarget"], "0/10")
|
|
assert_equal("iwooos_projection.evidence_unlock_queue_items.refTruth.value", evidence_unlock_queue_values["refTruth"], "0/5")
|
|
assert_equal("iwooos_projection.evidence_unlock_queue_items.workflowSecrets.value", evidence_unlock_queue_values["workflowSecrets"], "0/5")
|
|
for item in evidence_unlock_queue_items:
|
|
item_id = item["item_id"]
|
|
assert_equal(
|
|
f"iwooos_projection.evidence_unlock_queue_items.{item_id}.display_mode",
|
|
item["display_mode"],
|
|
"first_screen_evidence_unlock_queue",
|
|
)
|
|
for count_key in ["request_sent_count", "received_count", "accepted_count", "runtime_gate_count"]:
|
|
assert_equal(
|
|
f"iwooos_projection.evidence_unlock_queue_items.{item_id}.{count_key}",
|
|
item[count_key],
|
|
0,
|
|
)
|
|
assert_false(
|
|
f"iwooos_projection.evidence_unlock_queue_items.{item_id}.runtime_execution_authorized",
|
|
item["runtime_execution_authorized"],
|
|
)
|
|
assert_false(
|
|
f"iwooos_projection.evidence_unlock_queue_items.{item_id}.action_buttons_allowed",
|
|
item["action_buttons_allowed"],
|
|
)
|
|
assert_true(
|
|
f"iwooos_projection.evidence_unlock_queue_items.{item_id}.not_authorization",
|
|
item["not_authorization"],
|
|
)
|
|
gitea_owner_queue_item = next(item for item in evidence_unlock_queue_items if item["item_id"] == "giteaOwner")
|
|
assert_true(
|
|
"iwooos_projection.evidence_unlock_queue_items.giteaOwner.request_draft_package_ready",
|
|
gitea_owner_queue_item["request_draft_package_ready"],
|
|
)
|
|
assert_equal(
|
|
"iwooos_projection.evidence_unlock_queue_items.giteaOwner.request_draft_template_count",
|
|
gitea_owner_queue_item["request_draft_template_count"],
|
|
5,
|
|
)
|
|
assert_equal(
|
|
"iwooos_projection.evidence_unlock_queue_items.giteaOwner.request_draft_ready_count",
|
|
gitea_owner_queue_item["request_draft_ready_count"],
|
|
1,
|
|
)
|
|
github_target_queue_item = next(item for item in evidence_unlock_queue_items if item["item_id"] == "githubTarget")
|
|
assert_equal(
|
|
"iwooos_projection.evidence_unlock_queue_items.githubTarget.candidate_repo_count",
|
|
github_target_queue_item["candidate_repo_count"],
|
|
10,
|
|
)
|
|
assert_equal(
|
|
"iwooos_projection.evidence_unlock_queue_items.githubTarget.github_primary_ready_count",
|
|
github_target_queue_item["github_primary_ready_count"],
|
|
0,
|
|
)
|
|
assert_false(
|
|
"iwooos_projection.evidence_unlock_queue_items.githubTarget.source_control_mutation_authorized",
|
|
github_target_queue_item["source_control_mutation_authorized"],
|
|
)
|
|
ref_truth_queue_item = next(item for item in evidence_unlock_queue_items if item["item_id"] == "refTruth")
|
|
assert_false(
|
|
"iwooos_projection.evidence_unlock_queue_items.refTruth.refs_sync_authorized",
|
|
ref_truth_queue_item["refs_sync_authorized"],
|
|
)
|
|
workflow_secrets_queue_item = next(item for item in evidence_unlock_queue_items if item["item_id"] == "workflowSecrets")
|
|
assert_false(
|
|
"iwooos_projection.evidence_unlock_queue_items.workflowSecrets.secret_plaintext_collection_allowed",
|
|
workflow_secrets_queue_item["secret_plaintext_collection_allowed"],
|
|
)
|
|
expected_s4_9_request_draft_package_item_ids = [
|
|
"publicGap",
|
|
"namespaceIdentity",
|
|
"adjacentScope",
|
|
"canonicalOwner",
|
|
"legacyDisposition",
|
|
]
|
|
s4_9_request_draft_package_items = iwooos_projection["s4_9_request_draft_package_items"]
|
|
assert_equal(
|
|
"iwooos_projection.s4_9_request_draft_package_items.ids",
|
|
[item["item_id"] for item in s4_9_request_draft_package_items],
|
|
expected_s4_9_request_draft_package_item_ids,
|
|
)
|
|
assert_equal(
|
|
"iwooos_projection.s4_9_request_draft_package_items.display_order",
|
|
[item["display_order"] for item in s4_9_request_draft_package_items],
|
|
list(range(1, len(expected_s4_9_request_draft_package_item_ids) + 1)),
|
|
)
|
|
assert_equal(
|
|
"iwooos_projection.s4_9_request_draft_package_items.source_template_ids",
|
|
[item["source_template_id"] for item in s4_9_request_draft_package_items],
|
|
expected_s4_9_owner_response_request_template_ids,
|
|
)
|
|
assert_equal(
|
|
"iwooos_projection.s4_9_request_draft_package_items.template_labels",
|
|
[item["template_label"] for item in s4_9_request_draft_package_items],
|
|
["D1", "D2", "D3", "D4", "D5"],
|
|
)
|
|
for item in s4_9_request_draft_package_items:
|
|
assert_equal(
|
|
f"iwooos_projection.s4_9_request_draft_package_items.{item['item_id']}.display_mode",
|
|
item["display_mode"],
|
|
"first_screen_s4_9_request_draft_package",
|
|
)
|
|
assert_equal(
|
|
f"iwooos_projection.s4_9_request_draft_package_items.{item['item_id']}.draft_status",
|
|
item["draft_status"],
|
|
"ready_not_sent",
|
|
)
|
|
for count_key in [
|
|
"request_sent_count",
|
|
"owner_response_received_count",
|
|
"owner_response_accepted_count",
|
|
"runtime_gate_count",
|
|
]:
|
|
assert_equal(
|
|
f"iwooos_projection.s4_9_request_draft_package_items.{item['item_id']}.{count_key}",
|
|
item[count_key],
|
|
0,
|
|
)
|
|
assert_false(
|
|
f"iwooos_projection.s4_9_request_draft_package_items.{item['item_id']}.runtime_execution_authorized",
|
|
item["runtime_execution_authorized"],
|
|
)
|
|
assert_false(
|
|
f"iwooos_projection.s4_9_request_draft_package_items.{item['item_id']}.action_buttons_allowed",
|
|
item["action_buttons_allowed"],
|
|
)
|
|
assert_true(
|
|
f"iwooos_projection.s4_9_request_draft_package_items.{item['item_id']}.not_authorization",
|
|
item["not_authorization"],
|
|
)
|
|
s4_9_request_draft_detail_rows = iwooos_projection["s4_9_request_draft_detail_rows"]
|
|
assert_equal(
|
|
"iwooos_projection.s4_9_request_draft_detail_rows.ids",
|
|
[item["row_id"] for item in s4_9_request_draft_detail_rows],
|
|
expected_s4_9_request_draft_package_item_ids,
|
|
)
|
|
assert_equal(
|
|
"iwooos_projection.s4_9_request_draft_detail_rows.display_order",
|
|
[item["display_order"] for item in s4_9_request_draft_detail_rows],
|
|
list(range(1, len(expected_s4_9_request_draft_package_item_ids) + 1)),
|
|
)
|
|
assert_equal(
|
|
"iwooos_projection.s4_9_request_draft_detail_rows.source_template_ids",
|
|
[item["source_template_id"] for item in s4_9_request_draft_detail_rows],
|
|
expected_s4_9_owner_response_request_template_ids,
|
|
)
|
|
assert_equal(
|
|
"iwooos_projection.s4_9_request_draft_detail_rows.template_labels",
|
|
[item["template_label"] for item in s4_9_request_draft_detail_rows],
|
|
["D1", "D2", "D3", "D4", "D5"],
|
|
)
|
|
for item in s4_9_request_draft_detail_rows:
|
|
assert_equal(
|
|
f"iwooos_projection.s4_9_request_draft_detail_rows.{item['row_id']}.display_mode",
|
|
item["display_mode"],
|
|
"first_screen_s4_9_request_draft_detail",
|
|
)
|
|
assert_equal(
|
|
f"iwooos_projection.s4_9_request_draft_detail_rows.{item['row_id']}.draft_status",
|
|
item["draft_status"],
|
|
"ready_not_sent",
|
|
)
|
|
assert_equal(
|
|
f"iwooos_projection.s4_9_request_draft_detail_rows.{item['row_id']}.required_field_count",
|
|
item["required_field_count"],
|
|
6,
|
|
)
|
|
assert_equal(
|
|
f"iwooos_projection.s4_9_request_draft_detail_rows.{item['row_id']}.forbidden_action_count",
|
|
item["forbidden_action_count"],
|
|
10,
|
|
)
|
|
assert_true(
|
|
f"iwooos_projection.s4_9_request_draft_detail_rows.{item['row_id']}.redacted_evidence_refs_only",
|
|
item["redacted_evidence_refs_only"],
|
|
)
|
|
assert_false(
|
|
f"iwooos_projection.s4_9_request_draft_detail_rows.{item['row_id']}.secret_plaintext_collection_allowed",
|
|
item["secret_plaintext_collection_allowed"],
|
|
)
|
|
for count_key in [
|
|
"request_sent_count",
|
|
"owner_response_received_count",
|
|
"owner_response_accepted_count",
|
|
"runtime_gate_count",
|
|
]:
|
|
assert_equal(
|
|
f"iwooos_projection.s4_9_request_draft_detail_rows.{item['row_id']}.{count_key}",
|
|
item[count_key],
|
|
0,
|
|
)
|
|
assert_false(
|
|
f"iwooos_projection.s4_9_request_draft_detail_rows.{item['row_id']}.runtime_execution_authorized",
|
|
item["runtime_execution_authorized"],
|
|
)
|
|
assert_false(
|
|
f"iwooos_projection.s4_9_request_draft_detail_rows.{item['row_id']}.action_buttons_allowed",
|
|
item["action_buttons_allowed"],
|
|
)
|
|
assert_true(
|
|
f"iwooos_projection.s4_9_request_draft_detail_rows.{item['row_id']}.not_authorization",
|
|
item["not_authorization"],
|
|
)
|
|
s4_9_owner_response_intake_lanes = iwooos_projection["s4_9_owner_response_intake_lanes"]
|
|
assert_equal(
|
|
"iwooos_projection.s4_9_owner_response_intake_lanes.ids",
|
|
[item["lane_id"] for item in s4_9_owner_response_intake_lanes],
|
|
expected_s4_9_request_draft_package_item_ids,
|
|
)
|
|
assert_equal(
|
|
"iwooos_projection.s4_9_owner_response_intake_lanes.display_order",
|
|
[item["display_order"] for item in s4_9_owner_response_intake_lanes],
|
|
list(range(1, len(expected_s4_9_request_draft_package_item_ids) + 1)),
|
|
)
|
|
assert_equal(
|
|
"iwooos_projection.s4_9_owner_response_intake_lanes.source_template_ids",
|
|
[item["source_template_id"] for item in s4_9_owner_response_intake_lanes],
|
|
expected_s4_9_owner_response_request_template_ids,
|
|
)
|
|
assert_equal(
|
|
"iwooos_projection.s4_9_owner_response_intake_lanes.template_labels",
|
|
[item["template_label"] for item in s4_9_owner_response_intake_lanes],
|
|
["D1", "D2", "D3", "D4", "D5"],
|
|
)
|
|
for item in s4_9_owner_response_intake_lanes:
|
|
assert_equal(
|
|
f"iwooos_projection.s4_9_owner_response_intake_lanes.{item['lane_id']}.display_mode",
|
|
item["display_mode"],
|
|
"first_screen_s4_9_owner_response_intake",
|
|
)
|
|
assert_equal(
|
|
f"iwooos_projection.s4_9_owner_response_intake_lanes.{item['lane_id']}.collection_status",
|
|
item["collection_status"],
|
|
"waiting_owner_response",
|
|
)
|
|
assert_equal(
|
|
f"iwooos_projection.s4_9_owner_response_intake_lanes.{item['lane_id']}.request_status",
|
|
item["request_status"],
|
|
"request_ready_not_sent",
|
|
)
|
|
assert_equal(
|
|
f"iwooos_projection.s4_9_owner_response_intake_lanes.{item['lane_id']}.latest_outcome_lane",
|
|
item["latest_outcome_lane"],
|
|
"keep_waiting_owner_response",
|
|
)
|
|
for count_key in [
|
|
"received_response_count",
|
|
"preflight_passed_count",
|
|
"accepted_response_count",
|
|
"rejected_response_count",
|
|
"runtime_gate_count",
|
|
]:
|
|
assert_equal(
|
|
f"iwooos_projection.s4_9_owner_response_intake_lanes.{item['lane_id']}.{count_key}",
|
|
item[count_key],
|
|
0,
|
|
)
|
|
assert_false(
|
|
f"iwooos_projection.s4_9_owner_response_intake_lanes.{item['lane_id']}.runtime_execution_authorized",
|
|
item["runtime_execution_authorized"],
|
|
)
|
|
assert_false(
|
|
f"iwooos_projection.s4_9_owner_response_intake_lanes.{item['lane_id']}.action_buttons_allowed",
|
|
item["action_buttons_allowed"],
|
|
)
|
|
assert_true(
|
|
f"iwooos_projection.s4_9_owner_response_intake_lanes.{item['lane_id']}.not_authorization",
|
|
item["not_authorization"],
|
|
)
|
|
s4_9_owner_response_intake_next_gates = iwooos_projection["s4_9_owner_response_intake_next_gates"]
|
|
assert_equal(
|
|
"iwooos_projection.s4_9_owner_response_intake_next_gates.ids",
|
|
[item["gate_id"] for item in s4_9_owner_response_intake_next_gates],
|
|
["redactedOwnerResponse", "preflightChecks", "humanAcceptance"],
|
|
)
|
|
assert_equal(
|
|
"iwooos_projection.s4_9_owner_response_intake_next_gates.display_order",
|
|
[item["display_order"] for item in s4_9_owner_response_intake_next_gates],
|
|
[1, 2, 3],
|
|
)
|
|
assert_equal(
|
|
"iwooos_projection.s4_9_owner_response_intake_next_gates.gate_labels",
|
|
[item["gate_label"] for item in s4_9_owner_response_intake_next_gates],
|
|
["G1", "G2", "G3"],
|
|
)
|
|
assert_equal(
|
|
"iwooos_projection.s4_9_owner_response_intake_next_gates.required_signals",
|
|
[item["required_signal"] for item in s4_9_owner_response_intake_next_gates],
|
|
[
|
|
"redacted_owner_response_metadata_received",
|
|
"six_preflight_checks_passed",
|
|
"five_owner_response_lanes_accepted",
|
|
],
|
|
)
|
|
assert_equal(
|
|
"iwooos_projection.s4_9_owner_response_intake_next_gates.current_states",
|
|
[item["current_state"] for item in s4_9_owner_response_intake_next_gates],
|
|
["waiting_owner_response", "waiting_preflight", "waiting_human_acceptance"],
|
|
)
|
|
for item in s4_9_owner_response_intake_next_gates:
|
|
assert_equal(
|
|
f"iwooos_projection.s4_9_owner_response_intake_next_gates.{item['gate_id']}.display_mode",
|
|
item["display_mode"],
|
|
"first_screen_s4_9_owner_response_intake_next_gate",
|
|
)
|
|
for count_key in [
|
|
"received_response_count",
|
|
"preflight_passed_count",
|
|
"accepted_response_count",
|
|
"runtime_gate_count",
|
|
]:
|
|
assert_equal(
|
|
f"iwooos_projection.s4_9_owner_response_intake_next_gates.{item['gate_id']}.{count_key}",
|
|
item[count_key],
|
|
0,
|
|
)
|
|
assert_false(
|
|
f"iwooos_projection.s4_9_owner_response_intake_next_gates.{item['gate_id']}.headline_review_authorized",
|
|
item["headline_review_authorized"],
|
|
)
|
|
assert_false(
|
|
f"iwooos_projection.s4_9_owner_response_intake_next_gates.{item['gate_id']}.runtime_execution_authorized",
|
|
item["runtime_execution_authorized"],
|
|
)
|
|
assert_false(
|
|
f"iwooos_projection.s4_9_owner_response_intake_next_gates.{item['gate_id']}.action_buttons_allowed",
|
|
item["action_buttons_allowed"],
|
|
)
|
|
assert_true(
|
|
f"iwooos_projection.s4_9_owner_response_intake_next_gates.{item['gate_id']}.not_authorization",
|
|
item["not_authorization"],
|
|
)
|
|
s4_9_owner_response_intake_blocker_focus = iwooos_projection[
|
|
"s4_9_owner_response_intake_blocker_focus"
|
|
]
|
|
assert_equal(
|
|
"iwooos_projection.s4_9_owner_response_intake_blocker_focus.focus_id",
|
|
s4_9_owner_response_intake_blocker_focus["focus_id"],
|
|
"currentBlocker",
|
|
)
|
|
assert_equal(
|
|
"iwooos_projection.s4_9_owner_response_intake_blocker_focus.display_mode",
|
|
s4_9_owner_response_intake_blocker_focus["display_mode"],
|
|
"first_screen_s4_9_owner_response_intake_blocker_focus",
|
|
)
|
|
assert_equal(
|
|
"iwooos_projection.s4_9_owner_response_intake_blocker_focus.current_gate",
|
|
s4_9_owner_response_intake_blocker_focus["current_gate"],
|
|
"G1",
|
|
)
|
|
assert_equal(
|
|
"iwooos_projection.s4_9_owner_response_intake_blocker_focus.current_gate_id",
|
|
s4_9_owner_response_intake_blocker_focus["current_gate_id"],
|
|
"redactedOwnerResponse",
|
|
)
|
|
assert_equal(
|
|
"iwooos_projection.s4_9_owner_response_intake_blocker_focus.blocker_state",
|
|
s4_9_owner_response_intake_blocker_focus["blocker_state"],
|
|
"waiting_redacted_owner_response",
|
|
)
|
|
assert_equal(
|
|
"iwooos_projection.s4_9_owner_response_intake_blocker_focus.completion_count",
|
|
s4_9_owner_response_intake_blocker_focus["completion_count"],
|
|
0,
|
|
)
|
|
assert_equal(
|
|
"iwooos_projection.s4_9_owner_response_intake_blocker_focus.gate_total",
|
|
s4_9_owner_response_intake_blocker_focus["gate_total"],
|
|
3,
|
|
)
|
|
for count_key in [
|
|
"received_response_count",
|
|
"preflight_passed_count",
|
|
"accepted_response_count",
|
|
"runtime_gate_count",
|
|
]:
|
|
assert_equal(
|
|
f"iwooos_projection.s4_9_owner_response_intake_blocker_focus.{count_key}",
|
|
s4_9_owner_response_intake_blocker_focus[count_key],
|
|
0,
|
|
)
|
|
assert_false(
|
|
"iwooos_projection.s4_9_owner_response_intake_blocker_focus.headline_review_authorized",
|
|
s4_9_owner_response_intake_blocker_focus["headline_review_authorized"],
|
|
)
|
|
assert_false(
|
|
"iwooos_projection.s4_9_owner_response_intake_blocker_focus.runtime_execution_authorized",
|
|
s4_9_owner_response_intake_blocker_focus["runtime_execution_authorized"],
|
|
)
|
|
assert_false(
|
|
"iwooos_projection.s4_9_owner_response_intake_blocker_focus.action_buttons_allowed",
|
|
s4_9_owner_response_intake_blocker_focus["action_buttons_allowed"],
|
|
)
|
|
assert_true(
|
|
"iwooos_projection.s4_9_owner_response_intake_blocker_focus.not_authorization",
|
|
s4_9_owner_response_intake_blocker_focus["not_authorization"],
|
|
)
|
|
s4_9_owner_response_intake_delivery_cards = iwooos_projection[
|
|
"s4_9_owner_response_intake_delivery_cards"
|
|
]
|
|
assert_equal(
|
|
"iwooos_projection.s4_9_owner_response_intake_delivery_cards.ids",
|
|
[item["card_id"] for item in s4_9_owner_response_intake_delivery_cards],
|
|
["ownerDecision", "redactedEvidence", "reviewTrail"],
|
|
)
|
|
assert_equal(
|
|
"iwooos_projection.s4_9_owner_response_intake_delivery_cards.display_order",
|
|
[item["display_order"] for item in s4_9_owner_response_intake_delivery_cards],
|
|
[1, 2, 3],
|
|
)
|
|
assert_equal(
|
|
"iwooos_projection.s4_9_owner_response_intake_delivery_cards.required_evidence",
|
|
[item["required_evidence"] for item in s4_9_owner_response_intake_delivery_cards],
|
|
["負責人角色、判定、範圍、理由與後續負責人", "脫敏證據參照", "預檢驗收紀錄"],
|
|
)
|
|
assert_equal(
|
|
"iwooos_projection.s4_9_owner_response_intake_delivery_cards.current_states",
|
|
[item["current_state"] for item in s4_9_owner_response_intake_delivery_cards],
|
|
[
|
|
"waiting_owner_response",
|
|
"waiting_redacted_evidence_pointer",
|
|
"waiting_preflight_and_acceptance",
|
|
],
|
|
)
|
|
for item in s4_9_owner_response_intake_delivery_cards:
|
|
assert_equal(
|
|
f"iwooos_projection.s4_9_owner_response_intake_delivery_cards.{item['card_id']}.display_mode",
|
|
item["display_mode"],
|
|
"first_screen_s4_9_owner_response_intake_delivery_card",
|
|
)
|
|
assert_equal(
|
|
f"iwooos_projection.s4_9_owner_response_intake_delivery_cards.{item['card_id']}.completed_count",
|
|
item["completed_count"],
|
|
0,
|
|
)
|
|
assert_false(
|
|
f"iwooos_projection.s4_9_owner_response_intake_delivery_cards.{item['card_id']}.raw_payload_allowed",
|
|
item["raw_payload_allowed"],
|
|
)
|
|
assert_false(
|
|
f"iwooos_projection.s4_9_owner_response_intake_delivery_cards.{item['card_id']}.secret_plaintext_allowed",
|
|
item["secret_plaintext_allowed"],
|
|
)
|
|
assert_false(
|
|
f"iwooos_projection.s4_9_owner_response_intake_delivery_cards.{item['card_id']}.headline_review_authorized",
|
|
item["headline_review_authorized"],
|
|
)
|
|
assert_false(
|
|
f"iwooos_projection.s4_9_owner_response_intake_delivery_cards.{item['card_id']}.runtime_execution_authorized",
|
|
item["runtime_execution_authorized"],
|
|
)
|
|
assert_false(
|
|
f"iwooos_projection.s4_9_owner_response_intake_delivery_cards.{item['card_id']}.action_buttons_allowed",
|
|
item["action_buttons_allowed"],
|
|
)
|
|
assert_true(
|
|
f"iwooos_projection.s4_9_owner_response_intake_delivery_cards.{item['card_id']}.not_authorization",
|
|
item["not_authorization"],
|
|
)
|
|
expected_s4_9_metadata_intake_field_ids = [
|
|
"ownerRoleTeam",
|
|
"decision",
|
|
"decisionReason",
|
|
"affectedScope",
|
|
"redactedEvidenceRefs",
|
|
"followupOwner",
|
|
]
|
|
expected_s4_9_metadata_intake_source_fields = [
|
|
"owner_role_or_team",
|
|
"decision",
|
|
"decision_reason",
|
|
"affected_scope",
|
|
"evidence_refs",
|
|
"followup_owner",
|
|
]
|
|
s4_9_owner_response_metadata_intake_fields = iwooos_projection[
|
|
"s4_9_owner_response_metadata_intake_fields"
|
|
]
|
|
assert_equal(
|
|
"iwooos_projection.s4_9_owner_response_metadata_intake_fields.ids",
|
|
[item["field_id"] for item in s4_9_owner_response_metadata_intake_fields],
|
|
expected_s4_9_metadata_intake_field_ids,
|
|
)
|
|
assert_equal(
|
|
"iwooos_projection.s4_9_owner_response_metadata_intake_fields.display_order",
|
|
[item["display_order"] for item in s4_9_owner_response_metadata_intake_fields],
|
|
list(range(1, len(expected_s4_9_metadata_intake_field_ids) + 1)),
|
|
)
|
|
assert_equal(
|
|
"iwooos_projection.s4_9_owner_response_metadata_intake_fields.source_required_fields",
|
|
[item["source_required_field"] for item in s4_9_owner_response_metadata_intake_fields],
|
|
expected_s4_9_metadata_intake_source_fields,
|
|
)
|
|
for item in s4_9_owner_response_metadata_intake_fields:
|
|
assert_equal(
|
|
f"iwooos_projection.s4_9_owner_response_metadata_intake_fields.{item['field_id']}.display_mode",
|
|
item["display_mode"],
|
|
"first_screen_s4_9_owner_response_metadata_intake_field",
|
|
)
|
|
assert_equal(
|
|
f"iwooos_projection.s4_9_owner_response_metadata_intake_fields.{item['field_id']}.field_status",
|
|
item["field_status"],
|
|
"waiting_owner_response_metadata",
|
|
)
|
|
assert_true(
|
|
f"iwooos_projection.s4_9_owner_response_metadata_intake_fields.{item['field_id']}.required",
|
|
item["required"],
|
|
)
|
|
for count_key in [
|
|
"filled_count",
|
|
"received_response_count",
|
|
"accepted_response_count",
|
|
"runtime_gate_count",
|
|
]:
|
|
assert_equal(
|
|
f"iwooos_projection.s4_9_owner_response_metadata_intake_fields.{item['field_id']}.{count_key}",
|
|
item[count_key],
|
|
0,
|
|
)
|
|
assert_true(
|
|
f"iwooos_projection.s4_9_owner_response_metadata_intake_fields.{item['field_id']}.redacted_reference_required",
|
|
item["redacted_reference_required"],
|
|
)
|
|
for false_key in [
|
|
"raw_payload_allowed",
|
|
"secret_plaintext_allowed",
|
|
"runtime_execution_authorized",
|
|
"action_buttons_allowed",
|
|
]:
|
|
assert_false(
|
|
f"iwooos_projection.s4_9_owner_response_metadata_intake_fields.{item['field_id']}.{false_key}",
|
|
item[false_key],
|
|
)
|
|
assert_true(
|
|
f"iwooos_projection.s4_9_owner_response_metadata_intake_fields.{item['field_id']}.not_authorization",
|
|
item["not_authorization"],
|
|
)
|
|
for text in [
|
|
'data-testid="iwooos-first-screen-depth-map-board"',
|
|
'data-testid="iwooos-first-screen-depth-map-layers"',
|
|
'data-testid="iwooos-first-screen-depth-map-flow"',
|
|
'data-testid="iwooos-first-screen-depth-map-boundaries"',
|
|
"IwoooSFirstScreenDepthMapBoard",
|
|
"firstScreenDepthLayers",
|
|
"firstScreenDepthBoundaries",
|
|
"href: '#iwooos-decision-gate-visuals'",
|
|
"href: '#iwooos-scope-evidence-visuals'",
|
|
]:
|
|
assert_text_contains(
|
|
"iwooos_page.first_screen_depth_map",
|
|
iwooos_projection_page,
|
|
text,
|
|
)
|
|
assert_text_before(
|
|
"iwooos_page.focus_deck_before_first_screen_depth_map",
|
|
iwooos_projection_page,
|
|
"<IwoooSFocusDeckBoard />",
|
|
"<IwoooSFirstScreenDepthMapBoard />",
|
|
)
|
|
assert_text_before(
|
|
"iwooos_page.first_screen_depth_map_before_immediate_visual_mesh",
|
|
iwooos_projection_page,
|
|
"<IwoooSFirstScreenDepthMapBoard />",
|
|
"<IwoooSImmediateVisualMeshBoard />",
|
|
)
|
|
for text in [
|
|
"iwooos_first_screen_depth_map_visible_layer_count=4",
|
|
"iwooos_first_screen_depth_map_advanced_group_count=2",
|
|
"iwooos_first_screen_depth_map_ledger_group_count=4",
|
|
"iwooos_first_screen_depth_map_runtime_gate_count=0",
|
|
"iwooos_first_screen_depth_map_advanced_default_visible=false",
|
|
"iwooos_first_screen_depth_map_scope_evidence_default_visible=false",
|
|
"runtime_execution_authorized=false",
|
|
"active_runtime_gate_count=0",
|
|
"action_buttons_allowed=false",
|
|
"not_authorization=true",
|
|
]:
|
|
assert_text_contains(
|
|
"iwooos_page.first_screen_depth_map_boundary",
|
|
iwooos_projection_page,
|
|
text,
|
|
)
|
|
for text in [
|
|
'data-testid="iwooos-progress-evidence-rail-board"',
|
|
'data-testid="iwooos-progress-evidence-rail-items"',
|
|
'data-testid="iwooos-progress-evidence-rail-boundaries"',
|
|
"IwoooSProgressEvidenceRailBoard",
|
|
"progressEvidenceRailItems",
|
|
"progressEvidenceRailBoundaries",
|
|
]:
|
|
assert_text_contains(
|
|
"iwooos_page.progress_evidence_rail",
|
|
iwooos_projection_page,
|
|
text,
|
|
)
|
|
assert_text_before(
|
|
"iwooos_page.first_screen_depth_map_before_progress_evidence_rail",
|
|
iwooos_projection_page,
|
|
"<IwoooSFirstScreenDepthMapBoard />",
|
|
"<IwoooSProgressEvidenceRailBoard />",
|
|
)
|
|
assert_text_before(
|
|
"iwooos_page.progress_evidence_rail_before_immediate_visual_mesh",
|
|
iwooos_projection_page,
|
|
"<IwoooSProgressEvidenceRailBoard />",
|
|
"<IwoooSImmediateVisualMeshBoard />",
|
|
)
|
|
for text in [
|
|
"iwooos_progress_evidence_rail_owner_response_received_count=0",
|
|
"iwooos_progress_evidence_rail_owner_response_accepted_count=0",
|
|
"iwooos_progress_evidence_rail_redacted_evidence_count=0",
|
|
"iwooos_progress_evidence_rail_review_acceptance_count=0",
|
|
"iwooos_progress_evidence_rail_github_primary_ready_count=0",
|
|
"iwooos_progress_evidence_rail_runtime_gate_count=0",
|
|
"runtime_execution_authorized=false",
|
|
"active_runtime_gate_count=0",
|
|
"action_buttons_allowed=false",
|
|
"not_authorization=true",
|
|
]:
|
|
assert_text_contains(
|
|
"iwooos_page.progress_evidence_rail_boundary",
|
|
iwooos_projection_page,
|
|
text,
|
|
)
|
|
for text in [
|
|
'data-testid="iwooos-evidence-unlock-queue-board"',
|
|
'data-testid="iwooos-evidence-unlock-queue-items"',
|
|
'data-testid="iwooos-evidence-unlock-queue-boundaries"',
|
|
"IwoooSEvidenceUnlockQueueBoard",
|
|
"evidenceUnlockQueueItems",
|
|
"evidenceUnlockQueueBoundaries",
|
|
]:
|
|
assert_text_contains(
|
|
"iwooos_page.evidence_unlock_queue",
|
|
iwooos_projection_page,
|
|
text,
|
|
)
|
|
assert_text_before(
|
|
"iwooos_page.progress_evidence_rail_before_evidence_unlock_queue",
|
|
iwooos_projection_page,
|
|
"<IwoooSProgressEvidenceRailBoard />",
|
|
"<IwoooSEvidenceUnlockQueueBoard />",
|
|
)
|
|
assert_text_before(
|
|
"iwooos_page.evidence_unlock_queue_before_immediate_visual_mesh",
|
|
iwooos_projection_page,
|
|
"<IwoooSEvidenceUnlockQueueBoard />",
|
|
"<IwoooSImmediateVisualMeshBoard />",
|
|
)
|
|
for text in [
|
|
"iwooos_evidence_unlock_queue_item_count=4",
|
|
"iwooos_evidence_unlock_queue_s4_9_request_draft_template_count=5",
|
|
"iwooos_evidence_unlock_queue_s4_9_request_draft_ready_count=1",
|
|
"iwooos_evidence_unlock_queue_request_sent_count=0",
|
|
"iwooos_evidence_unlock_queue_received_count=0",
|
|
"iwooos_evidence_unlock_queue_accepted_count=0",
|
|
"iwooos_evidence_unlock_queue_github_primary_ready_count=0",
|
|
"iwooos_evidence_unlock_queue_runtime_gate_count=0",
|
|
"runtime_execution_authorized=false",
|
|
"active_runtime_gate_count=0",
|
|
"action_buttons_allowed=false",
|
|
"not_authorization=true",
|
|
]:
|
|
assert_text_contains(
|
|
"iwooos_page.evidence_unlock_queue_boundary",
|
|
iwooos_projection_page,
|
|
text,
|
|
)
|
|
for text in [
|
|
'data-testid="iwooos-s49-request-draft-package-board"',
|
|
'data-testid="iwooos-s49-request-draft-package-items"',
|
|
'data-testid="iwooos-s49-request-draft-package-boundaries"',
|
|
"IwoooSS49RequestDraftPackageBoard",
|
|
"s49RequestDraftPackageItems",
|
|
"s49RequestDraftPackageBoundaries",
|
|
"publicGap",
|
|
"namespaceIdentity",
|
|
"adjacentScope",
|
|
"canonicalOwner",
|
|
"legacyDisposition",
|
|
]:
|
|
assert_text_contains(
|
|
"iwooos_page.s49_request_draft_package",
|
|
iwooos_projection_page,
|
|
text,
|
|
)
|
|
assert_text_before(
|
|
"iwooos_page.evidence_unlock_queue_before_s49_request_draft_package",
|
|
iwooos_projection_page,
|
|
"<IwoooSEvidenceUnlockQueueBoard />",
|
|
"<IwoooSS49RequestDraftPackageBoard />",
|
|
)
|
|
assert_text_before(
|
|
"iwooos_page.s49_request_draft_package_before_immediate_visual_mesh",
|
|
iwooos_projection_page,
|
|
"<IwoooSS49RequestDraftPackageBoard />",
|
|
"<IwoooSImmediateVisualMeshBoard />",
|
|
)
|
|
for text in [
|
|
"s4_9_owner_attestation_request_draft_frontstage_card_count=5",
|
|
"s4_9_owner_attestation_request_draft_template_ready_count=5",
|
|
"s4_9_owner_attestation_request_sent=false",
|
|
"s4_9_owner_attestation_owner_response_received_count=0",
|
|
"s4_9_owner_attestation_owner_response_accepted_count=0",
|
|
"s4_9_owner_attestation_runtime_gate_opened=false",
|
|
"runtime_execution_authorized=false",
|
|
"active_runtime_gate_count=0",
|
|
"action_buttons_allowed=false",
|
|
"not_authorization=true",
|
|
]:
|
|
assert_text_contains(
|
|
"iwooos_page.s49_request_draft_package_boundary",
|
|
iwooos_projection_page,
|
|
text,
|
|
)
|
|
for text in [
|
|
'data-testid="iwooos-s49-request-draft-detail-board"',
|
|
'data-testid="iwooos-s49-request-draft-detail-items"',
|
|
'data-testid="iwooos-s49-request-draft-detail-boundaries"',
|
|
"IwoooSS49RequestDraftDetailBoard",
|
|
"s49RequestDraftDetailItems",
|
|
"s49RequestDraftDetailBoundaries",
|
|
"s49RequestDraftDetail",
|
|
"requiredCount",
|
|
"forbiddenCount",
|
|
"redactedRefs",
|
|
"secret_plaintext_collection_allowed=false",
|
|
]:
|
|
assert_text_contains(
|
|
"iwooos_page.s49_request_draft_detail",
|
|
iwooos_projection_page,
|
|
text,
|
|
)
|
|
for text in [
|
|
"publicGap",
|
|
"namespaceIdentity",
|
|
"adjacentScope",
|
|
"canonicalOwner",
|
|
"legacyDisposition",
|
|
]:
|
|
assert_text_contains(
|
|
"iwooos_page.s49_request_draft_detail_items",
|
|
iwooos_projection_page,
|
|
text,
|
|
)
|
|
assert_text_before(
|
|
"iwooos_page.s49_request_draft_package_before_detail",
|
|
iwooos_projection_page,
|
|
"<IwoooSS49RequestDraftPackageBoard />",
|
|
"<IwoooSS49RequestDraftDetailBoard />",
|
|
)
|
|
assert_text_before(
|
|
"iwooos_page.s49_request_draft_detail_before_immediate_visual_mesh",
|
|
iwooos_projection_page,
|
|
"<IwoooSS49RequestDraftDetailBoard />",
|
|
"<IwoooSImmediateVisualMeshBoard />",
|
|
)
|
|
for text in [
|
|
"s4_9_owner_attestation_request_draft_detail_frontstage_row_count=5",
|
|
"s4_9_owner_attestation_request_draft_detail_required_field_total=30",
|
|
"s4_9_owner_attestation_request_draft_detail_forbidden_action_count=10",
|
|
"s4_9_owner_attestation_request_sent=false",
|
|
"s4_9_owner_attestation_owner_response_received_count=0",
|
|
"s4_9_owner_attestation_owner_response_accepted_count=0",
|
|
"s4_9_owner_attestation_runtime_gate_opened=false",
|
|
"redacted_evidence_refs_only=true",
|
|
"secret_plaintext_collection_allowed=false",
|
|
"runtime_execution_authorized=false",
|
|
"active_runtime_gate_count=0",
|
|
"action_buttons_allowed=false",
|
|
"not_authorization=true",
|
|
]:
|
|
assert_text_contains(
|
|
"iwooos_page.s49_request_draft_detail_boundary",
|
|
iwooos_projection_page,
|
|
text,
|
|
)
|
|
for text in [
|
|
'data-testid="iwooos-s49-owner-response-intake-board"',
|
|
'data-testid="iwooos-s49-owner-response-intake-metrics"',
|
|
'data-testid="iwooos-s49-owner-response-intake-blocker-focus"',
|
|
'data-testid="iwooos-s49-owner-response-intake-completion-rail"',
|
|
'data-testid="iwooos-s49-owner-response-intake-delivery-cards"',
|
|
"iwooos-s49-owner-response-intake-delivery-card-${item.key}",
|
|
'data-testid="iwooos-s49-owner-response-metadata-intake-fields"',
|
|
"iwooos-s49-owner-response-metadata-intake-field-${item.key}",
|
|
'data-testid="iwooos-s49-owner-response-intake-next-gates"',
|
|
"iwooos-s49-owner-response-intake-next-gate-${item.key}",
|
|
'data-testid="iwooos-s49-owner-response-intake-lanes"',
|
|
'data-testid="iwooos-s49-owner-response-intake-boundaries"',
|
|
"IwoooSS49OwnerResponseIntakeBoard",
|
|
"s49OwnerResponseIntakeLanes",
|
|
"s49OwnerResponseIntakeNextGates",
|
|
"s49OwnerResponseIntakeBlockerFocus",
|
|
"s49OwnerResponseIntakeDeliveryItems",
|
|
"s49OwnerResponseMetadataIntakeFields",
|
|
"s49OwnerResponseIntakeBoundaries",
|
|
"s49OwnerResponseIntake",
|
|
"blockerFocus",
|
|
"deliveryItems",
|
|
"metadataFields",
|
|
"metadataFieldsTitle",
|
|
"ownerDecision",
|
|
"redactedEvidence",
|
|
"reviewTrail",
|
|
"nextGatesTitle",
|
|
"nextGates",
|
|
"redactedOwnerResponse",
|
|
"preflightChecks",
|
|
"humanAcceptance",
|
|
"ownerRoleTeam",
|
|
"decisionReason",
|
|
"affectedScope",
|
|
"redactedEvidenceRefs",
|
|
"followupOwner",
|
|
"G1",
|
|
"G2",
|
|
"G3",
|
|
"F1",
|
|
"F2",
|
|
"F3",
|
|
"F4",
|
|
"F5",
|
|
"F6",
|
|
"received",
|
|
"preflight",
|
|
"acceptance",
|
|
]:
|
|
assert_text_contains(
|
|
"iwooos_page.s49_owner_response_intake",
|
|
iwooos_projection_page,
|
|
text,
|
|
)
|
|
for text in [
|
|
"publicGap",
|
|
"namespaceIdentity",
|
|
"adjacentScope",
|
|
"canonicalOwner",
|
|
"legacyDisposition",
|
|
]:
|
|
assert_text_contains(
|
|
"iwooos_page.s49_owner_response_intake_lanes",
|
|
iwooos_projection_page,
|
|
text,
|
|
)
|
|
s49_owner_response_intake_strings = "\n".join(
|
|
collect_string_values(web_messages_zh["iwooos"]["s49OwnerResponseIntake"])
|
|
)
|
|
for forbidden in [
|
|
"read-only",
|
|
"runtime",
|
|
"headline review",
|
|
"owner role",
|
|
"owner response metadata",
|
|
"evidence refs",
|
|
"canonical source",
|
|
"visibility review owner",
|
|
]:
|
|
assert_text_not_contains(
|
|
"web_messages.zh-TW.iwooos.s49OwnerResponseIntake.forbidden_english_terms",
|
|
s49_owner_response_intake_strings,
|
|
forbidden,
|
|
)
|
|
assert_text_before(
|
|
"iwooos_page.s49_request_draft_detail_before_owner_response_intake",
|
|
iwooos_projection_page,
|
|
"<IwoooSS49RequestDraftDetailBoard />",
|
|
"<IwoooSS49OwnerResponseIntakeBoard />",
|
|
)
|
|
assert_text_before(
|
|
"iwooos_page.s49_owner_response_intake_before_immediate_visual_mesh",
|
|
iwooos_projection_page,
|
|
"<IwoooSS49OwnerResponseIntakeBoard />",
|
|
"<IwoooSImmediateVisualMeshBoard />",
|
|
)
|
|
for text in [
|
|
"s4_9_owner_response_intake_frontstage_lane_count=5",
|
|
"s4_9_owner_response_intake_next_gate_count=3",
|
|
"s4_9_owner_response_intake_next_gate_passed_count=0",
|
|
"s4_9_owner_response_intake_blocker_focus_count=1",
|
|
"s4_9_owner_response_intake_current_blocker_gate=G1",
|
|
"s4_9_owner_response_intake_next_gate_completion_count=0",
|
|
"s4_9_owner_response_intake_next_gate_total=3",
|
|
"s4_9_owner_response_intake_delivery_card_count=3",
|
|
"s4_9_owner_response_intake_delivery_card_completed_count=0",
|
|
"s4_9_owner_response_intake_delivery_raw_payload_allowed=false",
|
|
"s4_9_owner_response_intake_received_count=0",
|
|
"s4_9_owner_response_intake_preflight_passed_count=0",
|
|
"s4_9_owner_response_intake_accepted_count=0",
|
|
"s4_9_owner_response_intake_rejected_count=0",
|
|
"s4_9_owner_response_intake_runtime_gate_count=0",
|
|
"s4_9_owner_response_intake_source_bound=true",
|
|
"s4_9_owner_response_intake_handoff_queue_count=5",
|
|
"s4_9_owner_response_intake_handoff_queue_ready_count=0",
|
|
"s4_9_owner_response_intake_handoff_queue_received_count=0",
|
|
"s4_9_owner_response_intake_handoff_queue_accepted_count=0",
|
|
"s4_9_owner_response_intake_handoff_queue_runtime_gate_count=0",
|
|
"s4_9_owner_response_intake_handoff_queue_raw_payload_allowed=false",
|
|
"s4_9_owner_response_intake_handoff_queue_action_buttons_allowed=false",
|
|
"s4_9_owner_response_metadata_intake_field_count=6",
|
|
"s4_9_owner_response_metadata_intake_required_count=6",
|
|
"s4_9_owner_response_metadata_intake_filled_count=0",
|
|
"s4_9_owner_response_metadata_intake_received_count=0",
|
|
"s4_9_owner_response_metadata_intake_accepted_count=0",
|
|
"s4_9_owner_response_metadata_intake_runtime_gate_count=0",
|
|
"s4_9_owner_response_metadata_intake_redacted_ref_required=true",
|
|
"s4_9_owner_response_metadata_intake_raw_payload_allowed=false",
|
|
"s4_9_owner_response_metadata_intake_secret_plaintext_allowed=false",
|
|
"s4_9_owner_response_metadata_intake_action_buttons_allowed=false",
|
|
"s4_9_owner_response_intake_runtime_gate_opened=false",
|
|
"s4_9_owner_response_intake_action_buttons_allowed=false",
|
|
"runtime_execution_authorized=false",
|
|
"active_runtime_gate_count=0",
|
|
"action_buttons_allowed=false",
|
|
"not_authorization=true",
|
|
]:
|
|
assert_text_contains(
|
|
"iwooos_page.s49_owner_response_intake_boundary",
|
|
iwooos_projection_page,
|
|
text,
|
|
)
|
|
assert_text_contains(
|
|
"iwooos_page.focus_deck_testid",
|
|
iwooos_projection_page,
|
|
'data-testid="iwooos-focus-deck-board"',
|
|
)
|
|
assert_text_contains(
|
|
"iwooos_page.focus_deck_component",
|
|
iwooos_projection_page,
|
|
"IwoooSFocusDeckBoard",
|
|
)
|
|
assert_text_before(
|
|
"iwooos_page.focus_deck_before_command_map",
|
|
iwooos_projection_page,
|
|
"<IwoooSFocusDeckBoard />",
|
|
"<IwoooSCommandMapBoard />",
|
|
)
|
|
assert_text_contains(
|
|
"iwooos_page.focus_deck_boundaries",
|
|
iwooos_projection_page,
|
|
'data-testid="iwooos-focus-deck-boundaries"',
|
|
)
|
|
for text in [
|
|
"href: '#iwooos-decision-gate-visuals'",
|
|
"href: '#iwooos-scope-evidence-visuals'",
|
|
"id=\"iwooos-decision-gate-visuals\"",
|
|
"id=\"iwooos-scope-evidence-visuals\"",
|
|
"iwooos-command-map-source-control",
|
|
"iwooos_focus_deck_first_layer=true",
|
|
"iwooos_focus_deck_item_count=5",
|
|
"iwooos_focus_deck_anchor_navigation_allowed=true",
|
|
"iwooos_focus_deck_execution_action_buttons_allowed=false",
|
|
"iwooos_focus_deck_runtime_gate_count=0",
|
|
"iwooos_focus_deck_above_command_map=true",
|
|
"runtime_execution_authorized=false",
|
|
"active_runtime_gate_count=0",
|
|
"action_buttons_allowed=false",
|
|
"not_authorization=true",
|
|
]:
|
|
assert_text_contains(
|
|
"iwooos_page.focus_deck_boundary",
|
|
iwooos_projection_page,
|
|
text,
|
|
)
|
|
for text in [
|
|
'data-testid="iwooos-immediate-visual-mesh-board"',
|
|
'data-testid="iwooos-immediate-visual-mesh-canvas"',
|
|
'data-testid="iwooos-immediate-visual-mesh-boundaries"',
|
|
"IwoooSImmediateVisualMeshBoard",
|
|
"iwooosImmediateVisualMeshNodes",
|
|
"iwooosImmediateVisualMeshStats",
|
|
"iwooosImmediateVisualMeshBoundaries",
|
|
"conic-gradient",
|
|
]:
|
|
assert_text_contains(
|
|
"iwooos_page.immediate_visual_mesh",
|
|
iwooos_projection_page,
|
|
text,
|
|
)
|
|
assert_text_before(
|
|
"iwooos_page.focus_deck_before_immediate_visual_mesh",
|
|
iwooos_projection_page,
|
|
"<IwoooSFocusDeckBoard />",
|
|
"<IwoooSImmediateVisualMeshBoard />",
|
|
)
|
|
assert_text_before(
|
|
"iwooos_page.immediate_visual_mesh_before_command_map",
|
|
iwooos_projection_page,
|
|
"<IwoooSImmediateVisualMeshBoard />",
|
|
"<IwoooSCommandMapBoard />",
|
|
)
|
|
for text in [
|
|
"iwooos_immediate_visual_mesh_first_layer=true",
|
|
"iwooos_immediate_visual_mesh_node_count=7",
|
|
"iwooos_immediate_visual_mesh_link_count=6",
|
|
"iwooos_immediate_visual_mesh_above_command_map=true",
|
|
"iwooos_immediate_visual_mesh_anchor_navigation_allowed=false",
|
|
"iwooos_immediate_visual_mesh_execution_action_buttons_allowed=false",
|
|
"iwooos_immediate_visual_mesh_runtime_gate_count=0",
|
|
"iwooos_immediate_visual_mesh_scan_authorized=false",
|
|
"iwooos_immediate_visual_mesh_host_change_authorized=false",
|
|
"iwooos_immediate_visual_mesh_source_control_mutation_authorized=false",
|
|
"runtime_execution_authorized=false",
|
|
"active_runtime_gate_count=0",
|
|
"action_buttons_allowed=false",
|
|
"not_authorization=true",
|
|
]:
|
|
assert_text_contains(
|
|
"iwooos_page.immediate_visual_mesh_boundary",
|
|
iwooos_projection_page,
|
|
text,
|
|
)
|
|
for text in [
|
|
'data-testid="iwooos-topology-atlas-board"',
|
|
'data-testid="iwooos-topology-atlas-canvas"',
|
|
'data-testid="iwooos-topology-atlas-active-panel"',
|
|
'data-testid="iwooos-topology-atlas-path-explorer"',
|
|
'data-testid="iwooos-topology-atlas-path-explorer-selector"',
|
|
'data-testid="iwooos-topology-atlas-path-explorer-sequence"',
|
|
'data-testid="iwooos-topology-atlas-path-explorer-summary"',
|
|
'data-testid="iwooos-topology-atlas-intelligence-deck"',
|
|
'data-testid="iwooos-topology-atlas-intelligence-selector"',
|
|
'data-testid="iwooos-topology-atlas-intelligence-trail"',
|
|
'data-testid="iwooos-topology-atlas-blast-rings"',
|
|
'data-testid="iwooos-topology-atlas-node-drilldown"',
|
|
'data-testid="iwooos-topology-atlas-node-drilldown-metrics"',
|
|
'data-testid="iwooos-topology-atlas-node-drilldown-selector"',
|
|
'data-testid="iwooos-topology-atlas-technical-charts"',
|
|
'data-testid="iwooos-topology-atlas-boundaries"',
|
|
"IwoooSTopologyAtlasBoard",
|
|
"IwoooSTopologyAtlasMode",
|
|
"IwoooSTopologyPathKey",
|
|
"IwoooSTopologyInsightKey",
|
|
"IwoooSTopologyNodeKey",
|
|
"IwoooSTopologyDrilldownNode",
|
|
"IwoooSTopologyPathExplorerPath",
|
|
"IwoooSTopologyInsightItem",
|
|
"iwooosTopologyAtlasLenses",
|
|
"iwooosTopologyAtlasNodes",
|
|
"iwooosTopologyDrilldownNodes",
|
|
"iwooosTopologyPathExplorerPaths",
|
|
"iwooosTopologyInsightDeck",
|
|
"iwooosTopologyAtlasLayers",
|
|
"iwooosTopologyAtlasCharts",
|
|
"iwooosTopologyAtlasBoundaries",
|
|
"iwooos-topology-grid",
|
|
]:
|
|
assert_text_contains(
|
|
"iwooos_page.topology_atlas",
|
|
iwooos_projection_page,
|
|
text,
|
|
)
|
|
assert_text_before(
|
|
"iwooos_page.immediate_visual_mesh_before_topology_atlas",
|
|
iwooos_projection_page,
|
|
"<IwoooSImmediateVisualMeshBoard />",
|
|
"<IwoooSTopologyAtlasBoard />",
|
|
)
|
|
assert_text_before(
|
|
"iwooos_page.topology_atlas_before_gate_radar",
|
|
iwooos_projection_page,
|
|
"<IwoooSTopologyAtlasBoard />",
|
|
"<IwoooSGateRadarBoard />",
|
|
)
|
|
assert_text_before(
|
|
"iwooos_page.topology_atlas_before_command_map",
|
|
iwooos_projection_page,
|
|
"<IwoooSTopologyAtlasBoard />",
|
|
"<IwoooSCommandMapBoard />",
|
|
)
|
|
for text in [
|
|
"iwooos_topology_atlas_first_layer=true",
|
|
"iwooos_topology_atlas_lens_count=4",
|
|
"iwooos_topology_atlas_node_count=7",
|
|
"iwooos_topology_drilldown_node_count=7",
|
|
"iwooos_topology_drilldown_default_node=productSurface",
|
|
"iwooos_topology_drilldown_interactive_node_allowed=true",
|
|
"iwooos_topology_path_explorer_path_count=4",
|
|
"iwooos_topology_path_explorer_default_path=externalToGate",
|
|
"iwooos_topology_path_explorer_interactive_path_allowed=true",
|
|
"iwooos_topology_intelligence_deck_count=4",
|
|
"iwooos_topology_intelligence_default_item=assetContext",
|
|
"iwooos_topology_intelligence_interactive_item_allowed=true",
|
|
"iwooos_topology_atlas_layer_count=5",
|
|
"iwooos_topology_atlas_technical_chart_count=3",
|
|
"iwooos_topology_atlas_interactive_lens_allowed=true",
|
|
"iwooos_topology_atlas_execution_action_buttons_allowed=false",
|
|
"iwooos_topology_drilldown_execution_action_buttons_allowed=false",
|
|
"iwooos_topology_path_explorer_execution_action_buttons_allowed=false",
|
|
"iwooos_topology_intelligence_execution_action_buttons_allowed=false",
|
|
"iwooos_topology_atlas_runtime_gate_count=0",
|
|
"iwooos_topology_drilldown_runtime_gate_count=0",
|
|
"iwooos_topology_path_explorer_runtime_gate_count=0",
|
|
"iwooos_topology_intelligence_runtime_gate_count=0",
|
|
"iwooos_topology_atlas_scan_authorized=false",
|
|
"iwooos_topology_atlas_host_change_authorized=false",
|
|
"iwooos_topology_atlas_source_control_mutation_authorized=false",
|
|
"iwooos_topology_drilldown_scan_authorized=false",
|
|
"iwooos_topology_drilldown_host_change_authorized=false",
|
|
"iwooos_topology_drilldown_source_control_mutation_authorized=false",
|
|
"iwooos_topology_path_explorer_scan_authorized=false",
|
|
"iwooos_topology_path_explorer_host_change_authorized=false",
|
|
"iwooos_topology_path_explorer_source_control_mutation_authorized=false",
|
|
"iwooos_topology_intelligence_scan_authorized=false",
|
|
"iwooos_topology_intelligence_host_change_authorized=false",
|
|
"iwooos_topology_intelligence_source_control_mutation_authorized=false",
|
|
"runtime_execution_authorized=false",
|
|
"active_runtime_gate_count=0",
|
|
"action_buttons_allowed=false",
|
|
"not_authorization=true",
|
|
]:
|
|
assert_text_contains(
|
|
"iwooos_page.topology_atlas_boundary",
|
|
iwooos_projection_page,
|
|
text,
|
|
)
|
|
for text in [
|
|
'data-testid="iwooos-decision-runway-board"',
|
|
'data-testid="iwooos-decision-runway-progress-rail"',
|
|
'data-testid="iwooos-decision-runway-selector"',
|
|
'data-testid="iwooos-decision-runway-active-panel"',
|
|
'data-testid="iwooos-decision-runway-dependency-grid"',
|
|
'data-testid="iwooos-decision-runway-boundary-strip"',
|
|
'data-testid="iwooos-decision-runway-boundaries"',
|
|
"IwoooSDecisionRunwayBoard",
|
|
"IwoooSDecisionRunwayStepKey",
|
|
"IwoooSDecisionRunwayStep",
|
|
"IwoooSDecisionRunwayDependency",
|
|
"IwoooSDecisionRunwayBoundarySignal",
|
|
"iwooosDecisionRunwaySteps",
|
|
"iwooosDecisionRunwayDependencies",
|
|
"iwooosDecisionRunwayBoundarySignals",
|
|
"iwooosDecisionRunwayBoundaries",
|
|
"iwooos-decision-runway-grid",
|
|
]:
|
|
assert_text_contains(
|
|
"iwooos_page.decision_runway",
|
|
iwooos_projection_page,
|
|
text,
|
|
)
|
|
assert_text_before(
|
|
"iwooos_page.topology_atlas_before_decision_runway",
|
|
iwooos_projection_page,
|
|
"<IwoooSTopologyAtlasBoard />",
|
|
"<IwoooSDecisionRunwayBoard />",
|
|
)
|
|
assert_text_before(
|
|
"iwooos_page.decision_runway_before_gate_radar",
|
|
iwooos_projection_page,
|
|
"<IwoooSDecisionRunwayBoard />",
|
|
"<IwoooSGateRadarBoard />",
|
|
)
|
|
assert_text_before(
|
|
"iwooos_page.decision_runway_before_command_map",
|
|
iwooos_projection_page,
|
|
"<IwoooSDecisionRunwayBoard />",
|
|
"<IwoooSCommandMapBoard />",
|
|
)
|
|
for text in [
|
|
"iwooos_decision_runway_first_layer=true",
|
|
"iwooos_decision_runway_step_count=5",
|
|
"iwooos_decision_runway_default_step=ownerEvidence",
|
|
"iwooos_decision_runway_dependency_count=7",
|
|
"iwooos_decision_runway_boundary_signal_count=4",
|
|
"iwooos_decision_runway_above_gate_radar=true",
|
|
"iwooos_decision_runway_interactive_step_allowed=true",
|
|
"iwooos_decision_runway_execution_action_buttons_allowed=false",
|
|
"iwooos_decision_runway_runtime_gate_count=0",
|
|
"iwooos_decision_runway_owner_response_received_count=0",
|
|
"iwooos_decision_runway_owner_response_accepted_count=0",
|
|
"iwooos_decision_runway_scan_authorized=false",
|
|
"iwooos_decision_runway_host_change_authorized=false",
|
|
"iwooos_decision_runway_source_control_mutation_authorized=false",
|
|
"runtime_execution_authorized=false",
|
|
"active_runtime_gate_count=0",
|
|
"action_buttons_allowed=false",
|
|
"not_authorization=true",
|
|
]:
|
|
assert_text_contains(
|
|
"iwooos_page.decision_runway_boundary",
|
|
iwooos_projection_page,
|
|
text,
|
|
)
|
|
for text in [
|
|
'data-testid="iwooos-gate-radar-board"',
|
|
'data-testid="iwooos-gate-radar-canvas"',
|
|
'data-testid="iwooos-gate-radar-active-panel"',
|
|
'data-testid="iwooos-gate-radar-boundaries"',
|
|
"IwoooSGateRadarBoard",
|
|
"IwoooSGateRadarMode",
|
|
"iwooosGateRadarLanes",
|
|
"iwooosGateRadarSummary",
|
|
"iwooosGateRadarBoundaries",
|
|
"conic-gradient",
|
|
]:
|
|
assert_text_contains(
|
|
"iwooos_page.gate_radar",
|
|
iwooos_projection_page,
|
|
text,
|
|
)
|
|
assert_text_before(
|
|
"iwooos_page.immediate_visual_mesh_before_gate_radar",
|
|
iwooos_projection_page,
|
|
"<IwoooSImmediateVisualMeshBoard />",
|
|
"<IwoooSGateRadarBoard />",
|
|
)
|
|
assert_text_before(
|
|
"iwooos_page.gate_radar_before_command_map",
|
|
iwooos_projection_page,
|
|
"<IwoooSGateRadarBoard />",
|
|
"<IwoooSCommandMapBoard />",
|
|
)
|
|
for text in [
|
|
"iwooos_gate_radar_first_layer=true",
|
|
"iwooos_gate_radar_lane_count=4",
|
|
"iwooos_gate_radar_default_lane=visible",
|
|
"iwooos_gate_radar_above_command_map=true",
|
|
"iwooos_gate_radar_interactive_lens_allowed=true",
|
|
"iwooos_gate_radar_execution_action_buttons_allowed=false",
|
|
"iwooos_gate_radar_runtime_gate_count=0",
|
|
"iwooos_gate_radar_scan_authorized=false",
|
|
"iwooos_gate_radar_host_change_authorized=false",
|
|
"iwooos_gate_radar_source_control_mutation_authorized=false",
|
|
"runtime_execution_authorized=false",
|
|
"active_runtime_gate_count=0",
|
|
"action_buttons_allowed=false",
|
|
"not_authorization=true",
|
|
]:
|
|
assert_text_contains(
|
|
"iwooos_page.gate_radar_boundary",
|
|
iwooos_projection_page,
|
|
text,
|
|
)
|
|
assert_text_contains(
|
|
"iwooos_page.command_map_testid",
|
|
iwooos_projection_page,
|
|
'data-testid="iwooos-command-map-board"',
|
|
)
|
|
assert_text_contains(
|
|
"iwooos_page.command_map_component",
|
|
iwooos_projection_page,
|
|
"IwoooSCommandMapBoard",
|
|
)
|
|
assert_text_before(
|
|
"iwooos_page.command_map_before_first_unlock_path",
|
|
iwooos_projection_page,
|
|
"<IwoooSCommandMapBoard />",
|
|
"<IwoooSFirstProgressUnlockPathBoard />",
|
|
)
|
|
assert_text_before(
|
|
"iwooos_page.command_map_before_visual_dashboard",
|
|
iwooos_projection_page,
|
|
"<IwoooSCommandMapBoard />",
|
|
"<IwoooSVisualCommandDashboard />",
|
|
)
|
|
assert_text_contains(
|
|
"iwooos_page.command_map_boundaries",
|
|
iwooos_projection_page,
|
|
'data-testid="iwooos-command-map-boundaries"',
|
|
)
|
|
for text in [
|
|
"iwooos_command_map_first_layer=true",
|
|
"iwooos_command_map_mode_count=6",
|
|
"iwooos_command_map_default_mode=unlock",
|
|
"iwooos_command_map_above_first_progress_unlock_path=true",
|
|
"iwooos_command_map_navigation_controls_allowed=true",
|
|
"iwooos_command_map_execution_action_buttons_allowed=false",
|
|
"iwooos_command_map_runtime_gate_count=0",
|
|
"iwooos_command_map_kali_execute_authorized=false",
|
|
"iwooos_command_map_host_mutation_authorized=false",
|
|
"iwooos_command_map_source_control_mutation_authorized=false",
|
|
"iwooos_command_map_github_primary_switch_authorized=false",
|
|
"runtime_execution_authorized=false",
|
|
"active_runtime_gate_count=0",
|
|
"not_authorization=true",
|
|
]:
|
|
assert_text_contains(
|
|
"iwooos_page.command_map_boundary",
|
|
iwooos_projection_page,
|
|
text,
|
|
)
|
|
expected_command_map_item_ids = [
|
|
"unlock",
|
|
"scope",
|
|
"hosts",
|
|
"sourceControl",
|
|
"awooop",
|
|
"boundary",
|
|
]
|
|
command_map_items = iwooos_projection["command_map_items"]
|
|
assert_equal(
|
|
"iwooos_projection.command_map_items.ids",
|
|
[item["item_id"] for item in command_map_items],
|
|
expected_command_map_item_ids,
|
|
)
|
|
assert_equal(
|
|
"iwooos_projection.command_map_items.display_order",
|
|
[item["display_order"] for item in command_map_items],
|
|
list(range(1, len(expected_command_map_item_ids) + 1)),
|
|
)
|
|
for item in command_map_items:
|
|
assert_equal(
|
|
f"iwooos_projection.command_map_items.{item['item_id']}.display_mode",
|
|
item["display_mode"],
|
|
"first_layer_command_map",
|
|
)
|
|
assert_true(
|
|
f"iwooos_projection.command_map_items.{item['item_id']}.navigation_control_allowed",
|
|
item["navigation_control_allowed"],
|
|
)
|
|
assert_false(
|
|
f"iwooos_projection.command_map_items.{item['item_id']}.execution_action_button_allowed",
|
|
item["execution_action_button_allowed"],
|
|
)
|
|
assert_false(
|
|
f"iwooos_projection.command_map_items.{item['item_id']}.runtime_gate_opened",
|
|
item["runtime_gate_opened"],
|
|
)
|
|
assert_false(
|
|
f"iwooos_projection.command_map_items.{item['item_id']}.runtime_execution_authorized",
|
|
item["runtime_execution_authorized"],
|
|
)
|
|
assert_true(
|
|
f"iwooos_projection.command_map_items.{item['item_id']}.not_authorization",
|
|
item["not_authorization"],
|
|
)
|
|
source_control_item = next(item for item in command_map_items if item["item_id"] == "sourceControl")
|
|
assert_false(
|
|
"iwooos_projection.command_map_items.sourceControl.source_control_mutation_authorized",
|
|
source_control_item["source_control_mutation_authorized"],
|
|
)
|
|
assert_false(
|
|
"iwooos_projection.command_map_items.sourceControl.github_primary_switch_authorized",
|
|
source_control_item["github_primary_switch_authorized"],
|
|
)
|
|
boundary_item = next(item for item in command_map_items if item["item_id"] == "boundary")
|
|
assert_false(
|
|
"iwooos_projection.command_map_items.boundary.kali_execute_authorized",
|
|
boundary_item["kali_execute_authorized"],
|
|
)
|
|
assert_false(
|
|
"iwooos_projection.command_map_items.boundary.host_mutation_authorized",
|
|
boundary_item["host_mutation_authorized"],
|
|
)
|
|
expected_focus_deck_item_ids = [
|
|
"workMap",
|
|
"unlockPath",
|
|
"productScope",
|
|
"hostTools",
|
|
"sourceControl",
|
|
]
|
|
focus_deck_items = iwooos_projection["focus_deck_items"]
|
|
assert_equal(
|
|
"iwooos_projection.focus_deck_items.ids",
|
|
[item["item_id"] for item in focus_deck_items],
|
|
expected_focus_deck_item_ids,
|
|
)
|
|
assert_equal(
|
|
"iwooos_projection.focus_deck_items.display_order",
|
|
[item["display_order"] for item in focus_deck_items],
|
|
list(range(1, len(expected_focus_deck_item_ids) + 1)),
|
|
)
|
|
for item in focus_deck_items:
|
|
assert_equal(
|
|
f"iwooos_projection.focus_deck_items.{item['item_id']}.display_mode",
|
|
item["display_mode"],
|
|
"first_layer_focus_deck",
|
|
)
|
|
assert_true(
|
|
f"iwooos_projection.focus_deck_items.{item['item_id']}.anchor_navigation_allowed",
|
|
item["anchor_navigation_allowed"],
|
|
)
|
|
assert_false(
|
|
f"iwooos_projection.focus_deck_items.{item['item_id']}.execution_action_button_allowed",
|
|
item["execution_action_button_allowed"],
|
|
)
|
|
assert_false(
|
|
f"iwooos_projection.focus_deck_items.{item['item_id']}.runtime_gate_opened",
|
|
item["runtime_gate_opened"],
|
|
)
|
|
assert_false(
|
|
f"iwooos_projection.focus_deck_items.{item['item_id']}.runtime_execution_authorized",
|
|
item["runtime_execution_authorized"],
|
|
)
|
|
assert_true(
|
|
f"iwooos_projection.focus_deck_items.{item['item_id']}.not_authorization",
|
|
item["not_authorization"],
|
|
)
|
|
source_control_focus = next(item for item in focus_deck_items if item["item_id"] == "sourceControl")
|
|
assert_false(
|
|
"iwooos_projection.focus_deck_items.sourceControl.source_control_mutation_authorized",
|
|
source_control_focus["source_control_mutation_authorized"],
|
|
)
|
|
assert_false(
|
|
"iwooos_projection.focus_deck_items.sourceControl.github_primary_switch_authorized",
|
|
source_control_focus["github_primary_switch_authorized"],
|
|
)
|
|
expected_immediate_visual_mesh_node_ids = [
|
|
"core",
|
|
"products",
|
|
"hosts",
|
|
"sourceControl",
|
|
"monitoring",
|
|
"awooop",
|
|
"runtimeGate",
|
|
]
|
|
immediate_visual_mesh_nodes = iwooos_projection["immediate_visual_mesh_nodes"]
|
|
assert_equal(
|
|
"iwooos_projection.immediate_visual_mesh_nodes.ids",
|
|
[item["node_id"] for item in immediate_visual_mesh_nodes],
|
|
expected_immediate_visual_mesh_node_ids,
|
|
)
|
|
assert_equal(
|
|
"iwooos_projection.immediate_visual_mesh_nodes.display_order",
|
|
[item["display_order"] for item in immediate_visual_mesh_nodes],
|
|
list(range(1, len(expected_immediate_visual_mesh_node_ids) + 1)),
|
|
)
|
|
for item in immediate_visual_mesh_nodes:
|
|
assert_equal(
|
|
f"iwooos_projection.immediate_visual_mesh_nodes.{item['node_id']}.display_mode",
|
|
item["display_mode"],
|
|
"first_screen_visual_mesh",
|
|
)
|
|
assert_true(
|
|
f"iwooos_projection.immediate_visual_mesh_nodes.{item['node_id']}.read_only",
|
|
item["read_only"],
|
|
)
|
|
assert_false(
|
|
f"iwooos_projection.immediate_visual_mesh_nodes.{item['node_id']}.runtime_gate_opened",
|
|
item["runtime_gate_opened"],
|
|
)
|
|
assert_false(
|
|
f"iwooos_projection.immediate_visual_mesh_nodes.{item['node_id']}.runtime_execution_authorized",
|
|
item["runtime_execution_authorized"],
|
|
)
|
|
assert_true(
|
|
f"iwooos_projection.immediate_visual_mesh_nodes.{item['node_id']}.not_authorization",
|
|
item["not_authorization"],
|
|
)
|
|
hosts_mesh_node = next(item for item in immediate_visual_mesh_nodes if item["node_id"] == "hosts")
|
|
assert_false(
|
|
"iwooos_projection.immediate_visual_mesh_nodes.hosts.host_change_authorized",
|
|
hosts_mesh_node["host_change_authorized"],
|
|
)
|
|
source_control_mesh_node = next(item for item in immediate_visual_mesh_nodes if item["node_id"] == "sourceControl")
|
|
assert_false(
|
|
"iwooos_projection.immediate_visual_mesh_nodes.sourceControl.source_control_mutation_authorized",
|
|
source_control_mesh_node["source_control_mutation_authorized"],
|
|
)
|
|
runtime_gate_mesh_node = next(item for item in immediate_visual_mesh_nodes if item["node_id"] == "runtimeGate")
|
|
assert_false(
|
|
"iwooos_projection.immediate_visual_mesh_nodes.runtimeGate.scan_authorized",
|
|
runtime_gate_mesh_node["scan_authorized"],
|
|
)
|
|
expected_topology_atlas_lens_ids = [
|
|
"architecture",
|
|
"topology",
|
|
"attackSurface",
|
|
"evidenceFlow",
|
|
]
|
|
topology_atlas_lenses = iwooos_projection["topology_atlas_lenses"]
|
|
assert_equal(
|
|
"iwooos_projection.topology_atlas_lenses.ids",
|
|
[item["lens_id"] for item in topology_atlas_lenses],
|
|
expected_topology_atlas_lens_ids,
|
|
)
|
|
assert_equal(
|
|
"iwooos_projection.topology_atlas_lenses.display_order",
|
|
[item["display_order"] for item in topology_atlas_lenses],
|
|
list(range(1, len(expected_topology_atlas_lens_ids) + 1)),
|
|
)
|
|
for item in topology_atlas_lenses:
|
|
assert_equal(
|
|
f"iwooos_projection.topology_atlas_lenses.{item['lens_id']}.display_mode",
|
|
item["display_mode"],
|
|
"first_screen_professional_topology_atlas",
|
|
)
|
|
assert_true(
|
|
f"iwooos_projection.topology_atlas_lenses.{item['lens_id']}.interactive_lens_allowed",
|
|
item["interactive_lens_allowed"],
|
|
)
|
|
assert_false(
|
|
f"iwooos_projection.topology_atlas_lenses.{item['lens_id']}.execution_action_button_allowed",
|
|
item["execution_action_button_allowed"],
|
|
)
|
|
assert_false(
|
|
f"iwooos_projection.topology_atlas_lenses.{item['lens_id']}.runtime_gate_opened",
|
|
item["runtime_gate_opened"],
|
|
)
|
|
assert_false(
|
|
f"iwooos_projection.topology_atlas_lenses.{item['lens_id']}.runtime_execution_authorized",
|
|
item["runtime_execution_authorized"],
|
|
)
|
|
assert_true(
|
|
f"iwooos_projection.topology_atlas_lenses.{item['lens_id']}.not_authorization",
|
|
item["not_authorization"],
|
|
)
|
|
topology_lens = next(item for item in topology_atlas_lenses if item["lens_id"] == "topology")
|
|
for flag in ["scan_authorized", "host_change_authorized"]:
|
|
assert_false(
|
|
f"iwooos_projection.topology_atlas_lenses.topology.{flag}",
|
|
topology_lens[flag],
|
|
)
|
|
attack_surface_lens = next(item for item in topology_atlas_lenses if item["lens_id"] == "attackSurface")
|
|
for flag in ["source_control_mutation_authorized", "github_primary_switch_authorized", "blast_radius_verified"]:
|
|
assert_false(
|
|
f"iwooos_projection.topology_atlas_lenses.attackSurface.{flag}",
|
|
attack_surface_lens[flag],
|
|
)
|
|
evidence_flow_lens = next(item for item in topology_atlas_lenses if item["lens_id"] == "evidenceFlow")
|
|
for count_key in ["owner_response_received_count", "reviewer_accepted_count"]:
|
|
assert_equal(
|
|
f"iwooos_projection.topology_atlas_lenses.evidenceFlow.{count_key}",
|
|
evidence_flow_lens[count_key],
|
|
0,
|
|
)
|
|
expected_topology_atlas_node_ids = [
|
|
"productSurface",
|
|
"sourceControl",
|
|
"kali",
|
|
"devHosts",
|
|
"monitoring",
|
|
"awooopTruth",
|
|
"runtimeGate",
|
|
]
|
|
topology_atlas_nodes = iwooos_projection["topology_atlas_nodes"]
|
|
assert_equal(
|
|
"iwooos_projection.topology_atlas_nodes.ids",
|
|
[item["node_id"] for item in topology_atlas_nodes],
|
|
expected_topology_atlas_node_ids,
|
|
)
|
|
assert_equal(
|
|
"iwooos_projection.topology_atlas_nodes.display_order",
|
|
[item["display_order"] for item in topology_atlas_nodes],
|
|
list(range(1, len(expected_topology_atlas_node_ids) + 1)),
|
|
)
|
|
for item in topology_atlas_nodes:
|
|
assert_true(
|
|
f"iwooos_projection.topology_atlas_nodes.{item['node_id']}.read_only",
|
|
item["read_only"],
|
|
)
|
|
assert_false(
|
|
f"iwooos_projection.topology_atlas_nodes.{item['node_id']}.runtime_gate_opened",
|
|
item["runtime_gate_opened"],
|
|
)
|
|
assert_false(
|
|
f"iwooos_projection.topology_atlas_nodes.{item['node_id']}.runtime_execution_authorized",
|
|
item["runtime_execution_authorized"],
|
|
)
|
|
assert_true(
|
|
f"iwooos_projection.topology_atlas_nodes.{item['node_id']}.not_authorization",
|
|
item["not_authorization"],
|
|
)
|
|
for node_id in ["kali", "devHosts"]:
|
|
node = next(item for item in topology_atlas_nodes if item["node_id"] == node_id)
|
|
assert_false(
|
|
f"iwooos_projection.topology_atlas_nodes.{node_id}.scan_authorized",
|
|
node["scan_authorized"],
|
|
)
|
|
assert_false(
|
|
f"iwooos_projection.topology_atlas_nodes.{node_id}.host_change_authorized",
|
|
node["host_change_authorized"],
|
|
)
|
|
source_control_topology_node = next(item for item in topology_atlas_nodes if item["node_id"] == "sourceControl")
|
|
assert_false(
|
|
"iwooos_projection.topology_atlas_nodes.sourceControl.source_control_mutation_authorized",
|
|
source_control_topology_node["source_control_mutation_authorized"],
|
|
)
|
|
expected_topology_atlas_chart_ids = [
|
|
"contextDepth",
|
|
"blastRadius",
|
|
"evidenceFreshness",
|
|
]
|
|
topology_atlas_charts = iwooos_projection["topology_atlas_technical_charts"]
|
|
assert_equal(
|
|
"iwooos_projection.topology_atlas_technical_charts.ids",
|
|
[item["chart_id"] for item in topology_atlas_charts],
|
|
expected_topology_atlas_chart_ids,
|
|
)
|
|
assert_equal(
|
|
"iwooos_projection.topology_atlas_technical_charts.display_order",
|
|
[item["display_order"] for item in topology_atlas_charts],
|
|
list(range(1, len(expected_topology_atlas_chart_ids) + 1)),
|
|
)
|
|
for item in topology_atlas_charts:
|
|
assert_equal(
|
|
f"iwooos_projection.topology_atlas_technical_charts.{item['chart_id']}.display_mode",
|
|
item["display_mode"],
|
|
"first_screen_professional_topology_atlas",
|
|
)
|
|
assert_false(
|
|
f"iwooos_projection.topology_atlas_technical_charts.{item['chart_id']}.runtime_delta",
|
|
item["runtime_delta"],
|
|
)
|
|
assert_true(
|
|
f"iwooos_projection.topology_atlas_technical_charts.{item['chart_id']}.not_authorization",
|
|
item["not_authorization"],
|
|
)
|
|
blast_radius_chart = next(item for item in topology_atlas_charts if item["chart_id"] == "blastRadius")
|
|
assert_false(
|
|
"iwooos_projection.topology_atlas_technical_charts.blastRadius.blast_radius_verified",
|
|
blast_radius_chart["blast_radius_verified"],
|
|
)
|
|
expected_topology_drilldown_node_ids = [
|
|
"productSurface",
|
|
"sourceControl",
|
|
"kali",
|
|
"devHosts",
|
|
"monitoring",
|
|
"awooopTruth",
|
|
"runtimeGate",
|
|
]
|
|
topology_drilldown_nodes = iwooos_projection["topology_drilldown_nodes"]
|
|
assert_equal(
|
|
"iwooos_projection.topology_drilldown_nodes.ids",
|
|
[item["node_id"] for item in topology_drilldown_nodes],
|
|
expected_topology_drilldown_node_ids,
|
|
)
|
|
assert_equal(
|
|
"iwooos_projection.topology_drilldown_nodes.display_order",
|
|
[item["display_order"] for item in topology_drilldown_nodes],
|
|
list(range(1, len(expected_topology_drilldown_node_ids) + 1)),
|
|
)
|
|
for item in topology_drilldown_nodes:
|
|
assert_true(
|
|
f"iwooos_projection.topology_drilldown_nodes.{item['node_id']}.interactive_node_allowed",
|
|
item["interactive_node_allowed"],
|
|
)
|
|
assert_false(
|
|
f"iwooos_projection.topology_drilldown_nodes.{item['node_id']}.execution_action_button_allowed",
|
|
item["execution_action_button_allowed"],
|
|
)
|
|
assert_false(
|
|
f"iwooos_projection.topology_drilldown_nodes.{item['node_id']}.scan_authorized",
|
|
item["scan_authorized"],
|
|
)
|
|
assert_false(
|
|
f"iwooos_projection.topology_drilldown_nodes.{item['node_id']}.host_change_authorized",
|
|
item["host_change_authorized"],
|
|
)
|
|
assert_false(
|
|
f"iwooos_projection.topology_drilldown_nodes.{item['node_id']}.source_control_mutation_authorized",
|
|
item["source_control_mutation_authorized"],
|
|
)
|
|
assert_false(
|
|
f"iwooos_projection.topology_drilldown_nodes.{item['node_id']}.runtime_gate_opened",
|
|
item["runtime_gate_opened"],
|
|
)
|
|
assert_false(
|
|
f"iwooos_projection.topology_drilldown_nodes.{item['node_id']}.runtime_execution_authorized",
|
|
item["runtime_execution_authorized"],
|
|
)
|
|
assert_true(
|
|
f"iwooos_projection.topology_drilldown_nodes.{item['node_id']}.not_authorization",
|
|
item["not_authorization"],
|
|
)
|
|
expected_topology_path_explorer_path_ids = [
|
|
"externalToGate",
|
|
"sourceToHost",
|
|
"kaliToDev",
|
|
"evidenceToGate",
|
|
]
|
|
expected_topology_path_explorer_sequences = {
|
|
"externalToGate": ["productSurface", "sourceControl", "monitoring", "awooopTruth", "runtimeGate"],
|
|
"sourceToHost": ["sourceControl", "kali", "devHosts", "runtimeGate"],
|
|
"kaliToDev": ["kali", "devHosts", "runtimeGate"],
|
|
"evidenceToGate": ["monitoring", "awooopTruth", "runtimeGate"],
|
|
}
|
|
topology_path_explorer_paths = iwooos_projection["topology_path_explorer_paths"]
|
|
assert_equal(
|
|
"iwooos_projection.topology_path_explorer_paths.ids",
|
|
[item["path_id"] for item in topology_path_explorer_paths],
|
|
expected_topology_path_explorer_path_ids,
|
|
)
|
|
assert_equal(
|
|
"iwooos_projection.topology_path_explorer_paths.display_order",
|
|
[item["display_order"] for item in topology_path_explorer_paths],
|
|
list(range(1, len(expected_topology_path_explorer_path_ids) + 1)),
|
|
)
|
|
for item in topology_path_explorer_paths:
|
|
path_id = item["path_id"]
|
|
assert_equal(
|
|
f"iwooos_projection.topology_path_explorer_paths.{path_id}.node_sequence",
|
|
item["node_sequence"],
|
|
expected_topology_path_explorer_sequences[path_id],
|
|
)
|
|
assert_true(
|
|
f"iwooos_projection.topology_path_explorer_paths.{path_id}.interactive_path_allowed",
|
|
item["interactive_path_allowed"],
|
|
)
|
|
assert_false(
|
|
f"iwooos_projection.topology_path_explorer_paths.{path_id}.execution_action_button_allowed",
|
|
item["execution_action_button_allowed"],
|
|
)
|
|
assert_false(
|
|
f"iwooos_projection.topology_path_explorer_paths.{path_id}.scan_authorized",
|
|
item["scan_authorized"],
|
|
)
|
|
assert_false(
|
|
f"iwooos_projection.topology_path_explorer_paths.{path_id}.host_change_authorized",
|
|
item["host_change_authorized"],
|
|
)
|
|
assert_false(
|
|
f"iwooos_projection.topology_path_explorer_paths.{path_id}.source_control_mutation_authorized",
|
|
item["source_control_mutation_authorized"],
|
|
)
|
|
assert_false(
|
|
f"iwooos_projection.topology_path_explorer_paths.{path_id}.runtime_gate_opened",
|
|
item["runtime_gate_opened"],
|
|
)
|
|
assert_false(
|
|
f"iwooos_projection.topology_path_explorer_paths.{path_id}.runtime_execution_authorized",
|
|
item["runtime_execution_authorized"],
|
|
)
|
|
assert_true(
|
|
f"iwooos_projection.topology_path_explorer_paths.{path_id}.not_authorization",
|
|
item["not_authorization"],
|
|
)
|
|
expected_topology_intelligence_deck_ids = [
|
|
"assetContext",
|
|
"attackPath",
|
|
"blastRadius",
|
|
"evidenceTimeline",
|
|
]
|
|
expected_topology_intelligence_sequences = {
|
|
"assetContext": ["productSurface", "sourceControl", "monitoring"],
|
|
"attackPath": ["sourceControl", "kali", "devHosts", "runtimeGate"],
|
|
"blastRadius": ["kali", "devHosts", "runtimeGate"],
|
|
"evidenceTimeline": ["monitoring", "awooopTruth", "runtimeGate"],
|
|
}
|
|
topology_intelligence_deck = iwooos_projection["topology_intelligence_deck"]
|
|
assert_equal(
|
|
"iwooos_projection.topology_intelligence_deck.ids",
|
|
[item["insight_id"] for item in topology_intelligence_deck],
|
|
expected_topology_intelligence_deck_ids,
|
|
)
|
|
assert_equal(
|
|
"iwooos_projection.topology_intelligence_deck.display_order",
|
|
[item["display_order"] for item in topology_intelligence_deck],
|
|
list(range(1, len(expected_topology_intelligence_deck_ids) + 1)),
|
|
)
|
|
for item in topology_intelligence_deck:
|
|
insight_id = item["insight_id"]
|
|
assert_equal(
|
|
f"iwooos_projection.topology_intelligence_deck.{insight_id}.display_mode",
|
|
item["display_mode"],
|
|
"professional_graph_intelligence_deck",
|
|
)
|
|
assert_equal(
|
|
f"iwooos_projection.topology_intelligence_deck.{insight_id}.node_sequence",
|
|
item["node_sequence"],
|
|
expected_topology_intelligence_sequences[insight_id],
|
|
)
|
|
assert_true(
|
|
f"iwooos_projection.topology_intelligence_deck.{insight_id}.interactive_item_allowed",
|
|
item["interactive_item_allowed"],
|
|
)
|
|
assert_false(
|
|
f"iwooos_projection.topology_intelligence_deck.{insight_id}.execution_action_button_allowed",
|
|
item["execution_action_button_allowed"],
|
|
)
|
|
assert_false(
|
|
f"iwooos_projection.topology_intelligence_deck.{insight_id}.scan_authorized",
|
|
item["scan_authorized"],
|
|
)
|
|
assert_false(
|
|
f"iwooos_projection.topology_intelligence_deck.{insight_id}.host_change_authorized",
|
|
item["host_change_authorized"],
|
|
)
|
|
assert_false(
|
|
f"iwooos_projection.topology_intelligence_deck.{insight_id}.source_control_mutation_authorized",
|
|
item["source_control_mutation_authorized"],
|
|
)
|
|
assert_false(
|
|
f"iwooos_projection.topology_intelligence_deck.{insight_id}.runtime_gate_opened",
|
|
item["runtime_gate_opened"],
|
|
)
|
|
assert_false(
|
|
f"iwooos_projection.topology_intelligence_deck.{insight_id}.runtime_execution_authorized",
|
|
item["runtime_execution_authorized"],
|
|
)
|
|
assert_true(
|
|
f"iwooos_projection.topology_intelligence_deck.{insight_id}.not_authorization",
|
|
item["not_authorization"],
|
|
)
|
|
expected_decision_runway_step_ids = [
|
|
"ownerEvidence",
|
|
"reviewerAcceptance",
|
|
"hostWindow",
|
|
"githubPrimary",
|
|
"runtimeGate",
|
|
]
|
|
decision_runway_steps = iwooos_projection["decision_runway_steps"]
|
|
assert_equal(
|
|
"iwooos_projection.decision_runway_steps.ids",
|
|
[item["step_id"] for item in decision_runway_steps],
|
|
expected_decision_runway_step_ids,
|
|
)
|
|
assert_equal(
|
|
"iwooos_projection.decision_runway_steps.display_order",
|
|
[item["display_order"] for item in decision_runway_steps],
|
|
list(range(1, len(expected_decision_runway_step_ids) + 1)),
|
|
)
|
|
assert_equal(
|
|
"iwooos_projection.decision_runway_steps.progress",
|
|
[item["progress"] for item in decision_runway_steps],
|
|
[18, 12, 35, 22, 0],
|
|
)
|
|
for item in decision_runway_steps:
|
|
step_id = item["step_id"]
|
|
assert_equal(
|
|
f"iwooos_projection.decision_runway_steps.{step_id}.display_mode",
|
|
item["display_mode"],
|
|
"first_screen_decision_runway",
|
|
)
|
|
assert_true(
|
|
f"iwooos_projection.decision_runway_steps.{step_id}.interactive_step_allowed",
|
|
item["interactive_step_allowed"],
|
|
)
|
|
assert_false(
|
|
f"iwooos_projection.decision_runway_steps.{step_id}.execution_action_button_allowed",
|
|
item["execution_action_button_allowed"],
|
|
)
|
|
assert_false(
|
|
f"iwooos_projection.decision_runway_steps.{step_id}.scan_authorized",
|
|
item["scan_authorized"],
|
|
)
|
|
assert_false(
|
|
f"iwooos_projection.decision_runway_steps.{step_id}.host_change_authorized",
|
|
item["host_change_authorized"],
|
|
)
|
|
assert_false(
|
|
f"iwooos_projection.decision_runway_steps.{step_id}.source_control_mutation_authorized",
|
|
item["source_control_mutation_authorized"],
|
|
)
|
|
assert_false(
|
|
f"iwooos_projection.decision_runway_steps.{step_id}.runtime_gate_opened",
|
|
item["runtime_gate_opened"],
|
|
)
|
|
assert_false(
|
|
f"iwooos_projection.decision_runway_steps.{step_id}.runtime_execution_authorized",
|
|
item["runtime_execution_authorized"],
|
|
)
|
|
assert_true(
|
|
f"iwooos_projection.decision_runway_steps.{step_id}.not_authorization",
|
|
item["not_authorization"],
|
|
)
|
|
expected_decision_runway_dependency_ids = [
|
|
"iwooos",
|
|
"awooop",
|
|
"vibework",
|
|
"agentBounty",
|
|
"kali",
|
|
"devHosts",
|
|
"monitoring",
|
|
]
|
|
decision_runway_dependencies = iwooos_projection["decision_runway_dependencies"]
|
|
assert_equal(
|
|
"iwooos_projection.decision_runway_dependencies.ids",
|
|
[item["dependency_id"] for item in decision_runway_dependencies],
|
|
expected_decision_runway_dependency_ids,
|
|
)
|
|
assert_equal(
|
|
"iwooos_projection.decision_runway_dependencies.display_order",
|
|
[item["display_order"] for item in decision_runway_dependencies],
|
|
list(range(1, len(expected_decision_runway_dependency_ids) + 1)),
|
|
)
|
|
for item in decision_runway_dependencies:
|
|
dependency_id = item["dependency_id"]
|
|
assert_equal(
|
|
f"iwooos_projection.decision_runway_dependencies.{dependency_id}.display_mode",
|
|
item["display_mode"],
|
|
"first_screen_decision_runway_dependency",
|
|
)
|
|
assert_false(
|
|
f"iwooos_projection.decision_runway_dependencies.{dependency_id}.runtime_delta",
|
|
item["runtime_delta"],
|
|
)
|
|
assert_true(
|
|
f"iwooos_projection.decision_runway_dependencies.{dependency_id}.not_authorization",
|
|
item["not_authorization"],
|
|
)
|
|
expected_decision_runway_boundary_signal_ids = [
|
|
"scan",
|
|
"hostChange",
|
|
"sourceMutation",
|
|
"runtimeExecution",
|
|
]
|
|
decision_runway_boundary_signals = iwooos_projection["decision_runway_boundary_signals"]
|
|
assert_equal(
|
|
"iwooos_projection.decision_runway_boundary_signals.ids",
|
|
[item["signal_id"] for item in decision_runway_boundary_signals],
|
|
expected_decision_runway_boundary_signal_ids,
|
|
)
|
|
assert_equal(
|
|
"iwooos_projection.decision_runway_boundary_signals.display_order",
|
|
[item["display_order"] for item in decision_runway_boundary_signals],
|
|
list(range(1, len(expected_decision_runway_boundary_signal_ids) + 1)),
|
|
)
|
|
for item in decision_runway_boundary_signals:
|
|
signal_id = item["signal_id"]
|
|
assert_false(
|
|
f"iwooos_projection.decision_runway_boundary_signals.{signal_id}.authorized",
|
|
item["authorized"],
|
|
)
|
|
assert_false(
|
|
f"iwooos_projection.decision_runway_boundary_signals.{signal_id}.runtime_gate_opened",
|
|
item["runtime_gate_opened"],
|
|
)
|
|
assert_true(
|
|
f"iwooos_projection.decision_runway_boundary_signals.{signal_id}.not_authorization",
|
|
item["not_authorization"],
|
|
)
|
|
expected_gate_radar_lane_ids = [
|
|
"visible",
|
|
"blocker",
|
|
"review",
|
|
"locked",
|
|
]
|
|
gate_radar_lanes = iwooos_projection["gate_radar_lanes"]
|
|
assert_equal(
|
|
"iwooos_projection.gate_radar_lanes.ids",
|
|
[item["lane_id"] for item in gate_radar_lanes],
|
|
expected_gate_radar_lane_ids,
|
|
)
|
|
assert_equal(
|
|
"iwooos_projection.gate_radar_lanes.display_order",
|
|
[item["display_order"] for item in gate_radar_lanes],
|
|
list(range(1, len(expected_gate_radar_lane_ids) + 1)),
|
|
)
|
|
assert_equal(
|
|
"iwooos_projection.gate_radar_lanes.scores",
|
|
[item["score"] for item in gate_radar_lanes],
|
|
[92, 64, 40, 0],
|
|
)
|
|
for item in gate_radar_lanes:
|
|
assert_equal(
|
|
f"iwooos_projection.gate_radar_lanes.{item['lane_id']}.display_mode",
|
|
item["display_mode"],
|
|
"first_screen_gate_radar",
|
|
)
|
|
assert_true(
|
|
f"iwooos_projection.gate_radar_lanes.{item['lane_id']}.interactive_lens_allowed",
|
|
item["interactive_lens_allowed"],
|
|
)
|
|
assert_false(
|
|
f"iwooos_projection.gate_radar_lanes.{item['lane_id']}.execution_action_button_allowed",
|
|
item["execution_action_button_allowed"],
|
|
)
|
|
assert_false(
|
|
f"iwooos_projection.gate_radar_lanes.{item['lane_id']}.runtime_gate_opened",
|
|
item["runtime_gate_opened"],
|
|
)
|
|
assert_false(
|
|
f"iwooos_projection.gate_radar_lanes.{item['lane_id']}.runtime_execution_authorized",
|
|
item["runtime_execution_authorized"],
|
|
)
|
|
assert_true(
|
|
f"iwooos_projection.gate_radar_lanes.{item['lane_id']}.not_authorization",
|
|
item["not_authorization"],
|
|
)
|
|
blocker_gate_radar_lane = next(item for item in gate_radar_lanes if item["lane_id"] == "blocker")
|
|
for count_key in ["owner_response_received_count", "owner_response_accepted_count", "github_primary_ready_count"]:
|
|
assert_equal(
|
|
f"iwooos_projection.gate_radar_lanes.blocker.{count_key}",
|
|
blocker_gate_radar_lane[count_key],
|
|
0,
|
|
)
|
|
review_gate_radar_lane = next(item for item in gate_radar_lanes if item["lane_id"] == "review")
|
|
assert_true(
|
|
"iwooos_projection.gate_radar_lanes.review.human_review_required",
|
|
review_gate_radar_lane["human_review_required"],
|
|
)
|
|
assert_false(
|
|
"iwooos_projection.gate_radar_lanes.review.formal_decision_record_created",
|
|
review_gate_radar_lane["formal_decision_record_created"],
|
|
)
|
|
locked_gate_radar_lane = next(item for item in gate_radar_lanes if item["lane_id"] == "locked")
|
|
for flag in ["scan_authorized", "host_change_authorized", "source_control_mutation_authorized"]:
|
|
assert_false(
|
|
f"iwooos_projection.gate_radar_lanes.locked.{flag}",
|
|
locked_gate_radar_lane[flag],
|
|
)
|
|
for text in [
|
|
"iwooos_first_unlock_path_step_count=5",
|
|
"iwooos_first_unlock_path_current_focus=s4_9_owner_response",
|
|
"iwooos_first_unlock_path_owner_response_received_count=0",
|
|
"iwooos_first_unlock_path_owner_response_accepted_count=0",
|
|
"iwooos_first_unlock_path_redacted_evidence_pointer_count=0",
|
|
"iwooos_first_unlock_path_intake_preflight_passed_count=0",
|
|
"iwooos_first_unlock_path_headline_review_authorized=false",
|
|
"iwooos_first_unlock_path_runtime_gate_opened=false",
|
|
"runtime_execution_authorized=false",
|
|
"active_runtime_gate_count=0",
|
|
"action_buttons_allowed=false",
|
|
"not_authorization=true",
|
|
"secret_value_collection_allowed=false",
|
|
"repo_creation_authorized=false",
|
|
"refs_sync_authorized=false",
|
|
"workflow_modification_authorized=false",
|
|
"github_primary_switch_authorized=false",
|
|
"gitea_disablement_authorized=false",
|
|
]:
|
|
assert_text_contains(
|
|
"iwooos_page.first_progress_unlock_path_boundary",
|
|
iwooos_projection_page,
|
|
text,
|
|
)
|
|
assert_contains(
|
|
"web_messages.zh-TW.iwooos.firstProgressUnlockPath",
|
|
list(web_messages_zh["iwooos"].keys()),
|
|
"firstProgressUnlockPath",
|
|
)
|
|
assert_contains(
|
|
"web_messages.en.iwooos.firstProgressUnlockPath",
|
|
list(web_messages_en["iwooos"].keys()),
|
|
"firstProgressUnlockPath",
|
|
)
|
|
for key in ["eyebrow", "title", "subtitle", "summary", "items", "stepLabel", "boundaryTitle", "boundaryIntro"]:
|
|
assert_contains(
|
|
"web_messages.zh-TW.iwooos.firstProgressUnlockPath.keys",
|
|
list(web_messages_zh["iwooos"]["firstProgressUnlockPath"].keys()),
|
|
key,
|
|
)
|
|
assert_contains(
|
|
"web_messages.en.iwooos.firstProgressUnlockPath.keys",
|
|
list(web_messages_en["iwooos"]["firstProgressUnlockPath"].keys()),
|
|
key,
|
|
)
|
|
for key in ["focus", "steps", "accepted", "headline"]:
|
|
assert_contains(
|
|
"web_messages.zh-TW.iwooos.firstProgressUnlockPath.summary",
|
|
list(web_messages_zh["iwooos"]["firstProgressUnlockPath"]["summary"].keys()),
|
|
key,
|
|
)
|
|
assert_contains(
|
|
"web_messages.en.iwooos.firstProgressUnlockPath.summary",
|
|
list(web_messages_en["iwooos"]["firstProgressUnlockPath"]["summary"].keys()),
|
|
key,
|
|
)
|
|
for key in [
|
|
"ownerResponseScope",
|
|
"redactedEvidencePointer",
|
|
"intakePreflight",
|
|
"reviewAcceptance",
|
|
"headlineReviewCandidate",
|
|
]:
|
|
assert_contains(
|
|
"web_messages.zh-TW.iwooos.firstProgressUnlockPath.items",
|
|
list(web_messages_zh["iwooos"]["firstProgressUnlockPath"]["items"].keys()),
|
|
key,
|
|
)
|
|
assert_contains(
|
|
"web_messages.en.iwooos.firstProgressUnlockPath.items",
|
|
list(web_messages_en["iwooos"]["firstProgressUnlockPath"]["items"].keys()),
|
|
key,
|
|
)
|
|
assert_contains(
|
|
"web_messages.zh-TW.iwooos.commandMap",
|
|
list(web_messages_zh["iwooos"].keys()),
|
|
"commandMap",
|
|
)
|
|
assert_contains(
|
|
"web_messages.en.iwooos.commandMap",
|
|
list(web_messages_en["iwooos"].keys()),
|
|
"commandMap",
|
|
)
|
|
for key in ["eyebrow", "title", "subtitle", "tabsLabel", "boundaryTitle", "panelLabels", "items"]:
|
|
assert_contains(
|
|
"web_messages.zh-TW.iwooos.commandMap.keys",
|
|
list(web_messages_zh["iwooos"]["commandMap"].keys()),
|
|
key,
|
|
)
|
|
assert_contains(
|
|
"web_messages.en.iwooos.commandMap.keys",
|
|
list(web_messages_en["iwooos"]["commandMap"].keys()),
|
|
key,
|
|
)
|
|
for key in ["evidence", "next", "locked"]:
|
|
assert_contains(
|
|
"web_messages.zh-TW.iwooos.commandMap.panelLabels",
|
|
list(web_messages_zh["iwooos"]["commandMap"]["panelLabels"].keys()),
|
|
key,
|
|
)
|
|
assert_contains(
|
|
"web_messages.en.iwooos.commandMap.panelLabels",
|
|
list(web_messages_en["iwooos"]["commandMap"]["panelLabels"].keys()),
|
|
key,
|
|
)
|
|
for key in expected_command_map_item_ids:
|
|
assert_contains(
|
|
"web_messages.zh-TW.iwooos.commandMap.items",
|
|
list(web_messages_zh["iwooos"]["commandMap"]["items"].keys()),
|
|
key,
|
|
)
|
|
assert_contains(
|
|
"web_messages.en.iwooos.commandMap.items",
|
|
list(web_messages_en["iwooos"]["commandMap"]["items"].keys()),
|
|
key,
|
|
)
|
|
for field in ["title", "state", "detail", "evidence", "next", "locked"]:
|
|
assert_contains(
|
|
f"web_messages.zh-TW.iwooos.commandMap.items.{key}",
|
|
list(web_messages_zh["iwooos"]["commandMap"]["items"][key].keys()),
|
|
field,
|
|
)
|
|
assert_contains(
|
|
f"web_messages.en.iwooos.commandMap.items.{key}",
|
|
list(web_messages_en["iwooos"]["commandMap"]["items"][key].keys()),
|
|
field,
|
|
)
|
|
assert_contains(
|
|
"web_messages.zh-TW.iwooos.executiveSnapshot",
|
|
list(web_messages_zh["iwooos"].keys()),
|
|
"executiveSnapshot",
|
|
)
|
|
assert_contains(
|
|
"web_messages.en.iwooos.executiveSnapshot",
|
|
list(web_messages_en["iwooos"].keys()),
|
|
"executiveSnapshot",
|
|
)
|
|
for key in ["eyebrow", "title", "subtitle", "axes", "cards", "boundaryTitle", "boundaryIntro"]:
|
|
assert_contains(
|
|
"web_messages.zh-TW.iwooos.executiveSnapshot.keys",
|
|
list(web_messages_zh["iwooos"]["executiveSnapshot"].keys()),
|
|
key,
|
|
)
|
|
assert_contains(
|
|
"web_messages.en.iwooos.executiveSnapshot.keys",
|
|
list(web_messages_en["iwooos"]["executiveSnapshot"].keys()),
|
|
key,
|
|
)
|
|
for key in expected_executive_snapshot_axis_ids:
|
|
assert_contains(
|
|
"web_messages.zh-TW.iwooos.executiveSnapshot.axes",
|
|
list(web_messages_zh["iwooos"]["executiveSnapshot"]["axes"].keys()),
|
|
key,
|
|
)
|
|
assert_contains(
|
|
"web_messages.en.iwooos.executiveSnapshot.axes",
|
|
list(web_messages_en["iwooos"]["executiveSnapshot"]["axes"].keys()),
|
|
key,
|
|
)
|
|
assert_contains(
|
|
f"web_messages.zh-TW.iwooos.executiveSnapshot.axes.{key}",
|
|
list(web_messages_zh["iwooos"]["executiveSnapshot"]["axes"][key].keys()),
|
|
"label",
|
|
)
|
|
assert_contains(
|
|
f"web_messages.en.iwooos.executiveSnapshot.axes.{key}",
|
|
list(web_messages_en["iwooos"]["executiveSnapshot"]["axes"][key].keys()),
|
|
"label",
|
|
)
|
|
assert_text_contains(
|
|
"iwooos_page.executive_snapshot_framework_axis",
|
|
iwooos_projection_page,
|
|
"{ key: 'framework', value: '92%', percent: 92",
|
|
)
|
|
for key in expected_executive_snapshot_card_ids:
|
|
assert_contains(
|
|
"web_messages.zh-TW.iwooos.executiveSnapshot.cards",
|
|
list(web_messages_zh["iwooos"]["executiveSnapshot"]["cards"].keys()),
|
|
key,
|
|
)
|
|
assert_contains(
|
|
"web_messages.en.iwooos.executiveSnapshot.cards",
|
|
list(web_messages_en["iwooos"]["executiveSnapshot"]["cards"].keys()),
|
|
key,
|
|
)
|
|
for field in ["title", "body"]:
|
|
assert_contains(
|
|
f"web_messages.zh-TW.iwooos.executiveSnapshot.cards.{key}",
|
|
list(web_messages_zh["iwooos"]["executiveSnapshot"]["cards"][key].keys()),
|
|
field,
|
|
)
|
|
assert_contains(
|
|
f"web_messages.en.iwooos.executiveSnapshot.cards.{key}",
|
|
list(web_messages_en["iwooos"]["executiveSnapshot"]["cards"][key].keys()),
|
|
field,
|
|
)
|
|
assert_contains(
|
|
"web_messages.zh-TW.iwooos.focusDeck",
|
|
list(web_messages_zh["iwooos"].keys()),
|
|
"focusDeck",
|
|
)
|
|
assert_contains(
|
|
"web_messages.en.iwooos.focusDeck",
|
|
list(web_messages_en["iwooos"].keys()),
|
|
"focusDeck",
|
|
)
|
|
for key in ["eyebrow", "title", "subtitle", "summary", "items", "boundaryTitle"]:
|
|
assert_contains(
|
|
"web_messages.zh-TW.iwooos.focusDeck.keys",
|
|
list(web_messages_zh["iwooos"]["focusDeck"].keys()),
|
|
key,
|
|
)
|
|
assert_contains(
|
|
"web_messages.en.iwooos.focusDeck.keys",
|
|
list(web_messages_en["iwooos"]["focusDeck"].keys()),
|
|
key,
|
|
)
|
|
for key in ["items", "runtime", "mode"]:
|
|
assert_contains(
|
|
"web_messages.zh-TW.iwooos.focusDeck.summary",
|
|
list(web_messages_zh["iwooos"]["focusDeck"]["summary"].keys()),
|
|
key,
|
|
)
|
|
assert_contains(
|
|
"web_messages.en.iwooos.focusDeck.summary",
|
|
list(web_messages_en["iwooos"]["focusDeck"]["summary"].keys()),
|
|
key,
|
|
)
|
|
for key in expected_focus_deck_item_ids:
|
|
assert_contains(
|
|
"web_messages.zh-TW.iwooos.focusDeck.items",
|
|
list(web_messages_zh["iwooos"]["focusDeck"]["items"].keys()),
|
|
key,
|
|
)
|
|
assert_contains(
|
|
"web_messages.en.iwooos.focusDeck.items",
|
|
list(web_messages_en["iwooos"]["focusDeck"]["items"].keys()),
|
|
key,
|
|
)
|
|
for field in ["label", "title", "body"]:
|
|
assert_contains(
|
|
f"web_messages.zh-TW.iwooos.focusDeck.items.{key}",
|
|
list(web_messages_zh["iwooos"]["focusDeck"]["items"][key].keys()),
|
|
field,
|
|
)
|
|
assert_contains(
|
|
f"web_messages.en.iwooos.focusDeck.items.{key}",
|
|
list(web_messages_en["iwooos"]["focusDeck"]["items"][key].keys()),
|
|
field,
|
|
)
|
|
assert_contains(
|
|
"web_messages.zh-TW.iwooos.immediateVisualMesh",
|
|
list(web_messages_zh["iwooos"].keys()),
|
|
"immediateVisualMesh",
|
|
)
|
|
assert_contains(
|
|
"web_messages.en.iwooos.immediateVisualMesh",
|
|
list(web_messages_en["iwooos"].keys()),
|
|
"immediateVisualMesh",
|
|
)
|
|
for key in ["eyebrow", "title", "subtitle", "center", "stats", "nodes", "boundaryTitle", "boundaryIntro"]:
|
|
assert_contains(
|
|
"web_messages.zh-TW.iwooos.immediateVisualMesh.keys",
|
|
list(web_messages_zh["iwooos"]["immediateVisualMesh"].keys()),
|
|
key,
|
|
)
|
|
assert_contains(
|
|
"web_messages.en.iwooos.immediateVisualMesh.keys",
|
|
list(web_messages_en["iwooos"]["immediateVisualMesh"].keys()),
|
|
key,
|
|
)
|
|
for key in ["assetScope", "hostScope", "runtimeGate"]:
|
|
assert_contains(
|
|
"web_messages.zh-TW.iwooos.immediateVisualMesh.stats",
|
|
list(web_messages_zh["iwooos"]["immediateVisualMesh"]["stats"].keys()),
|
|
key,
|
|
)
|
|
assert_contains(
|
|
"web_messages.en.iwooos.immediateVisualMesh.stats",
|
|
list(web_messages_en["iwooos"]["immediateVisualMesh"]["stats"].keys()),
|
|
key,
|
|
)
|
|
assert_contains(
|
|
f"web_messages.zh-TW.iwooos.immediateVisualMesh.stats.{key}",
|
|
list(web_messages_zh["iwooos"]["immediateVisualMesh"]["stats"][key].keys()),
|
|
"label",
|
|
)
|
|
assert_contains(
|
|
f"web_messages.en.iwooos.immediateVisualMesh.stats.{key}",
|
|
list(web_messages_en["iwooos"]["immediateVisualMesh"]["stats"][key].keys()),
|
|
"label",
|
|
)
|
|
for key in ["products", "hosts", "sourceControl", "monitoring", "awooop", "runtimeGate"]:
|
|
assert_contains(
|
|
"web_messages.zh-TW.iwooos.immediateVisualMesh.nodes",
|
|
list(web_messages_zh["iwooos"]["immediateVisualMesh"]["nodes"].keys()),
|
|
key,
|
|
)
|
|
assert_contains(
|
|
"web_messages.en.iwooos.immediateVisualMesh.nodes",
|
|
list(web_messages_en["iwooos"]["immediateVisualMesh"]["nodes"].keys()),
|
|
key,
|
|
)
|
|
for field in ["title", "body"]:
|
|
assert_contains(
|
|
f"web_messages.zh-TW.iwooos.immediateVisualMesh.nodes.{key}",
|
|
list(web_messages_zh["iwooos"]["immediateVisualMesh"]["nodes"][key].keys()),
|
|
field,
|
|
)
|
|
assert_contains(
|
|
f"web_messages.en.iwooos.immediateVisualMesh.nodes.{key}",
|
|
list(web_messages_en["iwooos"]["immediateVisualMesh"]["nodes"][key].keys()),
|
|
field,
|
|
)
|
|
assert_contains(
|
|
"web_messages.zh-TW.iwooos.topologyAtlas",
|
|
list(web_messages_zh["iwooos"].keys()),
|
|
"topologyAtlas",
|
|
)
|
|
assert_contains(
|
|
"web_messages.en.iwooos.topologyAtlas",
|
|
list(web_messages_en["iwooos"].keys()),
|
|
"topologyAtlas",
|
|
)
|
|
for key in [
|
|
"eyebrow",
|
|
"title",
|
|
"subtitle",
|
|
"tabsLabel",
|
|
"mapLabel",
|
|
"panelLabels",
|
|
"pathExplorer",
|
|
"nodeDrilldown",
|
|
"lenses",
|
|
"nodes",
|
|
"layers",
|
|
"charts",
|
|
"boundaryTitle",
|
|
"boundaryIntro",
|
|
]:
|
|
assert_contains(
|
|
"web_messages.zh-TW.iwooos.topologyAtlas.keys",
|
|
list(web_messages_zh["iwooos"]["topologyAtlas"].keys()),
|
|
key,
|
|
)
|
|
assert_contains(
|
|
"web_messages.en.iwooos.topologyAtlas.keys",
|
|
list(web_messages_en["iwooos"]["topologyAtlas"].keys()),
|
|
key,
|
|
)
|
|
for key in ["evidence", "next", "locked"]:
|
|
assert_contains(
|
|
"web_messages.zh-TW.iwooos.topologyAtlas.panelLabels",
|
|
list(web_messages_zh["iwooos"]["topologyAtlas"]["panelLabels"].keys()),
|
|
key,
|
|
)
|
|
assert_contains(
|
|
"web_messages.en.iwooos.topologyAtlas.panelLabels",
|
|
list(web_messages_en["iwooos"]["topologyAtlas"]["panelLabels"].keys()),
|
|
key,
|
|
)
|
|
for key in ["eyebrow", "selectorLabel", "fields", "paths"]:
|
|
assert_contains(
|
|
"web_messages.zh-TW.iwooos.topologyAtlas.pathExplorer.keys",
|
|
list(web_messages_zh["iwooos"]["topologyAtlas"]["pathExplorer"].keys()),
|
|
key,
|
|
)
|
|
assert_contains(
|
|
"web_messages.en.iwooos.topologyAtlas.pathExplorer.keys",
|
|
list(web_messages_en["iwooos"]["topologyAtlas"]["pathExplorer"].keys()),
|
|
key,
|
|
)
|
|
for key in ["evidence", "risk", "next", "locked"]:
|
|
assert_contains(
|
|
"web_messages.zh-TW.iwooos.topologyAtlas.pathExplorer.fields",
|
|
list(web_messages_zh["iwooos"]["topologyAtlas"]["pathExplorer"]["fields"].keys()),
|
|
key,
|
|
)
|
|
assert_contains(
|
|
"web_messages.en.iwooos.topologyAtlas.pathExplorer.fields",
|
|
list(web_messages_en["iwooos"]["topologyAtlas"]["pathExplorer"]["fields"].keys()),
|
|
key,
|
|
)
|
|
for key in ["externalToGate", "sourceToHost", "kaliToDev", "evidenceToGate"]:
|
|
assert_contains(
|
|
"web_messages.zh-TW.iwooos.topologyAtlas.pathExplorer.paths",
|
|
list(web_messages_zh["iwooos"]["topologyAtlas"]["pathExplorer"]["paths"].keys()),
|
|
key,
|
|
)
|
|
assert_contains(
|
|
"web_messages.en.iwooos.topologyAtlas.pathExplorer.paths",
|
|
list(web_messages_en["iwooos"]["topologyAtlas"]["pathExplorer"]["paths"].keys()),
|
|
key,
|
|
)
|
|
for field in ["title", "evidence", "risk", "next", "locked"]:
|
|
assert_contains(
|
|
f"web_messages.zh-TW.iwooos.topologyAtlas.pathExplorer.paths.{key}",
|
|
list(web_messages_zh["iwooos"]["topologyAtlas"]["pathExplorer"]["paths"][key].keys()),
|
|
field,
|
|
)
|
|
assert_contains(
|
|
f"web_messages.en.iwooos.topologyAtlas.pathExplorer.paths.{key}",
|
|
list(web_messages_en["iwooos"]["topologyAtlas"]["pathExplorer"]["paths"][key].keys()),
|
|
field,
|
|
)
|
|
for key in ["eyebrow", "title", "subtitle", "selectorLabel", "ringLabel", "fields", "items"]:
|
|
assert_contains(
|
|
"web_messages.zh-TW.iwooos.topologyAtlas.intelligenceDeck.keys",
|
|
list(web_messages_zh["iwooos"]["topologyAtlas"]["intelligenceDeck"].keys()),
|
|
key,
|
|
)
|
|
assert_contains(
|
|
"web_messages.en.iwooos.topologyAtlas.intelligenceDeck.keys",
|
|
list(web_messages_en["iwooos"]["topologyAtlas"]["intelligenceDeck"].keys()),
|
|
key,
|
|
)
|
|
for key in ["signal", "interpretation", "next"]:
|
|
assert_contains(
|
|
"web_messages.zh-TW.iwooos.topologyAtlas.intelligenceDeck.fields",
|
|
list(web_messages_zh["iwooos"]["topologyAtlas"]["intelligenceDeck"]["fields"].keys()),
|
|
key,
|
|
)
|
|
assert_contains(
|
|
"web_messages.en.iwooos.topologyAtlas.intelligenceDeck.fields",
|
|
list(web_messages_en["iwooos"]["topologyAtlas"]["intelligenceDeck"]["fields"].keys()),
|
|
key,
|
|
)
|
|
for key in ["assetContext", "attackPath", "blastRadius", "evidenceTimeline"]:
|
|
assert_contains(
|
|
"web_messages.zh-TW.iwooos.topologyAtlas.intelligenceDeck.items",
|
|
list(web_messages_zh["iwooos"]["topologyAtlas"]["intelligenceDeck"]["items"].keys()),
|
|
key,
|
|
)
|
|
assert_contains(
|
|
"web_messages.en.iwooos.topologyAtlas.intelligenceDeck.items",
|
|
list(web_messages_en["iwooos"]["topologyAtlas"]["intelligenceDeck"]["items"].keys()),
|
|
key,
|
|
)
|
|
for field in ["title", "signal", "interpretation", "next", "ring"]:
|
|
assert_contains(
|
|
f"web_messages.zh-TW.iwooos.topologyAtlas.intelligenceDeck.items.{key}",
|
|
list(web_messages_zh["iwooos"]["topologyAtlas"]["intelligenceDeck"]["items"][key].keys()),
|
|
field,
|
|
)
|
|
assert_contains(
|
|
f"web_messages.en.iwooos.topologyAtlas.intelligenceDeck.items.{key}",
|
|
list(web_messages_en["iwooos"]["topologyAtlas"]["intelligenceDeck"]["items"][key].keys()),
|
|
field,
|
|
)
|
|
for key in ["eyebrow", "selectorLabel", "fields", "nodes"]:
|
|
assert_contains(
|
|
"web_messages.zh-TW.iwooos.topologyAtlas.nodeDrilldown.keys",
|
|
list(web_messages_zh["iwooos"]["topologyAtlas"]["nodeDrilldown"].keys()),
|
|
key,
|
|
)
|
|
assert_contains(
|
|
"web_messages.en.iwooos.topologyAtlas.nodeDrilldown.keys",
|
|
list(web_messages_en["iwooos"]["topologyAtlas"]["nodeDrilldown"].keys()),
|
|
key,
|
|
)
|
|
for key in ["relation", "evidence", "next", "boundary"]:
|
|
assert_contains(
|
|
"web_messages.zh-TW.iwooos.topologyAtlas.nodeDrilldown.fields",
|
|
list(web_messages_zh["iwooos"]["topologyAtlas"]["nodeDrilldown"]["fields"].keys()),
|
|
key,
|
|
)
|
|
assert_contains(
|
|
"web_messages.en.iwooos.topologyAtlas.nodeDrilldown.fields",
|
|
list(web_messages_en["iwooos"]["topologyAtlas"]["nodeDrilldown"]["fields"].keys()),
|
|
key,
|
|
)
|
|
for key in ["productSurface", "sourceControl", "kali", "devHosts", "monitoring", "awooopTruth", "runtimeGate"]:
|
|
assert_contains(
|
|
"web_messages.zh-TW.iwooos.topologyAtlas.nodeDrilldown.nodes",
|
|
list(web_messages_zh["iwooos"]["topologyAtlas"]["nodeDrilldown"]["nodes"].keys()),
|
|
key,
|
|
)
|
|
assert_contains(
|
|
"web_messages.en.iwooos.topologyAtlas.nodeDrilldown.nodes",
|
|
list(web_messages_en["iwooos"]["topologyAtlas"]["nodeDrilldown"]["nodes"].keys()),
|
|
key,
|
|
)
|
|
assert_contains(
|
|
f"web_messages.zh-TW.iwooos.topologyAtlas.nodeDrilldown.nodes.{key}",
|
|
list(web_messages_zh["iwooos"]["topologyAtlas"]["nodeDrilldown"]["nodes"][key].keys()),
|
|
"body",
|
|
)
|
|
assert_contains(
|
|
f"web_messages.en.iwooos.topologyAtlas.nodeDrilldown.nodes.{key}",
|
|
list(web_messages_en["iwooos"]["topologyAtlas"]["nodeDrilldown"]["nodes"][key].keys()),
|
|
"body",
|
|
)
|
|
for key in ["architecture", "topology", "attackSurface", "evidenceFlow"]:
|
|
assert_contains(
|
|
"web_messages.zh-TW.iwooos.topologyAtlas.lenses",
|
|
list(web_messages_zh["iwooos"]["topologyAtlas"]["lenses"].keys()),
|
|
key,
|
|
)
|
|
assert_contains(
|
|
"web_messages.en.iwooos.topologyAtlas.lenses",
|
|
list(web_messages_en["iwooos"]["topologyAtlas"]["lenses"].keys()),
|
|
key,
|
|
)
|
|
for field in ["title", "mapTitle", "detail", "evidence", "next", "locked"]:
|
|
assert_contains(
|
|
f"web_messages.zh-TW.iwooos.topologyAtlas.lenses.{key}",
|
|
list(web_messages_zh["iwooos"]["topologyAtlas"]["lenses"][key].keys()),
|
|
field,
|
|
)
|
|
assert_contains(
|
|
f"web_messages.en.iwooos.topologyAtlas.lenses.{key}",
|
|
list(web_messages_en["iwooos"]["topologyAtlas"]["lenses"][key].keys()),
|
|
field,
|
|
)
|
|
for key in ["productSurface", "sourceControl", "kali", "devHosts", "monitoring", "awooopTruth", "runtimeGate"]:
|
|
assert_contains(
|
|
"web_messages.zh-TW.iwooos.topologyAtlas.nodes",
|
|
list(web_messages_zh["iwooos"]["topologyAtlas"]["nodes"].keys()),
|
|
key,
|
|
)
|
|
assert_contains(
|
|
"web_messages.en.iwooos.topologyAtlas.nodes",
|
|
list(web_messages_en["iwooos"]["topologyAtlas"]["nodes"].keys()),
|
|
key,
|
|
)
|
|
assert_contains(
|
|
f"web_messages.zh-TW.iwooos.topologyAtlas.nodes.{key}",
|
|
list(web_messages_zh["iwooos"]["topologyAtlas"]["nodes"][key].keys()),
|
|
"title",
|
|
)
|
|
assert_contains(
|
|
f"web_messages.en.iwooos.topologyAtlas.nodes.{key}",
|
|
list(web_messages_en["iwooos"]["topologyAtlas"]["nodes"][key].keys()),
|
|
"title",
|
|
)
|
|
for key in ["externalSurface", "codeSupply", "hostFabric", "evidenceOps", "gateControl"]:
|
|
assert_contains(
|
|
"web_messages.zh-TW.iwooos.topologyAtlas.layers",
|
|
list(web_messages_zh["iwooos"]["topologyAtlas"]["layers"].keys()),
|
|
key,
|
|
)
|
|
assert_contains(
|
|
"web_messages.en.iwooos.topologyAtlas.layers",
|
|
list(web_messages_en["iwooos"]["topologyAtlas"]["layers"].keys()),
|
|
key,
|
|
)
|
|
for field in ["title", "body"]:
|
|
assert_contains(
|
|
f"web_messages.zh-TW.iwooos.topologyAtlas.layers.{key}",
|
|
list(web_messages_zh["iwooos"]["topologyAtlas"]["layers"][key].keys()),
|
|
field,
|
|
)
|
|
assert_contains(
|
|
f"web_messages.en.iwooos.topologyAtlas.layers.{key}",
|
|
list(web_messages_en["iwooos"]["topologyAtlas"]["layers"][key].keys()),
|
|
field,
|
|
)
|
|
for key in ["contextDepth", "blastRadius", "evidenceFreshness"]:
|
|
assert_contains(
|
|
"web_messages.zh-TW.iwooos.topologyAtlas.charts",
|
|
list(web_messages_zh["iwooos"]["topologyAtlas"]["charts"].keys()),
|
|
key,
|
|
)
|
|
assert_contains(
|
|
"web_messages.en.iwooos.topologyAtlas.charts",
|
|
list(web_messages_en["iwooos"]["topologyAtlas"]["charts"].keys()),
|
|
key,
|
|
)
|
|
for field in ["label", "body"]:
|
|
assert_contains(
|
|
f"web_messages.zh-TW.iwooos.topologyAtlas.charts.{key}",
|
|
list(web_messages_zh["iwooos"]["topologyAtlas"]["charts"][key].keys()),
|
|
field,
|
|
)
|
|
assert_contains(
|
|
f"web_messages.en.iwooos.topologyAtlas.charts.{key}",
|
|
list(web_messages_en["iwooos"]["topologyAtlas"]["charts"][key].keys()),
|
|
field,
|
|
)
|
|
assert_contains(
|
|
"web_messages.zh-TW.iwooos.decisionRunway",
|
|
list(web_messages_zh["iwooos"].keys()),
|
|
"decisionRunway",
|
|
)
|
|
assert_contains(
|
|
"web_messages.en.iwooos.decisionRunway",
|
|
list(web_messages_en["iwooos"].keys()),
|
|
"decisionRunway",
|
|
)
|
|
for key in [
|
|
"eyebrow",
|
|
"title",
|
|
"subtitle",
|
|
"railLabel",
|
|
"selectorLabel",
|
|
"fields",
|
|
"boundarySignals",
|
|
"steps",
|
|
"dependencies",
|
|
"boundaryTitle",
|
|
"boundaryIntro",
|
|
]:
|
|
assert_contains(
|
|
"web_messages.zh-TW.iwooos.decisionRunway.keys",
|
|
list(web_messages_zh["iwooos"]["decisionRunway"].keys()),
|
|
key,
|
|
)
|
|
assert_contains(
|
|
"web_messages.en.iwooos.decisionRunway.keys",
|
|
list(web_messages_en["iwooos"]["decisionRunway"].keys()),
|
|
key,
|
|
)
|
|
for key in ["evidence", "next", "blocked"]:
|
|
assert_contains(
|
|
"web_messages.zh-TW.iwooos.decisionRunway.fields",
|
|
list(web_messages_zh["iwooos"]["decisionRunway"]["fields"].keys()),
|
|
key,
|
|
)
|
|
assert_contains(
|
|
"web_messages.en.iwooos.decisionRunway.fields",
|
|
list(web_messages_en["iwooos"]["decisionRunway"]["fields"].keys()),
|
|
key,
|
|
)
|
|
for key in expected_decision_runway_boundary_signal_ids:
|
|
assert_contains(
|
|
"web_messages.zh-TW.iwooos.decisionRunway.boundarySignals",
|
|
list(web_messages_zh["iwooos"]["decisionRunway"]["boundarySignals"].keys()),
|
|
key,
|
|
)
|
|
assert_contains(
|
|
"web_messages.en.iwooos.decisionRunway.boundarySignals",
|
|
list(web_messages_en["iwooos"]["decisionRunway"]["boundarySignals"].keys()),
|
|
key,
|
|
)
|
|
assert_contains(
|
|
f"web_messages.zh-TW.iwooos.decisionRunway.boundarySignals.{key}",
|
|
list(web_messages_zh["iwooos"]["decisionRunway"]["boundarySignals"][key].keys()),
|
|
"label",
|
|
)
|
|
assert_contains(
|
|
f"web_messages.en.iwooos.decisionRunway.boundarySignals.{key}",
|
|
list(web_messages_en["iwooos"]["decisionRunway"]["boundarySignals"][key].keys()),
|
|
"label",
|
|
)
|
|
for key in expected_decision_runway_step_ids:
|
|
assert_contains(
|
|
"web_messages.zh-TW.iwooos.decisionRunway.steps",
|
|
list(web_messages_zh["iwooos"]["decisionRunway"]["steps"].keys()),
|
|
key,
|
|
)
|
|
assert_contains(
|
|
"web_messages.en.iwooos.decisionRunway.steps",
|
|
list(web_messages_en["iwooos"]["decisionRunway"]["steps"].keys()),
|
|
key,
|
|
)
|
|
for field in ["short", "title", "body", "evidence", "next", "blocked"]:
|
|
assert_contains(
|
|
f"web_messages.zh-TW.iwooos.decisionRunway.steps.{key}",
|
|
list(web_messages_zh["iwooos"]["decisionRunway"]["steps"][key].keys()),
|
|
field,
|
|
)
|
|
assert_contains(
|
|
f"web_messages.en.iwooos.decisionRunway.steps.{key}",
|
|
list(web_messages_en["iwooos"]["decisionRunway"]["steps"][key].keys()),
|
|
field,
|
|
)
|
|
for key in expected_decision_runway_dependency_ids:
|
|
assert_contains(
|
|
"web_messages.zh-TW.iwooos.decisionRunway.dependencies",
|
|
list(web_messages_zh["iwooos"]["decisionRunway"]["dependencies"].keys()),
|
|
key,
|
|
)
|
|
assert_contains(
|
|
"web_messages.en.iwooos.decisionRunway.dependencies",
|
|
list(web_messages_en["iwooos"]["decisionRunway"]["dependencies"].keys()),
|
|
key,
|
|
)
|
|
for field in ["title", "body"]:
|
|
assert_contains(
|
|
f"web_messages.zh-TW.iwooos.decisionRunway.dependencies.{key}",
|
|
list(web_messages_zh["iwooos"]["decisionRunway"]["dependencies"][key].keys()),
|
|
field,
|
|
)
|
|
assert_contains(
|
|
f"web_messages.en.iwooos.decisionRunway.dependencies.{key}",
|
|
list(web_messages_en["iwooos"]["decisionRunway"]["dependencies"][key].keys()),
|
|
field,
|
|
)
|
|
assert_contains(
|
|
"web_messages.zh-TW.iwooos.gateRadar",
|
|
list(web_messages_zh["iwooos"].keys()),
|
|
"gateRadar",
|
|
)
|
|
assert_contains(
|
|
"web_messages.en.iwooos.gateRadar",
|
|
list(web_messages_en["iwooos"].keys()),
|
|
"gateRadar",
|
|
)
|
|
for key in [
|
|
"eyebrow",
|
|
"title",
|
|
"subtitle",
|
|
"tabsLabel",
|
|
"activeLabel",
|
|
"summary",
|
|
"panelLabels",
|
|
"lanes",
|
|
"boundaryTitle",
|
|
"boundaryIntro",
|
|
]:
|
|
assert_contains(
|
|
"web_messages.zh-TW.iwooos.gateRadar.keys",
|
|
list(web_messages_zh["iwooos"]["gateRadar"].keys()),
|
|
key,
|
|
)
|
|
assert_contains(
|
|
"web_messages.en.iwooos.gateRadar.keys",
|
|
list(web_messages_en["iwooos"]["gateRadar"].keys()),
|
|
key,
|
|
)
|
|
for key in ["visibleScope", "currentBlocker", "runtimeGate"]:
|
|
assert_contains(
|
|
"web_messages.zh-TW.iwooos.gateRadar.summary",
|
|
list(web_messages_zh["iwooos"]["gateRadar"]["summary"].keys()),
|
|
key,
|
|
)
|
|
assert_contains(
|
|
"web_messages.en.iwooos.gateRadar.summary",
|
|
list(web_messages_en["iwooos"]["gateRadar"]["summary"].keys()),
|
|
key,
|
|
)
|
|
assert_contains(
|
|
f"web_messages.zh-TW.iwooos.gateRadar.summary.{key}",
|
|
list(web_messages_zh["iwooos"]["gateRadar"]["summary"][key].keys()),
|
|
"label",
|
|
)
|
|
assert_contains(
|
|
f"web_messages.en.iwooos.gateRadar.summary.{key}",
|
|
list(web_messages_en["iwooos"]["gateRadar"]["summary"][key].keys()),
|
|
"label",
|
|
)
|
|
for key in ["evidence", "next", "locked"]:
|
|
assert_contains(
|
|
"web_messages.zh-TW.iwooos.gateRadar.panelLabels",
|
|
list(web_messages_zh["iwooos"]["gateRadar"]["panelLabels"].keys()),
|
|
key,
|
|
)
|
|
assert_contains(
|
|
"web_messages.en.iwooos.gateRadar.panelLabels",
|
|
list(web_messages_en["iwooos"]["gateRadar"]["panelLabels"].keys()),
|
|
key,
|
|
)
|
|
for key in ["visible", "blocker", "review", "locked"]:
|
|
assert_contains(
|
|
"web_messages.zh-TW.iwooos.gateRadar.lanes",
|
|
list(web_messages_zh["iwooos"]["gateRadar"]["lanes"].keys()),
|
|
key,
|
|
)
|
|
assert_contains(
|
|
"web_messages.en.iwooos.gateRadar.lanes",
|
|
list(web_messages_en["iwooos"]["gateRadar"]["lanes"].keys()),
|
|
key,
|
|
)
|
|
for field in ["title", "state", "detail", "evidence", "next", "locked"]:
|
|
assert_contains(
|
|
f"web_messages.zh-TW.iwooos.gateRadar.lanes.{key}",
|
|
list(web_messages_zh["iwooos"]["gateRadar"]["lanes"][key].keys()),
|
|
field,
|
|
)
|
|
assert_contains(
|
|
f"web_messages.en.iwooos.gateRadar.lanes.{key}",
|
|
list(web_messages_en["iwooos"]["gateRadar"]["lanes"][key].keys()),
|
|
field,
|
|
)
|
|
assert_text_contains(
|
|
"iwooos_page.first_unlock_evidence_packet_testid",
|
|
iwooos_projection_page,
|
|
'data-testid="iwooos-first-unlock-evidence-packet-board"',
|
|
)
|
|
assert_text_contains(
|
|
"iwooos_page.first_unlock_evidence_packet_component",
|
|
iwooos_projection_page,
|
|
"IwoooSFirstUnlockEvidencePacketBoard",
|
|
)
|
|
for text in [
|
|
"iwooos_first_unlock_evidence_packet_slot_count=5",
|
|
"iwooos_first_unlock_evidence_packet_current_focus=s4_9_owner_response",
|
|
"iwooos_first_unlock_evidence_packet_filled_count=0",
|
|
"iwooos_first_unlock_evidence_packet_accepted_count=0",
|
|
"iwooos_first_unlock_evidence_packet_redacted_pointer_required=true",
|
|
"iwooos_first_unlock_evidence_packet_raw_payload_allowed=false",
|
|
"iwooos_first_unlock_evidence_packet_secret_value_allowed=false",
|
|
"iwooos_first_unlock_evidence_packet_headline_review_authorized=false",
|
|
"iwooos_first_unlock_evidence_packet_runtime_gate_opened=false",
|
|
"runtime_execution_authorized=false",
|
|
"active_runtime_gate_count=0",
|
|
"action_buttons_allowed=false",
|
|
"not_authorization=true",
|
|
"secret_value_collection_allowed=false",
|
|
"repo_creation_authorized=false",
|
|
"refs_sync_authorized=false",
|
|
"workflow_modification_authorized=false",
|
|
"github_primary_switch_authorized=false",
|
|
"gitea_disablement_authorized=false",
|
|
]:
|
|
assert_text_contains(
|
|
"iwooos_page.first_unlock_evidence_packet_boundary",
|
|
iwooos_projection_page,
|
|
text,
|
|
)
|
|
assert_contains(
|
|
"web_messages.zh-TW.iwooos.firstUnlockEvidencePacket",
|
|
list(web_messages_zh["iwooos"].keys()),
|
|
"firstUnlockEvidencePacket",
|
|
)
|
|
assert_contains(
|
|
"web_messages.en.iwooos.firstUnlockEvidencePacket",
|
|
list(web_messages_en["iwooos"].keys()),
|
|
"firstUnlockEvidencePacket",
|
|
)
|
|
for key in ["title", "subtitle", "summary", "items", "slotLabel", "boundaryTitle", "boundaryIntro"]:
|
|
assert_contains(
|
|
"web_messages.zh-TW.iwooos.firstUnlockEvidencePacket.keys",
|
|
list(web_messages_zh["iwooos"]["firstUnlockEvidencePacket"].keys()),
|
|
key,
|
|
)
|
|
assert_contains(
|
|
"web_messages.en.iwooos.firstUnlockEvidencePacket.keys",
|
|
list(web_messages_en["iwooos"]["firstUnlockEvidencePacket"].keys()),
|
|
key,
|
|
)
|
|
for key in ["slots", "filled", "accepted", "payload"]:
|
|
assert_contains(
|
|
"web_messages.zh-TW.iwooos.firstUnlockEvidencePacket.summary",
|
|
list(web_messages_zh["iwooos"]["firstUnlockEvidencePacket"]["summary"].keys()),
|
|
key,
|
|
)
|
|
assert_contains(
|
|
"web_messages.en.iwooos.firstUnlockEvidencePacket.summary",
|
|
list(web_messages_en["iwooos"]["firstUnlockEvidencePacket"]["summary"].keys()),
|
|
key,
|
|
)
|
|
for key in [
|
|
"ownerDecisionMetadata",
|
|
"scopeEvidenceRefs",
|
|
"redactionAttestation",
|
|
"preflightTrace",
|
|
"reviewAcceptanceSummary",
|
|
]:
|
|
assert_contains(
|
|
"web_messages.zh-TW.iwooos.firstUnlockEvidencePacket.items",
|
|
list(web_messages_zh["iwooos"]["firstUnlockEvidencePacket"]["items"].keys()),
|
|
key,
|
|
)
|
|
assert_contains(
|
|
"web_messages.en.iwooos.firstUnlockEvidencePacket.items",
|
|
list(web_messages_en["iwooos"]["firstUnlockEvidencePacket"]["items"].keys()),
|
|
key,
|
|
)
|
|
assert_text_contains(
|
|
"iwooos_page.first_unlock_evidence_packet_preflight_outcome_testid",
|
|
iwooos_projection_page,
|
|
'data-testid="iwooos-first-unlock-evidence-packet-preflight-outcome-board"',
|
|
)
|
|
assert_text_contains(
|
|
"iwooos_page.first_unlock_evidence_packet_preflight_outcome_component",
|
|
iwooos_projection_page,
|
|
"IwoooSFirstUnlockEvidencePacketPreflightOutcomeBoard",
|
|
)
|
|
for text in [
|
|
"iwooos_first_unlock_evidence_packet_preflight_outcome_lane_count=6",
|
|
"iwooos_first_unlock_evidence_packet_preflight_ready_for_review_count=0",
|
|
"iwooos_first_unlock_evidence_packet_preflight_needs_supplement_count=0",
|
|
"iwooos_first_unlock_evidence_packet_preflight_quarantined_count=0",
|
|
"iwooos_first_unlock_evidence_packet_preflight_rejected_count=0",
|
|
"iwooos_first_unlock_evidence_packet_review_accepted_count=0",
|
|
"iwooos_first_unlock_evidence_packet_headline_review_authorized=false",
|
|
"iwooos_first_unlock_evidence_packet_runtime_gate_opened=false",
|
|
"runtime_execution_authorized=false",
|
|
"active_runtime_gate_count=0",
|
|
"action_buttons_allowed=false",
|
|
"not_authorization=true",
|
|
"secret_value_collection_allowed=false",
|
|
"repo_creation_authorized=false",
|
|
"refs_sync_authorized=false",
|
|
"workflow_modification_authorized=false",
|
|
"github_primary_switch_authorized=false",
|
|
"gitea_disablement_authorized=false",
|
|
]:
|
|
assert_text_contains(
|
|
"iwooos_page.first_unlock_evidence_packet_preflight_outcome_boundary",
|
|
iwooos_projection_page,
|
|
text,
|
|
)
|
|
assert_contains(
|
|
"web_messages.zh-TW.iwooos.firstUnlockEvidencePacketPreflightOutcomes",
|
|
list(web_messages_zh["iwooos"].keys()),
|
|
"firstUnlockEvidencePacketPreflightOutcomes",
|
|
)
|
|
assert_contains(
|
|
"web_messages.en.iwooos.firstUnlockEvidencePacketPreflightOutcomes",
|
|
list(web_messages_en["iwooos"].keys()),
|
|
"firstUnlockEvidencePacketPreflightOutcomes",
|
|
)
|
|
for key in ["title", "subtitle", "summary", "items", "laneLabel", "boundaryTitle", "boundaryIntro"]:
|
|
assert_contains(
|
|
"web_messages.zh-TW.iwooos.firstUnlockEvidencePacketPreflightOutcomes.keys",
|
|
list(web_messages_zh["iwooos"]["firstUnlockEvidencePacketPreflightOutcomes"].keys()),
|
|
key,
|
|
)
|
|
assert_contains(
|
|
"web_messages.en.iwooos.firstUnlockEvidencePacketPreflightOutcomes.keys",
|
|
list(web_messages_en["iwooos"]["firstUnlockEvidencePacketPreflightOutcomes"].keys()),
|
|
key,
|
|
)
|
|
for key in ["lanes", "ready", "quarantine", "accepted"]:
|
|
assert_contains(
|
|
"web_messages.zh-TW.iwooos.firstUnlockEvidencePacketPreflightOutcomes.summary",
|
|
list(web_messages_zh["iwooos"]["firstUnlockEvidencePacketPreflightOutcomes"]["summary"].keys()),
|
|
key,
|
|
)
|
|
assert_contains(
|
|
"web_messages.en.iwooos.firstUnlockEvidencePacketPreflightOutcomes.summary",
|
|
list(web_messages_en["iwooos"]["firstUnlockEvidencePacketPreflightOutcomes"]["summary"].keys()),
|
|
key,
|
|
)
|
|
for key in [
|
|
"readyForReview",
|
|
"needsOwnerMetadata",
|
|
"needsScopeRefs",
|
|
"quarantineRawPayload",
|
|
"rejectSecretValue",
|
|
"waitingReviewer",
|
|
]:
|
|
assert_contains(
|
|
"web_messages.zh-TW.iwooos.firstUnlockEvidencePacketPreflightOutcomes.items",
|
|
list(web_messages_zh["iwooos"]["firstUnlockEvidencePacketPreflightOutcomes"]["items"].keys()),
|
|
key,
|
|
)
|
|
assert_contains(
|
|
"web_messages.en.iwooos.firstUnlockEvidencePacketPreflightOutcomes.items",
|
|
list(web_messages_en["iwooos"]["firstUnlockEvidencePacketPreflightOutcomes"]["items"].keys()),
|
|
key,
|
|
)
|
|
assert_text_contains(
|
|
"iwooos_page.first_unlock_evidence_packet_supplement_path_testid",
|
|
iwooos_projection_page,
|
|
'data-testid="iwooos-first-unlock-evidence-packet-supplement-path-board"',
|
|
)
|
|
assert_text_contains(
|
|
"iwooos_page.first_unlock_evidence_packet_supplement_path_component",
|
|
iwooos_projection_page,
|
|
"IwoooSFirstUnlockEvidencePacketSupplementPathBoard",
|
|
)
|
|
for text in [
|
|
"iwooos_first_unlock_evidence_packet_supplement_path_step_count=5",
|
|
"iwooos_first_unlock_evidence_packet_supplement_current_focus=owner_metadata_and_scope_refs",
|
|
"iwooos_first_unlock_evidence_packet_supplement_ready_count=0",
|
|
"iwooos_first_unlock_evidence_packet_supplement_submitted_count=0",
|
|
"iwooos_first_unlock_evidence_packet_supplement_accepted_count=0",
|
|
"iwooos_first_unlock_evidence_packet_supplement_blocked_count=0",
|
|
"iwooos_first_unlock_evidence_packet_supplement_quarantined_count=0",
|
|
"iwooos_first_unlock_evidence_packet_supplement_request_sent=false",
|
|
"iwooos_first_unlock_evidence_packet_supplement_raw_payload_allowed=false",
|
|
"iwooos_first_unlock_evidence_packet_supplement_secret_value_allowed=false",
|
|
"iwooos_first_unlock_evidence_packet_headline_review_authorized=false",
|
|
"iwooos_first_unlock_evidence_packet_runtime_gate_opened=false",
|
|
"runtime_execution_authorized=false",
|
|
"active_runtime_gate_count=0",
|
|
"action_buttons_allowed=false",
|
|
"not_authorization=true",
|
|
"secret_value_collection_allowed=false",
|
|
"repo_creation_authorized=false",
|
|
"refs_sync_authorized=false",
|
|
"workflow_modification_authorized=false",
|
|
"github_primary_switch_authorized=false",
|
|
"gitea_disablement_authorized=false",
|
|
]:
|
|
assert_text_contains(
|
|
"iwooos_page.first_unlock_evidence_packet_supplement_path_boundary",
|
|
iwooos_projection_page,
|
|
text,
|
|
)
|
|
assert_contains(
|
|
"web_messages.zh-TW.iwooos.firstUnlockEvidencePacketSupplementPath",
|
|
list(web_messages_zh["iwooos"].keys()),
|
|
"firstUnlockEvidencePacketSupplementPath",
|
|
)
|
|
assert_contains(
|
|
"web_messages.en.iwooos.firstUnlockEvidencePacketSupplementPath",
|
|
list(web_messages_en["iwooos"].keys()),
|
|
"firstUnlockEvidencePacketSupplementPath",
|
|
)
|
|
for key in ["title", "subtitle", "summary", "items", "stepLabel", "boundaryTitle", "boundaryIntro"]:
|
|
assert_contains(
|
|
"web_messages.zh-TW.iwooos.firstUnlockEvidencePacketSupplementPath.keys",
|
|
list(web_messages_zh["iwooos"]["firstUnlockEvidencePacketSupplementPath"].keys()),
|
|
key,
|
|
)
|
|
assert_contains(
|
|
"web_messages.en.iwooos.firstUnlockEvidencePacketSupplementPath.keys",
|
|
list(web_messages_en["iwooos"]["firstUnlockEvidencePacketSupplementPath"].keys()),
|
|
key,
|
|
)
|
|
for key in ["steps", "ready", "submitted", "accepted"]:
|
|
assert_contains(
|
|
"web_messages.zh-TW.iwooos.firstUnlockEvidencePacketSupplementPath.summary",
|
|
list(web_messages_zh["iwooos"]["firstUnlockEvidencePacketSupplementPath"]["summary"].keys()),
|
|
key,
|
|
)
|
|
assert_contains(
|
|
"web_messages.en.iwooos.firstUnlockEvidencePacketSupplementPath.summary",
|
|
list(web_messages_en["iwooos"]["firstUnlockEvidencePacketSupplementPath"]["summary"].keys()),
|
|
key,
|
|
)
|
|
for key in [
|
|
"ownerMetadataPatch",
|
|
"scopeRefsPatch",
|
|
"redactionPatch",
|
|
"preflightTracePatch",
|
|
"reviewerQueuePatch",
|
|
]:
|
|
assert_contains(
|
|
"web_messages.zh-TW.iwooos.firstUnlockEvidencePacketSupplementPath.items",
|
|
list(web_messages_zh["iwooos"]["firstUnlockEvidencePacketSupplementPath"]["items"].keys()),
|
|
key,
|
|
)
|
|
assert_contains(
|
|
"web_messages.en.iwooos.firstUnlockEvidencePacketSupplementPath.items",
|
|
list(web_messages_en["iwooos"]["firstUnlockEvidencePacketSupplementPath"]["items"].keys()),
|
|
key,
|
|
)
|
|
assert_text_contains(
|
|
"iwooos_page.first_unlock_evidence_packet_supplement_pre_review_testid",
|
|
iwooos_projection_page,
|
|
'data-testid="iwooos-first-unlock-evidence-packet-supplement-pre-review-board"',
|
|
)
|
|
assert_text_contains(
|
|
"iwooos_page.first_unlock_evidence_packet_supplement_pre_review_component",
|
|
iwooos_projection_page,
|
|
"IwoooSFirstUnlockEvidencePacketSupplementPreReviewBoard",
|
|
)
|
|
for text in [
|
|
"iwooos_first_unlock_evidence_packet_supplement_pre_review_check_count=6",
|
|
"iwooos_first_unlock_evidence_packet_supplement_pre_review_current_focus=supplement_pre_review",
|
|
"iwooos_first_unlock_evidence_packet_supplement_pre_review_passed_count=0",
|
|
"iwooos_first_unlock_evidence_packet_supplement_pre_review_failed_count=0",
|
|
"iwooos_first_unlock_evidence_packet_supplement_pre_review_ready_for_review_count=0",
|
|
"iwooos_first_unlock_evidence_packet_supplement_pre_review_queue_open=false",
|
|
"iwooos_first_unlock_evidence_packet_supplement_request_sent=false",
|
|
"iwooos_first_unlock_evidence_packet_supplement_submitted_count=0",
|
|
"iwooos_first_unlock_evidence_packet_supplement_accepted_count=0",
|
|
"iwooos_first_unlock_evidence_packet_supplement_raw_payload_allowed=false",
|
|
"iwooos_first_unlock_evidence_packet_supplement_secret_value_allowed=false",
|
|
"iwooos_first_unlock_evidence_packet_headline_review_authorized=false",
|
|
"iwooos_first_unlock_evidence_packet_runtime_gate_opened=false",
|
|
"runtime_execution_authorized=false",
|
|
"active_runtime_gate_count=0",
|
|
"action_buttons_allowed=false",
|
|
"not_authorization=true",
|
|
"secret_value_collection_allowed=false",
|
|
"repo_creation_authorized=false",
|
|
"refs_sync_authorized=false",
|
|
"workflow_modification_authorized=false",
|
|
"github_primary_switch_authorized=false",
|
|
"gitea_disablement_authorized=false",
|
|
]:
|
|
assert_text_contains(
|
|
"iwooos_page.first_unlock_evidence_packet_supplement_pre_review_boundary",
|
|
iwooos_projection_page,
|
|
text,
|
|
)
|
|
assert_contains(
|
|
"web_messages.zh-TW.iwooos.firstUnlockEvidencePacketSupplementPreReview",
|
|
list(web_messages_zh["iwooos"].keys()),
|
|
"firstUnlockEvidencePacketSupplementPreReview",
|
|
)
|
|
assert_contains(
|
|
"web_messages.en.iwooos.firstUnlockEvidencePacketSupplementPreReview",
|
|
list(web_messages_en["iwooos"].keys()),
|
|
"firstUnlockEvidencePacketSupplementPreReview",
|
|
)
|
|
for key in ["title", "subtitle", "summary", "items", "checkLabel", "boundaryTitle", "boundaryIntro"]:
|
|
assert_contains(
|
|
"web_messages.zh-TW.iwooos.firstUnlockEvidencePacketSupplementPreReview.keys",
|
|
list(web_messages_zh["iwooos"]["firstUnlockEvidencePacketSupplementPreReview"].keys()),
|
|
key,
|
|
)
|
|
assert_contains(
|
|
"web_messages.en.iwooos.firstUnlockEvidencePacketSupplementPreReview.keys",
|
|
list(web_messages_en["iwooos"]["firstUnlockEvidencePacketSupplementPreReview"].keys()),
|
|
key,
|
|
)
|
|
for key in ["checks", "passed", "ready", "queue"]:
|
|
assert_contains(
|
|
"web_messages.zh-TW.iwooos.firstUnlockEvidencePacketSupplementPreReview.summary",
|
|
list(web_messages_zh["iwooos"]["firstUnlockEvidencePacketSupplementPreReview"]["summary"].keys()),
|
|
key,
|
|
)
|
|
assert_contains(
|
|
"web_messages.en.iwooos.firstUnlockEvidencePacketSupplementPreReview.summary",
|
|
list(web_messages_en["iwooos"]["firstUnlockEvidencePacketSupplementPreReview"]["summary"].keys()),
|
|
key,
|
|
)
|
|
for key in [
|
|
"ownerMetadataComplete",
|
|
"scopeRefsTraceable",
|
|
"redactionAttested",
|
|
"preflightTraceAttached",
|
|
"noMutationClauseHeld",
|
|
"reviewerQueueReady",
|
|
]:
|
|
assert_contains(
|
|
"web_messages.zh-TW.iwooos.firstUnlockEvidencePacketSupplementPreReview.items",
|
|
list(web_messages_zh["iwooos"]["firstUnlockEvidencePacketSupplementPreReview"]["items"].keys()),
|
|
key,
|
|
)
|
|
assert_contains(
|
|
"web_messages.en.iwooos.firstUnlockEvidencePacketSupplementPreReview.items",
|
|
list(web_messages_en["iwooos"]["firstUnlockEvidencePacketSupplementPreReview"]["items"].keys()),
|
|
key,
|
|
)
|
|
assert_text_contains(
|
|
"iwooos_page.first_unlock_evidence_packet_supplement_pre_review_outcome_testid",
|
|
iwooos_projection_page,
|
|
'data-testid="iwooos-first-unlock-evidence-packet-supplement-pre-review-outcome-board"',
|
|
)
|
|
assert_text_contains(
|
|
"iwooos_page.first_unlock_evidence_packet_supplement_pre_review_outcome_component",
|
|
iwooos_projection_page,
|
|
"IwoooSFirstUnlockEvidencePacketSupplementPreReviewOutcomeBoard",
|
|
)
|
|
for text in [
|
|
"iwooos_first_unlock_evidence_packet_supplement_pre_review_outcome_lane_count=6",
|
|
"iwooos_first_unlock_evidence_packet_supplement_pre_review_ready_for_queue_count=0",
|
|
"iwooos_first_unlock_evidence_packet_supplement_pre_review_returned_count=0",
|
|
"iwooos_first_unlock_evidence_packet_supplement_pre_review_quarantined_count=0",
|
|
"iwooos_first_unlock_evidence_packet_supplement_pre_review_rejected_count=0",
|
|
"iwooos_first_unlock_evidence_packet_supplement_pre_review_reviewer_assigned_count=0",
|
|
"iwooos_first_unlock_evidence_packet_supplement_pre_review_queue_open=false",
|
|
"iwooos_first_unlock_evidence_packet_supplement_request_sent=false",
|
|
"iwooos_first_unlock_evidence_packet_supplement_submitted_count=0",
|
|
"iwooos_first_unlock_evidence_packet_supplement_accepted_count=0",
|
|
"iwooos_first_unlock_evidence_packet_supplement_raw_payload_allowed=false",
|
|
"iwooos_first_unlock_evidence_packet_supplement_secret_value_allowed=false",
|
|
"iwooos_first_unlock_evidence_packet_headline_review_authorized=false",
|
|
"iwooos_first_unlock_evidence_packet_runtime_gate_opened=false",
|
|
"runtime_execution_authorized=false",
|
|
"active_runtime_gate_count=0",
|
|
"action_buttons_allowed=false",
|
|
"not_authorization=true",
|
|
"secret_value_collection_allowed=false",
|
|
"repo_creation_authorized=false",
|
|
"refs_sync_authorized=false",
|
|
"workflow_modification_authorized=false",
|
|
"github_primary_switch_authorized=false",
|
|
"gitea_disablement_authorized=false",
|
|
]:
|
|
assert_text_contains(
|
|
"iwooos_page.first_unlock_evidence_packet_supplement_pre_review_outcome_boundary",
|
|
iwooos_projection_page,
|
|
text,
|
|
)
|
|
assert_contains(
|
|
"web_messages.zh-TW.iwooos.firstUnlockEvidencePacketSupplementPreReviewOutcomes",
|
|
list(web_messages_zh["iwooos"].keys()),
|
|
"firstUnlockEvidencePacketSupplementPreReviewOutcomes",
|
|
)
|
|
assert_contains(
|
|
"web_messages.en.iwooos.firstUnlockEvidencePacketSupplementPreReviewOutcomes",
|
|
list(web_messages_en["iwooos"].keys()),
|
|
"firstUnlockEvidencePacketSupplementPreReviewOutcomes",
|
|
)
|
|
for key in ["title", "subtitle", "summary", "items", "outcomeLabel", "boundaryTitle", "boundaryIntro"]:
|
|
assert_contains(
|
|
"web_messages.zh-TW.iwooos.firstUnlockEvidencePacketSupplementPreReviewOutcomes.keys",
|
|
list(web_messages_zh["iwooos"]["firstUnlockEvidencePacketSupplementPreReviewOutcomes"].keys()),
|
|
key,
|
|
)
|
|
assert_contains(
|
|
"web_messages.en.iwooos.firstUnlockEvidencePacketSupplementPreReviewOutcomes.keys",
|
|
list(web_messages_en["iwooos"]["firstUnlockEvidencePacketSupplementPreReviewOutcomes"].keys()),
|
|
key,
|
|
)
|
|
for key in ["lanes", "ready", "returned", "assigned"]:
|
|
assert_contains(
|
|
"web_messages.zh-TW.iwooos.firstUnlockEvidencePacketSupplementPreReviewOutcomes.summary",
|
|
list(web_messages_zh["iwooos"]["firstUnlockEvidencePacketSupplementPreReviewOutcomes"]["summary"].keys()),
|
|
key,
|
|
)
|
|
assert_contains(
|
|
"web_messages.en.iwooos.firstUnlockEvidencePacketSupplementPreReviewOutcomes.summary",
|
|
list(web_messages_en["iwooos"]["firstUnlockEvidencePacketSupplementPreReviewOutcomes"]["summary"].keys()),
|
|
key,
|
|
)
|
|
for key in [
|
|
"readyForReviewerQueue",
|
|
"returnToSupplement",
|
|
"quarantineSensitiveMaterial",
|
|
"rejectMutationRequest",
|
|
"keepQueueClosed",
|
|
"waitReviewerAssignment",
|
|
]:
|
|
assert_contains(
|
|
"web_messages.zh-TW.iwooos.firstUnlockEvidencePacketSupplementPreReviewOutcomes.items",
|
|
list(web_messages_zh["iwooos"]["firstUnlockEvidencePacketSupplementPreReviewOutcomes"]["items"].keys()),
|
|
key,
|
|
)
|
|
assert_contains(
|
|
"web_messages.en.iwooos.firstUnlockEvidencePacketSupplementPreReviewOutcomes.items",
|
|
list(web_messages_en["iwooos"]["firstUnlockEvidencePacketSupplementPreReviewOutcomes"]["items"].keys()),
|
|
key,
|
|
)
|
|
assert_text_contains(
|
|
"iwooos_page.first_unlock_evidence_packet_reviewer_assignment_preparation_testid",
|
|
iwooos_projection_page,
|
|
'data-testid="iwooos-first-unlock-evidence-packet-reviewer-assignment-preparation-board"',
|
|
)
|
|
assert_text_contains(
|
|
"iwooos_page.first_unlock_evidence_packet_reviewer_assignment_preparation_component",
|
|
iwooos_projection_page,
|
|
"IwoooSFirstUnlockEvidencePacketReviewerAssignmentPreparationBoard",
|
|
)
|
|
for text in [
|
|
"iwooos_first_unlock_evidence_packet_reviewer_assignment_preparation_packet_count=6",
|
|
"iwooos_first_unlock_evidence_packet_reviewer_assignment_preparation_current_focus=reviewer_assignment_preparation",
|
|
"iwooos_first_unlock_evidence_packet_reviewer_assignment_preparation_ready_count=0",
|
|
"iwooos_first_unlock_evidence_packet_reviewer_assignment_preparation_reviewer_candidate_count=0",
|
|
"iwooos_first_unlock_evidence_packet_reviewer_assignment_preparation_reviewer_assigned_count=0",
|
|
"iwooos_first_unlock_evidence_packet_reviewer_assignment_preparation_audit_event_emitted=0",
|
|
"iwooos_first_unlock_evidence_packet_supplement_pre_review_ready_for_queue_count=0",
|
|
"iwooos_first_unlock_evidence_packet_supplement_pre_review_queue_open=false",
|
|
"iwooos_first_unlock_evidence_packet_supplement_request_sent=false",
|
|
"iwooos_first_unlock_evidence_packet_supplement_submitted_count=0",
|
|
"iwooos_first_unlock_evidence_packet_supplement_accepted_count=0",
|
|
"iwooos_first_unlock_evidence_packet_supplement_raw_payload_allowed=false",
|
|
"iwooos_first_unlock_evidence_packet_supplement_secret_value_allowed=false",
|
|
"iwooos_first_unlock_evidence_packet_headline_review_authorized=false",
|
|
"iwooos_first_unlock_evidence_packet_runtime_gate_opened=false",
|
|
"runtime_execution_authorized=false",
|
|
"active_runtime_gate_count=0",
|
|
"action_buttons_allowed=false",
|
|
"not_authorization=true",
|
|
"secret_value_collection_allowed=false",
|
|
"repo_creation_authorized=false",
|
|
"refs_sync_authorized=false",
|
|
"workflow_modification_authorized=false",
|
|
"github_primary_switch_authorized=false",
|
|
"gitea_disablement_authorized=false",
|
|
]:
|
|
assert_text_contains(
|
|
"iwooos_page.first_unlock_evidence_packet_reviewer_assignment_preparation_boundary",
|
|
iwooos_projection_page,
|
|
text,
|
|
)
|
|
assert_contains(
|
|
"web_messages.zh-TW.iwooos.firstUnlockEvidencePacketReviewerAssignmentPreparation",
|
|
list(web_messages_zh["iwooos"].keys()),
|
|
"firstUnlockEvidencePacketReviewerAssignmentPreparation",
|
|
)
|
|
assert_contains(
|
|
"web_messages.en.iwooos.firstUnlockEvidencePacketReviewerAssignmentPreparation",
|
|
list(web_messages_en["iwooos"].keys()),
|
|
"firstUnlockEvidencePacketReviewerAssignmentPreparation",
|
|
)
|
|
for key in ["title", "subtitle", "summary", "items", "packetLabel", "boundaryTitle", "boundaryIntro"]:
|
|
assert_contains(
|
|
"web_messages.zh-TW.iwooos.firstUnlockEvidencePacketReviewerAssignmentPreparation.keys",
|
|
list(web_messages_zh["iwooos"]["firstUnlockEvidencePacketReviewerAssignmentPreparation"].keys()),
|
|
key,
|
|
)
|
|
assert_contains(
|
|
"web_messages.en.iwooos.firstUnlockEvidencePacketReviewerAssignmentPreparation.keys",
|
|
list(web_messages_en["iwooos"]["firstUnlockEvidencePacketReviewerAssignmentPreparation"].keys()),
|
|
key,
|
|
)
|
|
for key in ["packets", "ready", "candidates", "assigned"]:
|
|
assert_contains(
|
|
"web_messages.zh-TW.iwooos.firstUnlockEvidencePacketReviewerAssignmentPreparation.summary",
|
|
list(web_messages_zh["iwooos"]["firstUnlockEvidencePacketReviewerAssignmentPreparation"]["summary"].keys()),
|
|
key,
|
|
)
|
|
assert_contains(
|
|
"web_messages.en.iwooos.firstUnlockEvidencePacketReviewerAssignmentPreparation.summary",
|
|
list(web_messages_en["iwooos"]["firstUnlockEvidencePacketReviewerAssignmentPreparation"]["summary"].keys()),
|
|
key,
|
|
)
|
|
for key in [
|
|
"queueStatusFreeze",
|
|
"reviewerRoleBoundary",
|
|
"scopePacket",
|
|
"evidencePointerIndex",
|
|
"conflictDisclosure",
|
|
"assignmentAuditDraft",
|
|
]:
|
|
assert_contains(
|
|
"web_messages.zh-TW.iwooos.firstUnlockEvidencePacketReviewerAssignmentPreparation.items",
|
|
list(web_messages_zh["iwooos"]["firstUnlockEvidencePacketReviewerAssignmentPreparation"]["items"].keys()),
|
|
key,
|
|
)
|
|
assert_contains(
|
|
"web_messages.en.iwooos.firstUnlockEvidencePacketReviewerAssignmentPreparation.items",
|
|
list(web_messages_en["iwooos"]["firstUnlockEvidencePacketReviewerAssignmentPreparation"]["items"].keys()),
|
|
key,
|
|
)
|
|
assert_text_contains(
|
|
"iwooos_page.first_unlock_evidence_packet_reviewer_assignment_preflight_testid",
|
|
iwooos_projection_page,
|
|
'data-testid="iwooos-first-unlock-evidence-packet-reviewer-assignment-preflight-board"',
|
|
)
|
|
assert_text_contains(
|
|
"iwooos_page.first_unlock_evidence_packet_reviewer_assignment_preflight_component",
|
|
iwooos_projection_page,
|
|
"IwoooSFirstUnlockEvidencePacketReviewerAssignmentPreflightBoard",
|
|
)
|
|
for text in [
|
|
"iwooos_first_unlock_evidence_packet_reviewer_assignment_preflight_check_count=6",
|
|
"iwooos_first_unlock_evidence_packet_reviewer_assignment_preflight_current_focus=reviewer_assignment_preflight",
|
|
"iwooos_first_unlock_evidence_packet_reviewer_assignment_preflight_passed_count=0",
|
|
"iwooos_first_unlock_evidence_packet_reviewer_assignment_preflight_failed_count=0",
|
|
"iwooos_first_unlock_evidence_packet_reviewer_assignment_preflight_ready_count=0",
|
|
"iwooos_first_unlock_evidence_packet_reviewer_assignment_preflight_reviewer_candidate_count=0",
|
|
"iwooos_first_unlock_evidence_packet_reviewer_assignment_preflight_reviewer_assigned_count=0",
|
|
"iwooos_first_unlock_evidence_packet_reviewer_assignment_preflight_queue_open=false",
|
|
"iwooos_first_unlock_evidence_packet_reviewer_assignment_preflight_audit_event_emitted=0",
|
|
"iwooos_first_unlock_evidence_packet_supplement_pre_review_ready_for_queue_count=0",
|
|
"iwooos_first_unlock_evidence_packet_supplement_pre_review_queue_open=false",
|
|
"iwooos_first_unlock_evidence_packet_supplement_request_sent=false",
|
|
"iwooos_first_unlock_evidence_packet_supplement_submitted_count=0",
|
|
"iwooos_first_unlock_evidence_packet_supplement_accepted_count=0",
|
|
"iwooos_first_unlock_evidence_packet_supplement_raw_payload_allowed=false",
|
|
"iwooos_first_unlock_evidence_packet_supplement_secret_value_allowed=false",
|
|
"iwooos_first_unlock_evidence_packet_headline_review_authorized=false",
|
|
"iwooos_first_unlock_evidence_packet_runtime_gate_opened=false",
|
|
"runtime_execution_authorized=false",
|
|
"active_runtime_gate_count=0",
|
|
"action_buttons_allowed=false",
|
|
"not_authorization=true",
|
|
"secret_value_collection_allowed=false",
|
|
"repo_creation_authorized=false",
|
|
"refs_sync_authorized=false",
|
|
"workflow_modification_authorized=false",
|
|
"github_primary_switch_authorized=false",
|
|
"gitea_disablement_authorized=false",
|
|
]:
|
|
assert_text_contains(
|
|
"iwooos_page.first_unlock_evidence_packet_reviewer_assignment_preflight_boundary",
|
|
iwooos_projection_page,
|
|
text,
|
|
)
|
|
assert_contains(
|
|
"web_messages.zh-TW.iwooos.firstUnlockEvidencePacketReviewerAssignmentPreflight",
|
|
list(web_messages_zh["iwooos"].keys()),
|
|
"firstUnlockEvidencePacketReviewerAssignmentPreflight",
|
|
)
|
|
assert_contains(
|
|
"web_messages.en.iwooos.firstUnlockEvidencePacketReviewerAssignmentPreflight",
|
|
list(web_messages_en["iwooos"].keys()),
|
|
"firstUnlockEvidencePacketReviewerAssignmentPreflight",
|
|
)
|
|
for key in ["title", "subtitle", "summary", "items", "checkLabel", "boundaryTitle", "boundaryIntro"]:
|
|
assert_contains(
|
|
"web_messages.zh-TW.iwooos.firstUnlockEvidencePacketReviewerAssignmentPreflight.keys",
|
|
list(web_messages_zh["iwooos"]["firstUnlockEvidencePacketReviewerAssignmentPreflight"].keys()),
|
|
key,
|
|
)
|
|
assert_contains(
|
|
"web_messages.en.iwooos.firstUnlockEvidencePacketReviewerAssignmentPreflight.keys",
|
|
list(web_messages_en["iwooos"]["firstUnlockEvidencePacketReviewerAssignmentPreflight"].keys()),
|
|
key,
|
|
)
|
|
for key in ["checks", "passed", "ready", "assigned"]:
|
|
assert_contains(
|
|
"web_messages.zh-TW.iwooos.firstUnlockEvidencePacketReviewerAssignmentPreflight.summary",
|
|
list(web_messages_zh["iwooos"]["firstUnlockEvidencePacketReviewerAssignmentPreflight"]["summary"].keys()),
|
|
key,
|
|
)
|
|
assert_contains(
|
|
"web_messages.en.iwooos.firstUnlockEvidencePacketReviewerAssignmentPreflight.summary",
|
|
list(web_messages_en["iwooos"]["firstUnlockEvidencePacketReviewerAssignmentPreflight"]["summary"].keys()),
|
|
key,
|
|
)
|
|
for key in [
|
|
"queueStillClosed",
|
|
"roleBoundaryTraceable",
|
|
"scopePacketTraceable",
|
|
"evidenceIndexRedacted",
|
|
"conflictDisclosureClear",
|
|
"auditDraftMetadataOnly",
|
|
]:
|
|
assert_contains(
|
|
"web_messages.zh-TW.iwooos.firstUnlockEvidencePacketReviewerAssignmentPreflight.items",
|
|
list(web_messages_zh["iwooos"]["firstUnlockEvidencePacketReviewerAssignmentPreflight"]["items"].keys()),
|
|
key,
|
|
)
|
|
assert_contains(
|
|
"web_messages.en.iwooos.firstUnlockEvidencePacketReviewerAssignmentPreflight.items",
|
|
list(web_messages_en["iwooos"]["firstUnlockEvidencePacketReviewerAssignmentPreflight"]["items"].keys()),
|
|
key,
|
|
)
|
|
assert_text_contains(
|
|
"iwooos_page.first_unlock_evidence_packet_reviewer_assignment_preflight_outcome_testid",
|
|
iwooos_projection_page,
|
|
'data-testid="iwooos-first-unlock-evidence-packet-reviewer-assignment-preflight-outcome-board"',
|
|
)
|
|
assert_text_contains(
|
|
"iwooos_page.first_unlock_evidence_packet_reviewer_assignment_preflight_outcome_component",
|
|
iwooos_projection_page,
|
|
"IwoooSFirstUnlockEvidencePacketReviewerAssignmentPreflightOutcomeBoard",
|
|
)
|
|
for text in [
|
|
"iwooos_first_unlock_evidence_packet_reviewer_assignment_preflight_outcome_lane_count=6",
|
|
"iwooos_first_unlock_evidence_packet_reviewer_assignment_preflight_outcome_current_focus=reviewer_assignment_preflight_outcomes",
|
|
"iwooos_first_unlock_evidence_packet_reviewer_assignment_preflight_outcome_ready_for_candidate_count=0",
|
|
"iwooos_first_unlock_evidence_packet_reviewer_assignment_preflight_outcome_returned_count=0",
|
|
"iwooos_first_unlock_evidence_packet_reviewer_assignment_preflight_outcome_quarantined_count=0",
|
|
"iwooos_first_unlock_evidence_packet_reviewer_assignment_preflight_outcome_conflict_hold_count=0",
|
|
"iwooos_first_unlock_evidence_packet_reviewer_assignment_preflight_outcome_audit_event_emitted=0",
|
|
"iwooos_first_unlock_evidence_packet_reviewer_assignment_preflight_reviewer_candidate_count=0",
|
|
"iwooos_first_unlock_evidence_packet_reviewer_assignment_preflight_reviewer_assigned_count=0",
|
|
"iwooos_first_unlock_evidence_packet_reviewer_assignment_preflight_queue_open=false",
|
|
"iwooos_first_unlock_evidence_packet_reviewer_assignment_preflight_passed_count=0",
|
|
"iwooos_first_unlock_evidence_packet_reviewer_assignment_preflight_ready_count=0",
|
|
"iwooos_first_unlock_evidence_packet_supplement_pre_review_queue_open=false",
|
|
"iwooos_first_unlock_evidence_packet_supplement_request_sent=false",
|
|
"iwooos_first_unlock_evidence_packet_supplement_submitted_count=0",
|
|
"iwooos_first_unlock_evidence_packet_supplement_accepted_count=0",
|
|
"iwooos_first_unlock_evidence_packet_supplement_raw_payload_allowed=false",
|
|
"iwooos_first_unlock_evidence_packet_supplement_secret_value_allowed=false",
|
|
"iwooos_first_unlock_evidence_packet_headline_review_authorized=false",
|
|
"iwooos_first_unlock_evidence_packet_runtime_gate_opened=false",
|
|
"runtime_execution_authorized=false",
|
|
"active_runtime_gate_count=0",
|
|
"action_buttons_allowed=false",
|
|
"not_authorization=true",
|
|
"secret_value_collection_allowed=false",
|
|
"repo_creation_authorized=false",
|
|
"refs_sync_authorized=false",
|
|
"workflow_modification_authorized=false",
|
|
"github_primary_switch_authorized=false",
|
|
"gitea_disablement_authorized=false",
|
|
]:
|
|
assert_text_contains(
|
|
"iwooos_page.first_unlock_evidence_packet_reviewer_assignment_preflight_outcome_boundary",
|
|
iwooos_projection_page,
|
|
text,
|
|
)
|
|
assert_contains(
|
|
"web_messages.zh-TW.iwooos.firstUnlockEvidencePacketReviewerAssignmentPreflightOutcome",
|
|
list(web_messages_zh["iwooos"].keys()),
|
|
"firstUnlockEvidencePacketReviewerAssignmentPreflightOutcome",
|
|
)
|
|
assert_contains(
|
|
"web_messages.en.iwooos.firstUnlockEvidencePacketReviewerAssignmentPreflightOutcome",
|
|
list(web_messages_en["iwooos"].keys()),
|
|
"firstUnlockEvidencePacketReviewerAssignmentPreflightOutcome",
|
|
)
|
|
for key in ["title", "subtitle", "summary", "items", "outcomeLabel", "boundaryTitle", "boundaryIntro"]:
|
|
assert_contains(
|
|
"web_messages.zh-TW.iwooos.firstUnlockEvidencePacketReviewerAssignmentPreflightOutcome.keys",
|
|
list(web_messages_zh["iwooos"]["firstUnlockEvidencePacketReviewerAssignmentPreflightOutcome"].keys()),
|
|
key,
|
|
)
|
|
assert_contains(
|
|
"web_messages.en.iwooos.firstUnlockEvidencePacketReviewerAssignmentPreflightOutcome.keys",
|
|
list(web_messages_en["iwooos"]["firstUnlockEvidencePacketReviewerAssignmentPreflightOutcome"].keys()),
|
|
key,
|
|
)
|
|
for key in ["outcomes", "candidates", "assigned", "audit"]:
|
|
assert_contains(
|
|
"web_messages.zh-TW.iwooos.firstUnlockEvidencePacketReviewerAssignmentPreflightOutcome.summary",
|
|
list(web_messages_zh["iwooos"]["firstUnlockEvidencePacketReviewerAssignmentPreflightOutcome"]["summary"].keys()),
|
|
key,
|
|
)
|
|
assert_contains(
|
|
"web_messages.en.iwooos.firstUnlockEvidencePacketReviewerAssignmentPreflightOutcome.summary",
|
|
list(web_messages_en["iwooos"]["firstUnlockEvidencePacketReviewerAssignmentPreflightOutcome"]["summary"].keys()),
|
|
key,
|
|
)
|
|
for key in [
|
|
"keepQueueClosed",
|
|
"returnRoleBoundary",
|
|
"returnScopePacket",
|
|
"quarantineEvidenceIndex",
|
|
"holdConflictDisclosure",
|
|
"keepAuditDraftMetadataOnly",
|
|
]:
|
|
assert_contains(
|
|
"web_messages.zh-TW.iwooos.firstUnlockEvidencePacketReviewerAssignmentPreflightOutcome.items",
|
|
list(web_messages_zh["iwooos"]["firstUnlockEvidencePacketReviewerAssignmentPreflightOutcome"]["items"].keys()),
|
|
key,
|
|
)
|
|
assert_contains(
|
|
"web_messages.en.iwooos.firstUnlockEvidencePacketReviewerAssignmentPreflightOutcome.items",
|
|
list(web_messages_en["iwooos"]["firstUnlockEvidencePacketReviewerAssignmentPreflightOutcome"]["items"].keys()),
|
|
key,
|
|
)
|
|
for key in [
|
|
"title",
|
|
"subtitle",
|
|
"compactTitle",
|
|
"compactDetail",
|
|
"openIwooos",
|
|
"sourceLabel",
|
|
"sourceDetail",
|
|
"boundaryLabel",
|
|
"metrics",
|
|
]:
|
|
assert_contains(
|
|
"web_messages.zh-TW.security.iwooosBridge",
|
|
list(web_messages_zh["security"]["iwooosBridge"].keys()),
|
|
key,
|
|
)
|
|
assert_contains(
|
|
"web_messages.en.security.iwooosBridge",
|
|
list(web_messages_en["security"]["iwooosBridge"].keys()),
|
|
key,
|
|
)
|
|
for key in ["overall", "framework", "runtimeGates", "actions"]:
|
|
assert_contains(
|
|
"web_messages.zh-TW.security.iwooosBridge.metrics",
|
|
list(web_messages_zh["security"]["iwooosBridge"]["metrics"].keys()),
|
|
key,
|
|
)
|
|
assert_contains(
|
|
"web_messages.en.security.iwooosBridge.metrics",
|
|
list(web_messages_en["security"]["iwooosBridge"]["metrics"].keys()),
|
|
key,
|
|
)
|
|
for key in ["title", "subtitle", "states", "items"]:
|
|
assert_contains(
|
|
"web_messages.zh-TW.iwooos.surfaceConnections",
|
|
list(web_messages_zh["iwooos"]["surfaceConnections"].keys()),
|
|
key,
|
|
)
|
|
assert_contains(
|
|
"web_messages.en.iwooos.surfaceConnections",
|
|
list(web_messages_en["iwooos"]["surfaceConnections"].keys()),
|
|
key,
|
|
)
|
|
for key in ["embeddedBridge", "directBridge", "awooopCandidate", "reviewHandoffCandidate"]:
|
|
assert_contains(
|
|
"web_messages.zh-TW.iwooos.surfaceConnections.states",
|
|
list(web_messages_zh["iwooos"]["surfaceConnections"]["states"].keys()),
|
|
key,
|
|
)
|
|
assert_contains(
|
|
"web_messages.en.iwooos.surfaceConnections.states",
|
|
list(web_messages_en["iwooos"]["surfaceConnections"]["states"].keys()),
|
|
key,
|
|
)
|
|
for key in [
|
|
"securityCompliance",
|
|
"legacySecurity",
|
|
"legacyCompliance",
|
|
"alerts",
|
|
"errors",
|
|
"authorizations",
|
|
"governance",
|
|
"alertOperationLogs",
|
|
"awooopApprovals",
|
|
"codeReview",
|
|
]:
|
|
assert_contains(
|
|
"web_messages.zh-TW.iwooos.surfaceConnections.items",
|
|
list(web_messages_zh["iwooos"]["surfaceConnections"]["items"].keys()),
|
|
key,
|
|
)
|
|
assert_contains(
|
|
"web_messages.en.iwooos.surfaceConnections.items",
|
|
list(web_messages_en["iwooos"]["surfaceConnections"]["items"].keys()),
|
|
key,
|
|
)
|
|
for key in ["title", "subtitle", "gateLabel", "guardLabel", "items"]:
|
|
assert_contains(
|
|
"web_messages.zh-TW.iwooos.sourceControlReadiness",
|
|
list(web_messages_zh["iwooos"]["sourceControlReadiness"].keys()),
|
|
key,
|
|
)
|
|
assert_contains(
|
|
"web_messages.en.iwooos.sourceControlReadiness",
|
|
list(web_messages_en["iwooos"]["sourceControlReadiness"].keys()),
|
|
key,
|
|
)
|
|
for key in [
|
|
"candidateRepos",
|
|
"primaryReady",
|
|
"ownerResponses",
|
|
"refsTruth",
|
|
"workflowSecrets",
|
|
"rollbackAdr",
|
|
]:
|
|
assert_contains(
|
|
"web_messages.zh-TW.iwooos.sourceControlReadiness.items",
|
|
list(web_messages_zh["iwooos"]["sourceControlReadiness"]["items"].keys()),
|
|
key,
|
|
)
|
|
assert_contains(
|
|
"web_messages.en.iwooos.sourceControlReadiness.items",
|
|
list(web_messages_en["iwooos"]["sourceControlReadiness"]["items"].keys()),
|
|
key,
|
|
)
|
|
for key in ["title", "subtitle", "routeLabel", "stageLabel", "boundaryLabel", "guardTitle", "summary", "items"]:
|
|
assert_contains(
|
|
"web_messages.zh-TW.iwooos.awooopCoverage",
|
|
list(web_messages_zh["iwooos"]["awooopCoverage"].keys()),
|
|
key,
|
|
)
|
|
assert_contains(
|
|
"web_messages.en.iwooos.awooopCoverage",
|
|
list(web_messages_en["iwooos"]["awooopCoverage"].keys()),
|
|
key,
|
|
)
|
|
for key in ["routes", "covered", "runtimeGates", "actions"]:
|
|
assert_contains(
|
|
"web_messages.zh-TW.iwooos.awooopCoverage.summary",
|
|
list(web_messages_zh["iwooos"]["awooopCoverage"]["summary"].keys()),
|
|
key,
|
|
)
|
|
assert_contains(
|
|
"web_messages.en.iwooos.awooopCoverage.summary",
|
|
list(web_messages_en["iwooos"]["awooopCoverage"]["summary"].keys()),
|
|
key,
|
|
)
|
|
for key in ["home", "workItems", "contracts", "tenants", "runs", "runDetail", "approvals", "approvalDecision"]:
|
|
assert_contains(
|
|
"web_messages.zh-TW.iwooos.awooopCoverage.items",
|
|
list(web_messages_zh["iwooos"]["awooopCoverage"]["items"].keys()),
|
|
key,
|
|
)
|
|
assert_contains(
|
|
"web_messages.en.iwooos.awooopCoverage.items",
|
|
list(web_messages_en["iwooos"]["awooopCoverage"]["items"].keys()),
|
|
key,
|
|
)
|
|
for key in ["title", "subtitle", "movementLabel", "guardLabel", "boundaryTitle", "summary", "items"]:
|
|
assert_contains(
|
|
"web_messages.zh-TW.iwooos.securityConvergenceRoadmap",
|
|
list(web_messages_zh["iwooos"]["securityConvergenceRoadmap"].keys()),
|
|
key,
|
|
)
|
|
assert_contains(
|
|
"web_messages.en.iwooos.securityConvergenceRoadmap",
|
|
list(web_messages_en["iwooos"]["securityConvergenceRoadmap"].keys()),
|
|
key,
|
|
)
|
|
for key in ["mode", "coverage", "accepted", "runtime"]:
|
|
assert_contains(
|
|
"web_messages.zh-TW.iwooos.securityConvergenceRoadmap.summary",
|
|
list(web_messages_zh["iwooos"]["securityConvergenceRoadmap"]["summary"].keys()),
|
|
key,
|
|
)
|
|
assert_contains(
|
|
"web_messages.en.iwooos.securityConvergenceRoadmap.summary",
|
|
list(web_messages_en["iwooos"]["securityConvergenceRoadmap"]["summary"].keys()),
|
|
key,
|
|
)
|
|
for key in [
|
|
"visibilityFirst",
|
|
"ownerResponse",
|
|
"redactedEvidence",
|
|
"humanDecision",
|
|
"runtimeGate",
|
|
"sourceControlCutover",
|
|
]:
|
|
assert_contains(
|
|
"web_messages.zh-TW.iwooos.securityConvergenceRoadmap.items",
|
|
list(web_messages_zh["iwooos"]["securityConvergenceRoadmap"]["items"].keys()),
|
|
key,
|
|
)
|
|
assert_contains(
|
|
"web_messages.en.iwooos.securityConvergenceRoadmap.items",
|
|
list(web_messages_en["iwooos"]["securityConvergenceRoadmap"]["items"].keys()),
|
|
key,
|
|
)
|
|
for key in ["title", "subtitle", "packetLabel", "movementLabel", "guardLabel", "boundaryTitle", "summary", "items"]:
|
|
assert_contains(
|
|
"web_messages.zh-TW.iwooos.ownerResponseCollectionBoard",
|
|
list(web_messages_zh["iwooos"]["ownerResponseCollectionBoard"].keys()),
|
|
key,
|
|
)
|
|
assert_contains(
|
|
"web_messages.en.iwooos.ownerResponseCollectionBoard",
|
|
list(web_messages_en["iwooos"]["ownerResponseCollectionBoard"].keys()),
|
|
key,
|
|
)
|
|
for key in ["packets", "templates", "received", "accepted"]:
|
|
assert_contains(
|
|
"web_messages.zh-TW.iwooos.ownerResponseCollectionBoard.summary",
|
|
list(web_messages_zh["iwooos"]["ownerResponseCollectionBoard"]["summary"].keys()),
|
|
key,
|
|
)
|
|
assert_contains(
|
|
"web_messages.en.iwooos.ownerResponseCollectionBoard.summary",
|
|
list(web_messages_en["iwooos"]["ownerResponseCollectionBoard"]["summary"].keys()),
|
|
key,
|
|
)
|
|
for key in ["giteaAttestation", "githubTarget", "refsTruth", "workflowSecretNames"]:
|
|
assert_contains(
|
|
"web_messages.zh-TW.iwooos.ownerResponseCollectionBoard.items",
|
|
list(web_messages_zh["iwooos"]["ownerResponseCollectionBoard"]["items"].keys()),
|
|
key,
|
|
)
|
|
assert_contains(
|
|
"web_messages.en.iwooos.ownerResponseCollectionBoard.items",
|
|
list(web_messages_en["iwooos"]["ownerResponseCollectionBoard"]["items"].keys()),
|
|
key,
|
|
)
|
|
for key in ["title", "subtitle", "laneLabel", "ruleLabel", "guardLabel", "boundaryTitle", "summary", "items"]:
|
|
assert_contains(
|
|
"web_messages.zh-TW.iwooos.ownerResponseIntakeSafetyBoard",
|
|
list(web_messages_zh["iwooos"]["ownerResponseIntakeSafetyBoard"].keys()),
|
|
key,
|
|
)
|
|
assert_contains(
|
|
"web_messages.en.iwooos.ownerResponseIntakeSafetyBoard",
|
|
list(web_messages_en["iwooos"]["ownerResponseIntakeSafetyBoard"].keys()),
|
|
key,
|
|
)
|
|
for key in ["rules", "ingested", "quarantined", "rejected"]:
|
|
assert_contains(
|
|
"web_messages.zh-TW.iwooos.ownerResponseIntakeSafetyBoard.summary",
|
|
list(web_messages_zh["iwooos"]["ownerResponseIntakeSafetyBoard"]["summary"].keys()),
|
|
key,
|
|
)
|
|
assert_contains(
|
|
"web_messages.en.iwooos.ownerResponseIntakeSafetyBoard.summary",
|
|
list(web_messages_en["iwooos"]["ownerResponseIntakeSafetyBoard"]["summary"].keys()),
|
|
key,
|
|
)
|
|
for key in [
|
|
"redactedEvidenceOnly",
|
|
"ownerScopeCompletion",
|
|
"secretValueQuarantine",
|
|
"repoMutationRequest",
|
|
"refsMutationRequest",
|
|
"runtimeExecutionRequest",
|
|
]:
|
|
assert_contains(
|
|
"web_messages.zh-TW.iwooos.ownerResponseIntakeSafetyBoard.items",
|
|
list(web_messages_zh["iwooos"]["ownerResponseIntakeSafetyBoard"]["items"].keys()),
|
|
key,
|
|
)
|
|
assert_contains(
|
|
"web_messages.en.iwooos.ownerResponseIntakeSafetyBoard.items",
|
|
list(web_messages_en["iwooos"]["ownerResponseIntakeSafetyBoard"]["items"].keys()),
|
|
key,
|
|
)
|
|
for key in ["title", "subtitle", "laneLabel", "resultLabel", "guardLabel", "boundaryTitle", "summary", "items"]:
|
|
assert_contains(
|
|
"web_messages.zh-TW.iwooos.ownerResponseReviewOutcomeBoard",
|
|
list(web_messages_zh["iwooos"]["ownerResponseReviewOutcomeBoard"].keys()),
|
|
key,
|
|
)
|
|
assert_contains(
|
|
"web_messages.en.iwooos.ownerResponseReviewOutcomeBoard",
|
|
list(web_messages_en["iwooos"]["ownerResponseReviewOutcomeBoard"].keys()),
|
|
key,
|
|
)
|
|
for key in ["lanes", "ready", "accepted", "runtime"]:
|
|
assert_contains(
|
|
"web_messages.zh-TW.iwooos.ownerResponseReviewOutcomeBoard.summary",
|
|
list(web_messages_zh["iwooos"]["ownerResponseReviewOutcomeBoard"]["summary"].keys()),
|
|
key,
|
|
)
|
|
assert_contains(
|
|
"web_messages.en.iwooos.ownerResponseReviewOutcomeBoard.summary",
|
|
list(web_messages_en["iwooos"]["ownerResponseReviewOutcomeBoard"]["summary"].keys()),
|
|
key,
|
|
)
|
|
for key in [
|
|
"remainWaiting",
|
|
"needsEvidence",
|
|
"readyForHumanReview",
|
|
"quarantined",
|
|
"rejected",
|
|
"readonlyUpdate",
|
|
"humanDecisionRequired",
|
|
]:
|
|
assert_contains(
|
|
"web_messages.zh-TW.iwooos.ownerResponseReviewOutcomeBoard.items",
|
|
list(web_messages_zh["iwooos"]["ownerResponseReviewOutcomeBoard"]["items"].keys()),
|
|
key,
|
|
)
|
|
assert_contains(
|
|
"web_messages.en.iwooos.ownerResponseReviewOutcomeBoard.items",
|
|
list(web_messages_en["iwooos"]["ownerResponseReviewOutcomeBoard"]["items"].keys()),
|
|
key,
|
|
)
|
|
for key in ["title", "subtitle", "queueLabel", "prepLabel", "guardLabel", "boundaryTitle", "summary", "items"]:
|
|
assert_contains(
|
|
"web_messages.zh-TW.iwooos.ownerResponseHumanDecisionQueueBoard",
|
|
list(web_messages_zh["iwooos"]["ownerResponseHumanDecisionQueueBoard"].keys()),
|
|
key,
|
|
)
|
|
assert_contains(
|
|
"web_messages.en.iwooos.ownerResponseHumanDecisionQueueBoard",
|
|
list(web_messages_en["iwooos"]["ownerResponseHumanDecisionQueueBoard"].keys()),
|
|
key,
|
|
)
|
|
for key in ["queueItems", "ready", "approved", "runtime"]:
|
|
assert_contains(
|
|
"web_messages.zh-TW.iwooos.ownerResponseHumanDecisionQueueBoard.summary",
|
|
list(web_messages_zh["iwooos"]["ownerResponseHumanDecisionQueueBoard"]["summary"].keys()),
|
|
key,
|
|
)
|
|
assert_contains(
|
|
"web_messages.en.iwooos.ownerResponseHumanDecisionQueueBoard.summary",
|
|
list(web_messages_en["iwooos"]["ownerResponseHumanDecisionQueueBoard"]["summary"].keys()),
|
|
key,
|
|
)
|
|
for key in [
|
|
"decisionPacketDraft",
|
|
"evidenceTraceBundle",
|
|
"reviewerAssignment",
|
|
"rollbackWindowCandidate",
|
|
"runtimeGateSeparated",
|
|
"sourceControlCutoverSeparated",
|
|
]:
|
|
assert_contains(
|
|
"web_messages.zh-TW.iwooos.ownerResponseHumanDecisionQueueBoard.items",
|
|
list(web_messages_zh["iwooos"]["ownerResponseHumanDecisionQueueBoard"]["items"].keys()),
|
|
key,
|
|
)
|
|
assert_contains(
|
|
"web_messages.en.iwooos.ownerResponseHumanDecisionQueueBoard.items",
|
|
list(web_messages_en["iwooos"]["ownerResponseHumanDecisionQueueBoard"]["items"].keys()),
|
|
key,
|
|
)
|
|
for key in [
|
|
"title",
|
|
"subtitle",
|
|
"guardItemLabel",
|
|
"draftLabel",
|
|
"guardLabel",
|
|
"boundaryTitle",
|
|
"summary",
|
|
"items",
|
|
]:
|
|
assert_contains(
|
|
"web_messages.zh-TW.iwooos.ownerResponseDecisionRecordDraftGuardBoard",
|
|
list(web_messages_zh["iwooos"]["ownerResponseDecisionRecordDraftGuardBoard"].keys()),
|
|
key,
|
|
)
|
|
assert_contains(
|
|
"web_messages.en.iwooos.ownerResponseDecisionRecordDraftGuardBoard",
|
|
list(web_messages_en["iwooos"]["ownerResponseDecisionRecordDraftGuardBoard"].keys()),
|
|
key,
|
|
)
|
|
for key in ["guards", "drafts", "formalRecords", "runtime"]:
|
|
assert_contains(
|
|
"web_messages.zh-TW.iwooos.ownerResponseDecisionRecordDraftGuardBoard.summary",
|
|
list(web_messages_zh["iwooos"]["ownerResponseDecisionRecordDraftGuardBoard"]["summary"].keys()),
|
|
key,
|
|
)
|
|
assert_contains(
|
|
"web_messages.en.iwooos.ownerResponseDecisionRecordDraftGuardBoard.summary",
|
|
list(web_messages_en["iwooos"]["ownerResponseDecisionRecordDraftGuardBoard"]["summary"].keys()),
|
|
key,
|
|
)
|
|
for key in [
|
|
"recordIdentityDraft",
|
|
"decisionScopeSnapshot",
|
|
"reviewerRolePlaceholder",
|
|
"evidenceVersionFreeze",
|
|
"approvalNotExecutionBoundary",
|
|
"followupRuntimeGatePointer",
|
|
]:
|
|
assert_contains(
|
|
"web_messages.zh-TW.iwooos.ownerResponseDecisionRecordDraftGuardBoard.items",
|
|
list(web_messages_zh["iwooos"]["ownerResponseDecisionRecordDraftGuardBoard"]["items"].keys()),
|
|
key,
|
|
)
|
|
assert_contains(
|
|
"web_messages.en.iwooos.ownerResponseDecisionRecordDraftGuardBoard.items",
|
|
list(web_messages_en["iwooos"]["ownerResponseDecisionRecordDraftGuardBoard"]["items"].keys()),
|
|
key,
|
|
)
|
|
for key in [
|
|
"title",
|
|
"subtitle",
|
|
"checkItemLabel",
|
|
"preflightLabel",
|
|
"guardLabel",
|
|
"boundaryTitle",
|
|
"summary",
|
|
"items",
|
|
]:
|
|
assert_contains(
|
|
"web_messages.zh-TW.iwooos.ownerResponseFormalRecordCandidatePreflightBoard",
|
|
list(web_messages_zh["iwooos"]["ownerResponseFormalRecordCandidatePreflightBoard"].keys()),
|
|
key,
|
|
)
|
|
assert_contains(
|
|
"web_messages.en.iwooos.ownerResponseFormalRecordCandidatePreflightBoard",
|
|
list(web_messages_en["iwooos"]["ownerResponseFormalRecordCandidatePreflightBoard"].keys()),
|
|
key,
|
|
)
|
|
for key in ["checks", "candidates", "formalRecords", "runtime"]:
|
|
assert_contains(
|
|
"web_messages.zh-TW.iwooos.ownerResponseFormalRecordCandidatePreflightBoard.summary",
|
|
list(web_messages_zh["iwooos"]["ownerResponseFormalRecordCandidatePreflightBoard"]["summary"].keys()),
|
|
key,
|
|
)
|
|
assert_contains(
|
|
"web_messages.en.iwooos.ownerResponseFormalRecordCandidatePreflightBoard.summary",
|
|
list(web_messages_en["iwooos"]["ownerResponseFormalRecordCandidatePreflightBoard"]["summary"].keys()),
|
|
key,
|
|
)
|
|
for key in [
|
|
"candidateIdentityTrace",
|
|
"reviewerIdentityBoundary",
|
|
"evidenceVersionChain",
|
|
"scopeAndExpiry",
|
|
"riskRollbackField",
|
|
"runtimeGateSeparation",
|
|
"sourceControlSeparation",
|
|
]:
|
|
assert_contains(
|
|
"web_messages.zh-TW.iwooos.ownerResponseFormalRecordCandidatePreflightBoard.items",
|
|
list(web_messages_zh["iwooos"]["ownerResponseFormalRecordCandidatePreflightBoard"]["items"].keys()),
|
|
key,
|
|
)
|
|
assert_contains(
|
|
"web_messages.en.iwooos.ownerResponseFormalRecordCandidatePreflightBoard.items",
|
|
list(web_messages_en["iwooos"]["ownerResponseFormalRecordCandidatePreflightBoard"]["items"].keys()),
|
|
key,
|
|
)
|
|
for key in [
|
|
"title",
|
|
"subtitle",
|
|
"laneLabel",
|
|
"resultLabel",
|
|
"guardLabel",
|
|
"boundaryTitle",
|
|
"summary",
|
|
"items",
|
|
]:
|
|
assert_contains(
|
|
"web_messages.zh-TW.iwooos.ownerResponseFormalRecordCandidateOutcomeBoard",
|
|
list(web_messages_zh["iwooos"]["ownerResponseFormalRecordCandidateOutcomeBoard"].keys()),
|
|
key,
|
|
)
|
|
assert_contains(
|
|
"web_messages.en.iwooos.ownerResponseFormalRecordCandidateOutcomeBoard",
|
|
list(web_messages_en["iwooos"]["ownerResponseFormalRecordCandidateOutcomeBoard"].keys()),
|
|
key,
|
|
)
|
|
for key in ["lanes", "ready", "promoted", "runtime"]:
|
|
assert_contains(
|
|
"web_messages.zh-TW.iwooos.ownerResponseFormalRecordCandidateOutcomeBoard.summary",
|
|
list(web_messages_zh["iwooos"]["ownerResponseFormalRecordCandidateOutcomeBoard"]["summary"].keys()),
|
|
key,
|
|
)
|
|
assert_contains(
|
|
"web_messages.en.iwooos.ownerResponseFormalRecordCandidateOutcomeBoard.summary",
|
|
list(web_messages_en["iwooos"]["ownerResponseFormalRecordCandidateOutcomeBoard"]["summary"].keys()),
|
|
key,
|
|
)
|
|
for key in [
|
|
"remainCandidateWaiting",
|
|
"returnToDraft",
|
|
"needsEvidenceRefresh",
|
|
"needsReviewerClarification",
|
|
"readyForRecordOwner",
|
|
"quarantineSensitivePayload",
|
|
"rejectMutationRequest",
|
|
"runtimeOrCutoverGateRequired",
|
|
]:
|
|
assert_contains(
|
|
"web_messages.zh-TW.iwooos.ownerResponseFormalRecordCandidateOutcomeBoard.items",
|
|
list(web_messages_zh["iwooos"]["ownerResponseFormalRecordCandidateOutcomeBoard"]["items"].keys()),
|
|
key,
|
|
)
|
|
assert_contains(
|
|
"web_messages.en.iwooos.ownerResponseFormalRecordCandidateOutcomeBoard.items",
|
|
list(web_messages_en["iwooos"]["ownerResponseFormalRecordCandidateOutcomeBoard"]["items"].keys()),
|
|
key,
|
|
)
|
|
for key in [
|
|
"title",
|
|
"subtitle",
|
|
"packetLabel",
|
|
"handoffLabel",
|
|
"guardLabel",
|
|
"boundaryTitle",
|
|
"summary",
|
|
"items",
|
|
]:
|
|
assert_contains(
|
|
"web_messages.zh-TW.iwooos.ownerResponseFormalRecordOwnerHandoffBoard",
|
|
list(web_messages_zh["iwooos"]["ownerResponseFormalRecordOwnerHandoffBoard"].keys()),
|
|
key,
|
|
)
|
|
assert_contains(
|
|
"web_messages.en.iwooos.ownerResponseFormalRecordOwnerHandoffBoard",
|
|
list(web_messages_en["iwooos"]["ownerResponseFormalRecordOwnerHandoffBoard"].keys()),
|
|
key,
|
|
)
|
|
for key in ["packets", "ready", "assigned", "runtime"]:
|
|
assert_contains(
|
|
"web_messages.zh-TW.iwooos.ownerResponseFormalRecordOwnerHandoffBoard.summary",
|
|
list(web_messages_zh["iwooos"]["ownerResponseFormalRecordOwnerHandoffBoard"]["summary"].keys()),
|
|
key,
|
|
)
|
|
assert_contains(
|
|
"web_messages.en.iwooos.ownerResponseFormalRecordOwnerHandoffBoard.summary",
|
|
list(web_messages_en["iwooos"]["ownerResponseFormalRecordOwnerHandoffBoard"]["summary"].keys()),
|
|
key,
|
|
)
|
|
for key in [
|
|
"handoffIdentityBundle",
|
|
"handoffDecisionContext",
|
|
"handoffEvidenceLock",
|
|
"handoffReviewerNotes",
|
|
"handoffRiskRollback",
|
|
"handoffRuntimeGatePointer",
|
|
"handoffSourceControlPointer",
|
|
]:
|
|
assert_contains(
|
|
"web_messages.zh-TW.iwooos.ownerResponseFormalRecordOwnerHandoffBoard.items",
|
|
list(web_messages_zh["iwooos"]["ownerResponseFormalRecordOwnerHandoffBoard"]["items"].keys()),
|
|
key,
|
|
)
|
|
assert_contains(
|
|
"web_messages.en.iwooos.ownerResponseFormalRecordOwnerHandoffBoard.items",
|
|
list(web_messages_en["iwooos"]["ownerResponseFormalRecordOwnerHandoffBoard"]["items"].keys()),
|
|
key,
|
|
)
|
|
for key in [
|
|
"title",
|
|
"subtitle",
|
|
"checkLabel",
|
|
"reviewLabel",
|
|
"guardLabel",
|
|
"boundaryTitle",
|
|
"summary",
|
|
"items",
|
|
]:
|
|
assert_contains(
|
|
"web_messages.zh-TW.iwooos.ownerResponseFormalRecordOwnerHandoffReviewBoard",
|
|
list(web_messages_zh["iwooos"]["ownerResponseFormalRecordOwnerHandoffReviewBoard"].keys()),
|
|
key,
|
|
)
|
|
assert_contains(
|
|
"web_messages.en.iwooos.ownerResponseFormalRecordOwnerHandoffReviewBoard",
|
|
list(web_messages_en["iwooos"]["ownerResponseFormalRecordOwnerHandoffReviewBoard"].keys()),
|
|
key,
|
|
)
|
|
for key in ["checks", "passed", "assigned", "runtime"]:
|
|
assert_contains(
|
|
"web_messages.zh-TW.iwooos.ownerResponseFormalRecordOwnerHandoffReviewBoard.summary",
|
|
list(web_messages_zh["iwooos"]["ownerResponseFormalRecordOwnerHandoffReviewBoard"]["summary"].keys()),
|
|
key,
|
|
)
|
|
assert_contains(
|
|
"web_messages.en.iwooos.ownerResponseFormalRecordOwnerHandoffReviewBoard.summary",
|
|
list(web_messages_en["iwooos"]["ownerResponseFormalRecordOwnerHandoffReviewBoard"]["summary"].keys()),
|
|
key,
|
|
)
|
|
for key in [
|
|
"packetCompleteness",
|
|
"recordOwnerIdentityScope",
|
|
"authorityBoundaryMatch",
|
|
"evidenceVersionConfirm",
|
|
"reviewerNoteConfirm",
|
|
"mutationRequestReject",
|
|
"runtimeCutoverSeparation",
|
|
]:
|
|
assert_contains(
|
|
"web_messages.zh-TW.iwooos.ownerResponseFormalRecordOwnerHandoffReviewBoard.items",
|
|
list(web_messages_zh["iwooos"]["ownerResponseFormalRecordOwnerHandoffReviewBoard"]["items"].keys()),
|
|
key,
|
|
)
|
|
assert_contains(
|
|
"web_messages.en.iwooos.ownerResponseFormalRecordOwnerHandoffReviewBoard.items",
|
|
list(web_messages_en["iwooos"]["ownerResponseFormalRecordOwnerHandoffReviewBoard"]["items"].keys()),
|
|
key,
|
|
)
|
|
for key in [
|
|
"title",
|
|
"subtitle",
|
|
"laneLabel",
|
|
"resultLabel",
|
|
"guardLabel",
|
|
"boundaryTitle",
|
|
"summary",
|
|
"items",
|
|
]:
|
|
assert_contains(
|
|
"web_messages.zh-TW.iwooos.ownerResponseFormalRecordOwnerHandoffReviewOutcomeBoard",
|
|
list(web_messages_zh["iwooos"]["ownerResponseFormalRecordOwnerHandoffReviewOutcomeBoard"].keys()),
|
|
key,
|
|
)
|
|
assert_contains(
|
|
"web_messages.en.iwooos.ownerResponseFormalRecordOwnerHandoffReviewOutcomeBoard",
|
|
list(web_messages_en["iwooos"]["ownerResponseFormalRecordOwnerHandoffReviewOutcomeBoard"].keys()),
|
|
key,
|
|
)
|
|
for key in ["lanes", "ready", "assigned", "runtime"]:
|
|
assert_contains(
|
|
"web_messages.zh-TW.iwooos.ownerResponseFormalRecordOwnerHandoffReviewOutcomeBoard.summary",
|
|
list(web_messages_zh["iwooos"]["ownerResponseFormalRecordOwnerHandoffReviewOutcomeBoard"]["summary"].keys()),
|
|
key,
|
|
)
|
|
assert_contains(
|
|
"web_messages.en.iwooos.ownerResponseFormalRecordOwnerHandoffReviewOutcomeBoard.summary",
|
|
list(web_messages_en["iwooos"]["ownerResponseFormalRecordOwnerHandoffReviewOutcomeBoard"]["summary"].keys()),
|
|
key,
|
|
)
|
|
for key in [
|
|
"remainReviewWaiting",
|
|
"requestPacketCompletion",
|
|
"requestOwnerScopeClarification",
|
|
"requestEvidenceRefresh",
|
|
"readyForRecordOwnerReview",
|
|
"quarantineSensitivePayload",
|
|
"rejectMutationRequest",
|
|
"runtimeOrCutoverGateRequired",
|
|
]:
|
|
assert_contains(
|
|
"web_messages.zh-TW.iwooos.ownerResponseFormalRecordOwnerHandoffReviewOutcomeBoard.items",
|
|
list(web_messages_zh["iwooos"]["ownerResponseFormalRecordOwnerHandoffReviewOutcomeBoard"]["items"].keys()),
|
|
key,
|
|
)
|
|
assert_contains(
|
|
"web_messages.en.iwooos.ownerResponseFormalRecordOwnerHandoffReviewOutcomeBoard.items",
|
|
list(web_messages_en["iwooos"]["ownerResponseFormalRecordOwnerHandoffReviewOutcomeBoard"]["items"].keys()),
|
|
key,
|
|
)
|
|
for key in [
|
|
"title",
|
|
"subtitle",
|
|
"packetLabel",
|
|
"prepareLabel",
|
|
"guardLabel",
|
|
"boundaryTitle",
|
|
"summary",
|
|
"items",
|
|
]:
|
|
assert_contains(
|
|
"web_messages.zh-TW.iwooos.ownerResponseFormalRecordOwnerReviewPreparationBoard",
|
|
list(web_messages_zh["iwooos"]["ownerResponseFormalRecordOwnerReviewPreparationBoard"].keys()),
|
|
key,
|
|
)
|
|
assert_contains(
|
|
"web_messages.en.iwooos.ownerResponseFormalRecordOwnerReviewPreparationBoard",
|
|
list(web_messages_en["iwooos"]["ownerResponseFormalRecordOwnerReviewPreparationBoard"].keys()),
|
|
key,
|
|
)
|
|
for key in ["packets", "ready", "assigned", "runtime"]:
|
|
assert_contains(
|
|
"web_messages.zh-TW.iwooos.ownerResponseFormalRecordOwnerReviewPreparationBoard.summary",
|
|
list(web_messages_zh["iwooos"]["ownerResponseFormalRecordOwnerReviewPreparationBoard"]["summary"].keys()),
|
|
key,
|
|
)
|
|
assert_contains(
|
|
"web_messages.en.iwooos.ownerResponseFormalRecordOwnerReviewPreparationBoard.summary",
|
|
list(web_messages_en["iwooos"]["ownerResponseFormalRecordOwnerReviewPreparationBoard"]["summary"].keys()),
|
|
key,
|
|
)
|
|
for key in [
|
|
"reviewIdentityPacket",
|
|
"handoffOutcomeSnapshot",
|
|
"ownerScopePacket",
|
|
"authorityBoundaryPacket",
|
|
"evidenceTracePacket",
|
|
"reviewerNotePacket",
|
|
"mutationRejectionPacket",
|
|
"runtimeCutoverPointer",
|
|
]:
|
|
assert_contains(
|
|
"web_messages.zh-TW.iwooos.ownerResponseFormalRecordOwnerReviewPreparationBoard.items",
|
|
list(web_messages_zh["iwooos"]["ownerResponseFormalRecordOwnerReviewPreparationBoard"]["items"].keys()),
|
|
key,
|
|
)
|
|
assert_contains(
|
|
"web_messages.en.iwooos.ownerResponseFormalRecordOwnerReviewPreparationBoard.items",
|
|
list(web_messages_en["iwooos"]["ownerResponseFormalRecordOwnerReviewPreparationBoard"]["items"].keys()),
|
|
key,
|
|
)
|
|
for key in [
|
|
"title",
|
|
"subtitle",
|
|
"checkLabel",
|
|
"reviewLabel",
|
|
"guardLabel",
|
|
"boundaryTitle",
|
|
"summary",
|
|
"items",
|
|
]:
|
|
assert_contains(
|
|
"web_messages.zh-TW.iwooos.ownerResponseFormalRecordOwnerReviewChecklistBoard",
|
|
list(web_messages_zh["iwooos"]["ownerResponseFormalRecordOwnerReviewChecklistBoard"].keys()),
|
|
key,
|
|
)
|
|
assert_contains(
|
|
"web_messages.en.iwooos.ownerResponseFormalRecordOwnerReviewChecklistBoard",
|
|
list(web_messages_en["iwooos"]["ownerResponseFormalRecordOwnerReviewChecklistBoard"].keys()),
|
|
key,
|
|
)
|
|
for key in ["checks", "passed", "assigned", "runtime"]:
|
|
assert_contains(
|
|
"web_messages.zh-TW.iwooos.ownerResponseFormalRecordOwnerReviewChecklistBoard.summary",
|
|
list(web_messages_zh["iwooos"]["ownerResponseFormalRecordOwnerReviewChecklistBoard"]["summary"].keys()),
|
|
key,
|
|
)
|
|
assert_contains(
|
|
"web_messages.en.iwooos.ownerResponseFormalRecordOwnerReviewChecklistBoard.summary",
|
|
list(web_messages_en["iwooos"]["ownerResponseFormalRecordOwnerReviewChecklistBoard"]["summary"].keys()),
|
|
key,
|
|
)
|
|
for key in [
|
|
"identityTraceCheck",
|
|
"handoffOutcomeCheck",
|
|
"ownerScopeCheck",
|
|
"authorityBoundaryCheck",
|
|
"evidenceTraceCheck",
|
|
"reviewerNoteCheck",
|
|
"mutationRejectionCheck",
|
|
"runtimeCutoverSeparationCheck",
|
|
]:
|
|
assert_contains(
|
|
"web_messages.zh-TW.iwooos.ownerResponseFormalRecordOwnerReviewChecklistBoard.items",
|
|
list(web_messages_zh["iwooos"]["ownerResponseFormalRecordOwnerReviewChecklistBoard"]["items"].keys()),
|
|
key,
|
|
)
|
|
assert_contains(
|
|
"web_messages.en.iwooos.ownerResponseFormalRecordOwnerReviewChecklistBoard.items",
|
|
list(web_messages_en["iwooos"]["ownerResponseFormalRecordOwnerReviewChecklistBoard"]["items"].keys()),
|
|
key,
|
|
)
|
|
for key in [
|
|
"title",
|
|
"subtitle",
|
|
"laneLabel",
|
|
"resultLabel",
|
|
"guardLabel",
|
|
"boundaryTitle",
|
|
"summary",
|
|
"items",
|
|
]:
|
|
assert_contains(
|
|
"web_messages.zh-TW.iwooos.ownerResponseFormalRecordOwnerReviewOutcomeBoard",
|
|
list(web_messages_zh["iwooos"]["ownerResponseFormalRecordOwnerReviewOutcomeBoard"].keys()),
|
|
key,
|
|
)
|
|
assert_contains(
|
|
"web_messages.en.iwooos.ownerResponseFormalRecordOwnerReviewOutcomeBoard",
|
|
list(web_messages_en["iwooos"]["ownerResponseFormalRecordOwnerReviewOutcomeBoard"].keys()),
|
|
key,
|
|
)
|
|
for key in ["lanes", "ready", "assigned", "runtime"]:
|
|
assert_contains(
|
|
"web_messages.zh-TW.iwooos.ownerResponseFormalRecordOwnerReviewOutcomeBoard.summary",
|
|
list(web_messages_zh["iwooos"]["ownerResponseFormalRecordOwnerReviewOutcomeBoard"]["summary"].keys()),
|
|
key,
|
|
)
|
|
assert_contains(
|
|
"web_messages.en.iwooos.ownerResponseFormalRecordOwnerReviewOutcomeBoard.summary",
|
|
list(web_messages_en["iwooos"]["ownerResponseFormalRecordOwnerReviewOutcomeBoard"]["summary"].keys()),
|
|
key,
|
|
)
|
|
for key in [
|
|
"remainOwnerReviewWaiting",
|
|
"requestTraceCompletion",
|
|
"requestOwnerScopeClarification",
|
|
"requestAuthorityBoundaryFix",
|
|
"readyForManualOwnerAssignmentReview",
|
|
"quarantineSensitivePayload",
|
|
"rejectMutationRequest",
|
|
"runtimeOrPrimaryGateRequired",
|
|
]:
|
|
assert_contains(
|
|
"web_messages.zh-TW.iwooos.ownerResponseFormalRecordOwnerReviewOutcomeBoard.items",
|
|
list(web_messages_zh["iwooos"]["ownerResponseFormalRecordOwnerReviewOutcomeBoard"]["items"].keys()),
|
|
key,
|
|
)
|
|
assert_contains(
|
|
"web_messages.en.iwooos.ownerResponseFormalRecordOwnerReviewOutcomeBoard.items",
|
|
list(web_messages_en["iwooos"]["ownerResponseFormalRecordOwnerReviewOutcomeBoard"]["items"].keys()),
|
|
key,
|
|
)
|
|
for key in [
|
|
"title",
|
|
"subtitle",
|
|
"packetLabel",
|
|
"preparationLabel",
|
|
"guardLabel",
|
|
"boundaryTitle",
|
|
"summary",
|
|
"items",
|
|
]:
|
|
assert_contains(
|
|
"web_messages.zh-TW.iwooos.ownerResponseFormalRecordOwnerAssignmentPreparationBoard",
|
|
list(web_messages_zh["iwooos"]["ownerResponseFormalRecordOwnerAssignmentPreparationBoard"].keys()),
|
|
key,
|
|
)
|
|
assert_contains(
|
|
"web_messages.en.iwooos.ownerResponseFormalRecordOwnerAssignmentPreparationBoard",
|
|
list(web_messages_en["iwooos"]["ownerResponseFormalRecordOwnerAssignmentPreparationBoard"].keys()),
|
|
key,
|
|
)
|
|
for key in ["packets", "ready", "assigned", "runtime"]:
|
|
assert_contains(
|
|
"web_messages.zh-TW.iwooos.ownerResponseFormalRecordOwnerAssignmentPreparationBoard.summary",
|
|
list(web_messages_zh["iwooos"]["ownerResponseFormalRecordOwnerAssignmentPreparationBoard"]["summary"].keys()),
|
|
key,
|
|
)
|
|
assert_contains(
|
|
"web_messages.en.iwooos.ownerResponseFormalRecordOwnerAssignmentPreparationBoard.summary",
|
|
list(web_messages_en["iwooos"]["ownerResponseFormalRecordOwnerAssignmentPreparationBoard"]["summary"].keys()),
|
|
key,
|
|
)
|
|
for key in [
|
|
"assignmentIdentityCandidate",
|
|
"ownerScopeConfirmation",
|
|
"authorityBoundaryConfirmation",
|
|
"evidenceTraceConfirmation",
|
|
"reviewOutcomeReference",
|
|
"backupOwnerNote",
|
|
"mutationRejectionConfirmation",
|
|
"runtimePrimarySeparation",
|
|
]:
|
|
assert_contains(
|
|
"web_messages.zh-TW.iwooos.ownerResponseFormalRecordOwnerAssignmentPreparationBoard.items",
|
|
list(web_messages_zh["iwooos"]["ownerResponseFormalRecordOwnerAssignmentPreparationBoard"]["items"].keys()),
|
|
key,
|
|
)
|
|
assert_contains(
|
|
"web_messages.en.iwooos.ownerResponseFormalRecordOwnerAssignmentPreparationBoard.items",
|
|
list(web_messages_en["iwooos"]["ownerResponseFormalRecordOwnerAssignmentPreparationBoard"]["items"].keys()),
|
|
key,
|
|
)
|
|
for key in [
|
|
"title",
|
|
"subtitle",
|
|
"checkLabel",
|
|
"confirmationLabel",
|
|
"guardLabel",
|
|
"boundaryTitle",
|
|
"summary",
|
|
"items",
|
|
]:
|
|
assert_contains(
|
|
"web_messages.zh-TW.iwooos.ownerResponseFormalRecordOwnerAssignmentChecklistBoard",
|
|
list(web_messages_zh["iwooos"]["ownerResponseFormalRecordOwnerAssignmentChecklistBoard"].keys()),
|
|
key,
|
|
)
|
|
assert_contains(
|
|
"web_messages.en.iwooos.ownerResponseFormalRecordOwnerAssignmentChecklistBoard",
|
|
list(web_messages_en["iwooos"]["ownerResponseFormalRecordOwnerAssignmentChecklistBoard"].keys()),
|
|
key,
|
|
)
|
|
for key in ["checks", "passed", "assigned", "runtime"]:
|
|
assert_contains(
|
|
"web_messages.zh-TW.iwooos.ownerResponseFormalRecordOwnerAssignmentChecklistBoard.summary",
|
|
list(web_messages_zh["iwooos"]["ownerResponseFormalRecordOwnerAssignmentChecklistBoard"]["summary"].keys()),
|
|
key,
|
|
)
|
|
assert_contains(
|
|
"web_messages.en.iwooos.ownerResponseFormalRecordOwnerAssignmentChecklistBoard.summary",
|
|
list(web_messages_en["iwooos"]["ownerResponseFormalRecordOwnerAssignmentChecklistBoard"]["summary"].keys()),
|
|
key,
|
|
)
|
|
for key in [
|
|
"assignmentIdentityReadable",
|
|
"ownerScopeCurrent",
|
|
"authorityBoundaryReadable",
|
|
"evidenceTraceReadable",
|
|
"reviewOutcomeLinked",
|
|
"backupOwnerNoteReadable",
|
|
"mutationRejectionConfirmed",
|
|
"runtimePrimarySeparated",
|
|
]:
|
|
assert_contains(
|
|
"web_messages.zh-TW.iwooos.ownerResponseFormalRecordOwnerAssignmentChecklistBoard.items",
|
|
list(web_messages_zh["iwooos"]["ownerResponseFormalRecordOwnerAssignmentChecklistBoard"]["items"].keys()),
|
|
key,
|
|
)
|
|
assert_contains(
|
|
"web_messages.en.iwooos.ownerResponseFormalRecordOwnerAssignmentChecklistBoard.items",
|
|
list(web_messages_en["iwooos"]["ownerResponseFormalRecordOwnerAssignmentChecklistBoard"]["items"].keys()),
|
|
key,
|
|
)
|
|
for key in [
|
|
"title",
|
|
"subtitle",
|
|
"laneLabel",
|
|
"resultLabel",
|
|
"guardLabel",
|
|
"boundaryTitle",
|
|
"summary",
|
|
"items",
|
|
]:
|
|
assert_contains(
|
|
"web_messages.zh-TW.iwooos.ownerResponseFormalRecordOwnerAssignmentOutcomeBoard",
|
|
list(web_messages_zh["iwooos"]["ownerResponseFormalRecordOwnerAssignmentOutcomeBoard"].keys()),
|
|
key,
|
|
)
|
|
assert_contains(
|
|
"web_messages.en.iwooos.ownerResponseFormalRecordOwnerAssignmentOutcomeBoard",
|
|
list(web_messages_en["iwooos"]["ownerResponseFormalRecordOwnerAssignmentOutcomeBoard"].keys()),
|
|
key,
|
|
)
|
|
for key in ["lanes", "ready", "assigned", "runtime"]:
|
|
assert_contains(
|
|
"web_messages.zh-TW.iwooos.ownerResponseFormalRecordOwnerAssignmentOutcomeBoard.summary",
|
|
list(web_messages_zh["iwooos"]["ownerResponseFormalRecordOwnerAssignmentOutcomeBoard"]["summary"].keys()),
|
|
key,
|
|
)
|
|
assert_contains(
|
|
"web_messages.en.iwooos.ownerResponseFormalRecordOwnerAssignmentOutcomeBoard.summary",
|
|
list(web_messages_en["iwooos"]["ownerResponseFormalRecordOwnerAssignmentOutcomeBoard"]["summary"].keys()),
|
|
key,
|
|
)
|
|
for key in [
|
|
"remainAssignmentCheckWaiting",
|
|
"requestIdentityClarification",
|
|
"requestScopeRefresh",
|
|
"requestAuthorityBoundaryFix",
|
|
"readyForManualOwnerAssignmentDecision",
|
|
"quarantineSensitivePayload",
|
|
"rejectMutationRequest",
|
|
"runtimeOrPrimaryGateRequired",
|
|
]:
|
|
assert_contains(
|
|
"web_messages.zh-TW.iwooos.ownerResponseFormalRecordOwnerAssignmentOutcomeBoard.items",
|
|
list(web_messages_zh["iwooos"]["ownerResponseFormalRecordOwnerAssignmentOutcomeBoard"]["items"].keys()),
|
|
key,
|
|
)
|
|
assert_contains(
|
|
"web_messages.en.iwooos.ownerResponseFormalRecordOwnerAssignmentOutcomeBoard.items",
|
|
list(web_messages_en["iwooos"]["ownerResponseFormalRecordOwnerAssignmentOutcomeBoard"]["items"].keys()),
|
|
key,
|
|
)
|
|
for key in [
|
|
"title",
|
|
"subtitle",
|
|
"packetLabel",
|
|
"requirementLabel",
|
|
"guardLabel",
|
|
"boundaryTitle",
|
|
"summary",
|
|
"items",
|
|
]:
|
|
assert_contains(
|
|
"web_messages.zh-TW.iwooos.ownerResponseFormalRecordOwnerAssignmentDecisionPreparationBoard",
|
|
list(web_messages_zh["iwooos"]["ownerResponseFormalRecordOwnerAssignmentDecisionPreparationBoard"].keys()),
|
|
key,
|
|
)
|
|
assert_contains(
|
|
"web_messages.en.iwooos.ownerResponseFormalRecordOwnerAssignmentDecisionPreparationBoard",
|
|
list(web_messages_en["iwooos"]["ownerResponseFormalRecordOwnerAssignmentDecisionPreparationBoard"].keys()),
|
|
key,
|
|
)
|
|
for key in ["packets", "ready", "decisions", "runtime"]:
|
|
assert_contains(
|
|
"web_messages.zh-TW.iwooos.ownerResponseFormalRecordOwnerAssignmentDecisionPreparationBoard.summary",
|
|
list(web_messages_zh["iwooos"]["ownerResponseFormalRecordOwnerAssignmentDecisionPreparationBoard"]["summary"].keys()),
|
|
key,
|
|
)
|
|
assert_contains(
|
|
"web_messages.en.iwooos.ownerResponseFormalRecordOwnerAssignmentDecisionPreparationBoard.summary",
|
|
list(web_messages_en["iwooos"]["ownerResponseFormalRecordOwnerAssignmentDecisionPreparationBoard"]["summary"].keys()),
|
|
key,
|
|
)
|
|
for key in [
|
|
"outcomeTracePacket",
|
|
"ownerIdentityPacket",
|
|
"scopeSnapshotPacket",
|
|
"authorityBoundaryPacket",
|
|
"evidenceReviewPacket",
|
|
"quarantineAndExceptionPacket",
|
|
"mutationRejectionPacket",
|
|
"runtimePrimaryGatePacket",
|
|
]:
|
|
assert_contains(
|
|
"web_messages.zh-TW.iwooos.ownerResponseFormalRecordOwnerAssignmentDecisionPreparationBoard.items",
|
|
list(web_messages_zh["iwooos"]["ownerResponseFormalRecordOwnerAssignmentDecisionPreparationBoard"]["items"].keys()),
|
|
key,
|
|
)
|
|
assert_contains(
|
|
"web_messages.en.iwooos.ownerResponseFormalRecordOwnerAssignmentDecisionPreparationBoard.items",
|
|
list(web_messages_en["iwooos"]["ownerResponseFormalRecordOwnerAssignmentDecisionPreparationBoard"]["items"].keys()),
|
|
key,
|
|
)
|
|
for key in [
|
|
"title",
|
|
"subtitle",
|
|
"checkLabel",
|
|
"confirmationLabel",
|
|
"guardLabel",
|
|
"boundaryTitle",
|
|
"summary",
|
|
"items",
|
|
]:
|
|
assert_contains(
|
|
"web_messages.zh-TW.iwooos.ownerResponseFormalRecordOwnerAssignmentDecisionChecklistBoard",
|
|
list(web_messages_zh["iwooos"]["ownerResponseFormalRecordOwnerAssignmentDecisionChecklistBoard"].keys()),
|
|
key,
|
|
)
|
|
assert_contains(
|
|
"web_messages.en.iwooos.ownerResponseFormalRecordOwnerAssignmentDecisionChecklistBoard",
|
|
list(web_messages_en["iwooos"]["ownerResponseFormalRecordOwnerAssignmentDecisionChecklistBoard"].keys()),
|
|
key,
|
|
)
|
|
for key in ["checks", "passed", "decisions", "runtime"]:
|
|
assert_contains(
|
|
"web_messages.zh-TW.iwooos.ownerResponseFormalRecordOwnerAssignmentDecisionChecklistBoard.summary",
|
|
list(web_messages_zh["iwooos"]["ownerResponseFormalRecordOwnerAssignmentDecisionChecklistBoard"]["summary"].keys()),
|
|
key,
|
|
)
|
|
assert_contains(
|
|
"web_messages.en.iwooos.ownerResponseFormalRecordOwnerAssignmentDecisionChecklistBoard.summary",
|
|
list(web_messages_en["iwooos"]["ownerResponseFormalRecordOwnerAssignmentDecisionChecklistBoard"]["summary"].keys()),
|
|
key,
|
|
)
|
|
for key in [
|
|
"decisionTraceReadable",
|
|
"ownerIdentityConfirmable",
|
|
"scopeSnapshotCurrent",
|
|
"authorityBoundaryChecked",
|
|
"evidenceChainReadable",
|
|
"quarantineExceptionChecked",
|
|
"mutationRejectionChecked",
|
|
"runtimePrimarySeparated",
|
|
]:
|
|
assert_contains(
|
|
"web_messages.zh-TW.iwooos.ownerResponseFormalRecordOwnerAssignmentDecisionChecklistBoard.items",
|
|
list(web_messages_zh["iwooos"]["ownerResponseFormalRecordOwnerAssignmentDecisionChecklistBoard"]["items"].keys()),
|
|
key,
|
|
)
|
|
assert_contains(
|
|
"web_messages.en.iwooos.ownerResponseFormalRecordOwnerAssignmentDecisionChecklistBoard.items",
|
|
list(web_messages_en["iwooos"]["ownerResponseFormalRecordOwnerAssignmentDecisionChecklistBoard"]["items"].keys()),
|
|
key,
|
|
)
|
|
|
|
owner_summary = owner_rollup["summary"]
|
|
assert_equal("owner_rollup.total_received_response_count", owner_summary["total_received_response_count"], 0)
|
|
assert_equal("owner_rollup.total_accepted_response_count", owner_summary["total_accepted_response_count"], 0)
|
|
assert_equal("owner_rollup.owner_response_evidence_routing_rule_count", owner_summary["owner_response_evidence_routing_rule_count"], 6)
|
|
assert_equal("owner_rollup.owner_response_validation_display_section_count", owner_summary["owner_response_validation_display_section_count"], 8)
|
|
assert_equal(
|
|
"owner_rollup.owner_response_validation_state_transition_rule_count",
|
|
owner_summary["owner_response_validation_state_transition_rule_count"],
|
|
7,
|
|
)
|
|
assert_equal(
|
|
"owner_rollup.owner_response_validation_reviewer_checklist_count",
|
|
owner_summary["owner_response_validation_reviewer_checklist_count"],
|
|
9,
|
|
)
|
|
assert_equal(
|
|
"owner_rollup.owner_response_validation_reviewer_outcome_lane_count",
|
|
owner_summary["owner_response_validation_reviewer_outcome_lane_count"],
|
|
7,
|
|
)
|
|
assert_equal(
|
|
"owner_rollup.owner_response_validation_reviewer_audit_event_template_count",
|
|
owner_summary["owner_response_validation_reviewer_audit_event_template_count"],
|
|
4,
|
|
)
|
|
assert_equal(
|
|
"owner_rollup.owner_response_validation_reviewer_audit_display_section_count",
|
|
owner_summary["owner_response_validation_reviewer_audit_display_section_count"],
|
|
5,
|
|
)
|
|
assert_equal(
|
|
"owner_rollup.owner_response_validation_reviewer_audit_collection_check_count",
|
|
owner_summary["owner_response_validation_reviewer_audit_collection_check_count"],
|
|
6,
|
|
)
|
|
assert_equal(
|
|
"owner_rollup.owner_response_validation_reviewer_audit_redaction_example_count",
|
|
owner_summary["owner_response_validation_reviewer_audit_redaction_example_count"],
|
|
5,
|
|
)
|
|
assert_equal(
|
|
"owner_rollup.owner_response_validation_reviewer_audit_retention_rule_count",
|
|
owner_summary["owner_response_validation_reviewer_audit_retention_rule_count"],
|
|
5,
|
|
)
|
|
assert_equal(
|
|
"owner_rollup.owner_response_validation_reviewer_audit_retention_check_count",
|
|
owner_summary["owner_response_validation_reviewer_audit_retention_check_count"],
|
|
6,
|
|
)
|
|
assert_equal(
|
|
"owner_rollup.owner_response_validation_reviewer_audit_handoff_packet_count",
|
|
owner_summary["owner_response_validation_reviewer_audit_handoff_packet_count"],
|
|
6,
|
|
)
|
|
assert_equal(
|
|
"owner_rollup.owner_response_validation_reviewer_audit_handoff_check_count",
|
|
owner_summary["owner_response_validation_reviewer_audit_handoff_check_count"],
|
|
6,
|
|
)
|
|
assert_equal(
|
|
"owner_rollup.owner_response_validation_parallel_session_sync_check_count",
|
|
owner_summary["owner_response_validation_parallel_session_sync_check_count"],
|
|
6,
|
|
)
|
|
assert_equal(
|
|
"owner_rollup.owner_response_validation_parallel_session_conflict_lane_count",
|
|
owner_summary["owner_response_validation_parallel_session_conflict_lane_count"],
|
|
6,
|
|
)
|
|
assert_equal(
|
|
"owner_rollup.owner_response_validation_parallel_session_recovery_check_count",
|
|
owner_summary["owner_response_validation_parallel_session_recovery_check_count"],
|
|
6,
|
|
)
|
|
assert_equal(
|
|
"owner_rollup.owner_response_validation_parallel_session_recovery_outcome_lane_count",
|
|
owner_summary["owner_response_validation_parallel_session_recovery_outcome_lane_count"],
|
|
7,
|
|
)
|
|
assert_false("owner_rollup.runtime_execution_authorized", owner_summary["runtime_execution_authorized"])
|
|
assert_false("owner_rollup.repo_creation_authorized", owner_summary["repo_creation_authorized"])
|
|
assert_false("owner_rollup.refs_sync_authorized", owner_summary["refs_sync_authorized"])
|
|
assert_false("owner_rollup.workflow_modification_authorized", owner_summary["workflow_modification_authorized"])
|
|
assert_false("owner_rollup.github_primary_switch_authorized", owner_summary["github_primary_switch_authorized"])
|
|
assert_false("owner_rollup.action_buttons_allowed", owner_summary["action_buttons_allowed"])
|
|
|
|
next_candidate = owner_rollup["next_collection_candidate"]
|
|
assert_equal("owner_rollup.next_collection_candidate.order", next_candidate["order"], 1)
|
|
assert_equal(
|
|
"owner_rollup.next_collection_candidate.lane_id",
|
|
next_candidate["lane_id"],
|
|
"s4_9_gitea_inventory_owner_attestation_response",
|
|
)
|
|
assert_equal(
|
|
"owner_rollup.next_collection_candidate.display_status",
|
|
next_candidate["display_status"],
|
|
"next_owner_response_required",
|
|
)
|
|
assert_equal(
|
|
"owner_rollup.next_collection_candidate.required_response_template_count",
|
|
next_candidate["required_response_template_count"],
|
|
5,
|
|
)
|
|
assert_equal("owner_rollup.next_collection_candidate.received_response_count", next_candidate["received_response_count"], 0)
|
|
assert_equal("owner_rollup.next_collection_candidate.accepted_response_count", next_candidate["accepted_response_count"], 0)
|
|
assert_equal(
|
|
"owner_rollup.next_collection_candidate.awooop_display_mode",
|
|
next_candidate["awooop_display_mode"],
|
|
"display_next_collection_item_only",
|
|
)
|
|
assert_true("owner_rollup.next_collection_candidate.blocked_until_received", next_candidate["blocked_until_received"])
|
|
assert_false("owner_rollup.next_collection_candidate.execution_authorized", next_candidate["execution_authorized"])
|
|
assert_true("owner_rollup.next_collection_candidate.not_approval", next_candidate["not_approval"])
|
|
|
|
owner_local_validation = owner_rollup["latest_local_validation"]
|
|
assert_equal("owner_rollup.latest_local_validation.status", owner_local_validation["status"], "repo_snapshot_guard_pass")
|
|
assert_equal("owner_rollup.latest_local_validation.scope", owner_local_validation["scope"], "repo_snapshot_only")
|
|
assert_equal("owner_rollup.latest_local_validation.result", owner_local_validation["result"], "SOURCE_CONTROL_OWNER_RESPONSE_GUARD_OK")
|
|
assert_equal("owner_rollup.latest_local_validation.received_response_count", owner_local_validation["received_response_count"], 0)
|
|
assert_equal("owner_rollup.latest_local_validation.accepted_response_count", owner_local_validation["accepted_response_count"], 0)
|
|
assert_false("owner_rollup.latest_local_validation.runtime_actions_authorized", owner_local_validation["runtime_actions_authorized"])
|
|
assert_false("owner_rollup.latest_local_validation.repo_or_refs_actions_authorized", owner_local_validation["repo_or_refs_actions_authorized"])
|
|
assert_false("owner_rollup.latest_local_validation.workflow_or_secret_actions_authorized", owner_local_validation["workflow_or_secret_actions_authorized"])
|
|
assert_true("owner_rollup.latest_local_validation.not_authorization", owner_local_validation["not_authorization"])
|
|
|
|
primary_summary = primary_gate["summary"]
|
|
assert_equal("primary_gate.candidate_repo_count", primary_summary["candidate_repo_count"], 10)
|
|
assert_equal("primary_gate.in_scope_repo_count", primary_summary["in_scope_repo_count"], 9)
|
|
assert_equal("primary_gate.primary_ready_count", primary_summary["primary_ready_count"], 0)
|
|
assert_equal("primary_gate.blocked_in_scope_count", primary_summary["blocked_in_scope_count"], 9)
|
|
assert_equal("owner_rollup.total_response_template_count", owner_summary["total_response_template_count"], 24)
|
|
assert_false("primary_gate.runtime_actions_authorized", primary_summary["runtime_actions_authorized"])
|
|
assert_false("primary_gate.github_primary_switch_authorized", primary_summary["github_primary_switch_authorized"])
|
|
assert_false("primary_gate.action_buttons_allowed", primary_summary["action_buttons_allowed"])
|
|
assert_false("primary_gate.raw_secret_storage_authorized", primary_summary["raw_secret_storage_authorized"])
|
|
|
|
acceptance_ids = [item["check_id"] for item in acceptance["acceptance_checks"]]
|
|
assert_equal("acceptance.total_contracts", acceptance["summary"]["total_contracts"], manifest_count)
|
|
assert_equal(
|
|
"acceptance.ready_for_mirror_count",
|
|
acceptance["summary"]["ready_for_mirror_count"],
|
|
readiness_summary["ready_for_mirror_count"],
|
|
)
|
|
assert_contains("acceptance_checks", acceptance_ids, "PROGRESS_ESTIMATE_NOT_AUTHORIZATION")
|
|
assert_equal("acceptance.summary.acceptance_check_count", acceptance["summary"]["acceptance_check_count"], len(acceptance_ids))
|
|
assert_equal(
|
|
"acceptance.summary.blocking_check_count",
|
|
acceptance["summary"]["blocking_check_count"],
|
|
sum(1 for item in acceptance["acceptance_checks"] if item["blocking_if_failed"]),
|
|
)
|
|
assert_false("acceptance.runtime_execution_authorized", acceptance["runtime_execution_authorized"])
|
|
|
|
dry_run_summary = dry_run["summary"]
|
|
dry_run_step_ids = [item["step_id"] for item in dry_run["dry_run_steps"]]
|
|
assert_equal("dry_run.dry_run_status", dry_run["dry_run_status"], "contract_defined_not_executed")
|
|
assert_equal("dry_run.total_contracts", dry_run_summary["total_contracts"], manifest_count)
|
|
assert_equal(
|
|
"dry_run.ready_for_mirror_count",
|
|
dry_run_summary["ready_for_mirror_count"],
|
|
readiness_summary["ready_for_mirror_count"],
|
|
)
|
|
assert_equal("dry_run.acceptance_check_count", dry_run_summary["acceptance_check_count"], 8)
|
|
assert_false("dry_run.runtime_execution_authorized", dry_run["runtime_execution_authorized"])
|
|
assert_false("dry_run.runtime_actions_executed", dry_run_summary["runtime_actions_executed"])
|
|
assert_false("dry_run.payloads_ingested", dry_run_summary["payloads_ingested"])
|
|
assert_contains("dry_run_steps", dry_run_step_ids, "CHECK_PROGRESS_GUARD")
|
|
assert_contains("dry_run_steps", dry_run_step_ids, "CHECK_OWNER_RESPONSE_GUARD")
|
|
|
|
local_validation = dry_run["latest_local_validation"]
|
|
assert_equal("dry_run.latest_local_validation.status", local_validation["status"], "repo_snapshot_guard_pass")
|
|
assert_equal("dry_run.latest_local_validation.scope", local_validation["scope"], "repo_snapshot_only")
|
|
assert_equal(
|
|
"dry_run.latest_local_validation.result",
|
|
local_validation["result"],
|
|
"SECURITY_MIRROR_PROGRESS_GUARD_OK; SOURCE_CONTROL_OWNER_RESPONSE_GUARD_OK; IWOOOS_CONFIG_CONTROL_GUARD_OK; IWOOOS_OWNER_GATE_GUARD_OK; PACKAGE_SUPPLY_CHAIN_OWNER_POLICY_GUARD_OK",
|
|
)
|
|
assert_contains("dry_run.latest_local_validation.validated_steps", local_validation["validated_steps"], "CHECK_PROGRESS_GUARD")
|
|
assert_contains(
|
|
"dry_run.latest_local_validation.validated_steps",
|
|
local_validation["validated_steps"],
|
|
"CHECK_OWNER_RESPONSE_GUARD",
|
|
)
|
|
assert_contains(
|
|
"dry_run.latest_local_validation.validated_steps",
|
|
local_validation["validated_steps"],
|
|
"CHECK_OWNER_GATE_GUARD",
|
|
)
|
|
assert_contains(
|
|
"dry_run.latest_local_validation.validated_steps",
|
|
local_validation["validated_steps"],
|
|
"CHECK_CONFIG_CONTROL_GUARD",
|
|
)
|
|
assert_contains(
|
|
"dry_run.latest_local_validation.validated_steps",
|
|
local_validation["validated_steps"],
|
|
"CHECK_PACKAGE_SUPPLY_CHAIN_OWNER_POLICY_GUARD",
|
|
)
|
|
assert_false("dry_run.latest_local_validation.runtime_actions_executed", local_validation["runtime_actions_executed"])
|
|
assert_false("dry_run.latest_local_validation.payloads_ingested", local_validation["payloads_ingested"])
|
|
assert_false("dry_run.latest_local_validation.production_ingestion_enabled", local_validation["production_ingestion_enabled"])
|
|
assert_true("dry_run.latest_local_validation.not_authorization", local_validation["not_authorization"])
|
|
|
|
forbidden_actions = (
|
|
set(rollup["forbidden_actions"])
|
|
| set(acceptance["forbidden_actions"])
|
|
| set(iwooos_projection["forbidden_frontend_outputs"])
|
|
)
|
|
for action in [
|
|
"start_kali_scan",
|
|
"call_kali_execute_endpoint",
|
|
"create_github_repo",
|
|
"change_repo_visibility",
|
|
"sync_git_refs",
|
|
"switch_github_primary",
|
|
"production_deploy",
|
|
]:
|
|
assert_contains("forbidden_actions", list(forbidden_actions), action)
|
|
|
|
frontend_product_text = "\n".join(
|
|
[
|
|
iwooos_projection_page,
|
|
json.dumps(web_messages_zh["iwooos"], ensure_ascii=False),
|
|
json.dumps(web_messages_en["iwooos"], ensure_ascii=False),
|
|
]
|
|
)
|
|
for forbidden in [
|
|
"工作視窗",
|
|
"內部對話",
|
|
"對話內容",
|
|
"批准!繼續",
|
|
"In app browser",
|
|
"My request for Codex",
|
|
]:
|
|
assert_text_not_contains("iwooos_frontend_product_text.internal_conversation", frontend_product_text, forbidden)
|
|
|
|
|
|
def main() -> None:
|
|
parser = argparse.ArgumentParser(description=__doc__)
|
|
parser.add_argument(
|
|
"--root",
|
|
default=Path(__file__).resolve().parents[2],
|
|
type=Path,
|
|
help="Repository root. Defaults to the current script's repository.",
|
|
)
|
|
args = parser.parse_args()
|
|
validate(args.root.resolve())
|
|
print("SECURITY_MIRROR_PROGRESS_GUARD_OK")
|
|
|
|
|
|
if __name__ == "__main__":
|
|
main()
|