fix(reboot): mark redacted vmx package display-only
All checks were successful
CD Pipeline / workflow-shape (push) Successful in 1s
CD Pipeline / cancel-stale-cd (push) Has been skipped
CD Pipeline / tests (push) Successful in 2m15s
CD Pipeline / build-and-deploy (push) Successful in 4m55s
CD Pipeline / post-deploy-checks (push) Successful in 1m48s

This commit is contained in:
Your Name
2026-07-03 11:34:23 +08:00
parent b207615c5d
commit 23ea6df467
8 changed files with 105 additions and 7 deletions

View File

@@ -485,6 +485,7 @@ from src.services.telegram_alert_monitoring_live_receipt_apply import (
)
from src.services.windows99_vmx_source_repair_package import (
load_latest_windows99_vmx_source_repair_package,
mark_windows99_vmx_source_repair_public_redaction_boundary,
)
router = APIRouter(prefix="/agents", tags=["Agent Teams"])
@@ -1521,7 +1522,10 @@ async def get_reboot_auto_recovery_slo_scorecard() -> dict[str, Any]:
load_latest_stockplatform_public_api_runtime_readback
)
apply_stockplatform_runtime_readback(payload, stockplatform_runtime)
return redact_public_lan_topology(payload)
redacted_payload = redact_public_lan_topology(payload)
return mark_windows99_vmx_source_repair_public_redaction_boundary(
redacted_payload
)
except FileNotFoundError as exc:
raise HTTPException(
status_code=status.HTTP_404_NOT_FOUND,
@@ -1552,7 +1556,10 @@ async def get_windows99_vmx_source_repair_package() -> dict[str, Any]:
payload = await asyncio.to_thread(
load_latest_windows99_vmx_source_repair_package
)
return redact_public_lan_topology(payload)
redacted_payload = redact_public_lan_topology(payload)
return mark_windows99_vmx_source_repair_public_redaction_boundary(
redacted_payload
)
except FileNotFoundError as exc:
raise HTTPException(
status_code=status.HTTP_404_NOT_FOUND,

View File

@@ -47,6 +47,53 @@ def _with_ui_counts(
return payload
def _mark_package_public_redaction_boundary(
package: dict[str, Any],
) -> dict[str, Any]:
payload = dict(package)
payload["public_lan_topology_redacted"] = True
payload["redacted_public_display_only"] = True
payload["check_mode_probe_commands_executable"] = False
payload["internal_console_package_required_for_execution"] = True
payload["public_execution_note"] = (
"public_endpoint_redacts_lan_like_vmx_path_segments_use_authorized_"
"internal_console_package_before_executing_probe_commands"
)
vm_rows = payload.get("vm_rows")
if isinstance(vm_rows, list):
redacted_rows: list[Any] = []
for row in vm_rows:
if isinstance(row, dict):
redacted_row = dict(row)
redacted_row["public_lan_topology_redacted"] = True
redacted_row["check_mode_probe_commands_executable"] = False
redacted_rows.append(redacted_row)
else:
redacted_rows.append(row)
payload["vm_rows"] = redacted_rows
return payload
def mark_windows99_vmx_source_repair_public_redaction_boundary(
payload: dict[str, Any],
) -> dict[str, Any]:
"""Mark public-redacted VMX package fields as display-only evidence."""
if payload.get("schema_version") == (
"windows99_vmx_source_repair_check_mode_package_v1"
):
return _mark_package_public_redaction_boundary(payload)
package = payload.get("windows99_vmx_source_repair_package")
if isinstance(package, dict):
redacted_payload = dict(payload)
redacted_payload["windows99_vmx_source_repair_package"] = (
_mark_package_public_redaction_boundary(package)
)
return redacted_payload
return payload
def _alias_lists_match(package: dict[str, Any], windows99: dict[str, Any]) -> bool:
return _strings(package.get("missing_vmx_aliases")) == _strings(
windows99.get("missing_vmx_aliases")

View File

@@ -1013,6 +1013,16 @@ def test_reboot_auto_recovery_slo_scorecard_endpoint_returns_readback(monkeypatc
assert response.status_code == 200
payload = response.json()
_assert_reboot_slo_payload(payload)
package = payload["windows99_vmx_source_repair_package"]
assert package["public_lan_topology_redacted"] is True
assert package["redacted_public_display_only"] is True
assert package["check_mode_probe_commands_executable"] is False
assert package["internal_console_package_required_for_execution"] is True
assert "192.168.0." not in response.text
assert "host:dev-a_Ubuntu_64-bit" in response.text
vm_rows = {row["alias"]: row for row in package["vm_rows"]}
assert vm_rows["111"]["public_lan_topology_redacted"] is True
assert vm_rows["111"]["check_mode_probe_commands_executable"] is False
service_data_backup = payload["controlled_service_data_backup_readback"]
assert service_data_backup["gitea_repo_bundle_backup_ready"] is True
assert service_data_backup["gitea_repo_bundle_expected_repo_count"] == 12

View File

@@ -86,4 +86,13 @@ def test_windows99_vmx_source_repair_package_endpoint_returns_readback(
"check_mode_package_only_no_windows_or_vm_write"
)
assert payload["apply_allowed_by_this_package"] is False
assert payload["public_lan_topology_redacted"] is True
assert payload["redacted_public_display_only"] is True
assert payload["check_mode_probe_commands_executable"] is False
assert payload["internal_console_package_required_for_execution"] is True
assert "192.168.0." not in response.text
assert "host:dev-a_Ubuntu_64-bit" in response.text
vm_rows = {row["alias"]: row for row in payload["vm_rows"]}
assert vm_rows["111"]["public_lan_topology_redacted"] is True
assert vm_rows["111"]["check_mode_probe_commands_executable"] is False
assert payload["operation_boundaries"]["host_reboot_performed"] is False