feat(web): add IwoooS AwoooP landing readiness

This commit is contained in:
Your Name
2026-05-20 14:19:16 +08:00
parent 4d9d44e6d3
commit a957adde4b
11 changed files with 518 additions and 9 deletions

View File

@@ -202,6 +202,7 @@ def validate(root: Path) -> None:
"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",
]
assert_equal(
"progress_delta_ledger.delta_ids",
@@ -885,6 +886,89 @@ def validate(root: Path) -> None:
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",
"pending_production_consumption",
],
)
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:
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"],
0,
)
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"],
)
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_progress_hold_movement_gate_ids = [
"progress_hold_owner_response_accepted",
"progress_hold_redacted_payload_ingested",
@@ -4332,6 +4416,7 @@ def validate(root: Path) -> None:
for output in [
"display_security_posture",
"display_progress_estimate",
"display_awooop_read_only_landing_readiness",
"display_progress_hold_movement_gates",
"display_progress_acceleration_lanes",
"display_owner_response_next_action_focus",
@@ -4530,6 +4615,12 @@ def validate(root: Path) -> None:
"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_progress_hold_gate_as_percent_increase",
"increase_headline_without_gate_evidence",
"mark_owner_response_received_from_hold_gate",