Skip to content

Commit ef674d8

Browse files
committed
test: align native architecture guard with current Labs runtime policy
1 parent 515a752 commit ef674d8

1 file changed

Lines changed: 40 additions & 3 deletions

File tree

tests/native_evidence_contract_test.py

Lines changed: 40 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,8 @@ def text(path: str) -> str:
1919
provider_loading = text("scripts/augment_native_provider_loading.py")
2020
repository_http = text("scripts/instrument_native_repository_http_evidence.py")
2121
resolver = text("scripts/resolve_native_repository.sh")
22+
client_head_resolver = text("scripts/resolve_nuvio_lab_heads.py")
23+
reader_runtime_scope = text("scripts/scope_native_reader_learning_runtime.py")
2224
android_player = text("scripts/native_player_diagnostics_codegen.py")
2325
desktop_player = text("scripts/augment_native_desktop_player.py")
2426
android_transport = text("scripts/configure_native_android_lab_transport.py")
@@ -31,6 +33,7 @@ def text(path: str) -> str:
3133
coverage_gate = text("scripts/gate_native_reader_coverage.cjs")
3234
android_workflow = text(".github/workflows/native-android-route-reader.yml")
3335
desktop_workflow = text(".github/workflows/native-desktop-reader-acceptance.yml")
36+
learning_sync = text(".github/workflows/native-reader-learning-sync.yml")
3437

3538
# Canonical media route traversal remains explicit; capability probes are evidence,
3639
# never permission for a Lab-side provider/player rewrite.
@@ -88,6 +91,38 @@ def text(path: str) -> str:
8891
assert forbidden not in desktop_suite, forbidden
8992
assert "root_execution_forbidden" in desktop_suite
9093

94+
# Labs resolve the latest official client branch HEAD. Accepted/contract refs remain
95+
# audit context only; an unresolved HEAD may never silently fall back to stale code.
96+
for required in (
97+
"latest official HEAD is unresolved",
98+
"refusing stale fallback",
99+
"current_head",
100+
"accepted_ref",
101+
"contract_ref",
102+
"latest-official-head-for-labs",
103+
):
104+
assert required in client_head_resolver, required
105+
for workflow in (android_workflow, desktop_workflow):
106+
assert "check_nuvio_client_upstreams.py" in workflow
107+
assert "resolve_nuvio_lab_heads.py" in workflow
108+
assert "Checkout latest official" in workflow
109+
assert "get('accepted_ref') or '')" not in android_workflow
110+
assert "get('accepted_ref') or '')" not in desktop_workflow
111+
112+
# Reader repair memory is historical but only influences the exact client revision
113+
# fingerprint that produced it. Legacy/unscoped memory is never recycled after drift.
114+
for required in (
115+
"exact-runtime-fingerprint-only",
116+
"legacyUnscopedExcluded",
117+
"runtimeFingerprint",
118+
"entry_fingerprint(row) == fingerprint",
119+
):
120+
assert required in reader_runtime_scope, required
121+
assert "scope_native_reader_learning_runtime.py filter" in android_workflow
122+
assert "sinners-cross-client-brain.json" in android_workflow
123+
assert 'needs: [resolve, tv-route-reader, mobile-route-reader]' in android_workflow
124+
assert "scope_native_reader_learning_runtime.py merge" in learning_sync
125+
91126
# Android may not gain a test-only transport capability.
92127
assert "validate_manifest" in android_transport
93128
assert "mode=production-policy" in android_transport
@@ -155,10 +190,12 @@ def text(path: str) -> str:
155190
assert required in desktop_suite, required
156191

157192
# Coverage is fail-closed and PR proof checks two returned streams; deep/manual paths
158-
# remain exhaustive.
193+
# remain exhaustive. The assertion follows semantics rather than one code spelling.
159194
assert "NIAKVIO_PR_STREAM_LIMIT" in coverage_gate
160-
assert "DEFAULT_PR_STREAM_LIMIT" in coverage_gate
161-
assert "observed !== expected" in coverage_gate
195+
assert "DEFAULT_PR_STREAM_LIMIT = 2" in coverage_gate
196+
assert "streamCoverageSatisfied" in coverage_gate
197+
assert "return observed >= expected && observed <= returned;" in coverage_gate
198+
assert "return observed === expected;" in coverage_gate
162199
for workflow in (android_workflow, desktop_workflow):
163200
assert "NIAKVIO_PRIMARY_STREAM_SCOPE: all" in workflow
164201
assert "NIAKVIO_TARGET_PROVIDER: all" in android_workflow

0 commit comments

Comments
 (0)