feat(web): show IwoooS surface connection status

This commit is contained in:
Your Name
2026-05-20 20:37:13 +08:00
parent 695d3b0191
commit a26ed24a62
11 changed files with 578 additions and 3 deletions

View File

@@ -55,6 +55,9 @@ def validate(root: Path) -> None:
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")
iwooos_projection_page = (
root / "apps" / "web" / "src" / "app" / "[locale]" / "iwooos" / "page.tsx"
).read_text(encoding="utf-8")
awooop_home_page = (
root / "apps" / "web" / "src" / "app" / "[locale]" / "awooop" / "page.tsx"
).read_text(encoding="utf-8")
@@ -271,6 +274,7 @@ def validate(root: Path) -> None:
"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",
]
assert_equal(
"progress_delta_ledger.delta_ids",
@@ -345,6 +349,11 @@ def validate(root: Path) -> None:
[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_equal("rollout_policy.schema_version", rollout_policy["schema_version"], "security_rollout_policy_v1")
assert_equal("rollout_policy.default_mode", rollout_policy["default_mode"], "observe")
@@ -454,6 +463,11 @@ def validate(root: Path) -> None:
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",
@@ -1709,6 +1723,52 @@ def validate(root: Path) -> None:
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",
"direct_bridge_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",
@@ -4621,6 +4681,7 @@ def validate(root: Path) -> None:
"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",
@@ -4680,6 +4741,10 @@ def validate(root: Path) -> None:
"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",
@@ -5129,6 +5194,11 @@ def validate(root: Path) -> None:
source_text,
'<IwoooSReadOnlyBridge variant="dark" />',
)
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")
for key in [
"title",
"subtitle",
@@ -5161,6 +5231,50 @@ def validate(root: Path) -> None:
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"]:
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,
)
owner_summary = owner_rollup["summary"]
assert_equal("owner_rollup.total_received_response_count", owner_summary["total_received_response_count"], 0)