0.3.5-alpha.7
This commit is contained in:
@@ -1,6 +1,6 @@
|
||||
#!/usr/bin/env python3
|
||||
# file: scripts/audit_distribution_layout.py
|
||||
# version: 18
|
||||
# version: 19
|
||||
|
||||
"""Audit the static distribution layout expected by supported POCs."""
|
||||
|
||||
@@ -25,6 +25,9 @@ FORBIDDEN_PATHS = (
|
||||
|
||||
REQUIRED_PATHS = (
|
||||
"crates/apps/game-realtime-websocket-smoke/Cargo.toml",
|
||||
"crates/apps/game-realtime-webtransport-browser-smoke/Cargo.toml",
|
||||
"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",
|
||||
"crates/apps/game-snake-poc-desktop/Cargo.toml",
|
||||
"crates/apps/game-reflex-poc-tauri/Cargo.toml",
|
||||
@@ -55,6 +58,11 @@ REQUIRED_PATHS = (
|
||||
"crates/apps/game-snake-poc-tauri/frontend/ts/lifecycle.ts",
|
||||
"crates/apps/game-snake-poc-tauri/frontend/ts/main.ts",
|
||||
"crates/apps/game-snake-poc-tauri/frontend/ts/provenance.ts",
|
||||
"Web/game-realtime-webtransport-browser-smoke/package.json",
|
||||
"Web/game-realtime-webtransport-browser-smoke/tsconfig.json",
|
||||
"Web/game-realtime-webtransport-browser-smoke/vite.config.ts",
|
||||
"Web/game-realtime-webtransport-browser-smoke/frontend/main.html",
|
||||
"Web/game-realtime-webtransport-browser-smoke/frontend/ts/main.ts",
|
||||
"Web/game-snake-poc/package.json",
|
||||
"Web/game-snake-poc/tsconfig.json",
|
||||
"Web/game-snake-poc/vite.config.ts",
|
||||
@@ -312,6 +320,39 @@ def audit_snake_tauri_generated_android(root: pathlib.Path) -> list[str]:
|
||||
|
||||
|
||||
|
||||
|
||||
def audit_webtransport_browser_smoke(root: pathlib.Path) -> list[str]:
|
||||
"""Validate the technical real-browser WebTransport smoke boundary."""
|
||||
|
||||
violations: list[str] = []
|
||||
package_path = root / "Web/game-realtime-webtransport-browser-smoke/package.json"
|
||||
vite_path = root / "Web/game-realtime-webtransport-browser-smoke/vite.config.ts"
|
||||
main_path = root / "Web/game-realtime-webtransport-browser-smoke/frontend/ts/main.ts"
|
||||
rust_manifest_path = root / "crates/apps/game-realtime-webtransport-browser-smoke/Cargo.toml"
|
||||
rust_main_path = root / "crates/apps/game-realtime-webtransport-browser-smoke/src/main.rs"
|
||||
if not all(path.exists() for path in (package_path, vite_path, main_path, rust_manifest_path, rust_main_path)):
|
||||
return violations
|
||||
package = package_path.read_text(encoding="utf-8")
|
||||
vite = vite_path.read_text(encoding="utf-8")
|
||||
main = main_path.read_text(encoding="utf-8")
|
||||
rust_manifest = rust_manifest_path.read_text(encoding="utf-8")
|
||||
rust_main = rust_main_path.read_text(encoding="utf-8")
|
||||
required_fragments = (
|
||||
(package, 'cargo build -p game-realtime-webtransport-browser-smoke --lib --target wasm32-unknown-unknown', "DIST-LAYOUT-077: browser WebTransport smoke must build its Rust WASM adapter"),
|
||||
(package, 'wasm-bindgen ../../builds/sasedev-games/', "DIST-LAYOUT-078: browser WebTransport smoke bindings must be generated outside the repository"),
|
||||
(vite, 'host: "127.0.0.1"', "DIST-LAYOUT-079: browser WebTransport smoke Vite host must stay on loopback"),
|
||||
(vite, 'port: 1435,', "DIST-LAYOUT-080: browser WebTransport smoke Vite port must stay deterministic"),
|
||||
(main, 'window.isSecureContext', "DIST-LAYOUT-081: browser WebTransport smoke must verify secure-context availability"),
|
||||
(main, '"WebTransport" in window', "DIST-LAYOUT-082: browser WebTransport smoke must verify WebTransport availability"),
|
||||
(main, 'run_browser_smoke(', "DIST-LAYOUT-083: browser WebTransport smoke must execute the Rust WASM path"),
|
||||
(rust_manifest, 'game-realtime-webtransport-lib = { path = "../../common/game-realtime-webtransport-lib" }', "DIST-LAYOUT-084: browser WebTransport smoke adapter must consume the shared backend"),
|
||||
(rust_main, 'game-realtime-webtransport-browser-smoke: PASS', "DIST-LAYOUT-085: browser WebTransport smoke native peer must expose a deterministic PASS verdict"),
|
||||
)
|
||||
for content, fragment, message in required_fragments:
|
||||
if fragment not in content:
|
||||
violations.append(message)
|
||||
return violations
|
||||
|
||||
def audit_android_native_gradle(root: pathlib.Path) -> list[str]:
|
||||
"""Validate the minimum Gradle contract and multi-ABI native Rust consumers."""
|
||||
|
||||
@@ -402,6 +443,7 @@ def main() -> int:
|
||||
contract_violations.extend(audit_snake_tauri_android_integration(root))
|
||||
contract_violations.extend(audit_snake_tauri_generated_android(root))
|
||||
contract_violations.extend(audit_android_native_gradle(root))
|
||||
contract_violations.extend(audit_webtransport_browser_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