- Applies to
runtime/**. - Start from the requested Runtime package or the consumer that produced the observed failure. Follow a concrete task question, trace, contract, or changed dependency into other Runtime packages.
- Keep Runtime self-contained: no imports from
sdks/**orapps/**. - Preserve Go rules: constructor injection, no global mutable state,
fmt.Errorf("op: %w", err), nolog.Println. - Treat
runtime/gen/**andruntime/internal/providerregistry/generated.goas generated read-only outputs. - Connector/provider authority lives in
.nimi/spec/runtime/{ai-provider,model-catalog}.authority.yaml; catalog sources and generated snapshots are support projections, not parallel truth. - Do not patch runtime gaps with desktop or SDK hardcodes.
- Read the affected package and its direct dependencies; read its exact Runtime authority when semantics or ownership are unresolved.
- Read
runtime/catalog/source/**only for catalog work; inspect generated outputs only for codegen or drift failures. - Skip unrelated Runtime packages, generated files, large fixtures, and historical evidence.
- Targeted owner loop:
cd runtime && go test ./<affected-package>/.... - For a Runtime-wide change, run
cd runtime && go test ./...; addgo vet ./...andgo build ./...only when the changed boundary requires them. - For proto or catalog changes, run only their directly affected generation and drift checks.