← All features

Project knowledgeAvailable in v0.3.0

Impact map

When your AI changes a file, the impact map lists the related code, documents and checks to rerun. Results are ranked pin, exec, link and mention, so the gates that pin or run a changed path come first. The map is bound to HEAD and its inputs, and oah never uses a stale map silently.

When you need it

“If I change this file, what must I check again?” Without an answer, a small edit can leave a broken check or an outdated document behind, and nobody knows which checks to rerun.

How it works

  1. Run oah impact <path> or oah impact --changed-since origin/main; preflight, packet new and review also refresh the map first.
  2. Fixed rules rank results pin > exec > link > mention. pin and exec rows name the ledger gates whose CHECK or EXPECT pins or runs the path; link rows come from code, tests, workflows and wiki pages that name it; mention rows from name matches, files that change together and, with graphify, graph neighbours.
  3. A built-in SQL plugin reads migrations for tables, views, routines, triggers, indexes and GRANTs and links them to code as db_table:, db_routine: and db_grant: entities.
  4. The map is stored per worktree and bound to HEAD, the staged index, the files it reads, the gate ledgers, the config and the tool version. Any change makes it stale, and oah refreshes it or refuses with OAH_IMPACT_STALE.
  5. Before a query, oah fetches the remote's default branch read-only and keeps a second map for it; the output labels both with their commit SHAs.

Example

Ask what a file or a branch's changes affect (from Concepts).

oah impact src/app.py
oah impact --changed-since origin/main

Requirements

  • A git repository; oah init builds the first map.
  • graphify is optional and only adds mention neighbours.
  • Opt-in post-commit and post-merge hooks keep the map fresh between commands.

Limits and recovery

  • --offline, or a failed fetch, uses the last fetched default-branch commit and labels it stale.
  • A project without SQL reports db-impact: unavailable.
  • On OAH_IMPACT_STALE, fix the reason in the message, run oah impact refresh, then retry.
  • At landing, a default branch that cannot be fetched or reassessed gives OAH_LAND_IMPACT_STALE; use a remote with a URL or an absolute path.
  • Re-ranking impact results with Jev remains planned, not a shipped feature.

Original documents

Related