3 min read

Repository configuration

Table of Contents

Norn stores shared review behavior in .norn.yaml at the repository root. Commit this file so reviewers and automation use the same policy.

Create and validate config

Generate a configuration proposal from repository evidence:

norn init --quick --repo-path . --dry-run
norn init --quick --repo-path . --yes

Use guided mode when you want stricter proposed defaults:

norn init --guided --repo-path .

Validate the effective configuration without running a review:

norn config validate --repo-path .
norn config validate --repo-path . --format json

Minimal example

version: 0.1

review:
  mode: balanced
  findings:
    minSeverity: medium
    requireAnchors: true

paths:
  include:
    - "src/**"
  exclude:
    - "dist/**"
    - "**/*.snap"

publish:
  defaultMode: inline
  requireManualSubmit: true
  allowGeneralComments: true

Review modes are fast, balanced, and strict. Finding severities are info, low, medium, high, and critical.

Prompts and profiles

Extend the built-in prompt without replacing its output contract:

review:
  prompt:
    extend: |
      Pay special attention to database migrations and rollback safety.

Profiles let one repository expose named review modes:

profiles:
  frontend-strict:
    mode: strict
    minSeverity: medium
    prompt:
      extend: |
        Check async UI states and persisted filters.
    analyzers:
      typecheck: required
      tests: optional

Select a profile with --profile frontend-strict or set review.profile as the repository default.

Config precedence

Norn resolves behavior from lowest to highest precedence:

  1. built-in defaults;
  2. local app settings;
  3. .norn.yaml or the .norn/ directory;
  4. untracked .norn.local.yaml overrides;
  5. explicit session or command overrides.

Arrays are replaced by later layers. Secrets are never accepted in repository configuration.

Directory form and local overrides

When .norn.yaml is absent, .norn/ may provide a prompt file and local policy packs. Do not create both forms at once.

Use .norn.local.yaml only for non-secret, machine-specific overrides. It must remain untracked and covered by a Git ignore rule.

Legacy .lachesi* names are migration-only. Preview a bounded migration with:

norn config migrate --repo-path . --dry-run --format json