# C1: Issue Lifecycle Framework

## Universal Review Taxonomy (URT) v5.1 - Analytics Track

**Document**: C1 - Issue Lifecycle Framework
**Version**: 1.0
**Status**: Production Ready
**Date**: 2026-01-23
**Depends On**: URT Specification v5.1

---

## Purpose

This framework defines how classified feedback spans (per URT v5.1) become trackable issues that move through resolution states. It bridges the gap between span-level classification and operational issue management, enabling businesses to:

- Track issue detection through resolution
- Aggregate related spans into actionable issues
- Prioritize based on severity, recurrence, and age
- Verify resolution through subsequent feedback
- Measure operational performance with SLAs

---

## 1. Issue State Machine

### 1.1 State Definitions

| State | Code | Definition | Entry Trigger |
|-------|------|------------|---------------|
| **DETECTED** | `DET` | New issue identified from V- span(s) | Span classified with negative valence |
| **ACKNOWLEDGED** | `ACK` | Business has seen and accepted the issue | Manual acknowledgment or auto-ack rule |
| **IN_PROGRESS** | `INP` | Resolution work has started | Work assignment or status update |
| **RESOLVED** | `RES` | Fix deployed or corrective action taken | Resolution logged with action code |
| **VERIFIED** | `VER` | Subsequent feedback confirms resolution | CR-B span or V+ span on same subcode |
| **DECLINED** | `DEC` | Closed without action (with reason) | Decline action with reason code |
| **REOPENED** | `REO` | Previously resolved issue recurred | CR-S or CR-W span after RESOLVED |

### 1.2 State Transition Diagram

```
                              ┌─────────────────────────────────────────────────────────┐
                              │                                                         │
                              │                    DECLINE REASONS                      │
                              │         ┌────────────────────────────────────┐          │
                              ▼         │                                    │          │
┌──────────┐   ack    ┌──────────┐      │      ┌──────────┐                  │          │
│          │─────────▶│          │──────┴─────▶│          │                  │          │
│ DETECTED │          │ACKNOWLEDGED│  decline  │ DECLINED │                  │          │
│   (DET)  │          │   (ACK)  │             │   (DEC)  │                  │          │
│          │◀─────────│          │             │          │                  │          │
└──────────┘  reopen  └──────────┘             └──────────┘                  │          │
      │                    │                                                 │          │
      │                    │ start_work                                      │          │
      │                    ▼                                                 │          │
      │              ┌──────────┐     resolve    ┌──────────┐   verify   ┌──────────┐  │
      │              │          │───────────────▶│          │───────────▶│          │  │
      │              │IN_PROGRESS│               │ RESOLVED │            │ VERIFIED │  │
      │              │   (INP)  │                │   (RES)  │            │   (VER)  │  │
      │              │          │◀───────────────│          │◀───────────│          │  │
      │              └──────────┘    reopen      └──────────┘   reopen   └──────────┘  │
      │                    │                          │                       │         │
      │                    │                          │                       │         │
      │                    │         escalate         │                       │         │
      │                    └──────────────────────────┼───────────────────────┘         │
      │                                               │                                 │
      │                                               │ expire (no verification)        │
      │                                               ▼                                 │
      │                                        ┌──────────┐                             │
      └───────────────────────────────────────▶│ STALE    │◀────────────────────────────┘
                      escalate                 │  (STL)   │       (optional state)
                                               └──────────┘
```

### 1.3 Valid Transitions

| From State | To State | Trigger | Conditions |
|------------|----------|---------|------------|
| `DET` | `ACK` | `ack` | Manual or auto-acknowledgment |
| `DET` | `DEC` | `decline` | With reason code (see 1.4) |
| `DET` | `STL` | `expire` | No action within SLA window |
| `ACK` | `INP` | `start_work` | Assignment to owner/team |
| `ACK` | `DEC` | `decline` | With reason code |
| `ACK` | `REO` | `reopen` | From merged/duplicate issue |
| `INP` | `RES` | `resolve` | Resolution action logged |
| `INP` | `ACK` | `pause` | Work paused, not abandoned |
| `INP` | `DEC` | `decline` | Late decline with reason |
| `RES` | `VER` | `verify` | CR-B or positive confirmation span |
| `RES` | `REO` | `reopen` | CR-S or CR-W on resolved issue |
| `RES` | `STL` | `expire` | Verification window elapsed |
| `VER` | `REO` | `reopen` | New complaint after verification |
| `DEC` | `REO` | `reopen` | New evidence or escalation |

### 1.4 Decline Reason Codes

| Code | Reason | Use Case |
|------|--------|----------|
| `DEC-DUP` | Duplicate | Merged with existing issue |
| `DEC-OOS` | Out of Scope | Not actionable by business |
| `DEC-INS` | Insufficient Info | Cannot act without more detail |
| `DEC-NAR` | Not As Reported | Investigation found no issue |
| `DEC-EXT` | External Factor | Outside business control |
| `DEC-POL` | Policy Decision | Intentional business choice |
| `DEC-OLD` | Too Old | Beyond remediation window |

---

## 2. Issue Aggregation Rules

### 2.1 Span-to-Issue Mapping

Individual spans become issues through aggregation. A single issue may encompass multiple spans from multiple reviews when they describe the same underlying problem.

```
┌─────────────────────────────────────────────────────────────────────────────┐
│                        ISSUE AGGREGATION PIPELINE                           │
├─────────────────────────────────────────────────────────────────────────────┤
│                                                                             │
│   Review A ──▶ Span 1 (O2.05, V-, I2) ──┐                                   │
│                                         │                                   │
│   Review B ──▶ Span 2 (O2.05, V-, I2) ──┼──▶ ISSUE-001: Food Temp Problem   │
│                                         │    Subcode: O2.05                 │
│   Review C ──▶ Span 3 (O2.05, V-, I3) ──┘    Location: Main Kitchen         │
│                                              Span Count: 3                  │
│                                              Max Intensity: I3              │
│   Review D ──▶ Span 4 (P1.02, V-, I3) ──────▶ ISSUE-002: Staff Respect      │
│                                              Subcode: P1.02                 │
│                                              Staff: John D.                 │
│                                                                             │
└─────────────────────────────────────────────────────────────────────────────┘
```

### 2.2 Aggregation Criteria

Two spans aggregate into the same issue when ALL of the following match:

| Criterion | Match Rule | Example |
|-----------|------------|---------|
| **Subcode** | Same Tier 3 code | O2.05 = O2.05 |
| **Location** | Same physical/logical location | "Kitchen", "App checkout" |
| **Entity** | Same product/person/feature | "iPhone 15", "Server John" |
| **Time Window** | Within aggregation window | See 2.3 |
| **Valence** | Same polarity (V- with V-) | Both negative |

**Note**: Location and Entity are extracted during classification as optional span attributes in extended schemas.

### 2.3 Intensity-Based Aggregation Thresholds

Different intensity levels trigger issue creation at different thresholds:

| Intensity | Immediate Issue | Aggregation Threshold | Time Window |
|-----------|-----------------|----------------------|-------------|
| **I3** (Strong) | Yes | 1 span | N/A - Immediate |
| **I2** (Moderate) | No | 3+ spans | 30 days |
| **I1** (Mild) | No | 5+ spans | 30 days |

**Decision Logic**:

```
IF span.intensity == I3:
    CREATE_ISSUE(span)

ELIF span.intensity == I2:
    matching_spans = FIND_MATCHING(span, window=30d)
    IF COUNT(matching_spans) >= 2:  # This span + 2 others = 3
        CREATE_OR_UPDATE_ISSUE(matching_spans + span)

ELIF span.intensity == I1:
    matching_spans = FIND_MATCHING(span, window=30d)
    IF COUNT(matching_spans) >= 4:  # This span + 4 others = 5
        CREATE_OR_UPDATE_ISSUE(matching_spans + span)
```

### 2.4 Cross-Review Correlation

Spans from different reviews correlate based on semantic similarity and entity matching:

```
┌─────────────────────────────────────────────────────────────────┐
│                    CORRELATION MATRIX                           │
├─────────────────────────────────────────────────────────────────┤
│                                                                 │
│  Span A: "The burger was cold"           O2.05, V-, I2          │
│  Span B: "Food arrived cold again"       O2.05, V-, I2, CR-S    │
│  Span C: "Temperature of dishes is bad"  O2.05, V-, I2          │
│                                                                 │
│  Correlation Signals:                                           │
│  ├── Same subcode: O2.05 (100% match)                           │
│  ├── Lexical overlap: "cold", "temperature" (high similarity)   │
│  ├── Entity: Food/dishes (same category)                        │
│  └── CR signal: Span B has CR-S (recurrence indicator)          │
│                                                                 │
│  Result: HIGH CORRELATION → Aggregate into single issue         │
│                                                                 │
└─────────────────────────────────────────────────────────────────┘
```

**Correlation Score Calculation**:

```
correlation = (
    0.40 * subcode_match +           # Binary: 1.0 if same, 0.0 if different
    0.25 * entity_similarity +        # 0.0-1.0 based on extracted entities
    0.20 * lexical_similarity +       # 0.0-1.0 cosine similarity of text
    0.15 * temporal_proximity         # 1.0 if same day, decays over window
)

IF correlation >= 0.70:
    AGGREGATE()
```

---

## 3. Time Decay Model

### 3.1 Urgency Decay Formula

Issue urgency decays over time but is refreshed by recurrence. The model balances immediate severity against persistent but lower-intensity patterns.

**Base Formula**:

```
Urgency(t) = I_base * weight(I) * decay(t) * recurrence_boost(CR)
```

Where:
- `I_base` = Initial intensity value (1, 2, or 3)
- `weight(I)` = Intensity weight multiplier
- `decay(t)` = Time decay function
- `recurrence_boost(CR)` = Boost for recurring issues

### 3.2 Component Definitions

**Intensity Weights**:

| Intensity | Weight | Rationale |
|-----------|--------|-----------|
| I1 | 1.0 | Baseline |
| I2 | 2.0 | Clear signal |
| I3 | 4.0 | Critical urgency |

**Time Decay Function**:

```
decay(days) = exp(-lambda * days)

Where lambda = 0.023 (half-life of ~30 days)
```

| Days | Decay Factor | Effective Urgency (I3) |
|------|--------------|------------------------|
| 0 | 1.000 | 4.00 |
| 7 | 0.851 | 3.40 |
| 14 | 0.724 | 2.90 |
| 30 | 0.500 | 2.00 |
| 60 | 0.250 | 1.00 |
| 90 | 0.125 | 0.50 |

**Recurrence Boost**:

```
recurrence_boost(CR, count) =
    IF CR == CR-S or CR == CR-W:
        1.0 + 0.5 * log2(recurrence_count + 1)
    ELSE:
        1.0
```

| Recurrence Count | Boost Factor |
|------------------|--------------|
| 1 | 1.00 |
| 2 | 1.50 |
| 3 | 1.79 |
| 4 | 2.00 |
| 5 | 2.16 |
| 10 | 2.66 |

### 3.3 Priority Score Calculation

The final priority score combines all factors:

```
P = I_weight * (1 + log(span_count)) * decay(days) * recurrence_boost * trend_modifier

Where:
- I_weight = max intensity weight among aggregated spans
- span_count = number of spans in issue
- days = days since first detection
- trend_modifier = sentiment trend adjustment (see below)
```

**Trend Modifier** (based on recent sentiment trajectory):

| Trend | Modifier | Detection |
|-------|----------|-----------|
| Worsening | 1.3 | Multiple CR-W in last 14 days |
| Stable | 1.0 | No CR signals or mixed |
| Improving | 0.7 | Multiple CR-B in last 14 days |

### 3.4 Priority Score Examples

**Example 1: Fresh Critical Issue**
```
I3 issue, 1 span, 0 days old, no recurrence
P = 4.0 * (1 + log(1)) * 1.0 * 1.0 * 1.0
P = 4.0 * 1.0 * 1.0 * 1.0 * 1.0
P = 4.00
```

**Example 2: Persistent Moderate Issue**
```
I2 issue, 5 spans, 15 days old, CR-S markers (3 recurrences), worsening
P = 2.0 * (1 + log(5)) * 0.707 * 1.79 * 1.3
P = 2.0 * 1.70 * 0.707 * 1.79 * 1.3
P = 5.60
```

**Example 3: Old Low-Priority Issue**
```
I1 issue, 2 spans, 45 days old, no recurrence
P = 1.0 * (1 + log(2)) * 0.354 * 1.0 * 1.0
P = 1.0 * 1.30 * 0.354 * 1.0 * 1.0
P = 0.46
```

---

## 4. Confidence Scoring

### 4.1 Single vs. Multiple Span Confidence

Issue confidence increases with corroborating evidence from independent sources.

**Base Confidence by Span Count**:

| Span Count | Base Confidence | Rationale |
|------------|-----------------|-----------|
| 1 | 0.50 | Single report, could be outlier |
| 2 | 0.70 | Corroborated once |
| 3 | 0.80 | Pattern emerging |
| 4-5 | 0.85 | Clear pattern |
| 6-10 | 0.90 | Strong pattern |
| 11+ | 0.95 | Systemic issue |

### 4.2 Evidence Type Weighting

Different evidence types (from URT metadata) contribute differently to confidence:

| Evidence Type | Weight | Rationale |
|---------------|--------|-----------|
| **ES** (Stated) | 1.0 | Direct, explicit statement |
| **EI** (Inferred) | 0.7 | Logically entailed but not explicit |
| **EC** (Contextual) | 0.5 | Depends on surrounding context |

### 4.3 Specificity Bonus

More specific feedback provides higher confidence:

| Specificity | Bonus | Example |
|-------------|-------|---------|
| **S1** (Vague) | +0.00 | "Service was bad" |
| **S2** (Moderate) | +0.05 | "Service was slow at dinner" |
| **S3** (Specific) | +0.10 | "Waiter John took 40 mins for appetizers" |

### 4.4 Aggregate Confidence Calculation

```
confidence = min(0.95, base_confidence + specificity_bonus) * evidence_weight

Where:
- base_confidence = from span count table
- specificity_bonus = max(specificity bonuses across spans)
- evidence_weight = weighted average of span evidence types
```

**Calculation Example**:

```
Issue with 4 spans:
- Span 1: ES, S3  → weight 1.0, bonus 0.10
- Span 2: ES, S2  → weight 1.0, bonus 0.05
- Span 3: EI, S2  → weight 0.7, bonus 0.05
- Span 4: ES, S1  → weight 1.0, bonus 0.00

base_confidence = 0.85 (4 spans)
specificity_bonus = 0.10 (max across spans)
evidence_weight = (1.0 + 1.0 + 0.7 + 1.0) / 4 = 0.925

confidence = min(0.95, 0.85 + 0.10) * 0.925
confidence = 0.95 * 0.925
confidence = 0.879
```

### 4.5 Confidence Thresholds for Action

| Confidence | Classification | Recommended Action |
|------------|----------------|-------------------|
| < 0.50 | Low | Monitor only |
| 0.50-0.69 | Moderate | Investigate |
| 0.70-0.84 | High | Schedule action |
| 0.85-0.94 | Very High | Prioritize action |
| >= 0.95 | Confirmed | Immediate action |

---

## 5. Resolution Verification

### 5.1 CR-B as Resolution Confirmation

The Comparative Reference (CR) dimension from URT v5.1 provides explicit signals for resolution verification:

```
┌──────────────────────────────────────────────────────────────────────────┐
│                    RESOLUTION VERIFICATION FLOW                          │
├──────────────────────────────────────────────────────────────────────────┤
│                                                                          │
│  ISSUE-001: O2.05 (Food Temperature)                                     │
│  Status: RESOLVED (2026-01-15)                                           │
│                                                                          │
│  ───────────────────────────────────────────────────────────────────     │
│                                                                          │
│  Day 0 (Resolved): "We've added warming stations"                        │
│                                                                          │
│  Day 7:  Review X - "Food was hot and fresh!"                            │
│          Span: O2.05, V+, CR-N                                           │
│          → Positive but no explicit comparison                           │
│          → Status: RESOLVED (monitoring)                                 │
│                                                                          │
│  Day 14: Review Y - "Much better temperature than last time!"            │
│          Span: O2.05, V+, CR-B                                           │
│          → Explicit improvement signal (CR-B)                            │
│          → Status: VERIFIED                                              │
│                                                                          │
└──────────────────────────────────────────────────────────────────────────┘
```

### 5.2 Verification Criteria

An issue transitions from RESOLVED to VERIFIED when:

| Criterion | Requirement | Strength |
|-----------|-------------|----------|
| **CR-B span** | Same subcode with CR-B marker | Strong (auto-verify) |
| **Positive span** | Same subcode with V+ | Moderate (needs 2+) |
| **Absence of negative** | No V- spans in window | Weak (time-based) |

**Verification Strength Weights**:

```
verification_score =
    (CR_B_count * 1.0) +           # Each CR-B = full verification point
    (positive_count * 0.5) +       # Each V+ = half point
    (absence_bonus * 0.3)          # No negatives in window = 0.3

IF verification_score >= 1.0:
    VERIFY()
```

### 5.3 Verification Time Windows

Different window models balance verification speed against confidence:

| Model | Window | Use Case | Auto-Close |
|-------|--------|----------|------------|
| **Fast** | 30 days | High-volume, quick feedback loops | Yes |
| **Standard** | 60 days | Typical businesses | Yes |
| **Extended** | 90 days | Low-volume, B2B, seasonal | Yes |
| **Manual** | Indefinite | Complex issues, no auto-close | No |

**Window Selection Logic**:

```
IF issue.domain IN [O, J]:
    window = 30  # Product/process issues get quick feedback
ELIF issue.domain IN [P, E]:
    window = 60  # People/environment need more observations
ELIF issue.domain IN [R, V]:
    window = 90  # Relationship/value issues take time to verify
ELSE:
    window = 60  # Default
```

### 5.4 False Resolution Detection

A resolved issue is falsely resolved when negative feedback continues:

```
┌──────────────────────────────────────────────────────────────────────────┐
│                    FALSE RESOLUTION DETECTION                            │
├──────────────────────────────────────────────────────────────────────────┤
│                                                                          │
│  ISSUE-002: J1.01 (Wait Times)                                           │
│  Status: RESOLVED (2026-01-10)                                           │
│                                                                          │
│  ───────────────────────────────────────────────────────────────────     │
│                                                                          │
│  Day 0:  Marked RESOLVED - "Added more staff"                            │
│                                                                          │
│  Day 5:  Review Z - "Still waiting forever, nothing changed"             │
│          Span: J1.01, V-, CR-S                                           │
│          → Explicit "unchanged" signal (CR-S)                            │
│          → FALSE RESOLUTION DETECTED                                     │
│          → Status: REOPENED                                              │
│                                                                          │
│  OR                                                                      │
│                                                                          │
│  Day 12: Review W - "Wait times are even worse now"                      │
│          Span: J1.01, V-, CR-W                                           │
│          → Explicit "worse" signal (CR-W)                                │
│          → FALSE RESOLUTION + REGRESSION                                 │
│          → Status: REOPENED (escalated)                                  │
│                                                                          │
└──────────────────────────────────────────────────────────────────────────┘
```

### 5.5 Auto-Reopen Triggers

| Trigger | Condition | Action |
|---------|-----------|--------|
| **CR-S after RESOLVED** | Any CR-S span on resolved issue | Reopen |
| **CR-W after RESOLVED** | Any CR-W span on resolved issue | Reopen + Escalate |
| **V- after VERIFIED** | V- span on verified issue | Reopen |
| **Recurrence threshold** | 2+ V- spans after RESOLVED | Reopen |

**Escalation on Reopen**:

```
IF reopen_count >= 2:
    escalate_to_management()

IF reopen_reason == CR-W:
    escalate_immediately()
    flag_as_regression()
```

---

## 6. Metrics and SLAs

### 6.1 Time-to-Acknowledge (TTA) Targets

TTA measures time from DETECTED to ACKNOWLEDGED.

| Intensity | Target TTA | Max TTA | Escalation |
|-----------|------------|---------|------------|
| **I3** | 1 hour | 4 hours | Auto-escalate at max |
| **I2** | 8 hours | 24 hours | Auto-escalate at max |
| **I1** | 24 hours | 72 hours | Flag only |

### 6.2 Time-to-Resolve (TTR) Targets by Domain

TTR measures time from DETECTED to RESOLVED.

| Domain | I3 Target | I2 Target | I1 Target |
|--------|-----------|-----------|-----------|
| **O** (Offering) | 24h | 72h | 7d |
| **P** (People) | 4h | 24h | 72h |
| **J** (Journey) | 8h | 48h | 7d |
| **E** (Environment) | 24h | 72h | 14d |
| **A** (Access) | 4h | 24h | 72h |
| **V** (Value) | 8h | 48h | 7d |
| **R** (Relationship) | 4h | 24h | 72h |

### 6.3 Resolution Rate Calculation

```
Resolution Rate = (RESOLVED + VERIFIED) / (Total Issues - DECLINED)

Monthly Rolling Resolution Rate:
- Include all issues detected in the month
- Exclude issues still in DETECTED or ACK (not yet in pipeline)
- Calculate at month end + 14 days (allow resolution time)
```

**Target Resolution Rates**:

| Performance Level | Rate |
|-------------------|------|
| Excellent | >= 95% |
| Good | 85-94% |
| Acceptable | 70-84% |
| Poor | < 70% |

### 6.4 Recurrence Rate Tracking

```
Recurrence Rate = REOPENED / RESOLVED

Where:
- Count REOPENED transitions within verification window
- Exclude declines from denominator
```

**Recurrence Interpretation**:

| Recurrence Rate | Interpretation | Action |
|-----------------|----------------|--------|
| < 5% | Excellent | Maintain process |
| 5-10% | Acceptable | Monitor closely |
| 10-20% | Concerning | Review resolution quality |
| > 20% | Critical | Resolution process audit |

### 6.5 SLA Dashboard Metrics

```
┌────────────────────────────────────────────────────────────────────────┐
│                         SLA DASHBOARD                                  │
├────────────────────────────────────────────────────────────────────────┤
│                                                                        │
│  Period: 2026-01 (January)                                             │
│                                                                        │
│  ┌──────────────────┐ ┌──────────────────┐ ┌──────────────────┐        │
│  │ TTA Compliance   │ │ TTR Compliance   │ │ Resolution Rate  │        │
│  │      94.2%       │ │      87.5%       │ │      91.3%       │        │
│  │   ▲ +2.1% MoM    │ │   ▼ -1.3% MoM    │ │   ▲ +3.2% MoM    │        │
│  └──────────────────┘ └──────────────────┘ └──────────────────┘        │
│                                                                        │
│  ┌──────────────────┐ ┌──────────────────┐ ┌──────────────────┐        │
│  │ Recurrence Rate  │ │ Verification     │ │ Open Issues      │        │
│  │      7.8%        │ │ Rate: 68.4%      │ │      23          │        │
│  │   ▼ -1.2% MoM    │ │   ▲ +5.1% MoM    │ │   ▼ -8 from MoM  │        │
│  └──────────────────┘ └──────────────────┘ └──────────────────┘        │
│                                                                        │
│  By Domain (TTR Compliance):                                           │
│  ├── O (Offering):      89.2%  ████████████████████░░░░                │
│  ├── P (People):        95.1%  ████████████████████████░               │
│  ├── J (Journey):       82.4%  ████████████████████░░░░░               │
│  ├── E (Environment):   91.0%  █████████████████████░░░                │
│  ├── A (Access):        88.7%  ████████████████████░░░░                │
│  ├── V (Value):         86.3%  ███████████████████░░░░░                │
│  └── R (Relationship):  93.2%  ███████████████████████░                │
│                                                                        │
└────────────────────────────────────────────────────────────────────────┘
```

---

## 7. Example Workflows

### 7.1 Single Complaint to Resolution to Verification

**Scenario**: A customer reports that their food arrived cold.

```
┌──────────────────────────────────────────────────────────────────────────┐
│  WORKFLOW 1: Standard Resolution Cycle                                   │
├──────────────────────────────────────────────────────────────────────────┤
│                                                                          │
│  T+0h   REVIEW RECEIVED                                                  │
│         "My pasta was stone cold when it arrived. Very disappointing."   │
│                                                                          │
│         SPAN CLASSIFIED:                                                 │
│         ├── Primary: O2.05 (Condition at Delivery)                       │
│         ├── Valence: V-                                                  │
│         ├── Intensity: I2                                                │
│         ├── Specificity: S2                                              │
│         ├── Actionability: A2                                            │
│         ├── Evidence: ES                                                 │
│         └── Comparative: CR-N                                            │
│                                                                          │
│         ISSUE CREATED: ISSUE-2026-0142                                   │
│         State: DETECTED                                                  │
│         Priority: 2.00                                                   │
│         Owner: Kitchen Manager                                           │
│                                                                          │
│  ─────────────────────────────────────────────────────────────────────   │
│                                                                          │
│  T+2h   ISSUE ACKNOWLEDGED                                               │
│         Kitchen manager reviews issue, confirms pattern.                 │
│         State: DETECTED → ACKNOWLEDGED                                   │
│         Notes: "Third cold food report this week. Investigating."        │
│                                                                          │
│  ─────────────────────────────────────────────────────────────────────   │
│                                                                          │
│  T+4h   WORK STARTED                                                     │
│         State: ACKNOWLEDGED → IN_PROGRESS                                │
│         Action: "Checking heat lamp timers and delivery bags"            │
│         Assigned: Line cook supervisor                                   │
│                                                                          │
│  ─────────────────────────────────────────────────────────────────────   │
│                                                                          │
│  T+8h   ISSUE RESOLVED                                                   │
│         State: IN_PROGRESS → RESOLVED                                    │
│         Resolution: "Heat lamps recalibrated, new insulated bags        │
│                      ordered for delivery. Staff briefed."               │
│         Resolution Code: FIX-EQUIPMENT                                   │
│                                                                          │
│  ─────────────────────────────────────────────────────────────────────   │
│                                                                          │
│  T+14d  VERIFICATION RECEIVED                                            │
│                                                                          │
│         NEW REVIEW:                                                      │
│         "Great improvement! Food was piping hot this time, much          │
│          better than my last order."                                     │
│                                                                          │
│         SPAN CLASSIFIED:                                                 │
│         ├── Primary: O2.05                                               │
│         ├── Valence: V+                                                  │
│         ├── Comparative: CR-B  ← Explicit improvement signal             │
│         └── ...                                                          │
│                                                                          │
│         ISSUE VERIFIED: ISSUE-2026-0142                                  │
│         State: RESOLVED → VERIFIED                                       │
│         Verification: "CR-B span confirms resolution"                    │
│                                                                          │
│  ─────────────────────────────────────────────────────────────────────   │
│                                                                          │
│  METRICS:                                                                │
│  ├── TTA: 2 hours (Target: 8h) ✓                                         │
│  ├── TTR: 8 hours (Target: 72h) ✓                                        │
│  ├── Time to Verify: 14 days                                             │
│  └── Recurrence: None                                                    │
│                                                                          │
└──────────────────────────────────────────────────────────────────────────┘
```

### 7.2 Recurring Issue Detection and Escalation

**Scenario**: Multiple customers report the same issue that persists despite attempted fixes.

```
┌──────────────────────────────────────────────────────────────────────────┐
│  WORKFLOW 2: Recurring Issue with Escalation                             │
├──────────────────────────────────────────────────────────────────────────┤
│                                                                          │
│  Week 1, Day 1                                                           │
│                                                                          │
│  REVIEW A: "Waited 45 minutes for a table despite reservation"           │
│  SPAN: J1.01 (Wait Time), V-, I3, S3, CR-N                               │
│  → ISSUE-2026-0201 CREATED (I3 = immediate)                              │
│  → State: DETECTED, Priority: 4.00                                       │
│                                                                          │
│  ─────────────────────────────────────────────────────────────────────   │
│                                                                          │
│  Week 1, Day 2                                                           │
│                                                                          │
│  ACKNOWLEDGED and RESOLVED                                               │
│  Resolution: "Added second host, adjusted OpenTable buffer time"         │
│                                                                          │
│  ─────────────────────────────────────────────────────────────────────   │
│                                                                          │
│  Week 2, Day 3                                                           │
│                                                                          │
│  REVIEW B: "Still waiting 30+ minutes with reservation. Nothing changed" │
│  SPAN: J1.01, V-, I2, S3, CR-S  ← Explicit "unchanged" signal            │
│                                                                          │
│  → ISSUE-2026-0201 REOPENED                                              │
│  → reopen_count: 1                                                       │
│  → State: RESOLVED → REOPENED → IN_PROGRESS                              │
│  → Priority recalculated: 2.0 * 1.30 * 0.9 * 1.50 = 3.51                 │
│                        (I2 × log(2 spans) × decay × recurrence)          │
│                                                                          │
│  ─────────────────────────────────────────────────────────────────────   │
│                                                                          │
│  Week 2, Day 5                                                           │
│                                                                          │
│  RESOLVED AGAIN                                                          │
│  Resolution: "Hired additional staff for Friday/Saturday rush"           │
│                                                                          │
│  ─────────────────────────────────────────────────────────────────────   │
│                                                                          │
│  Week 3, Day 6                                                           │
│                                                                          │
│  REVIEW C: "The wait is even worse than before. 50 minutes this time!"   │
│  SPAN: J1.01, V-, I3, S3, CR-W  ← Explicit "worse" signal                │
│                                                                          │
│  → ISSUE-2026-0201 REOPENED + ESCALATED                                  │
│  → reopen_count: 2 (threshold met)                                       │
│  → CR-W triggers immediate escalation                                    │
│  → State: RESOLVED → REOPENED                                            │
│  → Priority: 4.0 * 1.48 * 0.7 * 1.79 * 1.3 = 9.65 (CRITICAL)             │
│                                                                          │
│  ESCALATION TRIGGERED:                                                   │
│  ├── Reason: "2+ reopens + CR-W regression"                              │
│  ├── Escalated To: Operations Director                                   │
│  ├── Flag: REGRESSION                                                    │
│  └── Required: Root cause analysis within 24h                            │
│                                                                          │
│  ─────────────────────────────────────────────────────────────────────   │
│                                                                          │
│  CAUSAL ANALYSIS ADDED (Full Profile):                                   │
│  ├── CD-O: Operational (demand exceeds capacity)                         │
│  └── MG-P: Planning (reservation system not aligned with capacity)       │
│                                                                          │
│  RESOLUTION (with systemic fix):                                         │
│  "Implemented capacity-based reservation limits. System now blocks       │
│   new reservations when approaching 80% capacity for time slot."         │
│                                                                          │
└──────────────────────────────────────────────────────────────────────────┘
```

### 7.3 False Resolution and Reopen

**Scenario**: An issue is marked resolved but customer feedback indicates it was not actually fixed.

```
┌──────────────────────────────────────────────────────────────────────────┐
│  WORKFLOW 3: False Resolution Detection                                  │
├──────────────────────────────────────────────────────────────────────────┤
│                                                                          │
│  Day 0                                                                   │
│                                                                          │
│  REVIEW: "The checkout button on the app doesn't work!"                  │
│  SPAN: E2.02 (Digital Functionality), V-, I3, S2, A3, CR-N               │
│  → ISSUE-2026-0315 CREATED                                               │
│                                                                          │
│  ─────────────────────────────────────────────────────────────────────   │
│                                                                          │
│  Day 1                                                                   │
│                                                                          │
│  RESOLVED (incorrectly)                                                  │
│  Developer: "Cannot reproduce. Works on our test devices."               │
│  Resolution Code: NAR (Not As Reported)                                  │
│  State: RESOLVED                                                         │
│                                                                          │
│  ─────────────────────────────────────────────────────────────────────   │
│                                                                          │
│  Day 3                                                                   │
│                                                                          │
│  REVIEW B: "Checkout STILL broken. Same as last week. Unusable app."     │
│  SPAN: E2.02, V-, I3, S2, A3, CR-S  ← "Still" = unchanged                │
│                                                                          │
│  → FALSE RESOLUTION DETECTED                                             │
│  → ISSUE-2026-0315 REOPENED                                              │
│  → Original resolution invalidated                                       │
│  → Alert: "Issue marked NAR but customer reports persistence"            │
│                                                                          │
│  ─────────────────────────────────────────────────────────────────────   │
│                                                                          │
│  Day 3 (continued)                                                       │
│                                                                          │
│  REVIEW C: "App checkout broken on Android. Can't complete purchase."    │
│  SPAN: E2.02, V-, I3, S3, A3, CR-N                                       │
│                                                                          │
│  → AGGREGATED to ISSUE-2026-0315                                         │
│  → span_count: 3                                                         │
│  → Note: S3 span reveals Android-specific issue                          │
│                                                                          │
│  ─────────────────────────────────────────────────────────────────────   │
│                                                                          │
│  Day 4                                                                   │
│                                                                          │
│  PROPER INVESTIGATION                                                    │
│  ├── Root cause: Button click area too small on Android devices          │
│  ├── Missed in QA: Only tested on iOS                                    │
│  └── Fix: Increased tap target to 48dp minimum                           │
│                                                                          │
│  RESOLVED (properly)                                                     │
│  ├── Resolution: "Fixed Android tap target size. Deployed v2.3.1"        │
│  ├── Causal (added): MG-T (Testing gaps)                                 │
│  └── Preventive: "Added Android device farm to CI/CD pipeline"           │
│                                                                          │
│  ─────────────────────────────────────────────────────────────────────   │
│                                                                          │
│  Day 12                                                                  │
│                                                                          │
│  REVIEW D: "Finally! Checkout works perfectly now. Thank you!"           │
│  SPAN: E2.02, V+, I2, S2, A2, CR-B  ← Explicit improvement               │
│                                                                          │
│  → ISSUE-2026-0315 VERIFIED                                              │
│  → State: RESOLVED → VERIFIED                                            │
│                                                                          │
│  ─────────────────────────────────────────────────────────────────────   │
│                                                                          │
│  POST-MORTEM FLAGS:                                                      │
│  ├── false_resolution_count: 1                                           │
│  ├── false_resolution_reason: NAR without proper investigation           │
│  └── lesson_learned: "Require device-specific reproduction steps"        │
│                                                                          │
└──────────────────────────────────────────────────────────────────────────┘
```

### 7.4 Aggregated Issue from Multiple Reviewers

**Scenario**: Low-intensity feedback from multiple customers aggregates into a significant issue.

```
┌──────────────────────────────────────────────────────────────────────────┐
│  WORKFLOW 4: Aggregated Issue Detection                                  │
├──────────────────────────────────────────────────────────────────────────┤
│                                                                          │
│  AGGREGATION TIMELINE (30-day window)                                    │
│                                                                          │
│  Day 1                                                                   │
│  REVIEW A: "Music was a bit loud"                                        │
│  SPAN: E3.02 (Noise Level), V-, I1, S1, A2, CR-N                         │
│  → No issue created (I1 requires 5+ spans)                               │
│  → Span stored in aggregation buffer                                     │
│                                                                          │
│  ─────────────────────────────────────────────────────────────────────   │
│                                                                          │
│  Day 5                                                                   │
│  REVIEW B: "Could be quieter in here"                                    │
│  SPAN: E3.02, V-, I1, S1, A2, CR-N                                       │
│  → Aggregation check: 2 spans (threshold: 5)                             │
│  → No issue yet                                                          │
│                                                                          │
│  ─────────────────────────────────────────────────────────────────────   │
│                                                                          │
│  Day 12                                                                  │
│  REVIEW C: "Background music drowns out conversation"                    │
│  SPAN: E3.02, V-, I2, S2, A2, CR-N  ← Intensity I2 (threshold: 3)        │
│  → I2 requires only 3 spans!                                             │
│  → Aggregation check: 3 spans including this I2                          │
│  → ISSUE CREATED: ISSUE-2026-0422                                        │
│                                                                          │
│  AGGREGATED ISSUE:                                                       │
│  ├── Subcode: E3.02 (Noise Level)                                        │
│  ├── Span count: 3                                                       │
│  ├── Max intensity: I2                                                   │
│  ├── Avg intensity: I1.33                                                │
│  ├── Confidence: 0.80 (3 spans) * 0.98 (evidence) = 0.78                 │
│  └── Priority: 2.0 * 1.48 * 0.87 * 1.0 = 2.57                            │
│                                                                          │
│  ─────────────────────────────────────────────────────────────────────   │
│                                                                          │
│  Day 15                                                                  │
│  REVIEW D: "Music is way too loud. Can barely hear my date."             │
│  SPAN: E3.02, V-, I3, S2, A3, CR-N                                       │
│  → AGGREGATED to ISSUE-2026-0422                                         │
│  → span_count: 4                                                         │
│  → Max intensity upgraded to I3                                          │
│  → Priority recalculated: 4.0 * 1.60 * 0.80 * 1.0 = 5.12                 │
│                                                                          │
│  ─────────────────────────────────────────────────────────────────────   │
│                                                                          │
│  Day 18                                                                  │
│  REVIEW E: "Same issue as others - music overwhelming"                   │
│  SPAN: E3.02, V-, I2, S1, A2, CR-S  ← Explicit "same" = awareness        │
│  → AGGREGATED                                                            │
│  → span_count: 5                                                         │
│  → recurrence_boost: 1.50 (CR-S signals ongoing)                         │
│  → Priority: 4.0 * 1.70 * 0.73 * 1.50 = 7.45                             │
│                                                                          │
│  ─────────────────────────────────────────────────────────────────────   │
│                                                                          │
│  ISSUE SUMMARY AT DAY 18:                                                │
│                                                                          │
│  ┌────────────────────────────────────────────────────────────────┐      │
│  │ ISSUE-2026-0422: Noise Level - Background Music                │      │
│  ├────────────────────────────────────────────────────────────────┤      │
│  │ State: DETECTED                                                │      │
│  │ Priority: 7.45 (HIGH)                                          │      │
│  │ Confidence: 0.88                                               │      │
│  │ Owner: Facilities Manager                                      │      │
│  │                                                                │      │
│  │ Contributing Spans:                                            │      │
│  │ ├── Review A (Day 1):  I1, S1 - "bit loud"                     │      │
│  │ ├── Review B (Day 5):  I1, S1 - "could be quieter"             │      │
│  │ ├── Review C (Day 12): I2, S2 - "drowns out conversation"      │      │
│  │ ├── Review D (Day 15): I3, S2 - "way too loud"                 │      │
│  │ └── Review E (Day 18): I2, S1 - "same issue" (CR-S)            │      │
│  │                                                                │      │
│  │ Signals:                                                       │      │
│  │ ├── Consistent pattern across 5 independent reviewers          │      │
│  │ ├── Intensity escalation (I1 → I2 → I3)                        │      │
│  │ └── Customer awareness of issue (CR-S in Review E)             │      │
│  │                                                                │      │
│  │ Recommended Action:                                            │      │
│  │ "Audit background music volume levels. Consider time-based     │      │
│  │  or occupancy-based volume adjustment."                        │      │
│  │                                                                │      │
│  └────────────────────────────────────────────────────────────────┘      │
│                                                                          │
└──────────────────────────────────────────────────────────────────────────┘
```

---

## 8. Implementation Reference

### 8.1 Issue Record Schema

```json
{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://urt.schema/v5.1/issue",
  "title": "URT Issue Record",
  "type": "object",

  "properties": {
    "issue_id": {
      "type": "string",
      "pattern": "^ISSUE-[0-9]{4}-[0-9]{4,}$"
    },
    "state": {
      "enum": ["DETECTED", "ACKNOWLEDGED", "IN_PROGRESS", "RESOLVED", "VERIFIED", "DECLINED", "REOPENED", "STALE"]
    },
    "primary_subcode": {
      "type": "string",
      "pattern": "^[OPJEAVR][1-4]\\.[0-9]{2}$"
    },
    "domain": {
      "type": "string",
      "pattern": "^[OPJEAVR]$"
    },
    "span_ids": {
      "type": "array",
      "items": { "type": "string" },
      "minItems": 1
    },
    "span_count": {
      "type": "integer",
      "minimum": 1
    },
    "max_intensity": {
      "enum": ["I1", "I2", "I3"]
    },
    "priority_score": {
      "type": "number",
      "minimum": 0
    },
    "confidence_score": {
      "type": "number",
      "minimum": 0,
      "maximum": 1
    },
    "owner_team": {
      "type": "string"
    },
    "owner_individual": {
      "type": "string"
    },
    "created_at": {
      "type": "string",
      "format": "date-time"
    },
    "acknowledged_at": {
      "type": "string",
      "format": "date-time"
    },
    "resolved_at": {
      "type": "string",
      "format": "date-time"
    },
    "verified_at": {
      "type": "string",
      "format": "date-time"
    },
    "reopen_count": {
      "type": "integer",
      "minimum": 0
    },
    "decline_reason": {
      "enum": ["DEC-DUP", "DEC-OOS", "DEC-INS", "DEC-NAR", "DEC-EXT", "DEC-POL", "DEC-OLD"]
    },
    "resolution_code": {
      "type": "string"
    },
    "resolution_notes": {
      "type": "string"
    },
    "causal_codes": {
      "type": "array",
      "items": {
        "type": "string",
        "pattern": "^(CD|MG|SY)-[A-Z]$"
      }
    },
    "entity": {
      "type": "string",
      "description": "Product, person, or feature this issue relates to"
    },
    "location": {
      "type": "string",
      "description": "Physical or logical location"
    },
    "verification_window_days": {
      "type": "integer",
      "enum": [30, 60, 90]
    },
    "state_history": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "state": { "type": "string" },
          "timestamp": { "type": "string", "format": "date-time" },
          "actor": { "type": "string" },
          "notes": { "type": "string" }
        }
      }
    }
  },

  "required": [
    "issue_id", "state", "primary_subcode", "domain", "span_ids",
    "span_count", "max_intensity", "priority_score", "confidence_score",
    "created_at"
  ]
}
```

### 8.2 State Transition Event Schema

```json
{
  "event_type": "state_transition",
  "issue_id": "ISSUE-2026-0142",
  "from_state": "IN_PROGRESS",
  "to_state": "RESOLVED",
  "timestamp": "2026-01-15T14:32:00Z",
  "actor": "kitchen_manager",
  "trigger": "manual",
  "resolution_code": "FIX-EQUIPMENT",
  "notes": "Heat lamps recalibrated, new insulated bags ordered."
}
```

### 8.3 Priority Recalculation Triggers

Recalculate priority score when:

1. New span aggregated to issue
2. Daily decay recalculation (batch)
3. CR marker detected (CR-S, CR-W, CR-B)
4. Issue reopened
5. State changed to IN_PROGRESS (freeze priority for SLA)

---

## 9. Integration Points

### 9.1 From URT Classification

```
URT Span Classification
         │
         ▼
┌─────────────────────┐
│ Span Filter         │
│ (V- only for issues)│
└─────────────────────┘
         │
         ▼
┌─────────────────────┐
│ Aggregation Engine  │
│ (match/create)      │
└─────────────────────┘
         │
         ▼
┌─────────────────────┐
│ Issue Lifecycle     │
│ (this framework)    │
└─────────────────────┘
```

### 9.2 To Operational Systems

| Integration | Data Flow | Purpose |
|-------------|-----------|---------|
| **Ticketing** | Issue → Ticket | Route to appropriate team |
| **CRM** | Issue → Customer Record | Track customer issues |
| **Dashboard** | Issue → Metrics | Real-time monitoring |
| **Alerts** | State Change → Notification | SLA warnings |
| **BI/Analytics** | Issue → Data Warehouse | Historical analysis |

### 9.3 CR Marker Processing

```
On new span classified:
    IF span.comparative == CR-B:
        matching_issues = FIND_RESOLVED_ISSUES(span.subcode)
        FOR issue IN matching_issues:
            IF within_verification_window(issue):
                VERIFY(issue, span)

    ELIF span.comparative IN [CR-S, CR-W]:
        matching_issues = FIND_RESOLVED_ISSUES(span.subcode)
        FOR issue IN matching_issues:
            IF issue.state IN [RESOLVED, VERIFIED]:
                REOPEN(issue, span)
                IF span.comparative == CR-W:
                    ESCALATE(issue, reason="REGRESSION")
```

---

## Document Control

| Field | Value |
|-------|-------|
| **Document** | C1 - Issue Lifecycle Framework |
| **Version** | 1.0 |
| **Status** | Production Ready |
| **Date** | 2026-01-23 |
| **Author** | URT Working Group |
| **Depends On** | URT Specification v5.1 |
| **Part Of** | Track C: Analytics Layer |

---

## Related Documents

| Document | Purpose | Status |
|----------|---------|--------|
| **URT Specification v5.1** | Core taxonomy and classification rules | Frozen |
| **C2 - Trend Analysis Framework** | Pattern detection over time | Planned |
| **C3 - Benchmark Framework** | Cross-business comparison | Planned |
| **C4 - Alert & Escalation Rules** | Automated notification logic | Planned |

---

*End of C1: Issue Lifecycle Framework*
