Skip to main content

Configuration

All configuration lives in .ovecc/config.toml in the analyzed repository. Every key is optional; ovecc init writes a fully commented template where the commented values are the defaults.

The template

# ovecc configuration - every key is optional; commented values are the defaults.
# Machine-readable reference: `ovecc capabilities`.

[output]
# text | json | ndjson | markdown (sarif / codeclimate via --format)
# default_format = "text"

[index]
# Extra paths to skip, on top of the built-ins (node_modules, target, dist, .venv, ...).
# exclude = ["vendored"]
# Flag manifest dependencies that no indexed file imports (off by default:
# config-only usages cause false positives).
# detect_unused_deps = true

# --- governance: declarative architecture rules, enforced at index time ---
# [[rules.boundaries]]
# name = "billing must not depend on user"
# source = "billing"
# target = "user"
# allowed = false
# severity = "high"

# [[rules.banned_imports]]
# name = "no-deprecated-lodash"
# pattern = "lodash"
# message = "use es-toolkit instead"
# severity = "medium"

# --- architecture diagnosis thresholds ---
# [diagnose]
# min_confidence = 0.5

[output]

KeyDefaultEffect
default_format"text"Format used when --format isn't passed: text, json, ndjson, or markdown (sarif/codeclimate remain flag-only)

[index]

KeyDefaultEffect
exclude[]Extra globs to skip, on top of the built-ins (node_modules, target, dist, .venv, …). The --exclude flag adds to this per run
detect_unused_depsfalseReport manifest dependencies no indexed file imports (unused-dependency, unused-dev-dependency, unused-optional-dependency). Off by default because config-only usages (tools loaded by name from a config file) cause false positives

[[rules.boundaries]]

Forbid (or document as allowed) a module-to-module dependency. Evaluated at index time; violations surface as CrossDomainDependency findings under your rule's name.

KeyRequiredMeaning
nameyesHuman name — becomes the finding's rule label
sourceyesModule the dependency originates from
targetyesModule being depended on
allowedyesfalse forbids the edge
severityyeslow / medium / high / critical

Modules are inferred from directory structure — check yours with ovecc export graph or ovecc query "module <name>".

[[rules.banned_imports]]

Ban imports by specifier pattern.

KeyRequiredMeaning
nameyesRule label (findings read banned-import/<name>)
patternyesexact, prefix*, *suffix, or *infix* — matched against the import specifier, so lodash* catches lodash/groupBy too
messagenoGuidance shown with the finding
severityyeslow / medium / high / critical

[diagnose]

KeyDefaultEffect
min_confidence0.5Findings below this deterministic confidence are dropped from diagnose

Versioning the config

ovecc init git-ignores the whole .ovecc/ directory. To share rules with your team, switch the entry to ignore the directory's contents and re-include the config (Git cannot re-include files under a fully ignored directory):

# ovecc local state (database + parse cache)
.ovecc/*
!.ovecc/config.toml
  • Governance guide — boundaries, banned imports, suppressions, and the baseline ratchet in practice
  • capabilities — the machine-readable version of everything configurable