Skip to main content

ovecc architecture show

The contract resolved, from the contract alone — no index required.

Usage: ovecc architecture show [PATHS]...

Without paths, every component. With paths, the components owning them. Each component lists what it may import (with the target's interface files as the legal doors), what it must and must not import, who may import it, its own interface, its external deny-list, whether its slices are isolated, the capabilities it denies, and any per-function budget.

This is the pre-edit question"I'm editing this file, what am I allowed to import and do?" — and what the ovecc_architecture MCP tool serves to coding agents.

Example

$ ovecc architecture show crates/ovecc-graph/src/acdc.rs
Contract mode new-violations, 1 component(s):

graph (crates/ovecc-graph/**)
may import: core

A component with more of the contract filled in reports all of it:

$ ovecc architecture show src/api/routes.ts
Contract mode new-violations, 1 component(s):

api (src/api/**)
may import: core, repository (via src/repository/index.ts)
must import (every file): auth
must not import: legacy
interface: src/api/index.ts
external deny: node-fetch, lodash*
deny capabilities: filesystem, process
budget: cyclomatic <= 10

A component nothing may import reads as the rule it is, not as a missing value:

legacy (src/legacy/**)
may import: nothing (no depends_on declared)
importable by: nothing (no component may import it)

Why no index

The contract is a file, and the question "what may this component import?" is answered by reading it. Requiring an index would mean an agent could not ask before the first ovecc index — and the answer would go stale the moment the contract was edited without re-indexing. Reading the contract fresh on every run avoids both.

Options

Only the global options.