mostlyright-data 0.17.4__tar.gz → 0.17.6__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 (557) hide show
  1. {mostlyright_data-0.17.4 → mostlyright_data-0.17.6}/PKG-INFO +1 -1
  2. {mostlyright_data-0.17.4 → mostlyright_data-0.17.6}/pyproject.toml +1 -1
  3. {mostlyright_data-0.17.4 → mostlyright_data-0.17.6}/skills/mr-data-build/SKILL.md +92 -16
  4. {mostlyright_data-0.17.4 → mostlyright_data-0.17.6}/src/mostlyright/data_harness/cli.py +21 -0
  5. {mostlyright_data-0.17.4 → mostlyright_data-0.17.6}/src/mostlyright/data_harness/hosted_crawler_fetch.py +35 -12
  6. {mostlyright_data-0.17.4 → mostlyright_data-0.17.6}/src/mostlyright/data_harness/hosted_deploy.py +2 -1
  7. {mostlyright_data-0.17.4 → mostlyright_data-0.17.6}/src/mostlyright/data_harness/hosted_run_worker.py +523 -40
  8. {mostlyright_data-0.17.4 → mostlyright_data-0.17.6}/src/mostlyright/data_harness/inprocess_acquisition.py +897 -14
  9. {mostlyright_data-0.17.4 → mostlyright_data-0.17.6}/src/mostlyright/data_harness/key_seam.py +2 -1
  10. mostlyright_data-0.17.6/src/mostlyright/data_harness/page_coverage.py +107 -0
  11. {mostlyright_data-0.17.4 → mostlyright_data-0.17.6}/src/mostlyright/data_harness/readers/html_web_extract.py +203 -72
  12. {mostlyright_data-0.17.4 → mostlyright_data-0.17.6}/src/mostlyright/data_harness/readers/registry.py +12 -0
  13. mostlyright_data-0.17.6/src/mostlyright/data_harness/readers/samples/html.web_extract/1.1.0/article_text_order/article.html +3 -0
  14. mostlyright_data-0.17.6/src/mostlyright/data_harness/readers/samples/html.web_extract/1.1.0/article_text_order/expected.json +28 -0
  15. {mostlyright_data-0.17.4 → mostlyright_data-0.17.6}/src/mostlyright/data_harness/run_execution_v4.py +78 -1
  16. mostlyright_data-0.17.6/src/mostlyright/data_harness/sources/page_collections.py +2294 -0
  17. {mostlyright_data-0.17.4 → mostlyright_data-0.17.6}/src/mostlyright/data_harness/studio_boundary.py +1 -1
  18. mostlyright_data-0.17.6/src/mostlyright/data_harness/thin/collection_plan.py +211 -0
  19. {mostlyright_data-0.17.4 → mostlyright_data-0.17.6}/src/mostlyright/data_harness/thin/transport.py +4 -2
  20. mostlyright_data-0.17.6/src/mostlyright/data_harness/thin/user_agent.py +74 -0
  21. {mostlyright_data-0.17.4 → mostlyright_data-0.17.6}/src/mostlyright/data_harness/thin/v4_datasets.py +14 -3
  22. {mostlyright_data-0.17.4 → mostlyright_data-0.17.6}/src/mostlyright/data_harness/thin/v4_runs.py +29 -0
  23. {mostlyright_data-0.17.4 → mostlyright_data-0.17.6}/src/mostlyright/data_harness/ux/cloud_auth.py +3 -1
  24. {mostlyright_data-0.17.4 → mostlyright_data-0.17.6}/src/mostlyright/data_harness/ux/remediation.py +1 -1
  25. {mostlyright_data-0.17.4 → mostlyright_data-0.17.6}/src/mostlyright/data_harness/ux/render.py +6 -0
  26. {mostlyright_data-0.17.4 → mostlyright_data-0.17.6}/src/mostlyright/data_harness/v4_acquisition.py +142 -1
  27. {mostlyright_data-0.17.4 → mostlyright_data-0.17.6}/src/mostlyright/data_harness/v4_recipe.py +184 -3
  28. {mostlyright_data-0.17.4 → mostlyright_data-0.17.6}/src/mostlyright/data_harness/v4_required_controls.py +13 -0
  29. {mostlyright_data-0.17.4 → mostlyright_data-0.17.6}/.gitignore +0 -0
  30. {mostlyright_data-0.17.4 → mostlyright_data-0.17.6}/README.md +0 -0
  31. {mostlyright_data-0.17.4 → mostlyright_data-0.17.6}/scripts/hatch_build.py +0 -0
  32. {mostlyright_data-0.17.4 → mostlyright_data-0.17.6}/skills/mr-data-build/agents/openai.yaml +0 -0
  33. {mostlyright_data-0.17.4 → mostlyright_data-0.17.6}/skills/mr-data-build/scripts/write_research_notebook.py +0 -0
  34. {mostlyright_data-0.17.4 → mostlyright_data-0.17.6}/skills/mr-data-build/scripts/write_visual_run.py +0 -0
  35. {mostlyright_data-0.17.4 → mostlyright_data-0.17.6}/src/mostlyright/_vendor/__init__.py +0 -0
  36. {mostlyright_data-0.17.4 → mostlyright_data-0.17.6}/src/mostlyright/_vendor/rapidocr/LICENSE +0 -0
  37. {mostlyright_data-0.17.4 → mostlyright_data-0.17.6}/src/mostlyright/_vendor/rapidocr/PROVENANCE.json +0 -0
  38. {mostlyright_data-0.17.4 → mostlyright_data-0.17.6}/src/mostlyright/_vendor/rapidocr/__init__.py +0 -0
  39. {mostlyright_data-0.17.4 → mostlyright_data-0.17.6}/src/mostlyright/_vendor/rapidocr/__init__.pyi +0 -0
  40. {mostlyright_data-0.17.4 → mostlyright_data-0.17.6}/src/mostlyright/_vendor/rapidocr/_version.py +0 -0
  41. {mostlyright_data-0.17.4 → mostlyright_data-0.17.6}/src/mostlyright/_vendor/rapidocr/cal_rec_boxes/__init__.py +0 -0
  42. {mostlyright_data-0.17.4 → mostlyright_data-0.17.6}/src/mostlyright/_vendor/rapidocr/cal_rec_boxes/main.py +0 -0
  43. {mostlyright_data-0.17.4 → mostlyright_data-0.17.6}/src/mostlyright/_vendor/rapidocr/ch_ppocr_cls/__init__.py +0 -0
  44. {mostlyright_data-0.17.4 → mostlyright_data-0.17.6}/src/mostlyright/_vendor/rapidocr/ch_ppocr_cls/main.py +0 -0
  45. {mostlyright_data-0.17.4 → mostlyright_data-0.17.6}/src/mostlyright/_vendor/rapidocr/ch_ppocr_cls/utils.py +0 -0
  46. {mostlyright_data-0.17.4 → mostlyright_data-0.17.6}/src/mostlyright/_vendor/rapidocr/ch_ppocr_det/__init__.py +0 -0
  47. {mostlyright_data-0.17.4 → mostlyright_data-0.17.6}/src/mostlyright/_vendor/rapidocr/ch_ppocr_det/main.py +0 -0
  48. {mostlyright_data-0.17.4 → mostlyright_data-0.17.6}/src/mostlyright/_vendor/rapidocr/ch_ppocr_det/utils.py +0 -0
  49. {mostlyright_data-0.17.4 → mostlyright_data-0.17.6}/src/mostlyright/_vendor/rapidocr/ch_ppocr_rec/__init__.py +0 -0
  50. {mostlyright_data-0.17.4 → mostlyright_data-0.17.6}/src/mostlyright/_vendor/rapidocr/ch_ppocr_rec/main.py +0 -0
  51. {mostlyright_data-0.17.4 → mostlyright_data-0.17.6}/src/mostlyright/_vendor/rapidocr/ch_ppocr_rec/typings.py +0 -0
  52. {mostlyright_data-0.17.4 → mostlyright_data-0.17.6}/src/mostlyright/_vendor/rapidocr/ch_ppocr_rec/utils.py +0 -0
  53. {mostlyright_data-0.17.4 → mostlyright_data-0.17.6}/src/mostlyright/_vendor/rapidocr/config.yaml +0 -0
  54. {mostlyright_data-0.17.4 → mostlyright_data-0.17.6}/src/mostlyright/_vendor/rapidocr/inference_engine/__init__.py +0 -0
  55. {mostlyright_data-0.17.4 → mostlyright_data-0.17.6}/src/mostlyright/_vendor/rapidocr/inference_engine/base.py +0 -0
  56. {mostlyright_data-0.17.4 → mostlyright_data-0.17.6}/src/mostlyright/_vendor/rapidocr/inference_engine/onnxruntime/__init__.py +0 -0
  57. {mostlyright_data-0.17.4 → mostlyright_data-0.17.6}/src/mostlyright/_vendor/rapidocr/inference_engine/onnxruntime/main.py +0 -0
  58. {mostlyright_data-0.17.4 → mostlyright_data-0.17.6}/src/mostlyright/_vendor/rapidocr/inference_engine/onnxruntime/provider_config.py +0 -0
  59. {mostlyright_data-0.17.4 → mostlyright_data-0.17.6}/src/mostlyright/_vendor/rapidocr/main.py +0 -0
  60. {mostlyright_data-0.17.4 → mostlyright_data-0.17.6}/src/mostlyright/_vendor/rapidocr/models/PP-OCRv6_det_small.onnx +0 -0
  61. {mostlyright_data-0.17.4 → mostlyright_data-0.17.6}/src/mostlyright/_vendor/rapidocr/models/PP-OCRv6_rec_small.onnx +0 -0
  62. {mostlyright_data-0.17.4 → mostlyright_data-0.17.6}/src/mostlyright/_vendor/rapidocr/models/ch_ppocr_mobile_v2.0_cls_mobile.onnx +0 -0
  63. {mostlyright_data-0.17.4 → mostlyright_data-0.17.6}/src/mostlyright/_vendor/rapidocr/py.typed +0 -0
  64. {mostlyright_data-0.17.4 → mostlyright_data-0.17.6}/src/mostlyright/_vendor/rapidocr/utils/__init__.py +0 -0
  65. {mostlyright_data-0.17.4 → mostlyright_data-0.17.6}/src/mostlyright/_vendor/rapidocr/utils/load_image.py +0 -0
  66. {mostlyright_data-0.17.4 → mostlyright_data-0.17.6}/src/mostlyright/_vendor/rapidocr/utils/log.py +0 -0
  67. {mostlyright_data-0.17.4 → mostlyright_data-0.17.6}/src/mostlyright/_vendor/rapidocr/utils/model_resolver.py +0 -0
  68. {mostlyright_data-0.17.4 → mostlyright_data-0.17.6}/src/mostlyright/_vendor/rapidocr/utils/output.py +0 -0
  69. {mostlyright_data-0.17.4 → mostlyright_data-0.17.6}/src/mostlyright/_vendor/rapidocr/utils/parse_parameters.py +0 -0
  70. {mostlyright_data-0.17.4 → mostlyright_data-0.17.6}/src/mostlyright/_vendor/rapidocr/utils/process_img.py +0 -0
  71. {mostlyright_data-0.17.4 → mostlyright_data-0.17.6}/src/mostlyright/_vendor/rapidocr/utils/typings.py +0 -0
  72. {mostlyright_data-0.17.4 → mostlyright_data-0.17.6}/src/mostlyright/_vendor/rapidocr/utils/utils.py +0 -0
  73. {mostlyright_data-0.17.4 → mostlyright_data-0.17.6}/src/mostlyright/data_harness/__init__.py +0 -0
  74. {mostlyright_data-0.17.4 → mostlyright_data-0.17.6}/src/mostlyright/data_harness/acquisition/__init__.py +0 -0
  75. {mostlyright_data-0.17.4 → mostlyright_data-0.17.6}/src/mostlyright/data_harness/acquisition/derived_credentials.py +0 -0
  76. {mostlyright_data-0.17.4 → mostlyright_data-0.17.6}/src/mostlyright/data_harness/acquisition/http.py +0 -0
  77. {mostlyright_data-0.17.4 → mostlyright_data-0.17.6}/src/mostlyright/data_harness/acquisition/parsing.py +0 -0
  78. {mostlyright_data-0.17.4 → mostlyright_data-0.17.6}/src/mostlyright/data_harness/acquisition/ranges.py +0 -0
  79. {mostlyright_data-0.17.4 → mostlyright_data-0.17.6}/src/mostlyright/data_harness/acquisition/result_download.py +0 -0
  80. {mostlyright_data-0.17.4 → mostlyright_data-0.17.6}/src/mostlyright/data_harness/acquisition/retention_admission.py +0 -0
  81. {mostlyright_data-0.17.4 → mostlyright_data-0.17.6}/src/mostlyright/data_harness/acquisition/sandbox.py +0 -0
  82. {mostlyright_data-0.17.4 → mostlyright_data-0.17.6}/src/mostlyright/data_harness/acquisition/sandbox_bootstrap.py +0 -0
  83. {mostlyright_data-0.17.4 → mostlyright_data-0.17.6}/src/mostlyright/data_harness/acquisition/url_policy.py +0 -0
  84. {mostlyright_data-0.17.4 → mostlyright_data-0.17.6}/src/mostlyright/data_harness/agent_runtime.py +0 -0
  85. {mostlyright_data-0.17.4 → mostlyright_data-0.17.6}/src/mostlyright/data_harness/assets/logo-ink.svg +0 -0
  86. {mostlyright_data-0.17.4 → mostlyright_data-0.17.6}/src/mostlyright/data_harness/backends/__init__.py +0 -0
  87. {mostlyright_data-0.17.4 → mostlyright_data-0.17.6}/src/mostlyright/data_harness/backends/pandas_backend.py +0 -0
  88. {mostlyright_data-0.17.4 → mostlyright_data-0.17.6}/src/mostlyright/data_harness/backends/polars_backend.py +0 -0
  89. {mostlyright_data-0.17.4 → mostlyright_data-0.17.6}/src/mostlyright/data_harness/backends/protocol.py +0 -0
  90. {mostlyright_data-0.17.4 → mostlyright_data-0.17.6}/src/mostlyright/data_harness/backends/reference.py +0 -0
  91. {mostlyright_data-0.17.4 → mostlyright_data-0.17.6}/src/mostlyright/data_harness/backends/registry.py +0 -0
  92. {mostlyright_data-0.17.4 → mostlyright_data-0.17.6}/src/mostlyright/data_harness/backends/restrictions.py +0 -0
  93. {mostlyright_data-0.17.4 → mostlyright_data-0.17.6}/src/mostlyright/data_harness/bounded_query.py +0 -0
  94. {mostlyright_data-0.17.4 → mostlyright_data-0.17.6}/src/mostlyright/data_harness/bounded_scratch_sink.py +0 -0
  95. {mostlyright_data-0.17.4 → mostlyright_data-0.17.6}/src/mostlyright/data_harness/canonical.py +0 -0
  96. {mostlyright_data-0.17.4 → mostlyright_data-0.17.6}/src/mostlyright/data_harness/catalog_job.py +0 -0
  97. {mostlyright_data-0.17.4 → mostlyright_data-0.17.6}/src/mostlyright/data_harness/compact_worker.py +0 -0
  98. {mostlyright_data-0.17.4 → mostlyright_data-0.17.6}/src/mostlyright/data_harness/contracts.py +0 -0
  99. {mostlyright_data-0.17.4 → mostlyright_data-0.17.6}/src/mostlyright/data_harness/coordinator.py +0 -0
  100. {mostlyright_data-0.17.4 → mostlyright_data-0.17.6}/src/mostlyright/data_harness/crosswalks.py +0 -0
  101. {mostlyright_data-0.17.4 → mostlyright_data-0.17.6}/src/mostlyright/data_harness/declared_checks.py +0 -0
  102. {mostlyright_data-0.17.4 → mostlyright_data-0.17.6}/src/mostlyright/data_harness/delta.py +0 -0
  103. {mostlyright_data-0.17.4 → mostlyright_data-0.17.6}/src/mostlyright/data_harness/delta_checks.py +0 -0
  104. {mostlyright_data-0.17.4 → mostlyright_data-0.17.6}/src/mostlyright/data_harness/delta_classifier.py +0 -0
  105. {mostlyright_data-0.17.4 → mostlyright_data-0.17.6}/src/mostlyright/data_harness/delta_persist.py +0 -0
  106. {mostlyright_data-0.17.4 → mostlyright_data-0.17.6}/src/mostlyright/data_harness/delta_recompute.py +0 -0
  107. {mostlyright_data-0.17.4 → mostlyright_data-0.17.6}/src/mostlyright/data_harness/delta_rows.py +0 -0
  108. {mostlyright_data-0.17.4 → mostlyright_data-0.17.6}/src/mostlyright/data_harness/deploy.py +0 -0
  109. {mostlyright_data-0.17.4 → mostlyright_data-0.17.6}/src/mostlyright/data_harness/deploy_target.py +0 -0
  110. {mostlyright_data-0.17.4 → mostlyright_data-0.17.6}/src/mostlyright/data_harness/deployment_evidence.py +0 -0
  111. {mostlyright_data-0.17.4 → mostlyright_data-0.17.6}/src/mostlyright/data_harness/documents/__init__.py +0 -0
  112. {mostlyright_data-0.17.4 → mostlyright_data-0.17.6}/src/mostlyright/data_harness/documents/_worker_capability.py +0 -0
  113. {mostlyright_data-0.17.4 → mostlyright_data-0.17.6}/src/mostlyright/data_harness/documents/capture.py +0 -0
  114. {mostlyright_data-0.17.4 → mostlyright_data-0.17.6}/src/mostlyright/data_harness/documents/contracts.py +0 -0
  115. {mostlyright_data-0.17.4 → mostlyright_data-0.17.6}/src/mostlyright/data_harness/documents/lane.py +0 -0
  116. {mostlyright_data-0.17.4 → mostlyright_data-0.17.6}/src/mostlyright/data_harness/documents/ocr.py +0 -0
  117. {mostlyright_data-0.17.4 → mostlyright_data-0.17.6}/src/mostlyright/data_harness/documents/pdf.py +0 -0
  118. {mostlyright_data-0.17.4 → mostlyright_data-0.17.6}/src/mostlyright/data_harness/documents/registry.py +0 -0
  119. {mostlyright_data-0.17.4 → mostlyright_data-0.17.6}/src/mostlyright/data_harness/documents/sandbox.py +0 -0
  120. {mostlyright_data-0.17.4 → mostlyright_data-0.17.6}/src/mostlyright/data_harness/documents/selections.py +0 -0
  121. {mostlyright_data-0.17.4 → mostlyright_data-0.17.6}/src/mostlyright/data_harness/documents/tables.py +0 -0
  122. {mostlyright_data-0.17.4 → mostlyright_data-0.17.6}/src/mostlyright/data_harness/documents/vendor_rapidocr.py +0 -0
  123. {mostlyright_data-0.17.4 → mostlyright_data-0.17.6}/src/mostlyright/data_harness/events.py +0 -0
  124. {mostlyright_data-0.17.4 → mostlyright_data-0.17.6}/src/mostlyright/data_harness/fast_delimited.py +0 -0
  125. {mostlyright_data-0.17.4 → mostlyright_data-0.17.6}/src/mostlyright/data_harness/fetch_egress_smoke.py +0 -0
  126. {mostlyright_data-0.17.4 → mostlyright_data-0.17.6}/src/mostlyright/data_harness/formats.py +0 -0
  127. {mostlyright_data-0.17.4 → mostlyright_data-0.17.6}/src/mostlyright/data_harness/governors.py +0 -0
  128. {mostlyright_data-0.17.4 → mostlyright_data-0.17.6}/src/mostlyright/data_harness/hosted_bootstrap.py +0 -0
  129. {mostlyright_data-0.17.4 → mostlyright_data-0.17.6}/src/mostlyright/data_harness/hosted_crawler.py +0 -0
  130. {mostlyright_data-0.17.4 → mostlyright_data-0.17.6}/src/mostlyright/data_harness/hosted_crawler_container_smoke.py +0 -0
  131. {mostlyright_data-0.17.4 → mostlyright_data-0.17.6}/src/mostlyright/data_harness/hosted_crawler_job.py +0 -0
  132. {mostlyright_data-0.17.4 → mostlyright_data-0.17.6}/src/mostlyright/data_harness/hosted_crawler_protocol.py +0 -0
  133. {mostlyright_data-0.17.4 → mostlyright_data-0.17.6}/src/mostlyright/data_harness/hosted_ingestion_contract.py +0 -0
  134. {mostlyright_data-0.17.4 → mostlyright_data-0.17.6}/src/mostlyright/data_harness/hosted_ingestion_job.py +0 -0
  135. {mostlyright_data-0.17.4 → mostlyright_data-0.17.6}/src/mostlyright/data_harness/hosted_ingestion_job_smoke.py +0 -0
  136. {mostlyright_data-0.17.4 → mostlyright_data-0.17.6}/src/mostlyright/data_harness/hosted_ingestion_worker.py +0 -0
  137. {mostlyright_data-0.17.4 → mostlyright_data-0.17.6}/src/mostlyright/data_harness/hosted_rlimit_as_container_smoke.py +0 -0
  138. {mostlyright_data-0.17.4 → mostlyright_data-0.17.6}/src/mostlyright/data_harness/hosted_session_container_smoke.py +0 -0
  139. {mostlyright_data-0.17.4 → mostlyright_data-0.17.6}/src/mostlyright/data_harness/hosted_session_worker.py +0 -0
  140. {mostlyright_data-0.17.4 → mostlyright_data-0.17.6}/src/mostlyright/data_harness/hosted_session_worker_job_smoke.py +0 -0
  141. {mostlyright_data-0.17.4 → mostlyright_data-0.17.6}/src/mostlyright/data_harness/hosted_stream_recorder_container_smoke.py +0 -0
  142. {mostlyright_data-0.17.4 → mostlyright_data-0.17.6}/src/mostlyright/data_harness/hosted_stream_recorder_job.py +0 -0
  143. {mostlyright_data-0.17.4 → mostlyright_data-0.17.6}/src/mostlyright/data_harness/hosted_stream_subscription_container_smoke.py +0 -0
  144. {mostlyright_data-0.17.4 → mostlyright_data-0.17.6}/src/mostlyright/data_harness/hosted_stream_subscription_worker.py +0 -0
  145. {mostlyright_data-0.17.4 → mostlyright_data-0.17.6}/src/mostlyright/data_harness/hosted_worker.py +0 -0
  146. {mostlyright_data-0.17.4 → mostlyright_data-0.17.6}/src/mostlyright/data_harness/incremental_slice_executor.py +0 -0
  147. {mostlyright_data-0.17.4 → mostlyright_data-0.17.6}/src/mostlyright/data_harness/incremental_worker.py +0 -0
  148. {mostlyright_data-0.17.4 → mostlyright_data-0.17.6}/src/mostlyright/data_harness/ingestion/__init__.py +0 -0
  149. {mostlyright_data-0.17.4 → mostlyright_data-0.17.6}/src/mostlyright/data_harness/ingestion/contracts.py +0 -0
  150. {mostlyright_data-0.17.4 → mostlyright_data-0.17.6}/src/mostlyright/data_harness/ingestion/faults.py +0 -0
  151. {mostlyright_data-0.17.4 → mostlyright_data-0.17.6}/src/mostlyright/data_harness/ingestion/gcs_store.py +0 -0
  152. {mostlyright_data-0.17.4 → mostlyright_data-0.17.6}/src/mostlyright/data_harness/ingestion/spool.py +0 -0
  153. {mostlyright_data-0.17.4 → mostlyright_data-0.17.6}/src/mostlyright/data_harness/ingestion/store.py +0 -0
  154. {mostlyright_data-0.17.4 → mostlyright_data-0.17.6}/src/mostlyright/data_harness/legacy_table_recovery.py +0 -0
  155. {mostlyright_data-0.17.4 → mostlyright_data-0.17.6}/src/mostlyright/data_harness/legacy_table_recovery_contract.py +0 -0
  156. {mostlyright_data-0.17.4 → mostlyright_data-0.17.6}/src/mostlyright/data_harness/linux_process_boundary.py +0 -0
  157. {mostlyright_data-0.17.4 → mostlyright_data-0.17.6}/src/mostlyright/data_harness/local_contracts.py +0 -0
  158. {mostlyright_data-0.17.4 → mostlyright_data-0.17.6}/src/mostlyright/data_harness/nbrender/CONTRACT.md +0 -0
  159. {mostlyright_data-0.17.4 → mostlyright_data-0.17.6}/src/mostlyright/data_harness/nbrender/__init__.py +0 -0
  160. {mostlyright_data-0.17.4 → mostlyright_data-0.17.6}/src/mostlyright/data_harness/nbrender/chrome.py +0 -0
  161. {mostlyright_data-0.17.4 → mostlyright_data-0.17.6}/src/mostlyright/data_harness/nbrender/code_body.py +0 -0
  162. {mostlyright_data-0.17.4 → mostlyright_data-0.17.6}/src/mostlyright/data_harness/nbrender/document.py +0 -0
  163. {mostlyright_data-0.17.4 → mostlyright_data-0.17.6}/src/mostlyright/data_harness/nbrender/frame.py +0 -0
  164. {mostlyright_data-0.17.4 → mostlyright_data-0.17.6}/src/mostlyright/data_harness/nbrender/interactive.py +0 -0
  165. {mostlyright_data-0.17.4 → mostlyright_data-0.17.6}/src/mostlyright/data_harness/nbrender/markdown_body.py +0 -0
  166. {mostlyright_data-0.17.4 → mostlyright_data-0.17.6}/src/mostlyright/data_harness/nbrender/mr_components.py +0 -0
  167. {mostlyright_data-0.17.4 → mostlyright_data-0.17.6}/src/mostlyright/data_harness/nbrender/outputs_data.py +0 -0
  168. {mostlyright_data-0.17.4 → mostlyright_data-0.17.6}/src/mostlyright/data_harness/nbrender/outputs_rich.py +0 -0
  169. {mostlyright_data-0.17.4 → mostlyright_data-0.17.6}/src/mostlyright/data_harness/nbrender/outputs_source.py +0 -0
  170. {mostlyright_data-0.17.4 → mostlyright_data-0.17.6}/src/mostlyright/data_harness/nbrender/outputs_stage.py +0 -0
  171. {mostlyright_data-0.17.4 → mostlyright_data-0.17.6}/src/mostlyright/data_harness/nbrender/outputs_text.py +0 -0
  172. {mostlyright_data-0.17.4 → mostlyright_data-0.17.6}/src/mostlyright/data_harness/nbrender/parse.py +0 -0
  173. {mostlyright_data-0.17.4 → mostlyright_data-0.17.6}/src/mostlyright/data_harness/nbrender/status.py +0 -0
  174. {mostlyright_data-0.17.4 → mostlyright_data-0.17.6}/src/mostlyright/data_harness/nbrender/tokens.py +0 -0
  175. {mostlyright_data-0.17.4 → mostlyright_data-0.17.6}/src/mostlyright/data_harness/notebook.py +0 -0
  176. {mostlyright_data-0.17.4 → mostlyright_data-0.17.6}/src/mostlyright/data_harness/offline.py +0 -0
  177. {mostlyright_data-0.17.4 → mostlyright_data-0.17.6}/src/mostlyright/data_harness/operation_registry.py +0 -0
  178. {mostlyright_data-0.17.4 → mostlyright_data-0.17.6}/src/mostlyright/data_harness/operator_setup.py +0 -0
  179. {mostlyright_data-0.17.4 → mostlyright_data-0.17.6}/src/mostlyright/data_harness/part_check_evidence.py +0 -0
  180. {mostlyright_data-0.17.4 → mostlyright_data-0.17.6}/src/mostlyright/data_harness/pipeline.py +0 -0
  181. {mostlyright_data-0.17.4 → mostlyright_data-0.17.6}/src/mostlyright/data_harness/plan_graph.py +0 -0
  182. {mostlyright_data-0.17.4 → mostlyright_data-0.17.6}/src/mostlyright/data_harness/preparation/__init__.py +0 -0
  183. {mostlyright_data-0.17.4 → mostlyright_data-0.17.6}/src/mostlyright/data_harness/preparation/contracts.py +0 -0
  184. {mostlyright_data-0.17.4 → mostlyright_data-0.17.6}/src/mostlyright/data_harness/preparation/engine.py +0 -0
  185. {mostlyright_data-0.17.4 → mostlyright_data-0.17.6}/src/mostlyright/data_harness/preparation/errors.py +0 -0
  186. {mostlyright_data-0.17.4 → mostlyright_data-0.17.6}/src/mostlyright/data_harness/preparation/gates.py +0 -0
  187. {mostlyright_data-0.17.4 → mostlyright_data-0.17.6}/src/mostlyright/data_harness/preparation/joins.py +0 -0
  188. {mostlyright_data-0.17.4 → mostlyright_data-0.17.6}/src/mostlyright/data_harness/preparation/profile.py +0 -0
  189. {mostlyright_data-0.17.4 → mostlyright_data-0.17.6}/src/mostlyright/data_harness/preparation/table.py +0 -0
  190. {mostlyright_data-0.17.4 → mostlyright_data-0.17.6}/src/mostlyright/data_harness/preparation/transforms.py +0 -0
  191. {mostlyright_data-0.17.4 → mostlyright_data-0.17.6}/src/mostlyright/data_harness/progress_events.py +0 -0
  192. {mostlyright_data-0.17.4 → mostlyright_data-0.17.6}/src/mostlyright/data_harness/readers/__init__.py +0 -0
  193. {mostlyright_data-0.17.4 → mostlyright_data-0.17.6}/src/mostlyright/data_harness/readers/_openpyxl.py +0 -0
  194. {mostlyright_data-0.17.4 → mostlyright_data-0.17.6}/src/mostlyright/data_harness/readers/budgets.py +0 -0
  195. {mostlyright_data-0.17.4 → mostlyright_data-0.17.6}/src/mostlyright/data_harness/readers/configurable_delimited.py +0 -0
  196. {mostlyright_data-0.17.4 → mostlyright_data-0.17.6}/src/mostlyright/data_harness/readers/containers.py +0 -0
  197. {mostlyright_data-0.17.4 → mostlyright_data-0.17.6}/src/mostlyright/data_harness/readers/contracts.py +0 -0
  198. {mostlyright_data-0.17.4 → mostlyright_data-0.17.6}/src/mostlyright/data_harness/readers/delimited.py +0 -0
  199. {mostlyright_data-0.17.4 → mostlyright_data-0.17.6}/src/mostlyright/data_harness/readers/geojson_vector.py +0 -0
  200. {mostlyright_data-0.17.4 → mostlyright_data-0.17.6}/src/mostlyright/data_harness/readers/geopackage.py +0 -0
  201. {mostlyright_data-0.17.4 → mostlyright_data-0.17.6}/src/mostlyright/data_harness/readers/geoparquet.py +0 -0
  202. {mostlyright_data-0.17.4 → mostlyright_data-0.17.6}/src/mostlyright/data_harness/readers/grib2/__init__.py +0 -0
  203. {mostlyright_data-0.17.4 → mostlyright_data-0.17.6}/src/mostlyright/data_harness/readers/grib2/admission.py +0 -0
  204. {mostlyright_data-0.17.4 → mostlyright_data-0.17.6}/src/mostlyright/data_harness/readers/grib2/collection.py +0 -0
  205. {mostlyright_data-0.17.4 → mostlyright_data-0.17.6}/src/mostlyright/data_harness/readers/grib2/collection_reader.py +0 -0
  206. {mostlyright_data-0.17.4 → mostlyright_data-0.17.6}/src/mostlyright/data_harness/readers/grib2/decode.py +0 -0
  207. {mostlyright_data-0.17.4 → mostlyright_data-0.17.6}/src/mostlyright/data_harness/readers/grib2/geometry.py +0 -0
  208. {mostlyright_data-0.17.4 → mostlyright_data-0.17.6}/src/mostlyright/data_harness/readers/grib2/portable_math.py +0 -0
  209. {mostlyright_data-0.17.4 → mostlyright_data-0.17.6}/src/mostlyright/data_harness/readers/grib_eccodes.py +0 -0
  210. {mostlyright_data-0.17.4 → mostlyright_data-0.17.6}/src/mostlyright/data_harness/readers/html_tabular.py +0 -0
  211. {mostlyright_data-0.17.4 → mostlyright_data-0.17.6}/src/mostlyright/data_harness/readers/json_tabular.py +0 -0
  212. {mostlyright_data-0.17.4 → mostlyright_data-0.17.6}/src/mostlyright/data_harness/readers/parquet_tabular.py +0 -0
  213. {mostlyright_data-0.17.4 → mostlyright_data-0.17.6}/src/mostlyright/data_harness/readers/pcaxis_px.py +0 -0
  214. {mostlyright_data-0.17.4 → mostlyright_data-0.17.6}/src/mostlyright/data_harness/readers/protobuf_tabular.py +0 -0
  215. {mostlyright_data-0.17.4 → mostlyright_data-0.17.6}/src/mostlyright/data_harness/readers/raster/__init__.py +0 -0
  216. {mostlyright_data-0.17.4 → mostlyright_data-0.17.6}/src/mostlyright/data_harness/readers/raster/_bytes.py +0 -0
  217. {mostlyright_data-0.17.4 → mostlyright_data-0.17.6}/src/mostlyright/data_harness/readers/raster/decode.py +0 -0
  218. {mostlyright_data-0.17.4 → mostlyright_data-0.17.6}/src/mostlyright/data_harness/readers/raster/family.py +0 -0
  219. {mostlyright_data-0.17.4 → mostlyright_data-0.17.6}/src/mostlyright/data_harness/readers/raster/jpeg2000.py +0 -0
  220. {mostlyright_data-0.17.4 → mostlyright_data-0.17.6}/src/mostlyright/data_harness/readers/raster/profiles.py +0 -0
  221. {mostlyright_data-0.17.4 → mostlyright_data-0.17.6}/src/mostlyright/data_harness/readers/raster/rendered.py +0 -0
  222. {mostlyright_data-0.17.4 → mostlyright_data-0.17.6}/src/mostlyright/data_harness/readers/raster/safe.py +0 -0
  223. {mostlyright_data-0.17.4 → mostlyright_data-0.17.6}/src/mostlyright/data_harness/readers/raster/sentinel_safe.py +0 -0
  224. {mostlyright_data-0.17.4 → mostlyright_data-0.17.6}/src/mostlyright/data_harness/readers/raster/tiff.py +0 -0
  225. {mostlyright_data-0.17.4 → mostlyright_data-0.17.6}/src/mostlyright/data_harness/readers/samples/README.md +0 -0
  226. {mostlyright_data-0.17.4 → mostlyright_data-0.17.6}/src/mostlyright/data_harness/readers/samples/archive.gzip/1.0.0/cities_one_stream/cities.csv.gz +0 -0
  227. {mostlyright_data-0.17.4 → mostlyright_data-0.17.6}/src/mostlyright/data_harness/readers/samples/archive.gzip/1.0.0/cities_one_stream/expected.json +0 -0
  228. {mostlyright_data-0.17.4 → mostlyright_data-0.17.6}/src/mostlyright/data_harness/readers/samples/archive.gzip/1.1.0/cities_one_stream/cities.csv.gz +0 -0
  229. {mostlyright_data-0.17.4 → mostlyright_data-0.17.6}/src/mostlyright/data_harness/readers/samples/archive.gzip/1.1.0/cities_one_stream/expected.json +0 -0
  230. {mostlyright_data-0.17.4 → mostlyright_data-0.17.6}/src/mostlyright/data_harness/readers/samples/archive.tar/1.0.0/cities_beside_a_directory_entry/cities.tar +0 -0
  231. {mostlyright_data-0.17.4 → mostlyright_data-0.17.6}/src/mostlyright/data_harness/readers/samples/archive.tar/1.0.0/cities_beside_a_directory_entry/expected.json +0 -0
  232. {mostlyright_data-0.17.4 → mostlyright_data-0.17.6}/src/mostlyright/data_harness/readers/samples/archive.tar/1.1.0/cities_beside_a_directory_entry/cities.tar +0 -0
  233. {mostlyright_data-0.17.4 → mostlyright_data-0.17.6}/src/mostlyright/data_harness/readers/samples/archive.tar/1.1.0/cities_beside_a_directory_entry/expected.json +0 -0
  234. {mostlyright_data-0.17.4 → mostlyright_data-0.17.6}/src/mostlyright/data_harness/readers/samples/archive.zip/1.0.0/cities_beside_a_second_member/cities.zip +0 -0
  235. {mostlyright_data-0.17.4 → mostlyright_data-0.17.6}/src/mostlyright/data_harness/readers/samples/archive.zip/1.0.0/cities_beside_a_second_member/expected.json +0 -0
  236. {mostlyright_data-0.17.4 → mostlyright_data-0.17.6}/src/mostlyright/data_harness/readers/samples/archive.zip/1.1.0/dwd_semicolon_station_member/dwd-station.zip +0 -0
  237. {mostlyright_data-0.17.4 → mostlyright_data-0.17.6}/src/mostlyright/data_harness/readers/samples/archive.zip/1.1.0/dwd_semicolon_station_member/expected.json +0 -0
  238. {mostlyright_data-0.17.4 → mostlyright_data-0.17.6}/src/mostlyright/data_harness/readers/samples/archive.zip/1.2.0/dwd_semicolon_station_member/dwd-station.zip +0 -0
  239. {mostlyright_data-0.17.4 → mostlyright_data-0.17.6}/src/mostlyright/data_harness/readers/samples/archive.zip/1.2.0/dwd_semicolon_station_member/expected.json +0 -0
  240. {mostlyright_data-0.17.4 → mostlyright_data-0.17.6}/src/mostlyright/data_harness/readers/samples/delimited_text/1.0.0/an_ordinary_comma_separated_table/cities.csv +0 -0
  241. {mostlyright_data-0.17.4 → mostlyright_data-0.17.6}/src/mostlyright/data_harness/readers/samples/delimited_text/1.0.0/an_ordinary_comma_separated_table/expected.json +0 -0
  242. {mostlyright_data-0.17.4 → mostlyright_data-0.17.6}/src/mostlyright/data_harness/readers/samples/delimited_text/1.0.0/quoted_fields_holding_the_delimiter/cities.tsv +0 -0
  243. {mostlyright_data-0.17.4 → mostlyright_data-0.17.6}/src/mostlyright/data_harness/readers/samples/delimited_text/1.0.0/quoted_fields_holding_the_delimiter/expected.json +0 -0
  244. {mostlyright_data-0.17.4 → mostlyright_data-0.17.6}/src/mostlyright/data_harness/readers/samples/delimited_text/1.1.0/an_hourly_observation_table_served_as_plain_text/expected.json +0 -0
  245. {mostlyright_data-0.17.4 → mostlyright_data-0.17.6}/src/mostlyright/data_harness/readers/samples/delimited_text/1.1.0/an_hourly_observation_table_served_as_plain_text/observations.csv +0 -0
  246. {mostlyright_data-0.17.4 → mostlyright_data-0.17.6}/src/mostlyright/data_harness/readers/samples/delimited_text/2.0.0/publisher_preamble/expected.json +0 -0
  247. {mostlyright_data-0.17.4 → mostlyright_data-0.17.6}/src/mostlyright/data_harness/readers/samples/delimited_text/2.0.0/publisher_preamble/indices.csv +0 -0
  248. {mostlyright_data-0.17.4 → mostlyright_data-0.17.6}/src/mostlyright/data_harness/readers/samples/geojson.vector/1.0.0/czech_capital/expected.json +0 -0
  249. {mostlyright_data-0.17.4 → mostlyright_data-0.17.6}/src/mostlyright/data_harness/readers/samples/geojson.vector/1.0.0/czech_capital/places.geojson +0 -0
  250. {mostlyright_data-0.17.4 → mostlyright_data-0.17.6}/src/mostlyright/data_harness/readers/samples/geopackage.vector/1.0.0/epsg_4326_feature/expected.json +0 -0
  251. {mostlyright_data-0.17.4 → mostlyright_data-0.17.6}/src/mostlyright/data_harness/readers/samples/geopackage.vector/1.0.0/epsg_4326_feature/places.gpkg +0 -0
  252. {mostlyright_data-0.17.4 → mostlyright_data-0.17.6}/src/mostlyright/data_harness/readers/samples/geoparquet.vector/1.0.0/primary_wkb_point/expected.json +0 -0
  253. {mostlyright_data-0.17.4 → mostlyright_data-0.17.6}/src/mostlyright/data_harness/readers/samples/geoparquet.vector/1.0.0/primary_wkb_point/places.parquet +0 -0
  254. {mostlyright_data-0.17.4 → mostlyright_data-0.17.6}/src/mostlyright/data_harness/readers/samples/html.tabular/1.0.0/sanitized_table/expected.json +0 -0
  255. {mostlyright_data-0.17.4 → mostlyright_data-0.17.6}/src/mostlyright/data_harness/readers/samples/html.tabular/1.0.0/sanitized_table/table.html +0 -0
  256. {mostlyright_data-0.17.4 → mostlyright_data-0.17.6}/src/mostlyright/data_harness/readers/samples/html.web_extract/1.0.0/json_ld_scorecards/expected.json +0 -0
  257. {mostlyright_data-0.17.4 → mostlyright_data-0.17.6}/src/mostlyright/data_harness/readers/samples/html.web_extract/1.0.0/json_ld_scorecards/scorecards.html +0 -0
  258. {mostlyright_data-0.17.4 → mostlyright_data-0.17.6}/src/mostlyright/data_harness/readers/samples/image.rendered/1.0.0/tiny_png/expected.json +0 -0
  259. {mostlyright_data-0.17.4 → mostlyright_data-0.17.6}/src/mostlyright/data_harness/readers/samples/image.rendered/1.0.0/tiny_png/tiny-rendered.png +0 -0
  260. {mostlyright_data-0.17.4 → mostlyright_data-0.17.6}/src/mostlyright/data_harness/readers/samples/json.tabular/1.0.0/nested_hourly_observations/expected.json +0 -0
  261. {mostlyright_data-0.17.4 → mostlyright_data-0.17.6}/src/mostlyright/data_harness/readers/samples/json.tabular/1.0.0/nested_hourly_observations/stations.json +0 -0
  262. {mostlyright_data-0.17.4 → mostlyright_data-0.17.6}/src/mostlyright/data_harness/readers/samples/json.tabular/1.1.0/an_observation_stream_served_as_plain_text/expected.json +0 -0
  263. {mostlyright_data-0.17.4 → mostlyright_data-0.17.6}/src/mostlyright/data_harness/readers/samples/json.tabular/1.1.0/an_observation_stream_served_as_plain_text/observations.ndjson +0 -0
  264. {mostlyright_data-0.17.4 → mostlyright_data-0.17.6}/src/mostlyright/data_harness/readers/samples/meteorology.bufr/1.0.0/eccodes_bufr4_subset/eccodes-bufr4.bufr +0 -0
  265. {mostlyright_data-0.17.4 → mostlyright_data-0.17.6}/src/mostlyright/data_harness/readers/samples/meteorology.bufr/1.0.0/eccodes_bufr4_subset/expected.json +0 -0
  266. {mostlyright_data-0.17.4 → mostlyright_data-0.17.6}/src/mostlyright/data_harness/readers/samples/meteorology.grib/1.0.0/eccodes_grib1_origin/expected.json +0 -0
  267. {mostlyright_data-0.17.4 → mostlyright_data-0.17.6}/src/mostlyright/data_harness/readers/samples/meteorology.grib/1.0.0/eccodes_grib1_origin/regular-ll-surface.grib1 +0 -0
  268. {mostlyright_data-0.17.4 → mostlyright_data-0.17.6}/src/mostlyright/data_harness/readers/samples/microdata.sas_xpt/1.0.0/two_raw_columns/expected.json +0 -0
  269. {mostlyright_data-0.17.4 → mostlyright_data-0.17.6}/src/mostlyright/data_harness/readers/samples/microdata.sas_xpt/1.0.0/two_raw_columns/survey.xpt +0 -0
  270. {mostlyright_data-0.17.4 → mostlyright_data-0.17.6}/src/mostlyright/data_harness/readers/samples/microdata.spss_sav/1.0.0/two_raw_columns/expected.json +0 -0
  271. {mostlyright_data-0.17.4 → mostlyright_data-0.17.6}/src/mostlyright/data_harness/readers/samples/microdata.spss_sav/1.0.0/two_raw_columns/survey.sav +0 -0
  272. {mostlyright_data-0.17.4 → mostlyright_data-0.17.6}/src/mostlyright/data_harness/readers/samples/microdata.stata_dta/1.0.0/two_raw_columns/expected.json +0 -0
  273. {mostlyright_data-0.17.4 → mostlyright_data-0.17.6}/src/mostlyright/data_harness/readers/samples/microdata.stata_dta/1.0.0/two_raw_columns/stata.dta +0 -0
  274. {mostlyright_data-0.17.4 → mostlyright_data-0.17.6}/src/mostlyright/data_harness/readers/samples/official.pcaxis_px/1.0.0/population_by_region_and_year/expected.json +0 -0
  275. {mostlyright_data-0.17.4 → mostlyright_data-0.17.6}/src/mostlyright/data_harness/readers/samples/official.pcaxis_px/1.0.0/population_by_region_and_year/population.px +0 -0
  276. {mostlyright_data-0.17.4 → mostlyright_data-0.17.6}/src/mostlyright/data_harness/readers/samples/official.sdmx_json/1.0.0/compact_population_series/expected.json +0 -0
  277. {mostlyright_data-0.17.4 → mostlyright_data-0.17.6}/src/mostlyright/data_harness/readers/samples/official.sdmx_json/1.0.0/compact_population_series/population.json +0 -0
  278. {mostlyright_data-0.17.4 → mostlyright_data-0.17.6}/src/mostlyright/data_harness/readers/samples/parquet.tabular/1.0.0/two_columns/expected.json +0 -0
  279. {mostlyright_data-0.17.4 → mostlyright_data-0.17.6}/src/mostlyright/data_harness/readers/samples/parquet.tabular/1.0.0/two_columns/prices.parquet +0 -0
  280. {mostlyright_data-0.17.4 → mostlyright_data-0.17.6}/src/mostlyright/data_harness/readers/samples/protobuf.tabular/1.0.0/gtfs_realtime_trip_updates/expected.json +0 -0
  281. {mostlyright_data-0.17.4 → mostlyright_data-0.17.6}/src/mostlyright/data_harness/readers/samples/protobuf.tabular/1.0.0/gtfs_realtime_trip_updates/gtfs-realtime.desc +0 -0
  282. {mostlyright_data-0.17.4 → mostlyright_data-0.17.6}/src/mostlyright/data_harness/readers/samples/protobuf.tabular/1.0.0/gtfs_realtime_trip_updates/trip-updates.pb +0 -0
  283. {mostlyright_data-0.17.4 → mostlyright_data-0.17.6}/src/mostlyright/data_harness/readers/samples/raster.geospatial/1.0.0/tiny_geotiff/expected.json +0 -0
  284. {mostlyright_data-0.17.4 → mostlyright_data-0.17.6}/src/mostlyright/data_harness/readers/samples/raster.geospatial/1.0.0/tiny_geotiff/tiny-geospatial.tif +0 -0
  285. {mostlyright_data-0.17.4 → mostlyright_data-0.17.6}/src/mostlyright/data_harness/readers/samples/satellite.goes_abi_l2/1.0.0/authored_cmi_window/expected.json +0 -0
  286. {mostlyright_data-0.17.4 → mostlyright_data-0.17.6}/src/mostlyright/data_harness/readers/samples/satellite.goes_abi_l2/1.0.0/authored_cmi_window/goes-abi-l2-cmi-window.nc +0 -0
  287. {mostlyright_data-0.17.4 → mostlyright_data-0.17.6}/src/mostlyright/data_harness/readers/samples/satellite.himawari_hsd/1.0.0/authored_b13_single_bzip2/expected.json +0 -0
  288. {mostlyright_data-0.17.4 → mostlyright_data-0.17.6}/src/mostlyright/data_harness/readers/samples/satellite.himawari_hsd/1.0.0/authored_b13_single_bzip2/himawari-b13-0101-bzip2.dat +0 -0
  289. {mostlyright_data-0.17.4 → mostlyright_data-0.17.6}/src/mostlyright/data_harness/readers/samples/satellite.himawari_hsd_complete/1.0.0/authored_b13_three_segment_scan/expected.json +0 -0
  290. {mostlyright_data-0.17.4 → mostlyright_data-0.17.6}/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
  291. {mostlyright_data-0.17.4 → mostlyright_data-0.17.6}/src/mostlyright/data_harness/readers/samples/satellite.msg_seviri_l15/1.0.0/authored_calibrated_complete_visir/expected.json +0 -0
  292. {mostlyright_data-0.17.4 → mostlyright_data-0.17.6}/src/mostlyright/data_harness/readers/samples/satellite.msg_seviri_l15/1.0.0/authored_calibrated_complete_visir/msg-seviri-l15.zip +0 -0
  293. {mostlyright_data-0.17.4 → mostlyright_data-0.17.6}/src/mostlyright/data_harness/readers/samples/satellite.sentinel_safe/1.0.0/authored_b02_scl_window/expected.json +0 -0
  294. {mostlyright_data-0.17.4 → mostlyright_data-0.17.6}/src/mostlyright/data_harness/readers/samples/satellite.sentinel_safe/1.0.0/authored_b02_scl_window/sentinel-safe-b02-scl.zip +0 -0
  295. {mostlyright_data-0.17.4 → mostlyright_data-0.17.6}/src/mostlyright/data_harness/readers/samples/satellite.xrit_image/1.0.0/authored_complete_raw_counts/expected.json +0 -0
  296. {mostlyright_data-0.17.4 → mostlyright_data-0.17.6}/src/mostlyright/data_harness/readers/samples/satellite.xrit_image/1.0.0/authored_complete_raw_counts/xrit-complete-image.zip +0 -0
  297. {mostlyright_data-0.17.4 → mostlyright_data-0.17.6}/src/mostlyright/data_harness/readers/samples/scientific.fits/1.0.0/tiny_primary_window/expected.json +0 -0
  298. {mostlyright_data-0.17.4 → mostlyright_data-0.17.6}/src/mostlyright/data_harness/readers/samples/scientific.fits/1.0.0/tiny_primary_window/tiny-primary.fits +0 -0
  299. {mostlyright_data-0.17.4 → mostlyright_data-0.17.6}/src/mostlyright/data_harness/readers/samples/scientific.hdf4/1.0.0/authored_temperature_window/expected.json +0 -0
  300. {mostlyright_data-0.17.4 → mostlyright_data-0.17.6}/src/mostlyright/data_harness/readers/samples/scientific.hdf4/1.0.0/authored_temperature_window/temperature.hdf +0 -0
  301. {mostlyright_data-0.17.4 → mostlyright_data-0.17.6}/src/mostlyright/data_harness/readers/samples/scientific.hdf5/1.0.0/authored_temperature_window/expected.json +0 -0
  302. {mostlyright_data-0.17.4 → mostlyright_data-0.17.6}/src/mostlyright/data_harness/readers/samples/scientific.hdf5/1.0.0/authored_temperature_window/temperature.h5 +0 -0
  303. {mostlyright_data-0.17.4 → mostlyright_data-0.17.6}/src/mostlyright/data_harness/readers/samples/scientific.hdf_eos2/1.0.0/authored_grid_temperature_window/expected.json +0 -0
  304. {mostlyright_data-0.17.4 → mostlyright_data-0.17.6}/src/mostlyright/data_harness/readers/samples/scientific.hdf_eos2/1.0.0/authored_grid_temperature_window/nasa-hdfeos2-grid.hdf +0 -0
  305. {mostlyright_data-0.17.4 → mostlyright_data-0.17.6}/src/mostlyright/data_harness/readers/samples/scientific.hdf_eos2/1.0.0/authored_swath_temperature_window/expected.json +0 -0
  306. {mostlyright_data-0.17.4 → mostlyright_data-0.17.6}/src/mostlyright/data_harness/readers/samples/scientific.hdf_eos2/1.0.0/authored_swath_temperature_window/nasa-hdfeos2-swath.hdf +0 -0
  307. {mostlyright_data-0.17.4 → mostlyright_data-0.17.6}/src/mostlyright/data_harness/readers/samples/scientific.netcdf/1.0.0/authored_classic_temperature_window/expected.json +0 -0
  308. {mostlyright_data-0.17.4 → mostlyright_data-0.17.6}/src/mostlyright/data_harness/readers/samples/scientific.netcdf/1.0.0/authored_classic_temperature_window/temperature-classic.nc +0 -0
  309. {mostlyright_data-0.17.4 → mostlyright_data-0.17.6}/src/mostlyright/data_harness/readers/samples/scientific.zarr/1.0.0/authored_v3_temperature_window/expected.json +0 -0
  310. {mostlyright_data-0.17.4 → mostlyright_data-0.17.6}/src/mostlyright/data_harness/readers/samples/scientific.zarr/1.0.0/authored_v3_temperature_window/temperature-zarr-v3.zip +0 -0
  311. {mostlyright_data-0.17.4 → mostlyright_data-0.17.6}/src/mostlyright/data_harness/readers/samples/spreadsheet.xlsx/1.0.0/an_ordinary_table_beside_a_second_sheet/cities.xlsx +0 -0
  312. {mostlyright_data-0.17.4 → mostlyright_data-0.17.6}/src/mostlyright/data_harness/readers/samples/spreadsheet.xlsx/1.0.0/an_ordinary_table_beside_a_second_sheet/expected.json +0 -0
  313. {mostlyright_data-0.17.4 → mostlyright_data-0.17.6}/src/mostlyright/data_harness/readers/samples/spreadsheet.xlsx/1.0.0/shares_the_workbook_had_already_computed/expected.json +0 -0
  314. {mostlyright_data-0.17.4 → mostlyright_data-0.17.6}/src/mostlyright/data_harness/readers/samples/spreadsheet.xlsx/1.0.0/shares_the_workbook_had_already_computed/shares.xlsx +0 -0
  315. {mostlyright_data-0.17.4 → mostlyright_data-0.17.6}/src/mostlyright/data_harness/readers/samples/spreadsheet.xlsx/1.1.0/shares_the_workbook_had_already_computed/expected.json +0 -0
  316. {mostlyright_data-0.17.4 → mostlyright_data-0.17.6}/src/mostlyright/data_harness/readers/samples/spreadsheet.xlsx/1.1.0/shares_the_workbook_had_already_computed/shares.xlsx +0 -0
  317. {mostlyright_data-0.17.4 → mostlyright_data-0.17.6}/src/mostlyright/data_harness/readers/samples/weather.grib2/1.0.0/README.md +0 -0
  318. {mostlyright_data-0.17.4 → mostlyright_data-0.17.6}/src/mostlyright/data_harness/readers/samples/weather.grib2/1.0.0/gfs_2m_temperature/expected.json +0 -0
  319. {mostlyright_data-0.17.4 → mostlyright_data-0.17.6}/src/mostlyright/data_harness/readers/samples/weather.grib2/1.0.0/gfs_2m_temperature/gfs-2m-temperature.grib2 +0 -0
  320. {mostlyright_data-0.17.4 → mostlyright_data-0.17.6}/src/mostlyright/data_harness/readers/samples/weather.grib2/1.0.0/hrrr_2m_temperature/expected.json +0 -0
  321. {mostlyright_data-0.17.4 → mostlyright_data-0.17.6}/src/mostlyright/data_harness/readers/samples/weather.grib2/1.0.0/hrrr_2m_temperature/hrrr-2m-temperature.grib2 +0 -0
  322. {mostlyright_data-0.17.4 → mostlyright_data-0.17.6}/src/mostlyright/data_harness/readers/samples/weather.grib2/1.0.0/hrrr_categorical_rain/expected.json +0 -0
  323. {mostlyright_data-0.17.4 → mostlyright_data-0.17.6}/src/mostlyright/data_harness/readers/samples/weather.grib2/1.0.0/hrrr_categorical_rain/hrrr-categorical-rain.grib2 +0 -0
  324. {mostlyright_data-0.17.4 → mostlyright_data-0.17.6}/src/mostlyright/data_harness/readers/samples/weather.grib2/2.0.0/hrrr_2m_temperature/expected.json +0 -0
  325. {mostlyright_data-0.17.4 → mostlyright_data-0.17.6}/src/mostlyright/data_harness/readers/samples/weather.grib2/2.0.0/hrrr_2m_temperature/hrrr-2m-temperature.grib2 +0 -0
  326. {mostlyright_data-0.17.4 → mostlyright_data-0.17.6}/src/mostlyright/data_harness/readers/samples/weather.grib2/3.0.0/gfs_and_hrrr_categorical_rain/expected.json +0 -0
  327. {mostlyright_data-0.17.4 → mostlyright_data-0.17.6}/src/mostlyright/data_harness/readers/samples/weather.grib2/3.0.0/gfs_and_hrrr_categorical_rain/gfs-and-hrrr-categorical-rain.grib2 +0 -0
  328. {mostlyright_data-0.17.4 → mostlyright_data-0.17.6}/src/mostlyright/data_harness/readers/samples/xbrl.facts/1.0.0/plain_filing_fact/expected.json +0 -0
  329. {mostlyright_data-0.17.4 → mostlyright_data-0.17.6}/src/mostlyright/data_harness/readers/samples/xbrl.facts/1.0.0/plain_filing_fact/filing.xml +0 -0
  330. {mostlyright_data-0.17.4 → mostlyright_data-0.17.6}/src/mostlyright/data_harness/readers/samples/xbrl.facts/1.0.0/xml_inline_fact/expected.json +0 -0
  331. {mostlyright_data-0.17.4 → mostlyright_data-0.17.6}/src/mostlyright/data_harness/readers/samples/xbrl.facts/1.0.0/xml_inline_fact/filing.xhtml +0 -0
  332. {mostlyright_data-0.17.4 → mostlyright_data-0.17.6}/src/mostlyright/data_harness/readers/samples/xml.tabular/1.0.0/pacer_rss_feed/expected.json +0 -0
  333. {mostlyright_data-0.17.4 → mostlyright_data-0.17.6}/src/mostlyright/data_harness/readers/samples/xml.tabular/1.0.0/pacer_rss_feed/feed.xml +0 -0
  334. {mostlyright_data-0.17.4 → mostlyright_data-0.17.6}/src/mostlyright/data_harness/readers/samples/xml.tabular/1.0.0/sec_form_d_filing/expected.json +0 -0
  335. {mostlyright_data-0.17.4 → mostlyright_data-0.17.6}/src/mostlyright/data_harness/readers/samples/xml.tabular/1.0.0/sec_form_d_filing/filing.xml +0 -0
  336. {mostlyright_data-0.17.4 → mostlyright_data-0.17.6}/src/mostlyright/data_harness/readers/samples/xml.tabular/1.0.0/unified_agenda_extract/agenda.xml +0 -0
  337. {mostlyright_data-0.17.4 → mostlyright_data-0.17.6}/src/mostlyright/data_harness/readers/samples/xml.tabular/1.0.0/unified_agenda_extract/expected.json +0 -0
  338. {mostlyright_data-0.17.4 → mostlyright_data-0.17.6}/src/mostlyright/data_harness/readers/samples.py +0 -0
  339. {mostlyright_data-0.17.4 → mostlyright_data-0.17.6}/src/mostlyright/data_harness/readers/scientific.py +0 -0
  340. {mostlyright_data-0.17.4 → mostlyright_data-0.17.6}/src/mostlyright/data_harness/readers/scientific_arrays/__init__.py +0 -0
  341. {mostlyright_data-0.17.4 → mostlyright_data-0.17.6}/src/mostlyright/data_harness/readers/scientific_arrays/container.py +0 -0
  342. {mostlyright_data-0.17.4 → mostlyright_data-0.17.6}/src/mostlyright/data_harness/readers/scientific_arrays/goes.py +0 -0
  343. {mostlyright_data-0.17.4 → mostlyright_data-0.17.6}/src/mostlyright/data_harness/readers/scientific_arrays/hdf4.py +0 -0
  344. {mostlyright_data-0.17.4 → mostlyright_data-0.17.6}/src/mostlyright/data_harness/readers/scientific_arrays/hdf4_bridge.py +0 -0
  345. {mostlyright_data-0.17.4 → mostlyright_data-0.17.6}/src/mostlyright/data_harness/readers/scientific_arrays/hdf5.py +0 -0
  346. {mostlyright_data-0.17.4 → mostlyright_data-0.17.6}/src/mostlyright/data_harness/readers/scientific_arrays/native.py +0 -0
  347. {mostlyright_data-0.17.4 → mostlyright_data-0.17.6}/src/mostlyright/data_harness/readers/scientific_arrays/netcdf.py +0 -0
  348. {mostlyright_data-0.17.4 → mostlyright_data-0.17.6}/src/mostlyright/data_harness/readers/scientific_arrays/profiles.py +0 -0
  349. {mostlyright_data-0.17.4 → mostlyright_data-0.17.6}/src/mostlyright/data_harness/readers/scientific_arrays/raw.py +0 -0
  350. {mostlyright_data-0.17.4 → mostlyright_data-0.17.6}/src/mostlyright/data_harness/readers/scientific_arrays/zarr.py +0 -0
  351. {mostlyright_data-0.17.4 → mostlyright_data-0.17.6}/src/mostlyright/data_harness/readers/scientific_catalog.py +0 -0
  352. {mostlyright_data-0.17.4 → mostlyright_data-0.17.6}/src/mostlyright/data_harness/readers/scientific_segmented/__init__.py +0 -0
  353. {mostlyright_data-0.17.4 → mostlyright_data-0.17.6}/src/mostlyright/data_harness/readers/scientific_segmented/asset_sets.py +0 -0
  354. {mostlyright_data-0.17.4 → mostlyright_data-0.17.6}/src/mostlyright/data_harness/readers/scientific_segmented/formats.py +0 -0
  355. {mostlyright_data-0.17.4 → mostlyright_data-0.17.6}/src/mostlyright/data_harness/readers/scientific_segmented/hsd.py +0 -0
  356. {mostlyright_data-0.17.4 → mostlyright_data-0.17.6}/src/mostlyright/data_harness/readers/scientific_segmented/native.py +0 -0
  357. {mostlyright_data-0.17.4 → mostlyright_data-0.17.6}/src/mostlyright/data_harness/readers/scientific_segmented/profiles.py +0 -0
  358. {mostlyright_data-0.17.4 → mostlyright_data-0.17.6}/src/mostlyright/data_harness/readers/scientific_segmented/reader.py +0 -0
  359. {mostlyright_data-0.17.4 → mostlyright_data-0.17.6}/src/mostlyright/data_harness/readers/scientific_segmented/xrit.py +0 -0
  360. {mostlyright_data-0.17.4 → mostlyright_data-0.17.6}/src/mostlyright/data_harness/readers/sdmx_json.py +0 -0
  361. {mostlyright_data-0.17.4 → mostlyright_data-0.17.6}/src/mostlyright/data_harness/readers/spreadsheet.py +0 -0
  362. {mostlyright_data-0.17.4 → mostlyright_data-0.17.6}/src/mostlyright/data_harness/readers/statistical_microdata.py +0 -0
  363. {mostlyright_data-0.17.4 → mostlyright_data-0.17.6}/src/mostlyright/data_harness/readers/tabular.py +0 -0
  364. {mostlyright_data-0.17.4 → mostlyright_data-0.17.6}/src/mostlyright/data_harness/readers/vector.py +0 -0
  365. {mostlyright_data-0.17.4 → mostlyright_data-0.17.6}/src/mostlyright/data_harness/readers/vector_wkb.py +0 -0
  366. {mostlyright_data-0.17.4 → mostlyright_data-0.17.6}/src/mostlyright/data_harness/readers/xbrl_facts.py +0 -0
  367. {mostlyright_data-0.17.4 → mostlyright_data-0.17.6}/src/mostlyright/data_harness/readers/xml_tabular.py +0 -0
  368. {mostlyright_data-0.17.4 → mostlyright_data-0.17.6}/src/mostlyright/data_harness/recipe.py +0 -0
  369. {mostlyright_data-0.17.4 → mostlyright_data-0.17.6}/src/mostlyright/data_harness/review.py +0 -0
  370. {mostlyright_data-0.17.4 → mostlyright_data-0.17.6}/src/mostlyright/data_harness/rowset.py +0 -0
  371. {mostlyright_data-0.17.4 → mostlyright_data-0.17.6}/src/mostlyright/data_harness/run_phase_timing.py +0 -0
  372. {mostlyright_data-0.17.4 → mostlyright_data-0.17.6}/src/mostlyright/data_harness/session_probes.py +0 -0
  373. {mostlyright_data-0.17.4 → mostlyright_data-0.17.6}/src/mostlyright/data_harness/signing.py +0 -0
  374. {mostlyright_data-0.17.4 → mostlyright_data-0.17.6}/src/mostlyright/data_harness/skill_assets.py +0 -0
  375. {mostlyright_data-0.17.4 → mostlyright_data-0.17.6}/src/mostlyright/data_harness/source_bootstrap.py +0 -0
  376. {mostlyright_data-0.17.4 → mostlyright_data-0.17.6}/src/mostlyright/data_harness/source_bundle_writer.py +0 -0
  377. {mostlyright_data-0.17.4 → mostlyright_data-0.17.6}/src/mostlyright/data_harness/source_discovery.py +0 -0
  378. {mostlyright_data-0.17.4 → mostlyright_data-0.17.6}/src/mostlyright/data_harness/source_history_candidate_child.py +0 -0
  379. {mostlyright_data-0.17.4 → mostlyright_data-0.17.6}/src/mostlyright/data_harness/source_history_transform_child.py +0 -0
  380. {mostlyright_data-0.17.4 → mostlyright_data-0.17.6}/src/mostlyright/data_harness/source_inventory.py +0 -0
  381. {mostlyright_data-0.17.4 → mostlyright_data-0.17.6}/src/mostlyright/data_harness/source_partition.py +0 -0
  382. {mostlyright_data-0.17.4 → mostlyright_data-0.17.6}/src/mostlyright/data_harness/source_raw_inventory.py +0 -0
  383. {mostlyright_data-0.17.4 → mostlyright_data-0.17.6}/src/mostlyright/data_harness/source_state_index.py +0 -0
  384. {mostlyright_data-0.17.4 → mostlyright_data-0.17.6}/src/mostlyright/data_harness/sources/__init__.py +0 -0
  385. {mostlyright_data-0.17.4 → mostlyright_data-0.17.6}/src/mostlyright/data_harness/sources/_adapter_steps.py +0 -0
  386. {mostlyright_data-0.17.4 → mostlyright_data-0.17.6}/src/mostlyright/data_harness/sources/adapters.py +0 -0
  387. {mostlyright_data-0.17.4 → mostlyright_data-0.17.6}/src/mostlyright/data_harness/sources/authenticated_https.py +0 -0
  388. {mostlyright_data-0.17.4 → mostlyright_data-0.17.6}/src/mostlyright/data_harness/sources/authenticated_https_v2.py +0 -0
  389. {mostlyright_data-0.17.4 → mostlyright_data-0.17.6}/src/mostlyright/data_harness/sources/authenticated_https_v3.py +0 -0
  390. {mostlyright_data-0.17.4 → mostlyright_data-0.17.6}/src/mostlyright/data_harness/sources/cadence.py +0 -0
  391. {mostlyright_data-0.17.4 → mostlyright_data-0.17.6}/src/mostlyright/data_harness/sources/cadence_emission.py +0 -0
  392. {mostlyright_data-0.17.4 → mostlyright_data-0.17.6}/src/mostlyright/data_harness/sources/cadence_history.py +0 -0
  393. {mostlyright_data-0.17.4 → mostlyright_data-0.17.6}/src/mostlyright/data_harness/sources/catalog/__init__.py +0 -0
  394. {mostlyright_data-0.17.4 → mostlyright_data-0.17.6}/src/mostlyright/data_harness/sources/catalog/admission.py +0 -0
  395. {mostlyright_data-0.17.4 → mostlyright_data-0.17.6}/src/mostlyright/data_harness/sources/catalog/authoring.py +0 -0
  396. {mostlyright_data-0.17.4 → mostlyright_data-0.17.6}/src/mostlyright/data_harness/sources/catalog/authoring_policy.py +0 -0
  397. {mostlyright_data-0.17.4 → mostlyright_data-0.17.6}/src/mostlyright/data_harness/sources/catalog/authoring_shards.py +0 -0
  398. {mostlyright_data-0.17.4 → mostlyright_data-0.17.6}/src/mostlyright/data_harness/sources/catalog/bounded_io.py +0 -0
  399. {mostlyright_data-0.17.4 → mostlyright_data-0.17.6}/src/mostlyright/data_harness/sources/catalog/channel.py +0 -0
  400. {mostlyright_data-0.17.4 → mostlyright_data-0.17.6}/src/mostlyright/data_harness/sources/catalog/channel_client.py +0 -0
  401. {mostlyright_data-0.17.4 → mostlyright_data-0.17.6}/src/mostlyright/data_harness/sources/catalog/contracts.py +0 -0
  402. {mostlyright_data-0.17.4 → mostlyright_data-0.17.6}/src/mostlyright/data_harness/sources/catalog/coverage.py +0 -0
  403. {mostlyright_data-0.17.4 → mostlyright_data-0.17.6}/src/mostlyright/data_harness/sources/catalog/embedding.py +0 -0
  404. {mostlyright_data-0.17.4 → mostlyright_data-0.17.6}/src/mostlyright/data_harness/sources/catalog/entry_v2.py +0 -0
  405. {mostlyright_data-0.17.4 → mostlyright_data-0.17.6}/src/mostlyright/data_harness/sources/catalog/fill.py +0 -0
  406. {mostlyright_data-0.17.4 → mostlyright_data-0.17.6}/src/mostlyright/data_harness/sources/catalog/fill_partitions.py +0 -0
  407. {mostlyright_data-0.17.4 → mostlyright_data-0.17.6}/src/mostlyright/data_harness/sources/catalog/fill_staging.py +0 -0
  408. {mostlyright_data-0.17.4 → mostlyright_data-0.17.6}/src/mostlyright/data_harness/sources/catalog/gating.py +0 -0
  409. {mostlyright_data-0.17.4 → mostlyright_data-0.17.6}/src/mostlyright/data_harness/sources/catalog/generation_receipt.py +0 -0
  410. {mostlyright_data-0.17.4 → mostlyright_data-0.17.6}/src/mostlyright/data_harness/sources/catalog/harvest/__init__.py +0 -0
  411. {mostlyright_data-0.17.4 → mostlyright_data-0.17.6}/src/mostlyright/data_harness/sources/catalog/harvest/ckan.py +0 -0
  412. {mostlyright_data-0.17.4 → mostlyright_data-0.17.6}/src/mostlyright/data_harness/sources/catalog/harvest/datagov_v4.py +0 -0
  413. {mostlyright_data-0.17.4 → mostlyright_data-0.17.6}/src/mostlyright/data_harness/sources/catalog/harvest/protocol.py +0 -0
  414. {mostlyright_data-0.17.4 → mostlyright_data-0.17.6}/src/mostlyright/data_harness/sources/catalog/harvest/sdmx.py +0 -0
  415. {mostlyright_data-0.17.4 → mostlyright_data-0.17.6}/src/mostlyright/data_harness/sources/catalog/harvest/stac.py +0 -0
  416. {mostlyright_data-0.17.4 → mostlyright_data-0.17.6}/src/mostlyright/data_harness/sources/catalog/hosted_catalog.py +0 -0
  417. {mostlyright_data-0.17.4 → mostlyright_data-0.17.6}/src/mostlyright/data_harness/sources/catalog/identity_history.py +0 -0
  418. {mostlyright_data-0.17.4 → mostlyright_data-0.17.6}/src/mostlyright/data_harness/sources/catalog/neural.py +0 -0
  419. {mostlyright_data-0.17.4 → mostlyright_data-0.17.6}/src/mostlyright/data_harness/sources/catalog/packed_catalog.py +0 -0
  420. {mostlyright_data-0.17.4 → mostlyright_data-0.17.6}/src/mostlyright/data_harness/sources/catalog/packed_retrieval.py +0 -0
  421. {mostlyright_data-0.17.4 → mostlyright_data-0.17.6}/src/mostlyright/data_harness/sources/catalog/packed_writer.py +0 -0
  422. {mostlyright_data-0.17.4 → mostlyright_data-0.17.6}/src/mostlyright/data_harness/sources/catalog/query_trace.py +0 -0
  423. {mostlyright_data-0.17.4 → mostlyright_data-0.17.6}/src/mostlyright/data_harness/sources/catalog/recommend.py +0 -0
  424. {mostlyright_data-0.17.4 → mostlyright_data-0.17.6}/src/mostlyright/data_harness/sources/catalog/retrieval.py +0 -0
  425. {mostlyright_data-0.17.4 → mostlyright_data-0.17.6}/src/mostlyright/data_harness/sources/catalog/retrieval_manifest.py +0 -0
  426. {mostlyright_data-0.17.4 → mostlyright_data-0.17.6}/src/mostlyright/data_harness/sources/catalog/sealed.py +0 -0
  427. {mostlyright_data-0.17.4 → mostlyright_data-0.17.6}/src/mostlyright/data_harness/sources/catalog/search.py +0 -0
  428. {mostlyright_data-0.17.4 → mostlyright_data-0.17.6}/src/mostlyright/data_harness/sources/catalog/streaming_delta.py +0 -0
  429. {mostlyright_data-0.17.4 → mostlyright_data-0.17.6}/src/mostlyright/data_harness/sources/catalog/update.py +0 -0
  430. {mostlyright_data-0.17.4 → mostlyright_data-0.17.6}/src/mostlyright/data_harness/sources/collections.py +0 -0
  431. {mostlyright_data-0.17.4 → mostlyright_data-0.17.6}/src/mostlyright/data_harness/sources/contracts.py +0 -0
  432. {mostlyright_data-0.17.4 → mostlyright_data-0.17.6}/src/mostlyright/data_harness/sources/dataset.py +0 -0
  433. {mostlyright_data-0.17.4 → mostlyright_data-0.17.6}/src/mostlyright/data_harness/sources/deletion.py +0 -0
  434. {mostlyright_data-0.17.4 → mostlyright_data-0.17.6}/src/mostlyright/data_harness/sources/document_projection.py +0 -0
  435. {mostlyright_data-0.17.4 → mostlyright_data-0.17.6}/src/mostlyright/data_harness/sources/fitness.py +0 -0
  436. {mostlyright_data-0.17.4 → mostlyright_data-0.17.6}/src/mostlyright/data_harness/sources/governance.py +0 -0
  437. {mostlyright_data-0.17.4 → mostlyright_data-0.17.6}/src/mostlyright/data_harness/sources/hosted.py +0 -0
  438. {mostlyright_data-0.17.4 → mostlyright_data-0.17.6}/src/mostlyright/data_harness/sources/integration.py +0 -0
  439. {mostlyright_data-0.17.4 → mostlyright_data-0.17.6}/src/mostlyright/data_harness/sources/range_reader.py +0 -0
  440. {mostlyright_data-0.17.4 → mostlyright_data-0.17.6}/src/mostlyright/data_harness/sources/registry.py +0 -0
  441. {mostlyright_data-0.17.4 → mostlyright_data-0.17.6}/src/mostlyright/data_harness/sources/rights_rule.py +0 -0
  442. {mostlyright_data-0.17.4 → mostlyright_data-0.17.6}/src/mostlyright/data_harness/sources/source_cadence_vectors.v1.json +0 -0
  443. {mostlyright_data-0.17.4 → mostlyright_data-0.17.6}/src/mostlyright/data_harness/sources/sports.py +0 -0
  444. {mostlyright_data-0.17.4 → mostlyright_data-0.17.6}/src/mostlyright/data_harness/sources/stream.py +0 -0
  445. {mostlyright_data-0.17.4 → mostlyright_data-0.17.6}/src/mostlyright/data_harness/sources/stream_capture_session.py +0 -0
  446. {mostlyright_data-0.17.4 → mostlyright_data-0.17.6}/src/mostlyright/data_harness/sources/stream_connector.py +0 -0
  447. {mostlyright_data-0.17.4 → mostlyright_data-0.17.6}/src/mostlyright/data_harness/sources/stream_connectors/fixture.cursor-resume.v3.json +0 -0
  448. {mostlyright_data-0.17.4 → mostlyright_data-0.17.6}/src/mostlyright/data_harness/sources/stream_connectors/fixture.keyed-frame-ed25519.v2.json +0 -0
  449. {mostlyright_data-0.17.4 → mostlyright_data-0.17.6}/src/mostlyright/data_harness/sources/stream_connectors/fixture.keyed-frame-hmac.v2.json +0 -0
  450. {mostlyright_data-0.17.4 → mostlyright_data-0.17.6}/src/mostlyright/data_harness/sources/stream_connectors/fixture.keyed-frame-hmac384.v2.json +0 -0
  451. {mostlyright_data-0.17.4 → mostlyright_data-0.17.6}/src/mostlyright/data_harness/sources/stream_connectors/fixture.keyed-frame-hmac512.v2.json +0 -0
  452. {mostlyright_data-0.17.4 → mostlyright_data-0.17.6}/src/mostlyright/data_harness/sources/stream_connectors/fixture.keyed-frame.v2.json +0 -0
  453. {mostlyright_data-0.17.4 → mostlyright_data-0.17.6}/src/mostlyright/data_harness/sources/stream_connectors/fixture.keyed-header-rsa.v2.json +0 -0
  454. {mostlyright_data-0.17.4 → mostlyright_data-0.17.6}/src/mostlyright/data_harness/sources/stream_connectors/fixture.keyed-header.v2.json +0 -0
  455. {mostlyright_data-0.17.4 → mostlyright_data-0.17.6}/src/mostlyright/data_harness/sources/stream_connectors/fixture.keyed-permessage-jwt.v2.json +0 -0
  456. {mostlyright_data-0.17.4 → mostlyright_data-0.17.6}/src/mostlyright/data_harness/sources/stream_connectors/fixture.keyed-permessage.v2.json +0 -0
  457. {mostlyright_data-0.17.4 → mostlyright_data-0.17.6}/src/mostlyright/data_harness/sources/stream_connectors/fixture.keyed-prelude.v2.json +0 -0
  458. {mostlyright_data-0.17.4 → mostlyright_data-0.17.6}/src/mostlyright/data_harness/sources/stream_connectors/fixture.keyed-query.v2.json +0 -0
  459. {mostlyright_data-0.17.4 → mostlyright_data-0.17.6}/src/mostlyright/data_harness/sources/stream_connectors/fixture.keyed-subprotocol.v2.json +0 -0
  460. {mostlyright_data-0.17.4 → mostlyright_data-0.17.6}/src/mostlyright/data_harness/sources/stream_connectors/fixture.keyed-subscribe.v2.json +0 -0
  461. {mostlyright_data-0.17.4 → mostlyright_data-0.17.6}/src/mostlyright/data_harness/sources/stream_connectors/fixture.keyed-urlpath.v2.json +0 -0
  462. {mostlyright_data-0.17.4 → mostlyright_data-0.17.6}/src/mostlyright/data_harness/sources/stream_connectors/polymarket.clob-market.v1.json +0 -0
  463. {mostlyright_data-0.17.4 → mostlyright_data-0.17.6}/src/mostlyright/data_harness/sources/stream_credential.py +0 -0
  464. {mostlyright_data-0.17.4 → mostlyright_data-0.17.6}/src/mostlyright/data_harness/sources/stream_prelude.py +0 -0
  465. {mostlyright_data-0.17.4 → mostlyright_data-0.17.6}/src/mostlyright/data_harness/sources/stream_recorder.py +0 -0
  466. {mostlyright_data-0.17.4 → mostlyright_data-0.17.6}/src/mostlyright/data_harness/sources/stream_registry.py +0 -0
  467. {mostlyright_data-0.17.4 → mostlyright_data-0.17.6}/src/mostlyright/data_harness/sources/stream_rotation.py +0 -0
  468. {mostlyright_data-0.17.4 → mostlyright_data-0.17.6}/src/mostlyright/data_harness/sources/stream_segment_recorder.py +0 -0
  469. {mostlyright_data-0.17.4 → mostlyright_data-0.17.6}/src/mostlyright/data_harness/sources/stream_series.py +0 -0
  470. {mostlyright_data-0.17.4 → mostlyright_data-0.17.6}/src/mostlyright/data_harness/sources/stream_signing.py +0 -0
  471. {mostlyright_data-0.17.4 → mostlyright_data-0.17.6}/src/mostlyright/data_harness/sources/stream_transport.py +0 -0
  472. {mostlyright_data-0.17.4 → mostlyright_data-0.17.6}/src/mostlyright/data_harness/sql_transform_engine.py +0 -0
  473. {mostlyright_data-0.17.4 → mostlyright_data-0.17.6}/src/mostlyright/data_harness/stream_order_vector.py +0 -0
  474. {mostlyright_data-0.17.4 → mostlyright_data-0.17.6}/src/mostlyright/data_harness/stream_recovery_objects.py +0 -0
  475. {mostlyright_data-0.17.4 → mostlyright_data-0.17.6}/src/mostlyright/data_harness/stream_segment_spill.py +0 -0
  476. {mostlyright_data-0.17.4 → mostlyright_data-0.17.6}/src/mostlyright/data_harness/stream_subscription_feed.py +0 -0
  477. {mostlyright_data-0.17.4 → mostlyright_data-0.17.6}/src/mostlyright/data_harness/stream_subscription_sealer.py +0 -0
  478. {mostlyright_data-0.17.4 → mostlyright_data-0.17.6}/src/mostlyright/data_harness/stream_subscription_worker.py +0 -0
  479. {mostlyright_data-0.17.4 → mostlyright_data-0.17.6}/src/mostlyright/data_harness/stream_venue.py +0 -0
  480. {mostlyright_data-0.17.4 → mostlyright_data-0.17.6}/src/mostlyright/data_harness/stream_venue_staging.py +0 -0
  481. {mostlyright_data-0.17.4 → mostlyright_data-0.17.6}/src/mostlyright/data_harness/studio_subscription_control.py +0 -0
  482. {mostlyright_data-0.17.4 → mostlyright_data-0.17.6}/src/mostlyright/data_harness/table_manifest.py +0 -0
  483. {mostlyright_data-0.17.4 → mostlyright_data-0.17.6}/src/mostlyright/data_harness/table_parts.py +0 -0
  484. {mostlyright_data-0.17.4 → mostlyright_data-0.17.6}/src/mostlyright/data_harness/table_profile.py +0 -0
  485. {mostlyright_data-0.17.4 → mostlyright_data-0.17.6}/src/mostlyright/data_harness/thin/__init__.py +0 -0
  486. {mostlyright_data-0.17.4 → mostlyright_data-0.17.6}/src/mostlyright/data_harness/thin/acquire.py +0 -0
  487. {mostlyright_data-0.17.4 → mostlyright_data-0.17.6}/src/mostlyright/data_harness/thin/acquire_cancel.py +0 -0
  488. {mostlyright_data-0.17.4 → mostlyright_data-0.17.6}/src/mostlyright/data_harness/thin/activity.py +0 -0
  489. {mostlyright_data-0.17.4 → mostlyright_data-0.17.6}/src/mostlyright/data_harness/thin/approvals.py +0 -0
  490. {mostlyright_data-0.17.4 → mostlyright_data-0.17.6}/src/mostlyright/data_harness/thin/commands.py +0 -0
  491. {mostlyright_data-0.17.4 → mostlyright_data-0.17.6}/src/mostlyright/data_harness/thin/download.py +0 -0
  492. {mostlyright_data-0.17.4 → mostlyright_data-0.17.6}/src/mostlyright/data_harness/thin/narrative.py +0 -0
  493. {mostlyright_data-0.17.4 → mostlyright_data-0.17.6}/src/mostlyright/data_harness/thin/parity.py +0 -0
  494. {mostlyright_data-0.17.4 → mostlyright_data-0.17.6}/src/mostlyright/data_harness/thin/probe.py +0 -0
  495. {mostlyright_data-0.17.4 → mostlyright_data-0.17.6}/src/mostlyright/data_harness/thin/propose.py +0 -0
  496. {mostlyright_data-0.17.4 → mostlyright_data-0.17.6}/src/mostlyright/data_harness/thin/recipe.py +0 -0
  497. {mostlyright_data-0.17.4 → mostlyright_data-0.17.6}/src/mostlyright/data_harness/thin/research.py +0 -0
  498. {mostlyright_data-0.17.4 → mostlyright_data-0.17.6}/src/mostlyright/data_harness/thin/router.py +0 -0
  499. {mostlyright_data-0.17.4 → mostlyright_data-0.17.6}/src/mostlyright/data_harness/thin/runs.py +0 -0
  500. {mostlyright_data-0.17.4 → mostlyright_data-0.17.6}/src/mostlyright/data_harness/thin/session.py +0 -0
  501. {mostlyright_data-0.17.4 → mostlyright_data-0.17.6}/src/mostlyright/data_harness/thin/stream.py +0 -0
  502. {mostlyright_data-0.17.4 → mostlyright_data-0.17.6}/src/mostlyright/data_harness/thin/stream_venue.py +0 -0
  503. {mostlyright_data-0.17.4 → mostlyright_data-0.17.6}/src/mostlyright/data_harness/thin/v4.py +0 -0
  504. {mostlyright_data-0.17.4 → mostlyright_data-0.17.6}/src/mostlyright/data_harness/thin/v4_artifacts.py +0 -0
  505. {mostlyright_data-0.17.4 → mostlyright_data-0.17.6}/src/mostlyright/data_harness/thin/v4_connections.py +0 -0
  506. {mostlyright_data-0.17.4 → mostlyright_data-0.17.6}/src/mostlyright/data_harness/thin/v4_dataset_covers.py +0 -0
  507. {mostlyright_data-0.17.4 → mostlyright_data-0.17.6}/src/mostlyright/data_harness/thin/v4_handoff.py +0 -0
  508. {mostlyright_data-0.17.4 → mostlyright_data-0.17.6}/src/mostlyright/data_harness/thin/v4_narrative.py +0 -0
  509. {mostlyright_data-0.17.4 → mostlyright_data-0.17.6}/src/mostlyright/data_harness/thin/v4_query.py +0 -0
  510. {mostlyright_data-0.17.4 → mostlyright_data-0.17.6}/src/mostlyright/data_harness/thin/v4_secrets.py +0 -0
  511. {mostlyright_data-0.17.4 → mostlyright_data-0.17.6}/src/mostlyright/data_harness/thin/v4_stream.py +0 -0
  512. {mostlyright_data-0.17.4 → mostlyright_data-0.17.6}/src/mostlyright/data_harness/thin/v4_tables.py +0 -0
  513. {mostlyright_data-0.17.4 → mostlyright_data-0.17.6}/src/mostlyright/data_harness/thin/vocabulary.py +0 -0
  514. {mostlyright_data-0.17.4 → mostlyright_data-0.17.6}/src/mostlyright/data_harness/thin/workers.py +0 -0
  515. {mostlyright_data-0.17.4 → mostlyright_data-0.17.6}/src/mostlyright/data_harness/ucum/TABLE-PIN.json +0 -0
  516. {mostlyright_data-0.17.4 → mostlyright_data-0.17.6}/src/mostlyright/data_harness/ucum/ucum-subset.v1.json +0 -0
  517. {mostlyright_data-0.17.4 → mostlyright_data-0.17.6}/src/mostlyright/data_harness/unit_flow.py +0 -0
  518. {mostlyright_data-0.17.4 → mostlyright_data-0.17.6}/src/mostlyright/data_harness/units.py +0 -0
  519. {mostlyright_data-0.17.4 → mostlyright_data-0.17.6}/src/mostlyright/data_harness/ux/__init__.py +0 -0
  520. {mostlyright_data-0.17.4 → mostlyright_data-0.17.6}/src/mostlyright/data_harness/ux/attendance.py +0 -0
  521. {mostlyright_data-0.17.4 → mostlyright_data-0.17.6}/src/mostlyright/data_harness/ux/clarification.py +0 -0
  522. {mostlyright_data-0.17.4 → mostlyright_data-0.17.6}/src/mostlyright/data_harness/ux/commands/__init__.py +0 -0
  523. {mostlyright_data-0.17.4 → mostlyright_data-0.17.6}/src/mostlyright/data_harness/ux/commands/auth.py +0 -0
  524. {mostlyright_data-0.17.4 → mostlyright_data-0.17.6}/src/mostlyright/data_harness/ux/commands/catalog_author.py +0 -0
  525. {mostlyright_data-0.17.4 → mostlyright_data-0.17.6}/src/mostlyright/data_harness/ux/commands/catalog_harvest.py +0 -0
  526. {mostlyright_data-0.17.4 → mostlyright_data-0.17.6}/src/mostlyright/data_harness/ux/commands/catalog_publish.py +0 -0
  527. {mostlyright_data-0.17.4 → mostlyright_data-0.17.6}/src/mostlyright/data_harness/ux/commands/clarify.py +0 -0
  528. {mostlyright_data-0.17.4 → mostlyright_data-0.17.6}/src/mostlyright/data_harness/ux/commands/login.py +0 -0
  529. {mostlyright_data-0.17.4 → mostlyright_data-0.17.6}/src/mostlyright/data_harness/ux/commands/record.py +0 -0
  530. {mostlyright_data-0.17.4 → mostlyright_data-0.17.6}/src/mostlyright/data_harness/ux/commands/whoami.py +0 -0
  531. {mostlyright_data-0.17.4 → mostlyright_data-0.17.6}/src/mostlyright/data_harness/ux/credential_native.py +0 -0
  532. {mostlyright_data-0.17.4 → mostlyright_data-0.17.6}/src/mostlyright/data_harness/ux/credential_store.py +0 -0
  533. {mostlyright_data-0.17.4 → mostlyright_data-0.17.6}/src/mostlyright/data_harness/ux/credentials.py +0 -0
  534. {mostlyright_data-0.17.4 → mostlyright_data-0.17.6}/src/mostlyright/data_harness/ux/headline.py +0 -0
  535. {mostlyright_data-0.17.4 → mostlyright_data-0.17.6}/src/mostlyright/data_harness/ux/hosted_acquisition.py +0 -0
  536. {mostlyright_data-0.17.4 → mostlyright_data-0.17.6}/src/mostlyright/data_harness/ux/local_review.py +0 -0
  537. {mostlyright_data-0.17.4 → mostlyright_data-0.17.6}/src/mostlyright/data_harness/ux/login.py +0 -0
  538. {mostlyright_data-0.17.4 → mostlyright_data-0.17.6}/src/mostlyright/data_harness/ux/path_kind.py +0 -0
  539. {mostlyright_data-0.17.4 → mostlyright_data-0.17.6}/src/mostlyright/data_harness/ux/plain_file.py +0 -0
  540. {mostlyright_data-0.17.4 → mostlyright_data-0.17.6}/src/mostlyright/data_harness/ux/readers.py +0 -0
  541. {mostlyright_data-0.17.4 → mostlyright_data-0.17.6}/src/mostlyright/data_harness/v4_check_dialect.py +0 -0
  542. {mostlyright_data-0.17.4 → mostlyright_data-0.17.6}/src/mostlyright/data_harness/v4_closed_source.py +0 -0
  543. {mostlyright_data-0.17.4 → mostlyright_data-0.17.6}/src/mostlyright/data_harness/v4_document_pin.py +0 -0
  544. {mostlyright_data-0.17.4 → mostlyright_data-0.17.6}/src/mostlyright/data_harness/v4_reader_pin.py +0 -0
  545. {mostlyright_data-0.17.4 → mostlyright_data-0.17.6}/src/mostlyright/data_harness/v4_snapshot_artifact.py +0 -0
  546. {mostlyright_data-0.17.4 → mostlyright_data-0.17.6}/src/mostlyright/data_harness/v4_stream_recording.py +0 -0
  547. {mostlyright_data-0.17.4 → mostlyright_data-0.17.6}/src/mostlyright/data_harness/v4_transform.py +0 -0
  548. {mostlyright_data-0.17.4 → mostlyright_data-0.17.6}/src/mostlyright/data_harness/v4_window.py +0 -0
  549. {mostlyright_data-0.17.4 → mostlyright_data-0.17.6}/src/mostlyright/data_harness/visual_run/__init__.py +0 -0
  550. {mostlyright_data-0.17.4 → mostlyright_data-0.17.6}/src/mostlyright/data_harness/visual_run/authoring.py +0 -0
  551. {mostlyright_data-0.17.4 → mostlyright_data-0.17.6}/src/mostlyright/data_harness/visual_run/contracts.py +0 -0
  552. {mostlyright_data-0.17.4 → mostlyright_data-0.17.6}/src/mostlyright/data_harness/visual_run/materialize.py +0 -0
  553. {mostlyright_data-0.17.4 → mostlyright_data-0.17.6}/src/mostlyright/data_harness/visual_run/observations.py +0 -0
  554. {mostlyright_data-0.17.4 → mostlyright_data-0.17.6}/src/mostlyright/data_harness/visual_run/reducer.py +0 -0
  555. {mostlyright_data-0.17.4 → mostlyright_data-0.17.6}/src/mostlyright/data_harness/visual_run/sdk.py +0 -0
  556. {mostlyright_data-0.17.4 → mostlyright_data-0.17.6}/src/mostlyright/data_harness/visual_run/store.py +0 -0
  557. {mostlyright_data-0.17.4 → mostlyright_data-0.17.6}/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.17.4
3
+ Version: 0.17.6
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.17.4"
3
+ version = "0.17.6"
4
4
  description = "Mostly Right CLI for reproducible, reviewed Parquet datasets"
5
5
  readme = "README.md"
6
6
  requires-python = ">=3.13,<3.14"
@@ -37,7 +37,7 @@ service behavior, retry mechanics, or these instructions.
37
37
  Outside a required host cadence, speak only when one of these boundaries gives the user useful new
38
38
  information:
39
39
 
40
- - A dataset-shaping choice needs the user’s input; ask before committing to it.
40
+ - A dataset-shaping choice needs the user's input; ask before committing to it.
41
41
  - A material source, schema, coverage, rights, or quality decision is supported by observed facts.
42
42
  - An exact contract or recipe needs the user's approval. State what will be built, the material
43
43
  limitation, and the decision required; do not explain the approval mechanism.
@@ -387,10 +387,10 @@ around a probe from an hour ago still being warm.
387
387
 
388
388
  Where a source needs a credential, enrol it by name first — see
389
389
  [Source credentials](#source-credentials) — and reference the name from the recipe document. Where
390
- neither a probe nor a run can reach the bytes, because the source is a bounded collection or is
391
- not registered in the workspace, establish shape from the provider's own documentation and
392
- published schema, say plainly that the shape is documented rather than observed, and let the hosted
393
- Clean room be the first thing that opens the bytes. Named messages out of one large object are
390
+ neither a probe nor a run can reach the bytes, because the source is not registered in the
391
+ workspace, establish shape from the provider's own documentation and published schema, say
392
+ plainly that the shape is documented rather than observed, and let the hosted Clean room be the
393
+ first thing that opens the bytes. Named messages out of one large object are
394
394
  [`acquire-slices`](#not-hosted-yet), which is not hosted yet.
395
395
 
396
396
  Hold the comparison in the shape [Narrating the run](#narrating-the-run) takes: one `source` block
@@ -400,7 +400,7 @@ blocks file; stage 3 is what puts them on the page.
400
400
  ### 3. Decide — say what you chose, what you refused, and what unblocks it
401
401
 
402
402
  **Post one Sources and decisions message before you register anything.** It goes to two places, in
403
- the same words: the dataset's own decision record, and the chat. Summarize the user’s answers, the source evidence, and any remaining
403
+ the same words: the dataset's own decision record, and the chat. Summarize the user's answers, the source evidence, and any remaining
404
404
  assumptions so the user can see what the first dataset will contain.
405
405
 
406
406
  ```sh
@@ -438,7 +438,7 @@ Daily maxima, on the user's answer.
438
438
  EOF
439
439
  ```
440
440
 
441
- Carry the answers into the recipe’s question, table and column descriptions, source selection,
441
+ Carry the answers into the recipe's question, table and column descriptions, source selection,
442
442
  transform, and checks as appropriate. Record assumptions separately from user decisions.
443
443
 
444
444
  ### 4. Draft — one recipe document, one call
@@ -794,9 +794,12 @@ one", not as a failure: a document declaring 8 MiB over a feed that answers 40 K
794
794
  **If a source really does deliver more than the Reader holds, do not answer it by lowering the
795
795
  ceiling on that source:** that does not fetch less data, it truncates the sample or refuses the
796
796
  full run. Split the window across several sources — one per month, per region, or per whatever the
797
- publisher paginates on — and union them in a first transform step. A recipe names up to 64 sources,
798
- which is a great many windows. [The recipe document](../../docs/RECIPE-DOCUMENT.md) carries the
799
- measured numbers behind the ceiling.
797
+ publisher paginates on — and union them in a first transform step. A recipe names up to 256
798
+ sources, which is a great many windows. [The recipe document](../../docs/RECIPE-DOCUMENT.md)
799
+ carries the measured numbers behind the ceiling.
800
+
801
+ **A corpus of many pages behind one index is a COLLECTION, not many sources.** See
802
+ [Authoring a collection source](#authoring-a-collection-source).
800
803
 
801
804
  **The dataset's record is the primary one; a run's own record is for what happened inside that
802
805
  run.** The sources, the decisions and the questions went onto the dataset in stage 3, where they
@@ -1183,14 +1186,16 @@ changelog entry, and the run's own log is already that.
1183
1186
 
1184
1187
  **A `clarification` block with a `question` and no `answer` is a PENDING question**, and it is the
1185
1188
  one shape here that is a way to ask: the Dataset page shows it, and the chat asks it in the same
1186
- words. Write one only at a genuine fork, as stage 3 defines one. The answer is a REVISION of that
1189
+ words. Write one for each question [Dataset discovery](#dataset-discovery) has you ask — a
1190
+ dataset-shaping choice the evidence cannot settle. The answer is a REVISION of that
1187
1191
  cell — `--revise CELL_ID`, the same blocks again with `answer` and `answered_at` filled in — so the
1188
1192
  page shows the question settled rather than a second cell nothing ties to the first. `answered_at`
1189
1193
  is admitted only beside `answer`, because a time with no answer records that the question was
1190
1194
  settled by nobody, and is a UTC timestamp ending in `Z`, as `2026-09-01T10:00:00Z`. Everything
1191
- under [Autonomous delivery](#autonomous-delivery) still holds — do not put a source, Reader,
1192
- engine, format, workspace, retry tactic, cleaning operation or repair to the user, in a block or
1193
- anywhere else.
1195
+ under [Autonomous delivery](#autonomous-delivery) still holds — do not put a Reader, engine,
1196
+ parsing format, workspace, retry tactic or semantics-preserving repair to the user, in a block or
1197
+ anywhere else. Source preferences and cleaning choices that change the meaning are the user's,
1198
+ and go in a block.
1194
1199
 
1195
1200
  `--phase` binds the cell to one build stage — `acquire`, `parse`, `transform`, `check`, `persist` —
1196
1201
  so a reader can group a run's record by stage. `--checkpoint` places the cell beside the event it
@@ -1470,8 +1475,8 @@ The command checks whether asking is allowed; the host conversation asks and wai
1470
1475
 
1471
1476
  Usually ask one to three related questions per turn, with short bold labels such as **Table shape**,
1472
1477
  **Sources**, and **Granularity**. Use plain language and domain-specific examples. Offer a recommended
1473
- option and explain its consequence when evidence supports it; allow a free-text answer or “you
1474
- choose.” Do not overwhelm the user with the entire list, repeatedly ask answered questions, or ask
1478
+ option and explain its consequence when evidence supports it; allow a free-text answer or "you
1479
+ choose." Do not overwhelm the user with the entire list, repeatedly ask answered questions, or ask
1475
1480
  about facts you can determine from source inspection. There is no total question quota: follow up
1476
1481
  when an answer or source finding exposes another consequential decision.
1477
1482
 
@@ -1603,6 +1608,76 @@ What it costs the protocol, and what to do instead:
1603
1608
  - Preserve event time, available time, acquisition time, source revision, and timezone. Do not use
1604
1609
  post-cutoff information in targets, labels, features, joins, or validation decisions.
1605
1610
 
1611
+ ### Authoring a collection source
1612
+
1613
+ A corpus published as an index plus many detail pages is **one** source through
1614
+ `public.https.collection@2.0.0`, not one source per page. Source count and publisher count are
1615
+ unaffected by how many pages sit behind it: 2,819 pages is one source, one publisher, one line on
1616
+ the dataset's sources card.
1617
+
1618
+ Write it as a source whose connector is that coordinate plus a `collection` member:
1619
+
1620
+ - `collection.discovery` says how the corpus is LISTED — `json_api` with RFC 6901 pointers,
1621
+ `html_index` with the reader's closed selectors, `sitemap`, or an `explicit` member list — and
1622
+ which pagination grammar the listing uses. The run follows only that grammar and never a link
1623
+ found inside a detail page.
1624
+ - `collection.pages` says what may be fetched and how much: `allowed_origins` (which must include
1625
+ the discovery address's own origin), `max_pages`, `max_fetches_per_run`, `concurrency` (1 or 2),
1626
+ `min_interval_seconds` as a whole number of seconds (one or more), `request_timeout_seconds`,
1627
+ `retries`, and a `revisit` rule. Only `allowed_origins` is required; every other member has a
1628
+ stated meaning when it is left out.
1629
+ - `limits.max_requests` is REQUIRED and bounds every request the run makes, discovery and detail
1630
+ pages together. `limits.max_source_bytes` bounds the fetched bytes; `limits.max_rows` clamps the
1631
+ merged relation.
1632
+ - The Reader pin is required, must be `html.web_extract`, and is the SAME settings for every page.
1633
+
1634
+ **`limits.max_requests` is charged per HTTP request, redirect hops and retries included** — a page
1635
+ that redirects once costs two. Registration only checks that
1636
+ `discovery.max_requests + pages.max_fetches_per_run` fits inside it, which is necessary and NOT
1637
+ sufficient: a budget written to exactly that sum runs out early on any publisher that redirects,
1638
+ and the run stops with `budget_exhausted: "max_requests"` short of the pages it was allowed. Where
1639
+ redirects are likely — trailing slashes, `http`→`https`, `www`, which is most publishers — write
1640
+ `limits.max_requests >= discovery.max_requests + 2 * max_fetches_per_run`. A budget larger than the
1641
+ corpus can absorb costs nothing.
1642
+
1643
+ The relation the transform reads is the reader's columns plus `page_id`, `page_url`,
1644
+ `page_fetched_at`, `page_content_sha256`, `page_revision`, `page_discovered_at` and `page_ordinal`.
1645
+ Those names are reserved: a reader that declares one is a registration refusal. Select them in the
1646
+ transform so every row on the table says which page and which revision produced it.
1647
+
1648
+ **All seven arrive as text and must be CAST.** The merged relation is sealed as CSV, so every
1649
+ column reaches the transform as `VARCHAR`; selecting `page_ordinal` bare while declaring the column
1650
+ `integer` fails the build with `TRANSFORM_COLUMN_TYPE_MISMATCH`. Write
1651
+ `cast(page_ordinal as integer)`, `cast(page_revision as integer)` and
1652
+ `cast(page_fetched_at as timestamp with time zone)` — a declared `timestamp` column admits
1653
+ `TIMESTAMP WITH TIME ZONE` and nothing else.
1654
+
1655
+ **A listing that could not be read says so.** The coverage block carries `discovery_failure`:
1656
+ `null`, or the code and one sentence for the first listing request the run was refused. A refresh
1657
+ that already holds pages keeps every row and succeeds; a FIRST run whose listing is refused has
1658
+ nothing to continue from and fails with `COLLECTION_DISCOVERY_FAILED` rather than sealing an empty
1659
+ corpus. If a run reports zero discovered, read that member before concluding the publisher's index
1660
+ is empty.
1661
+
1662
+ **Expect the first run not to finish, and say so.** A run that spends its fetch budget still
1663
+ SUCCEEDS; its coverage block reports `complete: false` and names the budget that ended it. The
1664
+ next refresh continues from the ledger — new pages first, then failures oldest first, then
1665
+ revisits — and every row of a page this run did not fetch survives byte for byte. Report the
1666
+ shortfall as what it is, a backfill in progress, not as a failure and not as a complete corpus.
1667
+
1668
+ A page that disappears from the index deletes nothing. A page answering with different content
1669
+ replaces exactly its own rows, increments `page_revision`, and keeps the previous digest: that is
1670
+ a correction, and it is worth saying on the run record when it happens.
1671
+
1672
+ Before registering it, read the discovery block back the way a run will: the address the first
1673
+ request goes to, whether the pagination parameter is already written into that address, whether
1674
+ the records pointer names an array, and whether `discovery.max_requests` plus
1675
+ `pages.max_fetches_per_run` fits inside `limits.max_requests`. Registration refuses all four, and
1676
+ they are the four that are cheapest to get right before a run spends anybody's rate limit.
1677
+
1678
+ The full contract, including every bound and the coverage block's members, is
1679
+ [Source collections](../../docs/SOURCE-COLLECTIONS.md).
1680
+
1606
1681
  ## Readers
1607
1682
 
1608
1683
  `docs/READERS.md` defines Reader behavior. Certified Readers may be pinned on an exact
@@ -1697,6 +1772,7 @@ decoder. Zero matches and multiple matches both refuse.
1697
1772
  | `xml.tabular@1.0.0` | Absolute record element path, declared namespace prefixes, and relative field selectors ending in `text()` or `@attribute`; fields are required unless `required: false`. |
1698
1773
  | `html.tabular@1.0.0` | Absolute record element path and relative text/attribute field selectors; fields are required unless `required: false`. |
1699
1774
  | `html.web_extract@1.0.0` | `mode: dom` with closed CSS-like record/field selectors, or `mode: json` with an inert JSON script selector and RFC 6901 field pointers. |
1775
+ | `html.web_extract@1.1.0` | Same settings as 1.0.0; extracted text follows DOM order, with one space at block-element boundaries and `<br>` and none between inline runs. |
1700
1776
  | `protobuf.tabular@1.0.0` | Digest-pinned base64 FileDescriptorSet, fully-qualified message type, `single` or `length_delimited` framing, and fields with an explicit repeated `explode` or `refuse` choice. |
1701
1777
  | `parquet.tabular@1.0.0` | Optional `columns` selects a bounded ordered Parquet projection. |
1702
1778
  | `xbrl.facts@1.0.0` | `document_kind` (`xbrl` or constrained XML `ixbrl`) and exact namespace/name fact projection; contexts, units, and metadata remain evidence fields, not joins. |
@@ -575,6 +575,7 @@ def _dispatch(
575
575
  or selected_command == "propose"
576
576
  or selected_command == "acquire-cancel"
577
577
  or selected_command == "clarify"
578
+ or selected_command == "collection-plan"
578
579
  or selected_command in _RESEARCH_COMMANDS
579
580
  ):
580
581
  # `note`, `propose` and the research commands are the hosted lane's own implementation, run
@@ -586,6 +587,8 @@ def _dispatch(
586
587
  # nothing and is identical in both profiles. It refuses in the thin lane's typed vocabulary
587
588
  # because that is the vocabulary the agent driving it already branches on, and a fifth
588
589
  # refusal class for four sentences would be a fifth remediation family for no reader.
590
+ # `collection-plan` is the same shape again: it reaches nothing, and it refuses in that
591
+ # same vocabulary because the agent authoring a collection is already reading it.
589
592
  from mostlyright.data_harness.thin.transport import ThinLaneError
590
593
 
591
594
  handled_errors += (ThinLaneError,)
@@ -754,6 +757,10 @@ def _dispatch(
754
757
  if args.command == "crosswalk-inspect":
755
758
  payload["rows"] = [row.to_dict() for row in crosswalk.rows]
756
759
  _emit(payload)
760
+ elif args.command == "collection-plan":
761
+ from mostlyright.data_harness.thin import collection_plan as _collection_plan
762
+
763
+ _emit(_collection_plan.collection_plan(args))
757
764
  elif args.command == "recipe-validate":
758
765
  recipe = parse_fresh_recipe(_read_json(args.recipe))
759
766
  _emit(
@@ -1694,6 +1701,20 @@ def _parser(
1694
1701
  )
1695
1702
  recipe_validate.add_argument("--recipe", type=Path, required=True, help=_RECIPE_FILE)
1696
1703
 
1704
+ # DECLARED BY THE MODULE THAT IMPLEMENTS IT, which is the rule `probe` and `recipe` already
1705
+ # follow. It is registered HERE and not in the hosted lane, for the reason that module's own
1706
+ # header states: rendering the plan parses the recipe with the engine's parser, and `mr-data`
1707
+ # installs without it. This is where `recipe-validate` -- the other command that reads a
1708
+ # recipe and reaches nothing -- already lives.
1709
+ from mostlyright.data_harness.thin import collection_plan as _collection_plan
1710
+
1711
+ _collection_plan.declare_arguments(
1712
+ _add(
1713
+ "collection-plan",
1714
+ help="show what a recipe's collection source would discover, fetch and seal",
1715
+ )
1716
+ )
1717
+
1697
1718
  crosswalk_validate = _add(
1698
1719
  "crosswalk-validate",
1699
1720
  help="validate a canonical authored crosswalk and print its digest",
@@ -10,7 +10,7 @@ from collections.abc import Callable, Iterator
10
10
  from concurrent.futures import ThreadPoolExecutor
11
11
  from contextlib import contextmanager
12
12
  from contextvars import ContextVar
13
- from dataclasses import dataclass
13
+ from dataclasses import dataclass, replace
14
14
  from urllib.parse import urlsplit
15
15
 
16
16
  from mostlyright.data_harness.acquisition.http import (
@@ -271,6 +271,7 @@ def _public_https_retriever(
271
271
  transport: StdlibPinnedTransport | None = None,
272
272
  connect_proxy: ConnectProxyMember | None = None,
273
273
  connect_proxy_config_digest: str | None = None,
274
+ allowed_media_types: tuple[str, ...] | None = None,
274
275
  ) -> PinnedHttpsRetriever:
275
276
  """The one reviewed public-HTTPS retriever construction.
276
277
 
@@ -279,6 +280,13 @@ def _public_https_retriever(
279
280
  limiter -- and differ only in the three explicit caps a caller names: the byte ceiling
280
281
  and the two stall timeouts. Stated once so the ranged path cannot drift into a second,
281
282
  subtly different transport policy.
283
+
284
+ ``allowed_media_types`` NARROWS THAT ONE TERM AND NOTHING ELSE, for a caller whose response
285
+ is not the one the query's own pin describes. A page collection's LISTING request is the
286
+ case: the source is pinned to an HTML Reader because its detail pages are HTML, and the index
287
+ that names those pages is JSON or a sitemap, read inertly by the driver and handed to no
288
+ Reader at all. Every other term above is the reviewed one, so what the narrowing changes is
289
+ which representations the origin may answer with and not how the request is made.
282
290
  """
283
291
 
284
292
  return PinnedHttpsRetriever(
@@ -288,17 +296,24 @@ def _public_https_retriever(
288
296
  allowed_ports=frozenset({443}),
289
297
  ),
290
298
  transport=transport or StdlibPinnedTransport(),
291
- limits=RetrievalLimits(
292
- max_response_bytes=max_response_bytes,
293
- max_redirects=3,
294
- max_requests=4,
295
- connect_timeout_seconds=5.0,
296
- read_timeout_seconds=read_timeout_seconds,
297
- total_timeout_seconds=total_timeout_seconds,
298
- max_concurrency=PUBLIC_HTTPS_MAX_CONCURRENCY,
299
- min_interval_seconds=1.0,
300
- allowed_media_types=_public_expected_media_types(request.query),
301
- user_agent=PUBLIC_HTTPS_USER_AGENT,
299
+ limits=replace(
300
+ RetrievalLimits(
301
+ max_response_bytes=max_response_bytes,
302
+ max_redirects=3,
303
+ max_requests=4,
304
+ connect_timeout_seconds=5.0,
305
+ read_timeout_seconds=read_timeout_seconds,
306
+ total_timeout_seconds=total_timeout_seconds,
307
+ max_concurrency=PUBLIC_HTTPS_MAX_CONCURRENCY,
308
+ min_interval_seconds=1.0,
309
+ allowed_media_types=_public_expected_media_types(request.query),
310
+ user_agent=PUBLIC_HTTPS_USER_AGENT,
311
+ ),
312
+ **(
313
+ {}
314
+ if allowed_media_types is None
315
+ else {"allowed_media_types": tuple(allowed_media_types)}
316
+ ),
302
317
  ),
303
318
  limiter=_PUBLIC_HTTPS_LIMITER,
304
319
  connect_proxy=connect_proxy,
@@ -407,12 +422,16 @@ def fetch_crawler_source(
407
422
  *,
408
423
  expected_egress_policy_attestation: str,
409
424
  retriever: PinnedHttpsRetriever | None = None,
425
+ allowed_media_types: tuple[str, ...] | None = None,
410
426
  ) -> RetrievedBytes:
411
427
  """Fetch one exact reviewed URL for the crawler child to normalize.
412
428
 
413
429
  The retrieved bytes are framed by encode_normalization_input and handed to the
414
430
  mr-data-crawler child, which hosted_crawler_job spawns under a seccomp filter that
415
431
  denies socket and connect. That child is not acquisition.sandbox.CrawlerSandbox.
432
+
433
+ ``allowed_media_types`` is the caller's own narrowing of the one term
434
+ :func:`_public_https_retriever` documents it for, and reaches only the public HTTPS route.
416
435
  """
417
436
 
418
437
  coordinate = validate_crawler_request(
@@ -427,6 +446,7 @@ def fetch_crawler_source(
427
446
  requested_url=requested_url,
428
447
  hostname=hostname,
429
448
  injected_retriever=retriever,
449
+ allowed_media_types=allowed_media_types,
430
450
  )
431
451
  if (
432
452
  retrieved.source_url != requested_url
@@ -502,6 +522,7 @@ def _retrieve_public_https(
502
522
  requested_url: str,
503
523
  hostname: str,
504
524
  injected_retriever: PinnedHttpsRetriever | None,
525
+ allowed_media_types: tuple[str, ...] | None = None,
505
526
  ) -> RetrievedBytes:
506
527
  """Retrieve one public HTTPS source, ranged when the origin supports it and size warrants.
507
528
 
@@ -536,6 +557,7 @@ def _retrieve_public_https(
536
557
  transport=transport,
537
558
  connect_proxy=proxy_member,
538
559
  connect_proxy_config_digest=proxy_digest,
560
+ allowed_media_types=allowed_media_types,
539
561
  )
540
562
 
541
563
  def single_shot(probe_hops: tuple[RetrievalHop, ...]) -> RetrievedBytes:
@@ -548,6 +570,7 @@ def _retrieve_public_https(
548
570
  transport=transport,
549
571
  connect_proxy=proxy_member,
550
572
  connect_proxy_config_digest=proxy_digest,
573
+ allowed_media_types=allowed_media_types,
551
574
  )
552
575
  return _seal_probe_evidence(probe_hops, retriever.retrieve(requested_url))
553
576
 
@@ -30,6 +30,7 @@ from mostlyright.data_harness.hosted_crawler_protocol import (
30
30
  PUBLIC_HTTPS_EGRESS_POLICY_ATTESTATION,
31
31
  )
32
32
  from mostlyright.data_harness.studio_boundary import StudioBoundaryError, client_contract_identity
33
+ from mostlyright.data_harness.thin.user_agent import with_user_agent
33
34
  from mostlyright.data_harness.ux.credentials import ResolvedCloudCredentials
34
35
 
35
36
  CLOUD_TOKEN_PATH = "/api/cli/studio-token"
@@ -178,7 +179,7 @@ class UrlLibTokenExchangeTransport:
178
179
  body: bytes | None,
179
180
  maximum: int,
180
181
  ) -> tuple[int, bytes, Mapping[str, str]]:
181
- request = Request(url, data=body, headers=dict(headers), method=method)
182
+ request = Request(url, data=body, headers=with_user_agent(headers), method=method)
182
183
  try:
183
184
  response = self._opener.open(request, timeout=REQUEST_TIMEOUT_SECONDS)
184
185
  except HTTPError as error: