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

After the marker files exist, repo-trust reads the first 131072 bytes (128 KiB) of README.md and requires /\b(?:RuView|wifi[- ]densepose)\b/i to match, proving the checkout self-identifies as a RuView project. A README without those tokens anywhere in the prefix fails the trust check.

Source

Thrown at harness/homecore/src/repo-trust.js:79

}

export function assertTrustedHomecoreRepo(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) {
    throw new Error(`Refusing CLI access: Homecore repository markers are missing (${missing.join(', ')})`);
  }
  const readme = readContainedPrefix(root, join(root, 'README.md'), 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

  1. Run against a genuine RuView checkout
  2. Ensure README.md contains the literal token 'RuView' (or 'wifi-densepose') near the top
  3. If the README is huge, add the project name to the first heading so it lands inside the 128 KiB prefix

Example fix

# before
# README.md
# My Custom Fork — sensor tooling   (never names the project)

# after
# README.md
# RuView fork — camera-free RF perception
Defensive patterns

Strategy: validation

Validate before calling

import { readFileSync } from 'node:fs';
import { join } from 'node:path';
function identifiesRuView(root) {
  try {
    const prefix = readFileSync(join(root, 'README.md')).subarray(0, 131_072).toString('utf8');
    return /\b(?:RuView|wifi[- ]densepose)\b/i.test(prefix);
  } catch {
    return false;
  }
}

Prevention

When it happens

Trigger: Pointing --repo at a different repository whose README never says RuView or wifi-densepose/wifi densepose, an emptied or rewritten README, or a very long README whose identifying words appear only after the first 128 KiB.

Common situations: Renamed forks, template or generated READMEs replacing the original, pointing at the wrong clone in a multi-repo workspace.

Related errors


AI-assisted analysis of ruvnet/RuView@4685618388 (2026-08-16). Data as JSON: /api/errors/7f0abdda8efb0c6e. Report an issue: GitHub.