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.
Related
- The contract — every field this resolves
architecture diff— the contract judged against the real graphadvise— the findings touching a target, with fixes- MCP integration — the same answer as an agent tool