ruvnet/RuView · error · Error
Refusing CLI access: README does not identify a RuView check
Error message
Refusing CLI access: README does not identify a RuView checkout
What it means
The final repo-trust check reads the first 131072 bytes (128 KiB) of README.md and requires the case-insensitive word-boundary regex /\b(?:RuView|wifi[- ]densepose)\b/ to match. A README that never says 'RuView' or 'wifi densepose' as a standalone word, or only says it past 128 KiB, fails the gate.
Source
Thrown at harness/ruview/src/repo-trust.js:21
import { isAbsolute, join, relative } from 'node:path';
const REQUIRED_MARKERS = ['.git', 'README.md', 'v2'];
const RUVIEW_MARKERS = ['firmware', 'wifi_densepose'];
function isWithin(parent, child) {
const rel = relative(parent, child);
return rel === '' || (!rel.startsWith('..') && !isAbsolute(rel));
}
export function assertTrustedRuViewRepo(repoRoot, { trustedRoot = repoRoot } = {}) {
if (!repoRoot || !trustedRoot) throw new TypeError('repoRoot and trustedRoot are required');
const root = realpathSync(repoRoot);
const trustAnchor = realpathSync(trustedRoot);
if (!isWithin(trustAnchor, root) || root !== trustAnchor) throw new Error('Refusing CLI access: repository does not match the configured trusted root');
if (!statSync(root).isDirectory()) throw new Error('Refusing CLI access: trusted root is not a directory');
const missing = REQUIRED_MARKERS.filter((marker) => !existsSync(join(root, marker)));
if (missing.length || !RUVIEW_MARKERS.some((marker) => existsSync(join(root, marker)))) {
throw new Error(`Refusing CLI access: RuView repository markers are missing${missing.length ? ` (${missing.join(', ')})` : ''}`);
}
const readme = readFileSync(join(root, 'README.md'), 'utf8').slice(0, 131_072);
if (!/\b(?:RuView|wifi[- ]densepose)\b/i.test(readme)) throw new Error('Refusing CLI access: README does not identify a RuView checkout');
return root;
}
View on GitHub (pinned to 4685618388)
Solutions
- Ensure README.md mentions 'RuView' (or 'wifi densepose'/'wifi-densepose') as a standalone word within its first 128 KiB.
- If you maintain a fork, add one line early in the README: 'Fork of RuView (WiFi-DensePose)'.
- Verify locally: head -c 131072 README.md | grep -icE '\b(RuView|wifi[- ]densepose)\b' should print >= 1.
Example fix
# before (README.md of your vendored copy starts with 'MyProduct docs...') # after — add near the top of README.md: # MyProduct — a fork of RuView (WiFi-DensePose).
Defensive patterns
Strategy: validation
Validate before calling
import { readFileSync } from 'node:fs';
const head = readFileSync(join(repoRoot, 'README.md'), 'utf8').slice(0, 131072);
if (!/\b(?:RuView|wifi[- ]densepose)\b/i.test(head)) {
throw new Error('README does not identify a RuView checkout within the first 128 KiB');
} Try / catch
try {
await runCodex({ prompt, repoRoot });
} catch (e) {
if (e instanceof Error && e.message.includes('README does not identify')) {
throw new Error('trust gate: keep a standalone "RuView" or "wifi densepose" mention in the first 128 KiB of README.md');
}
throw e;
} Prevention
- Keep the project identity word ('RuView') near the top of README.md.
- In forks, add a one-line 'Fork of RuView (WiFi-DensePose)' statement early.
- After big README rewrites, run the 128 KiB regex check in CI.
When it happens
Trigger: A vendored/forked copy whose README was rebranded or replaced; the identity words appearing only beyond the first 128 KiB of a very long README; the words glued into a larger token (e.g. 'RuViewProject') so the \b boundary never matches.
Common situations: Rebranding the README without keeping the project identity; template READMEs that lead with badges/changelog for hundreds of KiB; downstream forks renaming the product everywhere.
Related errors
- Refusing CLI access: repository does not match the configure
- Refusing CLI access: RuView repository markers are missing${
- Refusing CLI access: repository marker escapes the trusted r
- Refusing CLI access: README marker is not a regular file
- Refusing CLI access: repository does not match the configure
AI-assisted analysis of ruvnet/RuView@4685618388 (2026-08-16).
Data as JSON: /api/errors/a8556916c50fdd28.
Report an issue: GitHub.