feat(web): add IwoooS operator journey

This commit is contained in:
Your Name
2026-05-19 20:40:31 +08:00
parent 9de8469e8f
commit e5a444ed9c
11 changed files with 389 additions and 5 deletions

View File

@@ -163,6 +163,7 @@ def validate(root: Path) -> None:
"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",
]
assert_equal(
"progress_delta_ledger.delta_ids",
@@ -314,6 +315,14 @@ def validate(root: Path) -> None:
"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",
]
assert_equal(
"iwooos_projection.summary.frontend_surface_coverage_group_count",
iwooos_projection["summary"]["frontend_surface_coverage_group_count"],
@@ -324,6 +333,11 @@ def validate(root: Path) -> None:
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),
)
iwooos_progress = iwooos_projection["progress"]
assert_equal("iwooos_projection.progress.overall_percent", iwooos_progress["overall_percent"], progress["overall_percent"])
assert_equal(
@@ -458,6 +472,35 @@ def validate(root: Path) -> None:
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"],
)
assert_equal(
"iwooos_projection.non_blocking_lane_ids",
iwooos_projection["non_blocking_lane_ids"],
@@ -478,6 +521,7 @@ def validate(root: Path) -> None:
"display_existing_frontend_security_surfaces",
"display_frontend_surface_coverage_matrix",
"display_frontend_surface_conflict_controls",
"display_operator_journey_steps",
"display_evidence_refs",
"display_forbidden_actions",
]: