mirror of
https://github.com/ruvnet/RuView.git
synced 2026-09-01 13:07:25 +00:00
fix(nlos): tighten evidence gates and stream replay
This commit is contained in:
@@ -55,6 +55,9 @@ describe('NLOSScreen', () => {
|
||||
render(<ThemeProvider><NLOSScreen /></ThemeProvider>);
|
||||
expect(screen.getByText('RuView NLOS')).toBeTruthy();
|
||||
expect(screen.getByText(/does not access raw iPhone LiDAR timing data/)).toBeTruthy();
|
||||
expect(screen.getByTestId('nlos-maturity-boundary')).toBeTruthy();
|
||||
expect(screen.getByText(/Physical VL53L8CH reproduction at 27 fps or better/)).toBeTruthy();
|
||||
expect(screen.getByText(/Measured CSI fusion improvement of at least 25 percent/)).toBeTruthy();
|
||||
});
|
||||
|
||||
it('always watermarks synthetic replay', () => {
|
||||
|
||||
@@ -21,6 +21,7 @@ class MockSocket {
|
||||
|
||||
const NOW = 1_700_000_000_100;
|
||||
const BEARER_TOKEN = 'e'.repeat(32);
|
||||
const activeServices = new Set<NlosService>();
|
||||
|
||||
const createHarness = () => {
|
||||
const socket = new MockSocket();
|
||||
@@ -42,7 +43,9 @@ const createHarness = () => {
|
||||
setTimeout: globalThis.setTimeout.bind(globalThis),
|
||||
clearTimeout: globalThis.clearTimeout.bind(globalThis),
|
||||
};
|
||||
return { service: new NlosService(dependencies), socket, fetchMock, dependencies };
|
||||
const service = new NlosService(dependencies);
|
||||
activeServices.add(service);
|
||||
return { service, socket, fetchMock, dependencies };
|
||||
};
|
||||
|
||||
const authenticate = (socket: MockSocket) => {
|
||||
@@ -57,6 +60,8 @@ const authenticate = (socket: MockSocket) => {
|
||||
|
||||
describe('NlosService', () => {
|
||||
afterEach(() => {
|
||||
for (const service of activeServices) service.disconnect();
|
||||
activeServices.clear();
|
||||
configureNlosBearerToken(null);
|
||||
});
|
||||
|
||||
|
||||
@@ -81,6 +81,19 @@ export const NLOSScreen = () => {
|
||||
</ThemedText>
|
||||
</View>
|
||||
|
||||
<View testID="nlos-maturity-boundary" style={styles.maturityCard}>
|
||||
<ThemedText preset="labelMd" style={{ color: colors.accent }}>SOFTWARE PREVIEW</ThemedText>
|
||||
<ThemedText preset="bodySm">
|
||||
The software path is implemented and locally validated. Research readiness remains blocked on:
|
||||
</ThemedText>
|
||||
<ThemedText preset="bodySm" color="textSecondary">OPEN · macOS native compilation</ThemedText>
|
||||
<ThemedText preset="bodySm" color="textSecondary">OPEN · Physical VL53L8CH reproduction at 27 fps or better</ThemedText>
|
||||
<ThemedText preset="bodySm" color="textSecondary">OPEN · Measured CSI fusion improvement of at least 25 percent</ThemedText>
|
||||
<ThemedText preset="bodySm" color="textSecondary">
|
||||
Builds, simulators, and synthetic replay do not close hardware or measured-fusion evidence gates.
|
||||
</ThemedText>
|
||||
</View>
|
||||
|
||||
<ProvenancePanel frame={frame} freshness={freshness} streamStatus={streamStatus} />
|
||||
|
||||
<View style={styles.visualizationCard}>
|
||||
@@ -194,6 +207,14 @@ const styles = StyleSheet.create({
|
||||
borderRadius: 10,
|
||||
padding: spacing.md,
|
||||
},
|
||||
maturityCard: {
|
||||
backgroundColor: colors.surface,
|
||||
borderColor: colors.accentDim,
|
||||
borderWidth: 1,
|
||||
borderRadius: 12,
|
||||
padding: spacing.md,
|
||||
gap: spacing.sm,
|
||||
},
|
||||
visualizationCard: {
|
||||
position: 'relative',
|
||||
overflow: 'hidden',
|
||||
|
||||
Reference in New Issue
Block a user