sable-sphynx 0.7.0.dev0__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.
- sable_sphynx-0.7.0.dev0/.gitattributes +41 -0
- sable_sphynx-0.7.0.dev0/.github/workflows/publish-pypi.yml +211 -0
- sable_sphynx-0.7.0.dev0/.github/workflows/rag-papers.yml +42 -0
- sable_sphynx-0.7.0.dev0/.github/workflows/sdk-0-5-release.yml +159 -0
- sable_sphynx-0.7.0.dev0/.github/workflows/sdk-candidate.yml +219 -0
- sable_sphynx-0.7.0.dev0/.github/workflows/sdk-pilot-smoke.yml +124 -0
- sable_sphynx-0.7.0.dev0/.github/workflows/sdk-release-smoke.yml +97 -0
- sable_sphynx-0.7.0.dev0/.github/workflows/sdk-research-parity.yml +133 -0
- sable_sphynx-0.7.0.dev0/.github/workflows/sdk-stable-release.yml +153 -0
- sable_sphynx-0.7.0.dev0/.github/workflows/speech-benchmarks.yml +41 -0
- sable_sphynx-0.7.0.dev0/.github/workflows/unreleased-inputs.yml +38 -0
- sable_sphynx-0.7.0.dev0/.github/workflows/unreleased-speech.yml +34 -0
- sable_sphynx-0.7.0.dev0/.github/workflows/unreleased-tts-execution.yml +28 -0
- sable_sphynx-0.7.0.dev0/MANIFEST.in +432 -0
- sable_sphynx-0.7.0.dev0/PKG-INFO +152 -0
- sable_sphynx-0.7.0.dev0/README.md +140 -0
- sable_sphynx-0.7.0.dev0/contracts/evals/definition.v1.schema.json +465 -0
- sable_sphynx-0.7.0.dev0/contracts/evals/definitions.v1.json +529 -0
- sable_sphynx-0.7.0.dev0/contracts/evals/invocation.v1.schema.json +227 -0
- sable_sphynx-0.7.0.dev0/docs/README.md +71 -0
- sable_sphynx-0.7.0.dev0/docs/advanced-workflows.md +304 -0
- sable_sphynx-0.7.0.dev0/docs/analytical-access.md +98 -0
- sable_sphynx-0.7.0.dev0/docs/assessment-selection.md +63 -0
- sable_sphynx-0.7.0.dev0/docs/audit-access.md +79 -0
- sable_sphynx-0.7.0.dev0/docs/audit-contracts.md +32 -0
- sable_sphynx-0.7.0.dev0/docs/authoring-evaluations.md +83 -0
- sable_sphynx-0.7.0.dev0/docs/beginner-quickstart.md +158 -0
- sable_sphynx-0.7.0.dev0/docs/candidate/content.v1.json +773 -0
- sable_sphynx-0.7.0.dev0/docs/comparison-views.md +40 -0
- sable_sphynx-0.7.0.dev0/docs/configurable-evaluations.md +336 -0
- sable_sphynx-0.7.0.dev0/docs/decision-policies.md +115 -0
- sable_sphynx-0.7.0.dev0/docs/documentation-release-workflow.md +365 -0
- sable_sphynx-0.7.0.dev0/docs/engineering-capabilities.md +412 -0
- sable_sphynx-0.7.0.dev0/docs/evaluation-intake-matrix.md +116 -0
- sable_sphynx-0.7.0.dev0/docs/evaluator-bindings.md +113 -0
- sable_sphynx-0.7.0.dev0/docs/explorations.md +21 -0
- sable_sphynx-0.7.0.dev0/docs/external-pilot.md +171 -0
- sable_sphynx-0.7.0.dev0/docs/general-evaluation-contracts.md +102 -0
- sable_sphynx-0.7.0.dev0/docs/hosted-control-plane.md +419 -0
- sable_sphynx-0.7.0.dev0/docs/metric-views.md +149 -0
- sable_sphynx-0.7.0.dev0/docs/next-reflex-benchmarks.md +111 -0
- sable_sphynx-0.7.0.dev0/docs/pipeline-full-rag.md +264 -0
- sable_sphynx-0.7.0.dev0/docs/pr-evaluations.md +179 -0
- sable_sphynx-0.7.0.dev0/docs/public/catalog.v1.json +3403 -0
- sable_sphynx-0.7.0.dev0/docs/public/content.v1.json +7341 -0
- sable_sphynx-0.7.0.dev0/docs/public/reference.v1.json +6993 -0
- sable_sphynx-0.7.0.dev0/docs/public/release.v1.json +18 -0
- sable_sphynx-0.7.0.dev0/docs/public/source-contract.v1.json +1 -0
- sable_sphynx-0.7.0.dev0/docs/public-reranking-v1.md +163 -0
- sable_sphynx-0.7.0.dev0/docs/pydantic-inspired-sdk-improvements.md +453 -0
- sable_sphynx-0.7.0.dev0/docs/pypi-release.md +53 -0
- sable_sphynx-0.7.0.dev0/docs/question-robustness-pilot.md +161 -0
- sable_sphynx-0.7.0.dev0/docs/question-robustness-sdk.md +194 -0
- sable_sphynx-0.7.0.dev0/docs/question-robustness.md +196 -0
- sable_sphynx-0.7.0.dev0/docs/rag-diagnostics.md +137 -0
- sable_sphynx-0.7.0.dev0/docs/rag-invocation-v1.md +324 -0
- sable_sphynx-0.7.0.dev0/docs/rag-paper-methods.md +233 -0
- sable_sphynx-0.7.0.dev0/docs/rag-paper-verification-20261018.md +45 -0
- sable_sphynx-0.7.0.dev0/docs/reflex-candidate-ownership.md +156 -0
- sable_sphynx-0.7.0.dev0/docs/reflex-model-pilot.md +187 -0
- sable_sphynx-0.7.0.dev0/docs/release-0.4.0.md +34 -0
- sable_sphynx-0.7.0.dev0/docs/release-0.5.0.md +14 -0
- sable_sphynx-0.7.0.dev0/docs/rerank-families.md +182 -0
- sable_sphynx-0.7.0.dev0/docs/research-parity.md +177 -0
- sable_sphynx-0.7.0.dev0/docs/score-reliability.md +136 -0
- sable_sphynx-0.7.0.dev0/docs/sdk-concepts-and-naming.md +312 -0
- sable_sphynx-0.7.0.dev0/docs/sdk-developer-experience.md +238 -0
- sable_sphynx-0.7.0.dev0/docs/shared-workflow.md +222 -0
- sable_sphynx-0.7.0.dev0/docs/speech-complete-coverage.md +243 -0
- sable_sphynx-0.7.0.dev0/docs/speech-kido-benchmarks.md +193 -0
- sable_sphynx-0.7.0.dev0/docs/speech-saved-evidence.md +169 -0
- sable_sphynx-0.7.0.dev0/docs/speech-tts-execution.md +169 -0
- sable_sphynx-0.7.0.dev0/docs/terminal-experiments.md +119 -0
- sable_sphynx-0.7.0.dev0/docs/verification/kido-speech-benchmarks-20261019.json +75 -0
- sable_sphynx-0.7.0.dev0/docs/verification/kido-speech-complete-20261019.json +53 -0
- sable_sphynx-0.7.0.dev0/docs/vscode-tutorial.md +139 -0
- sable_sphynx-0.7.0.dev0/examples/beginner_quickstart.py +25 -0
- sable_sphynx-0.7.0.dev0/examples/dense_candidate.py +29 -0
- sable_sphynx-0.7.0.dev0/examples/describe_evaluations.py +42 -0
- sable_sphynx-0.7.0.dev0/examples/lexical_candidate.py +40 -0
- sable_sphynx-0.7.0.dev0/examples/public_starter/candidate.py +48 -0
- sable_sphynx-0.7.0.dev0/examples/public_starter/experiment.py +172 -0
- sable_sphynx-0.7.0.dev0/examples/rag_papers.py +35 -0
- sable_sphynx-0.7.0.dev0/examples/run_custom_evaluation.py +29 -0
- sable_sphynx-0.7.0.dev0/examples/run_lifecycle.py +114 -0
- sable_sphynx-0.7.0.dev0/examples/run_public_rerank.py +28 -0
- sable_sphynx-0.7.0.dev0/examples/run_question_robustness.py +54 -0
- sable_sphynx-0.7.0.dev0/examples/run_suite_workflow.py +57 -0
- sable_sphynx-0.7.0.dev0/examples/starter/candidate.py +48 -0
- sable_sphynx-0.7.0.dev0/examples/starter/experiment.py +158 -0
- sable_sphynx-0.7.0.dev0/pyproject.toml +23 -0
- sable_sphynx-0.7.0.dev0/setup.cfg +4 -0
- sable_sphynx-0.7.0.dev0/src/sable_sphynx.egg-info/PKG-INFO +152 -0
- sable_sphynx-0.7.0.dev0/src/sable_sphynx.egg-info/SOURCES.txt +416 -0
- sable_sphynx-0.7.0.dev0/src/sable_sphynx.egg-info/dependency_links.txt +1 -0
- sable_sphynx-0.7.0.dev0/src/sable_sphynx.egg-info/requires.txt +6 -0
- sable_sphynx-0.7.0.dev0/src/sable_sphynx.egg-info/top_level.txt +1 -0
- sable_sphynx-0.7.0.dev0/src/sphynx/__init__.py +469 -0
- sable_sphynx-0.7.0.dev0/src/sphynx/__init__.pyi +376 -0
- sable_sphynx-0.7.0.dev0/src/sphynx/_analytical_client.py +77 -0
- sable_sphynx-0.7.0.dev0/src/sphynx/_analytical_values.py +252 -0
- sable_sphynx-0.7.0.dev0/src/sphynx/_audit_client.py +173 -0
- sable_sphynx-0.7.0.dev0/src/sphynx/_comparison_adapters.py +113 -0
- sable_sphynx-0.7.0.dev0/src/sphynx/_componentized_full_rag.py +34 -0
- sable_sphynx-0.7.0.dev0/src/sphynx/_composed_pipeline.py +109 -0
- sable_sphynx-0.7.0.dev0/src/sphynx/_full_rag_grading.py +218 -0
- sable_sphynx-0.7.0.dev0/src/sphynx/_full_rag_trace.py +221 -0
- sable_sphynx-0.7.0.dev0/src/sphynx/_local_eval.py +268 -0
- sable_sphynx-0.7.0.dev0/src/sphynx/_pipeline_core.py +243 -0
- sable_sphynx-0.7.0.dev0/src/sphynx/_pr_client.py +237 -0
- sable_sphynx-0.7.0.dev0/src/sphynx/_rag_diagnostics_calibration.py +285 -0
- sable_sphynx-0.7.0.dev0/src/sphynx/_rag_diagnostics_catalog.py +39 -0
- sable_sphynx-0.7.0.dev0/src/sphynx/_rag_diagnostics_common.py +26 -0
- sable_sphynx-0.7.0.dev0/src/sphynx/_rag_diagnostics_contracts.py +186 -0
- sable_sphynx-0.7.0.dev0/src/sphynx/_rag_diagnostics_engine.py +243 -0
- sable_sphynx-0.7.0.dev0/src/sphynx/_rag_diagnostics_importers.py +242 -0
- sable_sphynx-0.7.0.dev0/src/sphynx/_rag_diagnostics_ranking.py +81 -0
- sable_sphynx-0.7.0.dev0/src/sphynx/_rag_diagnostics_semantic.py +325 -0
- sable_sphynx-0.7.0.dev0/src/sphynx/_rag_ranking.py +149 -0
- sable_sphynx-0.7.0.dev0/src/sphynx/_speech_benchmark_scoring.py +140 -0
- sable_sphynx-0.7.0.dev0/src/sphynx/_speech_benchmark_sources.py +275 -0
- sable_sphynx-0.7.0.dev0/src/sphynx/_speech_complete_scoring.py +218 -0
- sable_sphynx-0.7.0.dev0/src/sphynx/_speech_complete_source.py +118 -0
- sable_sphynx-0.7.0.dev0/src/sphynx/_speech_kido.py +294 -0
- sable_sphynx-0.7.0.dev0/src/sphynx/_speech_scoring.py +77 -0
- sable_sphynx-0.7.0.dev0/src/sphynx/_track_capture.py +213 -0
- sable_sphynx-0.7.0.dev0/src/sphynx/analytical_views.py +515 -0
- sable_sphynx-0.7.0.dev0/src/sphynx/assessment_contracts.py +378 -0
- sable_sphynx-0.7.0.dev0/src/sphynx/assessment_selection.py +57 -0
- sable_sphynx-0.7.0.dev0/src/sphynx/audit_access.py +245 -0
- sable_sphynx-0.7.0.dev0/src/sphynx/audit_contracts.py +204 -0
- sable_sphynx-0.7.0.dev0/src/sphynx/audit_requests.py +180 -0
- sable_sphynx-0.7.0.dev0/src/sphynx/authoring.py +188 -0
- sable_sphynx-0.7.0.dev0/src/sphynx/benchmarks.py +568 -0
- sable_sphynx-0.7.0.dev0/src/sphynx/candidates.py +62 -0
- sable_sphynx-0.7.0.dev0/src/sphynx/catalog.py +272 -0
- sable_sphynx-0.7.0.dev0/src/sphynx/chunking.py +372 -0
- sable_sphynx-0.7.0.dev0/src/sphynx/clickhouse_reader.py +169 -0
- sable_sphynx-0.7.0.dev0/src/sphynx/client.py +486 -0
- sable_sphynx-0.7.0.dev0/src/sphynx/comparison_core.py +149 -0
- sable_sphynx-0.7.0.dev0/src/sphynx/comparison_views.py +223 -0
- sable_sphynx-0.7.0.dev0/src/sphynx/components.py +1661 -0
- sable_sphynx-0.7.0.dev0/src/sphynx/contracts.py +514 -0
- sable_sphynx-0.7.0.dev0/src/sphynx/customer_rerank.py +299 -0
- sable_sphynx-0.7.0.dev0/src/sphynx/customer_retrieval.py +146 -0
- sable_sphynx-0.7.0.dev0/src/sphynx/data/benchmark-releases.v1.json +164 -0
- sable_sphynx-0.7.0.dev0/src/sphynx/data/public-benchmark-release.v1.json +354 -0
- sable_sphynx-0.7.0.dev0/src/sphynx/data/rag-diagnostics-synthetic.v1.json +6982 -0
- sable_sphynx-0.7.0.dev0/src/sphynx/data/rag-paper-references.v1.json +176 -0
- sable_sphynx-0.7.0.dev0/src/sphynx/data/rag-paper-schemas.v1.json +1069 -0
- sable_sphynx-0.7.0.dev0/src/sphynx/data/rag-rerank-v1.json +507 -0
- sable_sphynx-0.7.0.dev0/src/sphynx/dataset_catalog_data.py +1214 -0
- sable_sphynx-0.7.0.dev0/src/sphynx/dataset_readiness.py +138 -0
- sable_sphynx-0.7.0.dev0/src/sphynx/dataset_v3.py +999 -0
- sable_sphynx-0.7.0.dev0/src/sphynx/demo.py +130 -0
- sable_sphynx-0.7.0.dev0/src/sphynx/demo_candidates/__init__.py +1 -0
- sable_sphynx-0.7.0.dev0/src/sphynx/demo_candidates/dense.py +11 -0
- sable_sphynx-0.7.0.dev0/src/sphynx/demo_candidates/lexical.py +21 -0
- sable_sphynx-0.7.0.dev0/src/sphynx/diagnostics.py +207 -0
- sable_sphynx-0.7.0.dev0/src/sphynx/documentation.py +737 -0
- sable_sphynx-0.7.0.dev0/src/sphynx/documentation_candidate.py +939 -0
- sable_sphynx-0.7.0.dev0/src/sphynx/evals.py +538 -0
- sable_sphynx-0.7.0.dev0/src/sphynx/evaluation_protocols.py +124 -0
- sable_sphynx-0.7.0.dev0/src/sphynx/evaluator_bindings.py +370 -0
- sable_sphynx-0.7.0.dev0/src/sphynx/evidence.py +352 -0
- sable_sphynx-0.7.0.dev0/src/sphynx/execution_capabilities.py +109 -0
- sable_sphynx-0.7.0.dev0/src/sphynx/fast_search.py +285 -0
- sable_sphynx-0.7.0.dev0/src/sphynx/full_rag.py +341 -0
- sable_sphynx-0.7.0.dev0/src/sphynx/hosted/__init__.py +18 -0
- sable_sphynx-0.7.0.dev0/src/sphynx/hosted/benchmark_intake.py +218 -0
- sable_sphynx-0.7.0.dev0/src/sphynx/hosted/contracts.py +361 -0
- sable_sphynx-0.7.0.dev0/src/sphynx/hosted/model_admission.py +130 -0
- sable_sphynx-0.7.0.dev0/src/sphynx/hosted/model_artifacts.py +298 -0
- sable_sphynx-0.7.0.dev0/src/sphynx/hosted/model_contracts.py +63 -0
- sable_sphynx-0.7.0.dev0/src/sphynx/hosted/model_gcs.py +181 -0
- sable_sphynx-0.7.0.dev0/src/sphynx/hosted/model_history.py +84 -0
- sable_sphynx-0.7.0.dev0/src/sphynx/hosted/model_session.py +233 -0
- sable_sphynx-0.7.0.dev0/src/sphynx/hosted/public_suite.py +74 -0
- sable_sphynx-0.7.0.dev0/src/sphynx/hosted/registry.py +97 -0
- sable_sphynx-0.7.0.dev0/src/sphynx/hosted/revisions.py +126 -0
- sable_sphynx-0.7.0.dev0/src/sphynx/hosted/sandbox.py +105 -0
- sable_sphynx-0.7.0.dev0/src/sphynx/hosted/submission.py +287 -0
- sable_sphynx-0.7.0.dev0/src/sphynx/hosted_workflow.py +451 -0
- sable_sphynx-0.7.0.dev0/src/sphynx/http_transport.py +86 -0
- sable_sphynx-0.7.0.dev0/src/sphynx/integrated_rag.py +352 -0
- sable_sphynx-0.7.0.dev0/src/sphynx/integrated_workflow.py +552 -0
- sable_sphynx-0.7.0.dev0/src/sphynx/integration_contracts.py +474 -0
- sable_sphynx-0.7.0.dev0/src/sphynx/invocation.py +791 -0
- sable_sphynx-0.7.0.dev0/src/sphynx/invocation_candidates.py +392 -0
- sable_sphynx-0.7.0.dev0/src/sphynx/invocation_catalog_data.py +40 -0
- sable_sphynx-0.7.0.dev0/src/sphynx/learned_catalog_data.py +30 -0
- sable_sphynx-0.7.0.dev0/src/sphynx/learned_rerank.py +267 -0
- sable_sphynx-0.7.0.dev0/src/sphynx/legacy_full_rag.py +67 -0
- sable_sphynx-0.7.0.dev0/src/sphynx/lifecycle.py +885 -0
- sable_sphynx-0.7.0.dev0/src/sphynx/lifecycle_workflow.py +490 -0
- sable_sphynx-0.7.0.dev0/src/sphynx/metric_views.py +474 -0
- sable_sphynx-0.7.0.dev0/src/sphynx/metrics.py +282 -0
- sable_sphynx-0.7.0.dev0/src/sphynx/model_adapters.py +438 -0
- sable_sphynx-0.7.0.dev0/src/sphynx/model_catalog_data.py +30 -0
- sable_sphynx-0.7.0.dev0/src/sphynx/official_benchmarks.py +385 -0
- sable_sphynx-0.7.0.dev0/src/sphynx/packs.py +258 -0
- sable_sphynx-0.7.0.dev0/src/sphynx/pipeline.py +313 -0
- sable_sphynx-0.7.0.dev0/src/sphynx/pipeline_workflow.py +551 -0
- sable_sphynx-0.7.0.dev0/src/sphynx/pr_evaluations.py +560 -0
- sable_sphynx-0.7.0.dev0/src/sphynx/progress.py +89 -0
- sable_sphynx-0.7.0.dev0/src/sphynx/public_bundle.py +173 -0
- sable_sphynx-0.7.0.dev0/src/sphynx/public_eval.py +62 -0
- sable_sphynx-0.7.0.dev0/src/sphynx/public_rerank.py +355 -0
- sable_sphynx-0.7.0.dev0/src/sphynx/py.typed +0 -0
- sable_sphynx-0.7.0.dev0/src/sphynx/pytest_plugin.py +62 -0
- sable_sphynx-0.7.0.dev0/src/sphynx/question_robustness.py +437 -0
- sable_sphynx-0.7.0.dev0/src/sphynx/rag.py +329 -0
- sable_sphynx-0.7.0.dev0/src/sphynx/rag_diagnostics.py +309 -0
- sable_sphynx-0.7.0.dev0/src/sphynx/rag_papers/__init__.py +29 -0
- sable_sphynx-0.7.0.dev0/src/sphynx/rag_papers/__main__.py +45 -0
- sable_sphynx-0.7.0.dev0/src/sphynx/rag_papers/candidates.py +19 -0
- sable_sphynx-0.7.0.dev0/src/sphynx/rag_papers/contracts.py +282 -0
- sable_sphynx-0.7.0.dev0/src/sphynx/rag_papers/datasets.py +291 -0
- sable_sphynx-0.7.0.dev0/src/sphynx/rag_papers/experiments.py +116 -0
- sable_sphynx-0.7.0.dev0/src/sphynx/rag_papers/judges.py +308 -0
- sable_sphynx-0.7.0.dev0/src/sphynx/rag_papers/registry.py +33 -0
- sable_sphynx-0.7.0.dev0/src/sphynx/rag_papers/runner.py +176 -0
- sable_sphynx-0.7.0.dev0/src/sphynx/rag_papers/sable.py +135 -0
- sable_sphynx-0.7.0.dev0/src/sphynx/rag_papers/schemas.py +12 -0
- sable_sphynx-0.7.0.dev0/src/sphynx/rag_papers/scoring.py +249 -0
- sable_sphynx-0.7.0.dev0/src/sphynx/rag_papers/semantic.py +288 -0
- sable_sphynx-0.7.0.dev0/src/sphynx/rag_papers/trec.py +80 -0
- sable_sphynx-0.7.0.dev0/src/sphynx/recorded_scores.py +352 -0
- sable_sphynx-0.7.0.dev0/src/sphynx/records.py +124 -0
- sable_sphynx-0.7.0.dev0/src/sphynx/reflex_traces.py +193 -0
- sable_sphynx-0.7.0.dev0/src/sphynx/report_rendering.py +71 -0
- sable_sphynx-0.7.0.dev0/src/sphynx/rerank_family_contracts.py +150 -0
- sable_sphynx-0.7.0.dev0/src/sphynx/rerank_workflow.py +424 -0
- sable_sphynx-0.7.0.dev0/src/sphynx/research_candidate.py +190 -0
- sable_sphynx-0.7.0.dev0/src/sphynx/results.py +852 -0
- sable_sphynx-0.7.0.dev0/src/sphynx/retrieval.py +750 -0
- sable_sphynx-0.7.0.dev0/src/sphynx/retrieval_candidates.py +295 -0
- sable_sphynx-0.7.0.dev0/src/sphynx/retrieval_catalog_data.py +19 -0
- sable_sphynx-0.7.0.dev0/src/sphynx/retrieval_recordings.py +125 -0
- sable_sphynx-0.7.0.dev0/src/sphynx/reviewer_audit.py +266 -0
- sable_sphynx-0.7.0.dev0/src/sphynx/routing_policies.py +375 -0
- sable_sphynx-0.7.0.dev0/src/sphynx/runner.py +544 -0
- sable_sphynx-0.7.0.dev0/src/sphynx/sable_rerank.py +489 -0
- sable_sphynx-0.7.0.dev0/src/sphynx/score_reliability.py +393 -0
- sable_sphynx-0.7.0.dev0/src/sphynx/speech_benchmarks.py +204 -0
- sable_sphynx-0.7.0.dev0/src/sphynx/speech_campaigns.py +378 -0
- sable_sphynx-0.7.0.dev0/src/sphynx/speech_complete.py +236 -0
- sable_sphynx-0.7.0.dev0/src/sphynx/speech_contracts.py +225 -0
- sable_sphynx-0.7.0.dev0/src/sphynx/speech_evidence.py +429 -0
- sable_sphynx-0.7.0.dev0/src/sphynx/speech_listening.py +115 -0
- sable_sphynx-0.7.0.dev0/src/sphynx/speech_multilingual.py +71 -0
- sable_sphynx-0.7.0.dev0/src/sphynx/speech_tts.py +479 -0
- sable_sphynx-0.7.0.dev0/src/sphynx/sql/001_sync_v1.sql +30 -0
- sable_sphynx-0.7.0.dev0/src/sphynx/stage_contracts.py +199 -0
- sable_sphynx-0.7.0.dev0/src/sphynx/statistical_catalog_data.py +53 -0
- sable_sphynx-0.7.0.dev0/src/sphynx/statistical_rerank.py +232 -0
- sable_sphynx-0.7.0.dev0/src/sphynx/sync.py +797 -0
- sable_sphynx-0.7.0.dev0/src/sphynx/workbench.py +378 -0
- sable_sphynx-0.7.0.dev0/src/sphynx/workbench_catalog_data.py +13 -0
- sable_sphynx-0.7.0.dev0/src/sphynx/workbench_tracks.py +78 -0
- sable_sphynx-0.7.0.dev0/src/sphynx/workflow_async.py +197 -0
- sable_sphynx-0.7.0.dev0/src/sphynx/workflow_contracts.py +594 -0
- sable_sphynx-0.7.0.dev0/src/sphynx/workflow_decisions.py +211 -0
- sable_sphynx-0.7.0.dev0/src/sphynx/workflow_defaults.py +16 -0
- sable_sphynx-0.7.0.dev0/src/sphynx/workflow_extensions.py +212 -0
- sable_sphynx-0.7.0.dev0/src/sphynx/workflow_registry.py +513 -0
- sable_sphynx-0.7.0.dev0/src/sphynx/workflows.py +792 -0
- sable_sphynx-0.7.0.dev0/tests/__init__.py +1 -0
- sable_sphynx-0.7.0.dev0/tests/data/documentation-0.5.0-source.zip +0 -0
- sable_sphynx-0.7.0.dev0/tests/data/eval-contract-vectors.v1.json +266 -0
- sable_sphynx-0.7.0.dev0/tests/data/learned-reference.v1.json +295 -0
- sable_sphynx-0.7.0.dev0/tests/data/minilm-reference.v1.json +458 -0
- sable_sphynx-0.7.0.dev0/tests/data/rag-diagnostics/dataset.json +6982 -0
- sable_sphynx-0.7.0.dev0/tests/data/rag-diagnostics/judge-audit.json +35 -0
- sable_sphynx-0.7.0.dev0/tests/data/rag-pipeline-dataset.fixture.v1.json +142 -0
- sable_sphynx-0.7.0.dev0/tests/data/rag-source-parity.v1.json +2025 -0
- sable_sphynx-0.7.0.dev0/tests/data/score-reliability-source.v1.json +910 -0
- sable_sphynx-0.7.0.dev0/tests/data/statistical-reference.v1.json +331 -0
- sable_sphynx-0.7.0.dev0/tests/documentation_fixtures.py +77 -0
- sable_sphynx-0.7.0.dev0/tests/fixtures/analytical/SOURCE.json +14 -0
- sable_sphynx-0.7.0.dev0/tests/fixtures/analytical/board-page-fixture.json +214 -0
- sable_sphynx-0.7.0.dev0/tests/fixtures/analytical/projection-page-fixture.json +150 -0
- sable_sphynx-0.7.0.dev0/tests/fixtures/pr-evaluation-v1.json +350 -0
- sable_sphynx-0.7.0.dev0/tests/fixtures/pr-service-v1.json +843 -0
- sable_sphynx-0.7.0.dev0/tests/test_analytical_client.py +112 -0
- sable_sphynx-0.7.0.dev0/tests/test_analytical_views.py +154 -0
- sable_sphynx-0.7.0.dev0/tests/test_assessment_contracts.py +169 -0
- sable_sphynx-0.7.0.dev0/tests/test_assessment_selection.py +88 -0
- sable_sphynx-0.7.0.dev0/tests/test_audit_access.py +259 -0
- sable_sphynx-0.7.0.dev0/tests/test_audit_contracts.py +94 -0
- sable_sphynx-0.7.0.dev0/tests/test_authoring.py +150 -0
- sable_sphynx-0.7.0.dev0/tests/test_candidates.py +425 -0
- sable_sphynx-0.7.0.dev0/tests/test_chunking.py +216 -0
- sable_sphynx-0.7.0.dev0/tests/test_clickhouse_reader.py +143 -0
- sable_sphynx-0.7.0.dev0/tests/test_client_deadlines.py +62 -0
- sable_sphynx-0.7.0.dev0/tests/test_comparison_core.py +196 -0
- sable_sphynx-0.7.0.dev0/tests/test_comparison_views.py +238 -0
- sable_sphynx-0.7.0.dev0/tests/test_components.py +278 -0
- sable_sphynx-0.7.0.dev0/tests/test_contracts.py +183 -0
- sable_sphynx-0.7.0.dev0/tests/test_control_client.py +190 -0
- sable_sphynx-0.7.0.dev0/tests/test_customer_rerank.py +135 -0
- sable_sphynx-0.7.0.dev0/tests/test_customer_retrieval.py +92 -0
- sable_sphynx-0.7.0.dev0/tests/test_dataset_catalog.py +38 -0
- sable_sphynx-0.7.0.dev0/tests/test_dataset_releases.py +167 -0
- sable_sphynx-0.7.0.dev0/tests/test_dataset_v3.py +186 -0
- sable_sphynx-0.7.0.dev0/tests/test_demo.py +123 -0
- sable_sphynx-0.7.0.dev0/tests/test_documentation.py +273 -0
- sable_sphynx-0.7.0.dev0/tests/test_documentation_candidate.py +460 -0
- sable_sphynx-0.7.0.dev0/tests/test_documentation_edits.py +128 -0
- sable_sphynx-0.7.0.dev0/tests/test_documentation_rag_diagnostics.py +40 -0
- sable_sphynx-0.7.0.dev0/tests/test_documentation_user_guide.py +168 -0
- sable_sphynx-0.7.0.dev0/tests/test_evals.py +278 -0
- sable_sphynx-0.7.0.dev0/tests/test_evaluator_binding_integration.py +251 -0
- sable_sphynx-0.7.0.dev0/tests/test_evaluator_bindings.py +196 -0
- sable_sphynx-0.7.0.dev0/tests/test_evaluator_context_integration.py +151 -0
- sable_sphynx-0.7.0.dev0/tests/test_external_rag_packs.py +300 -0
- sable_sphynx-0.7.0.dev0/tests/test_fast_search.py +173 -0
- sable_sphynx-0.7.0.dev0/tests/test_full_rag.py +157 -0
- sable_sphynx-0.7.0.dev0/tests/test_gcs_identity.py +115 -0
- sable_sphynx-0.7.0.dev0/tests/test_general_evaluation_contracts.py +211 -0
- sable_sphynx-0.7.0.dev0/tests/test_hosted_workflow.py +350 -0
- sable_sphynx-0.7.0.dev0/tests/test_http_transport.py +148 -0
- sable_sphynx-0.7.0.dev0/tests/test_integrated_rag.py +185 -0
- sable_sphynx-0.7.0.dev0/tests/test_integrated_workflow.py +465 -0
- sable_sphynx-0.7.0.dev0/tests/test_integration_contracts.py +263 -0
- sable_sphynx-0.7.0.dev0/tests/test_invocation.py +308 -0
- sable_sphynx-0.7.0.dev0/tests/test_invocation_candidates.py +385 -0
- sable_sphynx-0.7.0.dev0/tests/test_learned_rerank.py +109 -0
- sable_sphynx-0.7.0.dev0/tests/test_legacy_full_rag.py +41 -0
- sable_sphynx-0.7.0.dev0/tests/test_lifecycle.py +358 -0
- sable_sphynx-0.7.0.dev0/tests/test_lifecycle_workflow.py +236 -0
- sable_sphynx-0.7.0.dev0/tests/test_metric_views.py +279 -0
- sable_sphynx-0.7.0.dev0/tests/test_model_adapters.py +538 -0
- sable_sphynx-0.7.0.dev0/tests/test_official_benchmarks.py +142 -0
- sable_sphynx-0.7.0.dev0/tests/test_packaged_extensions.py +209 -0
- sable_sphynx-0.7.0.dev0/tests/test_pipeline.py +148 -0
- sable_sphynx-0.7.0.dev0/tests/test_pipeline_workflow.py +200 -0
- sable_sphynx-0.7.0.dev0/tests/test_pr_client.py +240 -0
- sable_sphynx-0.7.0.dev0/tests/test_pr_evaluations.py +181 -0
- sable_sphynx-0.7.0.dev0/tests/test_public_bundle.py +132 -0
- sable_sphynx-0.7.0.dev0/tests/test_public_release_parity.py +83 -0
- sable_sphynx-0.7.0.dev0/tests/test_pytest_integration.py +134 -0
- sable_sphynx-0.7.0.dev0/tests/test_rag_diagnostics_calibration.py +209 -0
- sable_sphynx-0.7.0.dev0/tests/test_rag_diagnostics_cross_review.py +122 -0
- sable_sphynx-0.7.0.dev0/tests/test_rag_diagnostics_engine.py +129 -0
- sable_sphynx-0.7.0.dev0/tests/test_rag_diagnostics_fixtures.py +97 -0
- sable_sphynx-0.7.0.dev0/tests/test_rag_diagnostics_importers.py +219 -0
- sable_sphynx-0.7.0.dev0/tests/test_rag_diagnostics_sdk.py +167 -0
- sable_sphynx-0.7.0.dev0/tests/test_rag_diagnostics_semantic.py +300 -0
- sable_sphynx-0.7.0.dev0/tests/test_rag_diagnostics_semantic_integration.py +232 -0
- sable_sphynx-0.7.0.dev0/tests/test_rag_pack.py +289 -0
- sable_sphynx-0.7.0.dev0/tests/test_rag_paper_connections.py +131 -0
- sable_sphynx-0.7.0.dev0/tests/test_rag_papers.py +334 -0
- sable_sphynx-0.7.0.dev0/tests/test_rag_source_parity.py +30 -0
- sable_sphynx-0.7.0.dev0/tests/test_recorded_scores.py +40 -0
- sable_sphynx-0.7.0.dev0/tests/test_reflex_candidate_ownership.py +95 -0
- sable_sphynx-0.7.0.dev0/tests/test_reflex_minilm_pilot.py +262 -0
- sable_sphynx-0.7.0.dev0/tests/test_reflex_traces.py +120 -0
- sable_sphynx-0.7.0.dev0/tests/test_rerank_family_catalog.py +31 -0
- sable_sphynx-0.7.0.dev0/tests/test_research_candidate.py +58 -0
- sable_sphynx-0.7.0.dev0/tests/test_research_candidate_review.py +83 -0
- sable_sphynx-0.7.0.dev0/tests/test_results.py +276 -0
- sable_sphynx-0.7.0.dev0/tests/test_retrieval.py +303 -0
- sable_sphynx-0.7.0.dev0/tests/test_retrieval_adversarial.py +114 -0
- sable_sphynx-0.7.0.dev0/tests/test_retrieval_candidates.py +136 -0
- sable_sphynx-0.7.0.dev0/tests/test_retrieval_metric_views.py +61 -0
- sable_sphynx-0.7.0.dev0/tests/test_reviewer_audit.py +193 -0
- sable_sphynx-0.7.0.dev0/tests/test_runner.py +342 -0
- sable_sphynx-0.7.0.dev0/tests/test_sable_rerank.py +126 -0
- sable_sphynx-0.7.0.dev0/tests/test_score_reliability.py +162 -0
- sable_sphynx-0.7.0.dev0/tests/test_sdk_experience.py +275 -0
- sable_sphynx-0.7.0.dev0/tests/test_speech_benchmarks.py +256 -0
- sable_sphynx-0.7.0.dev0/tests/test_speech_campaigns.py +145 -0
- sable_sphynx-0.7.0.dev0/tests/test_speech_complete.py +147 -0
- sable_sphynx-0.7.0.dev0/tests/test_speech_evidence.py +340 -0
- sable_sphynx-0.7.0.dev0/tests/test_speech_listening.py +49 -0
- sable_sphynx-0.7.0.dev0/tests/test_speech_multilingual.py +48 -0
- sable_sphynx-0.7.0.dev0/tests/test_speech_tts.py +271 -0
- sable_sphynx-0.7.0.dev0/tests/test_speech_verification.py +27 -0
- sable_sphynx-0.7.0.dev0/tests/test_stage_contracts.py +114 -0
- sable_sphynx-0.7.0.dev0/tests/test_statistical_rerank.py +106 -0
- sable_sphynx-0.7.0.dev0/tests/test_sync.py +417 -0
- sable_sphynx-0.7.0.dev0/tests/test_workbench_tracks.py +84 -0
- sable_sphynx-0.7.0.dev0/tests/test_workflow_async.py +198 -0
- sable_sphynx-0.7.0.dev0/tests/test_workflow_compatibility.py +186 -0
- sable_sphynx-0.7.0.dev0/tests/test_workflow_contracts.py +569 -0
- sable_sphynx-0.7.0.dev0/tests/test_workflow_decisions.py +179 -0
- sable_sphynx-0.7.0.dev0/tests/test_workflow_extensions.py +408 -0
- sable_sphynx-0.7.0.dev0/tests/test_workflows.py +227 -0
- sable_sphynx-0.7.0.dev0/tests/typing/sdk_workflows.py +137 -0
- sable_sphynx-0.7.0.dev0/tools/apply_documentation_edits.py +103 -0
- sable_sphynx-0.7.0.dev0/tools/check_public_types.py +59 -0
- sable_sphynx-0.7.0.dev0/tools/check_sdk_consistency.py +247 -0
- sable_sphynx-0.7.0.dev0/tools/export_documentation.py +7 -0
- sable_sphynx-0.7.0.dev0/tools/hosted/run_reflex_minilm_pilot.py +235 -0
- sable_sphynx-0.7.0.dev0/tools/integration/build_paper_schemas.py +54 -0
- sable_sphynx-0.7.0.dev0/tools/integration/build_rag_diagnostics_fixtures.py +268 -0
- sable_sphynx-0.7.0.dev0/tools/integration/check_readonly_clickhouse.py +109 -0
- sable_sphynx-0.7.0.dev0/tools/integration/import_rag_diagnostics_beir.py +40 -0
- sable_sphynx-0.7.0.dev0/tools/integration/installed_research_smoke.py +53 -0
- sable_sphynx-0.7.0.dev0/tools/integration/run_installed_050_tests.py +24 -0
- sable_sphynx-0.7.0.dev0/tools/integration/run_installed_rag_tests.py +39 -0
- sable_sphynx-0.7.0.dev0/tools/integration/run_installed_research_tests.py +247 -0
- sable_sphynx-0.7.0.dev0/tools/integration/validate_paper_methods.py +45 -0
- sable_sphynx-0.7.0.dev0/tools/integration/validate_sampling_uncertainty.py +97 -0
- sable_sphynx-0.7.0.dev0/tools/integration/verify_kido_benchmarks.py +66 -0
- sable_sphynx-0.7.0.dev0/tools/integration/verify_kido_complete.py +100 -0
- sable_sphynx-0.7.0.dev0/tools/integration/verify_reflex_candidate_ownership.py +297 -0
- sable_sphynx-0.7.0.dev0/tools/integration/verify_rerank_family_parity.py +162 -0
- sable_sphynx-0.7.0.dev0/tools/integration/verify_saved_speech.py +90 -0
- sable_sphynx-0.7.0.dev0/tools/release/build_release.py +246 -0
- sable_sphynx-0.7.0.dev0/tools/release/check_release.py +320 -0
- sable_sphynx-0.7.0.dev0/tools/release/installed_smoke.py +256 -0
- sable_sphynx-0.7.0.dev0/tools/release/prepare_publication.py +47 -0
- sable_sphynx-0.7.0.dev0/tools/release/run_regressions.py +298 -0
- sable_sphynx-0.7.0.dev0/tools/release/source_allowlist.json +1666 -0
- sable_sphynx-0.7.0.dev0/tools/release/summarize_release.py +77 -0
- sable_sphynx-0.7.0.dev0/tools/release/test_release_checks.py +224 -0
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
# Retain exact reviewed release bytes on every runner.
|
|
2
|
+
dist/rag-parity-0.4.0.dev5-verified/** -text
|
|
3
|
+
|
|
4
|
+
dist/sable-sphynx-0.4.0/** -text
|
|
5
|
+
|
|
6
|
+
# New paper protocols use exact LF bytes for portable implementation receipts.
|
|
7
|
+
src/sphynx/rag_papers/*.py text eol=lf
|
|
8
|
+
src/sphynx/data/rag-paper-*.json text eol=lf
|
|
9
|
+
tests/test_rag_paper*.py text eol=lf
|
|
10
|
+
tools/integration/*paper*.py text eol=lf
|
|
11
|
+
examples/rag_papers.py text eol=lf
|
|
12
|
+
docs/rag-paper-methods.md text eol=lf
|
|
13
|
+
docs/explorations.md text eol=lf
|
|
14
|
+
.github/workflows/rag-papers.yml text eol=lf
|
|
15
|
+
|
|
16
|
+
# Immutable 0.5.0 release bytes.
|
|
17
|
+
dist/sable-sphynx-0.5.0/** -text
|
|
18
|
+
|
|
19
|
+
# Family catalogs pin exact LF implementation bytes across every checkout.
|
|
20
|
+
src/sphynx/statistical_rerank.py text eol=lf
|
|
21
|
+
src/sphynx/learned_rerank.py text eol=lf
|
|
22
|
+
src/sphynx/rerank_family_contracts.py text eol=lf
|
|
23
|
+
|
|
24
|
+
# Native analytical response receipts pin exact LF fixture bytes.
|
|
25
|
+
tests/fixtures/analytical/*.json text eol=lf
|
|
26
|
+
|
|
27
|
+
# Recovered private server files are bound byte for byte by bridge/SOURCE.json.
|
|
28
|
+
services/private-control-plane/bridge/src/** -text
|
|
29
|
+
|
|
30
|
+
# Linux startup and frozen probe source retain portable LF bytes.
|
|
31
|
+
services/private-control-plane/staging/*.sh text eol=lf
|
|
32
|
+
services/private-control-plane/staging/candidate/*.py text eol=lf
|
|
33
|
+
|
|
34
|
+
# First Sable preview publication; frozen reviewed distribution bytes.
|
|
35
|
+
dist/sable-sphynx-0.7.0.dev0/** -text
|
|
36
|
+
|
|
37
|
+
# Permanent Linux boot scripts preserve their reviewed bytes.
|
|
38
|
+
services/private-control-plane/permanent/*.sh text eol=lf
|
|
39
|
+
|
|
40
|
+
# Original server resource closure is bound by its own image/hash manifest.
|
|
41
|
+
services/private-control-plane/bridge/runtime-data/** -text
|
|
@@ -0,0 +1,211 @@
|
|
|
1
|
+
name: Sable Sphynx validate and publish
|
|
2
|
+
|
|
3
|
+
on:
|
|
4
|
+
workflow_dispatch:
|
|
5
|
+
inputs:
|
|
6
|
+
destination:
|
|
7
|
+
description: Validate only, or publish the approved public package
|
|
8
|
+
type: choice
|
|
9
|
+
options: [validate, pypi]
|
|
10
|
+
default: validate
|
|
11
|
+
required: true
|
|
12
|
+
approved_manifest_sha256:
|
|
13
|
+
description: Exact SHA256 of PUBLICATION.json from the reviewed packet (required for pypi)
|
|
14
|
+
type: string
|
|
15
|
+
required: false
|
|
16
|
+
confirmation:
|
|
17
|
+
description: For publication enter publish sable-sphynx 0.7.0.dev0
|
|
18
|
+
type: string
|
|
19
|
+
required: false
|
|
20
|
+
pull_request:
|
|
21
|
+
paths:
|
|
22
|
+
- dist/sable-sphynx-0.7.0.dev0/**
|
|
23
|
+
- tools/release/**
|
|
24
|
+
- .github/workflows/publish-pypi.yml
|
|
25
|
+
push:
|
|
26
|
+
branches: [main]
|
|
27
|
+
paths:
|
|
28
|
+
- dist/sable-sphynx-0.7.0.dev0/**
|
|
29
|
+
- tools/release/**
|
|
30
|
+
- .github/workflows/publish-pypi.yml
|
|
31
|
+
|
|
32
|
+
permissions:
|
|
33
|
+
contents: read
|
|
34
|
+
|
|
35
|
+
jobs:
|
|
36
|
+
installed:
|
|
37
|
+
name: ${{ matrix.slot }} approved bytes
|
|
38
|
+
runs-on: ${{ matrix.os }}
|
|
39
|
+
timeout-minutes: 20
|
|
40
|
+
strategy:
|
|
41
|
+
fail-fast: false
|
|
42
|
+
matrix:
|
|
43
|
+
include:
|
|
44
|
+
- {slot: windows-311, os: windows-latest, python: '3.11'}
|
|
45
|
+
- {slot: windows-312, os: windows-latest, python: '3.12'}
|
|
46
|
+
- {slot: windows-314, os: windows-latest, python: '3.14'}
|
|
47
|
+
- {slot: macos-311, os: macos-latest, python: '3.11'}
|
|
48
|
+
- {slot: macos-312, os: macos-latest, python: '3.12'}
|
|
49
|
+
- {slot: linux-311, os: ubuntu-latest, python: '3.11'}
|
|
50
|
+
- {slot: linux-312, os: ubuntu-latest, python: '3.12'}
|
|
51
|
+
steps:
|
|
52
|
+
- uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7
|
|
53
|
+
with:
|
|
54
|
+
persist-credentials: false
|
|
55
|
+
sparse-checkout: |
|
|
56
|
+
tools/release
|
|
57
|
+
dist/sable-sphynx-0.7.0.dev0
|
|
58
|
+
- uses: actions/setup-python@5fda3b95a4ea91299a34e894583c3862153e4b97 # v7
|
|
59
|
+
with:
|
|
60
|
+
python-version: ${{ matrix.python }}
|
|
61
|
+
# Every slot installs the same prebuilt wheel/sdist/source bytes from this
|
|
62
|
+
# approved commit. No slot builds replacement distribution artifacts.
|
|
63
|
+
# The release-only -text rule preserves these files before approved
|
|
64
|
+
# staging, so checkout transports SHA256SUMS and identity bytes exactly.
|
|
65
|
+
- name: Check all normal installs and record runtime/checksums
|
|
66
|
+
run: >
|
|
67
|
+
python -I tools/release/check_release.py
|
|
68
|
+
--version 0.7.0.dev0 --distribution sable-sphynx
|
|
69
|
+
--release-dir dist/sable-sphynx-0.7.0.dev0
|
|
70
|
+
--evidence-dir "${{ runner.temp }}/sdk smoke evidence/${{ matrix.slot }}"
|
|
71
|
+
--runtime-origin "GitHub actions/setup-python v7; ${{ runner.os }}; requested CPython ${{ matrix.python }}; approved commit ${{ github.sha }}"
|
|
72
|
+
- name: Validate pilot contracts from the exact installed wheel
|
|
73
|
+
shell: bash
|
|
74
|
+
run: |
|
|
75
|
+
python -I -m venv "$RUNNER_TEMP/pilot-regression-venv"
|
|
76
|
+
if [[ "$RUNNER_OS" == "Windows" ]]; then
|
|
77
|
+
PILOT_PYTHON="$RUNNER_TEMP/pilot-regression-venv/Scripts/python.exe"
|
|
78
|
+
else
|
|
79
|
+
PILOT_PYTHON="$RUNNER_TEMP/pilot-regression-venv/bin/python"
|
|
80
|
+
fi
|
|
81
|
+
"$PILOT_PYTHON" -I -m pip --isolated install --no-index --no-deps dist/sable-sphynx-0.7.0.dev0/sable_sphynx-0.7.0.dev0-py3-none-any.whl
|
|
82
|
+
python -I - "$RUNNER_TEMP/pilot source" <<'PY'
|
|
83
|
+
import importlib.util, sys
|
|
84
|
+
from pathlib import Path
|
|
85
|
+
spec = importlib.util.spec_from_file_location("checks", "tools/release/check_release.py")
|
|
86
|
+
checks = importlib.util.module_from_spec(spec)
|
|
87
|
+
spec.loader.exec_module(checks)
|
|
88
|
+
checks.set_release_version("0.7.0.dev0", "sable-sphynx")
|
|
89
|
+
release = Path("dist/sable-sphynx-0.7.0.dev0").resolve()
|
|
90
|
+
checks.verify_checksums(release)
|
|
91
|
+
_, files = checks.load_identity(release / checks.MANIFEST)
|
|
92
|
+
checks.extract_source(release / checks.SOURCE, Path(sys.argv[1]), files)
|
|
93
|
+
PY
|
|
94
|
+
"$PILOT_PYTHON" -I "$RUNNER_TEMP/pilot source/tools/release/run_regressions.py" --version 0.7.0.dev0 --distribution sable-sphynx --source-root "$RUNNER_TEMP/pilot source" --release-dir dist/sable-sphynx-0.7.0.dev0 --evidence-dir "$RUNNER_TEMP/pilot regressions/${{ matrix.slot }}" --runtime-origin "GitHub actions/setup-python; ${{ matrix.slot }}; ${{ github.sha }}"
|
|
95
|
+
# Multiple upload paths retain their common ancestor. Consolidate the
|
|
96
|
+
# two evidence trees so aggregate lookup has one predictable slot root.
|
|
97
|
+
- name: Collect synthetic evidence into one slot folder
|
|
98
|
+
if: always()
|
|
99
|
+
shell: bash
|
|
100
|
+
run: |
|
|
101
|
+
python -I - "${{ runner.temp }}" "${{ matrix.slot }}" <<'PY'
|
|
102
|
+
import shutil, sys
|
|
103
|
+
from pathlib import Path
|
|
104
|
+
root, slot = Path(sys.argv[1]), sys.argv[2]
|
|
105
|
+
target = root / "sdk evidence upload" / slot
|
|
106
|
+
target.mkdir(parents=True, exist_ok=False)
|
|
107
|
+
for source in (root / "sdk smoke evidence" / slot,
|
|
108
|
+
root / "pilot regressions" / slot):
|
|
109
|
+
for suffix in ("*.json", "*.log"):
|
|
110
|
+
for path in sorted(source.glob(suffix)):
|
|
111
|
+
output = target / path.name
|
|
112
|
+
if output.exists():
|
|
113
|
+
raise RuntimeError("Duplicate evidence filename: " + path.name)
|
|
114
|
+
shutil.copyfile(path, output)
|
|
115
|
+
PY
|
|
116
|
+
- name: Retain synthetic logs and aggregate identities
|
|
117
|
+
if: always()
|
|
118
|
+
uses: actions/upload-artifact@cf430e030ddbb5b0abf93d22962f4752f3646cd9 # v7
|
|
119
|
+
with:
|
|
120
|
+
name: sdk-release-smoke-${{ matrix.slot }}
|
|
121
|
+
path: ${{ runner.temp }}/sdk evidence upload/${{ matrix.slot }}/
|
|
122
|
+
if-no-files-found: error
|
|
123
|
+
retention-days: 7
|
|
124
|
+
include-hidden-files: false
|
|
125
|
+
|
|
126
|
+
aggregate:
|
|
127
|
+
name: Seven-slot approved-byte evidence
|
|
128
|
+
needs: installed
|
|
129
|
+
if: always()
|
|
130
|
+
runs-on: ubuntu-latest
|
|
131
|
+
timeout-minutes: 5
|
|
132
|
+
steps:
|
|
133
|
+
- uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7
|
|
134
|
+
with:
|
|
135
|
+
persist-credentials: false
|
|
136
|
+
sparse-checkout: tools/release
|
|
137
|
+
- uses: actions/setup-python@5fda3b95a4ea91299a34e894583c3862153e4b97 # v7
|
|
138
|
+
with:
|
|
139
|
+
python-version: '3.12'
|
|
140
|
+
- uses: actions/download-artifact@37930b1c2abaa49bbe596cd826c3c89aef350131 # v7
|
|
141
|
+
with:
|
|
142
|
+
pattern: sdk-release-smoke-*
|
|
143
|
+
path: ${{ runner.temp }}/sdk smoke aggregate inputs
|
|
144
|
+
merge-multiple: false
|
|
145
|
+
- name: Require seven passing slots and identical approved bytes
|
|
146
|
+
run: >
|
|
147
|
+
python -I tools/release/summarize_release.py
|
|
148
|
+
--require-pilot-regressions --version 0.7.0.dev0 --distribution sable-sphynx
|
|
149
|
+
--input-dir "${{ runner.temp }}/sdk smoke aggregate inputs"
|
|
150
|
+
--output "${{ runner.temp }}/sdk smoke matrix.json"
|
|
151
|
+
- name: Retain synthetic matrix summary
|
|
152
|
+
if: always()
|
|
153
|
+
uses: actions/upload-artifact@cf430e030ddbb5b0abf93d22962f4752f3646cd9 # v7
|
|
154
|
+
with:
|
|
155
|
+
name: sdk-release-smoke-matrix
|
|
156
|
+
path: ${{ runner.temp }}/sdk smoke matrix.json
|
|
157
|
+
if-no-files-found: error
|
|
158
|
+
retention-days: 7
|
|
159
|
+
include-hidden-files: false
|
|
160
|
+
publish:
|
|
161
|
+
name: Publish reviewed distributions to PyPI
|
|
162
|
+
needs: [installed, aggregate]
|
|
163
|
+
if: github.event_name == 'workflow_dispatch' && github.ref == 'refs/heads/main' && inputs.destination == 'pypi'
|
|
164
|
+
runs-on: ubuntu-latest
|
|
165
|
+
timeout-minutes: 5
|
|
166
|
+
environment: pypi
|
|
167
|
+
permissions:
|
|
168
|
+
contents: read
|
|
169
|
+
id-token: write
|
|
170
|
+
steps:
|
|
171
|
+
- uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7
|
|
172
|
+
with:
|
|
173
|
+
persist-credentials: false
|
|
174
|
+
sparse-checkout: dist/sable-sphynx-0.7.0.dev0
|
|
175
|
+
- uses: actions/setup-python@5fda3b95a4ea91299a34e894583c3862153e4b97 # v7
|
|
176
|
+
with:
|
|
177
|
+
python-version: '3.12'
|
|
178
|
+
- name: Copy only the two reviewed public distributions
|
|
179
|
+
env:
|
|
180
|
+
PUBLISH_DIR: ${{ runner.temp }}/publish-dist
|
|
181
|
+
APPROVED_MANIFEST_SHA256: ${{ inputs.approved_manifest_sha256 }}
|
|
182
|
+
CONFIRMATION: ${{ inputs.confirmation }}
|
|
183
|
+
run: |
|
|
184
|
+
python -I - <<'PY'
|
|
185
|
+
import hashlib, json, os, shutil
|
|
186
|
+
from pathlib import Path
|
|
187
|
+
release = Path("dist/sable-sphynx-0.7.0.dev0")
|
|
188
|
+
raw = (release / "PUBLICATION.json").read_bytes()
|
|
189
|
+
if (hashlib.sha256(raw).hexdigest() != os.environ["APPROVED_MANIFEST_SHA256"]
|
|
190
|
+
or os.environ["CONFIRMATION"] != "publish sable-sphynx 0.7.0.dev0"):
|
|
191
|
+
raise ValueError("Explicit approval must bind the exact reviewed publication manifest")
|
|
192
|
+
manifest = json.loads(raw)
|
|
193
|
+
expected = {"sable_sphynx-0.7.0.dev0-py3-none-any.whl", "sable_sphynx-0.7.0.dev0.tar.gz"}
|
|
194
|
+
if (manifest.get("distribution") != "sable-sphynx" or manifest.get("version") != "0.7.0.dev0"
|
|
195
|
+
or len(manifest["files"]) != 2 or {r["filename"] for r in manifest["files"]} != expected):
|
|
196
|
+
raise ValueError("Publication inventory mismatch")
|
|
197
|
+
hashes = dict(line.split(" ", 1)[::-1] for line in (release / "SHA256SUMS").read_text().splitlines())
|
|
198
|
+
for row in manifest["files"]:
|
|
199
|
+
source = release / row["filename"]
|
|
200
|
+
actual = hashlib.sha256(source.read_bytes()).hexdigest()
|
|
201
|
+
if source.is_symlink() or actual != row["sha256"] or actual != hashes[row["filename"]]:
|
|
202
|
+
raise ValueError("Publication bytes differ from validated release")
|
|
203
|
+
destination = Path(os.environ["PUBLISH_DIR"])
|
|
204
|
+
destination.mkdir(exist_ok=False)
|
|
205
|
+
for row in manifest["files"]:
|
|
206
|
+
shutil.copyfile(release / row["filename"], destination / row["filename"])
|
|
207
|
+
PY
|
|
208
|
+
- name: Publish with PyPI Trusted Publishing
|
|
209
|
+
uses: pypa/gh-action-pypi-publish@dc37677b2e1c63e2034f94d8a5b11f265b73ba33 # official release/v1
|
|
210
|
+
with:
|
|
211
|
+
packages-dir: ${{ runner.temp }}/publish-dist
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
name: Paper-named RAG source protocols
|
|
2
|
+
on:
|
|
3
|
+
pull_request:
|
|
4
|
+
paths:
|
|
5
|
+
- src/sphynx/rag_papers/**
|
|
6
|
+
- src/sphynx/data/rag-paper-*.json
|
|
7
|
+
- tests/test_rag_paper*.py
|
|
8
|
+
- tools/integration/build_paper_schemas.py
|
|
9
|
+
- tools/integration/validate_paper_methods.py
|
|
10
|
+
- .github/workflows/rag-papers.yml
|
|
11
|
+
permissions:
|
|
12
|
+
contents: read
|
|
13
|
+
jobs:
|
|
14
|
+
offline:
|
|
15
|
+
runs-on: ubuntu-latest
|
|
16
|
+
strategy:
|
|
17
|
+
matrix:
|
|
18
|
+
python: ['3.11', '3.12']
|
|
19
|
+
steps:
|
|
20
|
+
- uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7
|
|
21
|
+
with:
|
|
22
|
+
persist-credentials: false
|
|
23
|
+
- uses: actions/setup-python@5fda3b95a4ea91299a34e894583c3862153e4b97 # v7
|
|
24
|
+
with:
|
|
25
|
+
python-version: ${{ matrix.python }}
|
|
26
|
+
- name: Install schema test dependency (SDK runtime remains stdlib)
|
|
27
|
+
run: python -m pip install jsonschema==4.23.0
|
|
28
|
+
- name: Paper rules, native formats, Sable joins and portable contracts
|
|
29
|
+
env:
|
|
30
|
+
PYTHONPATH: src
|
|
31
|
+
PYTHONDONTWRITEBYTECODE: '1'
|
|
32
|
+
run: >-
|
|
33
|
+
python -m unittest tests.test_rag_papers tests.test_rag_paper_connections
|
|
34
|
+
tests.test_reflex_traces tests.test_official_benchmarks
|
|
35
|
+
tests.test_rag_diagnostics_calibration tests.test_rag_diagnostics_engine
|
|
36
|
+
tests.test_rag_diagnostics_importers tests.test_rag_diagnostics_sdk
|
|
37
|
+
tests.test_rag_diagnostics_semantic tests.test_rag_diagnostics_semantic_integration
|
|
38
|
+
tests.test_dataset_v3 tests.test_full_rag -q
|
|
39
|
+
- name: Ensure portable schemas match their committed definition
|
|
40
|
+
run: |
|
|
41
|
+
python tools/integration/build_paper_schemas.py
|
|
42
|
+
git diff --exit-code -- src/sphynx/data/rag-paper-schemas.v1.json
|
|
@@ -0,0 +1,159 @@
|
|
|
1
|
+
name: SDK 0.5.0 release verification
|
|
2
|
+
|
|
3
|
+
on:
|
|
4
|
+
workflow_dispatch:
|
|
5
|
+
push:
|
|
6
|
+
branches: [codex/sphynx-0-5-0-release]
|
|
7
|
+
paths:
|
|
8
|
+
- dist/sable-sphynx-0.5.0/**
|
|
9
|
+
- tools/integration/run_installed_research_tests.py
|
|
10
|
+
- tools/integration/installed_research_smoke.py
|
|
11
|
+
- tools/integration/run_installed_050_tests.py
|
|
12
|
+
- .github/workflows/sdk-0-5-release.yml
|
|
13
|
+
|
|
14
|
+
permissions:
|
|
15
|
+
contents: read
|
|
16
|
+
|
|
17
|
+
jobs:
|
|
18
|
+
installed:
|
|
19
|
+
name: ${{ matrix.slot }} reviewed wheel
|
|
20
|
+
runs-on: ${{ matrix.os }}
|
|
21
|
+
timeout-minutes: 20
|
|
22
|
+
strategy:
|
|
23
|
+
fail-fast: false
|
|
24
|
+
matrix:
|
|
25
|
+
include:
|
|
26
|
+
- {slot: windows-311, os: windows-latest, python: '3.11'}
|
|
27
|
+
- {slot: windows-312, os: windows-latest, python: '3.12'}
|
|
28
|
+
- {slot: windows-314, os: windows-latest, python: '3.14'}
|
|
29
|
+
- {slot: macos-311, os: macos-latest, python: '3.11'}
|
|
30
|
+
- {slot: macos-312, os: macos-latest, python: '3.12'}
|
|
31
|
+
- {slot: linux-311, os: ubuntu-latest, python: '3.11'}
|
|
32
|
+
- {slot: linux-312, os: ubuntu-latest, python: '3.12'}
|
|
33
|
+
steps:
|
|
34
|
+
- uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7
|
|
35
|
+
with:
|
|
36
|
+
persist-credentials: false
|
|
37
|
+
sparse-checkout: dist/sable-sphynx-0.5.0
|
|
38
|
+
- uses: actions/setup-python@5fda3b95a4ea91299a34e894583c3862153e4b97 # v7
|
|
39
|
+
with:
|
|
40
|
+
python-version: ${{ matrix.python }}
|
|
41
|
+
# The same reviewed wheel/source artifacts are installed in every slot.
|
|
42
|
+
# No replacement wheel or model is built. jsonschema is a dev-only test dependency.
|
|
43
|
+
- name: Verify reviewed bytes and extract only the verification tools
|
|
44
|
+
shell: bash
|
|
45
|
+
run: |
|
|
46
|
+
unset PYTHONPATH
|
|
47
|
+
python -I - "$RUNNER_TEMP/research tools" <<'PY'
|
|
48
|
+
import hashlib,json,sys,zipfile
|
|
49
|
+
from pathlib import Path
|
|
50
|
+
release=Path("dist/sable-sphynx-0.5.0")
|
|
51
|
+
expected_names={"sable_sphynx-0.5.0-py3-none-any.whl","sable_sphynx-0.5.0.tar.gz","sable-sphynx-0.5.0-source.zip","SOURCE_IDENTITY.json"}
|
|
52
|
+
expected={}
|
|
53
|
+
for line in (release/"SHA256SUMS").read_text(encoding="ascii").splitlines():
|
|
54
|
+
sha,name=line.split()
|
|
55
|
+
assert name in expected_names and name not in expected
|
|
56
|
+
assert hashlib.sha256((release/name).read_bytes()).hexdigest()==sha
|
|
57
|
+
expected[name]=sha
|
|
58
|
+
assert set(expected)==expected_names
|
|
59
|
+
identity=json.loads((release/"SOURCE_IDENTITY.json").read_text(encoding="utf-8"))
|
|
60
|
+
assert identity["sdk_version"]=="0.5.0" and identity["distribution"]=="sable-sphynx"
|
|
61
|
+
files={row["path"]:row["sha256"] for row in identity["files"]}
|
|
62
|
+
output=Path(sys.argv[1]);output.mkdir()
|
|
63
|
+
with zipfile.ZipFile(release/"sable-sphynx-0.5.0-source.zip") as archive:
|
|
64
|
+
for name in ("run_installed_research_tests.py","run_installed_050_tests.py","installed_research_smoke.py"):
|
|
65
|
+
relative="tools/integration/"+name
|
|
66
|
+
raw=archive.read("sable-sphynx-0.5.0-source/"+relative)
|
|
67
|
+
assert hashlib.sha256(raw).hexdigest()==files[relative]
|
|
68
|
+
(output/name).write_bytes(raw)
|
|
69
|
+
PY
|
|
70
|
+
- name: Install offline into a fresh consumer interpreter and test the wheel
|
|
71
|
+
shell: bash
|
|
72
|
+
run: |
|
|
73
|
+
unset PYTHONPATH
|
|
74
|
+
python -I -m venv "$RUNNER_TEMP/research consumer"
|
|
75
|
+
if [[ "$RUNNER_OS" == "Windows" ]]; then
|
|
76
|
+
CONSUMER_PYTHON="$RUNNER_TEMP/research consumer/Scripts/python.exe"
|
|
77
|
+
else
|
|
78
|
+
CONSUMER_PYTHON="$RUNNER_TEMP/research consumer/bin/python"
|
|
79
|
+
fi
|
|
80
|
+
RELEASE_DIR="$GITHUB_WORKSPACE/dist/sable-sphynx-0.5.0"
|
|
81
|
+
# macOS /var is a system symlink. Keep strict evidence link rejection
|
|
82
|
+
# and give synthetic fixtures the canonical temporary-directory path.
|
|
83
|
+
if [[ "$RUNNER_OS" == "macOS" ]]; then
|
|
84
|
+
export TMPDIR="$(python -I -c 'import pathlib,tempfile; print(pathlib.Path(tempfile.gettempdir()).resolve())')"
|
|
85
|
+
fi
|
|
86
|
+
"$CONSUMER_PYTHON" -I -m pip --isolated install --no-index --no-deps "$RELEASE_DIR/sable_sphynx-0.5.0-py3-none-any.whl"
|
|
87
|
+
"$CONSUMER_PYTHON" -I -m pip --isolated install jsonschema==4.23.0
|
|
88
|
+
mkdir "$RUNNER_TEMP/research consumer cwd"
|
|
89
|
+
cd "$RUNNER_TEMP/research consumer cwd"
|
|
90
|
+
"$CONSUMER_PYTHON" -I "$RUNNER_TEMP/research tools/installed_research_smoke.py" --output-dir "$RUNNER_TEMP/research evidence/${{ matrix.slot }}/smoke"
|
|
91
|
+
"$CONSUMER_PYTHON" -I "$RUNNER_TEMP/research tools/run_installed_050_tests.py" --release-dir "$RELEASE_DIR" --slot "${{ matrix.slot }}" --evidence-dir "$RUNNER_TEMP/research evidence/${{ matrix.slot }}/tests"
|
|
92
|
+
- name: Retain synthetic aggregate reports and test-name logs
|
|
93
|
+
if: always()
|
|
94
|
+
uses: actions/upload-artifact@cf430e030ddbb5b0abf93d22962f4752f3646cd9 # v7
|
|
95
|
+
with:
|
|
96
|
+
name: sdk-0-5-release-${{ matrix.slot }}
|
|
97
|
+
path: |
|
|
98
|
+
${{ runner.temp }}/research evidence/${{ matrix.slot }}/smoke/VERIFICATION.json
|
|
99
|
+
${{ runner.temp }}/research evidence/${{ matrix.slot }}/tests/RESEARCH_TESTS.json
|
|
100
|
+
${{ runner.temp }}/research evidence/${{ matrix.slot }}/tests/unittest.log
|
|
101
|
+
if-no-files-found: error
|
|
102
|
+
retention-days: 7
|
|
103
|
+
include-hidden-files: false
|
|
104
|
+
|
|
105
|
+
aggregate:
|
|
106
|
+
name: Seven platforms using identical reviewed bytes
|
|
107
|
+
needs: installed
|
|
108
|
+
if: always()
|
|
109
|
+
runs-on: ubuntu-latest
|
|
110
|
+
timeout-minutes: 5
|
|
111
|
+
steps:
|
|
112
|
+
- uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7
|
|
113
|
+
with:
|
|
114
|
+
persist-credentials: false
|
|
115
|
+
sparse-checkout: |
|
|
116
|
+
dist/sable-sphynx-0.5.0
|
|
117
|
+
- uses: actions/setup-python@5fda3b95a4ea91299a34e894583c3862153e4b97 # v7
|
|
118
|
+
with:
|
|
119
|
+
python-version: '3.12'
|
|
120
|
+
- name: Extract the exact reviewed aggregate tools
|
|
121
|
+
run: |
|
|
122
|
+
python -I - "${{ runner.temp }}/stable aggregate tools" <<'PY'
|
|
123
|
+
import hashlib,json,sys,zipfile
|
|
124
|
+
from pathlib import Path
|
|
125
|
+
release=Path("dist/sable-sphynx-0.5.0")
|
|
126
|
+
for line in (release/"SHA256SUMS").read_text(encoding="ascii").splitlines():
|
|
127
|
+
sha,name=line.split()
|
|
128
|
+
assert name in {"SOURCE_IDENTITY.json","sable_sphynx-0.5.0-py3-none-any.whl","sable_sphynx-0.5.0.tar.gz","sable-sphynx-0.5.0-source.zip"}
|
|
129
|
+
assert hashlib.sha256((release/name).read_bytes()).hexdigest()==sha
|
|
130
|
+
identity=json.loads((release/"SOURCE_IDENTITY.json").read_text(encoding="utf-8"))
|
|
131
|
+
files={row["path"]:row["sha256"] for row in identity["files"]}
|
|
132
|
+
output=Path(sys.argv[1]);output.mkdir()
|
|
133
|
+
with zipfile.ZipFile(release/"sable-sphynx-0.5.0-source.zip") as archive:
|
|
134
|
+
for name in ("run_installed_research_tests.py","run_installed_050_tests.py"):
|
|
135
|
+
relative="tools/integration/"+name
|
|
136
|
+
raw=archive.read("sable-sphynx-0.5.0-source/"+relative)
|
|
137
|
+
assert hashlib.sha256(raw).hexdigest()==files[relative]
|
|
138
|
+
(output/name).write_bytes(raw)
|
|
139
|
+
PY
|
|
140
|
+
- uses: actions/download-artifact@37930b1c2abaa49bbe596cd826c3c89aef350131 # v7
|
|
141
|
+
with:
|
|
142
|
+
pattern: sdk-0-5-release-*
|
|
143
|
+
path: ${{ runner.temp }}/research aggregate inputs
|
|
144
|
+
merge-multiple: false
|
|
145
|
+
- name: Require seven passing slots with matching release and test hashes
|
|
146
|
+
run: >
|
|
147
|
+
python -I "${{ runner.temp }}/stable aggregate tools/run_installed_050_tests.py"
|
|
148
|
+
--release-dir dist/sable-sphynx-0.5.0
|
|
149
|
+
--aggregate "${{ runner.temp }}/research aggregate inputs"
|
|
150
|
+
--output "${{ runner.temp }}/research matrix.json"
|
|
151
|
+
- name: Retain synthetic matrix summary
|
|
152
|
+
if: always()
|
|
153
|
+
uses: actions/upload-artifact@cf430e030ddbb5b0abf93d22962f4752f3646cd9 # v7
|
|
154
|
+
with:
|
|
155
|
+
name: sdk-0-5-release-matrix
|
|
156
|
+
path: ${{ runner.temp }}/research matrix.json
|
|
157
|
+
if-no-files-found: error
|
|
158
|
+
retention-days: 7
|
|
159
|
+
include-hidden-files: false
|