0.3.5-alpha.9
This commit is contained in:
@@ -1,6 +1,6 @@
|
||||
#!/usr/bin/env python3
|
||||
# file: scripts/audit_distribution_layout.py
|
||||
# version: 22
|
||||
# version: 23
|
||||
|
||||
"""Audit the static distribution layout expected by supported POCs."""
|
||||
|
||||
@@ -29,6 +29,9 @@ REQUIRED_PATHS = (
|
||||
"crates/apps/game-realtime-transport-fallback-smoke/unit_tests/fallback.rs",
|
||||
"crates/apps/game-realtime-websocket-smoke/Cargo.toml",
|
||||
"crates/apps/game-realtime-webtransport-browser-smoke/Cargo.toml",
|
||||
"crates/apps/game-realtime-webtransport-datagram-smoke/Cargo.toml",
|
||||
"crates/apps/game-realtime-webtransport-datagram-smoke/src/main.rs",
|
||||
"crates/common/game-realtime-webtransport-lib/tests/datagrams.rs",
|
||||
"crates/apps/game-realtime-webtransport-browser-smoke/src/lib.rs",
|
||||
"crates/apps/game-realtime-webtransport-browser-smoke/src/main.rs",
|
||||
"crates/apps/game-reflex-poc-desktop/Cargo.toml",
|
||||
@@ -392,6 +395,44 @@ def audit_realtime_fallback_smoke(root: pathlib.Path) -> list[str]:
|
||||
violations.append(f"DIST-LAYOUT-092: fallback smoke must not depend on engine/gameplay package: {fragment}")
|
||||
return violations
|
||||
|
||||
|
||||
def audit_webtransport_datagram_smoke(root: pathlib.Path) -> list[str]:
|
||||
"""Validate the isolated backend-specific WebTransport datagram proof."""
|
||||
|
||||
violations: list[str] = []
|
||||
manifest_path = root / "crates/apps/game-realtime-webtransport-datagram-smoke/Cargo.toml"
|
||||
main_path = root / "crates/apps/game-realtime-webtransport-datagram-smoke/src/main.rs"
|
||||
native_path = root / "crates/common/game-realtime-webtransport-lib/src/webtransport.rs"
|
||||
wasm_path = root / "crates/common/game-realtime-webtransport-lib/src/webtransport_wasm.rs"
|
||||
common_path = root / "crates/common/game-realtime-transport-lib/src/lib.rs"
|
||||
required = (manifest_path, main_path, native_path, wasm_path, common_path)
|
||||
if not all(path.exists() for path in required):
|
||||
return violations
|
||||
manifest = manifest_path.read_text(encoding="utf-8")
|
||||
main = main_path.read_text(encoding="utf-8")
|
||||
native = native_path.read_text(encoding="utf-8")
|
||||
wasm = wasm_path.read_text(encoding="utf-8")
|
||||
common = common_path.read_text(encoding="utf-8")
|
||||
required_fragments = (
|
||||
(manifest, 'game-realtime-webtransport-lib = { path = "../../common/game-realtime-webtransport-lib" }', "DIST-LAYOUT-093: datagram smoke must consume the WebTransport backend directly"),
|
||||
(main, 'max_datagram_size()', "DIST-LAYOUT-094: datagram smoke must inspect the negotiated backend payload bound"),
|
||||
(main, 'send_datagram(', "DIST-LAYOUT-095: datagram smoke must send backend-specific datagrams"),
|
||||
(main, 'receive_datagram()', "DIST-LAYOUT-096: datagram smoke must receive backend-specific datagrams"),
|
||||
(main, 'game-realtime-webtransport-datagram-smoke: PASS', "DIST-LAYOUT-097: datagram smoke must expose a deterministic PASS verdict"),
|
||||
(native, 'pub fn send_datagram(&self, payload: &[u8])', "DIST-LAYOUT-098: native WebTransport session must own the backend-specific datagram send capability"),
|
||||
(wasm, 'pub async fn send_datagram(&self, payload: &[u8])', "DIST-LAYOUT-099: browser WebTransport session must expose the backend-specific datagram send capability"),
|
||||
)
|
||||
for content, fragment, message in required_fragments:
|
||||
if fragment not in content:
|
||||
violations.append(message)
|
||||
if "datagram" in common.lower():
|
||||
violations.append("DIST-LAYOUT-100: transport-neutral realtime contract must remain free of datagram semantics")
|
||||
for fragment in ("engine-v1-", "game-reflex-poc", "game-snake-poc"):
|
||||
if fragment in manifest:
|
||||
violations.append(f"DIST-LAYOUT-101: datagram smoke must not depend on engine/gameplay package: {fragment}")
|
||||
return violations
|
||||
|
||||
|
||||
def audit_android_native_gradle(root: pathlib.Path) -> list[str]:
|
||||
"""Validate the minimum Gradle contract and multi-ABI native Rust consumers."""
|
||||
|
||||
@@ -484,6 +525,7 @@ def main() -> int:
|
||||
contract_violations.extend(audit_android_native_gradle(root))
|
||||
contract_violations.extend(audit_realtime_fallback_smoke(root))
|
||||
contract_violations.extend(audit_webtransport_browser_smoke(root))
|
||||
contract_violations.extend(audit_webtransport_datagram_smoke(root))
|
||||
if missing:
|
||||
for relative in missing:
|
||||
print(f"DIST-LAYOUT-001: missing required path: {relative}", file=sys.stderr)
|
||||
|
||||
Reference in New Issue
Block a user