mostlyright-data 0.11.1__tar.gz → 0.12.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 (562) hide show
  1. {mostlyright_data-0.11.1 → mostlyright_data-0.12.0}/PKG-INFO +1 -1
  2. {mostlyright_data-0.11.1 → mostlyright_data-0.12.0}/pyproject.toml +1 -1
  3. {mostlyright_data-0.11.1 → mostlyright_data-0.12.0}/skills/mr-data-build/SKILL.md +38 -11
  4. {mostlyright_data-0.11.1 → mostlyright_data-0.12.0}/src/mostlyright/data_harness/hosted_run_worker.py +160 -19
  5. {mostlyright_data-0.11.1 → mostlyright_data-0.12.0}/src/mostlyright/data_harness/run_execution_v4.py +190 -9
  6. {mostlyright_data-0.11.1 → mostlyright_data-0.12.0}/src/mostlyright/data_harness/studio_boundary.py +1 -1
  7. {mostlyright_data-0.11.1 → mostlyright_data-0.12.0}/src/mostlyright/data_harness/thin/router.py +2 -0
  8. {mostlyright_data-0.11.1 → mostlyright_data-0.12.0}/src/mostlyright/data_harness/thin/v4.py +20 -0
  9. {mostlyright_data-0.11.1 → mostlyright_data-0.12.0}/src/mostlyright/data_harness/thin/v4_query.py +193 -5
  10. {mostlyright_data-0.11.1 → mostlyright_data-0.12.0}/src/mostlyright/data_harness/thin/v4_stream.py +37 -3
  11. mostlyright_data-0.12.0/src/mostlyright/data_harness/thin/v4_tables.py +922 -0
  12. {mostlyright_data-0.11.1 → mostlyright_data-0.12.0}/src/mostlyright/data_harness/thin/vocabulary.py +12 -0
  13. {mostlyright_data-0.11.1 → mostlyright_data-0.12.0}/src/mostlyright/data_harness/ux/render.py +2 -0
  14. {mostlyright_data-0.11.1 → mostlyright_data-0.12.0}/src/mostlyright/data_harness/v4_stream_recording.py +5 -2
  15. mostlyright_data-0.11.1/src/mostlyright/data_harness/thin/v4_tables.py +0 -488
  16. {mostlyright_data-0.11.1 → mostlyright_data-0.12.0}/.gitignore +0 -0
  17. {mostlyright_data-0.11.1 → mostlyright_data-0.12.0}/README.md +0 -0
  18. {mostlyright_data-0.11.1 → mostlyright_data-0.12.0}/scripts/hatch_build.py +0 -0
  19. {mostlyright_data-0.11.1 → mostlyright_data-0.12.0}/skills/mr-data-build/agents/openai.yaml +0 -0
  20. {mostlyright_data-0.11.1 → mostlyright_data-0.12.0}/skills/mr-data-build/scripts/write_research_notebook.py +0 -0
  21. {mostlyright_data-0.11.1 → mostlyright_data-0.12.0}/skills/mr-data-build/scripts/write_visual_run.py +0 -0
  22. {mostlyright_data-0.11.1 → mostlyright_data-0.12.0}/src/mostlyright/_vendor/__init__.py +0 -0
  23. {mostlyright_data-0.11.1 → mostlyright_data-0.12.0}/src/mostlyright/_vendor/rapidocr/LICENSE +0 -0
  24. {mostlyright_data-0.11.1 → mostlyright_data-0.12.0}/src/mostlyright/_vendor/rapidocr/PROVENANCE.json +0 -0
  25. {mostlyright_data-0.11.1 → mostlyright_data-0.12.0}/src/mostlyright/_vendor/rapidocr/__init__.py +0 -0
  26. {mostlyright_data-0.11.1 → mostlyright_data-0.12.0}/src/mostlyright/_vendor/rapidocr/__init__.pyi +0 -0
  27. {mostlyright_data-0.11.1 → mostlyright_data-0.12.0}/src/mostlyright/_vendor/rapidocr/_version.py +0 -0
  28. {mostlyright_data-0.11.1 → mostlyright_data-0.12.0}/src/mostlyright/_vendor/rapidocr/cal_rec_boxes/__init__.py +0 -0
  29. {mostlyright_data-0.11.1 → mostlyright_data-0.12.0}/src/mostlyright/_vendor/rapidocr/cal_rec_boxes/main.py +0 -0
  30. {mostlyright_data-0.11.1 → mostlyright_data-0.12.0}/src/mostlyright/_vendor/rapidocr/ch_ppocr_cls/__init__.py +0 -0
  31. {mostlyright_data-0.11.1 → mostlyright_data-0.12.0}/src/mostlyright/_vendor/rapidocr/ch_ppocr_cls/main.py +0 -0
  32. {mostlyright_data-0.11.1 → mostlyright_data-0.12.0}/src/mostlyright/_vendor/rapidocr/ch_ppocr_cls/utils.py +0 -0
  33. {mostlyright_data-0.11.1 → mostlyright_data-0.12.0}/src/mostlyright/_vendor/rapidocr/ch_ppocr_det/__init__.py +0 -0
  34. {mostlyright_data-0.11.1 → mostlyright_data-0.12.0}/src/mostlyright/_vendor/rapidocr/ch_ppocr_det/main.py +0 -0
  35. {mostlyright_data-0.11.1 → mostlyright_data-0.12.0}/src/mostlyright/_vendor/rapidocr/ch_ppocr_det/utils.py +0 -0
  36. {mostlyright_data-0.11.1 → mostlyright_data-0.12.0}/src/mostlyright/_vendor/rapidocr/ch_ppocr_rec/__init__.py +0 -0
  37. {mostlyright_data-0.11.1 → mostlyright_data-0.12.0}/src/mostlyright/_vendor/rapidocr/ch_ppocr_rec/main.py +0 -0
  38. {mostlyright_data-0.11.1 → mostlyright_data-0.12.0}/src/mostlyright/_vendor/rapidocr/ch_ppocr_rec/typings.py +0 -0
  39. {mostlyright_data-0.11.1 → mostlyright_data-0.12.0}/src/mostlyright/_vendor/rapidocr/ch_ppocr_rec/utils.py +0 -0
  40. {mostlyright_data-0.11.1 → mostlyright_data-0.12.0}/src/mostlyright/_vendor/rapidocr/config.yaml +0 -0
  41. {mostlyright_data-0.11.1 → mostlyright_data-0.12.0}/src/mostlyright/_vendor/rapidocr/inference_engine/__init__.py +0 -0
  42. {mostlyright_data-0.11.1 → mostlyright_data-0.12.0}/src/mostlyright/_vendor/rapidocr/inference_engine/base.py +0 -0
  43. {mostlyright_data-0.11.1 → mostlyright_data-0.12.0}/src/mostlyright/_vendor/rapidocr/inference_engine/onnxruntime/__init__.py +0 -0
  44. {mostlyright_data-0.11.1 → mostlyright_data-0.12.0}/src/mostlyright/_vendor/rapidocr/inference_engine/onnxruntime/main.py +0 -0
  45. {mostlyright_data-0.11.1 → mostlyright_data-0.12.0}/src/mostlyright/_vendor/rapidocr/inference_engine/onnxruntime/provider_config.py +0 -0
  46. {mostlyright_data-0.11.1 → mostlyright_data-0.12.0}/src/mostlyright/_vendor/rapidocr/main.py +0 -0
  47. {mostlyright_data-0.11.1 → mostlyright_data-0.12.0}/src/mostlyright/_vendor/rapidocr/models/PP-OCRv6_det_small.onnx +0 -0
  48. {mostlyright_data-0.11.1 → mostlyright_data-0.12.0}/src/mostlyright/_vendor/rapidocr/models/PP-OCRv6_rec_small.onnx +0 -0
  49. {mostlyright_data-0.11.1 → mostlyright_data-0.12.0}/src/mostlyright/_vendor/rapidocr/models/ch_ppocr_mobile_v2.0_cls_mobile.onnx +0 -0
  50. {mostlyright_data-0.11.1 → mostlyright_data-0.12.0}/src/mostlyright/_vendor/rapidocr/py.typed +0 -0
  51. {mostlyright_data-0.11.1 → mostlyright_data-0.12.0}/src/mostlyright/_vendor/rapidocr/utils/__init__.py +0 -0
  52. {mostlyright_data-0.11.1 → mostlyright_data-0.12.0}/src/mostlyright/_vendor/rapidocr/utils/load_image.py +0 -0
  53. {mostlyright_data-0.11.1 → mostlyright_data-0.12.0}/src/mostlyright/_vendor/rapidocr/utils/log.py +0 -0
  54. {mostlyright_data-0.11.1 → mostlyright_data-0.12.0}/src/mostlyright/_vendor/rapidocr/utils/model_resolver.py +0 -0
  55. {mostlyright_data-0.11.1 → mostlyright_data-0.12.0}/src/mostlyright/_vendor/rapidocr/utils/output.py +0 -0
  56. {mostlyright_data-0.11.1 → mostlyright_data-0.12.0}/src/mostlyright/_vendor/rapidocr/utils/parse_parameters.py +0 -0
  57. {mostlyright_data-0.11.1 → mostlyright_data-0.12.0}/src/mostlyright/_vendor/rapidocr/utils/process_img.py +0 -0
  58. {mostlyright_data-0.11.1 → mostlyright_data-0.12.0}/src/mostlyright/_vendor/rapidocr/utils/typings.py +0 -0
  59. {mostlyright_data-0.11.1 → mostlyright_data-0.12.0}/src/mostlyright/_vendor/rapidocr/utils/utils.py +0 -0
  60. {mostlyright_data-0.11.1 → mostlyright_data-0.12.0}/src/mostlyright/data_harness/__init__.py +0 -0
  61. {mostlyright_data-0.11.1 → mostlyright_data-0.12.0}/src/mostlyright/data_harness/acquisition/__init__.py +0 -0
  62. {mostlyright_data-0.11.1 → mostlyright_data-0.12.0}/src/mostlyright/data_harness/acquisition/derived_credentials.py +0 -0
  63. {mostlyright_data-0.11.1 → mostlyright_data-0.12.0}/src/mostlyright/data_harness/acquisition/http.py +0 -0
  64. {mostlyright_data-0.11.1 → mostlyright_data-0.12.0}/src/mostlyright/data_harness/acquisition/parsing.py +0 -0
  65. {mostlyright_data-0.11.1 → mostlyright_data-0.12.0}/src/mostlyright/data_harness/acquisition/ranges.py +0 -0
  66. {mostlyright_data-0.11.1 → mostlyright_data-0.12.0}/src/mostlyright/data_harness/acquisition/result_download.py +0 -0
  67. {mostlyright_data-0.11.1 → mostlyright_data-0.12.0}/src/mostlyright/data_harness/acquisition/retention_admission.py +0 -0
  68. {mostlyright_data-0.11.1 → mostlyright_data-0.12.0}/src/mostlyright/data_harness/acquisition/sandbox.py +0 -0
  69. {mostlyright_data-0.11.1 → mostlyright_data-0.12.0}/src/mostlyright/data_harness/acquisition/url_policy.py +0 -0
  70. {mostlyright_data-0.11.1 → mostlyright_data-0.12.0}/src/mostlyright/data_harness/agent_runtime.py +0 -0
  71. {mostlyright_data-0.11.1 → mostlyright_data-0.12.0}/src/mostlyright/data_harness/assets/logo-ink.svg +0 -0
  72. {mostlyright_data-0.11.1 → mostlyright_data-0.12.0}/src/mostlyright/data_harness/backends/__init__.py +0 -0
  73. {mostlyright_data-0.11.1 → mostlyright_data-0.12.0}/src/mostlyright/data_harness/backends/pandas_backend.py +0 -0
  74. {mostlyright_data-0.11.1 → mostlyright_data-0.12.0}/src/mostlyright/data_harness/backends/polars_backend.py +0 -0
  75. {mostlyright_data-0.11.1 → mostlyright_data-0.12.0}/src/mostlyright/data_harness/backends/protocol.py +0 -0
  76. {mostlyright_data-0.11.1 → mostlyright_data-0.12.0}/src/mostlyright/data_harness/backends/reference.py +0 -0
  77. {mostlyright_data-0.11.1 → mostlyright_data-0.12.0}/src/mostlyright/data_harness/backends/registry.py +0 -0
  78. {mostlyright_data-0.11.1 → mostlyright_data-0.12.0}/src/mostlyright/data_harness/backends/restrictions.py +0 -0
  79. {mostlyright_data-0.11.1 → mostlyright_data-0.12.0}/src/mostlyright/data_harness/bounded_query.py +0 -0
  80. {mostlyright_data-0.11.1 → mostlyright_data-0.12.0}/src/mostlyright/data_harness/canonical.py +0 -0
  81. {mostlyright_data-0.11.1 → mostlyright_data-0.12.0}/src/mostlyright/data_harness/catalog_job.py +0 -0
  82. {mostlyright_data-0.11.1 → mostlyright_data-0.12.0}/src/mostlyright/data_harness/cli.py +0 -0
  83. {mostlyright_data-0.11.1 → mostlyright_data-0.12.0}/src/mostlyright/data_harness/contracts.py +0 -0
  84. {mostlyright_data-0.11.1 → mostlyright_data-0.12.0}/src/mostlyright/data_harness/coordinator.py +0 -0
  85. {mostlyright_data-0.11.1 → mostlyright_data-0.12.0}/src/mostlyright/data_harness/crosswalks.py +0 -0
  86. {mostlyright_data-0.11.1 → mostlyright_data-0.12.0}/src/mostlyright/data_harness/declared_checks.py +0 -0
  87. {mostlyright_data-0.11.1 → mostlyright_data-0.12.0}/src/mostlyright/data_harness/deploy.py +0 -0
  88. {mostlyright_data-0.11.1 → mostlyright_data-0.12.0}/src/mostlyright/data_harness/deploy_target.py +0 -0
  89. {mostlyright_data-0.11.1 → mostlyright_data-0.12.0}/src/mostlyright/data_harness/deployment_evidence.py +0 -0
  90. {mostlyright_data-0.11.1 → mostlyright_data-0.12.0}/src/mostlyright/data_harness/documents/__init__.py +0 -0
  91. {mostlyright_data-0.11.1 → mostlyright_data-0.12.0}/src/mostlyright/data_harness/documents/_worker_capability.py +0 -0
  92. {mostlyright_data-0.11.1 → mostlyright_data-0.12.0}/src/mostlyright/data_harness/documents/agent_request.py +0 -0
  93. {mostlyright_data-0.11.1 → mostlyright_data-0.12.0}/src/mostlyright/data_harness/documents/capture.py +0 -0
  94. {mostlyright_data-0.11.1 → mostlyright_data-0.12.0}/src/mostlyright/data_harness/documents/contracts.py +0 -0
  95. {mostlyright_data-0.11.1 → mostlyright_data-0.12.0}/src/mostlyright/data_harness/documents/lane.py +0 -0
  96. {mostlyright_data-0.11.1 → mostlyright_data-0.12.0}/src/mostlyright/data_harness/documents/ocr.py +0 -0
  97. {mostlyright_data-0.11.1 → mostlyright_data-0.12.0}/src/mostlyright/data_harness/documents/pdf.py +0 -0
  98. {mostlyright_data-0.11.1 → mostlyright_data-0.12.0}/src/mostlyright/data_harness/documents/registry.py +0 -0
  99. {mostlyright_data-0.11.1 → mostlyright_data-0.12.0}/src/mostlyright/data_harness/documents/sandbox.py +0 -0
  100. {mostlyright_data-0.11.1 → mostlyright_data-0.12.0}/src/mostlyright/data_harness/documents/selections.py +0 -0
  101. {mostlyright_data-0.11.1 → mostlyright_data-0.12.0}/src/mostlyright/data_harness/documents/tables.py +0 -0
  102. {mostlyright_data-0.11.1 → mostlyright_data-0.12.0}/src/mostlyright/data_harness/documents/vendor_rapidocr.py +0 -0
  103. {mostlyright_data-0.11.1 → mostlyright_data-0.12.0}/src/mostlyright/data_harness/events.py +0 -0
  104. {mostlyright_data-0.11.1 → mostlyright_data-0.12.0}/src/mostlyright/data_harness/fast_delimited.py +0 -0
  105. {mostlyright_data-0.11.1 → mostlyright_data-0.12.0}/src/mostlyright/data_harness/formats.py +0 -0
  106. {mostlyright_data-0.11.1 → mostlyright_data-0.12.0}/src/mostlyright/data_harness/governors.py +0 -0
  107. {mostlyright_data-0.11.1 → mostlyright_data-0.12.0}/src/mostlyright/data_harness/hosted_bootstrap.py +0 -0
  108. {mostlyright_data-0.11.1 → mostlyright_data-0.12.0}/src/mostlyright/data_harness/hosted_crawler.py +0 -0
  109. {mostlyright_data-0.11.1 → mostlyright_data-0.12.0}/src/mostlyright/data_harness/hosted_crawler_container_smoke.py +0 -0
  110. {mostlyright_data-0.11.1 → mostlyright_data-0.12.0}/src/mostlyright/data_harness/hosted_crawler_fetch.py +0 -0
  111. {mostlyright_data-0.11.1 → mostlyright_data-0.12.0}/src/mostlyright/data_harness/hosted_crawler_job.py +0 -0
  112. {mostlyright_data-0.11.1 → mostlyright_data-0.12.0}/src/mostlyright/data_harness/hosted_crawler_protocol.py +0 -0
  113. {mostlyright_data-0.11.1 → mostlyright_data-0.12.0}/src/mostlyright/data_harness/hosted_dataset.py +0 -0
  114. {mostlyright_data-0.11.1 → mostlyright_data-0.12.0}/src/mostlyright/data_harness/hosted_deploy.py +0 -0
  115. {mostlyright_data-0.11.1 → mostlyright_data-0.12.0}/src/mostlyright/data_harness/hosted_handoff.py +0 -0
  116. {mostlyright_data-0.11.1 → mostlyright_data-0.12.0}/src/mostlyright/data_harness/hosted_ingestion_contract.py +0 -0
  117. {mostlyright_data-0.11.1 → mostlyright_data-0.12.0}/src/mostlyright/data_harness/hosted_ingestion_job.py +0 -0
  118. {mostlyright_data-0.11.1 → mostlyright_data-0.12.0}/src/mostlyright/data_harness/hosted_ingestion_job_smoke.py +0 -0
  119. {mostlyright_data-0.11.1 → mostlyright_data-0.12.0}/src/mostlyright/data_harness/hosted_rlimit_as_container_smoke.py +0 -0
  120. {mostlyright_data-0.11.1 → mostlyright_data-0.12.0}/src/mostlyright/data_harness/hosted_session_container_smoke.py +0 -0
  121. {mostlyright_data-0.11.1 → mostlyright_data-0.12.0}/src/mostlyright/data_harness/hosted_session_worker.py +0 -0
  122. {mostlyright_data-0.11.1 → mostlyright_data-0.12.0}/src/mostlyright/data_harness/hosted_session_worker_job_smoke.py +0 -0
  123. {mostlyright_data-0.11.1 → mostlyright_data-0.12.0}/src/mostlyright/data_harness/hosted_stream_recorder_container_smoke.py +0 -0
  124. {mostlyright_data-0.11.1 → mostlyright_data-0.12.0}/src/mostlyright/data_harness/hosted_stream_recorder_job.py +0 -0
  125. {mostlyright_data-0.11.1 → mostlyright_data-0.12.0}/src/mostlyright/data_harness/hosted_stream_subscription_container_smoke.py +0 -0
  126. {mostlyright_data-0.11.1 → mostlyright_data-0.12.0}/src/mostlyright/data_harness/hosted_stream_subscription_worker.py +0 -0
  127. {mostlyright_data-0.11.1 → mostlyright_data-0.12.0}/src/mostlyright/data_harness/hosted_worker.py +0 -0
  128. {mostlyright_data-0.11.1 → mostlyright_data-0.12.0}/src/mostlyright/data_harness/ingestion/__init__.py +0 -0
  129. {mostlyright_data-0.11.1 → mostlyright_data-0.12.0}/src/mostlyright/data_harness/ingestion/contracts.py +0 -0
  130. {mostlyright_data-0.11.1 → mostlyright_data-0.12.0}/src/mostlyright/data_harness/ingestion/faults.py +0 -0
  131. {mostlyright_data-0.11.1 → mostlyright_data-0.12.0}/src/mostlyright/data_harness/ingestion/gcs_store.py +0 -0
  132. {mostlyright_data-0.11.1 → mostlyright_data-0.12.0}/src/mostlyright/data_harness/ingestion/spool.py +0 -0
  133. {mostlyright_data-0.11.1 → mostlyright_data-0.12.0}/src/mostlyright/data_harness/ingestion/store.py +0 -0
  134. {mostlyright_data-0.11.1 → mostlyright_data-0.12.0}/src/mostlyright/data_harness/inprocess_acquisition.py +0 -0
  135. {mostlyright_data-0.11.1 → mostlyright_data-0.12.0}/src/mostlyright/data_harness/key_seam.py +0 -0
  136. {mostlyright_data-0.11.1 → mostlyright_data-0.12.0}/src/mostlyright/data_harness/linux_process_boundary.py +0 -0
  137. {mostlyright_data-0.11.1 → mostlyright_data-0.12.0}/src/mostlyright/data_harness/local_contracts.py +0 -0
  138. {mostlyright_data-0.11.1 → mostlyright_data-0.12.0}/src/mostlyright/data_harness/local_search/__init__.py +0 -0
  139. {mostlyright_data-0.11.1 → mostlyright_data-0.12.0}/src/mostlyright/data_harness/local_search/build_index.py +0 -0
  140. {mostlyright_data-0.11.1 → mostlyright_data-0.12.0}/src/mostlyright/data_harness/local_search/contracts.py +0 -0
  141. {mostlyright_data-0.11.1 → mostlyright_data-0.12.0}/src/mostlyright/data_harness/local_search/query_trace.py +0 -0
  142. {mostlyright_data-0.11.1 → mostlyright_data-0.12.0}/src/mostlyright/data_harness/local_search/retrieval.py +0 -0
  143. {mostlyright_data-0.11.1 → mostlyright_data-0.12.0}/src/mostlyright/data_harness/local_search/sealed.py +0 -0
  144. {mostlyright_data-0.11.1 → mostlyright_data-0.12.0}/src/mostlyright/data_harness/local_search/service.py +0 -0
  145. {mostlyright_data-0.11.1 → mostlyright_data-0.12.0}/src/mostlyright/data_harness/nbrender/CONTRACT.md +0 -0
  146. {mostlyright_data-0.11.1 → mostlyright_data-0.12.0}/src/mostlyright/data_harness/nbrender/__init__.py +0 -0
  147. {mostlyright_data-0.11.1 → mostlyright_data-0.12.0}/src/mostlyright/data_harness/nbrender/chrome.py +0 -0
  148. {mostlyright_data-0.11.1 → mostlyright_data-0.12.0}/src/mostlyright/data_harness/nbrender/code_body.py +0 -0
  149. {mostlyright_data-0.11.1 → mostlyright_data-0.12.0}/src/mostlyright/data_harness/nbrender/document.py +0 -0
  150. {mostlyright_data-0.11.1 → mostlyright_data-0.12.0}/src/mostlyright/data_harness/nbrender/frame.py +0 -0
  151. {mostlyright_data-0.11.1 → mostlyright_data-0.12.0}/src/mostlyright/data_harness/nbrender/interactive.py +0 -0
  152. {mostlyright_data-0.11.1 → mostlyright_data-0.12.0}/src/mostlyright/data_harness/nbrender/markdown_body.py +0 -0
  153. {mostlyright_data-0.11.1 → mostlyright_data-0.12.0}/src/mostlyright/data_harness/nbrender/mr_components.py +0 -0
  154. {mostlyright_data-0.11.1 → mostlyright_data-0.12.0}/src/mostlyright/data_harness/nbrender/outputs_data.py +0 -0
  155. {mostlyright_data-0.11.1 → mostlyright_data-0.12.0}/src/mostlyright/data_harness/nbrender/outputs_rich.py +0 -0
  156. {mostlyright_data-0.11.1 → mostlyright_data-0.12.0}/src/mostlyright/data_harness/nbrender/outputs_source.py +0 -0
  157. {mostlyright_data-0.11.1 → mostlyright_data-0.12.0}/src/mostlyright/data_harness/nbrender/outputs_stage.py +0 -0
  158. {mostlyright_data-0.11.1 → mostlyright_data-0.12.0}/src/mostlyright/data_harness/nbrender/outputs_text.py +0 -0
  159. {mostlyright_data-0.11.1 → mostlyright_data-0.12.0}/src/mostlyright/data_harness/nbrender/parse.py +0 -0
  160. {mostlyright_data-0.11.1 → mostlyright_data-0.12.0}/src/mostlyright/data_harness/nbrender/status.py +0 -0
  161. {mostlyright_data-0.11.1 → mostlyright_data-0.12.0}/src/mostlyright/data_harness/nbrender/tokens.py +0 -0
  162. {mostlyright_data-0.11.1 → mostlyright_data-0.12.0}/src/mostlyright/data_harness/notebook.py +0 -0
  163. {mostlyright_data-0.11.1 → mostlyright_data-0.12.0}/src/mostlyright/data_harness/offline.py +0 -0
  164. {mostlyright_data-0.11.1 → mostlyright_data-0.12.0}/src/mostlyright/data_harness/operation_registry.py +0 -0
  165. {mostlyright_data-0.11.1 → mostlyright_data-0.12.0}/src/mostlyright/data_harness/operator_setup.py +0 -0
  166. {mostlyright_data-0.11.1 → mostlyright_data-0.12.0}/src/mostlyright/data_harness/pipeline.py +0 -0
  167. {mostlyright_data-0.11.1 → mostlyright_data-0.12.0}/src/mostlyright/data_harness/plan_graph.py +0 -0
  168. {mostlyright_data-0.11.1 → mostlyright_data-0.12.0}/src/mostlyright/data_harness/preparation/__init__.py +0 -0
  169. {mostlyright_data-0.11.1 → mostlyright_data-0.12.0}/src/mostlyright/data_harness/preparation/contracts.py +0 -0
  170. {mostlyright_data-0.11.1 → mostlyright_data-0.12.0}/src/mostlyright/data_harness/preparation/engine.py +0 -0
  171. {mostlyright_data-0.11.1 → mostlyright_data-0.12.0}/src/mostlyright/data_harness/preparation/errors.py +0 -0
  172. {mostlyright_data-0.11.1 → mostlyright_data-0.12.0}/src/mostlyright/data_harness/preparation/gates.py +0 -0
  173. {mostlyright_data-0.11.1 → mostlyright_data-0.12.0}/src/mostlyright/data_harness/preparation/joins.py +0 -0
  174. {mostlyright_data-0.11.1 → mostlyright_data-0.12.0}/src/mostlyright/data_harness/preparation/profile.py +0 -0
  175. {mostlyright_data-0.11.1 → mostlyright_data-0.12.0}/src/mostlyright/data_harness/preparation/table.py +0 -0
  176. {mostlyright_data-0.11.1 → mostlyright_data-0.12.0}/src/mostlyright/data_harness/preparation/transforms.py +0 -0
  177. {mostlyright_data-0.11.1 → mostlyright_data-0.12.0}/src/mostlyright/data_harness/progress_events.py +0 -0
  178. {mostlyright_data-0.11.1 → mostlyright_data-0.12.0}/src/mostlyright/data_harness/readers/__init__.py +0 -0
  179. {mostlyright_data-0.11.1 → mostlyright_data-0.12.0}/src/mostlyright/data_harness/readers/_openpyxl.py +0 -0
  180. {mostlyright_data-0.11.1 → mostlyright_data-0.12.0}/src/mostlyright/data_harness/readers/budgets.py +0 -0
  181. {mostlyright_data-0.11.1 → mostlyright_data-0.12.0}/src/mostlyright/data_harness/readers/containers.py +0 -0
  182. {mostlyright_data-0.11.1 → mostlyright_data-0.12.0}/src/mostlyright/data_harness/readers/contracts.py +0 -0
  183. {mostlyright_data-0.11.1 → mostlyright_data-0.12.0}/src/mostlyright/data_harness/readers/delimited.py +0 -0
  184. {mostlyright_data-0.11.1 → mostlyright_data-0.12.0}/src/mostlyright/data_harness/readers/geojson_vector.py +0 -0
  185. {mostlyright_data-0.11.1 → mostlyright_data-0.12.0}/src/mostlyright/data_harness/readers/geopackage.py +0 -0
  186. {mostlyright_data-0.11.1 → mostlyright_data-0.12.0}/src/mostlyright/data_harness/readers/geoparquet.py +0 -0
  187. {mostlyright_data-0.11.1 → mostlyright_data-0.12.0}/src/mostlyright/data_harness/readers/grib2/__init__.py +0 -0
  188. {mostlyright_data-0.11.1 → mostlyright_data-0.12.0}/src/mostlyright/data_harness/readers/grib2/admission.py +0 -0
  189. {mostlyright_data-0.11.1 → mostlyright_data-0.12.0}/src/mostlyright/data_harness/readers/grib2/collection.py +0 -0
  190. {mostlyright_data-0.11.1 → mostlyright_data-0.12.0}/src/mostlyright/data_harness/readers/grib2/collection_reader.py +0 -0
  191. {mostlyright_data-0.11.1 → mostlyright_data-0.12.0}/src/mostlyright/data_harness/readers/grib2/decode.py +0 -0
  192. {mostlyright_data-0.11.1 → mostlyright_data-0.12.0}/src/mostlyright/data_harness/readers/grib2/geometry.py +0 -0
  193. {mostlyright_data-0.11.1 → mostlyright_data-0.12.0}/src/mostlyright/data_harness/readers/grib2/portable_math.py +0 -0
  194. {mostlyright_data-0.11.1 → mostlyright_data-0.12.0}/src/mostlyright/data_harness/readers/grib_eccodes.py +0 -0
  195. {mostlyright_data-0.11.1 → mostlyright_data-0.12.0}/src/mostlyright/data_harness/readers/html_tabular.py +0 -0
  196. {mostlyright_data-0.11.1 → mostlyright_data-0.12.0}/src/mostlyright/data_harness/readers/html_web_extract.py +0 -0
  197. {mostlyright_data-0.11.1 → mostlyright_data-0.12.0}/src/mostlyright/data_harness/readers/json_tabular.py +0 -0
  198. {mostlyright_data-0.11.1 → mostlyright_data-0.12.0}/src/mostlyright/data_harness/readers/parquet_tabular.py +0 -0
  199. {mostlyright_data-0.11.1 → mostlyright_data-0.12.0}/src/mostlyright/data_harness/readers/pcaxis_px.py +0 -0
  200. {mostlyright_data-0.11.1 → mostlyright_data-0.12.0}/src/mostlyright/data_harness/readers/protobuf_tabular.py +0 -0
  201. {mostlyright_data-0.11.1 → mostlyright_data-0.12.0}/src/mostlyright/data_harness/readers/raster/__init__.py +0 -0
  202. {mostlyright_data-0.11.1 → mostlyright_data-0.12.0}/src/mostlyright/data_harness/readers/raster/_bytes.py +0 -0
  203. {mostlyright_data-0.11.1 → mostlyright_data-0.12.0}/src/mostlyright/data_harness/readers/raster/decode.py +0 -0
  204. {mostlyright_data-0.11.1 → mostlyright_data-0.12.0}/src/mostlyright/data_harness/readers/raster/family.py +0 -0
  205. {mostlyright_data-0.11.1 → mostlyright_data-0.12.0}/src/mostlyright/data_harness/readers/raster/jpeg2000.py +0 -0
  206. {mostlyright_data-0.11.1 → mostlyright_data-0.12.0}/src/mostlyright/data_harness/readers/raster/profiles.py +0 -0
  207. {mostlyright_data-0.11.1 → mostlyright_data-0.12.0}/src/mostlyright/data_harness/readers/raster/rendered.py +0 -0
  208. {mostlyright_data-0.11.1 → mostlyright_data-0.12.0}/src/mostlyright/data_harness/readers/raster/safe.py +0 -0
  209. {mostlyright_data-0.11.1 → mostlyright_data-0.12.0}/src/mostlyright/data_harness/readers/raster/sentinel_safe.py +0 -0
  210. {mostlyright_data-0.11.1 → mostlyright_data-0.12.0}/src/mostlyright/data_harness/readers/raster/tiff.py +0 -0
  211. {mostlyright_data-0.11.1 → mostlyright_data-0.12.0}/src/mostlyright/data_harness/readers/registry.py +0 -0
  212. {mostlyright_data-0.11.1 → mostlyright_data-0.12.0}/src/mostlyright/data_harness/readers/samples/README.md +0 -0
  213. {mostlyright_data-0.11.1 → mostlyright_data-0.12.0}/src/mostlyright/data_harness/readers/samples/archive.gzip/1.0.0/cities_one_stream/cities.csv.gz +0 -0
  214. {mostlyright_data-0.11.1 → mostlyright_data-0.12.0}/src/mostlyright/data_harness/readers/samples/archive.gzip/1.0.0/cities_one_stream/expected.json +0 -0
  215. {mostlyright_data-0.11.1 → mostlyright_data-0.12.0}/src/mostlyright/data_harness/readers/samples/archive.gzip/1.1.0/cities_one_stream/cities.csv.gz +0 -0
  216. {mostlyright_data-0.11.1 → mostlyright_data-0.12.0}/src/mostlyright/data_harness/readers/samples/archive.gzip/1.1.0/cities_one_stream/expected.json +0 -0
  217. {mostlyright_data-0.11.1 → mostlyright_data-0.12.0}/src/mostlyright/data_harness/readers/samples/archive.tar/1.0.0/cities_beside_a_directory_entry/cities.tar +0 -0
  218. {mostlyright_data-0.11.1 → mostlyright_data-0.12.0}/src/mostlyright/data_harness/readers/samples/archive.tar/1.0.0/cities_beside_a_directory_entry/expected.json +0 -0
  219. {mostlyright_data-0.11.1 → mostlyright_data-0.12.0}/src/mostlyright/data_harness/readers/samples/archive.tar/1.1.0/cities_beside_a_directory_entry/cities.tar +0 -0
  220. {mostlyright_data-0.11.1 → mostlyright_data-0.12.0}/src/mostlyright/data_harness/readers/samples/archive.tar/1.1.0/cities_beside_a_directory_entry/expected.json +0 -0
  221. {mostlyright_data-0.11.1 → mostlyright_data-0.12.0}/src/mostlyright/data_harness/readers/samples/archive.zip/1.0.0/cities_beside_a_second_member/cities.zip +0 -0
  222. {mostlyright_data-0.11.1 → mostlyright_data-0.12.0}/src/mostlyright/data_harness/readers/samples/archive.zip/1.0.0/cities_beside_a_second_member/expected.json +0 -0
  223. {mostlyright_data-0.11.1 → mostlyright_data-0.12.0}/src/mostlyright/data_harness/readers/samples/archive.zip/1.1.0/dwd_semicolon_station_member/dwd-station.zip +0 -0
  224. {mostlyright_data-0.11.1 → mostlyright_data-0.12.0}/src/mostlyright/data_harness/readers/samples/archive.zip/1.1.0/dwd_semicolon_station_member/expected.json +0 -0
  225. {mostlyright_data-0.11.1 → mostlyright_data-0.12.0}/src/mostlyright/data_harness/readers/samples/archive.zip/1.2.0/dwd_semicolon_station_member/dwd-station.zip +0 -0
  226. {mostlyright_data-0.11.1 → mostlyright_data-0.12.0}/src/mostlyright/data_harness/readers/samples/archive.zip/1.2.0/dwd_semicolon_station_member/expected.json +0 -0
  227. {mostlyright_data-0.11.1 → mostlyright_data-0.12.0}/src/mostlyright/data_harness/readers/samples/delimited_text/1.0.0/an_ordinary_comma_separated_table/cities.csv +0 -0
  228. {mostlyright_data-0.11.1 → mostlyright_data-0.12.0}/src/mostlyright/data_harness/readers/samples/delimited_text/1.0.0/an_ordinary_comma_separated_table/expected.json +0 -0
  229. {mostlyright_data-0.11.1 → mostlyright_data-0.12.0}/src/mostlyright/data_harness/readers/samples/delimited_text/1.0.0/quoted_fields_holding_the_delimiter/cities.tsv +0 -0
  230. {mostlyright_data-0.11.1 → mostlyright_data-0.12.0}/src/mostlyright/data_harness/readers/samples/delimited_text/1.0.0/quoted_fields_holding_the_delimiter/expected.json +0 -0
  231. {mostlyright_data-0.11.1 → mostlyright_data-0.12.0}/src/mostlyright/data_harness/readers/samples/delimited_text/1.1.0/an_hourly_observation_table_served_as_plain_text/expected.json +0 -0
  232. {mostlyright_data-0.11.1 → mostlyright_data-0.12.0}/src/mostlyright/data_harness/readers/samples/delimited_text/1.1.0/an_hourly_observation_table_served_as_plain_text/observations.csv +0 -0
  233. {mostlyright_data-0.11.1 → mostlyright_data-0.12.0}/src/mostlyright/data_harness/readers/samples/geojson.vector/1.0.0/czech_capital/expected.json +0 -0
  234. {mostlyright_data-0.11.1 → mostlyright_data-0.12.0}/src/mostlyright/data_harness/readers/samples/geojson.vector/1.0.0/czech_capital/places.geojson +0 -0
  235. {mostlyright_data-0.11.1 → mostlyright_data-0.12.0}/src/mostlyright/data_harness/readers/samples/geopackage.vector/1.0.0/epsg_4326_feature/expected.json +0 -0
  236. {mostlyright_data-0.11.1 → mostlyright_data-0.12.0}/src/mostlyright/data_harness/readers/samples/geopackage.vector/1.0.0/epsg_4326_feature/places.gpkg +0 -0
  237. {mostlyright_data-0.11.1 → mostlyright_data-0.12.0}/src/mostlyright/data_harness/readers/samples/geoparquet.vector/1.0.0/primary_wkb_point/expected.json +0 -0
  238. {mostlyright_data-0.11.1 → mostlyright_data-0.12.0}/src/mostlyright/data_harness/readers/samples/geoparquet.vector/1.0.0/primary_wkb_point/places.parquet +0 -0
  239. {mostlyright_data-0.11.1 → mostlyright_data-0.12.0}/src/mostlyright/data_harness/readers/samples/html.tabular/1.0.0/sanitized_table/expected.json +0 -0
  240. {mostlyright_data-0.11.1 → mostlyright_data-0.12.0}/src/mostlyright/data_harness/readers/samples/html.tabular/1.0.0/sanitized_table/table.html +0 -0
  241. {mostlyright_data-0.11.1 → mostlyright_data-0.12.0}/src/mostlyright/data_harness/readers/samples/html.web_extract/1.0.0/json_ld_scorecards/expected.json +0 -0
  242. {mostlyright_data-0.11.1 → mostlyright_data-0.12.0}/src/mostlyright/data_harness/readers/samples/html.web_extract/1.0.0/json_ld_scorecards/scorecards.html +0 -0
  243. {mostlyright_data-0.11.1 → mostlyright_data-0.12.0}/src/mostlyright/data_harness/readers/samples/image.rendered/1.0.0/tiny_png/expected.json +0 -0
  244. {mostlyright_data-0.11.1 → mostlyright_data-0.12.0}/src/mostlyright/data_harness/readers/samples/image.rendered/1.0.0/tiny_png/tiny-rendered.png +0 -0
  245. {mostlyright_data-0.11.1 → mostlyright_data-0.12.0}/src/mostlyright/data_harness/readers/samples/json.tabular/1.0.0/nested_hourly_observations/expected.json +0 -0
  246. {mostlyright_data-0.11.1 → mostlyright_data-0.12.0}/src/mostlyright/data_harness/readers/samples/json.tabular/1.0.0/nested_hourly_observations/stations.json +0 -0
  247. {mostlyright_data-0.11.1 → mostlyright_data-0.12.0}/src/mostlyright/data_harness/readers/samples/json.tabular/1.1.0/an_observation_stream_served_as_plain_text/expected.json +0 -0
  248. {mostlyright_data-0.11.1 → mostlyright_data-0.12.0}/src/mostlyright/data_harness/readers/samples/json.tabular/1.1.0/an_observation_stream_served_as_plain_text/observations.ndjson +0 -0
  249. {mostlyright_data-0.11.1 → mostlyright_data-0.12.0}/src/mostlyright/data_harness/readers/samples/meteorology.bufr/1.0.0/eccodes_bufr4_subset/eccodes-bufr4.bufr +0 -0
  250. {mostlyright_data-0.11.1 → mostlyright_data-0.12.0}/src/mostlyright/data_harness/readers/samples/meteorology.bufr/1.0.0/eccodes_bufr4_subset/expected.json +0 -0
  251. {mostlyright_data-0.11.1 → mostlyright_data-0.12.0}/src/mostlyright/data_harness/readers/samples/meteorology.grib/1.0.0/eccodes_grib1_origin/expected.json +0 -0
  252. {mostlyright_data-0.11.1 → mostlyright_data-0.12.0}/src/mostlyright/data_harness/readers/samples/meteorology.grib/1.0.0/eccodes_grib1_origin/regular-ll-surface.grib1 +0 -0
  253. {mostlyright_data-0.11.1 → mostlyright_data-0.12.0}/src/mostlyright/data_harness/readers/samples/microdata.sas_xpt/1.0.0/two_raw_columns/expected.json +0 -0
  254. {mostlyright_data-0.11.1 → mostlyright_data-0.12.0}/src/mostlyright/data_harness/readers/samples/microdata.sas_xpt/1.0.0/two_raw_columns/survey.xpt +0 -0
  255. {mostlyright_data-0.11.1 → mostlyright_data-0.12.0}/src/mostlyright/data_harness/readers/samples/microdata.spss_sav/1.0.0/two_raw_columns/expected.json +0 -0
  256. {mostlyright_data-0.11.1 → mostlyright_data-0.12.0}/src/mostlyright/data_harness/readers/samples/microdata.spss_sav/1.0.0/two_raw_columns/survey.sav +0 -0
  257. {mostlyright_data-0.11.1 → mostlyright_data-0.12.0}/src/mostlyright/data_harness/readers/samples/microdata.stata_dta/1.0.0/two_raw_columns/expected.json +0 -0
  258. {mostlyright_data-0.11.1 → mostlyright_data-0.12.0}/src/mostlyright/data_harness/readers/samples/microdata.stata_dta/1.0.0/two_raw_columns/stata.dta +0 -0
  259. {mostlyright_data-0.11.1 → mostlyright_data-0.12.0}/src/mostlyright/data_harness/readers/samples/official.pcaxis_px/1.0.0/population_by_region_and_year/expected.json +0 -0
  260. {mostlyright_data-0.11.1 → mostlyright_data-0.12.0}/src/mostlyright/data_harness/readers/samples/official.pcaxis_px/1.0.0/population_by_region_and_year/population.px +0 -0
  261. {mostlyright_data-0.11.1 → mostlyright_data-0.12.0}/src/mostlyright/data_harness/readers/samples/official.sdmx_json/1.0.0/compact_population_series/expected.json +0 -0
  262. {mostlyright_data-0.11.1 → mostlyright_data-0.12.0}/src/mostlyright/data_harness/readers/samples/official.sdmx_json/1.0.0/compact_population_series/population.json +0 -0
  263. {mostlyright_data-0.11.1 → mostlyright_data-0.12.0}/src/mostlyright/data_harness/readers/samples/parquet.tabular/1.0.0/two_columns/expected.json +0 -0
  264. {mostlyright_data-0.11.1 → mostlyright_data-0.12.0}/src/mostlyright/data_harness/readers/samples/parquet.tabular/1.0.0/two_columns/prices.parquet +0 -0
  265. {mostlyright_data-0.11.1 → mostlyright_data-0.12.0}/src/mostlyright/data_harness/readers/samples/protobuf.tabular/1.0.0/gtfs_realtime_trip_updates/expected.json +0 -0
  266. {mostlyright_data-0.11.1 → mostlyright_data-0.12.0}/src/mostlyright/data_harness/readers/samples/protobuf.tabular/1.0.0/gtfs_realtime_trip_updates/gtfs-realtime.desc +0 -0
  267. {mostlyright_data-0.11.1 → mostlyright_data-0.12.0}/src/mostlyright/data_harness/readers/samples/protobuf.tabular/1.0.0/gtfs_realtime_trip_updates/trip-updates.pb +0 -0
  268. {mostlyright_data-0.11.1 → mostlyright_data-0.12.0}/src/mostlyright/data_harness/readers/samples/raster.geospatial/1.0.0/tiny_geotiff/expected.json +0 -0
  269. {mostlyright_data-0.11.1 → mostlyright_data-0.12.0}/src/mostlyright/data_harness/readers/samples/raster.geospatial/1.0.0/tiny_geotiff/tiny-geospatial.tif +0 -0
  270. {mostlyright_data-0.11.1 → mostlyright_data-0.12.0}/src/mostlyright/data_harness/readers/samples/satellite.goes_abi_l2/1.0.0/authored_cmi_window/expected.json +0 -0
  271. {mostlyright_data-0.11.1 → mostlyright_data-0.12.0}/src/mostlyright/data_harness/readers/samples/satellite.goes_abi_l2/1.0.0/authored_cmi_window/goes-abi-l2-cmi-window.nc +0 -0
  272. {mostlyright_data-0.11.1 → mostlyright_data-0.12.0}/src/mostlyright/data_harness/readers/samples/satellite.himawari_hsd/1.0.0/authored_b13_single_bzip2/expected.json +0 -0
  273. {mostlyright_data-0.11.1 → mostlyright_data-0.12.0}/src/mostlyright/data_harness/readers/samples/satellite.himawari_hsd/1.0.0/authored_b13_single_bzip2/himawari-b13-0101-bzip2.dat +0 -0
  274. {mostlyright_data-0.11.1 → mostlyright_data-0.12.0}/src/mostlyright/data_harness/readers/samples/satellite.himawari_hsd_complete/1.0.0/authored_b13_three_segment_scan/expected.json +0 -0
  275. {mostlyright_data-0.11.1 → mostlyright_data-0.12.0}/src/mostlyright/data_harness/readers/samples/satellite.himawari_hsd_complete/1.0.0/authored_b13_three_segment_scan/himawari-hsd-b13-complete.zip +0 -0
  276. {mostlyright_data-0.11.1 → mostlyright_data-0.12.0}/src/mostlyright/data_harness/readers/samples/satellite.msg_seviri_l15/1.0.0/authored_calibrated_complete_visir/expected.json +0 -0
  277. {mostlyright_data-0.11.1 → mostlyright_data-0.12.0}/src/mostlyright/data_harness/readers/samples/satellite.msg_seviri_l15/1.0.0/authored_calibrated_complete_visir/msg-seviri-l15.zip +0 -0
  278. {mostlyright_data-0.11.1 → mostlyright_data-0.12.0}/src/mostlyright/data_harness/readers/samples/satellite.sentinel_safe/1.0.0/authored_b02_scl_window/expected.json +0 -0
  279. {mostlyright_data-0.11.1 → mostlyright_data-0.12.0}/src/mostlyright/data_harness/readers/samples/satellite.sentinel_safe/1.0.0/authored_b02_scl_window/sentinel-safe-b02-scl.zip +0 -0
  280. {mostlyright_data-0.11.1 → mostlyright_data-0.12.0}/src/mostlyright/data_harness/readers/samples/satellite.xrit_image/1.0.0/authored_complete_raw_counts/expected.json +0 -0
  281. {mostlyright_data-0.11.1 → mostlyright_data-0.12.0}/src/mostlyright/data_harness/readers/samples/satellite.xrit_image/1.0.0/authored_complete_raw_counts/xrit-complete-image.zip +0 -0
  282. {mostlyright_data-0.11.1 → mostlyright_data-0.12.0}/src/mostlyright/data_harness/readers/samples/scientific.fits/1.0.0/tiny_primary_window/expected.json +0 -0
  283. {mostlyright_data-0.11.1 → mostlyright_data-0.12.0}/src/mostlyright/data_harness/readers/samples/scientific.fits/1.0.0/tiny_primary_window/tiny-primary.fits +0 -0
  284. {mostlyright_data-0.11.1 → mostlyright_data-0.12.0}/src/mostlyright/data_harness/readers/samples/scientific.hdf4/1.0.0/authored_temperature_window/expected.json +0 -0
  285. {mostlyright_data-0.11.1 → mostlyright_data-0.12.0}/src/mostlyright/data_harness/readers/samples/scientific.hdf4/1.0.0/authored_temperature_window/temperature.hdf +0 -0
  286. {mostlyright_data-0.11.1 → mostlyright_data-0.12.0}/src/mostlyright/data_harness/readers/samples/scientific.hdf5/1.0.0/authored_temperature_window/expected.json +0 -0
  287. {mostlyright_data-0.11.1 → mostlyright_data-0.12.0}/src/mostlyright/data_harness/readers/samples/scientific.hdf5/1.0.0/authored_temperature_window/temperature.h5 +0 -0
  288. {mostlyright_data-0.11.1 → mostlyright_data-0.12.0}/src/mostlyright/data_harness/readers/samples/scientific.hdf_eos2/1.0.0/authored_grid_temperature_window/expected.json +0 -0
  289. {mostlyright_data-0.11.1 → mostlyright_data-0.12.0}/src/mostlyright/data_harness/readers/samples/scientific.hdf_eos2/1.0.0/authored_grid_temperature_window/nasa-hdfeos2-grid.hdf +0 -0
  290. {mostlyright_data-0.11.1 → mostlyright_data-0.12.0}/src/mostlyright/data_harness/readers/samples/scientific.hdf_eos2/1.0.0/authored_swath_temperature_window/expected.json +0 -0
  291. {mostlyright_data-0.11.1 → mostlyright_data-0.12.0}/src/mostlyright/data_harness/readers/samples/scientific.hdf_eos2/1.0.0/authored_swath_temperature_window/nasa-hdfeos2-swath.hdf +0 -0
  292. {mostlyright_data-0.11.1 → mostlyright_data-0.12.0}/src/mostlyright/data_harness/readers/samples/scientific.netcdf/1.0.0/authored_classic_temperature_window/expected.json +0 -0
  293. {mostlyright_data-0.11.1 → mostlyright_data-0.12.0}/src/mostlyright/data_harness/readers/samples/scientific.netcdf/1.0.0/authored_classic_temperature_window/temperature-classic.nc +0 -0
  294. {mostlyright_data-0.11.1 → mostlyright_data-0.12.0}/src/mostlyright/data_harness/readers/samples/scientific.zarr/1.0.0/authored_v3_temperature_window/expected.json +0 -0
  295. {mostlyright_data-0.11.1 → mostlyright_data-0.12.0}/src/mostlyright/data_harness/readers/samples/scientific.zarr/1.0.0/authored_v3_temperature_window/temperature-zarr-v3.zip +0 -0
  296. {mostlyright_data-0.11.1 → mostlyright_data-0.12.0}/src/mostlyright/data_harness/readers/samples/spreadsheet.xlsx/1.0.0/an_ordinary_table_beside_a_second_sheet/cities.xlsx +0 -0
  297. {mostlyright_data-0.11.1 → mostlyright_data-0.12.0}/src/mostlyright/data_harness/readers/samples/spreadsheet.xlsx/1.0.0/an_ordinary_table_beside_a_second_sheet/expected.json +0 -0
  298. {mostlyright_data-0.11.1 → mostlyright_data-0.12.0}/src/mostlyright/data_harness/readers/samples/spreadsheet.xlsx/1.0.0/shares_the_workbook_had_already_computed/expected.json +0 -0
  299. {mostlyright_data-0.11.1 → mostlyright_data-0.12.0}/src/mostlyright/data_harness/readers/samples/spreadsheet.xlsx/1.0.0/shares_the_workbook_had_already_computed/shares.xlsx +0 -0
  300. {mostlyright_data-0.11.1 → mostlyright_data-0.12.0}/src/mostlyright/data_harness/readers/samples/spreadsheet.xlsx/1.1.0/shares_the_workbook_had_already_computed/expected.json +0 -0
  301. {mostlyright_data-0.11.1 → mostlyright_data-0.12.0}/src/mostlyright/data_harness/readers/samples/spreadsheet.xlsx/1.1.0/shares_the_workbook_had_already_computed/shares.xlsx +0 -0
  302. {mostlyright_data-0.11.1 → mostlyright_data-0.12.0}/src/mostlyright/data_harness/readers/samples/weather.grib2/1.0.0/README.md +0 -0
  303. {mostlyright_data-0.11.1 → mostlyright_data-0.12.0}/src/mostlyright/data_harness/readers/samples/weather.grib2/1.0.0/gfs_2m_temperature/expected.json +0 -0
  304. {mostlyright_data-0.11.1 → mostlyright_data-0.12.0}/src/mostlyright/data_harness/readers/samples/weather.grib2/1.0.0/gfs_2m_temperature/gfs-2m-temperature.grib2 +0 -0
  305. {mostlyright_data-0.11.1 → mostlyright_data-0.12.0}/src/mostlyright/data_harness/readers/samples/weather.grib2/1.0.0/hrrr_2m_temperature/expected.json +0 -0
  306. {mostlyright_data-0.11.1 → mostlyright_data-0.12.0}/src/mostlyright/data_harness/readers/samples/weather.grib2/1.0.0/hrrr_2m_temperature/hrrr-2m-temperature.grib2 +0 -0
  307. {mostlyright_data-0.11.1 → mostlyright_data-0.12.0}/src/mostlyright/data_harness/readers/samples/weather.grib2/1.0.0/hrrr_categorical_rain/expected.json +0 -0
  308. {mostlyright_data-0.11.1 → mostlyright_data-0.12.0}/src/mostlyright/data_harness/readers/samples/weather.grib2/1.0.0/hrrr_categorical_rain/hrrr-categorical-rain.grib2 +0 -0
  309. {mostlyright_data-0.11.1 → mostlyright_data-0.12.0}/src/mostlyright/data_harness/readers/samples/weather.grib2/2.0.0/hrrr_2m_temperature/expected.json +0 -0
  310. {mostlyright_data-0.11.1 → mostlyright_data-0.12.0}/src/mostlyright/data_harness/readers/samples/weather.grib2/2.0.0/hrrr_2m_temperature/hrrr-2m-temperature.grib2 +0 -0
  311. {mostlyright_data-0.11.1 → mostlyright_data-0.12.0}/src/mostlyright/data_harness/readers/samples/weather.grib2/3.0.0/gfs_and_hrrr_categorical_rain/expected.json +0 -0
  312. {mostlyright_data-0.11.1 → mostlyright_data-0.12.0}/src/mostlyright/data_harness/readers/samples/weather.grib2/3.0.0/gfs_and_hrrr_categorical_rain/gfs-and-hrrr-categorical-rain.grib2 +0 -0
  313. {mostlyright_data-0.11.1 → mostlyright_data-0.12.0}/src/mostlyright/data_harness/readers/samples/xbrl.facts/1.0.0/plain_filing_fact/expected.json +0 -0
  314. {mostlyright_data-0.11.1 → mostlyright_data-0.12.0}/src/mostlyright/data_harness/readers/samples/xbrl.facts/1.0.0/plain_filing_fact/filing.xml +0 -0
  315. {mostlyright_data-0.11.1 → mostlyright_data-0.12.0}/src/mostlyright/data_harness/readers/samples/xbrl.facts/1.0.0/xml_inline_fact/expected.json +0 -0
  316. {mostlyright_data-0.11.1 → mostlyright_data-0.12.0}/src/mostlyright/data_harness/readers/samples/xbrl.facts/1.0.0/xml_inline_fact/filing.xhtml +0 -0
  317. {mostlyright_data-0.11.1 → mostlyright_data-0.12.0}/src/mostlyright/data_harness/readers/samples/xml.tabular/1.0.0/pacer_rss_feed/expected.json +0 -0
  318. {mostlyright_data-0.11.1 → mostlyright_data-0.12.0}/src/mostlyright/data_harness/readers/samples/xml.tabular/1.0.0/pacer_rss_feed/feed.xml +0 -0
  319. {mostlyright_data-0.11.1 → mostlyright_data-0.12.0}/src/mostlyright/data_harness/readers/samples/xml.tabular/1.0.0/sec_form_d_filing/expected.json +0 -0
  320. {mostlyright_data-0.11.1 → mostlyright_data-0.12.0}/src/mostlyright/data_harness/readers/samples/xml.tabular/1.0.0/sec_form_d_filing/filing.xml +0 -0
  321. {mostlyright_data-0.11.1 → mostlyright_data-0.12.0}/src/mostlyright/data_harness/readers/samples/xml.tabular/1.0.0/unified_agenda_extract/agenda.xml +0 -0
  322. {mostlyright_data-0.11.1 → mostlyright_data-0.12.0}/src/mostlyright/data_harness/readers/samples/xml.tabular/1.0.0/unified_agenda_extract/expected.json +0 -0
  323. {mostlyright_data-0.11.1 → mostlyright_data-0.12.0}/src/mostlyright/data_harness/readers/samples.py +0 -0
  324. {mostlyright_data-0.11.1 → mostlyright_data-0.12.0}/src/mostlyright/data_harness/readers/scientific.py +0 -0
  325. {mostlyright_data-0.11.1 → mostlyright_data-0.12.0}/src/mostlyright/data_harness/readers/scientific_arrays/__init__.py +0 -0
  326. {mostlyright_data-0.11.1 → mostlyright_data-0.12.0}/src/mostlyright/data_harness/readers/scientific_arrays/container.py +0 -0
  327. {mostlyright_data-0.11.1 → mostlyright_data-0.12.0}/src/mostlyright/data_harness/readers/scientific_arrays/goes.py +0 -0
  328. {mostlyright_data-0.11.1 → mostlyright_data-0.12.0}/src/mostlyright/data_harness/readers/scientific_arrays/hdf4.py +0 -0
  329. {mostlyright_data-0.11.1 → mostlyright_data-0.12.0}/src/mostlyright/data_harness/readers/scientific_arrays/hdf4_bridge.py +0 -0
  330. {mostlyright_data-0.11.1 → mostlyright_data-0.12.0}/src/mostlyright/data_harness/readers/scientific_arrays/hdf5.py +0 -0
  331. {mostlyright_data-0.11.1 → mostlyright_data-0.12.0}/src/mostlyright/data_harness/readers/scientific_arrays/native.py +0 -0
  332. {mostlyright_data-0.11.1 → mostlyright_data-0.12.0}/src/mostlyright/data_harness/readers/scientific_arrays/netcdf.py +0 -0
  333. {mostlyright_data-0.11.1 → mostlyright_data-0.12.0}/src/mostlyright/data_harness/readers/scientific_arrays/profiles.py +0 -0
  334. {mostlyright_data-0.11.1 → mostlyright_data-0.12.0}/src/mostlyright/data_harness/readers/scientific_arrays/raw.py +0 -0
  335. {mostlyright_data-0.11.1 → mostlyright_data-0.12.0}/src/mostlyright/data_harness/readers/scientific_arrays/zarr.py +0 -0
  336. {mostlyright_data-0.11.1 → mostlyright_data-0.12.0}/src/mostlyright/data_harness/readers/scientific_catalog.py +0 -0
  337. {mostlyright_data-0.11.1 → mostlyright_data-0.12.0}/src/mostlyright/data_harness/readers/scientific_segmented/__init__.py +0 -0
  338. {mostlyright_data-0.11.1 → mostlyright_data-0.12.0}/src/mostlyright/data_harness/readers/scientific_segmented/asset_sets.py +0 -0
  339. {mostlyright_data-0.11.1 → mostlyright_data-0.12.0}/src/mostlyright/data_harness/readers/scientific_segmented/formats.py +0 -0
  340. {mostlyright_data-0.11.1 → mostlyright_data-0.12.0}/src/mostlyright/data_harness/readers/scientific_segmented/hsd.py +0 -0
  341. {mostlyright_data-0.11.1 → mostlyright_data-0.12.0}/src/mostlyright/data_harness/readers/scientific_segmented/native.py +0 -0
  342. {mostlyright_data-0.11.1 → mostlyright_data-0.12.0}/src/mostlyright/data_harness/readers/scientific_segmented/profiles.py +0 -0
  343. {mostlyright_data-0.11.1 → mostlyright_data-0.12.0}/src/mostlyright/data_harness/readers/scientific_segmented/reader.py +0 -0
  344. {mostlyright_data-0.11.1 → mostlyright_data-0.12.0}/src/mostlyright/data_harness/readers/scientific_segmented/xrit.py +0 -0
  345. {mostlyright_data-0.11.1 → mostlyright_data-0.12.0}/src/mostlyright/data_harness/readers/sdmx_json.py +0 -0
  346. {mostlyright_data-0.11.1 → mostlyright_data-0.12.0}/src/mostlyright/data_harness/readers/spreadsheet.py +0 -0
  347. {mostlyright_data-0.11.1 → mostlyright_data-0.12.0}/src/mostlyright/data_harness/readers/statistical_microdata.py +0 -0
  348. {mostlyright_data-0.11.1 → mostlyright_data-0.12.0}/src/mostlyright/data_harness/readers/tabular.py +0 -0
  349. {mostlyright_data-0.11.1 → mostlyright_data-0.12.0}/src/mostlyright/data_harness/readers/vector.py +0 -0
  350. {mostlyright_data-0.11.1 → mostlyright_data-0.12.0}/src/mostlyright/data_harness/readers/vector_wkb.py +0 -0
  351. {mostlyright_data-0.11.1 → mostlyright_data-0.12.0}/src/mostlyright/data_harness/readers/xbrl_facts.py +0 -0
  352. {mostlyright_data-0.11.1 → mostlyright_data-0.12.0}/src/mostlyright/data_harness/readers/xml_tabular.py +0 -0
  353. {mostlyright_data-0.11.1 → mostlyright_data-0.12.0}/src/mostlyright/data_harness/recipe.py +0 -0
  354. {mostlyright_data-0.11.1 → mostlyright_data-0.12.0}/src/mostlyright/data_harness/repair/__init__.py +0 -0
  355. {mostlyright_data-0.11.1 → mostlyright_data-0.12.0}/src/mostlyright/data_harness/repair/adapters.py +0 -0
  356. {mostlyright_data-0.11.1 → mostlyright_data-0.12.0}/src/mostlyright/data_harness/repair/contracts.py +0 -0
  357. {mostlyright_data-0.11.1 → mostlyright_data-0.12.0}/src/mostlyright/data_harness/repair/coordinator.py +0 -0
  358. {mostlyright_data-0.11.1 → mostlyright_data-0.12.0}/src/mostlyright/data_harness/repair/errors.py +0 -0
  359. {mostlyright_data-0.11.1 → mostlyright_data-0.12.0}/src/mostlyright/data_harness/review.py +0 -0
  360. {mostlyright_data-0.11.1 → mostlyright_data-0.12.0}/src/mostlyright/data_harness/rowset.py +0 -0
  361. {mostlyright_data-0.11.1 → mostlyright_data-0.12.0}/src/mostlyright/data_harness/session_probes.py +0 -0
  362. {mostlyright_data-0.11.1 → mostlyright_data-0.12.0}/src/mostlyright/data_harness/signing.py +0 -0
  363. {mostlyright_data-0.11.1 → mostlyright_data-0.12.0}/src/mostlyright/data_harness/skill_assets.py +0 -0
  364. {mostlyright_data-0.11.1 → mostlyright_data-0.12.0}/src/mostlyright/data_harness/source_discovery.py +0 -0
  365. {mostlyright_data-0.11.1 → mostlyright_data-0.12.0}/src/mostlyright/data_harness/sources/__init__.py +0 -0
  366. {mostlyright_data-0.11.1 → mostlyright_data-0.12.0}/src/mostlyright/data_harness/sources/_adapter_steps.py +0 -0
  367. {mostlyright_data-0.11.1 → mostlyright_data-0.12.0}/src/mostlyright/data_harness/sources/adapters.py +0 -0
  368. {mostlyright_data-0.11.1 → mostlyright_data-0.12.0}/src/mostlyright/data_harness/sources/authenticated_https.py +0 -0
  369. {mostlyright_data-0.11.1 → mostlyright_data-0.12.0}/src/mostlyright/data_harness/sources/authenticated_https_v2.py +0 -0
  370. {mostlyright_data-0.11.1 → mostlyright_data-0.12.0}/src/mostlyright/data_harness/sources/authenticated_https_v3.py +0 -0
  371. {mostlyright_data-0.11.1 → mostlyright_data-0.12.0}/src/mostlyright/data_harness/sources/cadence.py +0 -0
  372. {mostlyright_data-0.11.1 → mostlyright_data-0.12.0}/src/mostlyright/data_harness/sources/cadence_emission.py +0 -0
  373. {mostlyright_data-0.11.1 → mostlyright_data-0.12.0}/src/mostlyright/data_harness/sources/cadence_history.py +0 -0
  374. {mostlyright_data-0.11.1 → mostlyright_data-0.12.0}/src/mostlyright/data_harness/sources/catalog/__init__.py +0 -0
  375. {mostlyright_data-0.11.1 → mostlyright_data-0.12.0}/src/mostlyright/data_harness/sources/catalog/admission.py +0 -0
  376. {mostlyright_data-0.11.1 → mostlyright_data-0.12.0}/src/mostlyright/data_harness/sources/catalog/authoring.py +0 -0
  377. {mostlyright_data-0.11.1 → mostlyright_data-0.12.0}/src/mostlyright/data_harness/sources/catalog/authoring_policy.py +0 -0
  378. {mostlyright_data-0.11.1 → mostlyright_data-0.12.0}/src/mostlyright/data_harness/sources/catalog/authoring_shards.py +0 -0
  379. {mostlyright_data-0.11.1 → mostlyright_data-0.12.0}/src/mostlyright/data_harness/sources/catalog/bounded_io.py +0 -0
  380. {mostlyright_data-0.11.1 → mostlyright_data-0.12.0}/src/mostlyright/data_harness/sources/catalog/channel.py +0 -0
  381. {mostlyright_data-0.11.1 → mostlyright_data-0.12.0}/src/mostlyright/data_harness/sources/catalog/channel_client.py +0 -0
  382. {mostlyright_data-0.11.1 → mostlyright_data-0.12.0}/src/mostlyright/data_harness/sources/catalog/contracts.py +0 -0
  383. {mostlyright_data-0.11.1 → mostlyright_data-0.12.0}/src/mostlyright/data_harness/sources/catalog/coverage.py +0 -0
  384. {mostlyright_data-0.11.1 → mostlyright_data-0.12.0}/src/mostlyright/data_harness/sources/catalog/delta.py +0 -0
  385. {mostlyright_data-0.11.1 → mostlyright_data-0.12.0}/src/mostlyright/data_harness/sources/catalog/embedding.py +0 -0
  386. {mostlyright_data-0.11.1 → mostlyright_data-0.12.0}/src/mostlyright/data_harness/sources/catalog/entry_v2.py +0 -0
  387. {mostlyright_data-0.11.1 → mostlyright_data-0.12.0}/src/mostlyright/data_harness/sources/catalog/fill.py +0 -0
  388. {mostlyright_data-0.11.1 → mostlyright_data-0.12.0}/src/mostlyright/data_harness/sources/catalog/fill_partitions.py +0 -0
  389. {mostlyright_data-0.11.1 → mostlyright_data-0.12.0}/src/mostlyright/data_harness/sources/catalog/fill_staging.py +0 -0
  390. {mostlyright_data-0.11.1 → mostlyright_data-0.12.0}/src/mostlyright/data_harness/sources/catalog/gating.py +0 -0
  391. {mostlyright_data-0.11.1 → mostlyright_data-0.12.0}/src/mostlyright/data_harness/sources/catalog/generation_receipt.py +0 -0
  392. {mostlyright_data-0.11.1 → mostlyright_data-0.12.0}/src/mostlyright/data_harness/sources/catalog/harvest/__init__.py +0 -0
  393. {mostlyright_data-0.11.1 → mostlyright_data-0.12.0}/src/mostlyright/data_harness/sources/catalog/harvest/ckan.py +0 -0
  394. {mostlyright_data-0.11.1 → mostlyright_data-0.12.0}/src/mostlyright/data_harness/sources/catalog/harvest/datagov_v4.py +0 -0
  395. {mostlyright_data-0.11.1 → mostlyright_data-0.12.0}/src/mostlyright/data_harness/sources/catalog/harvest/protocol.py +0 -0
  396. {mostlyright_data-0.11.1 → mostlyright_data-0.12.0}/src/mostlyright/data_harness/sources/catalog/harvest/sdmx.py +0 -0
  397. {mostlyright_data-0.11.1 → mostlyright_data-0.12.0}/src/mostlyright/data_harness/sources/catalog/harvest/stac.py +0 -0
  398. {mostlyright_data-0.11.1 → mostlyright_data-0.12.0}/src/mostlyright/data_harness/sources/catalog/health.py +0 -0
  399. {mostlyright_data-0.11.1 → mostlyright_data-0.12.0}/src/mostlyright/data_harness/sources/catalog/hosted_catalog.py +0 -0
  400. {mostlyright_data-0.11.1 → mostlyright_data-0.12.0}/src/mostlyright/data_harness/sources/catalog/identity_history.py +0 -0
  401. {mostlyright_data-0.11.1 → mostlyright_data-0.12.0}/src/mostlyright/data_harness/sources/catalog/neural.py +0 -0
  402. {mostlyright_data-0.11.1 → mostlyright_data-0.12.0}/src/mostlyright/data_harness/sources/catalog/packed_catalog.py +0 -0
  403. {mostlyright_data-0.11.1 → mostlyright_data-0.12.0}/src/mostlyright/data_harness/sources/catalog/packed_retrieval.py +0 -0
  404. {mostlyright_data-0.11.1 → mostlyright_data-0.12.0}/src/mostlyright/data_harness/sources/catalog/packed_writer.py +0 -0
  405. {mostlyright_data-0.11.1 → mostlyright_data-0.12.0}/src/mostlyright/data_harness/sources/catalog/query_trace.py +0 -0
  406. {mostlyright_data-0.11.1 → mostlyright_data-0.12.0}/src/mostlyright/data_harness/sources/catalog/recommend.py +0 -0
  407. {mostlyright_data-0.11.1 → mostlyright_data-0.12.0}/src/mostlyright/data_harness/sources/catalog/retrieval.py +0 -0
  408. {mostlyright_data-0.11.1 → mostlyright_data-0.12.0}/src/mostlyright/data_harness/sources/catalog/retrieval_manifest.py +0 -0
  409. {mostlyright_data-0.11.1 → mostlyright_data-0.12.0}/src/mostlyright/data_harness/sources/catalog/rights_decisions.py +0 -0
  410. {mostlyright_data-0.11.1 → mostlyright_data-0.12.0}/src/mostlyright/data_harness/sources/catalog/sealed.py +0 -0
  411. {mostlyright_data-0.11.1 → mostlyright_data-0.12.0}/src/mostlyright/data_harness/sources/catalog/search.py +0 -0
  412. {mostlyright_data-0.11.1 → mostlyright_data-0.12.0}/src/mostlyright/data_harness/sources/catalog/streaming_delta.py +0 -0
  413. {mostlyright_data-0.11.1 → mostlyright_data-0.12.0}/src/mostlyright/data_harness/sources/catalog/update.py +0 -0
  414. {mostlyright_data-0.11.1 → mostlyright_data-0.12.0}/src/mostlyright/data_harness/sources/collections.py +0 -0
  415. {mostlyright_data-0.11.1 → mostlyright_data-0.12.0}/src/mostlyright/data_harness/sources/contracts.py +0 -0
  416. {mostlyright_data-0.11.1 → mostlyright_data-0.12.0}/src/mostlyright/data_harness/sources/dataset.py +0 -0
  417. {mostlyright_data-0.11.1 → mostlyright_data-0.12.0}/src/mostlyright/data_harness/sources/deletion.py +0 -0
  418. {mostlyright_data-0.11.1 → mostlyright_data-0.12.0}/src/mostlyright/data_harness/sources/document_projection.py +0 -0
  419. {mostlyright_data-0.11.1 → mostlyright_data-0.12.0}/src/mostlyright/data_harness/sources/fitness.py +0 -0
  420. {mostlyright_data-0.11.1 → mostlyright_data-0.12.0}/src/mostlyright/data_harness/sources/governance.py +0 -0
  421. {mostlyright_data-0.11.1 → mostlyright_data-0.12.0}/src/mostlyright/data_harness/sources/hosted.py +0 -0
  422. {mostlyright_data-0.11.1 → mostlyright_data-0.12.0}/src/mostlyright/data_harness/sources/integration.py +0 -0
  423. {mostlyright_data-0.11.1 → mostlyright_data-0.12.0}/src/mostlyright/data_harness/sources/range_reader.py +0 -0
  424. {mostlyright_data-0.11.1 → mostlyright_data-0.12.0}/src/mostlyright/data_harness/sources/registry.py +0 -0
  425. {mostlyright_data-0.11.1 → mostlyright_data-0.12.0}/src/mostlyright/data_harness/sources/rights_rule.py +0 -0
  426. {mostlyright_data-0.11.1 → mostlyright_data-0.12.0}/src/mostlyright/data_harness/sources/source_cadence_vectors.v1.json +0 -0
  427. {mostlyright_data-0.11.1 → mostlyright_data-0.12.0}/src/mostlyright/data_harness/sources/sports.py +0 -0
  428. {mostlyright_data-0.11.1 → mostlyright_data-0.12.0}/src/mostlyright/data_harness/sources/stream.py +0 -0
  429. {mostlyright_data-0.11.1 → mostlyright_data-0.12.0}/src/mostlyright/data_harness/sources/stream_capture_session.py +0 -0
  430. {mostlyright_data-0.11.1 → mostlyright_data-0.12.0}/src/mostlyright/data_harness/sources/stream_connector.py +0 -0
  431. {mostlyright_data-0.11.1 → mostlyright_data-0.12.0}/src/mostlyright/data_harness/sources/stream_connectors/fixture.cursor-resume.v3.json +0 -0
  432. {mostlyright_data-0.11.1 → mostlyright_data-0.12.0}/src/mostlyright/data_harness/sources/stream_connectors/fixture.keyed-frame-ed25519.v2.json +0 -0
  433. {mostlyright_data-0.11.1 → mostlyright_data-0.12.0}/src/mostlyright/data_harness/sources/stream_connectors/fixture.keyed-frame-hmac.v2.json +0 -0
  434. {mostlyright_data-0.11.1 → mostlyright_data-0.12.0}/src/mostlyright/data_harness/sources/stream_connectors/fixture.keyed-frame-hmac384.v2.json +0 -0
  435. {mostlyright_data-0.11.1 → mostlyright_data-0.12.0}/src/mostlyright/data_harness/sources/stream_connectors/fixture.keyed-frame-hmac512.v2.json +0 -0
  436. {mostlyright_data-0.11.1 → mostlyright_data-0.12.0}/src/mostlyright/data_harness/sources/stream_connectors/fixture.keyed-frame.v2.json +0 -0
  437. {mostlyright_data-0.11.1 → mostlyright_data-0.12.0}/src/mostlyright/data_harness/sources/stream_connectors/fixture.keyed-header-rsa.v2.json +0 -0
  438. {mostlyright_data-0.11.1 → mostlyright_data-0.12.0}/src/mostlyright/data_harness/sources/stream_connectors/fixture.keyed-header.v2.json +0 -0
  439. {mostlyright_data-0.11.1 → mostlyright_data-0.12.0}/src/mostlyright/data_harness/sources/stream_connectors/fixture.keyed-permessage-jwt.v2.json +0 -0
  440. {mostlyright_data-0.11.1 → mostlyright_data-0.12.0}/src/mostlyright/data_harness/sources/stream_connectors/fixture.keyed-permessage.v2.json +0 -0
  441. {mostlyright_data-0.11.1 → mostlyright_data-0.12.0}/src/mostlyright/data_harness/sources/stream_connectors/fixture.keyed-prelude.v2.json +0 -0
  442. {mostlyright_data-0.11.1 → mostlyright_data-0.12.0}/src/mostlyright/data_harness/sources/stream_connectors/fixture.keyed-query.v2.json +0 -0
  443. {mostlyright_data-0.11.1 → mostlyright_data-0.12.0}/src/mostlyright/data_harness/sources/stream_connectors/fixture.keyed-subprotocol.v2.json +0 -0
  444. {mostlyright_data-0.11.1 → mostlyright_data-0.12.0}/src/mostlyright/data_harness/sources/stream_connectors/fixture.keyed-subscribe.v2.json +0 -0
  445. {mostlyright_data-0.11.1 → mostlyright_data-0.12.0}/src/mostlyright/data_harness/sources/stream_connectors/fixture.keyed-urlpath.v2.json +0 -0
  446. {mostlyright_data-0.11.1 → mostlyright_data-0.12.0}/src/mostlyright/data_harness/sources/stream_connectors/polymarket.clob-market.v1.json +0 -0
  447. {mostlyright_data-0.11.1 → mostlyright_data-0.12.0}/src/mostlyright/data_harness/sources/stream_credential.py +0 -0
  448. {mostlyright_data-0.11.1 → mostlyright_data-0.12.0}/src/mostlyright/data_harness/sources/stream_prelude.py +0 -0
  449. {mostlyright_data-0.11.1 → mostlyright_data-0.12.0}/src/mostlyright/data_harness/sources/stream_recorder.py +0 -0
  450. {mostlyright_data-0.11.1 → mostlyright_data-0.12.0}/src/mostlyright/data_harness/sources/stream_registry.py +0 -0
  451. {mostlyright_data-0.11.1 → mostlyright_data-0.12.0}/src/mostlyright/data_harness/sources/stream_rotation.py +0 -0
  452. {mostlyright_data-0.11.1 → mostlyright_data-0.12.0}/src/mostlyright/data_harness/sources/stream_segment_recorder.py +0 -0
  453. {mostlyright_data-0.11.1 → mostlyright_data-0.12.0}/src/mostlyright/data_harness/sources/stream_series.py +0 -0
  454. {mostlyright_data-0.11.1 → mostlyright_data-0.12.0}/src/mostlyright/data_harness/sources/stream_signing.py +0 -0
  455. {mostlyright_data-0.11.1 → mostlyright_data-0.12.0}/src/mostlyright/data_harness/sources/stream_transport.py +0 -0
  456. {mostlyright_data-0.11.1 → mostlyright_data-0.12.0}/src/mostlyright/data_harness/sql_transform_engine.py +0 -0
  457. {mostlyright_data-0.11.1 → mostlyright_data-0.12.0}/src/mostlyright/data_harness/stream_subscription_feed.py +0 -0
  458. {mostlyright_data-0.11.1 → mostlyright_data-0.12.0}/src/mostlyright/data_harness/stream_subscription_sealer.py +0 -0
  459. {mostlyright_data-0.11.1 → mostlyright_data-0.12.0}/src/mostlyright/data_harness/stream_subscription_worker.py +0 -0
  460. {mostlyright_data-0.11.1 → mostlyright_data-0.12.0}/src/mostlyright/data_harness/stream_venue.py +0 -0
  461. {mostlyright_data-0.11.1 → mostlyright_data-0.12.0}/src/mostlyright/data_harness/stream_venue_staging.py +0 -0
  462. {mostlyright_data-0.11.1 → mostlyright_data-0.12.0}/src/mostlyright/data_harness/studio_subscription_control.py +0 -0
  463. {mostlyright_data-0.11.1 → mostlyright_data-0.12.0}/src/mostlyright/data_harness/thin/__init__.py +0 -0
  464. {mostlyright_data-0.11.1 → mostlyright_data-0.12.0}/src/mostlyright/data_harness/thin/acquire.py +0 -0
  465. {mostlyright_data-0.11.1 → mostlyright_data-0.12.0}/src/mostlyright/data_harness/thin/acquire_cancel.py +0 -0
  466. {mostlyright_data-0.11.1 → mostlyright_data-0.12.0}/src/mostlyright/data_harness/thin/approvals.py +0 -0
  467. {mostlyright_data-0.11.1 → mostlyright_data-0.12.0}/src/mostlyright/data_harness/thin/commands.py +0 -0
  468. {mostlyright_data-0.11.1 → mostlyright_data-0.12.0}/src/mostlyright/data_harness/thin/download.py +0 -0
  469. {mostlyright_data-0.11.1 → mostlyright_data-0.12.0}/src/mostlyright/data_harness/thin/narrative.py +0 -0
  470. {mostlyright_data-0.11.1 → mostlyright_data-0.12.0}/src/mostlyright/data_harness/thin/parity.py +0 -0
  471. {mostlyright_data-0.11.1 → mostlyright_data-0.12.0}/src/mostlyright/data_harness/thin/probe.py +0 -0
  472. {mostlyright_data-0.11.1 → mostlyright_data-0.12.0}/src/mostlyright/data_harness/thin/propose.py +0 -0
  473. {mostlyright_data-0.11.1 → mostlyright_data-0.12.0}/src/mostlyright/data_harness/thin/recipe.py +0 -0
  474. {mostlyright_data-0.11.1 → mostlyright_data-0.12.0}/src/mostlyright/data_harness/thin/research.py +0 -0
  475. {mostlyright_data-0.11.1 → mostlyright_data-0.12.0}/src/mostlyright/data_harness/thin/runs.py +0 -0
  476. {mostlyright_data-0.11.1 → mostlyright_data-0.12.0}/src/mostlyright/data_harness/thin/session.py +0 -0
  477. {mostlyright_data-0.11.1 → mostlyright_data-0.12.0}/src/mostlyright/data_harness/thin/stream.py +0 -0
  478. {mostlyright_data-0.11.1 → mostlyright_data-0.12.0}/src/mostlyright/data_harness/thin/stream_venue.py +0 -0
  479. {mostlyright_data-0.11.1 → mostlyright_data-0.12.0}/src/mostlyright/data_harness/thin/transport.py +0 -0
  480. {mostlyright_data-0.11.1 → mostlyright_data-0.12.0}/src/mostlyright/data_harness/thin/v4_artifacts.py +0 -0
  481. {mostlyright_data-0.11.1 → mostlyright_data-0.12.0}/src/mostlyright/data_harness/thin/v4_dataset_covers.py +0 -0
  482. {mostlyright_data-0.11.1 → mostlyright_data-0.12.0}/src/mostlyright/data_harness/thin/v4_datasets.py +0 -0
  483. {mostlyright_data-0.11.1 → mostlyright_data-0.12.0}/src/mostlyright/data_harness/thin/v4_handoff.py +0 -0
  484. {mostlyright_data-0.11.1 → mostlyright_data-0.12.0}/src/mostlyright/data_harness/thin/v4_narrative.py +0 -0
  485. {mostlyright_data-0.11.1 → mostlyright_data-0.12.0}/src/mostlyright/data_harness/thin/v4_runs.py +0 -0
  486. {mostlyright_data-0.11.1 → mostlyright_data-0.12.0}/src/mostlyright/data_harness/thin/v4_secrets.py +0 -0
  487. {mostlyright_data-0.11.1 → mostlyright_data-0.12.0}/src/mostlyright/data_harness/thin/workers.py +0 -0
  488. {mostlyright_data-0.11.1 → mostlyright_data-0.12.0}/src/mostlyright/data_harness/ucum/TABLE-PIN.json +0 -0
  489. {mostlyright_data-0.11.1 → mostlyright_data-0.12.0}/src/mostlyright/data_harness/ucum/ucum-subset.v1.json +0 -0
  490. {mostlyright_data-0.11.1 → mostlyright_data-0.12.0}/src/mostlyright/data_harness/unit_flow.py +0 -0
  491. {mostlyright_data-0.11.1 → mostlyright_data-0.12.0}/src/mostlyright/data_harness/units.py +0 -0
  492. {mostlyright_data-0.11.1 → mostlyright_data-0.12.0}/src/mostlyright/data_harness/ux/__init__.py +0 -0
  493. {mostlyright_data-0.11.1 → mostlyright_data-0.12.0}/src/mostlyright/data_harness/ux/approve.py +0 -0
  494. {mostlyright_data-0.11.1 → mostlyright_data-0.12.0}/src/mostlyright/data_harness/ux/attendance.py +0 -0
  495. {mostlyright_data-0.11.1 → mostlyright_data-0.12.0}/src/mostlyright/data_harness/ux/author_yaml.py +0 -0
  496. {mostlyright_data-0.11.1 → mostlyright_data-0.12.0}/src/mostlyright/data_harness/ux/clarification.py +0 -0
  497. {mostlyright_data-0.11.1 → mostlyright_data-0.12.0}/src/mostlyright/data_harness/ux/cloud_auth.py +0 -0
  498. {mostlyright_data-0.11.1 → mostlyright_data-0.12.0}/src/mostlyright/data_harness/ux/commands/__init__.py +0 -0
  499. {mostlyright_data-0.11.1 → mostlyright_data-0.12.0}/src/mostlyright/data_harness/ux/commands/approve.py +0 -0
  500. {mostlyright_data-0.11.1 → mostlyright_data-0.12.0}/src/mostlyright/data_harness/ux/commands/auth.py +0 -0
  501. {mostlyright_data-0.11.1 → mostlyright_data-0.12.0}/src/mostlyright/data_harness/ux/commands/author.py +0 -0
  502. {mostlyright_data-0.11.1 → mostlyright_data-0.12.0}/src/mostlyright/data_harness/ux/commands/catalog_author.py +0 -0
  503. {mostlyright_data-0.11.1 → mostlyright_data-0.12.0}/src/mostlyright/data_harness/ux/commands/catalog_fill.py +0 -0
  504. {mostlyright_data-0.11.1 → mostlyright_data-0.12.0}/src/mostlyright/data_harness/ux/commands/catalog_harvest.py +0 -0
  505. {mostlyright_data-0.11.1 → mostlyright_data-0.12.0}/src/mostlyright/data_harness/ux/commands/catalog_publish.py +0 -0
  506. {mostlyright_data-0.11.1 → mostlyright_data-0.12.0}/src/mostlyright/data_harness/ux/commands/catalog_search.py +0 -0
  507. {mostlyright_data-0.11.1 → mostlyright_data-0.12.0}/src/mostlyright/data_harness/ux/commands/catalog_update.py +0 -0
  508. {mostlyright_data-0.11.1 → mostlyright_data-0.12.0}/src/mostlyright/data_harness/ux/commands/clarify.py +0 -0
  509. {mostlyright_data-0.11.1 → mostlyright_data-0.12.0}/src/mostlyright/data_harness/ux/commands/deploy.py +0 -0
  510. {mostlyright_data-0.11.1 → mostlyright_data-0.12.0}/src/mostlyright/data_harness/ux/commands/deploy_dataset.py +0 -0
  511. {mostlyright_data-0.11.1 → mostlyright_data-0.12.0}/src/mostlyright/data_harness/ux/commands/deploy_plan.py +0 -0
  512. {mostlyright_data-0.11.1 → mostlyright_data-0.12.0}/src/mostlyright/data_harness/ux/commands/deploy_status.py +0 -0
  513. {mostlyright_data-0.11.1 → mostlyright_data-0.12.0}/src/mostlyright/data_harness/ux/commands/diff.py +0 -0
  514. {mostlyright_data-0.11.1 → mostlyright_data-0.12.0}/src/mostlyright/data_harness/ux/commands/document.py +0 -0
  515. {mostlyright_data-0.11.1 → mostlyright_data-0.12.0}/src/mostlyright/data_harness/ux/commands/index.py +0 -0
  516. {mostlyright_data-0.11.1 → mostlyright_data-0.12.0}/src/mostlyright/data_harness/ux/commands/inventory.py +0 -0
  517. {mostlyright_data-0.11.1 → mostlyright_data-0.12.0}/src/mostlyright/data_harness/ux/commands/list_builds.py +0 -0
  518. {mostlyright_data-0.11.1 → mostlyright_data-0.12.0}/src/mostlyright/data_harness/ux/commands/login.py +0 -0
  519. {mostlyright_data-0.11.1 → mostlyright_data-0.12.0}/src/mostlyright/data_harness/ux/commands/peek.py +0 -0
  520. {mostlyright_data-0.11.1 → mostlyright_data-0.12.0}/src/mostlyright/data_harness/ux/commands/plan_check.py +0 -0
  521. {mostlyright_data-0.11.1 → mostlyright_data-0.12.0}/src/mostlyright/data_harness/ux/commands/preflight.py +0 -0
  522. {mostlyright_data-0.11.1 → mostlyright_data-0.12.0}/src/mostlyright/data_harness/ux/commands/record.py +0 -0
  523. {mostlyright_data-0.11.1 → mostlyright_data-0.12.0}/src/mostlyright/data_harness/ux/commands/review_setup.py +0 -0
  524. {mostlyright_data-0.11.1 → mostlyright_data-0.12.0}/src/mostlyright/data_harness/ux/commands/search.py +0 -0
  525. {mostlyright_data-0.11.1 → mostlyright_data-0.12.0}/src/mostlyright/data_harness/ux/commands/show.py +0 -0
  526. {mostlyright_data-0.11.1 → mostlyright_data-0.12.0}/src/mostlyright/data_harness/ux/commands/whoami.py +0 -0
  527. {mostlyright_data-0.11.1 → mostlyright_data-0.12.0}/src/mostlyright/data_harness/ux/credential_native.py +0 -0
  528. {mostlyright_data-0.11.1 → mostlyright_data-0.12.0}/src/mostlyright/data_harness/ux/credential_store.py +0 -0
  529. {mostlyright_data-0.11.1 → mostlyright_data-0.12.0}/src/mostlyright/data_harness/ux/credentials.py +0 -0
  530. {mostlyright_data-0.11.1 → mostlyright_data-0.12.0}/src/mostlyright/data_harness/ux/diffing.py +0 -0
  531. {mostlyright_data-0.11.1 → mostlyright_data-0.12.0}/src/mostlyright/data_harness/ux/headline.py +0 -0
  532. {mostlyright_data-0.11.1 → mostlyright_data-0.12.0}/src/mostlyright/data_harness/ux/hosted_acquisition.py +0 -0
  533. {mostlyright_data-0.11.1 → mostlyright_data-0.12.0}/src/mostlyright/data_harness/ux/hosted_run_status.py +0 -0
  534. {mostlyright_data-0.11.1 → mostlyright_data-0.12.0}/src/mostlyright/data_harness/ux/inventory.py +0 -0
  535. {mostlyright_data-0.11.1 → mostlyright_data-0.12.0}/src/mostlyright/data_harness/ux/local_review.py +0 -0
  536. {mostlyright_data-0.11.1 → mostlyright_data-0.12.0}/src/mostlyright/data_harness/ux/login.py +0 -0
  537. {mostlyright_data-0.11.1 → mostlyright_data-0.12.0}/src/mostlyright/data_harness/ux/path_kind.py +0 -0
  538. {mostlyright_data-0.11.1 → mostlyright_data-0.12.0}/src/mostlyright/data_harness/ux/peek.py +0 -0
  539. {mostlyright_data-0.11.1 → mostlyright_data-0.12.0}/src/mostlyright/data_harness/ux/plain_file.py +0 -0
  540. {mostlyright_data-0.11.1 → mostlyright_data-0.12.0}/src/mostlyright/data_harness/ux/plan_check.py +0 -0
  541. {mostlyright_data-0.11.1 → mostlyright_data-0.12.0}/src/mostlyright/data_harness/ux/preflight.py +0 -0
  542. {mostlyright_data-0.11.1 → mostlyright_data-0.12.0}/src/mostlyright/data_harness/ux/readers.py +0 -0
  543. {mostlyright_data-0.11.1 → mostlyright_data-0.12.0}/src/mostlyright/data_harness/ux/remediation.py +0 -0
  544. {mostlyright_data-0.11.1 → mostlyright_data-0.12.0}/src/mostlyright/data_harness/ux/workload.py +0 -0
  545. {mostlyright_data-0.11.1 → mostlyright_data-0.12.0}/src/mostlyright/data_harness/v4_acquisition.py +0 -0
  546. {mostlyright_data-0.11.1 → mostlyright_data-0.12.0}/src/mostlyright/data_harness/v4_check_dialect.py +0 -0
  547. {mostlyright_data-0.11.1 → mostlyright_data-0.12.0}/src/mostlyright/data_harness/v4_document_pin.py +0 -0
  548. {mostlyright_data-0.11.1 → mostlyright_data-0.12.0}/src/mostlyright/data_harness/v4_reader_pin.py +0 -0
  549. {mostlyright_data-0.11.1 → mostlyright_data-0.12.0}/src/mostlyright/data_harness/v4_recipe.py +0 -0
  550. {mostlyright_data-0.11.1 → mostlyright_data-0.12.0}/src/mostlyright/data_harness/v4_required_controls.py +0 -0
  551. {mostlyright_data-0.11.1 → mostlyright_data-0.12.0}/src/mostlyright/data_harness/v4_snapshot_artifact.py +0 -0
  552. {mostlyright_data-0.11.1 → mostlyright_data-0.12.0}/src/mostlyright/data_harness/v4_transform.py +0 -0
  553. {mostlyright_data-0.11.1 → mostlyright_data-0.12.0}/src/mostlyright/data_harness/visual_run/__init__.py +0 -0
  554. {mostlyright_data-0.11.1 → mostlyright_data-0.12.0}/src/mostlyright/data_harness/visual_run/authoring.py +0 -0
  555. {mostlyright_data-0.11.1 → mostlyright_data-0.12.0}/src/mostlyright/data_harness/visual_run/contracts.py +0 -0
  556. {mostlyright_data-0.11.1 → mostlyright_data-0.12.0}/src/mostlyright/data_harness/visual_run/materialize.py +0 -0
  557. {mostlyright_data-0.11.1 → mostlyright_data-0.12.0}/src/mostlyright/data_harness/visual_run/observations.py +0 -0
  558. {mostlyright_data-0.11.1 → mostlyright_data-0.12.0}/src/mostlyright/data_harness/visual_run/query.py +0 -0
  559. {mostlyright_data-0.11.1 → mostlyright_data-0.12.0}/src/mostlyright/data_harness/visual_run/reducer.py +0 -0
  560. {mostlyright_data-0.11.1 → mostlyright_data-0.12.0}/src/mostlyright/data_harness/visual_run/sdk.py +0 -0
  561. {mostlyright_data-0.11.1 → mostlyright_data-0.12.0}/src/mostlyright/data_harness/visual_run/store.py +0 -0
  562. {mostlyright_data-0.11.1 → mostlyright_data-0.12.0}/src/mostlyright/data_harness/visual_run/transport.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: mostlyright-data
3
- Version: 0.11.1
3
+ Version: 0.12.0
4
4
  Summary: Mostly Right CLI for reproducible, reviewed Parquet datasets
5
5
  Project-URL: Homepage, https://mostlyright.md/
6
6
  Project-URL: Documentation, https://mostlyright.md/docs/guides/cli/
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "mostlyright-data"
3
- version = "0.11.1"
3
+ version = "0.12.0"
4
4
  description = "Mostly Right CLI for reproducible, reviewed Parquet datasets"
5
5
  readme = "README.md"
6
6
  requires-python = ">=3.13,<3.14"
@@ -88,14 +88,14 @@ the one command with no implementation behind it.
88
88
  There is no second profile and no lane to choose. `--hosted` is accepted and does nothing, because
89
89
  the lane it names is the only one; a script that already carries it keeps working.
90
90
 
91
- `mr-data --help` lists every command this product has — twenty-six of them, and the page is the
91
+ `mr-data --help` lists every command this product has — twenty-eight of them, and the page is the
92
92
  whole list. A name that is not on it is not a command: typing one answers `THIN_UNKNOWN_COMMAND`,
93
93
  exactly as a misspelling does. Do not retry it under a different install, and do not report its
94
94
  absence as a defect.
95
95
 
96
96
  ## Commands
97
97
 
98
- These twenty-six are the whole surface, alongside `acquire-slices`, which names a capability
98
+ These twenty-eight are the whole surface, alongside `acquire-slices`, which names a capability
99
99
  gap rather than doing anything, and `export-hosted-candidate`, which is a backend operator step.
100
100
 
101
101
  | Command | What it does |
@@ -123,15 +123,17 @@ gap rather than doing anything, and `export-hosted-candidate`, which is a backen
123
123
  | `mr-data stream` | Record a public `wss://` venue so a build can read it. `stream document register --file F` admits the connector document, `stream registry create --digest D` admits a set of them, `stream probe` listens briefly and seals nothing, `stream capture --seconds N` records a bounded window, `stream subscribe` keeps recording, `stream subscription {show|pause|resume|stop} ID` moves one, `stream status ID` reads a capture or a probe, and `stream recordings --document-digest D` names what a build could read and until when. `--seconds` is at most 600. `mr-data run` takes no duration: a build reads sealed batches and is bounded by them. |
124
124
  | `mr-data open` | Mint a single-use, short-lived address that continues this session in a browser at one dashboard path, and print it. `--open` hands it to the platform opener. The credential decides who mints: a device credential — what `mr-data login` stores — mints at Cloud, and a personal access token mints at Studio. |
125
125
  | `mr-data promote` | Ask Studio to publish one table after a person's decision. The Harness worker does not perform the catch-up or scheduled refresh; report those only when another deployed component returns durable evidence that it did. |
126
+ | `mr-data reschedule` | Change how often one live table refreshes, without the demote and promote that would reset its bookkeeping and buy a catch-up run. `--cadence` takes a cron expression or an interval such as `every 6h`; `--why` records the reasoning. It starts no run. `--lock` freezes the schedule so Studio stops adjusting it; `--unlock` lets it follow the source again. |
127
+ | `mr-data table` | Report what one table is serving and how its refresh schedule is going: the state in plain words, the schedule in force, the next refresh, the schedule that was asked for and the reason given for it, and — once Studio has settled on one — the interval it measured and how many source updates that rests on. |
126
128
  | `mr-data pin` | Ask Studio to freeze one table pointer on an exact version, for a rollback or a hold. |
127
129
  | `mr-data unpin` | Ask Studio to resume pointer tracking; read the returned state before claiming it resumed. |
128
130
  | `mr-data demote` | Ask Studio to withdraw the pointer and any schedule it owns. |
129
131
 
130
132
  `auth`, `login`, `whoami` and `clarify` are the same implementation in both profiles, and
131
- `clarify` alone reaches nothing at all. The other twenty-two answer from Studio. Eight only
132
- read: `status`, `runs`, `watch`, `peek`, `receipt`, `checks`, `download` and `diff`. Fourteen
133
- start or change something: `dataset`, `recipe`, `cover`, `run`, `query`, `probe`, `keys`,
134
- `stream`, `open`, `note`, `promote`, `pin`, `unpin` and `demote`.
133
+ `clarify` alone reaches nothing at all. The other twenty-four answer from Studio. Nine only
134
+ read: `status`, `runs`, `watch`, `peek`, `receipt`, `checks`, `download`, `diff` and `table`.
135
+ Fifteen start or change something: `dataset`, `recipe`, `cover`, `run`, `query`, `probe`, `keys`,
136
+ `stream`, `open`, `note`, `promote`, `reschedule`, `pin`, `unpin` and `demote`.
135
137
 
136
138
  **Any successful run is readable straight away.** There is no approval, no admission and no release
137
139
  step between a run finishing and reading it: `download`, `receipt`, `checks`, `peek` and `query`
@@ -629,7 +631,7 @@ Four reads, and none of them waits on anything:
629
631
 
630
632
  ```sh
631
633
  mr-data peek RUN --json # columns, logical types, first rows
632
- mr-data query RUN "select count(*) from t" --json
634
+ mr-data query RUN "select count(*) from run_table" --json
633
635
  mr-data checks RUN --json # every check the recipe declared
634
636
  mr-data receipt RUN --json # sources, digests, coverage, snapshot members
635
637
  ```
@@ -650,11 +652,13 @@ The refusals are cheap and legible by design, so read the code rather than retry
650
652
  | `QUERY_RESULT_TOO_LARGE` | The answer was over the byte ceiling. It is a refusal, never a truncation: a short answer that looked complete would be worse than none. |
651
653
  | `QUERY_TIMEOUT` | The statement outran its deadline. |
652
654
  | `QUERY_TABLE_UNAVAILABLE` | The run has no readable table — it did not succeed, or its artifact is not there. |
653
- | `QUERY_NO_WARM_EXECUTOR` | No warm worker holds this workspace. The refusal carries a retry window. |
655
+ | `QUERY_NO_WARM_EXECUTOR` | No warm worker holds this workspace. `mr-data query` answers it by opening a research session for the run's dataset, asking, and closing it; with `--no-session` the refusal is printed instead, carrying a retry window. |
654
656
 
655
657
  **Studio deliberately does not start a worker on a query.** Scale-to-session is a cost invariant,
656
- so retrying `QUERY_NO_WARM_EXECUTOR` in a tight loop spends time against a wall. Wait through the
657
- window it names, or take a sample run first — a run warms the session that a query then reuses.
658
+ so the cold start is spent only on a question actually asked: `mr-data query` opens a session for
659
+ the run's own dataset when no worker is warm, waits for its worker (the states are printed as they
660
+ happen), asks, and closes the session behind the answer. Pass `--no-session` to be refused instead,
661
+ and then wait through the window the refusal names rather than retrying in a tight loop.
658
662
 
659
663
  **The statement gate is a word-boundary scan over a masked copy of the statement, and it does not
660
664
  read SQL.**
@@ -1053,9 +1057,32 @@ strength of having asked.
1053
1057
  Once the user has approved it:
1054
1058
 
1055
1059
  ```sh
1056
- mr-data promote TABLE_ID --cadence source --json
1060
+ mr-data promote TABLE_ID --cadence "every 6h from 2026-09-03T02:40:00Z" --why "..." --json
1057
1061
  ```
1058
1062
 
1063
+ **Reason about the refresh schedule; do not reach for a default.** You have already read the
1064
+ source's own documentation and watched it answer, so you are the one party who knows anything about
1065
+ when it publishes. Say what you know: the times of day it posts, how often it changes, and how long
1066
+ after the stated publication time the bytes actually appear. `--cadence` takes a five-field cron
1067
+ expression, an interval such as `every 6h` or `every 30m from 2026-09-03T12:20:00Z`, or the word
1068
+ `source` to decline the question and let Studio choose. `--why` is one paragraph recording the
1069
+ reasoning, and it is required unless you asked for `source`; it is kept beside the table and read by
1070
+ whoever looks next, so write it for them rather than for yourself.
1071
+
1072
+ **What you give is a seed, not a setting.** Studio watches what each source actually does on every
1073
+ refresh and moves the schedule to match, so a seed that is roughly right is worth far more than a
1074
+ safe guess, and one that is wrong is corrected rather than obeyed. Until the table reports its
1075
+ schedule as settled, the schedule is still being worked out: `mr-data table TABLE_ID` says which it
1076
+ is, in plain words, along with the schedule in force, the next refresh, what you asked for and why,
1077
+ and — once there is one — the interval Studio measured and how many source updates it rests on.
1078
+ **Never describe a schedule as learned, settled or confirmed while that command says otherwise.**
1079
+
1080
+ `mr-data reschedule TABLE_ID --cadence ... --why "..."` changes the schedule of a table that is
1081
+ already live without starting a run or spending anything. Adding `--lock` freezes the schedule so
1082
+ Studio stops adjusting it, which is how a person overrides the evidence; `--unlock` lets it follow
1083
+ the source again. Do not lock a schedule on your own judgement — it is the same kind of decision as
1084
+ promotion, and it belongs to the user.
1085
+
1059
1086
  This call is a publication request, not proof of data continuation. The current Harness worker
1060
1087
  cannot execute the catch-up backfill, refresh mode, or windowed acquisition needed to close the
1061
1088
  idle interval after the last successful run. It also does not attach or execute a warehouse
@@ -39,7 +39,6 @@ TWO SEAMS THIS REPOSITORY DOES NOT OWN, both named here so a reader does not go
39
39
  from __future__ import annotations
40
40
 
41
41
  import argparse
42
- import contextlib
43
42
  import hashlib
44
43
  import io
45
44
  import json
@@ -57,6 +56,7 @@ from dataclasses import dataclass, field, replace
57
56
  from pathlib import Path
58
57
  from types import FrameType, MappingProxyType
59
58
  from typing import Any, ClassVar, NoReturn, Protocol
59
+ from urllib.parse import urlsplit
60
60
  from uuid import UUID, uuid5
61
61
 
62
62
  from mostlyright.data_harness import pipeline, progress_events
@@ -109,19 +109,23 @@ from mostlyright.data_harness.recipe import RecipeError, parse_recipe_execution
109
109
  from mostlyright.data_harness.run_execution_v4 import (
110
110
  DOCUMENT_STAGE,
111
111
  FAILED_STAGES,
112
+ UNCHANGED_OUTCOME_MODES,
112
113
  RunCallbacks,
113
114
  RunExecution,
114
115
  RunExecutionError,
116
+ SourceChange,
115
117
  artifact_uploaded_body,
116
118
  compose_resource_limits,
117
119
  compose_source_limits,
118
120
  coverage_entry,
119
121
  engine_recipe,
122
+ every_source_unchanged,
120
123
  failed_body_for_unparsed,
121
124
  failed_body_from_error,
122
125
  failure_detail,
123
126
  parse_run_execution_v4,
124
127
  progress_body,
128
+ source_change_report,
125
129
  succeeded_body,
126
130
  synthesize_execution_lock,
127
131
  )
@@ -702,7 +706,12 @@ def permitted_artifact_hosts(
702
706
 
703
707
 
704
708
  def _download_signed_bytes(
705
- transfer: Any, session: Any, *, maximum: int, permitted_hosts: frozenset[str]
709
+ transfer: Any,
710
+ session: Any,
711
+ *,
712
+ maximum: int,
713
+ permitted_hosts: frozenset[str],
714
+ subject: str = "the predecessor download session",
706
715
  ) -> bytes:
707
716
  """GET one Studio-issued signed download session, bounded, into memory.
708
717
 
@@ -716,6 +725,10 @@ def _download_signed_bytes(
716
725
  :func:`restore_predecessor_record` before the receipt is read.
717
726
 
718
727
  BOTH ADDRESS CHECKS RUN BEFORE THE STREAM OPENS, so a refused session costs no bytes.
728
+
729
+ ``subject`` is how a refusal names the session. The predecessor lane wrote this helper and
730
+ names it as its own; a lane that restates the refusal in its own words hands over the name
731
+ it wants read back, so its sentence does not send a reader after a predecessor.
719
732
  """
720
733
 
721
734
  # ONE POLICY FOR BOTH HALVES. `permitted_hosts` has already been proved to be a host this
@@ -728,7 +741,7 @@ def _download_signed_bytes(
728
741
  # that WAS permitted -- Studio's own storage origin, which is not a secret -- and stops there.
729
742
  reason = signed_storage_refusal(session.signed_url, permitted=permitted_hosts)
730
743
  if reason is not None:
731
- raise _host_refusal(f"the predecessor download session is refused: {reason}")
744
+ raise _host_refusal(f"{subject} is refused: {reason}")
732
745
  chunks: list[bytes] = []
733
746
  total = 0
734
747
  # THE SIGNED URL REACHES NO LOG RECORD, which is the other half of the discipline the host
@@ -737,14 +750,12 @@ def _download_signed_bytes(
737
750
  # stream because the request line is written when the response arrives, not when it is sent.
738
751
  with _quiet_signed_transfer(), transfer.stream("GET", session.signed_url) as response:
739
752
  if int(response.status_code) != 200:
740
- raise _predecessor_refusal(
741
- f"the predecessor download session answered HTTP {response.status_code}"
742
- )
753
+ raise _predecessor_refusal(f"{subject} answered HTTP {response.status_code}")
743
754
  for chunk in response.iter_bytes():
744
755
  total += len(chunk)
745
756
  if total > maximum:
746
757
  raise _predecessor_refusal(
747
- "the predecessor artifact set exceeds the candidate envelope byte ceiling"
758
+ f"the bytes behind {subject} exceed the candidate envelope byte ceiling"
748
759
  )
749
760
  chunks.append(chunk)
750
761
  return b"".join(chunks)
@@ -1905,11 +1916,23 @@ def _evidence_uri(source: V4Source) -> str:
1905
1916
  So the address is sealed when the source has one, and the origin is what is sealed for a source
1906
1917
  addressed some other way, which has no requested URL to name. It is still a statement the
1907
1918
  DOCUMENT made: neither member is learned by fetching.
1919
+
1920
+ A STREAM SOURCE NAMES A SOCKET, AND THE EVIDENCE CONTRACT ADMITS ONLY HTTPS. Its recording
1921
+ was made at a ``wss://`` address that no request in this run is made to, and the reference
1922
+ the receipt seals must be an HTTPS URI. When the document states no origin, the venue's host
1923
+ is sealed under ``https`` -- the same host, and still nothing learned by fetching -- rather
1924
+ than the socket address the contract would refuse.
1908
1925
  """
1909
1926
 
1910
1927
  if source.locator.kind == "https_url":
1911
1928
  return source.locator.display_locator
1912
- return source.connector.origin or source.locator.display_locator
1929
+ if source.connector.origin:
1930
+ return source.connector.origin
1931
+ if source.locator.kind == "stream":
1932
+ host = urlsplit(source.locator.display_locator).hostname
1933
+ if host:
1934
+ return f"https://{host}"
1935
+ return source.locator.display_locator
1913
1936
 
1914
1937
 
1915
1938
  def _workspace_document_cas_root(job: RunExecution) -> Path:
@@ -2514,6 +2537,7 @@ def build_v4_candidate(
2514
2537
  output_dir: Path,
2515
2538
  cursor: _StageCursor | None = None,
2516
2539
  narrate: _ItemNarrator | None = None,
2540
+ halt_before_transform: Callable[[Mapping[str, str]], bool] | None = None,
2517
2541
  ) -> Any:
2518
2542
  """Acquire, transform and seal one registered document into a candidate.
2519
2543
 
@@ -2527,6 +2551,15 @@ def build_v4_candidate(
2527
2551
  the build and the replay are one function of the plan and the acquired bytes. That is why
2528
2552
  nothing here runs the statements first and hands the seal a result -- a result computed twice by
2529
2553
  two callers is a result two callers can disagree about.
2554
+
2555
+ ``halt_before_transform`` IS ASKED EXACTLY ONCE, AFTER EVERY SOURCE IS ACQUIRED AND BEFORE ANY
2556
+ STATEMENT IS RUN, and answering true returns ``None`` instead of a candidate. It is handed the
2557
+ digest of the bytes each source was read as, keyed by the source's own name -- the member the
2558
+ sealed receipt states for that source, so a caller comparing against a predecessor compares
2559
+ the same member on both sides. This is the only place that decision can be taken: the
2560
+ acquisition is what produces the digests, and the transform is what a run with nothing new to
2561
+ seal must not spend. Nothing is narrated as a transform on that path, and no cursor moves off
2562
+ ``acquire``, because neither happened.
2530
2563
  """
2531
2564
 
2532
2565
  relations = acquire_v4_relations(
@@ -2538,6 +2571,13 @@ def build_v4_candidate(
2538
2571
  input_root=input_root,
2539
2572
  narrate=narrate,
2540
2573
  )
2574
+ if halt_before_transform is not None and halt_before_transform(
2575
+ # `content_sha256` is the coverage record's own `snapshot_sha256`; `relation_input`
2576
+ # refuses a relation whose two spellings disagree, so reading it off the relation here
2577
+ # and off the receipt there is one member read twice rather than two members.
2578
+ {relation.relation_name: relation.content_sha256 for relation in relations}
2579
+ ):
2580
+ return None
2541
2581
  if cursor is not None:
2542
2582
  cursor.set("transform")
2543
2583
  # ⚠ THE STEPS ARE NARRATED FROM THE DOCUMENT, NOT FROM THE ENGINE, AND THAT IS WHY THEY ARE
@@ -2820,6 +2860,21 @@ def _as_run_failure(error: BaseException, *, stage: str) -> RunExecutionError:
2820
2860
  )
2821
2861
 
2822
2862
 
2863
+ def _reads_signed_storage(job: RunExecution) -> bool:
2864
+ """Whether acquisition redeems a Studio-signed download: a snapshot input or a sealed recording.
2865
+
2866
+ Both are read through the same unauthenticated transfer client, and the driver opens that
2867
+ client for itself when the caller supplied none. The predicate is the union of the two source
2868
+ shapes that need it, because a stream-only recipe used to reach the recording adapter with no
2869
+ client at all and was refused before its first progress report.
2870
+ """
2871
+
2872
+ return bool(job.recordings) or any(
2873
+ source.connector.adapter_id.partition("@")[0] == "snapshot.artifact"
2874
+ for source in job.recipe.sources
2875
+ )
2876
+
2877
+
2823
2878
  def run_v4(
2824
2879
  job: RunExecution,
2825
2880
  token: str,
@@ -2924,10 +2979,7 @@ def run_v4(
2924
2979
  snapshot_root = root / "snapshots"
2925
2980
  snapshot_root.mkdir(mode=0o700)
2926
2981
  active_sandbox = sandbox if sandbox is not None else _default_sandbox(root)
2927
- if transfer is None and any(
2928
- source.connector.adapter_id.partition("@")[0] == "snapshot.artifact"
2929
- for source in job.recipe.sources
2930
- ):
2982
+ if transfer is None and _reads_signed_storage(job):
2931
2983
  transfer = stack.enter_context(_closing(_new_transfer_client()))
2932
2984
  registry, contexts = _composed_registry(
2933
2985
  job,
@@ -2972,13 +3024,42 @@ def run_v4(
2972
3024
  ),
2973
3025
  stage="transform",
2974
3026
  )
3027
+ # WHAT EACH SOURCE CARRIED THIS RUN, decided at the one moment every source has been
3028
+ # acquired and nothing has been transformed. The report is this run's own; the halt is
3029
+ # the question of whether the table has anything to seal.
3030
+ changes: tuple[SourceChange, ...] = ()
3031
+
3032
+ def _halt(acquired: Mapping[str, str]) -> bool:
3033
+ nonlocal changes
3034
+ changes = source_change_report(
3035
+ mode=job.mode,
3036
+ acquired=acquired,
3037
+ predecessor_source_states=source_states,
3038
+ )
3039
+ # THE REPORT IS BUILT FOR EVERY MODE AND THE EARLY STOP IS NOT. A backfill has a
3040
+ # predecessor to compare against, so its per-source answer is honest and worth
3041
+ # reporting -- but it was dispatched to fill a named window, and matching bytes are
3042
+ # no reason to decline that. The one mode that stops is the one that exists to ask.
3043
+ if job.mode not in UNCHANGED_OUTCOME_MODES:
3044
+ return False
3045
+ # ⚠ UNCHANGED BYTES ARE NOT AN UNCHANGED TABLE WHEN THE DOCUMENT ITSELF MOVED. The
3046
+ # predecessor is resolved as the table's latest succeeded run, not as a run of this
3047
+ # document, so a refresh dispatched against a REVISED recipe -- a dropped source, a
3048
+ # rewritten transform, a changed check -- can read byte-identical sources and still
3049
+ # owe a new version. Only the sources are compared above, so the revision would be
3050
+ # swallowed silently and never reach the table. The digests the two runs sealed are
3051
+ # what say whether the document is the same one.
3052
+ if predecessor is None or predecessor.recipe_digest != job.recipe_digest:
3053
+ return False
3054
+ return every_source_unchanged(changes)
3055
+
2975
3056
  with progress_events.progress_sink(narration), progress_events.bridge_build_events():
2976
3057
  # SERIAL by decision, and the decision is not re-taken here. The rationale
2977
3058
  # ``hosted_worker`` records for a serial acquisition loop changes under in-process
2978
3059
  # acquisition -- there is no job dispatch to serialize against any more -- but
2979
3060
  # re-deciding it is a separate reviewed change, not a side effect of composing the
2980
3061
  # primitive.
2981
- build_v4_candidate(
3062
+ candidate = build_v4_candidate(
2982
3063
  job,
2983
3064
  engine,
2984
3065
  approval,
@@ -2990,7 +3071,38 @@ def run_v4(
2990
3071
  output_dir=output_dir,
2991
3072
  cursor=stage,
2992
3073
  narrate=narrate,
3074
+ halt_before_transform=_halt,
3075
+ )
3076
+
3077
+ if candidate is None:
3078
+ # NOTHING THIS TABLE HAS NOT ALREADY SEALED, so nothing after acquisition ran: no
3079
+ # transform, no check pass, no artifact, no upload, and no version. The run
3080
+ # SUCCEEDED -- it did what a refresh is for, which is to find out -- and the
3081
+ # per-source report below is what the schedule that dispatched it reasons from.
3082
+ #
3083
+ # Neither the checks nor the coverage are reported. The checks are evaluated over a
3084
+ # sealed candidate and this run sealed none, so naming them with an invented
3085
+ # outcome would put a result on the record that no pass produced; coverage is what
3086
+ # a run that DELIVERED something reports, and the contract refuses it here.
3087
+ reported.succeeded(
3088
+ succeeded_body(
3089
+ job,
3090
+ receipt_digest=None,
3091
+ check_results=[],
3092
+ coverage=[],
3093
+ outcome="unchanged",
3094
+ sources=changes,
3095
+ )
2993
3096
  )
3097
+ return {
3098
+ "status": "succeeded",
3099
+ "run_id": str(job.run_id),
3100
+ "attempt": job.attempt,
3101
+ "mode": job.mode,
3102
+ "outcome": "unchanged",
3103
+ "sources": [item.to_wire() for item in changes],
3104
+ "check_results": [],
3105
+ }
2994
3106
 
2995
3107
  stage.set("check")
2996
3108
  # The checks were PARSED before acquisition; this is the half that needs rows.
@@ -3065,6 +3177,8 @@ def run_v4(
3065
3177
  receipt_digest=receipt.content_digest,
3066
3178
  check_results=[item.to_wire() for item in results],
3067
3179
  coverage=coverage,
3180
+ outcome="version",
3181
+ sources=changes,
3068
3182
  )
3069
3183
  )
3070
3184
  return {
@@ -3072,6 +3186,8 @@ def run_v4(
3072
3186
  "run_id": str(job.run_id),
3073
3187
  "attempt": job.attempt,
3074
3188
  "mode": job.mode,
3189
+ "outcome": "version",
3190
+ "sources": [item.to_wire() for item in changes],
3075
3191
  "candidate_digest": "sha256:" + verified.candidate_digest,
3076
3192
  "receipt_digest": receipt.content_digest,
3077
3193
  "artifact_ids": [str(item.artifact_id) for item in payloads],
@@ -3100,8 +3216,8 @@ def run_v4(
3100
3216
  traceback.print_exc(file=sys.stderr)
3101
3217
  try:
3102
3218
  reported.failed(failed_body_from_error(job, refusal))
3103
- except Exception:
3104
- pass
3219
+ except Exception as unreported:
3220
+ _note_unreported_failure(unreported)
3105
3221
  raise refusal from error
3106
3222
 
3107
3223
 
@@ -3296,6 +3412,28 @@ def _fatal(error: BaseException) -> NoReturn:
3296
3412
  raise SystemExit(1)
3297
3413
 
3298
3414
 
3415
+ def _note_unreported_failure(error: BaseException) -> None:
3416
+ """One stderr line saying the ``run:failed`` report itself was refused.
3417
+
3418
+ The report is best effort and its refusal must not become a second death, but a refusal that
3419
+ was swallowed left a run record still saying ``running`` beside a container log that carried
3420
+ the cause, with nothing connecting the two. This line is that connection: it precedes the
3421
+ operator line :func:`_fatal` writes and names the refusal in the same three-member shape.
3422
+ """
3423
+
3424
+ code, detail, _stage = _failure_triple(error)
3425
+ line = json.dumps(
3426
+ {"status": "unreported", "code": code, "detail": detail},
3427
+ sort_keys=True,
3428
+ separators=(",", ":"),
3429
+ )
3430
+ # A stderr that cannot be written must not displace the refusal the caller is about to raise.
3431
+ try:
3432
+ sys.stderr.write(line + "\n")
3433
+ except OSError:
3434
+ pass
3435
+
3436
+
3299
3437
  def _batch_studio_origin(environ: Mapping[str, str]) -> str:
3300
3438
  """The Studio origin the batch shape reports through, REQUIRED and HTTPS.
3301
3439
 
@@ -3347,9 +3485,10 @@ def _report_then_fatal(
3347
3485
  comes off the RAW mapping, because the reason the parse failed may be one of the three envelope
3348
3486
  members.
3349
3487
 
3350
- ⚠ AND THE REPORT IS BEST EFFORT, SUPPRESSED, exactly as ``run_v4``'s own is. A report that
3351
- fails must not become a second death: the caller is already dying, and the operator line
3352
- :func:`_fatal` writes is what an operator reads either way.
3488
+ ⚠ AND THE REPORT IS BEST EFFORT, exactly as ``run_v4``'s own is. A report that fails must
3489
+ not become a second death: the caller is already dying, and the operator line :func:`_fatal`
3490
+ writes is what an operator reads either way. A refused report is noted on stderr first, so
3491
+ the two lines together say both what killed the run and that the record never learned it.
3353
3492
  """
3354
3493
 
3355
3494
  if callbacks is not None:
@@ -3363,8 +3502,10 @@ def _report_then_fatal(
3363
3502
  failed_stage=stage,
3364
3503
  )
3365
3504
  if body is not None:
3366
- with contextlib.suppress(Exception):
3505
+ try:
3367
3506
  callbacks.failed(body)
3507
+ except Exception as unreported:
3508
+ _note_unreported_failure(unreported)
3368
3509
  _fatal(error)
3369
3510
 
3370
3511