feat(web): add IwoooS gate radar
All checks were successful
CD Pipeline / tests (push) Successful in 1m18s
Code Review / ai-code-review (push) Successful in 12s
CD Pipeline / build-and-deploy (push) Successful in 3m26s
CD Pipeline / post-deploy-checks (push) Successful in 2m41s

This commit is contained in:
Your Name
2026-06-01 09:22:57 +08:00
parent 159f514f55
commit d84ccb630a
7 changed files with 713 additions and 0 deletions

View File

@@ -611,6 +611,7 @@ def validate(root: Path) -> None:
"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",
]
assert_equal(
"progress_delta_ledger.delta_ids",
@@ -1564,6 +1565,33 @@ def validate(root: Path) -> None:
iwooos_projection["summary"]["immediate_visual_mesh_runtime_gate_count"],
0,
)
assert_true(
"iwooos_projection.summary.gate_radar_first_layer",
iwooos_projection["summary"]["gate_radar_first_layer"],
)
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"],
@@ -11929,6 +11957,56 @@ def validate(root: Path) -> None:
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,
@@ -12150,6 +12228,76 @@ def validate(root: Path) -> None:
"iwooos_projection.immediate_visual_mesh_nodes.runtimeGate.scan_authorized",
runtime_gate_mesh_node["scan_authorized"],
)
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],
[86, 61, 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",
@@ -12396,6 +12544,92 @@ def validate(root: Path) -> None:
list(web_messages_en["iwooos"]["immediateVisualMesh"]["nodes"][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,