sequel-duckdb 0.1.0 → 0.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (63) hide show
  1. checksums.yaml +4 -4
  2. data/.beads/.beads-credential-key +1 -0
  3. data/.beads/.gitignore +66 -0
  4. data/.beads/README.md +85 -0
  5. data/.beads/config.yaml +56 -0
  6. data/.beads/hooks/post-checkout +24 -0
  7. data/.beads/hooks/post-merge +24 -0
  8. data/.beads/hooks/pre-commit +24 -0
  9. data/.beads/hooks/pre-push +24 -0
  10. data/.beads/hooks/prepare-commit-msg +24 -0
  11. data/.beads/metadata.json +7 -0
  12. data/.kiro/specs/advanced-sql-features-implementation/design.md +3 -1
  13. data/.kiro/specs/advanced-sql-features-implementation/requirements.md +1 -1
  14. data/.kiro/specs/advanced-sql-features-implementation/tasks.md +5 -1
  15. data/.kiro/specs/duckdb-sql-syntax-compatibility/design.md +15 -1
  16. data/.kiro/specs/duckdb-sql-syntax-compatibility/requirements.md +1 -1
  17. data/.kiro/specs/duckdb-sql-syntax-compatibility/tasks.md +13 -0
  18. data/.kiro/specs/edge-cases-and-validation-fixes/requirements.md +1 -1
  19. data/.kiro/specs/integration-test-database-setup/requirements.md +1 -1
  20. data/.kiro/specs/sequel-duckdb-adapter/design.md +8 -1
  21. data/.kiro/specs/sequel-duckdb-adapter/requirements.md +10 -10
  22. data/.kiro/specs/sequel-duckdb-adapter/tasks.md +48 -3
  23. data/.kiro/specs/sql-expression-handling-fix/design.md +34 -1
  24. data/.kiro/specs/sql-expression-handling-fix/requirements.md +1 -1
  25. data/.kiro/specs/sql-expression-handling-fix/tasks.md +3 -0
  26. data/.kiro/specs/test-infrastructure-improvements/requirements.md +1 -1
  27. data/.kiro/steering/product.md +5 -1
  28. data/.kiro/steering/structure.md +1 -1
  29. data/.kiro/steering/tech.md +14 -1
  30. data/.kiro/steering/testing.md +22 -1
  31. data/.mdformat.toml +2 -0
  32. data/.release-please-manifest.json +3 -0
  33. data/.rubocop.yml +116 -58
  34. data/.rubocop_todo.yml +323 -0
  35. data/AGENTS.md +154 -0
  36. data/API_DOCUMENTATION.md +73 -49
  37. data/CHANGELOG.md +46 -10
  38. data/FINAL_STATUS.md +99 -0
  39. data/LICENSE +1 -1
  40. data/MIGRATION_EXAMPLES.md +1 -1
  41. data/PERFORMANCE_OPTIMIZATIONS.md +4 -1
  42. data/README.md +90 -1
  43. data/REFACTORING_SUMMARY.md +264 -0
  44. data/Rakefile +21 -5
  45. data/TASK_10.2_IMPLEMENTATION_SUMMARY.md +19 -1
  46. data/docs/DUCKDB_SQL_PATTERNS.md +39 -1
  47. data/docs/TASK_12_VERIFICATION_SUMMARY.md +14 -1
  48. data/justfile +52 -0
  49. data/lib/sequel/adapters/duckdb.rb +137 -108
  50. data/lib/sequel/adapters/shared/duckdb.rb +292 -1490
  51. data/lib/sequel/duckdb/helpers/copier.rb +50 -0
  52. data/lib/sequel/duckdb/helpers/pathifier.rb +141 -0
  53. data/lib/sequel/duckdb/version.rb +5 -2
  54. data/plans/date_arithmetic.md +420 -0
  55. data/plans/engineering/Sequel.md +471 -0
  56. data/plans/engineering/duckdb.md +712 -0
  57. data/plans/engineering/sqlite.md +453 -0
  58. data/plans/mock_connection_bug.md +333 -0
  59. data/plans/mock_without_driver_gem.md +371 -0
  60. data/plans/over_engineering_analysis.md +122 -0
  61. data/plans/schema_management.md +383 -0
  62. data/release-please-config.json +14 -0
  63. metadata +49 -27
data/.rubocop_todo.yml ADDED
@@ -0,0 +1,323 @@
1
+ # This configuration was generated by
2
+ # `rubocop --auto-gen-config --auto-gen-only-exclude --exclude-limit 10000`
3
+ # on 2026-02-25 14:47:24 UTC using RuboCop version 1.84.2.
4
+ # The point is for the user to remove these configuration records
5
+ # one by one as the offenses are removed from the code base.
6
+ # Note that changes in the inspected code, or installation of new
7
+ # versions of RuboCop, may require this file to be generated again.
8
+
9
+ # Offense count: 1
10
+ Gemspec/RequiredRubyVersion:
11
+ Exclude:
12
+ - 'sequel-duckdb.gemspec'
13
+
14
+ # Offense count: 1
15
+ # This cop supports safe autocorrection (--autocorrect).
16
+ # Configuration parameters: EnforcedStyle, IndentationWidth.
17
+ # SupportedStyles: with_first_argument, with_fixed_indentation
18
+ Layout/ArgumentAlignment:
19
+ Exclude:
20
+ - 'test/date_arithmetic_test.rb'
21
+
22
+ # Offense count: 50
23
+ # This cop supports safe autocorrection (--autocorrect).
24
+ # Configuration parameters: EnforcedStyle.
25
+ # SupportedStyles: empty_lines, empty_lines_except_namespace, empty_lines_special, no_empty_lines, beginning_only, ending_only
26
+ Layout/EmptyLinesAroundClassBody:
27
+ Exclude:
28
+ - 'lib/sequel/adapters/duckdb.rb'
29
+ - 'lib/sequel/duckdb/helpers/copier.rb'
30
+ - 'lib/sequel/duckdb/helpers/pathifier.rb'
31
+ - 'test/advanced_sql_generation_test.rb'
32
+ - 'test/copier_test.rb'
33
+ - 'test/core_sql_generation_test.rb'
34
+ - 'test/database_test.rb'
35
+ - 'test/dataset_functionality_test.rb'
36
+ - 'test/dataset_test.rb'
37
+ - 'test/date_arithmetic_test.rb'
38
+ - 'test/end_to_end_test.rb'
39
+ - 'test/enhanced_error_mapping_test.rb'
40
+ - 'test/error_handling_test.rb'
41
+ - 'test/mock_adapter_test.rb'
42
+ - 'test/pathifier_test.rb'
43
+ - 'test/performance_basic_test.rb'
44
+ - 'test/performance_test.rb'
45
+ - 'test/schema_introspection_test.rb'
46
+ - 'test/schema_metadata_test.rb'
47
+ - 'test/schema_test.rb'
48
+ - 'test/sequel_conventions_test.rb'
49
+ - 'test/spec_helper.rb'
50
+ - 'test/sql_test.rb'
51
+ - 'test/type_test.rb'
52
+
53
+ # Offense count: 14
54
+ # This cop supports safe autocorrection (--autocorrect).
55
+ # Configuration parameters: EnforcedStyle.
56
+ # SupportedStyles: empty_lines, empty_lines_except_namespace, empty_lines_special, no_empty_lines
57
+ Layout/EmptyLinesAroundModuleBody:
58
+ Exclude:
59
+ - 'lib/sequel/adapters/duckdb.rb'
60
+ - 'lib/sequel/adapters/shared/duckdb.rb'
61
+ - 'lib/sequel/duckdb/version.rb'
62
+ - 'test/spec_helper.rb'
63
+
64
+ # Offense count: 2
65
+ # This cop supports safe autocorrection (--autocorrect).
66
+ # Configuration parameters: AllowForAlignment, AllowBeforeTrailingComments, ForceEqualSignAlignment.
67
+ Layout/ExtraSpacing:
68
+ Exclude:
69
+ - 'test/date_arithmetic_test.rb'
70
+
71
+ # Offense count: 14
72
+ # This cop supports safe autocorrection (--autocorrect).
73
+ # Configuration parameters: IndentationWidth.
74
+ # SupportedStyles: special_inside_parentheses, consistent, align_brackets
75
+ Layout/FirstArrayElementIndentation:
76
+ EnforcedStyle: consistent
77
+
78
+ # Offense count: 1
79
+ # This cop supports safe autocorrection (--autocorrect).
80
+ # Configuration parameters: Width, EnforcedStyleAlignWith, AllowedPatterns.
81
+ # SupportedStylesAlignWith: start_of_line, relative_to_receiver
82
+ Layout/IndentationWidth:
83
+ Exclude:
84
+ - 'lib/sequel/duckdb/helpers/copier.rb'
85
+
86
+ # Offense count: 2
87
+ # This cop supports safe autocorrection (--autocorrect).
88
+ # Configuration parameters: Max, AllowHeredoc, AllowURI, AllowQualifiedName, URISchemes, AllowRBSInlineAnnotation, AllowCopDirectives, AllowedPatterns, SplitStrings.
89
+ # URISchemes: http, https
90
+ Layout/LineLength:
91
+ Exclude:
92
+ - 'lib/sequel/adapters/shared/duckdb.rb'
93
+
94
+ # Offense count: 1
95
+ # This cop supports safe autocorrection (--autocorrect).
96
+ # Configuration parameters: EnforcedStyle.
97
+ # SupportedStyles: symmetrical, new_line, same_line
98
+ Layout/MultilineMethodCallBraceLayout:
99
+ Exclude:
100
+ - 'test/date_arithmetic_test.rb'
101
+
102
+ # Offense count: 50
103
+ # This cop supports safe autocorrection (--autocorrect).
104
+ # Configuration parameters: EnforcedStyle, IndentationWidth.
105
+ # SupportedStyles: aligned, indented, indented_relative_to_receiver
106
+ Layout/MultilineMethodCallIndentation:
107
+ Exclude:
108
+ - 'test/date_arithmetic_test.rb'
109
+
110
+ # Offense count: 4
111
+ # This cop supports safe autocorrection (--autocorrect).
112
+ # Configuration parameters: EnforcedStyle, EnforcedStyleForEmptyBraces.
113
+ # SupportedStyles: space, no_space, compact
114
+ # SupportedStylesForEmptyBraces: space, no_space
115
+ Layout/SpaceInsideHashLiteralBraces:
116
+ Exclude:
117
+ - 'test/date_arithmetic_test.rb'
118
+
119
+ # Offense count: 1
120
+ # This cop supports unsafe autocorrection (--autocorrect-all).
121
+ # Configuration parameters: AllowSafeAssignment.
122
+ Lint/AssignmentInCondition:
123
+ Exclude:
124
+ - 'lib/sequel/adapters/shared/duckdb.rb'
125
+
126
+ # Offense count: 1
127
+ # Configuration parameters: IgnoreLiteralBranches, IgnoreConstantBranches, IgnoreDuplicateElseBranch.
128
+ Lint/DuplicateBranch:
129
+ Exclude:
130
+ - 'lib/sequel/adapters/duckdb.rb'
131
+
132
+ # Offense count: 6
133
+ # This cop supports unsafe autocorrection (--autocorrect-all).
134
+ Lint/NonAtomicFileOperation:
135
+ Exclude:
136
+ - 'test/database_test.rb'
137
+
138
+ # Offense count: 1
139
+ # This cop supports safe autocorrection (--autocorrect).
140
+ Lint/RedundantCopDisableDirective:
141
+ Exclude:
142
+ - 'lib/sequel/adapters/duckdb.rb'
143
+
144
+ # Offense count: 1
145
+ # This cop supports safe autocorrection (--autocorrect).
146
+ # Configuration parameters: AllowUnusedKeywordArguments, IgnoreEmptyMethods, IgnoreNotImplementedMethods, NotImplementedExceptions.
147
+ # NotImplementedExceptions: NotImplementedError
148
+ Lint/UnusedMethodArgument:
149
+ Exclude:
150
+ - 'lib/sequel/adapters/shared/duckdb.rb'
151
+
152
+ # Offense count: 1
153
+ # This cop supports safe autocorrection (--autocorrect).
154
+ # Configuration parameters: ContextCreatingMethods, MethodCreatingMethods.
155
+ Lint/UselessAccessModifier:
156
+ Exclude:
157
+ - 'lib/sequel/adapters/shared/duckdb.rb'
158
+
159
+ # Offense count: 1
160
+ Lint/UselessConstantScoping:
161
+ Exclude:
162
+ - 'lib/sequel/adapters/shared/duckdb.rb'
163
+
164
+ # Offense count: 1
165
+ # Configuration parameters: AllowedMethods, AllowedPatterns, CountRepeatedAttributes, Max.
166
+ Metrics/AbcSize:
167
+ Exclude:
168
+ - 'lib/sequel/adapters/shared/duckdb.rb'
169
+
170
+ # Offense count: 15
171
+ # Configuration parameters: CountComments, Max, CountAsOne.
172
+ Metrics/ClassLength:
173
+ Exclude:
174
+ - 'test/advanced_sql_generation_test.rb'
175
+ - 'test/core_sql_generation_test.rb'
176
+ - 'test/database_test.rb'
177
+ - 'test/dataset_functionality_test.rb'
178
+ - 'test/dataset_test.rb'
179
+ - 'test/date_arithmetic_test.rb'
180
+ - 'test/end_to_end_test.rb'
181
+ - 'test/error_handling_test.rb'
182
+ - 'test/performance_basic_test.rb'
183
+ - 'test/performance_test.rb'
184
+ - 'test/schema_introspection_test.rb'
185
+ - 'test/schema_metadata_test.rb'
186
+ - 'test/schema_test.rb'
187
+ - 'test/sql_test.rb'
188
+ - 'test/type_test.rb'
189
+
190
+ # Offense count: 30
191
+ # Configuration parameters: CountComments, Max, CountAsOne, AllowedMethods, AllowedPatterns.
192
+ Metrics/MethodLength:
193
+ Exclude:
194
+ - 'lib/sequel/adapters/duckdb.rb'
195
+ - 'lib/sequel/adapters/shared/duckdb.rb'
196
+ - 'test/database_test.rb'
197
+ - 'test/dataset_test.rb'
198
+ - 'test/end_to_end_test.rb'
199
+ - 'test/enhanced_error_mapping_test.rb'
200
+ - 'test/error_handling_test.rb'
201
+ - 'test/performance_basic_test.rb'
202
+ - 'test/performance_test.rb'
203
+ - 'test/schema_introspection_test.rb'
204
+ - 'test/schema_metadata_test.rb'
205
+ - 'test/sequel_conventions_test.rb'
206
+ - 'test/type_test.rb'
207
+
208
+ # Offense count: 1
209
+ # Configuration parameters: CountComments, Max, CountAsOne.
210
+ Metrics/ModuleLength:
211
+ Exclude:
212
+ - 'lib/sequel/adapters/shared/duckdb.rb'
213
+
214
+ # Offense count: 1
215
+ # This cop supports safe autocorrection (--autocorrect).
216
+ Minitest/AssertPathExists:
217
+ Exclude:
218
+ - 'test/database_test.rb'
219
+
220
+ # Offense count: 26
221
+ # This cop supports safe autocorrection (--autocorrect).
222
+ Minitest/EmptyLineBeforeAssertionMethods:
223
+ Exclude:
224
+ - 'test/core_sql_generation_test.rb'
225
+ - 'test/database_test.rb'
226
+ - 'test/date_arithmetic_test.rb'
227
+ - 'test/mock_adapter_test.rb'
228
+
229
+ # Offense count: 2
230
+ # This cop supports safe autocorrection (--autocorrect).
231
+ # Configuration parameters: EnforcedStyle, BlockForwardingName.
232
+ # SupportedStyles: anonymous, explicit
233
+ Naming/BlockForwarding:
234
+ Exclude:
235
+ - 'lib/sequel/adapters/duckdb.rb'
236
+
237
+ # Offense count: 2
238
+ # This cop supports safe autocorrection (--autocorrect).
239
+ # Configuration parameters: AllowOnlyRestArgument, UseAnonymousForwarding, RedundantRestArgumentNames, RedundantKeywordRestArgumentNames, RedundantBlockArgumentNames.
240
+ # RedundantRestArgumentNames: args, arguments
241
+ # RedundantKeywordRestArgumentNames: kwargs, options, opts
242
+ # RedundantBlockArgumentNames: blk, block, proc
243
+ Style/ArgumentsForwarding:
244
+ Exclude:
245
+ - 'lib/sequel/adapters/duckdb.rb'
246
+
247
+ # Offense count: 1
248
+ # This cop supports unsafe autocorrection (--autocorrect-all).
249
+ # Configuration parameters: EnforcedStyle, AllowedMethods, AllowedPatterns.
250
+ # SupportedStyles: predicate, comparison
251
+ Style/NumericPredicate:
252
+ Exclude:
253
+ - 'lib/sequel/adapters/shared/duckdb.rb'
254
+
255
+ # Offense count: 2
256
+ # This cop supports unsafe autocorrection (--autocorrect-all).
257
+ # Configuration parameters: ConvertCodeThatCanStartToReturnNil, AllowedMethods, MaxChainLength.
258
+ # AllowedMethods: present?, blank?, presence, try, try!
259
+ Style/SafeNavigation:
260
+ Exclude:
261
+ - 'test/date_arithmetic_test.rb'
262
+ - 'test/pathifier_test.rb'
263
+
264
+ # Offense count: 2
265
+ # This cop supports safe autocorrection (--autocorrect).
266
+ # Configuration parameters: EnforcedStyle, ConsistentQuotesInMultiline.
267
+ # SupportedStyles: single_quotes, double_quotes
268
+ Style/StringLiterals:
269
+ Exclude:
270
+ - 'test/core_sql_generation_test.rb'
271
+
272
+ # Offense count: 1
273
+ # This cop supports safe autocorrection (--autocorrect).
274
+ # Configuration parameters: .
275
+ # SupportedStyles: percent, brackets
276
+ Style/SymbolArray:
277
+ EnforcedStyle: percent
278
+ MinSize: 3
279
+
280
+ # Offense count: 55
281
+ # This cop supports safe autocorrection (--autocorrect).
282
+ # Configuration parameters: EnforcedStyleForMultiline.
283
+ # SupportedStylesForMultiline: comma, consistent_comma, diff_comma, no_comma
284
+ Style/TrailingCommaInArguments:
285
+ Exclude:
286
+ - 'test/advanced_sql_generation_test.rb'
287
+ - 'test/copier_test.rb'
288
+ - 'test/dataset_functionality_test.rb'
289
+ - 'test/dataset_test.rb'
290
+ - 'test/date_arithmetic_test.rb'
291
+ - 'test/end_to_end_test.rb'
292
+ - 'test/model_test.rb'
293
+ - 'test/performance_basic_test.rb'
294
+ - 'test/sequel_conventions_test.rb'
295
+ - 'test/spec_helper.rb'
296
+ - 'test/sql_test.rb'
297
+ - 'test/type_test.rb'
298
+
299
+ # Offense count: 23
300
+ # This cop supports safe autocorrection (--autocorrect).
301
+ # Configuration parameters: EnforcedStyleForMultiline.
302
+ # SupportedStylesForMultiline: comma, consistent_comma, diff_comma, no_comma
303
+ Style/TrailingCommaInArrayLiteral:
304
+ Exclude:
305
+ - 'test/enhanced_error_mapping_test.rb'
306
+ - 'test/error_handling_test.rb'
307
+ - 'test/pathifier_test.rb'
308
+ - 'test/performance_basic_test.rb'
309
+ - 'test/type_test.rb'
310
+
311
+ # Offense count: 26
312
+ # This cop supports safe autocorrection (--autocorrect).
313
+ # Configuration parameters: EnforcedStyleForMultiline.
314
+ # SupportedStylesForMultiline: comma, consistent_comma, diff_comma, no_comma
315
+ Style/TrailingCommaInHashLiteral:
316
+ Exclude:
317
+ - 'lib/sequel/adapters/shared/duckdb.rb'
318
+ - 'test/database_test.rb'
319
+ - 'test/end_to_end_test.rb'
320
+ - 'test/error_handling_test.rb'
321
+ - 'test/performance_basic_test.rb'
322
+ - 'test/performance_test.rb'
323
+ - 'test/schema_introspection_test.rb'
data/AGENTS.md ADDED
@@ -0,0 +1,154 @@
1
+ # Agent Instructions
2
+
3
+ This project uses **bd** (beads) for issue tracking. Run `bd onboard` to get started.
4
+
5
+ ## Quick Reference
6
+
7
+ ```bash
8
+ bd ready # Find available work
9
+ bd show <id> # View issue details
10
+ bd update <id> --claim # Claim work atomically
11
+ bd close <id> # Complete work
12
+ bd dolt push # Push beads data to remote
13
+ ```
14
+
15
+ ## Non-Interactive Shell Commands
16
+
17
+ **ALWAYS use non-interactive flags** with file operations to avoid hanging on confirmation prompts.
18
+
19
+ Shell commands like `cp`, `mv`, and `rm` may be aliased to include `-i` (interactive) mode on some systems, causing the agent to hang indefinitely waiting for y/n input.
20
+
21
+ **Use these forms instead:**
22
+
23
+ ```bash
24
+ # Force overwrite without prompting
25
+ cp -f source dest # NOT: cp source dest
26
+ mv -f source dest # NOT: mv source dest
27
+ rm -f file # NOT: rm file
28
+
29
+ # For recursive operations
30
+ rm -rf directory # NOT: rm -r directory
31
+ cp -rf source dest # NOT: cp -r source dest
32
+ ```
33
+
34
+ **Other commands that may prompt:**
35
+
36
+ - `scp` - use `-o BatchMode=yes` for non-interactive
37
+ - `ssh` - use `-o BatchMode=yes` to fail instead of prompting
38
+ - `apt-get` - use `-y` flag
39
+ - `brew` - use `HOMEBREW_NO_AUTO_UPDATE=1` env var
40
+
41
+ <!-- BEGIN BEADS INTEGRATION profile:full hash:d4f96305 -->
42
+
43
+ ## Issue Tracking with bd (beads)
44
+
45
+ **IMPORTANT**: This project uses **bd (beads)** for ALL issue tracking. Do NOT use markdown TODOs, task lists, or other tracking methods.
46
+
47
+ ### Why bd?
48
+
49
+ - Dependency-aware: Track blockers and relationships between issues
50
+ - Git-friendly: Dolt-powered version control with native sync
51
+ - Agent-optimized: JSON output, ready work detection, discovered-from links
52
+ - Prevents duplicate tracking systems and confusion
53
+
54
+ ### Quick Start
55
+
56
+ **Check for ready work:**
57
+
58
+ ```bash
59
+ bd ready --json
60
+ ```
61
+
62
+ **Create new issues:**
63
+
64
+ ```bash
65
+ bd create "Issue title" --description="Detailed context" -t bug|feature|task -p 0-4 --json
66
+ bd create "Issue title" --description="What this issue is about" -p 1 --deps discovered-from:bd-123 --json
67
+ ```
68
+
69
+ **Claim and update:**
70
+
71
+ ```bash
72
+ bd update <id> --claim --json
73
+ bd update bd-42 --priority 1 --json
74
+ ```
75
+
76
+ **Complete work:**
77
+
78
+ ```bash
79
+ bd close bd-42 --reason "Completed" --json
80
+ ```
81
+
82
+ ### Issue Types
83
+
84
+ - `bug` - Something broken
85
+ - `feature` - New functionality
86
+ - `task` - Work item (tests, docs, refactoring)
87
+ - `epic` - Large feature with subtasks
88
+ - `chore` - Maintenance (dependencies, tooling)
89
+
90
+ ### Priorities
91
+
92
+ - `0` - Critical (security, data loss, broken builds)
93
+ - `1` - High (major features, important bugs)
94
+ - `2` - Medium (default, nice-to-have)
95
+ - `3` - Low (polish, optimization)
96
+ - `4` - Backlog (future ideas)
97
+
98
+ ### Workflow for AI Agents
99
+
100
+ 1. **Check ready work**: `bd ready` shows unblocked issues
101
+ 2. **Claim your task atomically**: `bd update <id> --claim`
102
+ 3. **Work on it**: Implement, test, document
103
+ 4. **Discover new work?** Create linked issue:
104
+ - `bd create "Found bug" --description="Details about what was found" -p 1 --deps discovered-from:<parent-id>`
105
+ 5. **Complete**: `bd close <id> --reason "Done"`
106
+
107
+ ### Auto-Sync
108
+
109
+ bd automatically syncs via Dolt:
110
+
111
+ - Each write auto-commits to Dolt history
112
+ - Use `bd dolt push`/`bd dolt pull` for remote sync
113
+ - No manual export/import needed!
114
+
115
+ ### Important Rules
116
+
117
+ - ✅ Use bd for ALL task tracking
118
+ - ✅ Always use `--json` flag for programmatic use
119
+ - ✅ Link discovered work with `discovered-from` dependencies
120
+ - ✅ Check `bd ready` before asking "what should I work on?"
121
+ - ❌ Do NOT create markdown TODO lists
122
+ - ❌ Do NOT use external issue trackers
123
+ - ❌ Do NOT duplicate tracking systems
124
+
125
+ For more details, see README.md and docs/QUICKSTART.md.
126
+
127
+ ## Landing the Plane (Session Completion)
128
+
129
+ **When ending a work session**, you MUST complete ALL steps below. Work is NOT complete until `git push` succeeds.
130
+
131
+ **MANDATORY WORKFLOW:**
132
+
133
+ 1. **File issues for remaining work** - Create issues for anything that needs follow-up
134
+ 2. **Run quality gates** (if code changed) - Tests, linters, builds
135
+ 3. **Update issue status** - Close finished work, update in-progress items
136
+ 4. **PUSH TO REMOTE** - This is MANDATORY:
137
+ ```bash
138
+ git pull --rebase
139
+ bd dolt push
140
+ git push
141
+ git status # MUST show "up to date with origin"
142
+ ```
143
+ 5. **Clean up** - Clear stashes, prune remote branches
144
+ 6. **Verify** - All changes committed AND pushed
145
+ 7. **Hand off** - Provide context for next session
146
+
147
+ **CRITICAL RULES:**
148
+
149
+ - Work is NOT complete until `git push` succeeds
150
+ - NEVER stop before pushing - that leaves work stranded locally
151
+ - NEVER say "ready to push when you are" - YOU must push
152
+ - If push fails, resolve and retry until it succeeds
153
+
154
+ <!-- END BEADS INTEGRATION -->