File size: 2,711 Bytes
9ec4919
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
{
  "name": "Feedback clusterer",
  "objective": "Turn noisy feedback streams into a small set of actionable themes with evidence, owners, and suggested next steps.",
  "trigger": {
    "type": "scheduled",
    "cadence_or_event": "Daily or weekly, and after a launch, incident, release, or support backlog spike."
  },
  "intake": {
    "sources": ["GitHub issues", "PR comments", "support tickets", "Slack threads", "app reviews", "survey responses"],
    "selection_rule": "Collect items inside the defined time window, skip already-processed IDs, and cluster by underlying user problem rather than surface wording."
  },
  "workspace": {
    "isolation": "Read-only access to feedback systems.",
    "allowed_actions": ["read feedback sources", "create summary docs", "create or update issues and labels"],
    "disallowed_actions": ["close user reports", "change priorities", "send customer-facing replies"]
  },
  "context": {
    "required_files": ["product area map", "label and owner directory"],
    "runtime_sources": ["feedback items in the window", "known duplicates", "prior cluster state"]
  },
  "agents": [
    {
      "role": "Collector",
      "responsibility": "Gather feedback items and preserve stable source links."
    },
    {
      "role": "Clusterer",
      "responsibility": "Group items by user problem and attach representative examples."
    },
    {
      "role": "Skeptic",
      "responsibility": "Check clusters for overgeneralization and missing counterexamples."
    },
    {
      "role": "Reporter",
      "responsibility": "Produce ranked themes with confidence, owners, and next actions."
    }
  ],
  "verification": {
    "gates": ["every cluster has source links", "high-impact claims include representative examples", "frequency is reported separately from severity", "processed IDs are recorded"],
    "receipts": ["query windows and filters", "processed item IDs", "cluster names with example links", "confidence and owner per theme"]
  },
  "state": {
    "artifacts": ["theme report", "processed-ID ledger"],
    "update_rule": "Append processed IDs, cluster definitions, and follow-up owners after every run so items are never double counted."
  },
  "budget": {
    "max_retries": 1,
    "max_runtime_minutes": 90
  },
  "escalation": {
    "conditions": ["security or legal concerns in feedback", "sensitive data exposure", "customer-specific commitments", "prioritization conflicts"],
    "destination": "Product owner triage channel"
  },
  "exit": {
    "success": "Clusters are stable and the ranked theme report with next actions is published.",
    "stop_without_success": "Source rate limits block collection or themes require product judgment."
  }
}