feat(web): integrate security compliance entry

This commit is contained in:
Your Name
2026-05-24 13:53:08 +08:00
parent 504dd136c5
commit a12de89233
9 changed files with 635 additions and 4 deletions

View File

@@ -79,6 +79,9 @@ def validate(root: Path) -> None:
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")
@@ -355,6 +358,7 @@ def validate(root: Path) -> None:
"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",
]
assert_equal(
"progress_delta_ledger.delta_ids",
@@ -609,6 +613,11 @@ def validate(root: Path) -> None:
[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)],
@@ -7973,6 +7982,134 @@ def validate(root: Path) -> None:
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.frontstage_component",
security_compliance_page,
"SecurityComplianceFrontStage",
)
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 [
"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", "items"]:
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 ["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,
)
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,
)
for key in [
"title",
"subtitle",