fix(web): add IwoooS S4.9 request draft package
Some checks failed
CD Pipeline / tests (push) Successful in 1m22s
Code Review / ai-code-review (push) Successful in 13s
CD Pipeline / build-and-deploy (push) Successful in 4m28s
CD Pipeline / post-deploy-checks (push) Has been cancelled

This commit is contained in:
Your Name
2026-06-01 19:34:31 +08:00
parent e837cceb30
commit 4de3c004ae
9 changed files with 300 additions and 7 deletions

View File

@@ -87,6 +87,7 @@ 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")
s49_request_draft = load_json(security_dir / "gitea-inventory-owner-attestation-request-draft.snapshot.json")
kali_status = load_json(security_dir / "kali-integration-status.snapshot.json")
iwooos_projection_page = (
root / "apps" / "web" / "src" / "app" / "[locale]" / "iwooos" / "page.tsx"
@@ -747,6 +748,7 @@ def validate(root: Path) -> None:
"s2_156_iwooos_first_screen_depth_map",
"s2_157_iwooos_progress_evidence_rail",
"s2_158_iwooos_evidence_unlock_queue",
"s2_159_iwooos_s49_request_draft_package",
]
assert_equal(
"progress_delta_ledger.delta_ids",
@@ -1701,6 +1703,16 @@ def validate(root: Path) -> None:
iwooos_projection["summary"]["evidence_unlock_queue_item_count"],
4,
)
assert_equal(
"iwooos_projection.summary.evidence_unlock_queue_s4_9_request_draft_template_count",
iwooos_projection["summary"]["evidence_unlock_queue_s4_9_request_draft_template_count"],
5,
)
assert_equal(
"iwooos_projection.summary.evidence_unlock_queue_s4_9_request_draft_ready_count",
iwooos_projection["summary"]["evidence_unlock_queue_s4_9_request_draft_ready_count"],
1,
)
assert_equal(
"iwooos_projection.summary.evidence_unlock_queue_request_sent_count",
iwooos_projection["summary"]["evidence_unlock_queue_request_sent_count"],
@@ -3274,6 +3286,65 @@ def validate(root: Path) -> None:
iwooos_projection["summary"]["s4_9_owner_response_request_template_count"],
len(expected_s4_9_owner_response_request_template_ids),
)
assert_equal(
"s49_request_draft.schema_version",
s49_request_draft["schema_version"],
"gitea_inventory_owner_attestation_request_draft_v1",
)
assert_equal("s49_request_draft.status", s49_request_draft["status"], "request_draft_ready_not_sent")
assert_equal("s49_request_draft.stage_id", s49_request_draft["stage_id"], "S4.9")
assert_equal("s49_request_draft.mode", s49_request_draft["mode"], "owner_request_draft_only")
assert_false("s49_request_draft.runtime_execution_authorized", s49_request_draft["runtime_execution_authorized"])
assert_true(
"s49_request_draft.summary.request_draft_package_ready",
s49_request_draft["summary"]["request_draft_package_ready"],
)
assert_equal(
"s49_request_draft.summary.request_draft_template_count",
s49_request_draft["summary"]["request_draft_template_count"],
len(expected_s4_9_owner_response_request_template_ids),
)
assert_false("s49_request_draft.summary.request_sent", s49_request_draft["summary"]["request_sent"])
assert_equal("s49_request_draft.summary.request_sent_count", s49_request_draft["summary"]["request_sent_count"], 0)
assert_equal(
"s49_request_draft.summary.owner_response_received_count",
s49_request_draft["summary"]["owner_response_received_count"],
0,
)
assert_equal(
"s49_request_draft.summary.owner_response_accepted_count",
s49_request_draft["summary"]["owner_response_accepted_count"],
0,
)
assert_equal(
"s49_request_draft.summary.owner_response_rejected_count",
s49_request_draft["summary"]["owner_response_rejected_count"],
0,
)
assert_equal(
"s49_request_draft.summary.audit_events_emitted_count",
s49_request_draft["summary"]["audit_events_emitted_count"],
0,
)
assert_false("s49_request_draft.summary.runtime_gate_opened", s49_request_draft["summary"]["runtime_gate_opened"])
assert_false("s49_request_draft.summary.action_buttons_allowed", s49_request_draft["summary"]["action_buttons_allowed"])
assert_true("s49_request_draft.summary.not_authorization", s49_request_draft["summary"]["not_authorization"])
assert_equal(
"s49_request_draft.request_draft_templates.ids",
[item["template_id"] for item in s49_request_draft["request_draft_templates"]],
expected_s4_9_owner_response_request_template_ids,
)
assert_equal(
"s49_request_draft.request_draft_templates.display_order",
[item["display_order"] for item in s49_request_draft["request_draft_templates"]],
list(range(1, len(expected_s4_9_owner_response_request_template_ids) + 1)),
)
for item in s49_request_draft["request_draft_templates"]:
assert_equal(
f"s49_request_draft.request_draft_templates.{item['template_id']}.draft_status",
item["draft_status"],
"ready_not_sent",
)
s4_9_owner_response_request_templates = iwooos_projection["s4_9_owner_response_request_templates"]
assert_equal(
"iwooos_projection.s4_9_owner_response_request_templates.ids",
@@ -12653,7 +12724,7 @@ def validate(root: Path) -> None:
assert_equal("iwooos_projection.evidence_unlock_queue_items.refTruth.gate", evidence_unlock_queue_gates["refTruth"], "S4.11")
assert_equal("iwooos_projection.evidence_unlock_queue_items.workflowSecrets.gate", evidence_unlock_queue_gates["workflowSecrets"], "S4.12")
evidence_unlock_queue_values = {item["item_id"]: item["value"] for item in evidence_unlock_queue_items}
assert_equal("iwooos_projection.evidence_unlock_queue_items.giteaOwner.value", evidence_unlock_queue_values["giteaOwner"], "0/5")
assert_equal("iwooos_projection.evidence_unlock_queue_items.giteaOwner.value", evidence_unlock_queue_values["giteaOwner"], "草稿 5")
assert_equal("iwooos_projection.evidence_unlock_queue_items.githubTarget.value", evidence_unlock_queue_values["githubTarget"], "0/8")
assert_equal("iwooos_projection.evidence_unlock_queue_items.refTruth.value", evidence_unlock_queue_values["refTruth"], "0/5")
assert_equal("iwooos_projection.evidence_unlock_queue_items.workflowSecrets.value", evidence_unlock_queue_values["workflowSecrets"], "0/5")
@@ -12682,6 +12753,21 @@ def validate(root: Path) -> None:
f"iwooos_projection.evidence_unlock_queue_items.{item_id}.not_authorization",
item["not_authorization"],
)
gitea_owner_queue_item = next(item for item in evidence_unlock_queue_items if item["item_id"] == "giteaOwner")
assert_true(
"iwooos_projection.evidence_unlock_queue_items.giteaOwner.request_draft_package_ready",
gitea_owner_queue_item["request_draft_package_ready"],
)
assert_equal(
"iwooos_projection.evidence_unlock_queue_items.giteaOwner.request_draft_template_count",
gitea_owner_queue_item["request_draft_template_count"],
5,
)
assert_equal(
"iwooos_projection.evidence_unlock_queue_items.giteaOwner.request_draft_ready_count",
gitea_owner_queue_item["request_draft_ready_count"],
1,
)
github_target_queue_item = next(item for item in evidence_unlock_queue_items if item["item_id"] == "githubTarget")
assert_equal(
"iwooos_projection.evidence_unlock_queue_items.githubTarget.candidate_repo_count",
@@ -12821,6 +12907,8 @@ def validate(root: Path) -> None:
)
for text in [
"iwooos_evidence_unlock_queue_item_count=4",
"iwooos_evidence_unlock_queue_s4_9_request_draft_template_count=5",
"iwooos_evidence_unlock_queue_s4_9_request_draft_ready_count=1",
"iwooos_evidence_unlock_queue_request_sent_count=0",
"iwooos_evidence_unlock_queue_received_count=0",
"iwooos_evidence_unlock_queue_accepted_count=0",