logic, security, performance, tests) that appears in sigilix.json under rules.<role>. The public-facing brand names (Metis, Argus, Iris, Eunomia) are the same specialists with the same prompts.
| Brand | Role | Domain |
|---|---|---|
| Metis | logic | Architecture, layering, dead code |
| Argus | security | Auth, input validation, secret leakage |
| Iris | performance | N+1, hot paths, big-O regressions |
| Eunomia | tests | Naming, semantics, test coverage |
Metis · Architecture
What it catches:- Circular dependencies between modules
- Layer-boundary violations (e.g., domain code importing from infrastructure)
- Interface drift between code and its tests/types
- Module cohesion issues
Argus · Security
What it catches:- Unsanitized inputs (SQL injection, XSS, SSRF, formula injection)
- Secret leakage in responses, logs, or version control
- Authentication and authorization bypasses
- Insecure regex patterns prone to ReDoS
- OWASP Top-10 patterns
Iris · Performance
What it catches:- N+1 query patterns in ORM-heavy code
- Hidden quadratic loops (especially newly inlined ones)
- Memory leaks (event listeners not removed, growing caches)
- Unbounded recursion or iteration
- Big-O regressions vs. the previous implementation
Eunomia · Semantics
What it catches:- Dead code reachable only by impossible conditions
- Naming that doesn’t describe behavior (e.g.,
handleStuffwhen the function sends an email) - Logic errors that pass type-checking (off-by-one, inverted conditions, swapped arguments)
- Missing test coverage on non-trivial branches added in the diff
- Inconsistent error handling between two functions added in the same PR
Retry + fallback policy
Each specialist runs against its primary model with one retry on transient failure (503, 429, timeout). If retries are exhausted, the cross-provider fallback fires once. If the fallback also fails, that specialist’s contribution is skipped — Harmonia synthesizes from the remaining specialists and the verdict is posted with a_3 of 4 specialists succeeded_ footnote.
The cross-provider design — primary and fallback on different infrastructure — is deliberate. Same-family fallbacks fail together when the upstream provider has an outage, defeating the fallback’s purpose.
Why these four domain specialists (and not more or fewer)?
The split was chosen empirically:- Architecture, security, performance, semantics are the four most-cited categories in code review failure-mode taxonomies.
- Adding a fifth domain specialist (e.g., a “documentation” specialist) didn’t materially improve catches — Eunomia already covers naming and stale comments.
- Reducing to three domain specialists (e.g., merging architecture and semantics) left blind spots in cross-module reasoning.
Tuning per-repo
You can’t disable individual specialists — keeping the ensemble whole is what makes the synthesis work. What you can do per-repo:- Influence what each catches via
rules.<role>insigilix.json(Rules & Guidance). - Scope the review via
pathFiltersso a specialist sees less (Path Filters & Profile). - Shift flag-worthiness via
profile: "chill" | "assertive".
Read next
Synthesizer
How Harmonia deduplicates, calibrates, and posts the final review.
Confidence Scoring
Proof-tier receipts and the grounding gate that govern what posts.

