ragops 2.2.0__tar.gz → 2.4.0__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 (288) hide show
  1. {ragops-2.2.0 → ragops-2.4.0}/.github/ISSUE_TEMPLATE/bug.yml +1 -1
  2. {ragops-2.2.0 → ragops-2.4.0}/.github/workflows/ragops-gate.yml +1 -1
  3. {ragops-2.2.0 → ragops-2.4.0}/CHANGELOG.md +27 -0
  4. {ragops-2.2.0 → ragops-2.4.0}/PKG-INFO +18 -17
  5. {ragops-2.2.0 → ragops-2.4.0}/README.md +17 -16
  6. ragops-2.4.0/design-qa.md +56 -0
  7. ragops-2.4.0/docs/architecture/adr/0020-local-release-integrity.md +17 -0
  8. {ragops-2.2.0 → ragops-2.4.0}/docs/demo/cv-linkedin-copy.md +7 -6
  9. ragops-2.4.0/docs/demo/portfolio-case-study.md +45 -0
  10. ragops-2.4.0/docs/demo/presentation-outline.md +35 -0
  11. ragops-2.4.0/docs/demo/screenshots/ragops-adoption-hero.png +0 -0
  12. ragops-2.4.0/docs/demo/screenshots/ragops-adoption-mobile.png +0 -0
  13. ragops-2.4.0/docs/demo/video-script.md +30 -0
  14. ragops-2.4.0/docs/demo/walkthrough.md +46 -0
  15. ragops-2.4.0/docs/design-audit/adoption-refresh/compare.html +4 -0
  16. ragops-2.4.0/docs/design-audit/adoption-refresh/comparison-desktop.png +0 -0
  17. ragops-2.4.0/docs/design-audit/adoption-refresh/implementation-desktop.png +0 -0
  18. ragops-2.4.0/docs/design-audit/adoption-refresh/implementation-mobile.png +0 -0
  19. ragops-2.4.0/docs/design-audit/adoption-refresh/source-option-3.png +0 -0
  20. ragops-2.4.0/docs/design-audit/v2.3/01-workbench-desktop.png +0 -0
  21. ragops-2.4.0/docs/design-audit/v2.3/audit.md +20 -0
  22. {ragops-2.2.0 → ragops-2.4.0}/docs/engineering/github-pr-gate.md +1 -1
  23. {ragops-2.2.0 → ragops-2.4.0}/docs/engineering/gitlab-ci-gate.md +1 -1
  24. {ragops-2.2.0 → ragops-2.4.0}/docs/engineering/pypi-publishing.md +3 -3
  25. {ragops-2.2.0 → ragops-2.4.0}/docs/examples/gitlab-ci-ragops.yml +1 -1
  26. ragops-2.4.0/docs/getting-started.md +93 -0
  27. {ragops-2.2.0 → ragops-2.4.0}/docs/gtm/github-launch-checklist.md +3 -4
  28. ragops-2.4.0/docs/product/requirements-v2.3.md +24 -0
  29. ragops-2.4.0/docs/product/requirements-v2.4.md +26 -0
  30. {ragops-2.2.0 → ragops-2.4.0}/docs/product/roadmap.md +19 -1
  31. {ragops-2.2.0 → ragops-2.4.0}/docs/product/success-metrics.md +7 -1
  32. {ragops-2.2.0 → ragops-2.4.0}/docs/project/program-completion-audit.md +20 -2
  33. {ragops-2.2.0 → ragops-2.4.0}/docs/project/v2.2-acceptance.md +6 -5
  34. ragops-2.4.0/docs/project/v2.3-acceptance.md +32 -0
  35. ragops-2.4.0/docs/project/v2.4-acceptance.md +30 -0
  36. ragops-2.4.0/docs/releases/v2.3.0.md +22 -0
  37. ragops-2.4.0/docs/releases/v2.4.0.md +24 -0
  38. {ragops-2.2.0 → ragops-2.4.0}/pyproject.toml +1 -1
  39. {ragops-2.2.0 → ragops-2.4.0}/scripts/local_release.py +37 -1
  40. {ragops-2.2.0 → ragops-2.4.0}/site/index.html +47 -22
  41. ragops-2.4.0/site/styles.css +177 -0
  42. {ragops-2.2.0 → ragops-2.4.0}/src/ragops/__init__.py +1 -1
  43. {ragops-2.2.0 → ragops-2.4.0}/src/ragops/cli.py +2 -0
  44. {ragops-2.2.0 → ragops-2.4.0}/tests/test_adoption_recipes.py +1 -1
  45. {ragops-2.2.0 → ragops-2.4.0}/tests/test_local_release.py +25 -0
  46. {ragops-2.2.0 → ragops-2.4.0}/tests/test_public_api.py +12 -1
  47. {ragops-2.2.0 → ragops-2.4.0}/tests/test_readme_visuals.py +2 -1
  48. {ragops-2.2.0 → ragops-2.4.0}/tests/test_showcase_site.py +3 -1
  49. ragops-2.2.0/design-qa.md +0 -74
  50. ragops-2.2.0/docs/demo/portfolio-case-study.md +0 -28
  51. ragops-2.2.0/docs/demo/presentation-outline.md +0 -36
  52. ragops-2.2.0/docs/demo/video-script.md +0 -32
  53. ragops-2.2.0/docs/demo/walkthrough.md +0 -45
  54. ragops-2.2.0/docs/getting-started.md +0 -89
  55. ragops-2.2.0/site/styles.css +0 -1
  56. {ragops-2.2.0 → ragops-2.4.0}/.dockerignore +0 -0
  57. {ragops-2.2.0 → ragops-2.4.0}/.github/ISSUE_TEMPLATE/config.yml +0 -0
  58. {ragops-2.2.0 → ragops-2.4.0}/.github/ISSUE_TEMPLATE/design-partner.yml +0 -0
  59. {ragops-2.2.0 → ragops-2.4.0}/.github/ISSUE_TEMPLATE/evaluator.yml +0 -0
  60. {ragops-2.2.0 → ragops-2.4.0}/.github/ISSUE_TEMPLATE/feature.yml +0 -0
  61. {ragops-2.2.0 → ragops-2.4.0}/.github/pull_request_template.md +0 -0
  62. {ragops-2.2.0 → ragops-2.4.0}/.github/workflows/ci.yml +0 -0
  63. {ragops-2.2.0 → ragops-2.4.0}/.github/workflows/nightly.yml +0 -0
  64. {ragops-2.2.0 → ragops-2.4.0}/.github/workflows/pages.yml +0 -0
  65. {ragops-2.2.0 → ragops-2.4.0}/.github/workflows/publish-pypi.yml +0 -0
  66. {ragops-2.2.0 → ragops-2.4.0}/.github/workflows/ragops-gate-smoke.yml +0 -0
  67. {ragops-2.2.0 → ragops-2.4.0}/.github/workflows/ragops-pr-comment.yml +0 -0
  68. {ragops-2.2.0 → ragops-2.4.0}/.github/workflows/release.yml +0 -0
  69. {ragops-2.2.0 → ragops-2.4.0}/.gitignore +0 -0
  70. {ragops-2.2.0 → ragops-2.4.0}/AGENTS.md +0 -0
  71. {ragops-2.2.0 → ragops-2.4.0}/CODE_OF_CONDUCT.md +0 -0
  72. {ragops-2.2.0 → ragops-2.4.0}/CONTRIBUTING.md +0 -0
  73. {ragops-2.2.0 → ragops-2.4.0}/Dockerfile +0 -0
  74. {ragops-2.2.0 → ragops-2.4.0}/LICENSE +0 -0
  75. {ragops-2.2.0 → ragops-2.4.0}/NEXT_SESSION.md +0 -0
  76. {ragops-2.2.0 → ragops-2.4.0}/SECURITY.md +0 -0
  77. {ragops-2.2.0 → ragops-2.4.0}/SUPPORT.md +0 -0
  78. {ragops-2.2.0 → ragops-2.4.0}/apps/__init__.py +0 -0
  79. {ragops-2.2.0 → ragops-2.4.0}/apps/api/__init__.py +0 -0
  80. {ragops-2.2.0 → ragops-2.4.0}/apps/api/main.py +0 -0
  81. {ragops-2.2.0 → ragops-2.4.0}/apps/github_pr_comment.py +0 -0
  82. {ragops-2.2.0 → ragops-2.4.0}/apps/web/index.html +0 -0
  83. {ragops-2.2.0 → ragops-2.4.0}/compose.yaml +0 -0
  84. {ragops-2.2.0 → ragops-2.4.0}/docs/architecture/adr/0001-local-first-core.md +0 -0
  85. {ragops-2.2.0 → ragops-2.4.0}/docs/architecture/adr/0002-baseline-regression-gates.md +0 -0
  86. {ragops-2.2.0 → ragops-2.4.0}/docs/architecture/adr/0003-reference-app-outside-core.md +0 -0
  87. {ragops-2.2.0 → ragops-2.4.0}/docs/architecture/adr/0004-open-core-boundary.md +0 -0
  88. {ragops-2.2.0 → ragops-2.4.0}/docs/architecture/adr/0005-scenario-0.2-metadata-and-citation-precision.md +0 -0
  89. {ragops-2.2.0 → ragops-2.4.0}/docs/architecture/adr/0006-response-fixture-overlays.md +0 -0
  90. {ragops-2.2.0 → ragops-2.4.0}/docs/architecture/adr/0007-offline-reference-graphrag-agent.md +0 -0
  91. {ragops-2.2.0 → ragops-2.4.0}/docs/architecture/adr/0008-local-team-review-workflow.md +0 -0
  92. {ragops-2.2.0 → ragops-2.4.0}/docs/architecture/adr/0009-adopt-mit-license.md +0 -0
  93. {ragops-2.2.0 → ragops-2.4.0}/docs/architecture/adr/0010-repair-trace-04-schema-json.md +0 -0
  94. {ragops-2.2.0 → ragops-2.4.0}/docs/architecture/adr/0011-reusable-pr-gate-is-an-adapter.md +0 -0
  95. {ragops-2.2.0 → ragops-2.4.0}/docs/architecture/adr/0012-opentelemetry-export-is-an-example-adapter.md +0 -0
  96. {ragops-2.2.0 → ragops-2.4.0}/docs/architecture/adr/0013-additive-demo-catalog-and-codepoint-budget.md +0 -0
  97. {ragops-2.2.0 → ragops-2.4.0}/docs/architecture/adr/0014-separate-pr-evaluation-from-comment-publication.md +0 -0
  98. {ragops-2.2.0 → ragops-2.4.0}/docs/architecture/adr/0015-portable-design-partner-measurement.md +0 -0
  99. {ragops-2.2.0 → ragops-2.4.0}/docs/architecture/adr/0016-first-class-evaluator-gates.md +0 -0
  100. {ragops-2.2.0 → ragops-2.4.0}/docs/architecture/adr/0017-api-authentication-and-input-bounds.md +0 -0
  101. {ragops-2.2.0 → ragops-2.4.0}/docs/architecture/adr/0018-portable-external-metric-envelope.md +0 -0
  102. {ragops-2.2.0 → ragops-2.4.0}/docs/architecture/adr/0019-local-release-fallback.md +0 -0
  103. {ragops-2.2.0 → ragops-2.4.0}/docs/architecture/component-diagram.md +0 -0
  104. {ragops-2.2.0 → ragops-2.4.0}/docs/architecture/context-diagram.md +0 -0
  105. {ragops-2.2.0 → ragops-2.4.0}/docs/architecture/control-plane-alpha.md +0 -0
  106. {ragops-2.2.0 → ragops-2.4.0}/docs/architecture/data-model.md +0 -0
  107. {ragops-2.2.0 → ragops-2.4.0}/docs/architecture/pr-comment-publishing.md +0 -0
  108. {ragops-2.2.0 → ragops-2.4.0}/docs/architecture/system-overview.md +0 -0
  109. {ragops-2.2.0 → ragops-2.4.0}/docs/architecture/threat-model.md +0 -0
  110. {ragops-2.2.0 → ragops-2.4.0}/docs/demo/design-audit/01-current-desktop.jpg +0 -0
  111. {ragops-2.2.0 → ragops-2.4.0}/docs/demo/design-audit/02-implementation-desktop.jpg +0 -0
  112. {ragops-2.2.0 → ragops-2.4.0}/docs/demo/design-audit/04-implementation-mobile.jpg +0 -0
  113. {ragops-2.2.0 → ragops-2.4.0}/docs/demo/design-audit/06-desktop-comparison.jpg +0 -0
  114. {ragops-2.2.0 → ragops-2.4.0}/docs/demo/design-audit/09-limitations-section.jpg +0 -0
  115. {ragops-2.2.0 → ragops-2.4.0}/docs/demo/design-audit/selected-open-source-adoption.png +0 -0
  116. {ragops-2.2.0 → ragops-2.4.0}/docs/demo/infographics/evidence-stack.svg +0 -0
  117. {ragops-2.2.0 → ragops-2.4.0}/docs/demo/infographics/release-gate-flow.svg +0 -0
  118. {ragops-2.2.0 → ragops-2.4.0}/docs/demo/portfolio-handoff.md +0 -0
  119. {ragops-2.2.0 → ragops-2.4.0}/docs/demo/screenshots/ragops-limitations-screen.jpg +0 -0
  120. {ragops-2.2.0 → ragops-2.4.0}/docs/demo/screenshots/ragops-mobile-screen.jpg +0 -0
  121. {ragops-2.2.0 → ragops-2.4.0}/docs/demo/screenshots/ragops-portfolio-desktop.jpg +0 -0
  122. {ragops-2.2.0 → ragops-2.4.0}/docs/demo/screenshots/ragops-portfolio-mobile.jpg +0 -0
  123. {ragops-2.2.0 → ragops-2.4.0}/docs/demo/screenshots/ragops-release-screen.jpg +0 -0
  124. {ragops-2.2.0 → ragops-2.4.0}/docs/demo/screenshots/ragops-showcase-hero.jpg +0 -0
  125. {ragops-2.2.0 → ragops-2.4.0}/docs/demo/social-preview.png +0 -0
  126. {ragops-2.2.0 → ragops-2.4.0}/docs/design-audit/v1.9/01-start.png +0 -0
  127. {ragops-2.2.0 → ragops-2.4.0}/docs/design-audit/v1.9/02-pass-decision.png +0 -0
  128. {ragops-2.2.0 → ragops-2.4.0}/docs/design-audit/v1.9/03-invalid-json-stale-decision.png +0 -0
  129. {ragops-2.2.0 → ragops-2.4.0}/docs/design-audit/v1.9/04-fixed-pass-decision.png +0 -0
  130. {ragops-2.2.0 → ragops-2.4.0}/docs/design-audit/v1.9/05-fixed-invalid-json.png +0 -0
  131. {ragops-2.2.0 → ragops-2.4.0}/docs/design-audit/v1.9/workbench-audit.md +0 -0
  132. {ragops-2.2.0 → ragops-2.4.0}/docs/engineering/export-your-first-trace.md +0 -0
  133. {ragops-2.2.0 → ragops-2.4.0}/docs/engineering/handbook.md +0 -0
  134. {ragops-2.2.0 → ragops-2.4.0}/docs/engineering/local-release.md +0 -0
  135. {ragops-2.2.0 → ragops-2.4.0}/docs/engineering/observability.md +0 -0
  136. {ragops-2.2.0 → ragops-2.4.0}/docs/engineering/provider-adapters.md +0 -0
  137. {ragops-2.2.0 → ragops-2.4.0}/docs/engineering/testing-strategy.md +0 -0
  138. {ragops-2.2.0 → ragops-2.4.0}/docs/evaluation/answer-length-budget.md +0 -0
  139. {ragops-2.2.0 → ragops-2.4.0}/docs/evaluation/benchmark-report-v0.2.md +0 -0
  140. {ragops-2.2.0 → ragops-2.4.0}/docs/evaluation/evaluator-gates.md +0 -0
  141. {ragops-2.2.0 → ragops-2.4.0}/docs/evaluation/red-team-plan.md +0 -0
  142. {ragops-2.2.0 → ragops-2.4.0}/docs/evaluation/scenario-taxonomy.md +0 -0
  143. {ragops-2.2.0 → ragops-2.4.0}/docs/evaluation/strategy.md +0 -0
  144. {ragops-2.2.0 → ragops-2.4.0}/docs/examples/github-pr-comment.yml +0 -0
  145. {ragops-2.2.0 → ragops-2.4.0}/docs/gtm/design-partner-outreach.md +0 -0
  146. {ragops-2.2.0 → ragops-2.4.0}/docs/gtm/design-partner-pilot-runbook.md +0 -0
  147. {ragops-2.2.0 → ragops-2.4.0}/docs/gtm/pilot-fixtures/synthetic-economics.json +0 -0
  148. {ragops-2.2.0 → ragops-2.4.0}/docs/gtm/pilot-fixtures/synthetic-manifest.json +0 -0
  149. {ragops-2.2.0 → ragops-2.4.0}/docs/gtm/pilot-fixtures/synthetic-observations.jsonl +0 -0
  150. {ragops-2.2.0 → ragops-2.4.0}/docs/gtm/pilot-measurement-plan.md +0 -0
  151. {ragops-2.2.0 → ragops-2.4.0}/docs/gtm/synthetic-pilot-report.md +0 -0
  152. {ragops-2.2.0 → ragops-2.4.0}/docs/product/commercialization.md +0 -0
  153. {ragops-2.2.0 → ragops-2.4.0}/docs/product/competitive-analysis.md +0 -0
  154. {ragops-2.2.0 → ragops-2.4.0}/docs/product/jobs-to-be-done.md +0 -0
  155. {ragops-2.2.0 → ragops-2.4.0}/docs/product/oss-launch-plan.md +0 -0
  156. {ragops-2.2.0 → ragops-2.4.0}/docs/product/personas.md +0 -0
  157. {ragops-2.2.0 → ragops-2.4.0}/docs/product/product_thesis.md +0 -0
  158. {ragops-2.2.0 → ragops-2.4.0}/docs/product/requirements-v0.1.md +0 -0
  159. {ragops-2.2.0 → ragops-2.4.0}/docs/product/requirements-v0.2.md +0 -0
  160. {ragops-2.2.0 → ragops-2.4.0}/docs/product/requirements-v1.5.md +0 -0
  161. {ragops-2.2.0 → ragops-2.4.0}/docs/product/requirements-v1.6.md +0 -0
  162. {ragops-2.2.0 → ragops-2.4.0}/docs/product/requirements-v1.7.md +0 -0
  163. {ragops-2.2.0 → ragops-2.4.0}/docs/product/requirements-v1.8.md +0 -0
  164. {ragops-2.2.0 → ragops-2.4.0}/docs/product/requirements-v2.0.md +0 -0
  165. {ragops-2.2.0 → ragops-2.4.0}/docs/product/requirements-v2.1.md +0 -0
  166. {ragops-2.2.0 → ragops-2.4.0}/docs/product/requirements-v2.2.md +0 -0
  167. {ragops-2.2.0 → ragops-2.4.0}/docs/project/backlog.md +0 -0
  168. {ragops-2.2.0 → ragops-2.4.0}/docs/project/charter.md +0 -0
  169. {ragops-2.2.0 → ragops-2.4.0}/docs/project/decision-log.md +0 -0
  170. {ragops-2.2.0 → ragops-2.4.0}/docs/project/m1-acceptance.md +0 -0
  171. {ragops-2.2.0 → ragops-2.4.0}/docs/project/m2-acceptance.md +0 -0
  172. {ragops-2.2.0 → ragops-2.4.0}/docs/project/m3-acceptance.md +0 -0
  173. {ragops-2.2.0 → ragops-2.4.0}/docs/project/m4-acceptance.md +0 -0
  174. {ragops-2.2.0 → ragops-2.4.0}/docs/project/m5-acceptance.md +0 -0
  175. {ragops-2.2.0 → ragops-2.4.0}/docs/project/milestones.md +0 -0
  176. {ragops-2.2.0 → ragops-2.4.0}/docs/project/release-plan.md +0 -0
  177. {ragops-2.2.0 → ragops-2.4.0}/docs/project/risk-register.md +0 -0
  178. {ragops-2.2.0 → ragops-2.4.0}/docs/project/v1-acceptance.md +0 -0
  179. {ragops-2.2.0 → ragops-2.4.0}/docs/project/v1.5-acceptance.md +0 -0
  180. {ragops-2.2.0 → ragops-2.4.0}/docs/project/v1.6-acceptance.md +0 -0
  181. {ragops-2.2.0 → ragops-2.4.0}/docs/project/v1.7-acceptance.md +0 -0
  182. {ragops-2.2.0 → ragops-2.4.0}/docs/project/v1.8-acceptance.md +0 -0
  183. {ragops-2.2.0 → ragops-2.4.0}/docs/project/v2.0-acceptance.md +0 -0
  184. {ragops-2.2.0 → ragops-2.4.0}/docs/project/v2.1-acceptance.md +0 -0
  185. {ragops-2.2.0 → ragops-2.4.0}/docs/project/work-breakdown.md +0 -0
  186. {ragops-2.2.0 → ragops-2.4.0}/docs/releases/v1.5.0.md +0 -0
  187. {ragops-2.2.0 → ragops-2.4.0}/docs/releases/v1.6.0.md +0 -0
  188. {ragops-2.2.0 → ragops-2.4.0}/docs/releases/v1.7.0.md +0 -0
  189. {ragops-2.2.0 → ragops-2.4.0}/docs/releases/v1.8.0.md +0 -0
  190. {ragops-2.2.0 → ragops-2.4.0}/docs/releases/v2.0.0.md +0 -0
  191. {ragops-2.2.0 → ragops-2.4.0}/docs/releases/v2.1.0.md +0 -0
  192. {ragops-2.2.0 → ragops-2.4.0}/docs/releases/v2.2.0.md +0 -0
  193. {ragops-2.2.0 → ragops-2.4.0}/examples/__init__.py +0 -0
  194. {ragops-2.2.0 → ragops-2.4.0}/examples/japanese_troubleshooting_agent/README.md +0 -0
  195. {ragops-2.2.0 → ragops-2.4.0}/examples/japanese_troubleshooting_agent/__init__.py +0 -0
  196. {ragops-2.2.0 → ragops-2.4.0}/examples/japanese_troubleshooting_agent/agent.py +0 -0
  197. {ragops-2.2.0 → ragops-2.4.0}/examples/japanese_troubleshooting_agent/architecture.md +0 -0
  198. {ragops-2.2.0 → ragops-2.4.0}/examples/japanese_troubleshooting_agent/cli.py +0 -0
  199. {ragops-2.2.0 → ragops-2.4.0}/examples/japanese_troubleshooting_agent/data/documents.json +0 -0
  200. {ragops-2.2.0 → ragops-2.4.0}/examples/japanese_troubleshooting_agent/data/graph.json +0 -0
  201. {ragops-2.2.0 → ragops-2.4.0}/examples/japanese_troubleshooting_agent/discovery.md +0 -0
  202. {ragops-2.2.0 → ragops-2.4.0}/examples/japanese_troubleshooting_agent/executive-report.md +0 -0
  203. {ragops-2.2.0 → ragops-2.4.0}/examples/japanese_troubleshooting_agent/results/comparison.md +0 -0
  204. {ragops-2.2.0 → ragops-2.4.0}/examples/japanese_troubleshooting_agent/results/graph-traces.jsonl +0 -0
  205. {ragops-2.2.0 → ragops-2.4.0}/examples/japanese_troubleshooting_agent/results/lexical-traces.jsonl +0 -0
  206. {ragops-2.2.0 → ragops-2.4.0}/examples/japanese_troubleshooting_agent/rollout-plan.md +0 -0
  207. {ragops-2.2.0 → ragops-2.4.0}/examples/japanese_troubleshooting_agent/scenario.json +0 -0
  208. {ragops-2.2.0 → ragops-2.4.0}/examples/japanese_troubleshooting_agent/suite.json +0 -0
  209. {ragops-2.2.0 → ragops-2.4.0}/examples/opentelemetry_trace_adapter/README.md +0 -0
  210. {ragops-2.2.0 → ragops-2.4.0}/examples/opentelemetry_trace_adapter/__init__.py +0 -0
  211. {ragops-2.2.0 → ragops-2.4.0}/examples/opentelemetry_trace_adapter/adapter.py +0 -0
  212. {ragops-2.2.0 → ragops-2.4.0}/examples/opentelemetry_trace_adapter/spans.jsonl +0 -0
  213. {ragops-2.2.0 → ragops-2.4.0}/ragops.toml +0 -0
  214. {ragops-2.2.0 → ragops-2.4.0}/scenarios/japanese_troubleshooting/attack-pack.json +0 -0
  215. {ragops-2.2.0 → ragops-2.4.0}/scenarios/japanese_troubleshooting/benchmark-adversarial.json +0 -0
  216. {ragops-2.2.0 → ragops-2.4.0}/scenarios/japanese_troubleshooting/benchmark-baseline.json +0 -0
  217. {ragops-2.2.0 → ragops-2.4.0}/scenarios/japanese_troubleshooting/benchmark-regressed.json +0 -0
  218. {ragops-2.2.0 → ragops-2.4.0}/scenarios/japanese_troubleshooting/benchmark-v0.2.json +0 -0
  219. {ragops-2.2.0 → ragops-2.4.0}/scenarios/japanese_troubleshooting/evaluation-policy.toml +0 -0
  220. {ragops-2.2.0 → ragops-2.4.0}/scenarios/japanese_troubleshooting/external-metric-policy.toml +0 -0
  221. {ragops-2.2.0 → ragops-2.4.0}/scenarios/japanese_troubleshooting/external-metrics-baseline.json +0 -0
  222. {ragops-2.2.0 → ragops-2.4.0}/scenarios/japanese_troubleshooting/external-metrics-candidate.json +0 -0
  223. {ragops-2.2.0 → ragops-2.4.0}/scenarios/japanese_troubleshooting/regressed_responses.json +0 -0
  224. {ragops-2.2.0 → ragops-2.4.0}/scenarios/japanese_troubleshooting/sample_responses.json +0 -0
  225. {ragops-2.2.0 → ragops-2.4.0}/scenarios/japanese_troubleshooting/sample_traces.jsonl +0 -0
  226. {ragops-2.2.0 → ragops-2.4.0}/scenarios/japanese_troubleshooting/scenario.json +0 -0
  227. {ragops-2.2.0 → ragops-2.4.0}/schemas/attack-pack-0.1.schema.json +0 -0
  228. {ragops-2.2.0 → ragops-2.4.0}/schemas/external-metrics-0.1.schema.json +0 -0
  229. {ragops-2.2.0 → ragops-2.4.0}/schemas/pilot-economics-0.1.schema.json +0 -0
  230. {ragops-2.2.0 → ragops-2.4.0}/schemas/pilot-manifest-0.1.schema.json +0 -0
  231. {ragops-2.2.0 → ragops-2.4.0}/schemas/pilot-observation-0.1.schema.json +0 -0
  232. {ragops-2.2.0 → ragops-2.4.0}/schemas/report-0.2.schema.json +0 -0
  233. {ragops-2.2.0 → ragops-2.4.0}/schemas/response-fixture-0.2.schema.json +0 -0
  234. {ragops-2.2.0 → ragops-2.4.0}/schemas/responses-0.1.schema.json +0 -0
  235. {ragops-2.2.0 → ragops-2.4.0}/schemas/scenario-0.1.schema.json +0 -0
  236. {ragops-2.2.0 → ragops-2.4.0}/schemas/scenario-0.2.schema.json +0 -0
  237. {ragops-2.2.0 → ragops-2.4.0}/schemas/trace-0.3.schema.json +0 -0
  238. {ragops-2.2.0 → ragops-2.4.0}/schemas/trace-0.4.schema.json +0 -0
  239. {ragops-2.2.0 → ragops-2.4.0}/site/apple-touch-icon.png +0 -0
  240. {ragops-2.2.0 → ragops-2.4.0}/site/favicon.png +0 -0
  241. {ragops-2.2.0 → ragops-2.4.0}/skills/ragops-feature/SKILL.md +0 -0
  242. {ragops-2.2.0 → ragops-2.4.0}/skills/ragops-presentation/SKILL.md +0 -0
  243. {ragops-2.2.0 → ragops-2.4.0}/skills/ragops-release/SKILL.md +0 -0
  244. {ragops-2.2.0 → ragops-2.4.0}/src/ragops/adapters/__init__.py +0 -0
  245. {ragops-2.2.0 → ragops-2.4.0}/src/ragops/adapters/external_metrics.py +0 -0
  246. {ragops-2.2.0 → ragops-2.4.0}/src/ragops/adapters/http.py +0 -0
  247. {ragops-2.2.0 → ragops-2.4.0}/src/ragops/benchmarks.py +0 -0
  248. {ragops-2.2.0 → ragops-2.4.0}/src/ragops/config.py +0 -0
  249. {ragops-2.2.0 → ragops-2.4.0}/src/ragops/control_plane.py +0 -0
  250. {ragops-2.2.0 → ragops-2.4.0}/src/ragops/demo.py +0 -0
  251. {ragops-2.2.0 → ragops-2.4.0}/src/ragops/engine.py +0 -0
  252. {ragops-2.2.0 → ragops-2.4.0}/src/ragops/evaluators.py +0 -0
  253. {ragops-2.2.0 → ragops-2.4.0}/src/ragops/loader.py +0 -0
  254. {ragops-2.2.0 → ragops-2.4.0}/src/ragops/models.py +0 -0
  255. {ragops-2.2.0 → ragops-2.4.0}/src/ragops/pilot.py +0 -0
  256. {ragops-2.2.0 → ragops-2.4.0}/src/ragops/plugins.py +0 -0
  257. {ragops-2.2.0 → ragops-2.4.0}/src/ragops/providers/__init__.py +0 -0
  258. {ragops-2.2.0 → ragops-2.4.0}/src/ragops/providers/openai_responses.py +0 -0
  259. {ragops-2.2.0 → ragops-2.4.0}/src/ragops/reporters.py +0 -0
  260. {ragops-2.2.0 → ragops-2.4.0}/src/ragops/store.py +0 -0
  261. {ragops-2.2.0 → ragops-2.4.0}/src/ragops/traces.py +0 -0
  262. {ragops-2.2.0 → ragops-2.4.0}/tests/test_answer_length_cli.py +0 -0
  263. {ragops-2.2.0 → ragops-2.4.0}/tests/test_api_contract.py +0 -0
  264. {ragops-2.2.0 → ragops-2.4.0}/tests/test_benchmarks.py +0 -0
  265. {ragops-2.2.0 → ragops-2.4.0}/tests/test_comparison.py +0 -0
  266. {ragops-2.2.0 → ragops-2.4.0}/tests/test_config.py +0 -0
  267. {ragops-2.2.0 → ragops-2.4.0}/tests/test_control_plane.py +0 -0
  268. {ragops-2.2.0 → ragops-2.4.0}/tests/test_demo.py +0 -0
  269. {ragops-2.2.0 → ragops-2.4.0}/tests/test_engine.py +0 -0
  270. {ragops-2.2.0 → ragops-2.4.0}/tests/test_evaluator_depth.py +0 -0
  271. {ragops-2.2.0 → ragops-2.4.0}/tests/test_external_metrics.py +0 -0
  272. {ragops-2.2.0 → ragops-2.4.0}/tests/test_github_workflows.py +0 -0
  273. {ragops-2.2.0 → ragops-2.4.0}/tests/test_http_adapter.py +0 -0
  274. {ragops-2.2.0 → ragops-2.4.0}/tests/test_loader.py +0 -0
  275. {ragops-2.2.0 → ragops-2.4.0}/tests/test_openai_provider.py +0 -0
  276. {ragops-2.2.0 → ragops-2.4.0}/tests/test_opentelemetry_adapter.py +0 -0
  277. {ragops-2.2.0 → ragops-2.4.0}/tests/test_pilot.py +0 -0
  278. {ragops-2.2.0 → ragops-2.4.0}/tests/test_plugins_and_traces.py +0 -0
  279. {ragops-2.2.0 → ragops-2.4.0}/tests/test_pr_comment_publisher.py +0 -0
  280. {ragops-2.2.0 → ragops-2.4.0}/tests/test_reference_agent.py +0 -0
  281. {ragops-2.2.0 → ragops-2.4.0}/tests/test_reference_benchmark.py +0 -0
  282. {ragops-2.2.0 → ragops-2.4.0}/tests/test_release_version.py +0 -0
  283. {ragops-2.2.0 → ragops-2.4.0}/tests/test_response_fixtures.py +0 -0
  284. {ragops-2.2.0 → ragops-2.4.0}/tests/test_scenario_v02_and_attacks.py +0 -0
  285. {ragops-2.2.0 → ragops-2.4.0}/tests/test_schema_files.py +0 -0
  286. {ragops-2.2.0 → ragops-2.4.0}/tests/test_store_and_html.py +0 -0
  287. {ragops-2.2.0 → ragops-2.4.0}/tests/test_team_workflow.py +0 -0
  288. {ragops-2.2.0 → ragops-2.4.0}/tests/test_workbench.py +0 -0
@@ -10,7 +10,7 @@ body:
10
10
  id: version
11
11
  attributes:
12
12
  label: RAGOps version or commit
13
- placeholder: v2.1.0 or commit SHA
13
+ placeholder: v2.4.0 or commit SHA
14
14
  validations:
15
15
  required: true
16
16
  - type: textarea
@@ -12,7 +12,7 @@ on:
12
12
  description: RAGOps Git revision or tag to install
13
13
  required: false
14
14
  type: string
15
- default: "v2.1.0"
15
+ default: "v2.4.0"
16
16
  scenario:
17
17
  description: Caller-relative scenario JSON path
18
18
  required: true
@@ -4,6 +4,33 @@ All notable changes follow Keep a Changelog. This project uses Semantic Versioni
4
4
 
5
5
  ## [Unreleased]
6
6
 
7
+ ## [2.4.0] - 2026-07-13
8
+
9
+ ### Changed
10
+
11
+ - Reframed the public adoption experience around the five-minute path from
12
+ installation to an explainable PASS/BLOCK release decision.
13
+ - Rebuilt the showcase hero as a responsive, interactive developer proof with
14
+ copyable commands and recorded portable evidence.
15
+ - Rewrote getting-started, demo, portfolio, presentation, video, CV/LinkedIn,
16
+ and GitHub launch materials with one evidence-safe product narrative.
17
+ - Replaced the primary README visual with a screenshot captured from the real
18
+ implementation and refreshed design-QA evidence.
19
+
20
+ ## [2.3.0] - 2026-07-13
21
+
22
+ ### Added
23
+
24
+ - `ragops --version` for installed-package and support diagnostics.
25
+ - Clean-wheel installation smoke testing in the local release verification lane.
26
+
27
+ ### Changed
28
+
29
+ - Local artifact checksum verification is dependency-free and portable across
30
+ supported operating systems.
31
+ - Public documentation, roadmap, release evidence, and integration examples now
32
+ identify the current stable release consistently.
33
+
7
34
  ## [2.2.0] - 2026-07-13
8
35
 
9
36
  ### Added
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: ragops
3
- Version: 2.2.0
3
+ Version: 2.4.0
4
4
  Summary: Evaluation and red-team release gates for RAG and agent systems
5
5
  Project-URL: Homepage, https://github.com/thangldw/ragops
6
6
  Project-URL: Documentation, https://github.com/thangldw/ragops#readme
@@ -31,7 +31,7 @@ Description-Content-Type: text/markdown
31
31
 
32
32
  # RAGOps
33
33
 
34
- **Evaluation and red-team release gates for RAG and agent systems.**
34
+ **From install to an explainable RAG release decision in five minutes.**
35
35
 
36
36
  [![CI](https://github.com/thangldw/ragops/actions/workflows/ci.yml/badge.svg)](https://github.com/thangldw/ragops/actions/workflows/ci.yml)
37
37
  [![PyPI](https://img.shields.io/pypi/v/ragops.svg)](https://pypi.org/project/ragops/)
@@ -45,7 +45,7 @@ optional.
45
45
 
46
46
  <p align="center">
47
47
  <a href="https://thangldw.github.io/ragops/">
48
- <img src="docs/demo/screenshots/ragops-release-screen.jpg" alt="RAGOps product screen showing a recorded blocked regression and local release evidence" width="100%">
48
+ <img src="docs/demo/screenshots/ragops-adoption-hero.png" alt="RAGOps five-minute proof showing terminal commands, a passing baseline, and a blocked candidate with portable release evidence" width="100%">
49
49
  </a>
50
50
  </p>
51
51
 
@@ -57,6 +57,16 @@ optional.
57
57
  <a href="docs/evaluation/benchmark-report-v0.2.md"><strong>Benchmark evidence</strong></a>
58
58
  </p>
59
59
 
60
+ ## The release question RAGOps answers
61
+
62
+ Your RAG or agent already runs. A prompt, retriever, embedding model, dataset,
63
+ or evaluator changes. **Is the candidate still good enough to release?**
64
+
65
+ RAGOps compares the candidate with an accepted baseline, applies versioned
66
+ quality and operational policy, and returns `PASS` or `BLOCK` with evidence.
67
+ It evaluates your system; it does not replace LangChain, LlamaIndex, your model,
68
+ or your retrieval stack.
69
+
60
70
  ## What RAGOps does
61
71
 
62
72
  - Evaluates citations, groundedness, retrieval, latency, cost, and custom metrics.
@@ -80,21 +90,12 @@ returns a decision with named reasons rather than an isolated dashboard score.
80
90
 
81
91
  ## Five-minute proof
82
92
 
83
- Clone the repository and generate a complete, credential-free release bundle:
93
+ Install the stable CLI and generate a complete credential-free release bundle:
84
94
 
85
95
  ```bash
86
- git clone https://github.com/thangldw/ragops.git
87
- cd ragops
88
96
  python -m venv .venv
89
97
  source .venv/bin/activate
90
- pip install -e .
91
- ragops demo --output ragops-demo
92
- ```
93
-
94
- For the latest published stable CLI without cloning the repository:
95
-
96
- ```bash
97
- pip install ragops==2.1.0
98
+ pip install ragops==2.4.0
98
99
  ragops demo --output ragops-demo
99
100
  ```
100
101
 
@@ -135,8 +136,8 @@ injection, abstention, and consequential actions. These synthetic results
135
136
  validate the harness and architecture comparison; they do not establish
136
137
  Japanese semantic quality, customer adoption, or production ROI.
137
138
 
138
- The repository currently validates its core, adapters, reference deployment,
139
- showcase, and demo paths with 138 automated tests.
139
+ The v2.4.0 release validation passed 144 automated tests. This is repository
140
+ quality evidence, not a customer-adoption or production-security claim.
140
141
 
141
142
  <p align="center">
142
143
  <img src="docs/demo/infographics/evidence-stack.svg" alt="RAGOps evidence stack combining quality, safety, operational budgets, and regression comparison into a release decision" width="100%">
@@ -149,7 +150,7 @@ showcase, and demo paths with 138 automated tests.
149
150
  | <img src="docs/demo/screenshots/ragops-release-screen.jpg" alt="RAGOps desktop release-decision screen" width="640"> | <img src="docs/demo/screenshots/ragops-limitations-screen.jpg" alt="RAGOps known-limitations and rollout-recommendation screen" width="640"> |
150
151
 
151
152
  <p align="center">
152
- <img src="docs/demo/screenshots/ragops-mobile-screen.jpg" alt="RAGOps responsive mobile product screen" width="320">
153
+ <img src="docs/demo/screenshots/ragops-adoption-mobile.png" alt="RAGOps responsive mobile five-minute proof with copyable commands" width="320">
153
154
  </p>
154
155
 
155
156
  The screens show the public reference experience and recorded synthetic
@@ -1,6 +1,6 @@
1
1
  # RAGOps
2
2
 
3
- **Evaluation and red-team release gates for RAG and agent systems.**
3
+ **From install to an explainable RAG release decision in five minutes.**
4
4
 
5
5
  [![CI](https://github.com/thangldw/ragops/actions/workflows/ci.yml/badge.svg)](https://github.com/thangldw/ragops/actions/workflows/ci.yml)
6
6
  [![PyPI](https://img.shields.io/pypi/v/ragops.svg)](https://pypi.org/project/ragops/)
@@ -14,7 +14,7 @@ optional.
14
14
 
15
15
  <p align="center">
16
16
  <a href="https://thangldw.github.io/ragops/">
17
- <img src="docs/demo/screenshots/ragops-release-screen.jpg" alt="RAGOps product screen showing a recorded blocked regression and local release evidence" width="100%">
17
+ <img src="docs/demo/screenshots/ragops-adoption-hero.png" alt="RAGOps five-minute proof showing terminal commands, a passing baseline, and a blocked candidate with portable release evidence" width="100%">
18
18
  </a>
19
19
  </p>
20
20
 
@@ -26,6 +26,16 @@ optional.
26
26
  <a href="docs/evaluation/benchmark-report-v0.2.md"><strong>Benchmark evidence</strong></a>
27
27
  </p>
28
28
 
29
+ ## The release question RAGOps answers
30
+
31
+ Your RAG or agent already runs. A prompt, retriever, embedding model, dataset,
32
+ or evaluator changes. **Is the candidate still good enough to release?**
33
+
34
+ RAGOps compares the candidate with an accepted baseline, applies versioned
35
+ quality and operational policy, and returns `PASS` or `BLOCK` with evidence.
36
+ It evaluates your system; it does not replace LangChain, LlamaIndex, your model,
37
+ or your retrieval stack.
38
+
29
39
  ## What RAGOps does
30
40
 
31
41
  - Evaluates citations, groundedness, retrieval, latency, cost, and custom metrics.
@@ -49,21 +59,12 @@ returns a decision with named reasons rather than an isolated dashboard score.
49
59
 
50
60
  ## Five-minute proof
51
61
 
52
- Clone the repository and generate a complete, credential-free release bundle:
62
+ Install the stable CLI and generate a complete credential-free release bundle:
53
63
 
54
64
  ```bash
55
- git clone https://github.com/thangldw/ragops.git
56
- cd ragops
57
65
  python -m venv .venv
58
66
  source .venv/bin/activate
59
- pip install -e .
60
- ragops demo --output ragops-demo
61
- ```
62
-
63
- For the latest published stable CLI without cloning the repository:
64
-
65
- ```bash
66
- pip install ragops==2.1.0
67
+ pip install ragops==2.4.0
67
68
  ragops demo --output ragops-demo
68
69
  ```
69
70
 
@@ -104,8 +105,8 @@ injection, abstention, and consequential actions. These synthetic results
104
105
  validate the harness and architecture comparison; they do not establish
105
106
  Japanese semantic quality, customer adoption, or production ROI.
106
107
 
107
- The repository currently validates its core, adapters, reference deployment,
108
- showcase, and demo paths with 138 automated tests.
108
+ The v2.4.0 release validation passed 144 automated tests. This is repository
109
+ quality evidence, not a customer-adoption or production-security claim.
109
110
 
110
111
  <p align="center">
111
112
  <img src="docs/demo/infographics/evidence-stack.svg" alt="RAGOps evidence stack combining quality, safety, operational budgets, and regression comparison into a release decision" width="100%">
@@ -118,7 +119,7 @@ showcase, and demo paths with 138 automated tests.
118
119
  | <img src="docs/demo/screenshots/ragops-release-screen.jpg" alt="RAGOps desktop release-decision screen" width="640"> | <img src="docs/demo/screenshots/ragops-limitations-screen.jpg" alt="RAGOps known-limitations and rollout-recommendation screen" width="640"> |
119
120
 
120
121
  <p align="center">
121
- <img src="docs/demo/screenshots/ragops-mobile-screen.jpg" alt="RAGOps responsive mobile product screen" width="320">
122
+ <img src="docs/demo/screenshots/ragops-adoption-mobile.png" alt="RAGOps responsive mobile five-minute proof with copyable commands" width="320">
122
123
  </p>
123
124
 
124
125
  The screens show the public reference experience and recorded synthetic
@@ -0,0 +1,56 @@
1
+ # Adoption refresh design QA
2
+
3
+ - Source visual truth: `docs/design-audit/adoption-refresh/source-option-3.png`
4
+ - Desktop implementation: `docs/design-audit/adoption-refresh/implementation-desktop.png`
5
+ - Mobile implementation: `docs/design-audit/adoption-refresh/implementation-mobile.png`
6
+ - Full-view comparison: `docs/design-audit/adoption-refresh/comparison-desktop.png`
7
+ - Desktop viewport/state: 1440×1024, initial hero
8
+ - Mobile viewport/state: 390×844, initial hero
9
+
10
+ ## Findings
11
+
12
+ No actionable P0, P1, or P2 differences remain.
13
+
14
+ - Fonts and typography: implementation preserves the target's editorial sans +
15
+ monospace pairing, large three-line headline, blue emphasis, and readable code.
16
+ - Spacing and layout rhythm: two-column desktop proportions, left proof sequence,
17
+ right release report, CTA row, and evidence strip match the target hierarchy.
18
+ - Colors and tokens: graphite background, restrained blue, mint PASS, and warm
19
+ red BLOCK remain semantic and high contrast.
20
+ - Image quality and asset fidelity: the selected raster mock is retained only as
21
+ design truth; public screenshots are browser captures from the real HTML/CSS.
22
+ No visual asset was replaced with placeholder or improvised icon art.
23
+ - Copy and content: version is intentionally updated from the selected v2.3.0
24
+ concept to the v2.4.0 release candidate. Metrics are recorded repository
25
+ evidence and limitations remain explicit.
26
+
27
+ ## Primary interactions tested
28
+
29
+ - Copy-command primary CTA resolves uniquely and executes.
30
+ - Navigation and GitHub links are real anchors.
31
+ - Desktop and 390px mobile layouts have no horizontal overflow.
32
+ - Browser console contained no errors during the desktop interaction test.
33
+
34
+ ## Focused-region evidence
35
+
36
+ The full-view comparison keeps headline, proof terminal, PASS/BLOCK panels,
37
+ reason deltas, and CTA text legible at the same desktop viewport, so a separate
38
+ crop was not required. The mobile capture separately verifies text wrapping,
39
+ command readability, button width, and responsive navigation behavior.
40
+
41
+ ## Comparison history
42
+
43
+ 1. Initial desktop capture matched the selected information hierarchy but used
44
+ v2.3.0 evidence.
45
+ 2. Documentation and implementation were aligned to the v2.4.0 release
46
+ candidate, then desktop and mobile screenshots were recaptured.
47
+ 3. Final comparison found only intentional content simplification: the
48
+ implementation uses three named regressions rather than invented aggregate
49
+ scores from the mock.
50
+
51
+ ## Follow-up polish
52
+
53
+ - P3: after observed traffic exists, test whether “copy commands” or “view live
54
+ report” produces higher five-minute-demo activation.
55
+
56
+ final result: passed
@@ -0,0 +1,17 @@
1
+ # ADR 0020: Verify local release integrity before publication
2
+
3
+ Status: Accepted for owner review
4
+
5
+ ## Decision
6
+
7
+ The quota-independent release lane must install its newly built wheel in a fresh
8
+ virtual environment before publication. SHA-256 verification is implemented in
9
+ dependency-free Python rather than delegating to platform-specific `shasum` or
10
+ `sha256sum` commands. The installed CLI exposes its package version.
11
+
12
+ ## Consequences
13
+
14
+ Local releases catch missing-package and metadata errors before tags are pushed,
15
+ and PyPI promotion works consistently on macOS, Linux, and Windows. Verification
16
+ takes slightly longer because it creates an isolated environment. This does not
17
+ replace the supported-Python matrix when GitHub Actions capacity returns.
@@ -15,15 +15,16 @@ not customer production adoption.
15
15
  candidate with 25-point citation coverage/precision regressions. The fixture
16
16
  validates harness behavior, not Japanese semantic quality.
17
17
  - Published architecture decisions, threat model, rollout plan, executive
18
- go/no-go recommendation, reproducible reports, and 138 automated tests.
18
+ go/no-go recommendation, reproducible reports, and a v2.4.0 release validated
19
+ by 144 automated tests.
19
20
 
20
21
  ## LinkedIn project description
21
22
 
22
- RAGOps demonstrates my Forward Deployed Engineering approach: start with a
23
- synthetic Japanese-question workflow fixture, define measurable release
24
- criteria, build a production-shaped reference system, test regressions and
25
- safety, and make an honest rollout decision. The repository and case study are
26
- public; the fixture is not evidence of Japanese semantic quality.
23
+ RAGOps is the provider-independent evidence layer between an AI change and a
24
+ release decision. It evaluates recorded RAG/agent output, applies versioned
25
+ quality and operational policy, and produces an explainable PASS or BLOCK report
26
+ locally. The public synthetic fixture validates the harness—not customer
27
+ adoption, production security, or Japanese semantic quality.
27
28
 
28
29
  Repository: https://github.com/thangldw/ragops
29
30
  Case study: https://thangldw.github.io/projects/ragops/
@@ -0,0 +1,45 @@
1
+ # RAGOps portfolio case study
2
+
3
+ ## From AI change to defensible release decision
4
+
5
+ RAG and agent teams can ship a prompt, retriever, embedding, or dataset change
6
+ quickly. The harder problem is deciding whether the candidate is still good
7
+ enough to release. Quality scores, operational budgets, citations, and review
8
+ notes often live in separate tools with no accepted baseline.
9
+
10
+ I built RAGOps as the provider-independent evidence layer between an AI change
11
+ and a release. It consumes recorded responses, portable traces, and optional
12
+ external evaluator metrics; applies versioned absolute and regression policy;
13
+ then emits an explainable `PASS` or `BLOCK` decision in JSON, Markdown, or HTML.
14
+
15
+ ## Five-minute proof
16
+
17
+ ```bash
18
+ pip install ragops==2.4.0
19
+ ragops demo --output ragops-demo
20
+ ```
21
+
22
+ The generated report shows an accepted baseline passing and an intentionally
23
+ regressed candidate blocked with named reasons. No model API is required.
24
+
25
+ ## Evidence
26
+
27
+ - Dependency-free Python 3.11+ evaluation core.
28
+ - 30-case synthetic release-gate fixture across nine failure families.
29
+ - Graph+ACL reference agent whose lexical-only candidate records 25-point
30
+ citation coverage and precision regressions.
31
+ - Portable Ragas, DeepEval, Langfuse, and internal-judge metric envelope.
32
+ - Build-once GitHub/PyPI releases with byte-identical artifacts, SBOM, and
33
+ checksums; v2.4.0 release validation passed 144 tests.
34
+
35
+ ## Product boundary
36
+
37
+ RAGOps evaluates an existing RAG or agent. It does not replace orchestration,
38
+ retrieval, generation, model observability, or human review. Synthetic evidence
39
+ validates the harness, not semantic correctness, production security, customer
40
+ adoption, or ROI.
41
+
42
+ ## Current recommendation
43
+
44
+ Use v2.4.0 for offline evaluation and customer discovery. Convert real failures
45
+ into reviewed regression fixtures before expanding into hosted collaboration.
@@ -0,0 +1,35 @@
1
+ # Ten-minute presentation outline
2
+
3
+ ## 1. Release question — 60 seconds
4
+
5
+ “We changed the RAG system. Is the candidate still good enough to release?”
6
+ Show why isolated scores and manual review do not create a defensible baseline.
7
+
8
+ ## 2. Product thesis — 60 seconds
9
+
10
+ RAGOps is a provider-independent release-policy and evidence layer for existing
11
+ RAG and agents—not another orchestration framework.
12
+
13
+ ## 3. Five-minute path — 90 seconds
14
+
15
+ Show install → demo → PASS baseline → BLOCK candidate → portable report.
16
+
17
+ ## 4. Live evidence — 180 seconds
18
+
19
+ Run `ragops demo`, open the HTML report, and trace one aggregate regression to
20
+ its case, citations, metric delta, and versioned policy rule.
21
+
22
+ ## 5. Extensibility — 90 seconds
23
+
24
+ Map portable responses/traces and Ragas, DeepEval, Langfuse, or internal scores
25
+ into the same gate. Keep provider semantics outside the dependency-free core.
26
+
27
+ ## 6. Trust boundary — 90 seconds
28
+
29
+ Separate recorded synthetic evidence from production claims. Explain local-first
30
+ execution, exact artifact promotion, known limits, and why hosted 3.0 requires
31
+ real customer demand and operations.
32
+
33
+ ## 7. Close — 30 seconds
34
+
35
+ “Evaluate with evidence. Release with a reason.”
@@ -0,0 +1,30 @@
1
+ # 60-second adoption video script
2
+
3
+ ## 0:00–0:10 — The change
4
+
5
+ Show a prompt/retriever/model change and ask: “Is this candidate still safe
6
+ enough and useful enough to release?”
7
+
8
+ ## 0:10–0:22 — Install and run
9
+
10
+ ```text
11
+ pip install ragops==2.4.0
12
+ ragops demo --output ragops-demo
13
+ ```
14
+
15
+ Say: “No model API. No hosted dependency. Five minutes to reviewable evidence.”
16
+
17
+ ## 0:22–0:38 — Decision
18
+
19
+ Open the report. Baseline is `PASS`; candidate is `BLOCK`. Highlight named
20
+ citation, groundedness, latency, or cost gates rather than an opaque score.
21
+
22
+ ## 0:38–0:50 — Fit your stack
23
+
24
+ Show portable responses/traces and optional metrics from Ragas, DeepEval,
25
+ Langfuse, or an internal judge entering the same versioned policy.
26
+
27
+ ## 0:50–1:00 — Honest close
28
+
29
+ “RAGOps evaluates the system you already have. Synthetic fixtures validate the
30
+ harness; your reviewed production evidence decides what ships.”
@@ -0,0 +1,46 @@
1
+ # Five-minute demo walkthrough
2
+
3
+ Audience: an engineer who already operates a RAG or agent system and needs a
4
+ repeatable release decision.
5
+
6
+ ## Minute 0–1: state the release question
7
+
8
+ “The system already works. We changed a prompt, retriever, embedding model, or
9
+ dataset. Is the candidate still good enough to release?”
10
+
11
+ RAGOps sits outside the application. It consumes recorded evidence and applies
12
+ the same versioned policy to baseline and candidate.
13
+
14
+ ## Minute 1–2: run the proof
15
+
16
+ ```bash
17
+ pip install ragops==2.4.0
18
+ ragops demo --output ragops-demo
19
+ ```
20
+
21
+ Explain that process success and release decision are separate: the command
22
+ returns successfully because it reproduced the expected blocked regression.
23
+
24
+ ## Minute 2–3: inspect PASS and BLOCK
25
+
26
+ Open `ragops-demo/release-report.html`.
27
+
28
+ - Baseline: `PASS`, because it satisfies the frozen scenario and thresholds.
29
+ - Candidate: `BLOCK`, with named metric and case-level reasons.
30
+ - Evidence: portable JSON, Markdown, HTML, scenario, baseline, and candidate.
31
+
32
+ ## Minute 3–4: trace one failure
33
+
34
+ Follow one aggregate regression to its case, answer, citations, metric delta,
35
+ and policy rule. Emphasize evidence lineage rather than a single dashboard score.
36
+
37
+ ## Minute 4–5: map to the adopter's stack
38
+
39
+ Replace the demo responses with recorded application output or JSONL traces.
40
+ Keep model, retriever, and orchestration choices outside RAGOps. Import optional
41
+ Ragas, DeepEval, Langfuse, or internal-judge metrics through the portable metric
42
+ envelope when those tools already exist.
43
+
44
+ Close honestly: lexical groundedness is not semantic entailment, synthetic
45
+ fixtures are not customer evidence, and the local control plane is not hosted
46
+ production infrastructure.
@@ -0,0 +1,4 @@
1
+ <!doctype html>
2
+ <html lang="en"><head><meta charset="utf-8"><title>RAGOps adoption refresh QA</title>
3
+ <style>body{margin:0;background:#05070b;color:#fff;font:14px system-ui}.grid{display:grid;grid-template-columns:1fr 1fr;gap:12px;padding:12px}.panel{min-width:0}.label{padding:8px 0;color:#9ba8bb}img{display:block;width:100%;height:auto;border:1px solid #28354a}</style></head>
4
+ <body><div class="grid"><div class="panel"><div class="label">Selected visual target</div><img src="source-option-3.png" alt="Selected option 3"></div><div class="panel"><div class="label">Rendered implementation</div><img src="implementation-desktop.png" alt="Rendered implementation"></div></div></body></html>
@@ -0,0 +1,20 @@
1
+ # v2.3 workbench product-flow audit
2
+
3
+ ## Flow
4
+
5
+ 1. **Evaluation input — healthy.** API key is explicitly tab-local; scenario and
6
+ response fixtures are prefilled and labeled.
7
+ 2. **Release decision — healthy empty state.** Before evaluation the UI says
8
+ “Waiting for a run” and “Not evaluated”; it does not display stale PASS data.
9
+ 3. **Experiment history — healthy with setup guidance.** The run limit is labeled
10
+ and the page explains the `RAGOPS_STORE` requirement.
11
+
12
+ ## Highest-impact follow-up
13
+
14
+ No release-blocking redesign is justified. A future usability study should test
15
+ whether adopters prefer file upload over large JSON textareas; screenshots alone
16
+ cannot establish this. Keyboard behavior, screen-reader announcements, focus
17
+ movement after evaluation, and color contrast require dedicated accessibility
18
+ testing and are not claimed here.
19
+
20
+ ![Workbench desktop](01-workbench-desktop.png)
@@ -22,7 +22,7 @@ jobs:
22
22
  release-gate:
23
23
  uses: thangldw/ragops/.github/workflows/ragops-gate.yml@main
24
24
  with:
25
- ragops-version: v2.1.0
25
+ ragops-version: v2.4.0
26
26
  scenario: evals/scenario.json
27
27
  baseline: evals/baseline.json
28
28
  candidate: evals/candidate.json
@@ -19,7 +19,7 @@ Set these repository-relative variables:
19
19
 
20
20
  ```yaml
21
21
  variables:
22
- RAGOPS_VERSION: "2.1.0"
22
+ RAGOPS_VERSION: "2.4.0"
23
23
  RAGOPS_SCENARIO: "evaluation/scenario.json"
24
24
  RAGOPS_BASELINE: "evaluation/baseline.json"
25
25
  RAGOPS_CANDIDATE: "evaluation/candidate.json"
@@ -9,10 +9,10 @@ PyPI API token and publishes only an existing tag whose `vX.Y.Z` value matches
9
9
 
10
10
  - Project: [ragops on PyPI](https://pypi.org/project/ragops/)
11
11
  - First Trusted Publishing release: `1.6.0`
12
- - Current verified release: `2.1.0`
12
+ - Current verified release: `2.3.0`
13
13
  - GitHub environment: `pypi`
14
14
  - Publisher: `thangldw/ragops`, workflow `publish-pypi.yml`
15
- - Verification: 2.1.0 wheel and sdist present; clean install and
15
+ - Verification: 2.3.0 wheel and sdist present; clean install and
16
16
  credential-free proposal-review demo pass
17
17
 
18
18
  ## One-time owner setup
@@ -32,7 +32,7 @@ GitHub's current OIDC guidance is linked from the
32
32
  ## Publish an accepted tag
33
33
 
34
34
  1. Open **Actions → Publish package to PyPI → Run workflow**.
35
- 2. Enter an existing tag such as `v2.1.0`.
35
+ 2. Enter an existing tag such as `v2.3.0`.
36
36
  3. Approve the `pypi` environment when protection rules require it.
37
37
  4. After success, install in a clean environment and compare the installed
38
38
  version and wheel hash with the GitHub Release asset.
@@ -2,7 +2,7 @@ ragops_release_gate:
2
2
  stage: test
3
3
  image: python:3.12-slim
4
4
  variables:
5
- RAGOPS_VERSION: "2.1.0"
5
+ RAGOPS_VERSION: "2.4.0"
6
6
  RAGOPS_SCENARIO: "scenarios/japanese_troubleshooting/benchmark-v0.2.json"
7
7
  RAGOPS_BASELINE: "scenarios/japanese_troubleshooting/benchmark-baseline.json"
8
8
  RAGOPS_CANDIDATE: "scenarios/japanese_troubleshooting/benchmark-regressed.json"