Task Complexity Routing (SNC)
Priority: P1 (HIGH)
Same ticket label, different engineering difficulty. Score the task, not the label, then route by tier.
Score
| Dimension |
0 |
1 |
2 |
| Spread (how far the change reaches) |
one file, one module |
several files, one module |
cross-module or cross-service |
| Novelty (new vs existing behavior) |
small edit or removal of existing behavior |
modify existing logic |
new behavior or rewrite |
| Centrality (how core the touched code is) |
peripheral code |
shared but non-core |
core domain, hot path, auth, money, trust boundary |
Sum the three, never average. Output line: SNC: S=[0-2] N=[0-2] C=[0-2] total=[n] tier=[low|medium|high].
Tiers
tier=low: total 0-2
tier=medium: total 3-4
tier=high: total 5-6
Routing
| Tier |
Autonomy |
Verification |
Review |
Approval |
model_tier |
tier=low |
autonomous |
basic: focused tests + lint |
fast code-review |
none required |
fast |
tier=medium |
guided |
TDD + self-review |
deep code-review |
plan reviewed, no HARD STOP |
standard |
tier=high |
plan-first |
TDD + independent reviewers (specialist-architecture-guard, specialist-security-reviewer when relevant) |
deep code-review |
HARD STOP before code, human approval before merge |
strong |
Rules
- Score before planning; emit
snc_tier and model_tier in every Handoff Payload.
- Label the score as inference when derived from ticket text alone; re-score after
specialist-codebase-scout reports impact radius.
- Round up on doubt. Any auth, money, trust-boundary, or hot-path touch is C=2.
- Re-score when scope grows mid-task; the tier may only rise, never fall, once work has started.
- Never downgrade a tier to skip a gate. Ticket type (bug vs feature) never sets the tier.
Red Flags
Stop and re-score when hearing or thinking: "it's just a bug fix", "one-line change", "skip the plan, it's small", "we'll review it later", "mark it low so we can merge tonight". Each is a rationalization, not a score.
Anti-Patterns
- No tier by ticket type: "bug" and "feature" say nothing about S, N, or C.
- No averaging: three 1s and one 2/0/1 both route differently only when summed.
- No silent tier: a plan or handoff without
snc_tier is incomplete.
- No high tier without named reviewers:
tier=high must list which specialists review before merge.
References
- SNC Rubric with Worked Examples
- Routing Table Detail
1---2name: common-task-complexity-routing3description: Scores a coding task on Spread, Novelty, and Centrality (SNC 0-6) and maps the tier to autonomy, verification depth, review mode, reviewers, model tier. Use when sizing a fix or feature before planning, choosing fast vs deep review, or deciding whether HARD STOP approval is required.4---5# Task Complexity Routing (SNC)67## **Priority: P1 (HIGH)**89Same ticket label, different engineering difficulty. Score the task, not the label, then route by tier.1011## Score1213| Dimension | 0 | 1 | 2 |14| --- | --- | --- | --- |15| **Spread** (how far the change reaches) | one file, one module | several files, one module | cross-module or cross-service |16| **Novelty** (new vs existing behavior) | small edit or removal of existing behavior | modify existing logic | new behavior or rewrite |17| **Centrality** (how core the touched code is) | peripheral code | shared but non-core | core domain, hot path, auth, money, trust boundary |1819Sum the three, never average. Output line: `SNC: S=[0-2] N=[0-2] C=[0-2] total=[n] tier=[low|medium|high]`.2021## Tiers2223- `tier=low`: total 0-224- `tier=medium`: total 3-425- `tier=high`: total 5-62627## Routing2829| Tier | Autonomy | Verification | Review | Approval | `model_tier` |30| --- | --- | --- | --- | --- | --- |31| `tier=low` | autonomous | basic: focused tests + lint | `fast` code-review | none required | `fast` |32| `tier=medium` | guided | TDD + self-review | `deep` code-review | plan reviewed, no HARD STOP | `standard` |33| `tier=high` | plan-first | TDD + independent reviewers (`specialist-architecture-guard`, `specialist-security-reviewer` when relevant) | `deep` code-review | **HARD STOP** before code, human approval before merge | `strong` |3435## Rules3637- Score before planning; emit `snc_tier` and `model_tier` in every Handoff Payload.38- Label the score as inference when derived from ticket text alone; re-score after `specialist-codebase-scout` reports impact radius.39- Round up on doubt. Any auth, money, trust-boundary, or hot-path touch is C=2.40- Re-score when scope grows mid-task; the tier may only rise, never fall, once work has started.41- Never downgrade a tier to skip a gate. Ticket type (bug vs feature) never sets the tier.4243## Red Flags4445Stop and re-score when hearing or thinking: "it's just a bug fix", "one-line change", "skip the plan, it's small", "we'll review it later", "mark it low so we can merge tonight". Each is a rationalization, not a score.4647## Anti-Patterns4849- **No tier by ticket type**: "bug" and "feature" say nothing about S, N, or C.50- **No averaging**: three 1s and one 2/0/1 both route differently only when summed.51- **No silent tier**: a plan or handoff without `snc_tier` is incomplete.52- **No high tier without named reviewers**: `tier=high` must list which specialists review before merge.5354## References5556- [SNC Rubric with Worked Examples](references/snc-rubric.md)57- [Routing Table Detail](references/routing-table.md)