refactor: rename Ephemeral → Wisp (Steam Engine metaphor)

Wisp = ephemeral vapor produced by the Steam Engine (Gas Town).
This aligns with the metaphor:
- Claude = Fire
- Claude Code = Steam
- Gas Town = Steam Engine
- Wisps = ephemeral vapor it produces

Changes:
- types.Issue.Ephemeral → types.Issue.Wisp
- types.IssueFilter.Ephemeral → types.IssueFilter.Wisp
- JSON field: "ephemeral" → "wisp"
- CLI flag: --ephemeral → --wisp (bd cleanup)
- All tests updated

Note: SQLite column remains "ephemeral" (no migration needed).
This is a breaking change for JSON consumers using 0.33.0.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
Steve Yegge
2025-12-21 15:22:45 -08:00
parent 61361995cb
commit 358d076fde
23 changed files with 214 additions and 209 deletions

View File

@@ -292,7 +292,7 @@ Example:
return
}
// Clone the subgraph (deprecated command, non-ephemeral for backwards compatibility)
// Clone the subgraph (deprecated command, non-wisp for backwards compatibility)
result, err := cloneSubgraph(ctx, store, subgraph, vars, assignee, actor, false)
if err != nil {
fmt.Fprintf(os.Stderr, "Error instantiating template: %v\n", err)
@@ -453,8 +453,8 @@ func substituteVariables(text string, vars map[string]string) string {
// cloneSubgraph creates new issues from the template with variable substitution
// If assignee is non-empty, it will be set on the root epic
// If ephemeral is true, spawned issues are marked for bulk deletion when closed (bd-2vh3)
func cloneSubgraph(ctx context.Context, s storage.Storage, subgraph *TemplateSubgraph, vars map[string]string, assignee string, actorName string, ephemeral bool) (*InstantiateResult, error) {
// If wisp is true, spawned issues are marked for bulk deletion when closed (bd-2vh3)
func cloneSubgraph(ctx context.Context, s storage.Storage, subgraph *TemplateSubgraph, vars map[string]string, assignee string, actorName string, wisp bool) (*InstantiateResult, error) {
if s == nil {
return nil, fmt.Errorf("no database connection")
}
@@ -484,7 +484,7 @@ func cloneSubgraph(ctx context.Context, s storage.Storage, subgraph *TemplateSub
IssueType: oldIssue.IssueType,
Assignee: issueAssignee,
EstimatedMinutes: oldIssue.EstimatedMinutes,
Ephemeral: ephemeral, // bd-2vh3: mark for cleanup when closed
Wisp: wisp, // bd-2vh3: mark for cleanup when closed
CreatedAt: time.Now(),
UpdatedAt: time.Now(),
}