ragops 2.3.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.3.0 → ragops-2.4.0}/.github/ISSUE_TEMPLATE/bug.yml +1 -1
  2. {ragops-2.3.0 → ragops-2.4.0}/.github/workflows/ragops-gate.yml +1 -1
  3. {ragops-2.3.0 → ragops-2.4.0}/CHANGELOG.md +13 -0
  4. {ragops-2.3.0 → ragops-2.4.0}/PKG-INFO +18 -17
  5. {ragops-2.3.0 → ragops-2.4.0}/README.md +17 -16
  6. ragops-2.4.0/design-qa.md +56 -0
  7. {ragops-2.3.0 → ragops-2.4.0}/docs/demo/cv-linkedin-copy.md +7 -6
  8. ragops-2.4.0/docs/demo/portfolio-case-study.md +45 -0
  9. ragops-2.4.0/docs/demo/presentation-outline.md +35 -0
  10. ragops-2.4.0/docs/demo/screenshots/ragops-adoption-hero.png +0 -0
  11. ragops-2.4.0/docs/demo/screenshots/ragops-adoption-mobile.png +0 -0
  12. ragops-2.4.0/docs/demo/video-script.md +30 -0
  13. ragops-2.4.0/docs/demo/walkthrough.md +46 -0
  14. ragops-2.4.0/docs/design-audit/adoption-refresh/compare.html +4 -0
  15. ragops-2.4.0/docs/design-audit/adoption-refresh/comparison-desktop.png +0 -0
  16. ragops-2.4.0/docs/design-audit/adoption-refresh/implementation-desktop.png +0 -0
  17. ragops-2.4.0/docs/design-audit/adoption-refresh/implementation-mobile.png +0 -0
  18. ragops-2.4.0/docs/design-audit/adoption-refresh/source-option-3.png +0 -0
  19. {ragops-2.3.0 → ragops-2.4.0}/docs/engineering/github-pr-gate.md +1 -1
  20. {ragops-2.3.0 → ragops-2.4.0}/docs/engineering/gitlab-ci-gate.md +1 -1
  21. {ragops-2.3.0 → ragops-2.4.0}/docs/engineering/pypi-publishing.md +3 -3
  22. {ragops-2.3.0 → ragops-2.4.0}/docs/examples/gitlab-ci-ragops.yml +1 -1
  23. ragops-2.4.0/docs/getting-started.md +93 -0
  24. {ragops-2.3.0 → ragops-2.4.0}/docs/gtm/github-launch-checklist.md +3 -4
  25. ragops-2.4.0/docs/product/requirements-v2.4.md +26 -0
  26. {ragops-2.3.0 → ragops-2.4.0}/docs/product/roadmap.md +7 -0
  27. {ragops-2.3.0 → ragops-2.4.0}/docs/project/program-completion-audit.md +16 -1
  28. {ragops-2.3.0 → ragops-2.4.0}/docs/project/v2.3-acceptance.md +9 -7
  29. ragops-2.4.0/docs/project/v2.4-acceptance.md +30 -0
  30. ragops-2.4.0/docs/releases/v2.4.0.md +24 -0
  31. {ragops-2.3.0 → ragops-2.4.0}/pyproject.toml +1 -1
  32. {ragops-2.3.0 → ragops-2.4.0}/site/index.html +47 -22
  33. ragops-2.4.0/site/styles.css +177 -0
  34. {ragops-2.3.0 → ragops-2.4.0}/src/ragops/__init__.py +1 -1
  35. {ragops-2.3.0 → ragops-2.4.0}/tests/test_adoption_recipes.py +1 -1
  36. {ragops-2.3.0 → ragops-2.4.0}/tests/test_public_api.py +1 -1
  37. {ragops-2.3.0 → ragops-2.4.0}/tests/test_readme_visuals.py +2 -1
  38. {ragops-2.3.0 → ragops-2.4.0}/tests/test_showcase_site.py +3 -1
  39. ragops-2.3.0/design-qa.md +0 -74
  40. ragops-2.3.0/docs/demo/portfolio-case-study.md +0 -28
  41. ragops-2.3.0/docs/demo/presentation-outline.md +0 -36
  42. ragops-2.3.0/docs/demo/video-script.md +0 -32
  43. ragops-2.3.0/docs/demo/walkthrough.md +0 -45
  44. ragops-2.3.0/docs/getting-started.md +0 -89
  45. ragops-2.3.0/site/styles.css +0 -1
  46. {ragops-2.3.0 → ragops-2.4.0}/.dockerignore +0 -0
  47. {ragops-2.3.0 → ragops-2.4.0}/.github/ISSUE_TEMPLATE/config.yml +0 -0
  48. {ragops-2.3.0 → ragops-2.4.0}/.github/ISSUE_TEMPLATE/design-partner.yml +0 -0
  49. {ragops-2.3.0 → ragops-2.4.0}/.github/ISSUE_TEMPLATE/evaluator.yml +0 -0
  50. {ragops-2.3.0 → ragops-2.4.0}/.github/ISSUE_TEMPLATE/feature.yml +0 -0
  51. {ragops-2.3.0 → ragops-2.4.0}/.github/pull_request_template.md +0 -0
  52. {ragops-2.3.0 → ragops-2.4.0}/.github/workflows/ci.yml +0 -0
  53. {ragops-2.3.0 → ragops-2.4.0}/.github/workflows/nightly.yml +0 -0
  54. {ragops-2.3.0 → ragops-2.4.0}/.github/workflows/pages.yml +0 -0
  55. {ragops-2.3.0 → ragops-2.4.0}/.github/workflows/publish-pypi.yml +0 -0
  56. {ragops-2.3.0 → ragops-2.4.0}/.github/workflows/ragops-gate-smoke.yml +0 -0
  57. {ragops-2.3.0 → ragops-2.4.0}/.github/workflows/ragops-pr-comment.yml +0 -0
  58. {ragops-2.3.0 → ragops-2.4.0}/.github/workflows/release.yml +0 -0
  59. {ragops-2.3.0 → ragops-2.4.0}/.gitignore +0 -0
  60. {ragops-2.3.0 → ragops-2.4.0}/AGENTS.md +0 -0
  61. {ragops-2.3.0 → ragops-2.4.0}/CODE_OF_CONDUCT.md +0 -0
  62. {ragops-2.3.0 → ragops-2.4.0}/CONTRIBUTING.md +0 -0
  63. {ragops-2.3.0 → ragops-2.4.0}/Dockerfile +0 -0
  64. {ragops-2.3.0 → ragops-2.4.0}/LICENSE +0 -0
  65. {ragops-2.3.0 → ragops-2.4.0}/NEXT_SESSION.md +0 -0
  66. {ragops-2.3.0 → ragops-2.4.0}/SECURITY.md +0 -0
  67. {ragops-2.3.0 → ragops-2.4.0}/SUPPORT.md +0 -0
  68. {ragops-2.3.0 → ragops-2.4.0}/apps/__init__.py +0 -0
  69. {ragops-2.3.0 → ragops-2.4.0}/apps/api/__init__.py +0 -0
  70. {ragops-2.3.0 → ragops-2.4.0}/apps/api/main.py +0 -0
  71. {ragops-2.3.0 → ragops-2.4.0}/apps/github_pr_comment.py +0 -0
  72. {ragops-2.3.0 → ragops-2.4.0}/apps/web/index.html +0 -0
  73. {ragops-2.3.0 → ragops-2.4.0}/compose.yaml +0 -0
  74. {ragops-2.3.0 → ragops-2.4.0}/docs/architecture/adr/0001-local-first-core.md +0 -0
  75. {ragops-2.3.0 → ragops-2.4.0}/docs/architecture/adr/0002-baseline-regression-gates.md +0 -0
  76. {ragops-2.3.0 → ragops-2.4.0}/docs/architecture/adr/0003-reference-app-outside-core.md +0 -0
  77. {ragops-2.3.0 → ragops-2.4.0}/docs/architecture/adr/0004-open-core-boundary.md +0 -0
  78. {ragops-2.3.0 → ragops-2.4.0}/docs/architecture/adr/0005-scenario-0.2-metadata-and-citation-precision.md +0 -0
  79. {ragops-2.3.0 → ragops-2.4.0}/docs/architecture/adr/0006-response-fixture-overlays.md +0 -0
  80. {ragops-2.3.0 → ragops-2.4.0}/docs/architecture/adr/0007-offline-reference-graphrag-agent.md +0 -0
  81. {ragops-2.3.0 → ragops-2.4.0}/docs/architecture/adr/0008-local-team-review-workflow.md +0 -0
  82. {ragops-2.3.0 → ragops-2.4.0}/docs/architecture/adr/0009-adopt-mit-license.md +0 -0
  83. {ragops-2.3.0 → ragops-2.4.0}/docs/architecture/adr/0010-repair-trace-04-schema-json.md +0 -0
  84. {ragops-2.3.0 → ragops-2.4.0}/docs/architecture/adr/0011-reusable-pr-gate-is-an-adapter.md +0 -0
  85. {ragops-2.3.0 → ragops-2.4.0}/docs/architecture/adr/0012-opentelemetry-export-is-an-example-adapter.md +0 -0
  86. {ragops-2.3.0 → ragops-2.4.0}/docs/architecture/adr/0013-additive-demo-catalog-and-codepoint-budget.md +0 -0
  87. {ragops-2.3.0 → ragops-2.4.0}/docs/architecture/adr/0014-separate-pr-evaluation-from-comment-publication.md +0 -0
  88. {ragops-2.3.0 → ragops-2.4.0}/docs/architecture/adr/0015-portable-design-partner-measurement.md +0 -0
  89. {ragops-2.3.0 → ragops-2.4.0}/docs/architecture/adr/0016-first-class-evaluator-gates.md +0 -0
  90. {ragops-2.3.0 → ragops-2.4.0}/docs/architecture/adr/0017-api-authentication-and-input-bounds.md +0 -0
  91. {ragops-2.3.0 → ragops-2.4.0}/docs/architecture/adr/0018-portable-external-metric-envelope.md +0 -0
  92. {ragops-2.3.0 → ragops-2.4.0}/docs/architecture/adr/0019-local-release-fallback.md +0 -0
  93. {ragops-2.3.0 → ragops-2.4.0}/docs/architecture/adr/0020-local-release-integrity.md +0 -0
  94. {ragops-2.3.0 → ragops-2.4.0}/docs/architecture/component-diagram.md +0 -0
  95. {ragops-2.3.0 → ragops-2.4.0}/docs/architecture/context-diagram.md +0 -0
  96. {ragops-2.3.0 → ragops-2.4.0}/docs/architecture/control-plane-alpha.md +0 -0
  97. {ragops-2.3.0 → ragops-2.4.0}/docs/architecture/data-model.md +0 -0
  98. {ragops-2.3.0 → ragops-2.4.0}/docs/architecture/pr-comment-publishing.md +0 -0
  99. {ragops-2.3.0 → ragops-2.4.0}/docs/architecture/system-overview.md +0 -0
  100. {ragops-2.3.0 → ragops-2.4.0}/docs/architecture/threat-model.md +0 -0
  101. {ragops-2.3.0 → ragops-2.4.0}/docs/demo/design-audit/01-current-desktop.jpg +0 -0
  102. {ragops-2.3.0 → ragops-2.4.0}/docs/demo/design-audit/02-implementation-desktop.jpg +0 -0
  103. {ragops-2.3.0 → ragops-2.4.0}/docs/demo/design-audit/04-implementation-mobile.jpg +0 -0
  104. {ragops-2.3.0 → ragops-2.4.0}/docs/demo/design-audit/06-desktop-comparison.jpg +0 -0
  105. {ragops-2.3.0 → ragops-2.4.0}/docs/demo/design-audit/09-limitations-section.jpg +0 -0
  106. {ragops-2.3.0 → ragops-2.4.0}/docs/demo/design-audit/selected-open-source-adoption.png +0 -0
  107. {ragops-2.3.0 → ragops-2.4.0}/docs/demo/infographics/evidence-stack.svg +0 -0
  108. {ragops-2.3.0 → ragops-2.4.0}/docs/demo/infographics/release-gate-flow.svg +0 -0
  109. {ragops-2.3.0 → ragops-2.4.0}/docs/demo/portfolio-handoff.md +0 -0
  110. {ragops-2.3.0 → ragops-2.4.0}/docs/demo/screenshots/ragops-limitations-screen.jpg +0 -0
  111. {ragops-2.3.0 → ragops-2.4.0}/docs/demo/screenshots/ragops-mobile-screen.jpg +0 -0
  112. {ragops-2.3.0 → ragops-2.4.0}/docs/demo/screenshots/ragops-portfolio-desktop.jpg +0 -0
  113. {ragops-2.3.0 → ragops-2.4.0}/docs/demo/screenshots/ragops-portfolio-mobile.jpg +0 -0
  114. {ragops-2.3.0 → ragops-2.4.0}/docs/demo/screenshots/ragops-release-screen.jpg +0 -0
  115. {ragops-2.3.0 → ragops-2.4.0}/docs/demo/screenshots/ragops-showcase-hero.jpg +0 -0
  116. {ragops-2.3.0 → ragops-2.4.0}/docs/demo/social-preview.png +0 -0
  117. {ragops-2.3.0 → ragops-2.4.0}/docs/design-audit/v1.9/01-start.png +0 -0
  118. {ragops-2.3.0 → ragops-2.4.0}/docs/design-audit/v1.9/02-pass-decision.png +0 -0
  119. {ragops-2.3.0 → ragops-2.4.0}/docs/design-audit/v1.9/03-invalid-json-stale-decision.png +0 -0
  120. {ragops-2.3.0 → ragops-2.4.0}/docs/design-audit/v1.9/04-fixed-pass-decision.png +0 -0
  121. {ragops-2.3.0 → ragops-2.4.0}/docs/design-audit/v1.9/05-fixed-invalid-json.png +0 -0
  122. {ragops-2.3.0 → ragops-2.4.0}/docs/design-audit/v1.9/workbench-audit.md +0 -0
  123. {ragops-2.3.0 → ragops-2.4.0}/docs/design-audit/v2.3/01-workbench-desktop.png +0 -0
  124. {ragops-2.3.0 → ragops-2.4.0}/docs/design-audit/v2.3/audit.md +0 -0
  125. {ragops-2.3.0 → ragops-2.4.0}/docs/engineering/export-your-first-trace.md +0 -0
  126. {ragops-2.3.0 → ragops-2.4.0}/docs/engineering/handbook.md +0 -0
  127. {ragops-2.3.0 → ragops-2.4.0}/docs/engineering/local-release.md +0 -0
  128. {ragops-2.3.0 → ragops-2.4.0}/docs/engineering/observability.md +0 -0
  129. {ragops-2.3.0 → ragops-2.4.0}/docs/engineering/provider-adapters.md +0 -0
  130. {ragops-2.3.0 → ragops-2.4.0}/docs/engineering/testing-strategy.md +0 -0
  131. {ragops-2.3.0 → ragops-2.4.0}/docs/evaluation/answer-length-budget.md +0 -0
  132. {ragops-2.3.0 → ragops-2.4.0}/docs/evaluation/benchmark-report-v0.2.md +0 -0
  133. {ragops-2.3.0 → ragops-2.4.0}/docs/evaluation/evaluator-gates.md +0 -0
  134. {ragops-2.3.0 → ragops-2.4.0}/docs/evaluation/red-team-plan.md +0 -0
  135. {ragops-2.3.0 → ragops-2.4.0}/docs/evaluation/scenario-taxonomy.md +0 -0
  136. {ragops-2.3.0 → ragops-2.4.0}/docs/evaluation/strategy.md +0 -0
  137. {ragops-2.3.0 → ragops-2.4.0}/docs/examples/github-pr-comment.yml +0 -0
  138. {ragops-2.3.0 → ragops-2.4.0}/docs/gtm/design-partner-outreach.md +0 -0
  139. {ragops-2.3.0 → ragops-2.4.0}/docs/gtm/design-partner-pilot-runbook.md +0 -0
  140. {ragops-2.3.0 → ragops-2.4.0}/docs/gtm/pilot-fixtures/synthetic-economics.json +0 -0
  141. {ragops-2.3.0 → ragops-2.4.0}/docs/gtm/pilot-fixtures/synthetic-manifest.json +0 -0
  142. {ragops-2.3.0 → ragops-2.4.0}/docs/gtm/pilot-fixtures/synthetic-observations.jsonl +0 -0
  143. {ragops-2.3.0 → ragops-2.4.0}/docs/gtm/pilot-measurement-plan.md +0 -0
  144. {ragops-2.3.0 → ragops-2.4.0}/docs/gtm/synthetic-pilot-report.md +0 -0
  145. {ragops-2.3.0 → ragops-2.4.0}/docs/product/commercialization.md +0 -0
  146. {ragops-2.3.0 → ragops-2.4.0}/docs/product/competitive-analysis.md +0 -0
  147. {ragops-2.3.0 → ragops-2.4.0}/docs/product/jobs-to-be-done.md +0 -0
  148. {ragops-2.3.0 → ragops-2.4.0}/docs/product/oss-launch-plan.md +0 -0
  149. {ragops-2.3.0 → ragops-2.4.0}/docs/product/personas.md +0 -0
  150. {ragops-2.3.0 → ragops-2.4.0}/docs/product/product_thesis.md +0 -0
  151. {ragops-2.3.0 → ragops-2.4.0}/docs/product/requirements-v0.1.md +0 -0
  152. {ragops-2.3.0 → ragops-2.4.0}/docs/product/requirements-v0.2.md +0 -0
  153. {ragops-2.3.0 → ragops-2.4.0}/docs/product/requirements-v1.5.md +0 -0
  154. {ragops-2.3.0 → ragops-2.4.0}/docs/product/requirements-v1.6.md +0 -0
  155. {ragops-2.3.0 → ragops-2.4.0}/docs/product/requirements-v1.7.md +0 -0
  156. {ragops-2.3.0 → ragops-2.4.0}/docs/product/requirements-v1.8.md +0 -0
  157. {ragops-2.3.0 → ragops-2.4.0}/docs/product/requirements-v2.0.md +0 -0
  158. {ragops-2.3.0 → ragops-2.4.0}/docs/product/requirements-v2.1.md +0 -0
  159. {ragops-2.3.0 → ragops-2.4.0}/docs/product/requirements-v2.2.md +0 -0
  160. {ragops-2.3.0 → ragops-2.4.0}/docs/product/requirements-v2.3.md +0 -0
  161. {ragops-2.3.0 → ragops-2.4.0}/docs/product/success-metrics.md +0 -0
  162. {ragops-2.3.0 → ragops-2.4.0}/docs/project/backlog.md +0 -0
  163. {ragops-2.3.0 → ragops-2.4.0}/docs/project/charter.md +0 -0
  164. {ragops-2.3.0 → ragops-2.4.0}/docs/project/decision-log.md +0 -0
  165. {ragops-2.3.0 → ragops-2.4.0}/docs/project/m1-acceptance.md +0 -0
  166. {ragops-2.3.0 → ragops-2.4.0}/docs/project/m2-acceptance.md +0 -0
  167. {ragops-2.3.0 → ragops-2.4.0}/docs/project/m3-acceptance.md +0 -0
  168. {ragops-2.3.0 → ragops-2.4.0}/docs/project/m4-acceptance.md +0 -0
  169. {ragops-2.3.0 → ragops-2.4.0}/docs/project/m5-acceptance.md +0 -0
  170. {ragops-2.3.0 → ragops-2.4.0}/docs/project/milestones.md +0 -0
  171. {ragops-2.3.0 → ragops-2.4.0}/docs/project/release-plan.md +0 -0
  172. {ragops-2.3.0 → ragops-2.4.0}/docs/project/risk-register.md +0 -0
  173. {ragops-2.3.0 → ragops-2.4.0}/docs/project/v1-acceptance.md +0 -0
  174. {ragops-2.3.0 → ragops-2.4.0}/docs/project/v1.5-acceptance.md +0 -0
  175. {ragops-2.3.0 → ragops-2.4.0}/docs/project/v1.6-acceptance.md +0 -0
  176. {ragops-2.3.0 → ragops-2.4.0}/docs/project/v1.7-acceptance.md +0 -0
  177. {ragops-2.3.0 → ragops-2.4.0}/docs/project/v1.8-acceptance.md +0 -0
  178. {ragops-2.3.0 → ragops-2.4.0}/docs/project/v2.0-acceptance.md +0 -0
  179. {ragops-2.3.0 → ragops-2.4.0}/docs/project/v2.1-acceptance.md +0 -0
  180. {ragops-2.3.0 → ragops-2.4.0}/docs/project/v2.2-acceptance.md +0 -0
  181. {ragops-2.3.0 → ragops-2.4.0}/docs/project/work-breakdown.md +0 -0
  182. {ragops-2.3.0 → ragops-2.4.0}/docs/releases/v1.5.0.md +0 -0
  183. {ragops-2.3.0 → ragops-2.4.0}/docs/releases/v1.6.0.md +0 -0
  184. {ragops-2.3.0 → ragops-2.4.0}/docs/releases/v1.7.0.md +0 -0
  185. {ragops-2.3.0 → ragops-2.4.0}/docs/releases/v1.8.0.md +0 -0
  186. {ragops-2.3.0 → ragops-2.4.0}/docs/releases/v2.0.0.md +0 -0
  187. {ragops-2.3.0 → ragops-2.4.0}/docs/releases/v2.1.0.md +0 -0
  188. {ragops-2.3.0 → ragops-2.4.0}/docs/releases/v2.2.0.md +0 -0
  189. {ragops-2.3.0 → ragops-2.4.0}/docs/releases/v2.3.0.md +0 -0
  190. {ragops-2.3.0 → ragops-2.4.0}/examples/__init__.py +0 -0
  191. {ragops-2.3.0 → ragops-2.4.0}/examples/japanese_troubleshooting_agent/README.md +0 -0
  192. {ragops-2.3.0 → ragops-2.4.0}/examples/japanese_troubleshooting_agent/__init__.py +0 -0
  193. {ragops-2.3.0 → ragops-2.4.0}/examples/japanese_troubleshooting_agent/agent.py +0 -0
  194. {ragops-2.3.0 → ragops-2.4.0}/examples/japanese_troubleshooting_agent/architecture.md +0 -0
  195. {ragops-2.3.0 → ragops-2.4.0}/examples/japanese_troubleshooting_agent/cli.py +0 -0
  196. {ragops-2.3.0 → ragops-2.4.0}/examples/japanese_troubleshooting_agent/data/documents.json +0 -0
  197. {ragops-2.3.0 → ragops-2.4.0}/examples/japanese_troubleshooting_agent/data/graph.json +0 -0
  198. {ragops-2.3.0 → ragops-2.4.0}/examples/japanese_troubleshooting_agent/discovery.md +0 -0
  199. {ragops-2.3.0 → ragops-2.4.0}/examples/japanese_troubleshooting_agent/executive-report.md +0 -0
  200. {ragops-2.3.0 → ragops-2.4.0}/examples/japanese_troubleshooting_agent/results/comparison.md +0 -0
  201. {ragops-2.3.0 → ragops-2.4.0}/examples/japanese_troubleshooting_agent/results/graph-traces.jsonl +0 -0
  202. {ragops-2.3.0 → ragops-2.4.0}/examples/japanese_troubleshooting_agent/results/lexical-traces.jsonl +0 -0
  203. {ragops-2.3.0 → ragops-2.4.0}/examples/japanese_troubleshooting_agent/rollout-plan.md +0 -0
  204. {ragops-2.3.0 → ragops-2.4.0}/examples/japanese_troubleshooting_agent/scenario.json +0 -0
  205. {ragops-2.3.0 → ragops-2.4.0}/examples/japanese_troubleshooting_agent/suite.json +0 -0
  206. {ragops-2.3.0 → ragops-2.4.0}/examples/opentelemetry_trace_adapter/README.md +0 -0
  207. {ragops-2.3.0 → ragops-2.4.0}/examples/opentelemetry_trace_adapter/__init__.py +0 -0
  208. {ragops-2.3.0 → ragops-2.4.0}/examples/opentelemetry_trace_adapter/adapter.py +0 -0
  209. {ragops-2.3.0 → ragops-2.4.0}/examples/opentelemetry_trace_adapter/spans.jsonl +0 -0
  210. {ragops-2.3.0 → ragops-2.4.0}/ragops.toml +0 -0
  211. {ragops-2.3.0 → ragops-2.4.0}/scenarios/japanese_troubleshooting/attack-pack.json +0 -0
  212. {ragops-2.3.0 → ragops-2.4.0}/scenarios/japanese_troubleshooting/benchmark-adversarial.json +0 -0
  213. {ragops-2.3.0 → ragops-2.4.0}/scenarios/japanese_troubleshooting/benchmark-baseline.json +0 -0
  214. {ragops-2.3.0 → ragops-2.4.0}/scenarios/japanese_troubleshooting/benchmark-regressed.json +0 -0
  215. {ragops-2.3.0 → ragops-2.4.0}/scenarios/japanese_troubleshooting/benchmark-v0.2.json +0 -0
  216. {ragops-2.3.0 → ragops-2.4.0}/scenarios/japanese_troubleshooting/evaluation-policy.toml +0 -0
  217. {ragops-2.3.0 → ragops-2.4.0}/scenarios/japanese_troubleshooting/external-metric-policy.toml +0 -0
  218. {ragops-2.3.0 → ragops-2.4.0}/scenarios/japanese_troubleshooting/external-metrics-baseline.json +0 -0
  219. {ragops-2.3.0 → ragops-2.4.0}/scenarios/japanese_troubleshooting/external-metrics-candidate.json +0 -0
  220. {ragops-2.3.0 → ragops-2.4.0}/scenarios/japanese_troubleshooting/regressed_responses.json +0 -0
  221. {ragops-2.3.0 → ragops-2.4.0}/scenarios/japanese_troubleshooting/sample_responses.json +0 -0
  222. {ragops-2.3.0 → ragops-2.4.0}/scenarios/japanese_troubleshooting/sample_traces.jsonl +0 -0
  223. {ragops-2.3.0 → ragops-2.4.0}/scenarios/japanese_troubleshooting/scenario.json +0 -0
  224. {ragops-2.3.0 → ragops-2.4.0}/schemas/attack-pack-0.1.schema.json +0 -0
  225. {ragops-2.3.0 → ragops-2.4.0}/schemas/external-metrics-0.1.schema.json +0 -0
  226. {ragops-2.3.0 → ragops-2.4.0}/schemas/pilot-economics-0.1.schema.json +0 -0
  227. {ragops-2.3.0 → ragops-2.4.0}/schemas/pilot-manifest-0.1.schema.json +0 -0
  228. {ragops-2.3.0 → ragops-2.4.0}/schemas/pilot-observation-0.1.schema.json +0 -0
  229. {ragops-2.3.0 → ragops-2.4.0}/schemas/report-0.2.schema.json +0 -0
  230. {ragops-2.3.0 → ragops-2.4.0}/schemas/response-fixture-0.2.schema.json +0 -0
  231. {ragops-2.3.0 → ragops-2.4.0}/schemas/responses-0.1.schema.json +0 -0
  232. {ragops-2.3.0 → ragops-2.4.0}/schemas/scenario-0.1.schema.json +0 -0
  233. {ragops-2.3.0 → ragops-2.4.0}/schemas/scenario-0.2.schema.json +0 -0
  234. {ragops-2.3.0 → ragops-2.4.0}/schemas/trace-0.3.schema.json +0 -0
  235. {ragops-2.3.0 → ragops-2.4.0}/schemas/trace-0.4.schema.json +0 -0
  236. {ragops-2.3.0 → ragops-2.4.0}/scripts/local_release.py +0 -0
  237. {ragops-2.3.0 → ragops-2.4.0}/site/apple-touch-icon.png +0 -0
  238. {ragops-2.3.0 → ragops-2.4.0}/site/favicon.png +0 -0
  239. {ragops-2.3.0 → ragops-2.4.0}/skills/ragops-feature/SKILL.md +0 -0
  240. {ragops-2.3.0 → ragops-2.4.0}/skills/ragops-presentation/SKILL.md +0 -0
  241. {ragops-2.3.0 → ragops-2.4.0}/skills/ragops-release/SKILL.md +0 -0
  242. {ragops-2.3.0 → ragops-2.4.0}/src/ragops/adapters/__init__.py +0 -0
  243. {ragops-2.3.0 → ragops-2.4.0}/src/ragops/adapters/external_metrics.py +0 -0
  244. {ragops-2.3.0 → ragops-2.4.0}/src/ragops/adapters/http.py +0 -0
  245. {ragops-2.3.0 → ragops-2.4.0}/src/ragops/benchmarks.py +0 -0
  246. {ragops-2.3.0 → ragops-2.4.0}/src/ragops/cli.py +0 -0
  247. {ragops-2.3.0 → ragops-2.4.0}/src/ragops/config.py +0 -0
  248. {ragops-2.3.0 → ragops-2.4.0}/src/ragops/control_plane.py +0 -0
  249. {ragops-2.3.0 → ragops-2.4.0}/src/ragops/demo.py +0 -0
  250. {ragops-2.3.0 → ragops-2.4.0}/src/ragops/engine.py +0 -0
  251. {ragops-2.3.0 → ragops-2.4.0}/src/ragops/evaluators.py +0 -0
  252. {ragops-2.3.0 → ragops-2.4.0}/src/ragops/loader.py +0 -0
  253. {ragops-2.3.0 → ragops-2.4.0}/src/ragops/models.py +0 -0
  254. {ragops-2.3.0 → ragops-2.4.0}/src/ragops/pilot.py +0 -0
  255. {ragops-2.3.0 → ragops-2.4.0}/src/ragops/plugins.py +0 -0
  256. {ragops-2.3.0 → ragops-2.4.0}/src/ragops/providers/__init__.py +0 -0
  257. {ragops-2.3.0 → ragops-2.4.0}/src/ragops/providers/openai_responses.py +0 -0
  258. {ragops-2.3.0 → ragops-2.4.0}/src/ragops/reporters.py +0 -0
  259. {ragops-2.3.0 → ragops-2.4.0}/src/ragops/store.py +0 -0
  260. {ragops-2.3.0 → ragops-2.4.0}/src/ragops/traces.py +0 -0
  261. {ragops-2.3.0 → ragops-2.4.0}/tests/test_answer_length_cli.py +0 -0
  262. {ragops-2.3.0 → ragops-2.4.0}/tests/test_api_contract.py +0 -0
  263. {ragops-2.3.0 → ragops-2.4.0}/tests/test_benchmarks.py +0 -0
  264. {ragops-2.3.0 → ragops-2.4.0}/tests/test_comparison.py +0 -0
  265. {ragops-2.3.0 → ragops-2.4.0}/tests/test_config.py +0 -0
  266. {ragops-2.3.0 → ragops-2.4.0}/tests/test_control_plane.py +0 -0
  267. {ragops-2.3.0 → ragops-2.4.0}/tests/test_demo.py +0 -0
  268. {ragops-2.3.0 → ragops-2.4.0}/tests/test_engine.py +0 -0
  269. {ragops-2.3.0 → ragops-2.4.0}/tests/test_evaluator_depth.py +0 -0
  270. {ragops-2.3.0 → ragops-2.4.0}/tests/test_external_metrics.py +0 -0
  271. {ragops-2.3.0 → ragops-2.4.0}/tests/test_github_workflows.py +0 -0
  272. {ragops-2.3.0 → ragops-2.4.0}/tests/test_http_adapter.py +0 -0
  273. {ragops-2.3.0 → ragops-2.4.0}/tests/test_loader.py +0 -0
  274. {ragops-2.3.0 → ragops-2.4.0}/tests/test_local_release.py +0 -0
  275. {ragops-2.3.0 → ragops-2.4.0}/tests/test_openai_provider.py +0 -0
  276. {ragops-2.3.0 → ragops-2.4.0}/tests/test_opentelemetry_adapter.py +0 -0
  277. {ragops-2.3.0 → ragops-2.4.0}/tests/test_pilot.py +0 -0
  278. {ragops-2.3.0 → ragops-2.4.0}/tests/test_plugins_and_traces.py +0 -0
  279. {ragops-2.3.0 → ragops-2.4.0}/tests/test_pr_comment_publisher.py +0 -0
  280. {ragops-2.3.0 → ragops-2.4.0}/tests/test_reference_agent.py +0 -0
  281. {ragops-2.3.0 → ragops-2.4.0}/tests/test_reference_benchmark.py +0 -0
  282. {ragops-2.3.0 → ragops-2.4.0}/tests/test_release_version.py +0 -0
  283. {ragops-2.3.0 → ragops-2.4.0}/tests/test_response_fixtures.py +0 -0
  284. {ragops-2.3.0 → ragops-2.4.0}/tests/test_scenario_v02_and_attacks.py +0 -0
  285. {ragops-2.3.0 → ragops-2.4.0}/tests/test_schema_files.py +0 -0
  286. {ragops-2.3.0 → ragops-2.4.0}/tests/test_store_and_html.py +0 -0
  287. {ragops-2.3.0 → ragops-2.4.0}/tests/test_team_workflow.py +0 -0
  288. {ragops-2.3.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.3.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.3.0"
15
+ default: "v2.4.0"
16
16
  scenario:
17
17
  description: Caller-relative scenario JSON path
18
18
  required: true
@@ -4,6 +4,19 @@ 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
+
7
20
  ## [2.3.0] - 2026-07-13
8
21
 
9
22
  ### Added
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: ragops
3
- Version: 2.3.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.3.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 140+ 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 140+ 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.3.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 140+ 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 140+ 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
@@ -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 140+ 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>
@@ -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.3.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.3.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.2.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.2.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.2.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.3.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"
@@ -0,0 +1,93 @@
1
+ # Getting started: reach a release decision in five minutes
2
+
3
+ RAGOps evaluates an existing RAG or agent system. It does not build retrieval,
4
+ generation, or orchestration. Start with the credential-free proof, then replace
5
+ the fixtures with outputs from your application.
6
+
7
+ ## 1. Install the stable CLI
8
+
9
+ ```bash
10
+ python -m venv .venv
11
+ source .venv/bin/activate
12
+ pip install ragops==2.4.0
13
+ ragops --version
14
+ ```
15
+
16
+ Expected version: `ragops 2.4.0`.
17
+
18
+ ## 2. Generate the five-minute proof
19
+
20
+ ```bash
21
+ ragops demo --output ragops-demo
22
+ open ragops-demo/release-report.html
23
+ ```
24
+
25
+ The demo succeeds by reproducing an expected decision: the accepted baseline
26
+ passes and the intentionally regressed candidate is blocked. The directory
27
+ contains the scenario, response fixtures, JSON, Markdown, and standalone HTML
28
+ evidence. It requires no model API or external service.
29
+
30
+ Try the other included workflows:
31
+
32
+ ```bash
33
+ ragops demo --scenario support-triage --output support-triage-demo
34
+ ragops demo --scenario proposal-review --output proposal-review-demo
35
+ ```
36
+
37
+ ## 3. Evaluate your recorded output
38
+
39
+ ```bash
40
+ ragops evaluate \
41
+ --scenario path/to/scenario.json \
42
+ --responses path/to/responses.json \
43
+ --format markdown \
44
+ --output evaluation.md
45
+ ```
46
+
47
+ Use `--traces` instead of `--responses` when your application exports portable
48
+ JSONL trace 0.4 records. See [export your first trace](engineering/export-your-first-trace.md).
49
+
50
+ ## 4. Compare candidate with baseline
51
+
52
+ ```bash
53
+ ragops compare \
54
+ --scenario path/to/scenario.json \
55
+ --baseline path/to/baseline.json \
56
+ --candidate path/to/candidate.json \
57
+ --evaluation-policy path/to/evaluation-policy.toml \
58
+ --format html \
59
+ --output release-report.html
60
+ ```
61
+
62
+ - Exit `0`: evaluation completed and the candidate passes.
63
+ - Exit `2`: evaluation completed and policy blocks the candidate.
64
+ - Other non-zero exit: fixture, configuration, or contract error.
65
+
66
+ RAGOps can also gate namespaced per-case scores exported by Ragas, DeepEval,
67
+ Langfuse, or an internal judge. Imported metric meaning remains owned by the
68
+ producer and your reviewed policy.
69
+
70
+ ## 5. Add the gate to team workflow
71
+
72
+ - [GitHub pull-request gate](engineering/github-pr-gate.md)
73
+ - [GitLab merge-request gate](engineering/gitlab-ci-gate.md)
74
+ - [Evaluator and finding policy](evaluation/evaluator-gates.md)
75
+ - [Provider-neutral metric adapter](engineering/provider-adapters.md)
76
+
77
+ ## Optional local workbench
78
+
79
+ ```bash
80
+ RAGOPS_API_KEY="$(python -c 'import secrets; print(secrets.token_urlsafe(32))')" \
81
+ docker compose up --build
82
+ open http://localhost:8000
83
+ ```
84
+
85
+ Compose binds to localhost and requires a key. The browser workbench is a local
86
+ adapter; evaluation semantics remain in the dependency-free core.
87
+
88
+ ## What this proof does not establish
89
+
90
+ Synthetic fixtures validate the harness and release workflow. They do not prove
91
+ semantic correctness, production security, customer adoption, or ROI. Replace
92
+ them with reviewed, consented evidence from your own workflow before making
93
+ production claims.
@@ -6,7 +6,7 @@ public product contract.
6
6
 
7
7
  ## Repository About — complete
8
8
 
9
- - **Description:** `Dependency-free evaluation and red-team release gates for RAG and agent systems.`
9
+ - **Description:** `From RAG change to explainable PASS/BLOCK release evidence—locally, in five minutes.`
10
10
  - **Website:** `https://thangldw.github.io/ragops/`
11
11
  - **Topics:** `ai-evaluation`, `rag`, `llm`, `agents`, `red-team`,
12
12
  `observability`, `llmops`, `python`, `github-actions`, `japanese`
@@ -29,9 +29,8 @@ v1.7 slice rather than opened as already-completed issues.
29
29
 
30
30
  ## Owner-only external gates
31
31
 
32
- - PyPI project, `pypi` GitHub environment, and active Trusted Publisher are
33
- configured; release 1.7.0 is publicly verified.
34
- - GitHub Release and PyPI wheel/source artifacts for v1.7.0 are verified.
32
+ - PyPI project and GitHub Releases are active; v2.4.0 is publicly verified.
33
+ - GitHub Release and PyPI wheel/source artifacts for v2.4.0 are byte-identical.
35
34
  - Recruit a design partner and record observed adoption/ROI separately from
36
35
  synthetic benchmark results.
37
36
  - Configure branch protection and security settings under the owner's chosen