← Back to Kontasks
Action Decisions: The Hidden Decision Type
Expanding gvDecision to capture action/flow decisions not just design decisions
Output
Action Decisions: The Hidden Type
Great catch - there are TWO categories of decisions
Design decisions (what to build) AND action decisions (how to proceed).
Decision Categories
Design Decisions (what we captured so far) "Use JSONL for storage" "Add accountId to Session type" "Keep /accounts/switch endpoint" → Affect the codebase structure Action Decisions (missing!) "Commit now vs test first" "Continue vs stop and ask" "Fix this bug now vs note for later" "Read more files vs start coding" → Affect the workflow/process Deferred Decisions (when Claude stops to ask) "Should I use X or Y?" → kontask "Is this the right approach?" → kontask → Blocked until human responds
Action Decisions from That Turn
● Action: "Run type check before testing" Chose: deno check first, then deno test Alternative: Jump straight to tests ● Action: "Continue from previous kontask plan" Chose: Follow Phase 1 from approved kontask Alternative: Re-evaluate the plan ● Action: "Read multiple files to understand structure" Chose: config.ts, account-switcher.ts, claude.ts, session.ts, types.ts Alternative: Start editing with partial understanding ● Action: "Commit after tests pass" Chose: Tests pass → commit immediately Alternative: Keep going with more changes ● Action: "Copy credentials vs move" Chose: cp (safer, original preserved) Alternative: mv (cleaner but riskier)
Why Action Decisions Matter
Scenario: Claude commits untested code Without action tracking: User sees: "Committed changes" User doesn't know: Tests were skipped Result: Bug ships, blame game With action tracking: ● Action: "Commit without running tests" reason: "Tests take 2min, user said 'quick fix'" risk: medium User sees: "Committed (tests skipped)" User can: Review, request tests, or accept risk
Expanded DecisionType
type DecisionType = // Design decisions (affect codebase) | "architecture" // System design, structure | "pattern" // Code pattern, convention | "library" // Dependency choice | "naming" // Names for things | "api" // API design, endpoints | "data" // Data model, schema | "ux" // User experience | "tradeoff" // Explicit tradeoff // Action decisions (affect workflow) NEW | "action:test" // Test now vs later vs skip | "action:commit" // Commit now vs batch more | "action:explore" // Read more vs start coding | "action:defer" // Stop and ask human | "action:rollback" // Undo vs push forward | "action:scope"; // Fix now vs note for later
Deferred Decisions (Kontask Link)
interface gvDecision { // ... existing fields ... // For deferred decisions deferred?: { kontaskId: string; // The kontask that asked resolvedBy?: string; // The kontask response question: string; // What Claude asked }; // For action decisions risk?: "low" | "medium" | "high"; // Risk of this action reversible?: boolean; // Can undo? }
The Decision Spectrum
Low friction High friction ─────────────────────────────────────────────────────── Auto-decided Recorded Surfaced Deferred (Claude just does) (logged quietly) (shown to user) (asks human) "Read file" "Run tests" "Skip tests" "Which approach?" "Edit code" "Commit now" "Commit untested" "Is this right?" "Search grep" "Copy vs move" "Delete data" "Should I proceed?"
UI Implications
Flow view shows both: ● Design: Use JSONL for storage (architecture) ● Action: Commit after type check (action:commit) ● Design: Add accountId to Session (data) ● Action: Skip full test suite ⚠ risk:medium ○ Defer: "Should I remove old endpoint?" → kontask-123 ● Design: Keep endpoint, repurpose (api) ← resolved Filter options: [All] [Design] [Action] [Deferred]
Summary
Decisions are a spectrum, not a single type
| Category | Types | Visibility |
|---|---|---|
| Design | architecture, pattern, api, data... | Always shown |
| Action | action:test, action:commit, action:scope... | Show if risky |
| Deferred | Links to kontask | Blocks turn |
Quick Actions
Original Request
No layout configured
Details
Type
General
Status
Completed
Scope
vibetools
Tags
gvshellgvhubdecisionsdata-model
Created
9 Jan 2026, 1:39 pm
Updated
9 Jan 2026, 1:39 pm
Timing
⏱️ 68.0s
0 tools
● TTFE 0%
● Thinking 100%
● Tools 0%
Created By
claude
Raw Data
{
"id": "6ba6a5ad-fa91-40ca-a171-3ba11079cc63",
"type": "general",
"status": "completed",
"title": "Action Decisions: The Hidden Decision Type",
"description": "Expanding gvDecision to capture action/flow decisions not just design decisions",
"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 20px 0;\">Action Decisions: The Hidden Type</h2>\n\n<div style=\"background:#2d2d2d;padding:16px;border-radius:6px;margin-bottom:20px;border-left:4px solid #f97316;\">\n<p style=\"margin:0;color:#f97316;font-weight:bold;\">Great catch - there are TWO categories of decisions</p>\n<p style=\"margin:8px 0 0 0;color:#e0e0e0;\">Design decisions (what to build) AND action decisions (how to proceed).</p>\n</div>\n\n<h3 style=\"font-family:sans-serif;color:#fff;margin:0 0 12px 0;\">Decision Categories</h3>\n\n<div style=\"background:#2d2d2d;padding:16px;border-radius:6px;margin-bottom:16px;\">\n<pre style=\"margin:0;line-height:2;color:#e0e0e0;font-size:13px;\">\n<span style=\"color:#c678dd;font-weight:bold;\">Design Decisions</span> <span style=\"color:#7f848e;\">(what we captured so far)</span>\n \"Use JSONL for storage\"\n \"Add accountId to Session type\"\n \"Keep /accounts/switch endpoint\"\n <span style=\"color:#7f848e;\">→ Affect the codebase structure</span>\n\n<span style=\"color:#f97316;font-weight:bold;\">Action Decisions</span> <span style=\"color:#7f848e;\">(missing!)</span>\n \"Commit now vs test first\"\n \"Continue vs stop and ask\"\n \"Fix this bug now vs note for later\"\n \"Read more files vs start coding\"\n <span style=\"color:#7f848e;\">→ Affect the workflow/process</span>\n\n<span style=\"color:#61afef;font-weight:bold;\">Deferred Decisions</span> <span style=\"color:#7f848e;\">(when Claude stops to ask)</span>\n \"Should I use X or Y?\" → kontask\n \"Is this the right approach?\" → kontask\n <span style=\"color:#7f848e;\">→ Blocked until human responds</span>\n</pre>\n</div>\n\n<h3 style=\"font-family:sans-serif;color:#fff;margin:0 0 12px 0;\">Action Decisions from That Turn</h3>\n\n<div style=\"background:#2d2d2d;padding:16px;border-radius:6px;margin-bottom:16px;\">\n<pre style=\"margin:0;line-height:1.8;color:#e0e0e0;font-size:13px;\">\n<span style=\"color:#f97316;\">●</span> <span style=\"color:#f97316;\">Action:</span> \"Run type check before testing\"\n <span style=\"color:#7f848e;\">Chose: deno check first, then deno test</span>\n <span style=\"color:#7f848e;\">Alternative: Jump straight to tests</span>\n\n<span style=\"color:#f97316;\">●</span> <span style=\"color:#f97316;\">Action:</span> \"Continue from previous kontask plan\"\n <span style=\"color:#7f848e;\">Chose: Follow Phase 1 from approved kontask</span>\n <span style=\"color:#7f848e;\">Alternative: Re-evaluate the plan</span>\n\n<span style=\"color:#f97316;\">●</span> <span style=\"color:#f97316;\">Action:</span> \"Read multiple files to understand structure\"\n <span style=\"color:#7f848e;\">Chose: config.ts, account-switcher.ts, claude.ts, session.ts, types.ts</span>\n <span style=\"color:#7f848e;\">Alternative: Start editing with partial understanding</span>\n\n<span style=\"color:#f97316;\">●</span> <span style=\"color:#f97316;\">Action:</span> \"Commit after tests pass\"\n <span style=\"color:#7f848e;\">Chose: Tests pass → commit immediately</span>\n <span style=\"color:#7f848e;\">Alternative: Keep going with more changes</span>\n\n<span style=\"color:#f97316;\">●</span> <span style=\"color:#f97316;\">Action:</span> \"Copy credentials vs move\"\n <span style=\"color:#7f848e;\">Chose: cp (safer, original preserved)</span>\n <span style=\"color:#7f848e;\">Alternative: mv (cleaner but riskier)</span>\n</pre>\n</div>\n\n<h3 style=\"font-family:sans-serif;color:#fff;margin:0 0 12px 0;\">Why Action Decisions Matter</h3>\n\n<div style=\"background:#2d2d2d;padding:16px;border-radius:6px;margin-bottom:16px;border-left:4px solid #f43f5e;\">\n<pre style=\"margin:0;line-height:1.8;color:#e0e0e0;font-size:13px;\">\n<span style=\"color:#f43f5e;\">Scenario: Claude commits untested code</span>\n\nWithout action tracking:\n User sees: \"Committed changes\"\n User doesn't know: Tests were skipped\n Result: Bug ships, blame game\n\nWith action tracking:\n <span style=\"color:#f97316;\">●</span> Action: \"Commit without running tests\"\n reason: \"Tests take 2min, user said 'quick fix'\"\n risk: medium\n User sees: <span style=\"color:#e5c07b;\">\"Committed (tests skipped)\"</span>\n User can: Review, request tests, or accept risk\n</pre>\n</div>\n\n<h3 style=\"font-family:sans-serif;color:#fff;margin:0 0 12px 0;\">Expanded DecisionType</h3>\n\n<div style=\"background:#2d2d2d;padding:16px;border-radius:6px;margin-bottom:16px;\">\n<pre style=\"margin:0;line-height:1.6;color:#e0e0e0;font-size:12px;background:#1e1e1e;padding:12px;border-radius:4px;\">\n<span style=\"color:#c678dd;\">type</span> <span style=\"color:#e5c07b;\">DecisionType</span> = \n <span style=\"color:#7f848e;\">// Design decisions (affect codebase)</span>\n | <span style=\"color:#98c379;\">\"architecture\"</span> <span style=\"color:#7f848e;\">// System design, structure</span>\n | <span style=\"color:#98c379;\">\"pattern\"</span> <span style=\"color:#7f848e;\">// Code pattern, convention</span>\n | <span style=\"color:#98c379;\">\"library\"</span> <span style=\"color:#7f848e;\">// Dependency choice</span>\n | <span style=\"color:#98c379;\">\"naming\"</span> <span style=\"color:#7f848e;\">// Names for things</span>\n | <span style=\"color:#98c379;\">\"api\"</span> <span style=\"color:#7f848e;\">// API design, endpoints</span>\n | <span style=\"color:#98c379;\">\"data\"</span> <span style=\"color:#7f848e;\">// Data model, schema</span>\n | <span style=\"color:#98c379;\">\"ux\"</span> <span style=\"color:#7f848e;\">// User experience</span>\n | <span style=\"color:#98c379;\">\"tradeoff\"</span> <span style=\"color:#7f848e;\">// Explicit tradeoff</span>\n \n <span style=\"color:#7f848e;\">// Action decisions (affect workflow)</span> <span style=\"color:#22c55e;\">NEW</span>\n | <span style=\"color:#98c379;\">\"action:test\"</span> <span style=\"color:#7f848e;\">// Test now vs later vs skip</span>\n | <span style=\"color:#98c379;\">\"action:commit\"</span> <span style=\"color:#7f848e;\">// Commit now vs batch more</span>\n | <span style=\"color:#98c379;\">\"action:explore\"</span> <span style=\"color:#7f848e;\">// Read more vs start coding</span>\n | <span style=\"color:#98c379;\">\"action:defer\"</span> <span style=\"color:#7f848e;\">// Stop and ask human</span>\n | <span style=\"color:#98c379;\">\"action:rollback\"</span> <span style=\"color:#7f848e;\">// Undo vs push forward</span>\n | <span style=\"color:#98c379;\">\"action:scope\"</span>; <span style=\"color:#7f848e;\">// Fix now vs note for later</span>\n</pre>\n</div>\n\n<h3 style=\"font-family:sans-serif;color:#fff;margin:0 0 12px 0;\">Deferred Decisions (Kontask Link)</h3>\n\n<div style=\"background:#2d2d2d;padding:16px;border-radius:6px;margin-bottom:16px;\">\n<pre style=\"margin:0;line-height:1.6;color:#e0e0e0;font-size:12px;background:#1e1e1e;padding:12px;border-radius:4px;\">\n<span style=\"color:#c678dd;\">interface</span> <span style=\"color:#e5c07b;\">gvDecision</span> {\n <span style=\"color:#7f848e;\">// ... existing fields ...</span>\n \n <span style=\"color:#7f848e;\">// For deferred decisions</span>\n deferred?: {\n kontaskId: <span style=\"color:#98c379;\">string</span>; <span style=\"color:#7f848e;\">// The kontask that asked</span>\n resolvedBy?: <span style=\"color:#98c379;\">string</span>; <span style=\"color:#7f848e;\">// The kontask response</span>\n question: <span style=\"color:#98c379;\">string</span>; <span style=\"color:#7f848e;\">// What Claude asked</span>\n };\n \n <span style=\"color:#7f848e;\">// For action decisions</span>\n risk?: <span style=\"color:#98c379;\">\"low\"</span> | <span style=\"color:#98c379;\">\"medium\"</span> | <span style=\"color:#98c379;\">\"high\"</span>; <span style=\"color:#7f848e;\">// Risk of this action</span>\n reversible?: <span style=\"color:#98c379;\">boolean</span>; <span style=\"color:#7f848e;\">// Can undo?</span>\n}\n</pre>\n</div>\n\n<h3 style=\"font-family:sans-serif;color:#fff;margin:0 0 12px 0;\">The Decision Spectrum</h3>\n\n<div style=\"background:#2d2d2d;padding:16px;border-radius:6px;margin-bottom:16px;\">\n<pre style=\"margin:0;line-height:1.8;color:#e0e0e0;font-size:13px;\">\n<span style=\"color:#7f848e;\">Low friction High friction</span>\n<span style=\"color:#7f848e;\">───────────────────────────────────────────────────────</span>\n\n<span style=\"color:#22c55e;\">Auto-decided</span> <span style=\"color:#e5c07b;\">Recorded</span> <span style=\"color:#f97316;\">Surfaced</span> <span style=\"color:#f43f5e;\">Deferred</span>\n(Claude just does) (logged quietly) (shown to user) (asks human)\n\n \"Read file\" \"Run tests\" \"Skip tests\" \"Which approach?\"\n \"Edit code\" \"Commit now\" \"Commit untested\" \"Is this right?\"\n \"Search grep\" \"Copy vs move\" \"Delete data\" \"Should I proceed?\"\n</pre>\n</div>\n\n<h3 style=\"font-family:sans-serif;color:#fff;margin:0 0 12px 0;\">UI Implications</h3>\n\n<div style=\"background:#2d2d2d;padding:16px;border-radius:6px;margin-bottom:20px;\">\n<pre style=\"margin:0;line-height:1.8;color:#e0e0e0;font-size:13px;\">\n<span style=\"color:#7f848e;\">Flow view shows both:</span>\n\n<span style=\"color:#c678dd;\">● Design:</span> Use JSONL for storage <span style=\"color:#7f848e;\">(architecture)</span>\n<span style=\"color:#f97316;\">● Action:</span> Commit after type check <span style=\"color:#7f848e;\">(action:commit)</span>\n<span style=\"color:#c678dd;\">● Design:</span> Add accountId to Session <span style=\"color:#7f848e;\">(data)</span>\n<span style=\"color:#f97316;\">● Action:</span> Skip full test suite <span style=\"color:#e5c07b;\">⚠ risk:medium</span>\n<span style=\"color:#61afef;\">○ Defer:</span> \"Should I remove old endpoint?\" <span style=\"color:#7f848e;\">→ kontask-123</span>\n<span style=\"color:#c678dd;\">● Design:</span> Keep endpoint, repurpose <span style=\"color:#7f848e;\">(api) ← resolved</span>\n\n<span style=\"color:#7f848e;\">Filter options: [All] [Design] [Action] [Deferred]</span>\n</pre>\n</div>\n\n<hr style=\"border:none;border-top:1px solid #3d3d3d;margin:0 0 20px 0;\">\n\n<h3 style=\"font-family:sans-serif;color:#fff;margin:0 0 12px 0;\">Summary</h3>\n\n<div style=\"background:#2d2d2d;padding:16px;border-radius:6px;border-left:4px solid #22c55e;\">\n<p style=\"margin:0;color:#22c55e;font-weight:bold;\">Decisions are a spectrum, not a single type</p>\n<table style=\"width:100%;border-collapse:collapse;font-size:12px;margin-top:12px;\">\n<tr style=\"border-bottom:1px solid #3d3d3d;\">\n<th style=\"text-align:left;padding:8px 0;color:#7f848e;\">Category</th>\n<th style=\"text-align:left;padding:8px 0;color:#7f848e;\">Types</th>\n<th style=\"text-align:left;padding:8px 0;color:#7f848e;\">Visibility</th>\n</tr>\n<tr style=\"border-bottom:1px solid #3d3d3d;\">\n<td style=\"padding:8px 0;color:#c678dd;\">Design</td>\n<td style=\"padding:8px 0;color:#7f848e;\">architecture, pattern, api, data...</td>\n<td style=\"padding:8px 0;color:#7f848e;\">Always shown</td>\n</tr>\n<tr style=\"border-bottom:1px solid #3d3d3d;\">\n<td style=\"padding:8px 0;color:#f97316;\">Action</td>\n<td style=\"padding:8px 0;color:#7f848e;\">action:test, action:commit, action:scope...</td>\n<td style=\"padding:8px 0;color:#7f848e;\">Show if risky</td>\n</tr>\n<tr>\n<td style=\"padding:8px 0;color:#61afef;\">Deferred</td>\n<td style=\"padding:8px 0;color:#7f848e;\">Links to kontask</td>\n<td style=\"padding:8px 0;color:#7f848e;\">Blocks turn</td>\n</tr>\n</table>\n</div>\n\n</div>",
"requestedAt": "2026-01-09T03:00:00.000Z",
"requestId": "8519ef5e-bae1-478d-b3dd-998d0afb52dc",
"choices": [
{
"label": "Add action types",
"value": "Add the action:* decision types and risk field to the gvDecision interface",
"primary": true
},
{
"label": "Keep design only",
"value": "Keep gvDecision focused on design decisions, track actions separately"
},
{
"label": "Full spectrum model",
"value": "Implement the full decision spectrum with design, action, and deferred categories"
}
],
"turnTiming": {
"totalMs": 68020,
"ttfeMs": 50,
"thinkingMs": 67970,
"toolExecutionMs": 0,
"toolCallCount": 0,
"thinkingPct": 100,
"toolsPct": 0,
"ttfePct": 0
}
},
"createdBy": "claude",
"createdAt": "2026-01-09T03:39:04.328Z",
"updatedAt": "2026-01-09T03:39:11.815Z",
"requestId": "8519ef5e-bae1-478d-b3dd-998d0afb52dc",
"scope": "vibetools",
"tags": [
"gvshell",
"gvhub",
"decisions",
"data-model"
],
"targetUser": "claude"
}