← Back to Kontasks
Naming: Topics vs Lifecycles vs Phases
Analysis of naming options for the WHAT dimension
Output
🏷️ Naming: Topics vs Lifecycles vs Phases
The Options
| Name | Pros | Cons |
|---|---|---|
| Topic |
|
|
| Lifecycle |
|
|
| Phase |
|
|
| Stage |
|
|
| Activity |
|
|
🗣️ How They Sound in UI
Badge on kontask card: Feature ← just the name, no prefix needed Filter dropdown: "Filter by topic" → generic, could be anything "Filter by lifecycle" → clear, but sounds formal "Filter by phase" → "what phase is this work in?" "Filter by activity" → "what activity type?" API/code: kontask.topic = "feature" ← current kontask.lifecycle = "feature" ← more descriptive kontask.phase = "feature" ← shorter
🤔 Key Consideration
"Topic" is intentionally generic because:
- Some items don't fit a clean lifecycle ("Roadmap" isn't really a phase)
- Future expansion might add non-lifecycle categories
- Different projects might use different topic sets
"Lifecycle" is more specific which:
- Makes the purpose immediately clear
- Aligns with SDLC terminology
- But locks us into that mental model
💬 My Recommendation
Keep "Topic" but document it as "Lifecycle Topics"
- In code:
gvTopic,topic_id(short, stable) - In docs: "Lifecycle topics" (explains the concept)
- In UI: Just show the topic name, no label needed
- Avoids: Renaming all files, types, APIs
The 12 items ARE lifecycle phases, but calling them "topics" keeps the system flexible.
📚 Final Vocabulary
Topic = WHAT lifecycle phase (Requirements → Roadmap) Domain = WHERE in the system (Frontend, Database, Security...) Flow = WHY/tracking unit (feature, bugfix, refactor...)
Quick Actions
Original Request
No layout configured
Details
Type
General
Status
Completed
Scope
vibetools
Tags
schemanamingarchitecture
Created
10 Jan 2026, 8:33 pm
Updated
10 Jan 2026, 8:33 pm
Timing
⏱️ 48.7s
0 tools
● TTFE 0%
● Thinking 100%
● Tools 0%
Created By
claude
📋 Claude's Context
Session
ses_7c4eba4a...
Raw Data
{
"id": "09bb7c15-492c-41f8-8b74-848ba2781958",
"type": "general",
"status": "completed",
"title": "Naming: Topics vs Lifecycles vs Phases",
"description": "Analysis of naming options for the WHAT dimension",
"context": {
"output": "<div style=\"background:#1e1e1e;color:#e0e0e0;padding:20px;border-radius:8px;font-family:'Consolas','Monaco',monospace;\">\n<h2 style=\"font-family:sans-serif;color:#fff;margin:0 0 16px 0;\">🏷️ Naming: Topics vs Lifecycles vs Phases</h2>\n\n<div style=\"background:#2d2d2d;padding:16px;border-radius:6px;margin-bottom:16px;\">\n<h3 style=\"color:#e5c07b;margin:0 0 12px 0;\">The Options</h3>\n<table style=\"width:100%;border-collapse:collapse;\">\n<tr style=\"border-bottom:1px solid #444;\">\n <th style=\"text-align:left;padding:10px;color:#98c379;\">Name</th>\n <th style=\"text-align:left;padding:10px;color:#98c379;\">Pros</th>\n <th style=\"text-align:left;padding:10px;color:#98c379;\">Cons</th>\n</tr>\n<tr style=\"border-bottom:1px solid #3a3a3a;\">\n <td style=\"padding:10px;vertical-align:top;\"><span style=\"background:#c678dd;color:#fff;padding:2px 8px;border-radius:4px;font-weight:bold;\">Topic</span></td>\n <td style=\"padding:10px;color:#abb2bf;vertical-align:top;\">\n <ul style=\"margin:0;padding-left:16px;\">\n <li>Generic, flexible</li>\n <li>Already implemented (gvTopic)</li>\n <li>Familiar from Slack, forums</li>\n </ul>\n </td>\n <td style=\"padding:10px;color:#7f848e;vertical-align:top;\">\n <ul style=\"margin:0;padding-left:16px;\">\n <li>Doesn't convey \"phase\" meaning</li>\n <li>Could mean anything</li>\n <li>Vague for newcomers</li>\n </ul>\n </td>\n</tr>\n<tr style=\"border-bottom:1px solid #3a3a3a;\">\n <td style=\"padding:10px;vertical-align:top;\"><span style=\"background:#22c55e;color:#fff;padding:2px 8px;border-radius:4px;font-weight:bold;\">Lifecycle</span></td>\n <td style=\"padding:10px;color:#abb2bf;vertical-align:top;\">\n <ul style=\"margin:0;padding-left:16px;\">\n <li>Accurate - it IS lifecycle</li>\n <li>Industry term (SDLC)</li>\n <li>Self-documenting</li>\n </ul>\n </td>\n <td style=\"padding:10px;color:#7f848e;vertical-align:top;\">\n <ul style=\"margin:0;padding-left:16px;\">\n <li>Long word (9 chars)</li>\n <li>Implies strict ordering</li>\n <li>Rename effort (gvLifecycle)</li>\n </ul>\n </td>\n</tr>\n<tr style=\"border-bottom:1px solid #3a3a3a;\">\n <td style=\"padding:10px;vertical-align:top;\"><span style=\"background:#3b82f6;color:#fff;padding:2px 8px;border-radius:4px;font-weight:bold;\">Phase</span></td>\n <td style=\"padding:10px;color:#abb2bf;vertical-align:top;\">\n <ul style=\"margin:0;padding-left:16px;\">\n <li>Short (5 chars)</li>\n <li>Clear meaning</li>\n <li>Works in UI badges</li>\n </ul>\n </td>\n <td style=\"padding:10px;color:#7f848e;vertical-align:top;\">\n <ul style=\"margin:0;padding-left:16px;\">\n <li>Implies strict sequence</li>\n <li>\"Feature phase\" sounds odd</li>\n <li>Less flexible than topic</li>\n </ul>\n </td>\n</tr>\n<tr style=\"border-bottom:1px solid #3a3a3a;\">\n <td style=\"padding:10px;vertical-align:top;\"><span style=\"background:#f97316;color:#fff;padding:2px 8px;border-radius:4px;font-weight:bold;\">Stage</span></td>\n <td style=\"padding:10px;color:#abb2bf;vertical-align:top;\">\n <ul style=\"margin:0;padding-left:16px;\">\n <li>Short (5 chars)</li>\n <li>Used in CI/CD (familiar)</li>\n <li>gvStage sounds good</li>\n </ul>\n </td>\n <td style=\"padding:10px;color:#7f848e;vertical-align:top;\">\n <ul style=\"margin:0;padding-left:16px;\">\n <li>Conflicts with deploy stages</li>\n <li>Also implies sequence</li>\n <li>\"Bugfix stage\" sounds off</li>\n </ul>\n </td>\n</tr>\n<tr style=\"border-bottom:1px solid #3a3a3a;\">\n <td style=\"padding:10px;vertical-align:top;\"><span style=\"background:#ec4899;color:#fff;padding:2px 8px;border-radius:4px;font-weight:bold;\">Activity</span></td>\n <td style=\"padding:10px;color:#abb2bf;vertical-align:top;\">\n <ul style=\"margin:0;padding-left:16px;\">\n <li>Describes WHAT you're doing</li>\n <li>No ordering implied</li>\n <li>\"Testing activity\" works</li>\n </ul>\n </td>\n <td style=\"padding:10px;color:#7f848e;vertical-align:top;\">\n <ul style=\"margin:0;padding-left:16px;\">\n <li>Long (8 chars)</li>\n <li>Conflicts with user activity</li>\n <li>Generic</li>\n </ul>\n </td>\n</tr>\n</table>\n</div>\n\n<div style=\"background:#2d2d2d;padding:16px;border-radius:6px;margin-bottom:16px;\">\n<h3 style=\"color:#61afef;margin:0 0 12px 0;\">🗣️ How They Sound in UI</h3>\n<pre style=\"background:#252525;padding:12px;border-radius:4px;color:#e0e0e0;margin:0;overflow-x:auto;font-size:12px;\">\n<span style=\"color:#7f848e;\">Badge on kontask card:</span>\n <span style=\"background:#22c55e;color:#fff;padding:1px 6px;border-radius:3px;\">Feature</span> <span style=\"color:#7f848e;\">← just the name, no prefix needed</span>\n\n<span style=\"color:#7f848e;\">Filter dropdown:</span>\n \"Filter by <span style=\"color:#e5c07b;\">topic</span>\" → generic, could be anything\n \"Filter by <span style=\"color:#22c55e;\">lifecycle</span>\" → clear, but sounds formal\n \"Filter by <span style=\"color:#3b82f6;\">phase</span>\" → \"what phase is this work in?\"\n \"Filter by <span style=\"color:#ec4899;\">activity</span>\" → \"what activity type?\"\n\n<span style=\"color:#7f848e;\">API/code:</span>\n kontask.topic = \"feature\" <span style=\"color:#7f848e;\">← current</span>\n kontask.lifecycle = \"feature\" <span style=\"color:#7f848e;\">← more descriptive</span>\n kontask.phase = \"feature\" <span style=\"color:#7f848e;\">← shorter</span>\n</pre>\n</div>\n\n<div style=\"background:#2d2d2d;padding:16px;border-radius:6px;margin-bottom:16px;\">\n<h3 style=\"color:#c678dd;margin:0 0 12px 0;\">🤔 Key Consideration</h3>\n<p style=\"margin:0 0 12px 0;color:#abb2bf;\">\"Topic\" is <strong>intentionally generic</strong> because:</p>\n<ul style=\"margin:0;padding-left:20px;color:#abb2bf;line-height:1.8;\">\n<li>Some items don't fit a clean lifecycle (\"Roadmap\" isn't really a phase)</li>\n<li>Future expansion might add non-lifecycle categories</li>\n<li>Different projects might use different topic sets</li>\n</ul>\n<p style=\"margin:12px 0 0 0;color:#abb2bf;\">\"Lifecycle\" is <strong>more specific</strong> which:</p>\n<ul style=\"margin:0;padding-left:20px;color:#abb2bf;line-height:1.8;\">\n<li>Makes the purpose immediately clear</li>\n<li>Aligns with SDLC terminology</li>\n<li>But locks us into that mental model</li>\n</ul>\n</div>\n\n<div style=\"background:#2d2d2d;padding:16px;border-radius:6px;margin-bottom:16px;\">\n<h3 style=\"color:#f43f5e;margin:0 0 12px 0;\">💬 My Recommendation</h3>\n<div style=\"background:#252525;padding:16px;border-radius:4px;\">\n<p style=\"margin:0 0 12px 0;color:#98c379;font-weight:bold;font-size:14px;\">Keep \"Topic\" but document it as \"Lifecycle Topics\"</p>\n<ul style=\"margin:0;padding-left:20px;color:#abb2bf;line-height:1.8;\">\n<li><strong>In code:</strong> <code>gvTopic</code>, <code>topic_id</code> (short, stable)</li>\n<li><strong>In docs:</strong> \"Lifecycle topics\" (explains the concept)</li>\n<li><strong>In UI:</strong> Just show the topic name, no label needed</li>\n<li><strong>Avoids:</strong> Renaming all files, types, APIs</li>\n</ul>\n<p style=\"margin:16px 0 0 0;color:#7f848e;font-size:12px;\">The 12 items ARE lifecycle phases, but calling them \"topics\" keeps the system flexible.</p>\n</div>\n</div>\n\n<div style=\"background:#2d2d2d;padding:16px;border-radius:6px;\">\n<h3 style=\"color:#98c379;margin:0 0 12px 0;\">📚 Final Vocabulary</h3>\n<pre style=\"background:#252525;padding:12px;border-radius:4px;color:#e0e0e0;margin:0;overflow-x:auto;\">\n<span style=\"color:#e5c07b;font-weight:bold;\">Topic</span> = WHAT lifecycle phase (Requirements → Roadmap)\n<span style=\"color:#61afef;font-weight:bold;\">Domain</span> = WHERE in the system (Frontend, Database, Security...)\n<span style=\"color:#c678dd;font-weight:bold;\">Flow</span> = WHY/tracking unit (feature, bugfix, refactor...)\n</pre>\n</div>\n\n</div>",
"requestedAt": "2026-01-10T10:50:00.000Z",
"requestId": "1d984d49-7a0b-43fe-8cc7-355d83c11099",
"choices": [
{
"label": "Keep 'Topic'",
"value": "Keep 'Topic' in code but document as 'Lifecycle Topics'. Avoids renaming, stays flexible.",
"primary": true
},
{
"label": "Rename to 'Lifecycle'",
"value": "Rename gvTopic to gvLifecycle. More descriptive but requires refactoring."
},
{
"label": "Rename to 'Phase'",
"value": "Rename gvTopic to gvPhase. Shorter, clear meaning, moderate refactor."
},
{
"label": "Use 'Activity'",
"value": "Rename gvTopic to gvActivity. No ordering implied, describes what you're doing."
}
],
"turnTiming": {
"totalMs": 48745,
"ttfeMs": 54,
"thinkingMs": 48691,
"toolExecutionMs": 0,
"toolCallCount": 0,
"thinkingPct": 100,
"toolsPct": 0,
"ttfePct": 0
}
},
"createdBy": "claude",
"createdAt": "2026-01-10T10:33:44.121Z",
"updatedAt": "2026-01-10T10:33:48.469Z",
"requestId": "1d984d49-7a0b-43fe-8cc7-355d83c11099",
"scope": "vibetools",
"tags": [
"schema",
"naming",
"architecture"
],
"sessionId": "ses_7c4eba4a-596",
"flowId": "flow_01KEHQ5A6Y7SHWCMHHZYGBC592",
"flowLinks": [
{
"flowId": "flow_01KEHQ5A6Y7SHWCMHHZYGBC592",
"edgeType": "evidence",
"createdAt": "2026-01-10T10:33:44.121Z"
}
]
}