querysource 5.1.2__tar.gz → 5.1.3__tar.gz

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 (830) hide show
  1. querysource-5.1.3/.agents/skills/sdd-brainstorm/SKILL.md +127 -0
  2. querysource-5.1.3/.agents/skills/sdd-codereview/SKILL.md +80 -0
  3. querysource-5.1.3/.agents/skills/sdd-done/SKILL.md +196 -0
  4. querysource-5.1.3/.agents/skills/sdd-explain/SKILL.md +58 -0
  5. querysource-5.1.3/.agents/skills/sdd-fix/SKILL.md +67 -0
  6. querysource-5.1.3/.agents/skills/sdd-fromjira/SKILL.md +64 -0
  7. querysource-5.1.3/.agents/skills/sdd-insight/SKILL.md +68 -0
  8. querysource-5.1.3/.agents/skills/sdd-next/SKILL.md +59 -0
  9. querysource-5.1.3/.agents/skills/sdd-proposal/SKILL.md +142 -0
  10. querysource-5.1.3/.agents/skills/sdd-spec/SKILL.md +173 -0
  11. querysource-5.1.3/.agents/skills/sdd-start/SKILL.md +165 -0
  12. querysource-5.1.3/.agents/skills/sdd-status/SKILL.md +62 -0
  13. querysource-5.1.3/.agents/skills/sdd-task/SKILL.md +235 -0
  14. querysource-5.1.3/.agents/skills/sdd-tojira/SKILL.md +65 -0
  15. {querysource-5.1.2 → querysource-5.1.3}/.claude/agents/sdd-coder.md +12 -10
  16. {querysource-5.1.2 → querysource-5.1.3}/.claude/agents/sdd-worker.md +63 -44
  17. {querysource-5.1.2 → querysource-5.1.3}/.claude/commands/sdd-done.md +43 -16
  18. {querysource-5.1.2 → querysource-5.1.3}/.claude/commands/sdd-insight.md +10 -0
  19. {querysource-5.1.2 → querysource-5.1.3}/.claude/commands/sdd-proposal.md +4 -4
  20. {querysource-5.1.2 → querysource-5.1.3}/.claude/commands/sdd-task.md +6 -0
  21. querysource-5.1.3/.codex/agents/sdd-worker.toml +153 -0
  22. {querysource-5.1.2 → querysource-5.1.3}/PKG-INFO +1 -1
  23. {querysource-5.1.2 → querysource-5.1.3}/querysource/_version.py +3 -3
  24. {querysource-5.1.2 → querysource-5.1.3}/querysource/conf.py +3 -0
  25. {querysource-5.1.2 → querysource-5.1.3}/querysource/handlers/multi.py +2 -0
  26. {querysource-5.1.2 → querysource-5.1.3}/querysource/handlers/qsurl.py +1 -1
  27. {querysource-5.1.2 → querysource-5.1.3}/querysource/handlers/service.py +2 -0
  28. {querysource-5.1.2 → querysource-5.1.3}/querysource/models.py +1 -0
  29. querysource-5.1.3/querysource/outputs/__init__.py +33 -0
  30. {querysource-5.1.2 → querysource-5.1.3}/querysource/outputs/output.py +107 -52
  31. querysource-5.1.3/querysource/outputs/writers/__init__.py +55 -0
  32. querysource-5.1.3/querysource/outputs/writers/pdf.py +118 -0
  33. {querysource-5.1.2 → querysource-5.1.3}/querysource/parsers/abstract.c +2056 -1683
  34. {querysource-5.1.2 → querysource-5.1.3}/querysource/parsers/abstract.pxd +2 -0
  35. {querysource-5.1.2 → querysource-5.1.3}/querysource/parsers/abstract.pyx +15 -0
  36. {querysource-5.1.2 → querysource-5.1.3}/querysource/parsers/arangodb.c +5 -0
  37. {querysource-5.1.2 → querysource-5.1.3}/querysource/parsers/bigquery.c +5 -0
  38. {querysource-5.1.2 → querysource-5.1.3}/querysource/parsers/cql.c +136 -111
  39. {querysource-5.1.2 → querysource-5.1.3}/querysource/parsers/deltatbl.c +136 -111
  40. {querysource-5.1.2 → querysource-5.1.3}/querysource/parsers/elastic.cpp +5 -0
  41. {querysource-5.1.2 → querysource-5.1.3}/querysource/parsers/iceberg.c +142 -117
  42. {querysource-5.1.2 → querysource-5.1.3}/querysource/parsers/influx.c +137 -112
  43. querysource-5.1.3/querysource/parsers/jsonb_unnest.c +35016 -0
  44. querysource-5.1.3/querysource/parsers/jsonb_unnest.pyx +724 -0
  45. {querysource-5.1.2 → querysource-5.1.3}/querysource/parsers/mongo.cpp +5 -0
  46. {querysource-5.1.2 → querysource-5.1.3}/querysource/parsers/parser.c +127 -102
  47. {querysource-5.1.2 → querysource-5.1.3}/querysource/parsers/pgsql.c +5288 -1978
  48. {querysource-5.1.2 → querysource-5.1.3}/querysource/parsers/pgsql.pyx +76 -2
  49. {querysource-5.1.2 → querysource-5.1.3}/querysource/parsers/rethink.c +5 -0
  50. {querysource-5.1.2 → querysource-5.1.3}/querysource/parsers/sosql.c +136 -111
  51. {querysource-5.1.2 → querysource-5.1.3}/querysource/parsers/sql.c +129 -104
  52. {querysource-5.1.2 → querysource-5.1.3}/querysource/parsers/sqlserver.c +129 -104
  53. {querysource-5.1.2 → querysource-5.1.3}/querysource/providers/sql.py +1 -1
  54. {querysource-5.1.2 → querysource-5.1.3}/querysource/types/converters.cpp +3 -0
  55. {querysource-5.1.2 → querysource-5.1.3}/querysource/types/typedefs.c +3 -0
  56. {querysource-5.1.2 → querysource-5.1.3}/querysource/types/validators.cpp +3 -0
  57. {querysource-5.1.2 → querysource-5.1.3}/querysource/utils/functions.cpp +3 -0
  58. {querysource-5.1.2 → querysource-5.1.3}/querysource/utils/parseqs.cpp +3 -0
  59. {querysource-5.1.2 → querysource-5.1.3}/querysource/version.py +1 -1
  60. {querysource-5.1.2 → querysource-5.1.3}/querysource.egg-info/PKG-INFO +1 -1
  61. {querysource-5.1.2 → querysource-5.1.3}/querysource.egg-info/SOURCES.txt +30 -0
  62. {querysource-5.1.2 → querysource-5.1.3}/querysource.egg-info/scm_file_list.json +76 -0
  63. querysource-5.1.3/querysource.egg-info/scm_version.json +8 -0
  64. querysource-5.1.3/reference/sdd-insight/UPSTREAM-LICENSE +21 -0
  65. querysource-5.1.3/reference/sdd-insight/ai-fluency-framework.md +147 -0
  66. {querysource-5.1.2 → querysource-5.1.3}/rust/Cargo.toml +1 -0
  67. {querysource-5.1.2 → querysource-5.1.3}/rust/qsurl/Cargo.toml +1 -0
  68. {querysource-5.1.2 → querysource-5.1.3}/rust/src/lib.rs +3 -0
  69. querysource-5.1.3/rust/src/pgsql_unnest.rs +2000 -0
  70. {querysource-5.1.2 → querysource-5.1.3}/setup.py +36 -3
  71. querysource-5.1.3/tests/integration/test_pgsql_jsonb_unnest_live.py +211 -0
  72. querysource-5.1.3/tests/test_jsonb_unnest_filters.py +159 -0
  73. querysource-5.1.3/tests/test_jsonb_unnest_grammar.py +162 -0
  74. querysource-5.1.3/tests/test_jsonb_unnest_plan.py +292 -0
  75. querysource-5.1.3/tests/test_parser_having_condition.py +54 -0
  76. querysource-5.1.3/tests/test_pgsql_jsonb_unnest.py +148 -0
  77. querysource-5.1.3/tests/test_pgsql_jsonb_unnest_parity.py +196 -0
  78. querysource-5.1.3/tests/test_pgsql_jsonb_unnest_regression.py +101 -0
  79. querysource-5.1.3/tests/test_pgsql_jsonb_unnest_review.py +90 -0
  80. querysource-5.1.3/tests/unit/test_lazy_writers.py +262 -0
  81. querysource-5.1.2/querysource/outputs/__init__.py +0 -6
  82. querysource-5.1.2/querysource/outputs/writers/__init__.py +0 -17
  83. querysource-5.1.2/querysource/outputs/writers/pdf.py +0 -66
  84. querysource-5.1.2/querysource.egg-info/scm_version.json +0 -8
  85. {querysource-5.1.2 → querysource-5.1.3}/.agent/rules/async-programming-expert.md +0 -0
  86. {querysource-5.1.2 → querysource-5.1.3}/.agent/rules/code-reviewer.md +0 -0
  87. {querysource-5.1.2 → querysource-5.1.3}/.agent/rules/cython-development.md +0 -0
  88. {querysource-5.1.2 → querysource-5.1.3}/.agent/rules/prompt-expert.md +0 -0
  89. {querysource-5.1.2 → querysource-5.1.3}/.agent/rules/python-development.md +0 -0
  90. {querysource-5.1.2 → querysource-5.1.3}/.agent/rules/rust-development.md +0 -0
  91. {querysource-5.1.2 → querysource-5.1.3}/.agent/workflows/create-parrot-tool.md +0 -0
  92. {querysource-5.1.2 → querysource-5.1.3}/.agent/workflows/create-workflow.md +0 -0
  93. {querysource-5.1.2 → querysource-5.1.3}/.agent/workflows/debug-regressions-with-git-bisect-binary-search.md +0 -0
  94. {querysource-5.1.2 → querysource-5.1.3}/.agent/workflows/generate-tests.md +0 -0
  95. {querysource-5.1.2 → querysource-5.1.3}/.agent/workflows/git-new-feature.md +0 -0
  96. {querysource-5.1.2 → querysource-5.1.3}/.agent/workflows/parrot-mcp-server.md +0 -0
  97. {querysource-5.1.2 → querysource-5.1.3}/.agent/workflows/release_package.md +0 -0
  98. {querysource-5.1.2 → querysource-5.1.3}/.agent/workflows/start-flow.md +0 -0
  99. {querysource-5.1.2 → querysource-5.1.3}/.agents/plugins/parrot/mcp_config.json +0 -0
  100. {querysource-5.1.2 → querysource-5.1.3}/.bumpversion.cfg +0 -0
  101. {querysource-5.1.2 → querysource-5.1.3}/.claude/agents/code-review.md +0 -0
  102. {querysource-5.1.2 → querysource-5.1.3}/.claude/agents/code-reviewer.md +0 -0
  103. {querysource-5.1.2 → querysource-5.1.3}/.claude/agents/qa-runner.md +0 -0
  104. {querysource-5.1.2 → querysource-5.1.3}/.claude/agents/sdd-autopilot.md +0 -0
  105. {querysource-5.1.2 → querysource-5.1.3}/.claude/agents/sdd-feedback.md +0 -0
  106. {querysource-5.1.2 → querysource-5.1.3}/.claude/agents/sdd-ideation.md +0 -0
  107. {querysource-5.1.2 → querysource-5.1.3}/.claude/agents/sdd-planner.md +0 -0
  108. {querysource-5.1.2 → querysource-5.1.3}/.claude/agents/sdd-qa.md +0 -0
  109. {querysource-5.1.2 → querysource-5.1.3}/.claude/agents/sdd-research.md +0 -0
  110. {querysource-5.1.2 → querysource-5.1.3}/.claude/agents/sdd-secondopinion.md +0 -0
  111. {querysource-5.1.2 → querysource-5.1.3}/.claude/commands/bookstore.md +0 -0
  112. {querysource-5.1.2 → querysource-5.1.3}/.claude/commands/parrotwiki.md +0 -0
  113. {querysource-5.1.2 → querysource-5.1.3}/.claude/commands/pr-review.md +0 -0
  114. {querysource-5.1.2 → querysource-5.1.3}/.claude/commands/release.md +0 -0
  115. {querysource-5.1.2 → querysource-5.1.3}/.claude/commands/remove-worktree.md +0 -0
  116. {querysource-5.1.2 → querysource-5.1.3}/.claude/commands/sdd-brainstorm.md +0 -0
  117. {querysource-5.1.2 → querysource-5.1.3}/.claude/commands/sdd-codereview.md +0 -0
  118. {querysource-5.1.2 → querysource-5.1.3}/.claude/commands/sdd-explain.md +0 -0
  119. {querysource-5.1.2 → querysource-5.1.3}/.claude/commands/sdd-fix.md +0 -0
  120. {querysource-5.1.2 → querysource-5.1.3}/.claude/commands/sdd-fromjira.md +0 -0
  121. {querysource-5.1.2 → querysource-5.1.3}/.claude/commands/sdd-next.md +0 -0
  122. {querysource-5.1.2 → querysource-5.1.3}/.claude/commands/sdd-spec.md +0 -0
  123. {querysource-5.1.2 → querysource-5.1.3}/.claude/commands/sdd-start.md +0 -0
  124. {querysource-5.1.2 → querysource-5.1.3}/.claude/commands/sdd-status.md +0 -0
  125. {querysource-5.1.2 → querysource-5.1.3}/.claude/commands/sdd-tojira.md +0 -0
  126. {querysource-5.1.2 → querysource-5.1.3}/.claude/commands/security-check.md +0 -0
  127. {querysource-5.1.2 → querysource-5.1.3}/.claude/hooks/dangerous-actions-blocker.sh +0 -0
  128. {querysource-5.1.2 → querysource-5.1.3}/.claude/hooks/sdd-worker-format.sh +0 -0
  129. {querysource-5.1.2 → querysource-5.1.3}/.claude/rules/aws-cost-optimization.md +0 -0
  130. {querysource-5.1.2 → querysource-5.1.3}/.claude/rules/code-reviewer.md +0 -0
  131. {querysource-5.1.2 → querysource-5.1.3}/.claude/rules/codebase-conventions.md +0 -0
  132. {querysource-5.1.2 → querysource-5.1.3}/.claude/rules/cython-development.md +0 -0
  133. {querysource-5.1.2 → querysource-5.1.3}/.claude/rules/python-development.md +0 -0
  134. {querysource-5.1.2 → querysource-5.1.3}/.claude/rules/rust-development.md +0 -0
  135. {querysource-5.1.2 → querysource-5.1.3}/.claude/rules/using-git-worktrees.md +0 -0
  136. {querysource-5.1.2 → querysource-5.1.3}/.claude/rules/worktree-pr-and-clean.md +0 -0
  137. {querysource-5.1.2 → querysource-5.1.3}/.claude/rules/worktree-start-feature.md +0 -0
  138. {querysource-5.1.2 → querysource-5.1.3}/.claude/rules/worktree-status.md +0 -0
  139. {querysource-5.1.2 → querysource-5.1.3}/.claude/skills/bookstore/SKILL.md +0 -0
  140. {querysource-5.1.2 → querysource-5.1.3}/.claude/skills/meta-prompting/SKILL.md +0 -0
  141. {querysource-5.1.2 → querysource-5.1.3}/.claude/skills/meta-prompting/analyze-complexity/SKILL.md +0 -0
  142. {querysource-5.1.2 → querysource-5.1.3}/.claude/skills/meta-prompting/assess-quality/SKILL.md +0 -0
  143. {querysource-5.1.2 → querysource-5.1.3}/.claude/skills/meta-prompting/extract-context/SKILL.md +0 -0
  144. {querysource-5.1.2 → querysource-5.1.3}/.claude/skills/meta-prompting/meta-prompt-iterate/SKILL.md +0 -0
  145. {querysource-5.1.2 → querysource-5.1.3}/.claude/workflows/sdd-insight.js +0 -0
  146. {querysource-5.1.2 → querysource-5.1.3}/.github/dependabot.yml +0 -0
  147. {querysource-5.1.2 → querysource-5.1.3}/.github/workflows/codeql-analysis.yml +0 -0
  148. {querysource-5.1.2 → querysource-5.1.3}/.github/workflows/release.yml +0 -0
  149. {querysource-5.1.2 → querysource-5.1.3}/.isort.cfg +0 -0
  150. {querysource-5.1.2 → querysource-5.1.3}/.jupyter/jupyter_notebook_config.py +0 -0
  151. {querysource-5.1.2 → querysource-5.1.3}/.parrot/wiki.json +0 -0
  152. {querysource-5.1.2 → querysource-5.1.3}/.parrot/wiki.local.json +0 -0
  153. {querysource-5.1.2 → querysource-5.1.3}/.pre-commit-config.yaml +0 -0
  154. {querysource-5.1.2 → querysource-5.1.3}/.pylintrc +0 -0
  155. {querysource-5.1.2 → querysource-5.1.3}/CHANGES.rst +0 -0
  156. {querysource-5.1.2 → querysource-5.1.3}/CODE_OF_CONDUCT.md +0 -0
  157. {querysource-5.1.2 → querysource-5.1.3}/CONTRIBUTING.md +0 -0
  158. {querysource-5.1.2 → querysource-5.1.3}/INSTALL +0 -0
  159. {querysource-5.1.2 → querysource-5.1.3}/JOIN_CONDITIONS_FEATURE.md +0 -0
  160. {querysource-5.1.2 → querysource-5.1.3}/JOIN_CONDITIONS_SUMMARY.md +0 -0
  161. {querysource-5.1.2 → querysource-5.1.3}/LICENSE +0 -0
  162. {querysource-5.1.2 → querysource-5.1.3}/MANIFEST.in +0 -0
  163. {querysource-5.1.2 → querysource-5.1.3}/Makefile +0 -0
  164. {querysource-5.1.2 → querysource-5.1.3}/README.md +0 -0
  165. {querysource-5.1.2 → querysource-5.1.3}/app.py +0 -0
  166. {querysource-5.1.2 → querysource-5.1.3}/bin/README.md +0 -0
  167. {querysource-5.1.2 → querysource-5.1.3}/conftest.py +0 -0
  168. {querysource-5.1.2 → querysource-5.1.3}/generated/AirtableSource.json +0 -0
  169. {querysource-5.1.2 → querysource-5.1.3}/generated/Concat.json +0 -0
  170. {querysource-5.1.2 → querysource-5.1.3}/generated/DWHDestination.json +0 -0
  171. {querysource-5.1.2 → querysource-5.1.3}/generated/DropCols.json +0 -0
  172. {querysource-5.1.2 → querysource-5.1.3}/generated/FileSource.json +0 -0
  173. {querysource-5.1.2 → querysource-5.1.3}/generated/Filter.json +0 -0
  174. {querysource-5.1.2 → querysource-5.1.3}/generated/FilterCols.json +0 -0
  175. {querysource-5.1.2 → querysource-5.1.3}/generated/Forecast.json +0 -0
  176. {querysource-5.1.2 → querysource-5.1.3}/generated/GoogleMaps.json +0 -0
  177. {querysource-5.1.2 → querysource-5.1.3}/generated/GroupBy.json +0 -0
  178. {querysource-5.1.2 → querysource-5.1.3}/generated/Info.json +0 -0
  179. {querysource-5.1.2 → querysource-5.1.3}/generated/Join.json +0 -0
  180. {querysource-5.1.2 → querysource-5.1.3}/generated/Map.json +0 -0
  181. {querysource-5.1.2 → querysource-5.1.3}/generated/Melt.json +0 -0
  182. {querysource-5.1.2 → querysource-5.1.3}/generated/Merge.json +0 -0
  183. {querysource-5.1.2 → querysource-5.1.3}/generated/NormalizeColumns.json +0 -0
  184. {querysource-5.1.2 → querysource-5.1.3}/generated/PluckCols.json +0 -0
  185. {querysource-5.1.2 → querysource-5.1.3}/generated/Query.json +0 -0
  186. {querysource-5.1.2 → querysource-5.1.3}/generated/S3Source.json +0 -0
  187. {querysource-5.1.2 → querysource-5.1.3}/generated/SharepointSource.json +0 -0
  188. {querysource-5.1.2 → querysource-5.1.3}/generated/SmartSheetSource.json +0 -0
  189. {querysource-5.1.2 → querysource-5.1.3}/generated/Table.json +0 -0
  190. {querysource-5.1.2 → querysource-5.1.3}/generated/TableDestination.json +0 -0
  191. {querysource-5.1.2 → querysource-5.1.3}/generated/TableOutput.json +0 -0
  192. {querysource-5.1.2 → querysource-5.1.3}/generated/TableOutputAdapter.json +0 -0
  193. {querysource-5.1.2 → querysource-5.1.3}/generated/TableSource.json +0 -0
  194. {querysource-5.1.2 → querysource-5.1.3}/generated/ToS3.json +0 -0
  195. {querysource-5.1.2 → querysource-5.1.3}/generated/ToSharepoint.json +0 -0
  196. {querysource-5.1.2 → querysource-5.1.3}/generated/correlation.json +0 -0
  197. {querysource-5.1.2 → querysource-5.1.3}/generated/crosstab.json +0 -0
  198. {querysource-5.1.2 → querysource-5.1.3}/generated/pivot.json +0 -0
  199. {querysource-5.1.2 → querysource-5.1.3}/generated/tExplode.json +0 -0
  200. {querysource-5.1.2 → querysource-5.1.3}/generated/tOrder.json +0 -0
  201. {querysource-5.1.2 → querysource-5.1.3}/generated/tPandas.json +0 -0
  202. {querysource-5.1.2 → querysource-5.1.3}/gunicorn_config.py +0 -0
  203. {querysource-5.1.2 → querysource-5.1.3}/mypy.ini +0 -0
  204. {querysource-5.1.2 → querysource-5.1.3}/nav.py +0 -0
  205. {querysource-5.1.2 → querysource-5.1.3}/policies/HARDENING.md +0 -0
  206. {querysource-5.1.2 → querysource-5.1.3}/policies/authorized.yaml +0 -0
  207. {querysource-5.1.2 → querysource-5.1.3}/policies/baseline.yaml +0 -0
  208. {querysource-5.1.2 → querysource-5.1.3}/policies/datasources.yaml +0 -0
  209. {querysource-5.1.2 → querysource-5.1.3}/policies/defaults.yaml +0 -0
  210. {querysource-5.1.2 → querysource-5.1.3}/policies/drivers.yaml +0 -0
  211. {querysource-5.1.2 → querysource-5.1.3}/policies/raw_queries.yaml +0 -0
  212. {querysource-5.1.2 → querysource-5.1.3}/policies/slugs.yaml +0 -0
  213. {querysource-5.1.2 → querysource-5.1.3}/policies/superusers.yaml +0 -0
  214. {querysource-5.1.2 → querysource-5.1.3}/pyproject.toml +0 -0
  215. {querysource-5.1.2 → querysource-5.1.3}/pytest.ini +0 -0
  216. {querysource-5.1.2 → querysource-5.1.3}/querysource/__cli__.py +0 -0
  217. {querysource-5.1.2 → querysource-5.1.3}/querysource/__init__.py +0 -0
  218. {querysource-5.1.2 → querysource-5.1.3}/querysource/auth/__init__.py +0 -0
  219. {querysource-5.1.2 → querysource-5.1.3}/querysource/auth/_resource_types.py +0 -0
  220. {querysource-5.1.2 → querysource-5.1.3}/querysource/auth/credentials.py +0 -0
  221. {querysource-5.1.2 → querysource-5.1.3}/querysource/auth/enforcement.py +0 -0
  222. {querysource-5.1.2 → querysource-5.1.3}/querysource/auth/pbac.py +0 -0
  223. {querysource-5.1.2 → querysource-5.1.3}/querysource/auth/principal.py +0 -0
  224. {querysource-5.1.2 → querysource-5.1.3}/querysource/auth/slug_visibility.py +0 -0
  225. {querysource-5.1.2 → querysource-5.1.3}/querysource/cache/__init__.py +0 -0
  226. {querysource-5.1.2 → querysource-5.1.3}/querysource/cache/backends/__init__.py +0 -0
  227. {querysource-5.1.2 → querysource-5.1.3}/querysource/cache/backends/abstract.py +0 -0
  228. {querysource-5.1.2 → querysource-5.1.3}/querysource/cache/backends/memcache.py +0 -0
  229. {querysource-5.1.2 → querysource-5.1.3}/querysource/cache/backends/redis.py +0 -0
  230. {querysource-5.1.2 → querysource-5.1.3}/querysource/cache/base.py +0 -0
  231. {querysource-5.1.2 → querysource-5.1.3}/querysource/cache_identity.py +0 -0
  232. {querysource-5.1.2 → querysource-5.1.3}/querysource/cli/__init__.py +0 -0
  233. {querysource-5.1.2 → querysource-5.1.3}/querysource/cli/generate_docs.py +0 -0
  234. {querysource-5.1.2 → querysource-5.1.3}/querysource/connections.py +0 -0
  235. {querysource-5.1.2 → querysource-5.1.3}/querysource/datasources/__init__.py +0 -0
  236. {querysource-5.1.2 → querysource-5.1.3}/querysource/datasources/drivers/__init__.py +0 -0
  237. {querysource-5.1.2 → querysource-5.1.3}/querysource/datasources/drivers/abstract.py +0 -0
  238. {querysource-5.1.2 → querysource-5.1.3}/querysource/datasources/drivers/arangodb.py +0 -0
  239. {querysource-5.1.2 → querysource-5.1.3}/querysource/datasources/drivers/athena.py +0 -0
  240. {querysource-5.1.2 → querysource-5.1.3}/querysource/datasources/drivers/bigquery.py +0 -0
  241. {querysource-5.1.2 → querysource-5.1.3}/querysource/datasources/drivers/cassandra.py +0 -0
  242. {querysource-5.1.2 → querysource-5.1.3}/querysource/datasources/drivers/clickhouse.py +0 -0
  243. {querysource-5.1.2 → querysource-5.1.3}/querysource/datasources/drivers/cockroachdb.py +0 -0
  244. {querysource-5.1.2 → querysource-5.1.3}/querysource/datasources/drivers/couchbase.py +0 -0
  245. {querysource-5.1.2 → querysource-5.1.3}/querysource/datasources/drivers/couchdb.py +0 -0
  246. {querysource-5.1.2 → querysource-5.1.3}/querysource/datasources/drivers/countries.py +0 -0
  247. {querysource-5.1.2 → querysource-5.1.3}/querysource/datasources/drivers/delta.py +0 -0
  248. {querysource-5.1.2 → querysource-5.1.3}/querysource/datasources/drivers/documentdb.py +0 -0
  249. {querysource-5.1.2 → querysource-5.1.3}/querysource/datasources/drivers/dynamodb.py +0 -0
  250. {querysource-5.1.2 → querysource-5.1.3}/querysource/datasources/drivers/elastic.py +0 -0
  251. {querysource-5.1.2 → querysource-5.1.3}/querysource/datasources/drivers/ga.py +0 -0
  252. {querysource-5.1.2 → querysource-5.1.3}/querysource/datasources/drivers/gcalc.py +0 -0
  253. {querysource-5.1.2 → querysource-5.1.3}/querysource/datasources/drivers/hazel.py +0 -0
  254. {querysource-5.1.2 → querysource-5.1.3}/querysource/datasources/drivers/iceberg.py +0 -0
  255. {querysource-5.1.2 → querysource-5.1.3}/querysource/datasources/drivers/influx.py +0 -0
  256. {querysource-5.1.2 → querysource-5.1.3}/querysource/datasources/drivers/jdbc.py +0 -0
  257. {querysource-5.1.2 → querysource-5.1.3}/querysource/datasources/drivers/jira.py +0 -0
  258. {querysource-5.1.2 → querysource-5.1.3}/querysource/datasources/drivers/mariadb.py +0 -0
  259. {querysource-5.1.2 → querysource-5.1.3}/querysource/datasources/drivers/memcached.py +0 -0
  260. {querysource-5.1.2 → querysource-5.1.3}/querysource/datasources/drivers/mongo.py +0 -0
  261. {querysource-5.1.2 → querysource-5.1.3}/querysource/datasources/drivers/mysql.py +0 -0
  262. {querysource-5.1.2 → querysource-5.1.3}/querysource/datasources/drivers/odbc.py +0 -0
  263. {querysource-5.1.2 → querysource-5.1.3}/querysource/datasources/drivers/openweather.py +0 -0
  264. {querysource-5.1.2 → querysource-5.1.3}/querysource/datasources/drivers/oracle.py +0 -0
  265. {querysource-5.1.2 → querysource-5.1.3}/querysource/datasources/drivers/pg.py +0 -0
  266. {querysource-5.1.2 → querysource-5.1.3}/querysource/datasources/drivers/pg_admin.py +0 -0
  267. {querysource-5.1.2 → querysource-5.1.3}/querysource/datasources/drivers/postgres.py +0 -0
  268. {querysource-5.1.2 → querysource-5.1.3}/querysource/datasources/drivers/py.typed +0 -0
  269. {querysource-5.1.2 → querysource-5.1.3}/querysource/datasources/drivers/qs.py +0 -0
  270. {querysource-5.1.2 → querysource-5.1.3}/querysource/datasources/drivers/redis.py +0 -0
  271. {querysource-5.1.2 → querysource-5.1.3}/querysource/datasources/drivers/rest.py +0 -0
  272. {querysource-5.1.2 → querysource-5.1.3}/querysource/datasources/drivers/rethink.py +0 -0
  273. {querysource-5.1.2 → querysource-5.1.3}/querysource/datasources/drivers/sa.py +0 -0
  274. {querysource-5.1.2 → querysource-5.1.3}/querysource/datasources/drivers/salesforce.py +0 -0
  275. {querysource-5.1.2 → querysource-5.1.3}/querysource/datasources/drivers/scylladb.py +0 -0
  276. {querysource-5.1.2 → querysource-5.1.3}/querysource/datasources/drivers/sqlalchemy.py +0 -0
  277. {querysource-5.1.2 → querysource-5.1.3}/querysource/datasources/drivers/sqlite.py +0 -0
  278. {querysource-5.1.2 → querysource-5.1.3}/querysource/datasources/drivers/sqlserver.py +0 -0
  279. {querysource-5.1.2 → querysource-5.1.3}/querysource/datasources/drivers/upc.py +0 -0
  280. {querysource-5.1.2 → querysource-5.1.3}/querysource/datasources/drivers/zipcodeapi.py +0 -0
  281. {querysource-5.1.2 → querysource-5.1.3}/querysource/datasources/handlers/__init__.py +0 -0
  282. {querysource-5.1.2 → querysource-5.1.3}/querysource/datasources/handlers/datasource.py +0 -0
  283. {querysource-5.1.2 → querysource-5.1.3}/querysource/datasources/handlers/utils.py +0 -0
  284. {querysource-5.1.2 → querysource-5.1.3}/querysource/datasources/introspection.py +0 -0
  285. {querysource-5.1.2 → querysource-5.1.3}/querysource/datasources/models.py +0 -0
  286. {querysource-5.1.2 → querysource-5.1.3}/querysource/events/__init__.py +0 -0
  287. {querysource-5.1.2 → querysource-5.1.3}/querysource/exceptions.py +0 -0
  288. {querysource-5.1.2 → querysource-5.1.3}/querysource/handlers/__init__.py +0 -0
  289. {querysource-5.1.2 → querysource-5.1.3}/querysource/handlers/_pagination.py +0 -0
  290. {querysource-5.1.2 → querysource-5.1.3}/querysource/handlers/abstract.py +0 -0
  291. {querysource-5.1.2 → querysource-5.1.3}/querysource/handlers/components.py +0 -0
  292. {querysource-5.1.2 → querysource-5.1.3}/querysource/handlers/describe.py +0 -0
  293. {querysource-5.1.2 → querysource-5.1.3}/querysource/handlers/executor.py +0 -0
  294. {querysource-5.1.2 → querysource-5.1.3}/querysource/handlers/integrations/__init__.py +0 -0
  295. {querysource-5.1.2 → querysource-5.1.3}/querysource/handlers/integrations/airtable.py +0 -0
  296. {querysource-5.1.2 → querysource-5.1.3}/querysource/handlers/log.py +0 -0
  297. {querysource-5.1.2 → querysource-5.1.3}/querysource/handlers/manager.py +0 -0
  298. {querysource-5.1.2 → querysource-5.1.3}/querysource/handlers/outputs/__init__.py +0 -0
  299. {querysource-5.1.2 → querysource-5.1.3}/querysource/handlers/outputs/tableOutput/__init__.py +0 -0
  300. {querysource-5.1.2 → querysource-5.1.3}/querysource/handlers/outputs/tableOutput/postgres.py +0 -0
  301. {querysource-5.1.2 → querysource-5.1.3}/querysource/handlers/outputs/tableOutput/table.py +0 -0
  302. {querysource-5.1.2 → querysource-5.1.3}/querysource/handlers/scheduler.py +0 -0
  303. {querysource-5.1.2 → querysource-5.1.3}/querysource/handlers/tenant.py +0 -0
  304. {querysource-5.1.2 → querysource-5.1.3}/querysource/handlers/variables.py +0 -0
  305. {querysource-5.1.2 → querysource-5.1.3}/querysource/interfaces/__init__.py +0 -0
  306. {querysource-5.1.2 → querysource-5.1.3}/querysource/interfaces/airtable.py +0 -0
  307. {querysource-5.1.2 → querysource-5.1.3}/querysource/interfaces/connections.py +0 -0
  308. {querysource-5.1.2 → querysource-5.1.3}/querysource/interfaces/credentials.py +0 -0
  309. {querysource-5.1.2 → querysource-5.1.3}/querysource/interfaces/databases/__init__.py +0 -0
  310. {querysource-5.1.2 → querysource-5.1.3}/querysource/interfaces/databases/abstract.py +0 -0
  311. {querysource-5.1.2 → querysource-5.1.3}/querysource/interfaces/databases/bigquery.py +0 -0
  312. {querysource-5.1.2 → querysource-5.1.3}/querysource/interfaces/databases/db.py +0 -0
  313. {querysource-5.1.2 → querysource-5.1.3}/querysource/interfaces/databases/mongo.py +0 -0
  314. {querysource-5.1.2 → querysource-5.1.3}/querysource/interfaces/databases/rethink.py +0 -0
  315. {querysource-5.1.2 → querysource-5.1.3}/querysource/interfaces/http.py +0 -0
  316. {querysource-5.1.2 → querysource-5.1.3}/querysource/interfaces/playwright_service.py +0 -0
  317. {querysource-5.1.2 → querysource-5.1.3}/querysource/interfaces/queries.py +0 -0
  318. {querysource-5.1.2 → querysource-5.1.3}/querysource/interfaces/selenium_service.py +0 -0
  319. {querysource-5.1.2 → querysource-5.1.3}/querysource/libs/__init__.py +0 -0
  320. {querysource-5.1.2 → querysource-5.1.3}/querysource/libs/encoders.py +0 -0
  321. {querysource-5.1.2 → querysource-5.1.3}/querysource/libs/functions/__init__.py +0 -0
  322. {querysource-5.1.2 → querysource-5.1.3}/querysource/libs/py.typed +0 -0
  323. {querysource-5.1.2 → querysource-5.1.3}/querysource/outputs/destinations/__init__.py +0 -0
  324. {querysource-5.1.2 → querysource-5.1.3}/querysource/outputs/destinations/abstract.py +0 -0
  325. {querysource-5.1.2 → querysource-5.1.3}/querysource/outputs/destinations/dwh.py +0 -0
  326. {querysource-5.1.2 → querysource-5.1.3}/querysource/outputs/destinations/s3.py +0 -0
  327. {querysource-5.1.2 → querysource-5.1.3}/querysource/outputs/destinations/sharepoint.py +0 -0
  328. {querysource-5.1.2 → querysource-5.1.3}/querysource/outputs/destinations/table.py +0 -0
  329. {querysource-5.1.2 → querysource-5.1.3}/querysource/outputs/dt/__init__.py +0 -0
  330. {querysource-5.1.2 → querysource-5.1.3}/querysource/outputs/dt/abstract.py +0 -0
  331. {querysource-5.1.2 → querysource-5.1.3}/querysource/outputs/dt/arrow.py +0 -0
  332. {querysource-5.1.2 → querysource-5.1.3}/querysource/outputs/dt/dt.py +0 -0
  333. {querysource-5.1.2 → querysource-5.1.3}/querysource/outputs/dt/factory.py +0 -0
  334. {querysource-5.1.2 → querysource-5.1.3}/querysource/outputs/dt/iter.py +0 -0
  335. {querysource-5.1.2 → querysource-5.1.3}/querysource/outputs/dt/modin.py +0 -0
  336. {querysource-5.1.2 → querysource-5.1.3}/querysource/outputs/dt/pandas.py +0 -0
  337. {querysource-5.1.2 → querysource-5.1.3}/querysource/outputs/dt/polars.py +0 -0
  338. {querysource-5.1.2 → querysource-5.1.3}/querysource/outputs/tables/TableOutput/__init__.py +0 -0
  339. {querysource-5.1.2 → querysource-5.1.3}/querysource/outputs/tables/TableOutput/abstract.py +0 -0
  340. {querysource-5.1.2 → querysource-5.1.3}/querysource/outputs/tables/TableOutput/bigquery.py +0 -0
  341. {querysource-5.1.2 → querysource-5.1.3}/querysource/outputs/tables/TableOutput/documentdb.py +0 -0
  342. {querysource-5.1.2 → querysource-5.1.3}/querysource/outputs/tables/TableOutput/mongodb.py +0 -0
  343. {querysource-5.1.2 → querysource-5.1.3}/querysource/outputs/tables/TableOutput/mysql.py +0 -0
  344. {querysource-5.1.2 → querysource-5.1.3}/querysource/outputs/tables/TableOutput/postgres.py +0 -0
  345. {querysource-5.1.2 → querysource-5.1.3}/querysource/outputs/tables/TableOutput/rethink.py +0 -0
  346. {querysource-5.1.2 → querysource-5.1.3}/querysource/outputs/tables/TableOutput/sa.py +0 -0
  347. {querysource-5.1.2 → querysource-5.1.3}/querysource/outputs/tables/TableOutput/table.py +0 -0
  348. {querysource-5.1.2 → querysource-5.1.3}/querysource/outputs/tables/__init__.py +0 -0
  349. {querysource-5.1.2 → querysource-5.1.3}/querysource/outputs/writers/abstract.py +0 -0
  350. {querysource-5.1.2 → querysource-5.1.3}/querysource/outputs/writers/bokeh.py +0 -0
  351. {querysource-5.1.2 → querysource-5.1.3}/querysource/outputs/writers/clustering.py +0 -0
  352. {querysource-5.1.2 → querysource-5.1.3}/querysource/outputs/writers/csv.py +0 -0
  353. {querysource-5.1.2 → querysource-5.1.3}/querysource/outputs/writers/describe.py +0 -0
  354. {querysource-5.1.2 → querysource-5.1.3}/querysource/outputs/writers/eda.py +0 -0
  355. {querysource-5.1.2 → querysource-5.1.3}/querysource/outputs/writers/excel.py +0 -0
  356. {querysource-5.1.2 → querysource-5.1.3}/querysource/outputs/writers/html.py +0 -0
  357. {querysource-5.1.2 → querysource-5.1.3}/querysource/outputs/writers/json.py +0 -0
  358. {querysource-5.1.2 → querysource-5.1.3}/querysource/outputs/writers/pickle.py +0 -0
  359. {querysource-5.1.2 → querysource-5.1.3}/querysource/outputs/writers/plotly.py +0 -0
  360. {querysource-5.1.2 → querysource-5.1.3}/querysource/outputs/writers/profiling.py +0 -0
  361. {querysource-5.1.2 → querysource-5.1.3}/querysource/outputs/writers/report.py +0 -0
  362. {querysource-5.1.2 → querysource-5.1.3}/querysource/outputs/writers/table.py +0 -0
  363. {querysource-5.1.2 → querysource-5.1.3}/querysource/outputs/writers/tsv.py +0 -0
  364. {querysource-5.1.2 → querysource-5.1.3}/querysource/outputs/writers/txt.py +0 -0
  365. {querysource-5.1.2 → querysource-5.1.3}/querysource/outputs/writers/xml.py +0 -0
  366. {querysource-5.1.2 → querysource-5.1.3}/querysource/ownership_logging.py +0 -0
  367. {querysource-5.1.2 → querysource-5.1.3}/querysource/parsers/__init__.py +0 -0
  368. {querysource-5.1.2 → querysource-5.1.3}/querysource/parsers/arangodb.pxd +0 -0
  369. {querysource-5.1.2 → querysource-5.1.3}/querysource/parsers/arangodb.pyx +0 -0
  370. {querysource-5.1.2 → querysource-5.1.3}/querysource/parsers/bigquery.pxd +0 -0
  371. {querysource-5.1.2 → querysource-5.1.3}/querysource/parsers/bigquery.pyx +0 -0
  372. {querysource-5.1.2 → querysource-5.1.3}/querysource/parsers/cql.pxd +0 -0
  373. {querysource-5.1.2 → querysource-5.1.3}/querysource/parsers/cql.pyx +0 -0
  374. {querysource-5.1.2 → querysource-5.1.3}/querysource/parsers/deltatbl.pxd +0 -0
  375. {querysource-5.1.2 → querysource-5.1.3}/querysource/parsers/deltatbl.pyx +0 -0
  376. {querysource-5.1.2 → querysource-5.1.3}/querysource/parsers/elastic.pxd +0 -0
  377. {querysource-5.1.2 → querysource-5.1.3}/querysource/parsers/elastic.pyx +0 -0
  378. {querysource-5.1.2 → querysource-5.1.3}/querysource/parsers/iceberg.pxd +0 -0
  379. {querysource-5.1.2 → querysource-5.1.3}/querysource/parsers/iceberg.pyx +0 -0
  380. {querysource-5.1.2 → querysource-5.1.3}/querysource/parsers/influx.pxd +0 -0
  381. {querysource-5.1.2 → querysource-5.1.3}/querysource/parsers/influx.pyx +0 -0
  382. {querysource-5.1.2 → querysource-5.1.3}/querysource/parsers/mongo.pxd +0 -0
  383. {querysource-5.1.2 → querysource-5.1.3}/querysource/parsers/mongo.pyx +0 -0
  384. {querysource-5.1.2 → querysource-5.1.3}/querysource/parsers/parser.pxd +0 -0
  385. {querysource-5.1.2 → querysource-5.1.3}/querysource/parsers/parser.pyx +0 -0
  386. {querysource-5.1.2 → querysource-5.1.3}/querysource/parsers/pgsql.pxd +0 -0
  387. {querysource-5.1.2 → querysource-5.1.3}/querysource/parsers/rethink.pxd +0 -0
  388. {querysource-5.1.2 → querysource-5.1.3}/querysource/parsers/rethink.pyx +0 -0
  389. {querysource-5.1.2 → querysource-5.1.3}/querysource/parsers/sosql.pxd +0 -0
  390. {querysource-5.1.2 → querysource-5.1.3}/querysource/parsers/sosql.pyx +0 -0
  391. {querysource-5.1.2 → querysource-5.1.3}/querysource/parsers/sql.pxd +0 -0
  392. {querysource-5.1.2 → querysource-5.1.3}/querysource/parsers/sql.pyx +0 -0
  393. {querysource-5.1.2 → querysource-5.1.3}/querysource/parsers/sqlserver.pxd +0 -0
  394. {querysource-5.1.2 → querysource-5.1.3}/querysource/parsers/sqlserver.pyx +0 -0
  395. {querysource-5.1.2 → querysource-5.1.3}/querysource/plugins/__init__.py +0 -0
  396. {querysource-5.1.2 → querysource-5.1.3}/querysource/plugins/importer.py +0 -0
  397. {querysource-5.1.2 → querysource-5.1.3}/querysource/plugins/sources/__init__.py +0 -0
  398. {querysource-5.1.2 → querysource-5.1.3}/querysource/providers/__init__.py +0 -0
  399. {querysource-5.1.2 → querysource-5.1.3}/querysource/providers/abstract.py +0 -0
  400. {querysource-5.1.2 → querysource-5.1.3}/querysource/providers/arangodb.py +0 -0
  401. {querysource-5.1.2 → querysource-5.1.3}/querysource/providers/bigquery.py +0 -0
  402. {querysource-5.1.2 → querysource-5.1.3}/querysource/providers/cassandra.py +0 -0
  403. {querysource-5.1.2 → querysource-5.1.3}/querysource/providers/db.py +0 -0
  404. {querysource-5.1.2 → querysource-5.1.3}/querysource/providers/default.py +0 -0
  405. {querysource-5.1.2 → querysource-5.1.3}/querysource/providers/deltatbl.py +0 -0
  406. {querysource-5.1.2 → querysource-5.1.3}/querysource/providers/documentdb.py +0 -0
  407. {querysource-5.1.2 → querysource-5.1.3}/querysource/providers/dummy.py +0 -0
  408. {querysource-5.1.2 → querysource-5.1.3}/querysource/providers/elastic.py +0 -0
  409. {querysource-5.1.2 → querysource-5.1.3}/querysource/providers/external.py +0 -0
  410. {querysource-5.1.2 → querysource-5.1.3}/querysource/providers/http.py +0 -0
  411. {querysource-5.1.2 → querysource-5.1.3}/querysource/providers/iceberg.py +0 -0
  412. {querysource-5.1.2 → querysource-5.1.3}/querysource/providers/influx.py +0 -0
  413. {querysource-5.1.2 → querysource-5.1.3}/querysource/providers/mysql.py +0 -0
  414. {querysource-5.1.2 → querysource-5.1.3}/querysource/providers/pg.py +0 -0
  415. {querysource-5.1.2 → querysource-5.1.3}/querysource/providers/py.typed +0 -0
  416. {querysource-5.1.2 → querysource-5.1.3}/querysource/providers/rest.py +0 -0
  417. {querysource-5.1.2 → querysource-5.1.3}/querysource/providers/rethink.py +0 -0
  418. {querysource-5.1.2 → querysource-5.1.3}/querysource/providers/salesforce.py +0 -0
  419. {querysource-5.1.2 → querysource-5.1.3}/querysource/providers/scylladb.py +0 -0
  420. {querysource-5.1.2 → querysource-5.1.3}/querysource/providers/sources/__init__.py +0 -0
  421. {querysource-5.1.2 → querysource-5.1.3}/querysource/providers/sources/abstract.py +0 -0
  422. {querysource-5.1.2 → querysource-5.1.3}/querysource/providers/sources/amazon.py +0 -0
  423. {querysource-5.1.2 → querysource-5.1.3}/querysource/providers/sources/countries.py +0 -0
  424. {querysource-5.1.2 → querysource-5.1.3}/querysource/providers/sources/ga.py +0 -0
  425. {querysource-5.1.2 → querysource-5.1.3}/querysource/providers/sources/geofcc.py +0 -0
  426. {querysource-5.1.2 → querysource-5.1.3}/querysource/providers/sources/gmaps.py +0 -0
  427. {querysource-5.1.2 → querysource-5.1.3}/querysource/providers/sources/graphcountries.py +0 -0
  428. {querysource-5.1.2 → querysource-5.1.3}/querysource/providers/sources/graphql.py +0 -0
  429. {querysource-5.1.2 → querysource-5.1.3}/querysource/providers/sources/http.py +0 -0
  430. {querysource-5.1.2 → querysource-5.1.3}/querysource/providers/sources/hubspot.py +0 -0
  431. {querysource-5.1.2 → querysource-5.1.3}/querysource/providers/sources/openweather.py +0 -0
  432. {querysource-5.1.2 → querysource-5.1.3}/querysource/providers/sources/parsers/__init__.py +0 -0
  433. {querysource-5.1.2 → querysource-5.1.3}/querysource/providers/sources/parsers/amproduct.py +0 -0
  434. {querysource-5.1.2 → querysource-5.1.3}/querysource/providers/sources/parsers/xpath.py +0 -0
  435. {querysource-5.1.2 → querysource-5.1.3}/querysource/providers/sources/pokemon.py +0 -0
  436. {querysource-5.1.2 → querysource-5.1.3}/querysource/providers/sources/populartimes.py +0 -0
  437. {querysource-5.1.2 → querysource-5.1.3}/querysource/providers/sources/py.typed +0 -0
  438. {querysource-5.1.2 → querysource-5.1.3}/querysource/providers/sources/rest.py +0 -0
  439. {querysource-5.1.2 → querysource-5.1.3}/querysource/providers/sources/retailnext.py +0 -0
  440. {querysource-5.1.2 → querysource-5.1.3}/querysource/providers/sources/rssapp.py +0 -0
  441. {querysource-5.1.2 → querysource-5.1.3}/querysource/providers/sources/salesforce.py +0 -0
  442. {querysource-5.1.2 → querysource-5.1.3}/querysource/providers/sources/scrapper.py +0 -0
  443. {querysource-5.1.2 → querysource-5.1.3}/querysource/providers/sources/shoppertrack.py +0 -0
  444. {querysource-5.1.2 → querysource-5.1.3}/querysource/providers/sources/swop.py +0 -0
  445. {querysource-5.1.2 → querysource-5.1.3}/querysource/providers/sources/uap.py +0 -0
  446. {querysource-5.1.2 → querysource-5.1.3}/querysource/providers/sources/upc.py +0 -0
  447. {querysource-5.1.2 → querysource-5.1.3}/querysource/providers/sources/wm_stores.py +0 -0
  448. {querysource-5.1.2 → querysource-5.1.3}/querysource/providers/sources/zammad.py +0 -0
  449. {querysource-5.1.2 → querysource-5.1.3}/querysource/providers/sources/zipcodeapi.py +0 -0
  450. {querysource-5.1.2 → querysource-5.1.3}/querysource/providers/sqlserver.py +0 -0
  451. {querysource-5.1.2 → querysource-5.1.3}/querysource/py.typed +0 -0
  452. {querysource-5.1.2 → querysource-5.1.3}/querysource/qs_parsers/__init__.py +0 -0
  453. {querysource-5.1.2 → querysource-5.1.3}/querysource/qsurl/__init__.py +0 -0
  454. {querysource-5.1.2 → querysource-5.1.3}/querysource/qsurl/_fallback.py +0 -0
  455. {querysource-5.1.2 → querysource-5.1.3}/querysource/qsurl/capabilities.py +0 -0
  456. {querysource-5.1.2 → querysource-5.1.3}/querysource/qsurl/errors.py +0 -0
  457. {querysource-5.1.2 → querysource-5.1.3}/querysource/qsurl/gbnf.py +0 -0
  458. {querysource-5.1.2 → querysource-5.1.3}/querysource/qsurl/grammar.lark +0 -0
  459. {querysource-5.1.2 → querysource-5.1.3}/querysource/qsurl/plan.py +0 -0
  460. {querysource-5.1.2 → querysource-5.1.3}/querysource/qsurl/residual.py +0 -0
  461. {querysource-5.1.2 → querysource-5.1.3}/querysource/qsurl/translate.py +0 -0
  462. {querysource-5.1.2 → querysource-5.1.3}/querysource/queries/__init__.py +0 -0
  463. {querysource-5.1.2 → querysource-5.1.3}/querysource/queries/base.py +0 -0
  464. {querysource-5.1.2 → querysource-5.1.3}/querysource/queries/describe.py +0 -0
  465. {querysource-5.1.2 → querysource-5.1.3}/querysource/queries/executor.py +0 -0
  466. {querysource-5.1.2 → querysource-5.1.3}/querysource/queries/models.py +0 -0
  467. {querysource-5.1.2 → querysource-5.1.3}/querysource/queries/multi/__init__.py +0 -0
  468. {querysource-5.1.2 → querysource-5.1.3}/querysource/queries/multi/_introspect.py +0 -0
  469. {querysource-5.1.2 → querysource-5.1.3}/querysource/queries/multi/abstract.py +0 -0
  470. {querysource-5.1.2 → querysource-5.1.3}/querysource/queries/multi/components/__init__.py +0 -0
  471. {querysource-5.1.2 → querysource-5.1.3}/querysource/queries/multi/components/abstract.py +0 -0
  472. {querysource-5.1.2 → querysource-5.1.3}/querysource/queries/multi/destinations/__init__.py +0 -0
  473. {querysource-5.1.2 → querysource-5.1.3}/querysource/queries/multi/destinations/dwh.py +0 -0
  474. {querysource-5.1.2 → querysource-5.1.3}/querysource/queries/multi/destinations/s3.py +0 -0
  475. {querysource-5.1.2 → querysource-5.1.3}/querysource/queries/multi/destinations/sharepoint.py +0 -0
  476. {querysource-5.1.2 → querysource-5.1.3}/querysource/queries/multi/destinations/table.py +0 -0
  477. {querysource-5.1.2 → querysource-5.1.3}/querysource/queries/multi/operators/Concat.py +0 -0
  478. {querysource-5.1.2 → querysource-5.1.3}/querysource/queries/multi/operators/GroupBy.catalog.yaml +0 -0
  479. {querysource-5.1.2 → querysource-5.1.3}/querysource/queries/multi/operators/GroupBy.py +0 -0
  480. {querysource-5.1.2 → querysource-5.1.3}/querysource/queries/multi/operators/Info.py +0 -0
  481. {querysource-5.1.2 → querysource-5.1.3}/querysource/queries/multi/operators/Join.catalog.yaml +0 -0
  482. {querysource-5.1.2 → querysource-5.1.3}/querysource/queries/multi/operators/Join.py +0 -0
  483. {querysource-5.1.2 → querysource-5.1.3}/querysource/queries/multi/operators/Melt.catalog.yaml +0 -0
  484. {querysource-5.1.2 → querysource-5.1.3}/querysource/queries/multi/operators/Melt.py +0 -0
  485. {querysource-5.1.2 → querysource-5.1.3}/querysource/queries/multi/operators/Merge.catalog.yaml +0 -0
  486. {querysource-5.1.2 → querysource-5.1.3}/querysource/queries/multi/operators/Merge.py +0 -0
  487. {querysource-5.1.2 → querysource-5.1.3}/querysource/queries/multi/operators/__init__.py +0 -0
  488. {querysource-5.1.2 → querysource-5.1.3}/querysource/queries/multi/operators/abstract.py +0 -0
  489. {querysource-5.1.2 → querysource-5.1.3}/querysource/queries/multi/operators/filter/Filter.catalog.yaml +0 -0
  490. {querysource-5.1.2 → querysource-5.1.3}/querysource/queries/multi/operators/filter/__init__.py +0 -0
  491. {querysource-5.1.2 → querysource-5.1.3}/querysource/queries/multi/operators/filter/flt.py +0 -0
  492. {querysource-5.1.2 → querysource-5.1.3}/querysource/queries/multi/registry.py +0 -0
  493. {querysource-5.1.2 → querysource-5.1.3}/querysource/queries/multi/sources/__init__.py +0 -0
  494. {querysource-5.1.2 → querysource-5.1.3}/querysource/queries/multi/sources/airtable.py +0 -0
  495. {querysource-5.1.2 → querysource-5.1.3}/querysource/queries/multi/sources/base.py +0 -0
  496. {querysource-5.1.2 → querysource-5.1.3}/querysource/queries/multi/sources/executors.py +0 -0
  497. {querysource-5.1.2 → querysource-5.1.3}/querysource/queries/multi/sources/file.py +0 -0
  498. {querysource-5.1.2 → querysource-5.1.3}/querysource/queries/multi/sources/query.catalog.yaml +0 -0
  499. {querysource-5.1.2 → querysource-5.1.3}/querysource/queries/multi/sources/query.py +0 -0
  500. {querysource-5.1.2 → querysource-5.1.3}/querysource/queries/multi/sources/s3.py +0 -0
  501. {querysource-5.1.2 → querysource-5.1.3}/querysource/queries/multi/sources/sharepoint.py +0 -0
  502. {querysource-5.1.2 → querysource-5.1.3}/querysource/queries/multi/sources/smartsheet.py +0 -0
  503. {querysource-5.1.2 → querysource-5.1.3}/querysource/queries/multi/sources/table.py +0 -0
  504. {querysource-5.1.2 → querysource-5.1.3}/querysource/queries/multi/transformations/DropCols.catalog.yaml +0 -0
  505. {querysource-5.1.2 → querysource-5.1.3}/querysource/queries/multi/transformations/DropCols.py +0 -0
  506. {querysource-5.1.2 → querysource-5.1.3}/querysource/queries/multi/transformations/FilterCols.catalog.yaml +0 -0
  507. {querysource-5.1.2 → querysource-5.1.3}/querysource/queries/multi/transformations/FilterCols.py +0 -0
  508. {querysource-5.1.2 → querysource-5.1.3}/querysource/queries/multi/transformations/Forecast.catalog.yaml +0 -0
  509. {querysource-5.1.2 → querysource-5.1.3}/querysource/queries/multi/transformations/Forecast.py +0 -0
  510. {querysource-5.1.2 → querysource-5.1.3}/querysource/queries/multi/transformations/Map.catalog.yaml +0 -0
  511. {querysource-5.1.2 → querysource-5.1.3}/querysource/queries/multi/transformations/Map.py +0 -0
  512. {querysource-5.1.2 → querysource-5.1.3}/querysource/queries/multi/transformations/NormalizeColumns.catalog.yaml +0 -0
  513. {querysource-5.1.2 → querysource-5.1.3}/querysource/queries/multi/transformations/NormalizeColumns.py +0 -0
  514. {querysource-5.1.2 → querysource-5.1.3}/querysource/queries/multi/transformations/PluckCols.catalog.yaml +0 -0
  515. {querysource-5.1.2 → querysource-5.1.3}/querysource/queries/multi/transformations/PluckCols.py +0 -0
  516. {querysource-5.1.2 → querysource-5.1.3}/querysource/queries/multi/transformations/__init__.py +0 -0
  517. {querysource-5.1.2 → querysource-5.1.3}/querysource/queries/multi/transformations/abstract.py +0 -0
  518. {querysource-5.1.2 → querysource-5.1.3}/querysource/queries/multi/transformations/correlation.catalog.yaml +0 -0
  519. {querysource-5.1.2 → querysource-5.1.3}/querysource/queries/multi/transformations/correlation.py +0 -0
  520. {querysource-5.1.2 → querysource-5.1.3}/querysource/queries/multi/transformations/crosstab.catalog.yaml +0 -0
  521. {querysource-5.1.2 → querysource-5.1.3}/querysource/queries/multi/transformations/crosstab.py +0 -0
  522. {querysource-5.1.2 → querysource-5.1.3}/querysource/queries/multi/transformations/google/GoogleMaps.catalog.yaml +0 -0
  523. {querysource-5.1.2 → querysource-5.1.3}/querysource/queries/multi/transformations/google/__init__.py +0 -0
  524. {querysource-5.1.2 → querysource-5.1.3}/querysource/queries/multi/transformations/google/maps.py +0 -0
  525. {querysource-5.1.2 → querysource-5.1.3}/querysource/queries/multi/transformations/pivot.catalog.yaml +0 -0
  526. {querysource-5.1.2 → querysource-5.1.3}/querysource/queries/multi/transformations/pivot.py +0 -0
  527. {querysource-5.1.2 → querysource-5.1.3}/querysource/queries/multi/transformations/tExplode.catalog.yaml +0 -0
  528. {querysource-5.1.2 → querysource-5.1.3}/querysource/queries/multi/transformations/tExplode.py +0 -0
  529. {querysource-5.1.2 → querysource-5.1.3}/querysource/queries/multi/transformations/tOrder.catalog.yaml +0 -0
  530. {querysource-5.1.2 → querysource-5.1.3}/querysource/queries/multi/transformations/tOrder.py +0 -0
  531. {querysource-5.1.2 → querysource-5.1.3}/querysource/queries/multi/transformations/tPandas.py +0 -0
  532. {querysource-5.1.2 → querysource-5.1.3}/querysource/queries/obj.py +0 -0
  533. {querysource-5.1.2 → querysource-5.1.3}/querysource/queries/qs.py +0 -0
  534. {querysource-5.1.2 → querysource-5.1.3}/querysource/repositories/__init__.py +0 -0
  535. {querysource-5.1.2 → querysource-5.1.3}/querysource/repositories/definitions.py +0 -0
  536. {querysource-5.1.2 → querysource-5.1.3}/querysource/scheduler/__init__.py +0 -0
  537. {querysource-5.1.2 → querysource-5.1.3}/querysource/scheduler/jobs.py +0 -0
  538. {querysource-5.1.2 → querysource-5.1.3}/querysource/scheduler/notifications.py +0 -0
  539. {querysource-5.1.2 → querysource-5.1.3}/querysource/scheduler/scheduler.py +0 -0
  540. {querysource-5.1.2 → querysource-5.1.3}/querysource/services.py +0 -0
  541. {querysource-5.1.2 → querysource-5.1.3}/querysource/template/__init__.py +0 -0
  542. {querysource-5.1.2 → querysource-5.1.3}/querysource/template/parser.py +0 -0
  543. {querysource-5.1.2 → querysource-5.1.3}/querysource/tenant_errors.py +0 -0
  544. {querysource-5.1.2 → querysource-5.1.3}/querysource/tenant_models.py +0 -0
  545. {querysource-5.1.2 → querysource-5.1.3}/querysource/tenants.py +0 -0
  546. {querysource-5.1.2 → querysource-5.1.3}/querysource/types/__init__.py +0 -0
  547. {querysource-5.1.2 → querysource-5.1.3}/querysource/types/converters.pyx +0 -0
  548. {querysource-5.1.2 → querysource-5.1.3}/querysource/types/dt/__init__.py +0 -0
  549. {querysource-5.1.2 → querysource-5.1.3}/querysource/types/dt/filters.py +0 -0
  550. {querysource-5.1.2 → querysource-5.1.3}/querysource/types/dt/transforms.py +0 -0
  551. {querysource-5.1.2 → querysource-5.1.3}/querysource/types/py.typed +0 -0
  552. {querysource-5.1.2 → querysource-5.1.3}/querysource/types/typedefs.pyx +0 -0
  553. {querysource-5.1.2 → querysource-5.1.3}/querysource/types/validators.pyx +0 -0
  554. {querysource-5.1.2 → querysource-5.1.3}/querysource/utils/__init__.py +0 -0
  555. {querysource-5.1.2 → querysource-5.1.3}/querysource/utils/cache_serialization.py +0 -0
  556. {querysource-5.1.2 → querysource-5.1.3}/querysource/utils/dataframes.py +0 -0
  557. {querysource-5.1.2 → querysource-5.1.3}/querysource/utils/errors.py +0 -0
  558. {querysource-5.1.2 → querysource-5.1.3}/querysource/utils/events.py +0 -0
  559. {querysource-5.1.2 → querysource-5.1.3}/querysource/utils/fn.py +0 -0
  560. {querysource-5.1.2 → querysource-5.1.3}/querysource/utils/functions.pyx +0 -0
  561. {querysource-5.1.2 → querysource-5.1.3}/querysource/utils/getfunc.py +0 -0
  562. {querysource-5.1.2 → querysource-5.1.3}/querysource/utils/handlers.py +0 -0
  563. {querysource-5.1.2 → querysource-5.1.3}/querysource/utils/parseqs.pyx +0 -0
  564. {querysource-5.1.2 → querysource-5.1.3}/querysource/utils/validators.py +0 -0
  565. {querysource-5.1.2 → querysource-5.1.3}/querysource/utils/vocabulary.py +0 -0
  566. {querysource-5.1.2 → querysource-5.1.3}/querysource.egg-info/dependency_links.txt +0 -0
  567. {querysource-5.1.2 → querysource-5.1.3}/querysource.egg-info/entry_points.txt +0 -0
  568. {querysource-5.1.2 → querysource-5.1.3}/querysource.egg-info/not-zip-safe +0 -0
  569. {querysource-5.1.2 → querysource-5.1.3}/querysource.egg-info/requires.txt +0 -0
  570. {querysource-5.1.2 → querysource-5.1.3}/querysource.egg-info/top_level.txt +0 -0
  571. {querysource-5.1.2 → querysource-5.1.3}/run.py +0 -0
  572. {querysource-5.1.2 → querysource-5.1.3}/rust/Cargo.lock +0 -0
  573. {querysource-5.1.2 → querysource-5.1.3}/rust/pyproject.toml +0 -0
  574. {querysource-5.1.2 → querysource-5.1.3}/rust/qsurl/Cargo.lock +0 -0
  575. {querysource-5.1.2 → querysource-5.1.3}/rust/qsurl/README.md +0 -0
  576. {querysource-5.1.2 → querysource-5.1.3}/rust/qsurl/examples/parse.rs +0 -0
  577. {querysource-5.1.2 → querysource-5.1.3}/rust/qsurl/pyproject.toml +0 -0
  578. {querysource-5.1.2 → querysource-5.1.3}/rust/qsurl/src/ast.rs +0 -0
  579. {querysource-5.1.2 → querysource-5.1.3}/rust/qsurl/src/ir.rs +0 -0
  580. {querysource-5.1.2 → querysource-5.1.3}/rust/qsurl/src/lib.rs +0 -0
  581. {querysource-5.1.2 → querysource-5.1.3}/rust/qsurl/src/parser.rs +0 -0
  582. {querysource-5.1.2 → querysource-5.1.3}/rust/qsurl/src/python.rs +0 -0
  583. {querysource-5.1.2 → querysource-5.1.3}/rust/src/arangodb_parser.rs +0 -0
  584. {querysource-5.1.2 → querysource-5.1.3}/rust/src/bigquery_parser.rs +0 -0
  585. {querysource-5.1.2 → querysource-5.1.3}/rust/src/cql_parser.rs +0 -0
  586. {querysource-5.1.2 → querysource-5.1.3}/rust/src/elastic_parser.rs +0 -0
  587. {querysource-5.1.2 → querysource-5.1.3}/rust/src/filter_common.rs +0 -0
  588. {querysource-5.1.2 → querysource-5.1.3}/rust/src/flux_parser.rs +0 -0
  589. {querysource-5.1.2 → querysource-5.1.3}/rust/src/mongo_parser.rs +0 -0
  590. {querysource-5.1.2 → querysource-5.1.3}/rust/src/mssql_parser.rs +0 -0
  591. {querysource-5.1.2 → querysource-5.1.3}/rust/src/parseqs.rs +0 -0
  592. {querysource-5.1.2 → querysource-5.1.3}/rust/src/pgsql_parser.rs +0 -0
  593. {querysource-5.1.2 → querysource-5.1.3}/rust/src/rethink_parser.rs +0 -0
  594. {querysource-5.1.2 → querysource-5.1.3}/rust/src/safe_dict.rs +0 -0
  595. {querysource-5.1.2 → querysource-5.1.3}/rust/src/soql_parser.rs +0 -0
  596. {querysource-5.1.2 → querysource-5.1.3}/rust/src/sql_parser.rs +0 -0
  597. {querysource-5.1.2 → querysource-5.1.3}/rust/src/validators.rs +0 -0
  598. {querysource-5.1.2 → querysource-5.1.3}/scripts/analyze_sdd_coder_usage.py +0 -0
  599. {querysource-5.1.2 → querysource-5.1.3}/scripts/remove_worktree.py +0 -0
  600. {querysource-5.1.2 → querysource-5.1.3}/scripts/sdd/__init__.py +0 -0
  601. {querysource-5.1.2 → querysource-5.1.3}/scripts/sdd/_parrot_runtime.py +0 -0
  602. {querysource-5.1.2 → querysource-5.1.3}/scripts/sdd/_validation_contract.py +0 -0
  603. {querysource-5.1.2 → querysource-5.1.3}/scripts/sdd/check_id_collisions.py +0 -0
  604. {querysource-5.1.2 → querysource-5.1.3}/scripts/sdd/check_task_graph.py +0 -0
  605. {querysource-5.1.2 → querysource-5.1.3}/scripts/sdd/close_task.sh +0 -0
  606. {querysource-5.1.2 → querysource-5.1.3}/scripts/sdd/doc_taxonomy.py +0 -0
  607. {querysource-5.1.2 → querysource-5.1.3}/scripts/sdd/ensure_worktree.py +0 -0
  608. {querysource-5.1.2 → querysource-5.1.3}/scripts/sdd/finalize_task.py +0 -0
  609. {querysource-5.1.2 → querysource-5.1.3}/scripts/sdd/heal_orphans.sh +0 -0
  610. {querysource-5.1.2 → querysource-5.1.3}/scripts/sdd/id_ledger.py +0 -0
  611. {querysource-5.1.2 → querysource-5.1.3}/scripts/sdd/insight.py +0 -0
  612. {querysource-5.1.2 → querysource-5.1.3}/scripts/sdd/install_hooks.py +0 -0
  613. {querysource-5.1.2 → querysource-5.1.3}/scripts/sdd/lint_new.py +0 -0
  614. {querysource-5.1.2 → querysource-5.1.3}/scripts/sdd/migrate_index.py +0 -0
  615. {querysource-5.1.2 → querysource-5.1.3}/scripts/sdd/profile_execution.py +0 -0
  616. {querysource-5.1.2 → querysource-5.1.3}/scripts/sdd/prune_intake.py +0 -0
  617. {querysource-5.1.2 → querysource-5.1.3}/scripts/sdd/reserve_ids.py +0 -0
  618. {querysource-5.1.2 → querysource-5.1.3}/scripts/sdd/review_checkpoint.py +0 -0
  619. {querysource-5.1.2 → querysource-5.1.3}/scripts/sdd/sdd_meta.py +0 -0
  620. {querysource-5.1.2 → querysource-5.1.3}/scripts/sdd/select_tests.py +0 -0
  621. {querysource-5.1.2 → querysource-5.1.3}/scripts/sdd/token_audit.py +0 -0
  622. {querysource-5.1.2 → querysource-5.1.3}/scripts/sdd/worktree_environment.py +0 -0
  623. {querysource-5.1.2 → querysource-5.1.3}/scripts/sdd/worktree_status.py +0 -0
  624. {querysource-5.1.2 → querysource-5.1.3}/scripts/sweep_worktrees.py +0 -0
  625. {querysource-5.1.2 → querysource-5.1.3}/setup.cfg +0 -0
  626. {querysource-5.1.2 → querysource-5.1.3}/static/notebook/bundle.js +0 -0
  627. {querysource-5.1.2 → querysource-5.1.3}/templates/__init__.py +0 -0
  628. {querysource-5.1.2 → querysource-5.1.3}/templates/base.html +0 -0
  629. {querysource-5.1.2 → querysource-5.1.3}/templates/default.html +0 -0
  630. {querysource-5.1.2 → querysource-5.1.3}/templates/default_table.html +0 -0
  631. {querysource-5.1.2 → querysource-5.1.3}/templates/fontlist-v330.json +0 -0
  632. {querysource-5.1.2 → querysource-5.1.3}/templates/fontlist-v390.json +0 -0
  633. {querysource-5.1.2 → querysource-5.1.3}/templates/table_charts.html +0 -0
  634. {querysource-5.1.2 → querysource-5.1.3}/tests/auth/__init__.py +0 -0
  635. {querysource-5.1.2 → querysource-5.1.3}/tests/auth/test_credentials.py +0 -0
  636. {querysource-5.1.2 → querysource-5.1.3}/tests/auth/test_enforcement.py +0 -0
  637. {querysource-5.1.2 → querysource-5.1.3}/tests/auth/test_pbac_bootstrap.py +0 -0
  638. {querysource-5.1.2 → querysource-5.1.3}/tests/auth/test_pbac_runtime.py +0 -0
  639. {querysource-5.1.2 → querysource-5.1.3}/tests/auth/test_principal.py +0 -0
  640. {querysource-5.1.2 → querysource-5.1.3}/tests/auth/test_slug_visibility.py +0 -0
  641. {querysource-5.1.2 → querysource-5.1.3}/tests/check_concurrent_get_slug.py +0 -0
  642. {querysource-5.1.2 → querysource-5.1.3}/tests/conftest.py +0 -0
  643. {querysource-5.1.2 → querysource-5.1.3}/tests/datasources/__init__.py +0 -0
  644. {querysource-5.1.2 → querysource-5.1.3}/tests/datasources/test_datasource_view_pbac.py +0 -0
  645. {querysource-5.1.2 → querysource-5.1.3}/tests/datasources/test_driver_factory_session.py +0 -0
  646. {querysource-5.1.2 → querysource-5.1.3}/tests/datasources/test_pg_admin_registration.py +0 -0
  647. {querysource-5.1.2 → querysource-5.1.3}/tests/datasources/test_pg_params_for.py +0 -0
  648. {querysource-5.1.2 → querysource-5.1.3}/tests/e2e/__init__.py +0 -0
  649. {querysource-5.1.2 → querysource-5.1.3}/tests/e2e/conftest.py +0 -0
  650. {querysource-5.1.2 → querysource-5.1.3}/tests/e2e/test_multiqs_dry_run.py +0 -0
  651. {querysource-5.1.2 → querysource-5.1.3}/tests/e2e/test_qs_dry_run.py +0 -0
  652. {querysource-5.1.2 → querysource-5.1.3}/tests/e2e/test_qsurl_dry_run.py +0 -0
  653. {querysource-5.1.2 → querysource-5.1.3}/tests/handlers/__init__.py +0 -0
  654. {querysource-5.1.2 → querysource-5.1.3}/tests/handlers/conftest.py +0 -0
  655. {querysource-5.1.2 → querysource-5.1.3}/tests/handlers/test_abstract_pbac_helpers.py +0 -0
  656. {querysource-5.1.2 → querysource-5.1.3}/tests/handlers/test_airtable_oauth.py +0 -0
  657. {querysource-5.1.2 → querysource-5.1.3}/tests/handlers/test_describe_columns.py +0 -0
  658. {querysource-5.1.2 → querysource-5.1.3}/tests/handlers/test_describe_detail.py +0 -0
  659. {querysource-5.1.2 → querysource-5.1.3}/tests/handlers/test_describe_list.py +0 -0
  660. {querysource-5.1.2 → querysource-5.1.3}/tests/handlers/test_describe_tenant.py +0 -0
  661. {querysource-5.1.2 → querysource-5.1.3}/tests/handlers/test_describe_vocabulary.py +0 -0
  662. {querysource-5.1.2 → querysource-5.1.3}/tests/handlers/test_multiquery_pbac_smoke.py +0 -0
  663. {querysource-5.1.2 → querysource-5.1.3}/tests/handlers/test_pagination_describe_helpers.py +0 -0
  664. {querysource-5.1.2 → querysource-5.1.3}/tests/handlers/test_qsurl_service.py +0 -0
  665. {querysource-5.1.2 → querysource-5.1.3}/tests/handlers/test_query_param_exclusion.py +0 -0
  666. {querysource-5.1.2 → querysource-5.1.3}/tests/handlers/test_queryexecutor_pbac_smoke.py +0 -0
  667. {querysource-5.1.2 → querysource-5.1.3}/tests/handlers/test_querymanager_pagination.py +0 -0
  668. {querysource-5.1.2 → querysource-5.1.3}/tests/handlers/test_queryservice_definition_forwarding.py +0 -0
  669. {querysource-5.1.2 → querysource-5.1.3}/tests/handlers/test_queryservice_pbac_smoke.py +0 -0
  670. {querysource-5.1.2 → querysource-5.1.3}/tests/integration/__init__.py +0 -0
  671. {querysource-5.1.2 → querysource-5.1.3}/tests/integration/test_csv_stream_response.py +0 -0
  672. {querysource-5.1.2 → querysource-5.1.3}/tests/integration/test_datasource_endpoint.py +0 -0
  673. {querysource-5.1.2 → querysource-5.1.3}/tests/integration/test_multiquery_output_errors.py +0 -0
  674. {querysource-5.1.2 → querysource-5.1.3}/tests/integration/test_pbac_credentials.py +0 -0
  675. {querysource-5.1.2 → querysource-5.1.3}/tests/integration/test_pbac_enforcement.py +0 -0
  676. {querysource-5.1.2 → querysource-5.1.3}/tests/integration/test_pbac_listing.py +0 -0
  677. {querysource-5.1.2 → querysource-5.1.3}/tests/integration/test_qs_principal_e2e.py +0 -0
  678. {querysource-5.1.2 → querysource-5.1.3}/tests/integration/test_slug_injection.py +0 -0
  679. {querysource-5.1.2 → querysource-5.1.3}/tests/integration/test_slug_regression.py +0 -0
  680. {querysource-5.1.2 → querysource-5.1.3}/tests/interfaces/__init__.py +0 -0
  681. {querysource-5.1.2 → querysource-5.1.3}/tests/interfaces/test_airtable_interface.py +0 -0
  682. {querysource-5.1.2 → querysource-5.1.3}/tests/multi/__init__.py +0 -0
  683. {querysource-5.1.2 → querysource-5.1.3}/tests/multi/sources/__init__.py +0 -0
  684. {querysource-5.1.2 → querysource-5.1.3}/tests/multi/sources/test_airtable_source.py +0 -0
  685. {querysource-5.1.2 → querysource-5.1.3}/tests/multi/sources/test_registry.py +0 -0
  686. {querysource-5.1.2 → querysource-5.1.3}/tests/multi/test_multiqs_principal.py +0 -0
  687. {querysource-5.1.2 → querysource-5.1.3}/tests/perf/__init__.py +0 -0
  688. {querysource-5.1.2 → querysource-5.1.3}/tests/perf/test_pbac_overhead.py +0 -0
  689. {querysource-5.1.2 → querysource-5.1.3}/tests/policies/__init__.py +0 -0
  690. {querysource-5.1.2 → querysource-5.1.3}/tests/policies/test_authorized_policy.py +0 -0
  691. {querysource-5.1.2 → querysource-5.1.3}/tests/policies/test_default_policies_load.py +0 -0
  692. {querysource-5.1.2 → querysource-5.1.3}/tests/qsurl/__init__.py +0 -0
  693. {querysource-5.1.2 → querysource-5.1.3}/tests/qsurl/conftest.py +0 -0
  694. {querysource-5.1.2 → querysource-5.1.3}/tests/qsurl/corpus.json +0 -0
  695. {querysource-5.1.2 → querysource-5.1.3}/tests/qsurl/test_core.py +0 -0
  696. {querysource-5.1.2 → querysource-5.1.3}/tests/qsurl/test_docs.py +0 -0
  697. {querysource-5.1.2 → querysource-5.1.3}/tests/qsurl/test_error_envelope.py +0 -0
  698. {querysource-5.1.2 → querysource-5.1.3}/tests/qsurl/test_fallback.py +0 -0
  699. {querysource-5.1.2 → querysource-5.1.3}/tests/qsurl/test_gbnf.py +0 -0
  700. {querysource-5.1.2 → querysource-5.1.3}/tests/qsurl/test_parity.py +0 -0
  701. {querysource-5.1.2 → querysource-5.1.3}/tests/qsurl/test_perf.py +0 -0
  702. {querysource-5.1.2 → querysource-5.1.3}/tests/qsurl/test_pg_ilike.py +0 -0
  703. {querysource-5.1.2 → querysource-5.1.3}/tests/qsurl/test_provider_capabilities.py +0 -0
  704. {querysource-5.1.2 → querysource-5.1.3}/tests/qsurl/test_qs_residual.py +0 -0
  705. {querysource-5.1.2 → querysource-5.1.3}/tests/qsurl/test_residual.py +0 -0
  706. {querysource-5.1.2 → querysource-5.1.3}/tests/qsurl/test_translate.py +0 -0
  707. {querysource-5.1.2 → querysource-5.1.3}/tests/qsurl/test_wheel_layout.py +0 -0
  708. {querysource-5.1.2 → querysource-5.1.3}/tests/scheduler/__init__.py +0 -0
  709. {querysource-5.1.2 → querysource-5.1.3}/tests/scheduler/test_jobs_no_principal.py +0 -0
  710. {querysource-5.1.2 → querysource-5.1.3}/tests/scheduler/test_parse_trigger_shorthands.py +0 -0
  711. {querysource-5.1.2 → querysource-5.1.3}/tests/scheduler/test_shorthand_loaders.py +0 -0
  712. {querysource-5.1.2 → querysource-5.1.3}/tests/services/__init__.py +0 -0
  713. {querysource-5.1.2 → querysource-5.1.3}/tests/services/test_querysource_setup_pbac.py +0 -0
  714. {querysource-5.1.2 → querysource-5.1.3}/tests/tenants/conftest.py +0 -0
  715. {querysource-5.1.2 → querysource-5.1.3}/tests/tenants/test_columns_definition.py +0 -0
  716. {querysource-5.1.2 → querysource-5.1.3}/tests/tenants/test_integration.py +0 -0
  717. {querysource-5.1.2 → querysource-5.1.3}/tests/tenants/test_multi_handler_definition.py +0 -0
  718. {querysource-5.1.2 → querysource-5.1.3}/tests/tenants/test_preloaded_definition_multiqs.py +0 -0
  719. {querysource-5.1.2 → querysource-5.1.3}/tests/tenants/test_preloaded_definition_qs.py +0 -0
  720. {querysource-5.1.2 → querysource-5.1.3}/tests/tenants/test_tenant_bootstrap_lookup.py +0 -0
  721. {querysource-5.1.2 → querysource-5.1.3}/tests/tenants/test_tenant_child_execution.py +0 -0
  722. {querysource-5.1.2 → querysource-5.1.3}/tests/tenants/test_tenant_definition_model.py +0 -0
  723. {querysource-5.1.2 → querysource-5.1.3}/tests/tenants/test_tenant_execution_context.py +0 -0
  724. {querysource-5.1.2 → querysource-5.1.3}/tests/tenants/test_tenant_http_routes.py +0 -0
  725. {querysource-5.1.2 → querysource-5.1.3}/tests/tenants/test_tenant_management_reads.py +0 -0
  726. {querysource-5.1.2 → querysource-5.1.3}/tests/tenants/test_tenant_management_writes.py +0 -0
  727. {querysource-5.1.2 → querysource-5.1.3}/tests/tenants/test_tenant_multi_dispatch.py +0 -0
  728. {querysource-5.1.2 → querysource-5.1.3}/tests/tenants/test_tenant_observability_outputs.py +0 -0
  729. {querysource-5.1.2 → querysource-5.1.3}/tests/tenants/test_tenant_policy_preflight.py +0 -0
  730. {querysource-5.1.2 → querysource-5.1.3}/tests/tenants/test_tenant_registry.py +0 -0
  731. {querysource-5.1.2 → querysource-5.1.3}/tests/tenants/test_tenant_remote_protocol.py +0 -0
  732. {querysource-5.1.2 → querysource-5.1.3}/tests/tenants/test_tenant_repository_reads.py +0 -0
  733. {querysource-5.1.2 → querysource-5.1.3}/tests/tenants/test_tenant_repository_writes.py +0 -0
  734. {querysource-5.1.2 → querysource-5.1.3}/tests/tenants/test_tenant_result_cache.py +0 -0
  735. {querysource-5.1.2 → querysource-5.1.3}/tests/tenants/test_tenant_rollout_documentation.py +0 -0
  736. {querysource-5.1.2 → querysource-5.1.3}/tests/tenants/test_tenant_scheduler_api_jobs.py +0 -0
  737. {querysource-5.1.2 → querysource-5.1.3}/tests/tenants/test_tenant_scheduler_registry.py +0 -0
  738. {querysource-5.1.2 → querysource-5.1.3}/tests/test_abstract_multi.py +0 -0
  739. {querysource-5.1.2 → querysource-5.1.3}/tests/test_abstract_refactor.py +0 -0
  740. {querysource-5.1.2 → querysource-5.1.3}/tests/test_api.py +0 -0
  741. {querysource-5.1.2 → querysource-5.1.3}/tests/test_arangodb_parser.py +0 -0
  742. {querysource-5.1.2 → querysource-5.1.3}/tests/test_catalog_colcols.py +0 -0
  743. {querysource-5.1.2 → querysource-5.1.3}/tests/test_catalog_correlation.py +0 -0
  744. {querysource-5.1.2 → querysource-5.1.3}/tests/test_catalog_filter.py +0 -0
  745. {querysource-5.1.2 → querysource-5.1.3}/tests/test_catalog_forecast.py +0 -0
  746. {querysource-5.1.2 → querysource-5.1.3}/tests/test_catalog_googlemaps.py +0 -0
  747. {querysource-5.1.2 → querysource-5.1.3}/tests/test_catalog_groupby.py +0 -0
  748. {querysource-5.1.2 → querysource-5.1.3}/tests/test_catalog_map.py +0 -0
  749. {querysource-5.1.2 → querysource-5.1.3}/tests/test_catalog_pivot.py +0 -0
  750. {querysource-5.1.2 → querysource-5.1.3}/tests/test_catalog_remote.py +0 -0
  751. {querysource-5.1.2 → querysource-5.1.3}/tests/test_catalog_texplode.py +0 -0
  752. {querysource-5.1.2 → querysource-5.1.3}/tests/test_catalog_torder.py +0 -0
  753. {querysource-5.1.2 → querysource-5.1.3}/tests/test_cli_generate_docs.py +0 -0
  754. {querysource-5.1.2 → querysource-5.1.3}/tests/test_column_filters.py +0 -0
  755. {querysource-5.1.2 → querysource-5.1.3}/tests/test_component_handler.py +0 -0
  756. {querysource-5.1.2 → querysource-5.1.3}/tests/test_component_registry.py +0 -0
  757. {querysource-5.1.2 → querysource-5.1.3}/tests/test_conf_airtable.py +0 -0
  758. {querysource-5.1.2 → querysource-5.1.3}/tests/test_destination_base.py +0 -0
  759. {querysource-5.1.2 → querysource-5.1.3}/tests/test_destination_dwh.py +0 -0
  760. {querysource-5.1.2 → querysource-5.1.3}/tests/test_destination_integration.py +0 -0
  761. {querysource-5.1.2 → querysource-5.1.3}/tests/test_destination_s3.py +0 -0
  762. {querysource-5.1.2 → querysource-5.1.3}/tests/test_destination_sharepoint.py +0 -0
  763. {querysource-5.1.2 → querysource-5.1.3}/tests/test_destination_table.py +0 -0
  764. {querysource-5.1.2 → querysource-5.1.3}/tests/test_destinations_documentation_endpoint.py +0 -0
  765. {querysource-5.1.2 → querysource-5.1.3}/tests/test_elastic_parser.py +0 -0
  766. {querysource-5.1.2 → querysource-5.1.3}/tests/test_error_formatter.py +0 -0
  767. {querysource-5.1.2 → querysource-5.1.3}/tests/test_eval.py +0 -0
  768. {querysource-5.1.2 → querysource-5.1.3}/tests/test_exception_codes.py +0 -0
  769. {querysource-5.1.2 → querysource-5.1.3}/tests/test_feat102_error_redaction.py +0 -0
  770. {querysource-5.1.2 → querysource-5.1.3}/tests/test_filters_drop_duplicates.py +0 -0
  771. {querysource-5.1.2 → querysource-5.1.3}/tests/test_flag_conditions.py +0 -0
  772. {querysource-5.1.2 → querysource-5.1.3}/tests/test_grouping_sync.py +0 -0
  773. {querysource-5.1.2 → querysource-5.1.3}/tests/test_info_eda.py +0 -0
  774. {querysource-5.1.2 → querysource-5.1.3}/tests/test_info_eda_e2e.py +0 -0
  775. {querysource-5.1.2 → querysource-5.1.3}/tests/test_info_eda_integration.py +0 -0
  776. {querysource-5.1.2 → querysource-5.1.3}/tests/test_join_conditions.py +0 -0
  777. {querysource-5.1.2 → querysource-5.1.3}/tests/test_join_with_column_filter.py +0 -0
  778. {querysource-5.1.2 → querysource-5.1.3}/tests/test_local_executor.py +0 -0
  779. {querysource-5.1.2 → querysource-5.1.3}/tests/test_multi_destinations_subpackage.py +0 -0
  780. {querysource-5.1.2 → querysource-5.1.3}/tests/test_multiqs_column_transforms.py +0 -0
  781. {querysource-5.1.2 → querysource-5.1.3}/tests/test_multiqs_destination_dispatch.py +0 -0
  782. {querysource-5.1.2 → querysource-5.1.3}/tests/test_multiqs_remote_dispatch.py +0 -0
  783. {querysource-5.1.2 → querysource-5.1.3}/tests/test_multiqs_slug_sources_normalize.py +0 -0
  784. {querysource-5.1.2 → querysource-5.1.3}/tests/test_multiqs_sources_integration.py +0 -0
  785. {querysource-5.1.2 → querysource-5.1.3}/tests/test_pgsql_jsonb_filters.py +0 -0
  786. {querysource-5.1.2 → querysource-5.1.3}/tests/test_qs_principal.py +0 -0
  787. {querysource-5.1.2 → querysource-5.1.3}/tests/test_queryslug_concurrency.py +0 -0
  788. {querysource-5.1.2 → querysource-5.1.3}/tests/test_querysource_setup_airtable.py +0 -0
  789. {querysource-5.1.2 → querysource-5.1.3}/tests/test_qworker_config.py +0 -0
  790. {querysource-5.1.2 → querysource-5.1.3}/tests/test_remote_executor.py +0 -0
  791. {querysource-5.1.2 → querysource-5.1.3}/tests/test_route_registration.py +0 -0
  792. {querysource-5.1.2 → querysource-5.1.3}/tests/test_rss.py +0 -0
  793. {querysource-5.1.2 → querysource-5.1.3}/tests/test_rust_parsers.py +0 -0
  794. {querysource-5.1.2 → querysource-5.1.3}/tests/test_scheduler_core.py +0 -0
  795. {querysource-5.1.2 → querysource-5.1.3}/tests/test_scheduler_handler_integration.py +0 -0
  796. {querysource-5.1.2 → querysource-5.1.3}/tests/test_scheduler_handler_unit.py +0 -0
  797. {querysource-5.1.2 → querysource-5.1.3}/tests/test_scheduler_integration.py +0 -0
  798. {querysource-5.1.2 → querysource-5.1.3}/tests/test_scheduler_jobs.py +0 -0
  799. {querysource-5.1.2 → querysource-5.1.3}/tests/test_scheduler_multi_routing.py +0 -0
  800. {querysource-5.1.2 → querysource-5.1.3}/tests/test_scheduler_notifications.py +0 -0
  801. {querysource-5.1.2 → querysource-5.1.3}/tests/test_schema_introspectable.py +0 -0
  802. {querysource-5.1.2 → querysource-5.1.3}/tests/test_source_registry.py +0 -0
  803. {querysource-5.1.2 → querysource-5.1.3}/tests/test_source_s3.py +0 -0
  804. {querysource-5.1.2 → querysource-5.1.3}/tests/test_source_sharepoint.py +0 -0
  805. {querysource-5.1.2 → querysource-5.1.3}/tests/test_source_smartsheet.py +0 -0
  806. {querysource-5.1.2 → querysource-5.1.3}/tests/test_source_table.py +0 -0
  807. {querysource-5.1.2 → querysource-5.1.3}/tests/test_sql_parser_combinations.py +0 -0
  808. {querysource-5.1.2 → querysource-5.1.3}/tests/test_table_output_postgres.py +0 -0
  809. {querysource-5.1.2 → querysource-5.1.3}/tests/test_texplode.py +0 -0
  810. {querysource-5.1.2 → querysource-5.1.3}/tests/test_thread_file_refactor.py +0 -0
  811. {querysource-5.1.2 → querysource-5.1.3}/tests/test_thread_query_refactor.py +0 -0
  812. {querysource-5.1.2 → querysource-5.1.3}/tests/test_thread_source_base.py +0 -0
  813. {querysource-5.1.2 → querysource-5.1.3}/tests/test_threadquery_executor.py +0 -0
  814. {querysource-5.1.2 → querysource-5.1.3}/tests/test_zammad_search.py +0 -0
  815. {querysource-5.1.2 → querysource-5.1.3}/tests/unit/test_csv_writer_dataframe.py +0 -0
  816. {querysource-5.1.2 → querysource-5.1.3}/tests/unit/test_cython_filter_fallback.py +0 -0
  817. {querysource-5.1.2 → querysource-5.1.3}/tests/unit/test_datasource_redaction.py +0 -0
  818. {querysource-5.1.2 → querysource-5.1.3}/tests/unit/test_error_payload.py +0 -0
  819. {querysource-5.1.2 → querysource-5.1.3}/tests/unit/test_handler_output_status.py +0 -0
  820. {querysource-5.1.2 → querysource-5.1.3}/tests/unit/test_iter_format_dataframe.py +0 -0
  821. {querysource-5.1.2 → querysource-5.1.3}/tests/unit/test_multiqs_output_raise.py +0 -0
  822. {querysource-5.1.2 → querysource-5.1.3}/tests/unit/test_output_error.py +0 -0
  823. {querysource-5.1.2 → querysource-5.1.3}/tests/unit/test_provider_describe_columns.py +0 -0
  824. {querysource-5.1.2 → querysource-5.1.3}/tests/unit/test_provider_raw_query_validated.py +0 -0
  825. {querysource-5.1.2 → querysource-5.1.3}/tests/unit/test_qs_parsers_validated.py +0 -0
  826. {querysource-5.1.2 → querysource-5.1.3}/tests/unit/test_raw_query_cond_definition_wiring.py +0 -0
  827. {querysource-5.1.2 → querysource-5.1.3}/tests/unit/test_slug_describer.py +0 -0
  828. {querysource-5.1.2 → querysource-5.1.3}/tests/unit/test_udf_keyword_resolution.py +0 -0
  829. {querysource-5.1.2 → querysource-5.1.3}/tests/unit/test_vocabulary.py +0 -0
  830. {querysource-5.1.2 → querysource-5.1.3}/tox.ini +0 -0
@@ -0,0 +1,127 @@
1
+ ---
2
+ name: sdd-brainstorm
3
+ description: Explore a feature idea through structured Q&A, codebase research, options, tradeoffs, and a committed SDD brainstorm document.
4
+ ---
5
+
6
+ # SDD Brainstorm
7
+
8
+ ## Full procedure and Codex adaptations
9
+
10
+ Before executing, read the [full sdd-brainstorm procedure](../../../.claude/commands/sdd-brainstorm.md)
11
+ and the [Codex adaptation contract](../../../docs/sdd/CODEX.md#codex-adaptation-contract).
12
+ Follow the full procedure for details omitted from this summary. The adaptation
13
+ contract and the Codex-specific instructions below override Claude runtime syntax
14
+ and legacy shell examples; retain all workflow gates and evidence requirements.
15
+
16
+ Use this skill when the user asks to run `sdd-brainstorm`, create a brainstorm,
17
+ or explore a feature idea before writing a formal spec.
18
+
19
+ Codex invocation: `$sdd-brainstorm <feature-slug> -- <notes>`.
20
+
21
+ ## Purpose
22
+
23
+ Produce `sdd/proposals/<feature-slug>.brainstorm.md` from an idea. This is an
24
+ exploration artifact, not implementation code and not a spec.
25
+
26
+ Pipeline:
27
+
28
+ ```text
29
+ $sdd-brainstorm -> review -> $sdd-spec -> $sdd-task -> $sdd-start
30
+ ```
31
+
32
+ ## Guardrails
33
+
34
+ - Do not write implementation code.
35
+ - Use `sdd/templates/brainstorm.md`.
36
+ - Preserve the YAML frontmatter from the template.
37
+ - Always resolve and record `type` and `base_branch`.
38
+ - Always include concrete existing-code references with file paths and line
39
+ numbers.
40
+ - Verify packages in project dependency files before recommending them.
41
+ - Commit only the brainstorm file unless the user explicitly asks otherwise.
42
+ - Fill frontmatter `projects` (parts of the codebase, vocabulary `KNOWN_PROJECTS` in
43
+ `scripts/sdd/sdd_meta.py`; unknown values warn) and `tags` (2–6 kebab-case keywords) — FEAT-576.
44
+
45
+ ## Flow Type
46
+
47
+ Ask these first unless the user already supplied explicit values:
48
+
49
+ 1. Is this `feature` or `hotfix`?
50
+ 2. For `feature`, which base branch? Default: `dev`. Use `staging` during a
51
+ release freeze or a parent feature branch for sub-features. For `hotfix`,
52
+ base is always `main`.
53
+
54
+ Defaults when unanswered: `type: feature`, `base_branch: dev`.
55
+
56
+ Validation:
57
+
58
+ - `type: hotfix` requires `base_branch: main`.
59
+ - `type: feature` with `base_branch: main` is invalid. Stop and explain that
60
+ features land on `dev`, `staging`, or a non-main parent feature branch.
61
+
62
+ ## Workflow
63
+
64
+ 1. Parse input:
65
+ - feature slug in kebab-case
66
+ - notes after `--`
67
+ - `intake: <staging-dir>` in the notes (FEAT-577): read its `intake.json` /
68
+ `synthesis.json`, treat the intake facts as answered, seed Round 1 from
69
+ the synthesis unknowns.
70
+ - optional `--type feature|hotfix`
71
+ - optional `--base-branch <branch>`
72
+ 2. Run at least two Q&A rounds:
73
+ - Round 1: intent, users, expected behavior, integration points, success
74
+ criteria.
75
+ - Round 2: gaps, edge cases, failure modes, tradeoffs, assumptions.
76
+ 3. Research the codebase:
77
+ - Run `wikitoolkit query "<focused question>"` before source scans.
78
+ - Inspect at least one relevant wiki page with `wikitoolkit page <id>` or
79
+ related entries when available.
80
+ - Use `rg` for source search.
81
+ - Read the source files before citing classes, functions, methods, imports,
82
+ or paths.
83
+ 4. Build the Code Context section:
84
+ - User-provided snippets, preserved verbatim.
85
+ - Verified imports and signatures with paths and line numbers.
86
+ - Things searched for that do not exist.
87
+ 5. Generate at least three solution options:
88
+ - name
89
+ - what it does
90
+ - pros and cons
91
+ - effort: Low, Medium, or High
92
+ - libraries/tools and existing code to reuse
93
+ - at least one less obvious approach
94
+ 6. Recommend one option and explain the tradeoff.
95
+ 7. Fill the remaining template sections:
96
+ - Problem Statement
97
+ - Constraints & Requirements
98
+ - Feature Description
99
+ - Capabilities
100
+ - Impact & Integration
101
+ - Open Questions
102
+ - Parallelism Assessment
103
+ 8. Save `sdd/proposals/<feature-slug>.brainstorm.md`.
104
+ 9. Commit only that brainstorm file:
105
+ - preserve unrelated staging; stop before committing if it is outside this run's scope
106
+ - stage only the brainstorm
107
+ - verify `git diff --cached --name-only`
108
+ - commit `sdd: add brainstorm for <feature-slug>`
109
+
110
+ ## Output
111
+
112
+ Report:
113
+
114
+ ```text
115
+ Brainstorm saved and committed: sdd/proposals/<feature-slug>.brainstorm.md
116
+ Recommended: Option <letter> - <name>
117
+ Effort: <Low|Medium|High>
118
+ Worktree isolation: <per-spec|mixed>
119
+ Open questions: <count>
120
+ Next: $sdd-spec <feature-slug>
121
+ ```
122
+
123
+ ## References
124
+
125
+ - `sdd/templates/brainstorm.md`
126
+ - `sdd/templates/spec.md`
127
+ - `sdd/WORKFLOW.md`
@@ -0,0 +1,80 @@
1
+ ---
2
+ name: sdd-codereview
3
+ description: Code review a completed SDD task against acceptance criteria, code quality, security, and adversarial cross-checks.
4
+ ---
5
+
6
+ # SDD Code Review
7
+
8
+ ## Full procedure and Codex adaptations
9
+
10
+ Before executing, read the [full sdd-codereview procedure](../../../.claude/commands/sdd-codereview.md)
11
+ and the [Codex adaptation contract](../../../docs/sdd/CODEX.md#codex-adaptation-contract).
12
+ Follow the full procedure for details omitted from this summary. The adaptation
13
+ contract and the Codex-specific instructions below override Claude runtime syntax
14
+ and legacy shell examples; retain all workflow gates and evidence requirements.
15
+
16
+ Use this skill when the user asks to review a completed SDD task, run `sdd-codereview`, or perform an adversarial code review on completed task artifacts.
17
+
18
+ **Mandatory Deferred Findings Table**: Every CONFIRMED 🔴/🟡 finding not fixed in-review MUST be
19
+ attempted with `wikitoolkit ledger open` and listed in the report's Deferred findings table. The
20
+ ledger intentionally resolves to the main checkout. If a sandbox makes it read-only, do not request
21
+ broader filesystem access or create a worktree-local ledger; list the full finding with
22
+ `(NOT filed: shared ledger is read-only)`. Reviews with unfiled confirmed findings and an empty
23
+ Deferred table are invalid.
24
+
25
+ ## Purpose
26
+
27
+ Reads the task file from `sdd/tasks/completed/`, loads all referenced source files and the parent spec, applies code review criteria (Correctness, Code Quality, Performance, Security, Documentation, Testing), and produces a structured review report.
28
+
29
+ ## Guardrails
30
+
31
+ - Reads strictly completed tasks from `sdd/tasks/completed/`.
32
+ - Verify the chain of thought and code anchors: check actual files, classes, methods, and line ranges.
33
+ - Treat reviewer second-opinions as advisory: confirm, reject, or escalate each finding.
34
+ - Never report an unverifiable claim as a finding.
35
+
36
+ ## Workflow
37
+
38
+ ## Durable review boundary (FEAT-584)
39
+ Before feature review, settle owned attempts and supervised validations and close execution.
40
+ Unknown activity is a blocker, never evidence of an idle worktree. Persist the checkpoint,
41
+ record actual supported compaction outcome once per checkpoint/context, revalidate and start
42
+ a fresh reviewer. Unsupported contexts continue from checkpoint with an explicit reason.
43
+ Keep review criteria, adversarial checks, full lint, integration validation and ledger gates.
44
+ Changes after checkpoint require new hashes/evidence and invalidate old review coverage.
45
+ For sdd-done, preserve existing verification stamping, approval and push/merge policy;
46
+ do not run task closure again on base_branch and do not clean worktrees with unknown activity.
47
+
48
+ 1. Resolve task:
49
+ - Accept full path, `TASK-NNN`, or slug.
50
+ - Match against `sdd/tasks/completed/TASK-*.md`.
51
+ 2. Load context:
52
+ - Read the task markdown file.
53
+ - Read the referenced spec in `sdd/specs/`.
54
+ - Read every file in the task's "Files to Create/Modify" section.
55
+ - Read the Acceptance Criteria and Completion Note.
56
+ 3. Review criteria:
57
+ - **Correctness & Logic**: Acceptance criteria satisfaction, edge cases, error paths.
58
+ - **Code Quality**: DRY, SOLID, abstraction seams, framework patterns.
59
+ - **Performance**: N+1 queries, async blocking calls, algorithmic efficiency.
60
+ - **Security**: Input validation, SQL/injection risks, credentials, auth.
61
+ - **Documentation**: Docstrings, type annotations, clarity.
62
+ - **Testing**: Test coverage against criteria, assertions, failure modes.
63
+ 4. Adversarial cross-check:
64
+ - Run external reviewer (`codex exec review`) or spawn a dedicated read-only subagent.
65
+ - Supply only neutral brief: requirements, diff/commit, question.
66
+ - Synthesize agreements and disagreements.
67
+ 5. Generate report:
68
+ - Summary, Critical, Major, Minor/Suggestions.
69
+ - **Deferred Findings table**: Every CONFIRMED 🔴/🟡 finding not fixed in-review MUST be attempted with `wikitoolkit ledger open` and listed in this table. If the shared ledger is read-only, retain the full finding with `(NOT filed: shared ledger is read-only)`.
70
+ - Acceptance Criteria check table.
71
+ - Adversarial cross-check disposition table.
72
+ - Positive highlights.
73
+ 6. Optional save:
74
+ - Save to `sdd/reviews/TASK-<NNN>-review.md` if requested.
75
+
76
+ ## References
77
+
78
+ - `sdd/tasks/completed/`
79
+ - `sdd/tasks/index/<feature>.json`
80
+ - `sdd/WORKFLOW.md`
@@ -0,0 +1,196 @@
1
+ ---
2
+ name: sdd-done
3
+ description: Verify a completed SDD feature worktree, check for merge blockers, snapshot ledger issues, stamp task verification, push or open the PR, optionally sync hotfixes down, and clean the worktree.
4
+ ---
5
+
6
+ # SDD Done
7
+
8
+ ## Full procedure and Codex adaptations
9
+
10
+ Before executing, read the [full sdd-done procedure](../../../.claude/commands/sdd-done.md)
11
+ and the [Codex adaptation contract](../../../docs/sdd/CODEX.md#codex-adaptation-contract).
12
+ Follow the full procedure for details omitted from this summary. The adaptation
13
+ contract and the Codex-specific instructions below override Claude runtime syntax
14
+ and legacy shell examples; retain all workflow gates and evidence requirements.
15
+
16
+ Use this skill when the user asks to run `sdd-done`, close a feature, push an
17
+ SDD worktree, open the feature PR, or clean up a completed SDD worktree.
18
+
19
+ Codex invocation: `$sdd-done FEAT-NNN [--dry-run] [--merge] [--force] [--resolve-jira] [--sync-down]`.
20
+
21
+ ## Purpose
22
+
23
+ Verify evidence in the feature worktree, check for merge blockers scoped to
24
+ the current feature, snapshot ledger issues on base branch, stamp verification
25
+ on the feature branch, push it, open or describe the PR, and remove the worktree
26
+ when safe.
27
+
28
+ ## Guardrails
29
+
30
+ - Run from the main repo on the spec's `base_branch`, or from the feature
31
+ worktree for the PR flow. `--merge` and `--sync-down` require the main repo.
32
+ - Do not modify the spec.
33
+ - Do not mark tasks done unless there is evidence in the worktree.
34
+ - Always show a verification report before writing closeout state.
35
+ - Hotfixes never merge directly to `main`.
36
+ - Hotfixes never push directly to `main`.
37
+ - For hotfixes, print a manual `gh pr create --base main` command instead of
38
+ creating or merging the PR automatically.
39
+ - Use `--sync-down` only after the hotfix PR has merged to `main`.
40
+ - Use `--sync-dev` only as a deprecated alias for `--sync-down`.
41
+ - Merge gate checks apply only to `--merge` flag, not PR flow.
42
+ - Ledger snapshots use throwaway worktrees and never modify active worktrees.
43
+ - Hotfixes skip ledger snapshots.
44
+ - Bounded retry for rejected pushes (max 3 attempts).
45
+
46
+ ## Workflow
47
+
48
+ ## Durable review boundary (FEAT-584)
49
+ Before feature review, settle owned attempts and supervised validations and close execution.
50
+ Unknown activity is a blocker, never evidence of an idle worktree. Persist the checkpoint,
51
+ record actual supported compaction outcome once per checkpoint/context, revalidate and start
52
+ a fresh reviewer. Unsupported contexts continue from checkpoint with an explicit reason.
53
+ Keep review criteria, adversarial checks, full lint, integration validation and ledger gates.
54
+ Changes after checkpoint require new hashes/evidence and invalidate old review coverage.
55
+ For sdd-done, preserve existing verification stamping, approval and push/merge policy;
56
+ do not run task closure again on base_branch and do not clean worktrees with unknown activity.
57
+
58
+ 1. Resolve feature:
59
+ - scan `sdd/tasks/index/*.json`, excluding `_orphans.json`
60
+ - match `feature_id`, numeric suffix, exact feature slug, or slug substring
61
+ - read `feature`, `feature_id`, `spec`, `type`, and `base_branch`
62
+ 2. Verify branch and location:
63
+ - resolve `MAIN_ROOT` from the absolute `git-common-dir` parent and
64
+ `WORKTREES_DIR` as `<MAIN_ROOT>/.claude/worktrees`
65
+ - compare absolute `git-dir` and `git-common-dir` to detect `IN_WORKTREE`
66
+ - in the main checkout, current branch must equal `base_branch`
67
+ - in a linked worktree, verify it is the selected feature's worktree;
68
+ refuse `--merge` and `--sync-down` (including `--sync-dev`)
69
+ - address primary-checkout paths through `MAIN_ROOT` / `WORKTREES_DIR`;
70
+ never change to the primary checkout to bypass worktree restrictions
71
+ 3. Locate worktree:
72
+ - prefer `git worktree list` match for `feat-<FEAT-ID>` or hotfix branch
73
+ - if missing, check remote/local branches and report next steps
74
+ 4. Gather evidence per task:
75
+ - commits matching task ID or slug in the worktree
76
+ - files listed in each task's "Files to Create / Modify" table exist in the
77
+ worktree
78
+ - do not rerun the whole test suite here; tests should have run during task
79
+ execution
80
+ 4.5. Full lint pass, once per feature:
81
+ - resolve changed Python files with `git diff --name-only --diff-filter=ACMR
82
+ origin/<base_branch>...HEAD -- '*.py'` from the feature worktree
83
+ - `--dry-run`: run only `ruff check` and report; never fix or commit
84
+ - otherwise run Ruff fixes and the configured Black formatter on those
85
+ files, inspect the diff, commit only those paths, then run full `ruff check`
86
+ - keep fixes behavior-neutral; when behavior changes, run the feature-tier
87
+ selector from `scripts.sdd.select_tests` with this feature's task files
88
+ before committing; refresh checkpoint/review evidence after any change
89
+ - report unfixable findings under Lint residual; residual `E9`, `F63`, `F7`
90
+ or `F82` errors block normal closeout and enter the issues/confirmation path
91
+ 5. Classify:
92
+ - `VERIFIED`: commit found and files exist
93
+ - `PARTIAL`: commit found but files are missing
94
+ - `NO EVIDENCE`: neither commits nor files support completion
95
+ 6. Present verification report:
96
+ - worktree
97
+ - branch
98
+ - commit count
99
+ - task count by status
100
+ - task-by-task evidence
101
+ - lint residuals and any missing review evidence
102
+ 7. Respect flags:
103
+ - `--dry-run`: stop after the report
104
+ - `--force`: allow forced closeout with partial/no evidence noted
105
+ - otherwise ask before closing if any task is not verified
106
+ 8. Stamp verification in the worktree branch (closing any task the lane left open):
107
+ - require staging to contain only this feature's owned changes before the
108
+ close step stages its moves; never reset unrelated staging
109
+ - verified is not closed: for each task being closed whose file is still in
110
+ `sdd/tasks/active/` or whose index status is not `done`/`done-with-issues`
111
+ (lanes such as `/sdd-fix` commit code without closing), run
112
+ `scripts/sdd/close_task.sh <TASK-ID> <feature-slug> <verification>` inside
113
+ the worktree — never on `base_branch` (FEAT-414), then set its status to
114
+ `done-with-issues` when verification is `partial`/`forced`; leave tasks
115
+ the lane already closed untouched, and skip (with a warning) any id not in
116
+ the index
117
+ - set each task `verification` to `verified`, `partial`, or `forced` in
118
+ `sdd/tasks/index/<feature>.json` inside the worktree
119
+ - set feature `completed_at` only when all tasks are done
120
+ - run `scripts/sdd/heal_orphans.sh <feature-slug>` inside the worktree
121
+ (PR flow and `--merge` alike)
122
+ - stage only the index and this feature's task files, verify cached names
123
+ - commit `sdd: close tasks for FEAT-NNN - <feature-slug>`
124
+ 9. Push feature branch:
125
+ - `git -C <worktree> push origin <branch>`
126
+ 10. Check merge blockers (feature flows only):
127
+ - If `--merge` flag is set and not a hotfix, run `wikitoolkit ledger blockers <FEAT-ID>`
128
+ - The command prints plain-text blocker lines (never JSON) and exits non-zero
129
+ exactly when blockers exist — gate on the **exit code**, not on parsing its output
130
+ - If blockers found and not `--force`, refuse merge and list the blockers
131
+ (`wikitoolkit ledger acknowledge <ISSUE-ID> --reason "..." --actor human:<name>`
132
+ is how a human resolves one)
133
+ - If `--force`, warn but proceed with merge
134
+
135
+ 11. Snapshot ledger issues (feature flows only):
136
+ - For features (not hotfixes), `git fetch origin <BASE_BRANCH>` then create a
137
+ throwaway detached worktree at `origin/<BASE_BRANCH>` (`git worktree add --detach`)
138
+ - Run `wikitoolkit ledger export` there; only when its output contains `(changed)`:
139
+ `git add sdd/ledger/issues.jsonl`, commit `sdd: ledger snapshot for <FEAT-ID>`,
140
+ and `git push origin HEAD:<BASE_BRANCH>`
141
+ - On a rejected push, fetch and create a fresh throwaway worktree at the
142
+ updated remote base, re-export, commit and retry — up to 3 attempts,
143
+ then warn and continue without failing `$sdd-done`
144
+ - Remove only clean, owned, idle throwaway worktrees without force; report
145
+ any retained worktree requiring recovery instead of deleting its changes
146
+ - Skip the snapshot entirely for hotfixes
147
+
148
+ 12. Integrate:
149
+ - If `base_branch == main`, refuse automatic merge or PR creation. Print
150
+ the manual hotfix PR command:
151
+ `gh pr create --base main --head <branch> --title "<title>" --body "<verification summary>"`.
152
+ - If feature and no `--merge`, run `gh pr create --base <base_branch> --head <branch>`.
153
+ - If `gh` is missing or not authenticated, print the manual command.
154
+ - If feature and `--merge`, merge into `base_branch`, run
155
+ `scripts/sdd/heal_orphans.sh <feature-slug>`, commit any staged orphan
156
+ cleanup, and push `base_branch`.
157
+ 13. Hotfix sync-down:
158
+ - only with `--sync-down` or deprecated `--sync-dev`
159
+ - verify feature branch is ancestor of `origin/main`
160
+ - merge into `staging`, abort cleanly on conflict
161
+ - merge into `dev`, abort cleanly on conflict
162
+ - leave user on `main`
163
+ 14. Resolve Jira if requested:
164
+ - find Jira key in spec or proposal metadata
165
+ - prefer Jira MCP tools if available
166
+ - fallback to configured Jira environment variables
167
+ - transition to Done, Resolved, Ready for UAT, Complete, or Close
168
+ - report missing credentials or missing transitions without failing closeout
169
+ 15. Cleanup:
170
+ - remove the worktree only after successful push/PR or merge path
171
+ - if running inside it, leave the feature worktree for an allowed directory
172
+ before removing it; if host restrictions prevent this, report cleanup pending
173
+ - if uncommitted changes exist in the worktree, ask before force removal
174
+ - prune stale metadata if the worktree was already removed
175
+ - delete local feature branch only when safe and merged/pushed
176
+
177
+ ## Output
178
+
179
+ Report:
180
+
181
+ ```text
182
+ FEAT-NNN - <title>: <closed>/<total> tasks closed
183
+ Branch pushed: <branch>
184
+ PR opened: <url> or manual command printed
185
+ Worktree removed: .claude/worktrees/<name>
186
+ Jira: <key> -> Done, when requested and successful
187
+ ```
188
+
189
+ ## References
190
+
191
+ - `sdd/tasks/index/<feature>.json`
192
+ - `sdd/tasks/active/`
193
+ - `sdd/tasks/completed/`
194
+ - `scripts/sdd/sdd_meta.py`
195
+ - `scripts/sdd/heal_orphans.sh`
196
+ - `sdd/WORKFLOW.md`
@@ -0,0 +1,58 @@
1
+ ---
2
+ name: sdd-explain
3
+ description: Explain how a subsystem, component, or symbol works in the current project, grounded in the real codebase with architecture maps or deep traces.
4
+ ---
5
+
6
+ # SDD Explain
7
+
8
+ ## Full procedure and Codex adaptations
9
+
10
+ Before executing, read the [full sdd-explain procedure](../../../.claude/commands/sdd-explain.md)
11
+ and the [Codex adaptation contract](../../../docs/sdd/CODEX.md#codex-adaptation-contract).
12
+ Follow the full procedure for details omitted from this summary. The adaptation
13
+ contract and the Codex-specific instructions below override Claude runtime syntax
14
+ and legacy shell examples; retain all workflow gates and evidence requirements.
15
+
16
+ Use this skill when the user asks to explain how a subsystem, component, or symbol works in the project, onboarding architecture explanations, or deep code traces.
17
+
18
+ Invocation: `sdd-explain [--deep] <subsystem | component | symbol | question>`.
19
+
20
+ ## Purpose
21
+
22
+ Provide code-grounded explanations of how the repository actually works right now. Produces Subsystem Maps (architecture/onboarding) by default, or Implementation Traces with `--deep`.
23
+
24
+ ## Guardrails
25
+
26
+ - **Read before explaining**: Never describe an import path, class, method, registry, or decorator without locating and reading it first.
27
+ - **Cite with grep anchors**: Reference symbols by name and file path, not brittle line numbers.
28
+ - **State evidence**: Explicitly state which files and symbols were read.
29
+ - **No unsolicited fixes/code**: This skill explains; it does not refactor or modify code.
30
+
31
+ ## Workflow
32
+
33
+ 1. Parse arguments:
34
+ - Check for `--deep` (or `-d`) flag for Implementation Trace mode.
35
+ - Extract target subsystem, component, or symbol.
36
+ 2. Locate code:
37
+ - Use `find_by_name`, `grep_search`, or `rg` to find real symbols and files.
38
+ - Read the source files.
39
+ 3. Subsystem Map Mode (default):
40
+ - Locate: package entry points and anchor symbols.
41
+ - What it is: single responsibility and system role.
42
+ - The cast: concrete ABCs, registries, mixins, managers.
43
+ - Data & control flow: end-to-end request lifecycle and boundaries.
44
+ - Conventions & invariants: architectural constraints and why they exist.
45
+ - Where to look next: key files and adjacent subsystems.
46
+ 4. Implementation Trace Mode (`--deep`):
47
+ - Target resolution: exact symbols and files resolved.
48
+ - Execution trace: call-by-call walk through async boundaries, decorators, dispatches.
49
+ - Contracts & types: Pydantic models, protocol signatures, validation rules.
50
+ - Edge cases & failure modes: error handling, fallbacks, timeouts.
51
+ - Coupling map: dependencies and callers.
52
+ - Gotchas: non-obvious behaviors and historical pitfalls.
53
+
54
+ ## References
55
+
56
+ - `AGENTS.md`
57
+ - `.agent/CONTEXT.md`
58
+ - `sdd/WORKFLOW.md`
@@ -0,0 +1,67 @@
1
+ ---
2
+ name: sdd-fix
3
+ description: Drain the SDD work ledger — plan-fix, claim, route to the Fast or SDD lane, close by evidence, release the rest.
4
+ ---
5
+
6
+ # SDD Fix
7
+
8
+ Drain the SDD work ledger: plan a severity-ordered, file-grouped batch with
9
+ `wikitoolkit ledger plan-fix --json`, claim the selected issues, route each group to the
10
+ Fast lane (branch → PR) or the SDD lane (spec → tasks → worktree), close by evidence and
11
+ release the rest. The twins never re-implement ordering, grouping or lane rules — the plan is
12
+ the contract (`planner_version` is checked before use).
13
+
14
+ **Read-only ledger**: the ledger resolves to the main checkout. If a sandbox makes it read-only,
15
+ report `shared ledger is read-only`, do not request broader filesystem access, do not create a
16
+ worktree-local ledger, and exit non-zero WITHOUT claiming anything.
17
+
18
+ ## Usage
19
+ $sdd-fix # interactive picker, severity-ordered
20
+ $sdd-fix <issue-id> # non-interactive: that issue's whole group
21
+ $sdd-fix --top N # non-interactive: first N groups
22
+ $sdd-fix ... --kind K --severity S --lane fast|sdd # --lane fast is REFUSED (exit 1) for critical or vulnerability groups
23
+
24
+ ## Steps
25
+ 1. **Plan** — `wikitoolkit ledger plan-fix --json` (pass `--kind/--severity/--lane` through). Parse stdout as a FixPlan.
26
+ Require a successful exit and `planner_version == "1"` before selecting or claiming anything.
27
+ Reject missing/unsupported versions or malformed output; never re-implement ordering, grouping or lane rules.
28
+ `--lane fast` is refused for critical or vulnerability groups; stop on that planner error.
29
+ The plan presents severity-ordered groups with metadata: group_id, max_severity, lane assignment with reason,
30
+ suggested_slug, and the list of issues/files per group. In interactive mode, render a table showing each group's
31
+ key attributes for selection.
32
+ 2. **Select** — picker, or deterministic resolution from the arguments (issue-id → its whole group; --top N → first N groups).
33
+ Require a positive N. An empty plan or an issue absent from it is a no-op with an explanation, never a guessed selection.
34
+ 3. **Claim** — one `wikitoolkit ledger claim <issue-id> --actor agent:sdd-fix` per issue in the group, immediately before
35
+ executing. The plan is a snapshot; the claim is authoritative: a non-zero exit DROPS that issue and continues. Never close an
36
+ issue merely because an earlier plan listed it. Skip groups with no successful claims; preserve the planned lane for remaining issues.
37
+ 4. **Prime** — `wikitoolkit ledger context <group.files…> --max-tokens 3000` (full repo-relative paths from the plan, never basenames).
38
+ 5. **Route** by `group.lane`:
39
+ - Before changing branches, require a clean checkout; never carry unrelated changes into a fix.
40
+ If execution cannot proceed, release successful claims in step 7.
41
+ - **Fast lane** (`lane == "fast"`): in the MAIN checkout (no worktree), `git fetch origin dev && git switch -c fix/<issue-short-id>-<suggested_slug> origin/dev`,
42
+ edit, run the affected package's tests, commit, `git push -u origin <branch>`, then `gh pr create --base dev --title … --body …`.
43
+ ALWAYS a PR — there is no direct-push path.
44
+ - **SDD lane** (`lane == "sdd"`): if any `group.parents[].open` is true, reuse that parent spec (`$sdd-task <spec> --from-issue …` per issue);
45
+ otherwise `python -m scripts.sdd.reserve_ids --kind feature --count 1 --base-branch dev --label <suggested_slug>`, author
46
+ `sdd/specs/<suggested_slug>.spec.md` from the group, `$sdd-task`, then
47
+ `python -m scripts.sdd.ensure_worktree --slug <suggested_slug> --feature-id FEAT-<NNN>`. `$sdd-done <FEAT-ID>` closes it out unchanged.
48
+ For a new spec, the slug comes from `suggested_slug`; never re-derive it. For a reused parent,
49
+ use that parent index's existing slug, feature_id, spec and base_branch when provisioning the worktree.
50
+ Task creation alone is not resolution: implement and validate the task in that worktree before step 6.
51
+ 6. **Close** — two keys, fail-closed: an issue closes only if the implementing agent asserts its id as resolved AND at least one of
52
+ its `files` appears in `git diff --name-only <base>...HEAD`. Then `wikitoolkit ledger close <issue-id> --reason "<what changed>"
53
+ --actor agent:sdd-fix --resolved-by commit:<sha>` (fast, the implementing commit on the pushed PR branch)
54
+ or `--resolved-by task:TASK-<NNN>` (SDD, a completed and validated task).
55
+ Capture `<base>` before implementation and check the diff from the implementing checkout.
56
+ Do not infer a merge or fabricate a merge SHA merely because a PR was opened.
57
+ 7. **Release** — every claimed issue that failed either key: `wikitoolkit ledger unclaim <issue-id> --reason "<why>" --actor agent:sdd-fix`.
58
+ Run release on every exit path, including test/push/PR failures or interrupted execution.
59
+ If unclaim itself fails, report the issue ID and reason for recovery; do not claim success.
60
+ Never leave an issue claimed silently; acknowledgement stays human-only and out of scope here.
61
+
62
+ ## Output
63
+ Per group processed:
64
+ - Lane used (Fast/SDD)
65
+ - Branch/PR URL (Fast) or FEAT-ID + worktree path (SDD)
66
+ - Issues closed with their resolved_by evidence
67
+ - Issues released with reason
@@ -0,0 +1,64 @@
1
+ ---
2
+ name: sdd-fromjira
3
+ description: Bootstrap an SDD Brainstorm from a Jira ticket, conducting Q&A and codebase research.
4
+ ---
5
+
6
+ # SDD From Jira
7
+
8
+ ## Full procedure and Codex adaptations
9
+
10
+ Before executing, read the [full sdd-fromjira procedure](../../../.claude/commands/sdd-fromjira.md)
11
+ and the [Codex adaptation contract](../../../docs/sdd/CODEX.md#codex-adaptation-contract).
12
+ Follow the full procedure for details omitted from this summary. The adaptation
13
+ contract and the Codex-specific instructions below override Claude runtime syntax
14
+ and legacy shell examples; retain all workflow gates and evidence requirements.
15
+
16
+ Use this skill when the user asks to bootstrap an SDD brainstorm from a Jira ticket, run `sdd-fromjira`, or convert a Jira issue into a feature proposal.
17
+
18
+ Invocation: `sdd-fromjira <JIRA_KEY> [--complexity=fix|simple|standard|complex] [--skip-qa]`.
19
+
20
+ ## Purpose
21
+
22
+ Fetch requirements from a Jira ticket, structure them, conduct targeted Q&A, research the codebase for reusable components, and produce a worker-ready brainstorm document at `sdd/proposals/<issue-key>-<slug>.brainstorm.md`.
23
+
24
+ ## Guardrails
25
+
26
+ - Read-only on Jira: do not modify the Jira issue in this skill.
27
+ - Always use the official template at `sdd/templates/brainstorm.md`.
28
+ - Always commit the brainstorm file to git upon generation.
29
+ - Never write implementation code in the brainstorm document.
30
+ - Set flow type in frontmatter: `type: feature, base_branch: dev` (or `hotfix`/`main` for bug tickets).
31
+ - Fill frontmatter `projects` (parts of the codebase, vocabulary `KNOWN_PROJECTS` in
32
+ `scripts/sdd/sdd_meta.py`; unknown values warn) and `tags` (2–6 kebab-case keywords) — FEAT-576.
33
+
34
+ ## Workflow
35
+
36
+ 1. Fetch Jira ticket:
37
+ - Use Jira MCP tool (`jira_get_issue`) if available, or curl fallback via
38
+ `JIRA_INSTANCE`, `JIRA_USERNAME`, and `JIRA_API_TOKEN` without logging secrets.
39
+ - Extract summary, description, acceptance criteria, components, labels, subtasks.
40
+ 2. Parse content:
41
+ - Convert description/ADF to plain text.
42
+ - Extract acceptance criteria and constraints.
43
+ 3. Classify complexity:
44
+ - `fix` (1 round Q&A), `simple` (2 rounds), `standard` (2-3 rounds), `complex` (3+ rounds).
45
+ - `--complexity` overrides classification; `--skip-qa` skips the interview
46
+ when the supplied Jira description is exhaustive.
47
+ 4. Present ticket context:
48
+ - Show summary, components, AC, and complexity assessment to user.
49
+ 5. Interactive Q&A:
50
+ - Target genuine gaps left open by Jira (not generic questions).
51
+ 6. Codebase research:
52
+ - Run `wikitoolkit query` before source scans.
53
+ - Read source files to build verified Code Context (signatures, imports, and what does NOT exist).
54
+ 7. Generate 3+ options:
55
+ - Map each option against Jira AC.
56
+ - Recommend one option with explicit tradeoff rationale.
57
+ 8. Save and commit:
58
+ - Save to `sdd/proposals/<issue-key>-<slug>.brainstorm.md`.
59
+ - Stage only the brainstorm file and commit: `sdd: add brainstorm from Jira <issue-key> — <slug>`.
60
+
61
+ ## References
62
+
63
+ - `sdd/templates/brainstorm.md`
64
+ - `sdd/WORKFLOW.md`
@@ -0,0 +1,68 @@
1
+ ---
2
+ name: sdd-insight
3
+ description: Analyze Claude Code transcripts and repo-level SDD Process Discipline from the sdd/ artifact tree using the local Insight engine.
4
+ ---
5
+
6
+ # SDD Insight
7
+
8
+ ## Full procedure and Codex adaptations
9
+
10
+ Before executing, read the [full sdd-insight procedure](../../../.claude/commands/sdd-insight.md)
11
+ and the [Codex adaptation contract](../../../docs/sdd/CODEX.md#codex-adaptation-contract).
12
+ Follow the full procedure for details omitted from this summary. The adaptation
13
+ contract and the Codex-specific instructions below override Claude runtime syntax
14
+ and legacy shell examples; retain all workflow gates and evidence requirements.
15
+
16
+ Use this skill when the user asks to analyze AI fluency, review prompt collaboration patterns, or evaluate repo-level SDD Process Discipline adherence.
17
+
18
+ Invocation: `$sdd-insight [TRANSCRIPT_PATH] [--no-open] [--sdd-dir PATH | --no-sdd]`.
19
+
20
+ ## Purpose
21
+
22
+ Execute `scripts/sdd/insight.py` to produce a two-layer analytical report:
23
+ 1. Personal AI-fluency skill map (score, archetype, competencies, growth levers) from transcripts.
24
+ 2. Repo-level SDD Process Discipline panel (pipeline progression, decomposition quality, AC coverage, cycle closure, review rigor) computed deterministically from `sdd/`.
25
+
26
+ ## Guardrails
27
+
28
+ - Transcripts and `sdd/` files are read strictly read-only.
29
+ - Always run within the virtual environment (`source .venv/bin/activate`).
30
+ - The engine reads Claude Code JSONL transcripts (default `~/.claude/projects`).
31
+ Native Codex session logs are not supported by this workflow; never present
32
+ Claude-derived personal scores as measurements of Codex sessions.
33
+ - Use a fresh report directory under `artifacts/` so old analysis cannot leak
34
+ into a new run. Do not delete previous reports.
35
+
36
+ ## Workflow
37
+
38
+ 1. Parse the optional transcript path and supported flags into a shell argument
39
+ array `insight_args`. Preserve paths as single quoted arguments; never eval
40
+ user text. With no arguments, use `insight_args=()`.
41
+ 2. Run deterministic measurement from the repository root:
42
+ ```bash
43
+ source .venv/bin/activate
44
+ mkdir -p artifacts
45
+ insight_run_dir=$(mktemp -d artifacts/sdd-insight.XXXXXX)
46
+ python3 scripts/sdd/insight.py --evidence "$insight_run_dir/evidence.json" --sdd-dir sdd --no-open --quiet -o "$insight_run_dir/report.html" "${insight_args[@]}"
47
+ ```
48
+ Check the exit status and evidence/report files. If no compatible transcripts
49
+ are found, report that limitation and stop; do not invent scores or promise
50
+ a standalone SDD report that this engine did not produce.
51
+ 3. If the `sdd-insight` analysis workflow capability is available, give it the
52
+ absolute evidence path and `reference/sdd-insight/ai-fluency-framework.md`.
53
+ Save its JSON to this run's `analysis.json`, then render with matching evidence:
54
+ ```bash
55
+ python3 scripts/sdd/insight.py --analysis "$insight_run_dir/analysis.json" --analysis-evidence "$insight_run_dir/evidence.json" --sdd-dir sdd -o "$insight_run_dir/report.html" "${insight_args[@]}"
56
+ ```
57
+ Otherwise use the complete deterministic report. A fingerprint mismatch also
58
+ falls back to deterministic output; disclose which report was produced.
59
+ 4. Link the final HTML report and present its findings, identifying the transcript source:
60
+ - Personal score and archetype.
61
+ - Top growth lever.
62
+ - Repo SDD Process Discipline score and weakest dimension.
63
+
64
+ ## References
65
+
66
+ - `scripts/sdd/insight.py`
67
+ - `reference/sdd-insight/ai-fluency-framework.md`
68
+ - `sdd/WORKFLOW.md`