fc-data 0.2.1__tar.gz → 0.2.2__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 (193) hide show
  1. {fc_data-0.2.1 → fc_data-0.2.2}/.gitignore +3 -0
  2. {fc_data-0.2.1 → fc_data-0.2.2}/Makefile +30 -0
  3. {fc_data-0.2.1 → fc_data-0.2.2}/PKG-INFO +4 -4
  4. {fc_data-0.2.1 → fc_data-0.2.2}/README.md +3 -3
  5. fc_data-0.2.2/docs/guide/monitoring.md +90 -0
  6. {fc_data-0.2.1 → fc_data-0.2.2}/docs/index.md +4 -4
  7. fc_data-0.2.2/grafana/docker-compose.yml +37 -0
  8. fc_data-0.2.2/grafana/provisioning/dashboards/dashboard-provider.yml +13 -0
  9. fc_data-0.2.2/grafana/provisioning/dashboards-json/datasmith-overview.json +1445 -0
  10. fc_data-0.2.2/grafana/provisioning/datasources/supabase-postgres.yml +21 -0
  11. {fc_data-0.2.1 → fc_data-0.2.2}/mkdocs.yml +2 -1
  12. {fc_data-0.2.1 → fc_data-0.2.2}/pyproject.toml +1 -1
  13. {fc_data-0.2.1 → fc_data-0.2.2}/src/datasmith/agents/sandbox.py +33 -5
  14. {fc_data-0.2.1 → fc_data-0.2.2}/src/datasmith/agents/synthesizer.py +7 -2
  15. {fc_data-0.2.1 → fc_data-0.2.2}/src/datasmith/agents/templates/AGENTS.md.j2 +22 -7
  16. {fc_data-0.2.1 → fc_data-0.2.2}/src/datasmith/agents/templates/sandbox_verify.py +52 -3
  17. {fc_data-0.2.1 → fc_data-0.2.2}/src/datasmith/filters.py +30 -7
  18. {fc_data-0.2.1 → fc_data-0.2.2}/src/datasmith/update/pipeline.py +178 -48
  19. fc_data-0.2.2/supabase/migrations/00009_grafana_readonly.sql +15 -0
  20. {fc_data-0.2.1 → fc_data-0.2.2}/tests/agents/test_sandbox.py +370 -3
  21. {fc_data-0.2.1 → fc_data-0.2.2}/tests/agents/test_synthesizer.py +69 -0
  22. {fc_data-0.2.1 → fc_data-0.2.2}/tests/test_filters.py +9 -7
  23. {fc_data-0.2.1 → fc_data-0.2.2}/tests/update/test_pipeline.py +14 -6
  24. {fc_data-0.2.1 → fc_data-0.2.2}/uv.lock +4049 -4043
  25. {fc_data-0.2.1 → fc_data-0.2.2}/.github/actions/setup-python-env/action.yml +0 -0
  26. {fc_data-0.2.1 → fc_data-0.2.2}/.github/workflows/docs.yml +0 -0
  27. {fc_data-0.2.1 → fc_data-0.2.2}/.github/workflows/main.yml +0 -0
  28. {fc_data-0.2.1 → fc_data-0.2.2}/.github/workflows/publish.yml +0 -0
  29. {fc_data-0.2.1 → fc_data-0.2.2}/.github/workflows/validate-codecov-config.yml +0 -0
  30. {fc_data-0.2.1 → fc_data-0.2.2}/.pre-commit-config.yaml +0 -0
  31. {fc_data-0.2.1 → fc_data-0.2.2}/CLAUDE.md +0 -0
  32. {fc_data-0.2.1 → fc_data-0.2.2}/DATASET_CARD.md +0 -0
  33. {fc_data-0.2.1 → fc_data-0.2.2}/LICENSE +0 -0
  34. {fc_data-0.2.1 → fc_data-0.2.2}/codecov.yaml +0 -0
  35. {fc_data-0.2.1 → fc_data-0.2.2}/docs/assets/favicon.svg +0 -0
  36. {fc_data-0.2.1 → fc_data-0.2.2}/docs/assets/logo.svg +0 -0
  37. {fc_data-0.2.1 → fc_data-0.2.2}/docs/design/Datasmith - Overview.md +0 -0
  38. {fc_data-0.2.1 → fc_data-0.2.2}/docs/design/archived/ARCHIVED Datasmith - Docker Manager.md +0 -0
  39. {fc_data-0.2.1 → fc_data-0.2.2}/docs/design/components/datasmith.agents.md +0 -0
  40. {fc_data-0.2.1 → fc_data-0.2.2}/docs/design/components/datasmith.agents.synthesizer.md +0 -0
  41. {fc_data-0.2.1 → fc_data-0.2.2}/docs/design/components/datasmith.docker.md +0 -0
  42. {fc_data-0.2.1 → fc_data-0.2.2}/docs/design/components/datasmith.github.md +0 -0
  43. {fc_data-0.2.1 → fc_data-0.2.2}/docs/design/components/datasmith.github.render.md +0 -0
  44. {fc_data-0.2.1 → fc_data-0.2.2}/docs/design/components/datasmith.publish.md +0 -0
  45. {fc_data-0.2.1 → fc_data-0.2.2}/docs/design/components/datasmith.resolution.md +0 -0
  46. {fc_data-0.2.1 → fc_data-0.2.2}/docs/design/components/datasmith.runners.md +0 -0
  47. {fc_data-0.2.1 → fc_data-0.2.2}/docs/design/components/datasmith.utils.md +0 -0
  48. {fc_data-0.2.1 → fc_data-0.2.2}/docs/getting-started/installation.md +0 -0
  49. {fc_data-0.2.1 → fc_data-0.2.2}/docs/getting-started/quickstart.md +0 -0
  50. {fc_data-0.2.1 → fc_data-0.2.2}/docs/guide/configuration.md +0 -0
  51. {fc_data-0.2.1 → fc_data-0.2.2}/docs/guide/docker-images.md +0 -0
  52. {fc_data-0.2.1 → fc_data-0.2.2}/docs/guide/pipeline.md +0 -0
  53. {fc_data-0.2.1 → fc_data-0.2.2}/docs/guide/publishing.md +0 -0
  54. {fc_data-0.2.1 → fc_data-0.2.2}/docs/guide/synthesis.md +0 -0
  55. {fc_data-0.2.1 → fc_data-0.2.2}/docs/guide/verification.md +0 -0
  56. {fc_data-0.2.1 → fc_data-0.2.2}/docs/stage6-failure-analysis.md +0 -0
  57. {fc_data-0.2.1 → fc_data-0.2.2}/package.json +0 -0
  58. {fc_data-0.2.1 → fc_data-0.2.2}/scripts/hydrate_from_cache.py +0 -0
  59. {fc_data-0.2.1 → fc_data-0.2.2}/scripts/migrate_sqlite_to_supabase.py +0 -0
  60. {fc_data-0.2.1 → fc_data-0.2.2}/scripts/recompute_symbolic_compliance.py +0 -0
  61. {fc_data-0.2.1 → fc_data-0.2.2}/scripts/recover_from_cache.py +0 -0
  62. {fc_data-0.2.1 → fc_data-0.2.2}/src/datasmith/__init__.py +0 -0
  63. {fc_data-0.2.1 → fc_data-0.2.2}/src/datasmith/__init__.pyi +0 -0
  64. {fc_data-0.2.1 → fc_data-0.2.2}/src/datasmith/agents/__init__.py +0 -0
  65. {fc_data-0.2.1 → fc_data-0.2.2}/src/datasmith/agents/classifiers.py +0 -0
  66. {fc_data-0.2.1 → fc_data-0.2.2}/src/datasmith/agents/codex.py +0 -0
  67. {fc_data-0.2.1 → fc_data-0.2.2}/src/datasmith/agents/config.py +0 -0
  68. {fc_data-0.2.1 → fc_data-0.2.2}/src/datasmith/agents/extractors.py +0 -0
  69. {fc_data-0.2.1 → fc_data-0.2.2}/src/datasmith/agents/installed/README.md +0 -0
  70. {fc_data-0.2.1 → fc_data-0.2.2}/src/datasmith/agents/installed/__init__.py +0 -0
  71. {fc_data-0.2.1 → fc_data-0.2.2}/src/datasmith/agents/installed/base.py +0 -0
  72. {fc_data-0.2.1 → fc_data-0.2.2}/src/datasmith/agents/installed/claude.py +0 -0
  73. {fc_data-0.2.1 → fc_data-0.2.2}/src/datasmith/agents/installed/codex.py +0 -0
  74. {fc_data-0.2.1 → fc_data-0.2.2}/src/datasmith/agents/installed/gemini.py +0 -0
  75. {fc_data-0.2.1 → fc_data-0.2.2}/src/datasmith/agents/installed/none.py +0 -0
  76. {fc_data-0.2.1 → fc_data-0.2.2}/src/datasmith/docker/__init__.py +0 -0
  77. {fc_data-0.2.1 → fc_data-0.2.2}/src/datasmith/docker/context.py +0 -0
  78. {fc_data-0.2.1 → fc_data-0.2.2}/src/datasmith/docker/images.py +0 -0
  79. {fc_data-0.2.1 → fc_data-0.2.2}/src/datasmith/docker/publish.py +0 -0
  80. {fc_data-0.2.1 → fc_data-0.2.2}/src/datasmith/docker/templates/Dockerfile.base +0 -0
  81. {fc_data-0.2.1 → fc_data-0.2.2}/src/datasmith/docker/templates/Dockerfile.pr +0 -0
  82. {fc_data-0.2.1 → fc_data-0.2.2}/src/datasmith/docker/templates/Dockerfile.repo +0 -0
  83. {fc_data-0.2.1 → fc_data-0.2.2}/src/datasmith/docker/templates/docker_build_base.sh +0 -0
  84. {fc_data-0.2.1 → fc_data-0.2.2}/src/datasmith/docker/templates/docker_build_env.sh +0 -0
  85. {fc_data-0.2.1 → fc_data-0.2.2}/src/datasmith/docker/templates/docker_build_final.sh +0 -0
  86. {fc_data-0.2.1 → fc_data-0.2.2}/src/datasmith/docker/templates/docker_build_pkg.sh +0 -0
  87. {fc_data-0.2.1 → fc_data-0.2.2}/src/datasmith/docker/templates/docker_build_run.sh +0 -0
  88. {fc_data-0.2.1 → fc_data-0.2.2}/src/datasmith/docker/templates/entrypoint.sh +0 -0
  89. {fc_data-0.2.1 → fc_data-0.2.2}/src/datasmith/docker/templates/parser.py +0 -0
  90. {fc_data-0.2.1 → fc_data-0.2.2}/src/datasmith/docker/templates/profile.sh +0 -0
  91. {fc_data-0.2.1 → fc_data-0.2.2}/src/datasmith/docker/templates/pytest_runner.py +0 -0
  92. {fc_data-0.2.1 → fc_data-0.2.2}/src/datasmith/docker/templates/run-tests.sh +0 -0
  93. {fc_data-0.2.1 → fc_data-0.2.2}/src/datasmith/docker/verifiers.py +0 -0
  94. {fc_data-0.2.1 → fc_data-0.2.2}/src/datasmith/github/__init__.py +0 -0
  95. {fc_data-0.2.1 → fc_data-0.2.2}/src/datasmith/github/client.py +0 -0
  96. {fc_data-0.2.1 → fc_data-0.2.2}/src/datasmith/github/hooks.py +0 -0
  97. {fc_data-0.2.1 → fc_data-0.2.2}/src/datasmith/github/links.py +0 -0
  98. {fc_data-0.2.1 → fc_data-0.2.2}/src/datasmith/github/models.py +0 -0
  99. {fc_data-0.2.1 → fc_data-0.2.2}/src/datasmith/github/render.py +0 -0
  100. {fc_data-0.2.1 → fc_data-0.2.2}/src/datasmith/github/search.py +0 -0
  101. {fc_data-0.2.1 → fc_data-0.2.2}/src/datasmith/github/templates/comment.md.j2 +0 -0
  102. {fc_data-0.2.1 → fc_data-0.2.2}/src/datasmith/github/templates/final.md.j2 +0 -0
  103. {fc_data-0.2.1 → fc_data-0.2.2}/src/datasmith/github/templates/issues.md.j2 +0 -0
  104. {fc_data-0.2.1 → fc_data-0.2.2}/src/datasmith/github/templates/repo.md.j2 +0 -0
  105. {fc_data-0.2.1 → fc_data-0.2.2}/src/datasmith/preflight.py +0 -0
  106. {fc_data-0.2.1 → fc_data-0.2.2}/src/datasmith/publish/__init__.py +0 -0
  107. {fc_data-0.2.1 → fc_data-0.2.2}/src/datasmith/publish/huggingface.py +0 -0
  108. {fc_data-0.2.1 → fc_data-0.2.2}/src/datasmith/publish/pipeline.py +0 -0
  109. {fc_data-0.2.1 → fc_data-0.2.2}/src/datasmith/publish/records.py +0 -0
  110. {fc_data-0.2.1 → fc_data-0.2.2}/src/datasmith/py.typed +0 -0
  111. {fc_data-0.2.1 → fc_data-0.2.2}/src/datasmith/resolution/__init__.py +0 -0
  112. {fc_data-0.2.1 → fc_data-0.2.2}/src/datasmith/resolution/blocklist.py +0 -0
  113. {fc_data-0.2.1 → fc_data-0.2.2}/src/datasmith/resolution/cache.py +0 -0
  114. {fc_data-0.2.1 → fc_data-0.2.2}/src/datasmith/resolution/constants.py +0 -0
  115. {fc_data-0.2.1 → fc_data-0.2.2}/src/datasmith/resolution/dependency_resolver.py +0 -0
  116. {fc_data-0.2.1 → fc_data-0.2.2}/src/datasmith/resolution/git_utils.py +0 -0
  117. {fc_data-0.2.1 → fc_data-0.2.2}/src/datasmith/resolution/import_analyzer.py +0 -0
  118. {fc_data-0.2.1 → fc_data-0.2.2}/src/datasmith/resolution/metadata_parser.py +0 -0
  119. {fc_data-0.2.1 → fc_data-0.2.2}/src/datasmith/resolution/models.py +0 -0
  120. {fc_data-0.2.1 → fc_data-0.2.2}/src/datasmith/resolution/orchestrator.py +0 -0
  121. {fc_data-0.2.1 → fc_data-0.2.2}/src/datasmith/resolution/package_filters.py +0 -0
  122. {fc_data-0.2.1 → fc_data-0.2.2}/src/datasmith/resolution/python_manager.py +0 -0
  123. {fc_data-0.2.1 → fc_data-0.2.2}/src/datasmith/runners/__init__.py +0 -0
  124. {fc_data-0.2.1 → fc_data-0.2.2}/src/datasmith/runners/base.py +0 -0
  125. {fc_data-0.2.1 → fc_data-0.2.2}/src/datasmith/runners/classify_prs.py +0 -0
  126. {fc_data-0.2.1 → fc_data-0.2.2}/src/datasmith/runners/render_problems.py +0 -0
  127. {fc_data-0.2.1 → fc_data-0.2.2}/src/datasmith/runners/resolve_packages.py +0 -0
  128. {fc_data-0.2.1 → fc_data-0.2.2}/src/datasmith/runners/scrape_commits.py +0 -0
  129. {fc_data-0.2.1 → fc_data-0.2.2}/src/datasmith/runners/scrape_repos.py +0 -0
  130. {fc_data-0.2.1 → fc_data-0.2.2}/src/datasmith/runners/synthesize_images.py +0 -0
  131. {fc_data-0.2.1 → fc_data-0.2.2}/src/datasmith/update/__init__.py +0 -0
  132. {fc_data-0.2.1 → fc_data-0.2.2}/src/datasmith/update/cli.py +0 -0
  133. {fc_data-0.2.1 → fc_data-0.2.2}/src/datasmith/update/offline.py +0 -0
  134. {fc_data-0.2.1 → fc_data-0.2.2}/src/datasmith/utils/__init__.py +0 -0
  135. {fc_data-0.2.1 → fc_data-0.2.2}/src/datasmith/utils/core.py +0 -0
  136. {fc_data-0.2.1 → fc_data-0.2.2}/src/datasmith/utils/db.py +0 -0
  137. {fc_data-0.2.1 → fc_data-0.2.2}/src/datasmith/utils/tokens.py +0 -0
  138. {fc_data-0.2.1 → fc_data-0.2.2}/static/formula-code-datasmith.png +0 -0
  139. {fc_data-0.2.1 → fc_data-0.2.2}/supabase/migrations/00001_initial_schema.sql +0 -0
  140. {fc_data-0.2.1 → fc_data-0.2.2}/supabase/migrations/00002_add_symbolic_compliance.sql +0 -0
  141. {fc_data-0.2.1 → fc_data-0.2.2}/supabase/migrations/00003_build_attempts_add_sha.sql +0 -0
  142. {fc_data-0.2.1 → fc_data-0.2.2}/supabase/migrations/00004_docker_contexts.sql +0 -0
  143. {fc_data-0.2.1 → fc_data-0.2.2}/supabase/migrations/00005_packages.sql +0 -0
  144. {fc_data-0.2.1 → fc_data-0.2.2}/supabase/migrations/00006_pr_contexts.sql +0 -0
  145. {fc_data-0.2.1 → fc_data-0.2.2}/supabase/migrations/00007_error_logs.sql +0 -0
  146. {fc_data-0.2.1 → fc_data-0.2.2}/supabase/migrations/00008_resource_metrics.sql +0 -0
  147. {fc_data-0.2.1 → fc_data-0.2.2}/tests/__init__.py +0 -0
  148. {fc_data-0.2.1 → fc_data-0.2.2}/tests/agents/__init__.py +0 -0
  149. {fc_data-0.2.1 → fc_data-0.2.2}/tests/agents/installed/__init__.py +0 -0
  150. {fc_data-0.2.1 → fc_data-0.2.2}/tests/agents/installed/test_agents.py +0 -0
  151. {fc_data-0.2.1 → fc_data-0.2.2}/tests/agents/test_classifiers.py +0 -0
  152. {fc_data-0.2.1 → fc_data-0.2.2}/tests/agents/test_codex.py +0 -0
  153. {fc_data-0.2.1 → fc_data-0.2.2}/tests/agents/test_config.py +0 -0
  154. {fc_data-0.2.1 → fc_data-0.2.2}/tests/agents/test_extractors.py +0 -0
  155. {fc_data-0.2.1 → fc_data-0.2.2}/tests/conftest.py +0 -0
  156. {fc_data-0.2.1 → fc_data-0.2.2}/tests/docker/__init__.py +0 -0
  157. {fc_data-0.2.1 → fc_data-0.2.2}/tests/docker/test_context.py +0 -0
  158. {fc_data-0.2.1 → fc_data-0.2.2}/tests/docker/test_images.py +0 -0
  159. {fc_data-0.2.1 → fc_data-0.2.2}/tests/docker/test_publish.py +0 -0
  160. {fc_data-0.2.1 → fc_data-0.2.2}/tests/docker/test_verifiers.py +0 -0
  161. {fc_data-0.2.1 → fc_data-0.2.2}/tests/github/__init__.py +0 -0
  162. {fc_data-0.2.1 → fc_data-0.2.2}/tests/github/test_client.py +0 -0
  163. {fc_data-0.2.1 → fc_data-0.2.2}/tests/github/test_hooks.py +0 -0
  164. {fc_data-0.2.1 → fc_data-0.2.2}/tests/github/test_links.py +0 -0
  165. {fc_data-0.2.1 → fc_data-0.2.2}/tests/github/test_models.py +0 -0
  166. {fc_data-0.2.1 → fc_data-0.2.2}/tests/github/test_render.py +0 -0
  167. {fc_data-0.2.1 → fc_data-0.2.2}/tests/integration/__init__.py +0 -0
  168. {fc_data-0.2.1 → fc_data-0.2.2}/tests/integration/conftest.py +0 -0
  169. {fc_data-0.2.1 → fc_data-0.2.2}/tests/integration/test_concurrent.py +0 -0
  170. {fc_data-0.2.1 → fc_data-0.2.2}/tests/integration/test_e2e_pipeline.py +0 -0
  171. {fc_data-0.2.1 → fc_data-0.2.2}/tests/integration/test_e2e_scrape.py +0 -0
  172. {fc_data-0.2.1 → fc_data-0.2.2}/tests/publish/__init__.py +0 -0
  173. {fc_data-0.2.1 → fc_data-0.2.2}/tests/publish/test_huggingface.py +0 -0
  174. {fc_data-0.2.1 → fc_data-0.2.2}/tests/publish/test_pipeline.py +0 -0
  175. {fc_data-0.2.1 → fc_data-0.2.2}/tests/publish/test_records.py +0 -0
  176. {fc_data-0.2.1 → fc_data-0.2.2}/tests/runners/__init__.py +0 -0
  177. {fc_data-0.2.1 → fc_data-0.2.2}/tests/runners/test_base.py +0 -0
  178. {fc_data-0.2.1 → fc_data-0.2.2}/tests/runners/test_classify_prs.py +0 -0
  179. {fc_data-0.2.1 → fc_data-0.2.2}/tests/runners/test_render_problems.py +0 -0
  180. {fc_data-0.2.1 → fc_data-0.2.2}/tests/runners/test_scrape_commits.py +0 -0
  181. {fc_data-0.2.1 → fc_data-0.2.2}/tests/runners/test_scrape_repos.py +0 -0
  182. {fc_data-0.2.1 → fc_data-0.2.2}/tests/runners/test_synthesize_images.py +0 -0
  183. {fc_data-0.2.1 → fc_data-0.2.2}/tests/test_init.py +0 -0
  184. {fc_data-0.2.1 → fc_data-0.2.2}/tests/test_website_snippets.py +0 -0
  185. {fc_data-0.2.1 → fc_data-0.2.2}/tests/update/__init__.py +0 -0
  186. {fc_data-0.2.1 → fc_data-0.2.2}/tests/update/test_cli.py +0 -0
  187. {fc_data-0.2.1 → fc_data-0.2.2}/tests/update/test_offline.py +0 -0
  188. {fc_data-0.2.1 → fc_data-0.2.2}/tests/update/test_preflight.py +0 -0
  189. {fc_data-0.2.1 → fc_data-0.2.2}/tests/utils/__init__.py +0 -0
  190. {fc_data-0.2.1 → fc_data-0.2.2}/tests/utils/test_core.py +0 -0
  191. {fc_data-0.2.1 → fc_data-0.2.2}/tests/utils/test_db.py +0 -0
  192. {fc_data-0.2.1 → fc_data-0.2.2}/tests/utils/test_tokens.py +0 -0
  193. {fc_data-0.2.1 → fc_data-0.2.2}/tox.ini +0 -0
@@ -200,6 +200,9 @@ scratch/artifacts/
200
200
  supabase/.temp/
201
201
  supabase/.branches/
202
202
 
203
+ # Grafana
204
+ grafana/data/
205
+
203
206
  # MkDocs build output
204
207
  site/
205
208
 
@@ -36,6 +36,36 @@ docker-clean: ## Clean up dangling Docker images and containers
36
36
  @echo "Cleaning up dangling Docker images and containers"
37
37
  @docker system prune -f
38
38
 
39
+ .PHONY: supabase-up
40
+ supabase-up: ## Start local Supabase instance
41
+ @npx supabase start
42
+
43
+ .PHONY: supabase-down
44
+ supabase-down: ## Stop local Supabase instance
45
+ @npx supabase stop
46
+
47
+ .PHONY: supabase-status
48
+ supabase-status: ## Show Supabase service status and URLs
49
+ @npx supabase status
50
+
51
+ .PHONY: grafana-migrate
52
+ grafana-migrate: ## Apply the grafana_ro read-only database role
53
+ @docker exec supabase_db_datasmith_new psql -U postgres -d postgres -f /dev/stdin < supabase/migrations/00009_grafana_readonly.sql
54
+ @echo "grafana_ro role created"
55
+
56
+ .PHONY: grafana-up
57
+ grafana-up: ## Start Grafana dashboard (http://localhost:3001)
58
+ @docker compose -f grafana/docker-compose.yml up -d
59
+ @echo "Grafana is running at http://localhost:3001"
60
+
61
+ .PHONY: grafana-down
62
+ grafana-down: ## Stop Grafana dashboard
63
+ @docker compose -f grafana/docker-compose.yml down
64
+
65
+ .PHONY: grafana-logs
66
+ grafana-logs: ## Tail Grafana container logs
67
+ @docker compose -f grafana/docker-compose.yml logs -f
68
+
39
69
 
40
70
  .PHONY: help
41
71
  help:
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: fc-data
3
- Version: 0.2.1
3
+ Version: 0.2.2
4
4
  Summary: Python toolchain for building and maintaining FormulaCode benchmark tasks.
5
5
  Project-URL: Homepage, https://formula-code.github.io/datasmith/
6
6
  Project-URL: Repository, https://github.com/formula-code/datasmith
@@ -44,12 +44,12 @@ Description-Content-Type: text/markdown
44
44
  <a href="https://formula-code.github.io/leaderboard/">
45
45
  <img src="https://img.shields.io/badge/%F0%9F%93%88%20Leaderboard-EA580C?style=for-the-badge&logoColor=white" alt="FormulaCode Leaderboard">
46
46
  </a>
47
- <a href="https://formula-code.github.io/registry/">
48
- <img src="https://img.shields.io/badge/%F0%9F%93%88%20Live%20Task%20Registry-7F1D1D?style=for-the-badge&logoColor=white" alt="FormulaCode Live Task Registry">
49
- </a>
50
47
  <a href="https://formula-code.github.io/datasmith/">
51
48
  <img src="https://img.shields.io/badge/%F0%9F%93%9A%20Docs-4B0082?style=for-the-badge" alt="fc-data Documentation">
52
49
  </a>
50
+ <a href="https://nonconstricting-zara-unhinderingly.ngrok-free.dev/">
51
+ <img src="https://img.shields.io/badge/%F0%9F%93%8A%20Live%20Dashboard-7F1D1D?style=for-the-badge" alt="Live Dashboard">
52
+ </a>
53
53
  </p>
54
54
 
55
55
  [FormulaCode](https://formula-code.github.io/) is a *continually updating* benchmark for evaluating the holistic ability of LLM agents to optimize codebases. FormulaCode consists of two parts: a [pipeline](https://github.com/formula-code/datasmith) to construct performance optimization tasks, and an [execution harness](https://github.com/formula-code/terminal-bench) that connects a language model to our terminal sandbox. _This repository contains the task generation pipeline._
@@ -10,12 +10,12 @@
10
10
  <a href="https://formula-code.github.io/leaderboard/">
11
11
  <img src="https://img.shields.io/badge/%F0%9F%93%88%20Leaderboard-EA580C?style=for-the-badge&logoColor=white" alt="FormulaCode Leaderboard">
12
12
  </a>
13
- <a href="https://formula-code.github.io/registry/">
14
- <img src="https://img.shields.io/badge/%F0%9F%93%88%20Live%20Task%20Registry-7F1D1D?style=for-the-badge&logoColor=white" alt="FormulaCode Live Task Registry">
15
- </a>
16
13
  <a href="https://formula-code.github.io/datasmith/">
17
14
  <img src="https://img.shields.io/badge/%F0%9F%93%9A%20Docs-4B0082?style=for-the-badge" alt="fc-data Documentation">
18
15
  </a>
16
+ <a href="https://nonconstricting-zara-unhinderingly.ngrok-free.dev/">
17
+ <img src="https://img.shields.io/badge/%F0%9F%93%8A%20Live%20Dashboard-7F1D1D?style=for-the-badge" alt="Live Dashboard">
18
+ </a>
19
19
  </p>
20
20
 
21
21
  [FormulaCode](https://formula-code.github.io/) is a *continually updating* benchmark for evaluating the holistic ability of LLM agents to optimize codebases. FormulaCode consists of two parts: a [pipeline](https://github.com/formula-code/datasmith) to construct performance optimization tasks, and an [execution harness](https://github.com/formula-code/terminal-bench) that connects a language model to our terminal sandbox. _This repository contains the task generation pipeline._
@@ -0,0 +1,90 @@
1
+ # Monitoring with Grafana
2
+
3
+ fc-data includes a pre-configured Grafana dashboard for monitoring the pipeline, browsing data, and tracking dataset growth.
4
+
5
+ ## Prerequisites
6
+
7
+ - Local Supabase instance running (`make supabase-up`)
8
+ - Docker available on the host
9
+
10
+ ## Quick Start
11
+
12
+ ```bash
13
+ # Apply the read-only database role (first time only)
14
+ make grafana-migrate
15
+
16
+ # Start Grafana
17
+ make grafana-up
18
+ ```
19
+
20
+ Grafana is now available at **<http://localhost:3001>** with no login required (anonymous read-only access).
21
+
22
+ To expose it publicly via ngrok:
23
+
24
+ ```bash
25
+ ngrok http 3001
26
+ ```
27
+
28
+ ## Architecture
29
+
30
+ Grafana runs as a Docker container that joins the existing Supabase Docker network. It connects to Postgres via a **read-only** `grafana_ro` database role that can only `SELECT` — no writes are possible, even from the Explore SQL editor.
31
+
32
+ ```
33
+ ┌──────────────┐ ┌──────────────────────────┐
34
+ │ Browser │────▶│ Grafana (port 3001) │
35
+ └──────────────┘ │ Anonymous Viewer access │
36
+ └───────────┬──────────────┘
37
+ │ SELECT only
38
+ ┌───────────▼──────────────┐
39
+ │ Supabase PostgreSQL │
40
+ │ (grafana_ro role) │
41
+ └──────────────────────────┘
42
+ ```
43
+
44
+ ## Dashboard Panels
45
+
46
+ The provisioned dashboard ("DataSmith Pipeline Overview") includes:
47
+
48
+ | Section | Panels |
49
+ |---------|--------|
50
+ | **Dataset Growth** | Containers built by month, stat counts (PRs, containers, packages, repos), PR-to-container rate |
51
+ | **Repository Overview** | All repos by stars, containers-by-repo treemap |
52
+ | **Pull Request Insights** | Performance commit ratio, dataset time span, difficulty distribution, PR volume over time, optimization type distribution |
53
+ | **Package Resolution** | Python version distribution, installability by repo, resolution strategy breakdown |
54
+ | **Pipeline Status** | Active runners table, completion gauge, recent failures |
55
+ | **Synthesis** | Success rate over time, failure stage distribution, top error messages |
56
+ | **Synthesis Deeper Analysis** | First-attempt vs retry success, hardest repos, agent head-to-head |
57
+ | **Attempt Details** | Attempts per repo, duration by agent, duration over time |
58
+ | **Resource Metrics** | Build metrics table, image size vs build time, avg resources over time |
59
+ | **Pipeline Funnel** | End-to-end conversion: Repos → PRs → Perf PRs → Resolved → Built → Published |
60
+ | **Data Explorer** | Filtered table of performance PRs with referenced issues |
61
+
62
+ ## Ad-hoc SQL Queries
63
+
64
+ Use Grafana's **Explore** mode (compass icon in the sidebar) to run arbitrary read-only SQL against the database. The `grafana_ro` role has `SELECT` access to all tables.
65
+
66
+ ## Admin Access
67
+
68
+ To edit dashboards in the Grafana UI, log in with:
69
+
70
+ - **Username:** `admin`
71
+ - **Password:** value of `GRAFANA_ADMIN_PASSWORD` in `tokens.env` (defaults to `admin`)
72
+
73
+ ## Configuration Files
74
+
75
+ | File | Purpose |
76
+ |------|---------|
77
+ | `grafana/docker-compose.yml` | Grafana service definition |
78
+ | `grafana/provisioning/datasources/supabase-postgres.yml` | PostgreSQL datasource (read-only) |
79
+ | `grafana/provisioning/dashboards/dashboard-provider.yml` | Dashboard file provider config |
80
+ | `grafana/provisioning/dashboards-json/datasmith-overview.json` | Dashboard panels and queries |
81
+ | `supabase/migrations/00009_grafana_readonly.sql` | Read-only Postgres role |
82
+
83
+ ## Makefile Targets
84
+
85
+ ```bash
86
+ make grafana-up # Start Grafana
87
+ make grafana-down # Stop Grafana
88
+ make grafana-logs # Tail container logs
89
+ make grafana-migrate # Apply the grafana_ro database role
90
+ ```
@@ -10,11 +10,11 @@
10
10
  <a href="https://formula-code.github.io/leaderboard/">
11
11
  <img src="https://img.shields.io/badge/%F0%9F%93%88%20Leaderboard-EA580C?style=for-the-badge&logoColor=white" alt="FormulaCode Leaderboard">
12
12
  </a>
13
- <a href="https://formula-code.github.io/registry/">
14
- <img src="https://img.shields.io/badge/%F0%9F%93%88%20Live%20Task%20Registry-7F1D1D?style=for-the-badge&logoColor=white" alt="FormulaCode Live Task Registry">
13
+ <a href="https://formula-code.github.io/datasmith/">
14
+ <img src="https://img.shields.io/badge/%F0%9F%93%9A%20Docs-4B0082?style=for-the-badge" alt="fc-data Documentation">
15
15
  </a>
16
- <a href="https://pypi.org/project/fc-data/">
17
- <img src="https://img.shields.io/badge/%F0%9F%93%A6%20PyPI-3775A9?style=for-the-badge&logo=pypi&logoColor=white" alt="fc-data on PyPI">
16
+ <a href="https://nonconstricting-zara-unhinderingly.ngrok-free.dev/">
17
+ <img src="https://img.shields.io/badge/%F0%9F%93%8A%20Live%20Dashboard-7F1D1D?style=for-the-badge" alt="Live Dashboard">
18
18
  </a>
19
19
  </p>
20
20
 
@@ -0,0 +1,37 @@
1
+ services:
2
+ grafana:
3
+ image: grafana/grafana-oss:11.6.0
4
+ container_name: datasmith_grafana
5
+ restart: unless-stopped
6
+ ports:
7
+ - "3001:3000"
8
+ env_file:
9
+ - ../tokens.env
10
+ environment:
11
+ # Anonymous read-only access (no login required)
12
+ - GF_AUTH_ANONYMOUS_ENABLED=true
13
+ - GF_AUTH_ANONYMOUS_ORG_ROLE=Viewer
14
+ # Admin account for dashboard editing — password from tokens.env
15
+ - GF_SECURITY_ADMIN_USER=admin
16
+ - GF_SECURITY_ADMIN_PASSWORD=${GRAFANA_ADMIN_PASSWORD:-admin}
17
+ # Home dashboard
18
+ - GF_DASHBOARDS_DEFAULT_HOME_DASHBOARD_UID=datasmith-overview
19
+ # Minimum refresh interval
20
+ - GF_DASHBOARDS_MIN_REFRESH_INTERVAL=1m
21
+ # Plugins
22
+ - GF_INSTALL_PLUGINS=netsage-sankey-panel,marcusolsson-treemap-panel
23
+ volumes:
24
+ - grafana-data:/var/lib/grafana
25
+ - ./provisioning/datasources:/etc/grafana/provisioning/datasources:ro
26
+ - ./provisioning/dashboards:/etc/grafana/provisioning/dashboards:ro
27
+ - ./provisioning/dashboards-json:/var/lib/grafana/dashboards:ro
28
+ networks:
29
+ - supabase_net
30
+
31
+ volumes:
32
+ grafana-data:
33
+
34
+ networks:
35
+ supabase_net:
36
+ external: true
37
+ name: supabase_network_datasmith_new
@@ -0,0 +1,13 @@
1
+ apiVersion: 1
2
+
3
+ providers:
4
+ - name: DataSmith
5
+ orgId: 1
6
+ folder: ""
7
+ type: file
8
+ disableDeletion: false
9
+ updateIntervalSeconds: 30
10
+ allowUiUpdates: true
11
+ options:
12
+ path: /var/lib/grafana/dashboards
13
+ foldersFromFilesStructure: false