feat: add crystallizes column to sqlite storage
Adds crystallizes column for work economics (compounds vs evaporates) per Decision 006. Includes migration 036 and updates to all INSERT/SELECT queries in issues.go, queries.go, dependencies.go, and transaction.go. Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
committed by
Steve Yegge
parent
0ed349b3ed
commit
f5cd36752d
@@ -273,6 +273,8 @@ func (s *SQLiteStorage) GetIssue(ctx context.Context, id string) (*types.Issue,
|
||||
var pinned sql.NullInt64
|
||||
// Template field
|
||||
var isTemplate sql.NullInt64
|
||||
// Crystallizes field (work economics)
|
||||
var crystallizes sql.NullInt64
|
||||
// Gate fields
|
||||
var awaitType sql.NullString
|
||||
var awaitID sql.NullString
|
||||
@@ -305,7 +307,7 @@ func (s *SQLiteStorage) GetIssue(ctx context.Context, id string) (*types.Issue,
|
||||
created_at, created_by, owner, updated_at, closed_at, external_ref,
|
||||
compaction_level, compacted_at, compacted_at_commit, original_size, source_repo, close_reason,
|
||||
deleted_at, deleted_by, delete_reason, original_type,
|
||||
sender, ephemeral, pinned, is_template,
|
||||
sender, ephemeral, pinned, is_template, crystallizes,
|
||||
await_type, await_id, timeout_ns, waiters,
|
||||
hook_bead, role_bead, agent_state, last_activity, role_type, rig, mol_type,
|
||||
event_kind, actor, target, payload,
|
||||
@@ -319,7 +321,7 @@ func (s *SQLiteStorage) GetIssue(ctx context.Context, id string) (*types.Issue,
|
||||
&issue.CreatedAt, &issue.CreatedBy, &owner, &issue.UpdatedAt, &closedAt, &externalRef,
|
||||
&issue.CompactionLevel, &compactedAt, &compactedAtCommit, &originalSize, &sourceRepo, &closeReason,
|
||||
&deletedAt, &deletedBy, &deleteReason, &originalType,
|
||||
&sender, &wisp, &pinned, &isTemplate,
|
||||
&sender, &wisp, &pinned, &isTemplate, &crystallizes,
|
||||
&awaitType, &awaitID, &timeoutNs, &waiters,
|
||||
&hookBead, &roleBead, &agentState, &lastActivity, &roleType, &rig, &molType,
|
||||
&eventKind, &actor, &target, &payload,
|
||||
@@ -392,6 +394,10 @@ func (s *SQLiteStorage) GetIssue(ctx context.Context, id string) (*types.Issue,
|
||||
if isTemplate.Valid && isTemplate.Int64 != 0 {
|
||||
issue.IsTemplate = true
|
||||
}
|
||||
// Crystallizes field (work economics)
|
||||
if crystallizes.Valid && crystallizes.Int64 != 0 {
|
||||
issue.Crystallizes = true
|
||||
}
|
||||
// Gate fields
|
||||
if awaitType.Valid {
|
||||
issue.AwaitType = awaitType.String
|
||||
@@ -558,6 +564,8 @@ func (s *SQLiteStorage) GetIssueByExternalRef(ctx context.Context, externalRef s
|
||||
var pinned sql.NullInt64
|
||||
// Template field
|
||||
var isTemplate sql.NullInt64
|
||||
// Crystallizes field (work economics)
|
||||
var crystallizes sql.NullInt64
|
||||
// Gate fields
|
||||
var awaitType sql.NullString
|
||||
var awaitID sql.NullString
|
||||
@@ -571,7 +579,7 @@ func (s *SQLiteStorage) GetIssueByExternalRef(ctx context.Context, externalRef s
|
||||
created_at, created_by, owner, updated_at, closed_at, external_ref,
|
||||
compaction_level, compacted_at, compacted_at_commit, original_size, source_repo, close_reason,
|
||||
deleted_at, deleted_by, delete_reason, original_type,
|
||||
sender, ephemeral, pinned, is_template,
|
||||
sender, ephemeral, pinned, is_template, crystallizes,
|
||||
await_type, await_id, timeout_ns, waiters
|
||||
FROM issues
|
||||
WHERE external_ref = ?
|
||||
@@ -582,7 +590,7 @@ func (s *SQLiteStorage) GetIssueByExternalRef(ctx context.Context, externalRef s
|
||||
&issue.CreatedAt, &issue.CreatedBy, &owner, &issue.UpdatedAt, &closedAt, &externalRefCol,
|
||||
&issue.CompactionLevel, &compactedAt, &compactedAtCommit, &originalSize, &sourceRepo, &closeReason,
|
||||
&deletedAt, &deletedBy, &deleteReason, &originalType,
|
||||
&sender, &wisp, &pinned, &isTemplate,
|
||||
&sender, &wisp, &pinned, &isTemplate, &crystallizes,
|
||||
&awaitType, &awaitID, &timeoutNs, &waiters,
|
||||
)
|
||||
|
||||
@@ -652,6 +660,10 @@ func (s *SQLiteStorage) GetIssueByExternalRef(ctx context.Context, externalRef s
|
||||
if isTemplate.Valid && isTemplate.Int64 != 0 {
|
||||
issue.IsTemplate = true
|
||||
}
|
||||
// Crystallizes field (work economics)
|
||||
if crystallizes.Valid && crystallizes.Int64 != 0 {
|
||||
issue.Crystallizes = true
|
||||
}
|
||||
// Gate fields
|
||||
if awaitType.Valid {
|
||||
issue.AwaitType = awaitType.String
|
||||
@@ -1938,7 +1950,7 @@ func (s *SQLiteStorage) SearchIssues(ctx context.Context, query string, filter t
|
||||
status, priority, issue_type, assignee, estimated_minutes,
|
||||
created_at, created_by, owner, updated_at, closed_at, external_ref, source_repo, close_reason,
|
||||
deleted_at, deleted_by, delete_reason, original_type,
|
||||
sender, ephemeral, pinned, is_template,
|
||||
sender, ephemeral, pinned, is_template, crystallizes,
|
||||
await_type, await_id, timeout_ns, waiters
|
||||
FROM issues
|
||||
%s
|
||||
|
||||
Reference in New Issue
Block a user