ruvnet/RuView · error · Error

Refusing CLI access: Homecore repository markers are missing

Error message

Refusing CLI access: Homecore repository markers are missing (${missing.join(', ')})

What it means

Homecore verifies the trusted root contains every entry of REQUIRED_MARKERS: .git, README.md, v2/Cargo.toml, v2/crates/homecore/Cargo.toml, v2/crates/homecore-server/Cargo.toml, and docs/adr/ADR-126-ruview-native-ha-port-master.md. The error message enumerates exactly which markers are missing so the gap is immediately visible.

Source

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

    const parent = dirname(current);
    if (parent === current) return null;
    current = parent;
  }
}

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. Clone the full repository with git clone instead of using an archive
  2. Restore the missing markers if the layout legitimately moved (git init for .git, reinstate the ADR file)
  3. Run the command from the actual repository root

Example fix

# before
$ tar xf RuView-main.tar.gz && cd RuView-main && homecore doctor --repo .   # no .git marker

# after
$ git clone https://github.com/ruvnet/RuView && cd RuView && homecore doctor --repo .
Defensive patterns

Strategy: validation

Validate before calling

import { existsSync } from 'node:fs';
import { join } from 'node:path';
const REQUIRED_MARKERS = ['.git', 'README.md', 'v2/Cargo.toml', 'v2/crates/homecore/Cargo.toml', 'v2/crates/homecore-server/Cargo.toml', 'docs/adr/ADR-126-ruview-native-ha-port-master.md'];
function missingMarkers(root) {
  return REQUIRED_MARKERS.filter((m) => !existsSync(join(root, m)));
}

Prevention

When it happens

Trigger: Running the CLI against an exported source archive without .git, a sparse or partial checkout missing docs/, a fork that moved v2/ or the ADR file, or a non-RuView directory that merely contains a README.md.

Common situations: Downloaded tarballs from GitHub (no .git), shallow CI clones excluding docs, directory restructures across harness versions, running from a parent directory holding several projects.

Related errors


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