mostlyright-data 0.29.11__tar.gz → 0.30.0__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {mostlyright_data-0.29.11 → mostlyright_data-0.30.0}/PKG-INFO +8 -1
- {mostlyright_data-0.29.11 → mostlyright_data-0.30.0}/README.md +4 -0
- {mostlyright_data-0.29.11 → mostlyright_data-0.30.0}/pyproject.toml +32 -2
- {mostlyright_data-0.29.11 → mostlyright_data-0.30.0}/skills/mr-data-build/SKILL.md +22 -14
- {mostlyright_data-0.29.11 → mostlyright_data-0.30.0}/skills/mr-data-build/references/2-brief-two-to-four-questions-each-with-a-recommended-answer.md +17 -2
- {mostlyright_data-0.29.11 → mostlyright_data-0.30.0}/skills/mr-data-build/references/6-build-one-run-sized-to-acquire-every-measured-source-whole.md +12 -0
- {mostlyright_data-0.29.11 → mostlyright_data-0.30.0}/skills/mr-data-build/references/7-interrogate-ask-the-run-what-it-actually-delivered.md +30 -1
- {mostlyright_data-0.29.11 → mostlyright_data-0.30.0}/skills/mr-data-build/references/9-present-only-what-survived-inspection-with-caveats.md +18 -13
- {mostlyright_data-0.29.11 → mostlyright_data-0.30.0}/skills/mr-data-build/references/commands.md +16 -9
- {mostlyright_data-0.29.11 → mostlyright_data-0.30.0}/skills/mr-data-build/references/live-run.md +3 -2
- mostlyright_data-0.30.0/skills/mr-data-build/references/patterns.md +943 -0
- mostlyright_data-0.30.0/skills/mr-data-build/references/preparing-table-search.md +358 -0
- mostlyright_data-0.30.0/skills/mr-data-build/references/recipe-test.md +119 -0
- {mostlyright_data-0.29.11 → mostlyright_data-0.30.0}/src/mostlyright/data_harness/agent_protocol.py +4 -0
- mostlyright_data-0.30.0/src/mostlyright/data_harness/thin/backoff.py +45 -0
- {mostlyright_data-0.29.11 → mostlyright_data-0.30.0}/src/mostlyright/data_harness/thin/fast_features.py +120 -3
- {mostlyright_data-0.29.11 → mostlyright_data-0.30.0}/src/mostlyright/data_harness/thin/recipe.py +114 -21
- {mostlyright_data-0.29.11 → mostlyright_data-0.30.0}/src/mostlyright/data_harness/thin/recipe_forecast.py +9 -8
- mostlyright_data-0.30.0/src/mostlyright/data_harness/thin/recipe_test.py +875 -0
- mostlyright_data-0.30.0/src/mostlyright/data_harness/thin/refresh_rehearsal.py +538 -0
- mostlyright_data-0.30.0/src/mostlyright/data_harness/thin/release_check.py +145 -0
- {mostlyright_data-0.29.11 → mostlyright_data-0.30.0}/src/mostlyright/data_harness/thin/research.py +17 -7
- {mostlyright_data-0.29.11 → mostlyright_data-0.30.0}/src/mostlyright/data_harness/thin/router.py +67 -5
- mostlyright_data-0.30.0/src/mostlyright/data_harness/thin/run_prefix.py +187 -0
- {mostlyright_data-0.29.11 → mostlyright_data-0.30.0}/src/mostlyright/data_harness/thin/runs.py +17 -1
- {mostlyright_data-0.29.11 → mostlyright_data-0.30.0}/src/mostlyright/data_harness/thin/session.py +194 -3
- {mostlyright_data-0.29.11 → mostlyright_data-0.30.0}/src/mostlyright/data_harness/thin/stream.py +67 -13
- mostlyright_data-0.30.0/src/mostlyright/data_harness/thin/support.py +283 -0
- mostlyright_data-0.30.0/src/mostlyright/data_harness/thin/table_search_contract.json +433 -0
- {mostlyright_data-0.29.11 → mostlyright_data-0.30.0}/src/mostlyright/data_harness/thin/transport.py +6 -2
- {mostlyright_data-0.29.11 → mostlyright_data-0.30.0}/src/mostlyright/data_harness/thin/v4.py +52 -2
- {mostlyright_data-0.29.11 → mostlyright_data-0.30.0}/src/mostlyright/data_harness/thin/v4_artifacts.py +671 -59
- {mostlyright_data-0.29.11 → mostlyright_data-0.30.0}/src/mostlyright/data_harness/thin/v4_datasets.py +29 -3
- {mostlyright_data-0.29.11 → mostlyright_data-0.30.0}/src/mostlyright/data_harness/thin/v4_public.py +9 -1
- {mostlyright_data-0.29.11 → mostlyright_data-0.30.0}/src/mostlyright/data_harness/thin/v4_query.py +470 -27
- {mostlyright_data-0.29.11 → mostlyright_data-0.30.0}/src/mostlyright/data_harness/thin/v4_runs.py +312 -41
- mostlyright_data-0.30.0/src/mostlyright/data_harness/thin/v4_search.py +1078 -0
- mostlyright_data-0.30.0/src/mostlyright/data_harness/thin/v4_search_contract.py +317 -0
- {mostlyright_data-0.29.11 → mostlyright_data-0.30.0}/src/mostlyright/data_harness/thin/v4_tables.py +54 -27
- {mostlyright_data-0.29.11 → mostlyright_data-0.30.0}/src/mostlyright/data_harness/thin/vocabulary.py +13 -0
- {mostlyright_data-0.29.11 → mostlyright_data-0.30.0}/src/mostlyright/data_harness/ux/remediation.py +42 -1
- {mostlyright_data-0.29.11 → mostlyright_data-0.30.0}/src/mostlyright/data_harness/ux/render.py +50 -0
- mostlyright_data-0.29.11/skills/mr-data-build/references/preparing-table-search.md +0 -169
- mostlyright_data-0.29.11/src/mostlyright/data_harness/thin/v4_search.py +0 -279
- {mostlyright_data-0.29.11 → mostlyright_data-0.30.0}/.gitignore +0 -0
- {mostlyright_data-0.29.11 → mostlyright_data-0.30.0}/scripts/hatch_build.py +0 -0
- {mostlyright_data-0.29.11 → mostlyright_data-0.30.0}/skills/mr-data-build/agents/openai.yaml +0 -0
- {mostlyright_data-0.29.11 → mostlyright_data-0.30.0}/skills/mr-data-build/references/1-open-the-page-and-the-link-to-it-in-the-first-message.md +0 -0
- {mostlyright_data-0.29.11 → mostlyright_data-0.30.0}/skills/mr-data-build/references/3-probe-read-a-source-before-committing-to-it.md +0 -0
- {mostlyright_data-0.29.11 → mostlyright_data-0.30.0}/skills/mr-data-build/references/4-decide-say-what-you-chose-what-you-refused-and-ask-one-question.md +0 -0
- {mostlyright_data-0.29.11 → mostlyright_data-0.30.0}/skills/mr-data-build/references/5-draft-one-recipe-document-one-call.md +0 -0
- {mostlyright_data-0.29.11 → mostlyright_data-0.30.0}/skills/mr-data-build/references/8-fix-revise-the-document-and-register-it-again.md +0 -0
- {mostlyright_data-0.29.11 → mostlyright_data-0.30.0}/skills/mr-data-build/references/agent-protocol.md +0 -0
- {mostlyright_data-0.29.11 → mostlyright_data-0.30.0}/skills/mr-data-build/references/autonomous-delivery.md +0 -0
- {mostlyright_data-0.29.11 → mostlyright_data-0.30.0}/skills/mr-data-build/references/before-the-first-tool-call.md +0 -0
- {mostlyright_data-0.29.11 → mostlyright_data-0.30.0}/skills/mr-data-build/references/boundaries.md +0 -0
- {mostlyright_data-0.29.11 → mostlyright_data-0.30.0}/skills/mr-data-build/references/cloud-authentication-preflight.md +0 -0
- {mostlyright_data-0.29.11 → mostlyright_data-0.30.0}/skills/mr-data-build/references/cross-repository-protocol-reference.md +0 -0
- {mostlyright_data-0.29.11 → mostlyright_data-0.30.0}/skills/mr-data-build/references/installation-parity.md +0 -0
- {mostlyright_data-0.29.11 → mostlyright_data-0.30.0}/skills/mr-data-build/references/making-a-table-incremental.md +0 -0
- {mostlyright_data-0.29.11 → mostlyright_data-0.30.0}/skills/mr-data-build/references/narrating-the-run.md +0 -0
- {mostlyright_data-0.29.11 → mostlyright_data-0.30.0}/skills/mr-data-build/references/not-hosted-yet.md +0 -0
- {mostlyright_data-0.29.11 → mostlyright_data-0.30.0}/skills/mr-data-build/references/one-install.md +0 -0
- {mostlyright_data-0.29.11 → mostlyright_data-0.30.0}/skills/mr-data-build/references/prediction-labels.md +0 -0
- {mostlyright_data-0.29.11 → mostlyright_data-0.30.0}/skills/mr-data-build/references/promote.md +0 -0
- {mostlyright_data-0.29.11 → mostlyright_data-0.30.0}/skills/mr-data-build/references/readers.md +0 -0
- {mostlyright_data-0.29.11 → mostlyright_data-0.30.0}/skills/mr-data-build/references/receipts.md +0 -0
- {mostlyright_data-0.29.11 → mostlyright_data-0.30.0}/skills/mr-data-build/references/recording-a-stream-venue.md +0 -0
- {mostlyright_data-0.29.11 → mostlyright_data-0.30.0}/skills/mr-data-build/references/recovering-an-import-failure.md +0 -0
- {mostlyright_data-0.29.11 → mostlyright_data-0.30.0}/skills/mr-data-build/references/reference-pages.md +0 -0
- {mostlyright_data-0.29.11 → mostlyright_data-0.30.0}/skills/mr-data-build/references/required-protocol.md +0 -0
- {mostlyright_data-0.29.11 → mostlyright_data-0.30.0}/skills/mr-data-build/references/source-credentials.md +0 -0
- {mostlyright_data-0.29.11 → mostlyright_data-0.30.0}/skills/mr-data-build/references/sources.md +0 -0
- {mostlyright_data-0.29.11 → mostlyright_data-0.30.0}/skills/mr-data-build/references/the-one-thing-to-say-about-the-skill-itself.md +0 -0
- {mostlyright_data-0.29.11 → mostlyright_data-0.30.0}/skills/mr-data-build/references/transforms.md +0 -0
- {mostlyright_data-0.29.11 → mostlyright_data-0.30.0}/skills/mr-data-build/references/user-communication-contract.md +0 -0
- {mostlyright_data-0.29.11 → mostlyright_data-0.30.0}/skills/mr-data-build/references/writing-a-decision-record.md +0 -0
- {mostlyright_data-0.29.11 → mostlyright_data-0.30.0}/skills/mr-data-build/scripts/write_research_notebook.py +0 -0
- {mostlyright_data-0.29.11 → mostlyright_data-0.30.0}/src/mostlyright/data_harness/__init__.py +0 -0
- {mostlyright_data-0.29.11 → mostlyright_data-0.30.0}/src/mostlyright/data_harness/canonical.py +0 -0
- {mostlyright_data-0.29.11 → mostlyright_data-0.30.0}/src/mostlyright/data_harness/formats.py +0 -0
- {mostlyright_data-0.29.11 → mostlyright_data-0.30.0}/src/mostlyright/data_harness/hosted_crawler_protocol.py +0 -0
- {mostlyright_data-0.29.11 → mostlyright_data-0.30.0}/src/mostlyright/data_harness/key_seam.py +0 -0
- {mostlyright_data-0.29.11 → mostlyright_data-0.30.0}/src/mostlyright/data_harness/page_coverage.py +0 -0
- {mostlyright_data-0.29.11 → mostlyright_data-0.30.0}/src/mostlyright/data_harness/part_check_evidence.py +0 -0
- {mostlyright_data-0.29.11 → mostlyright_data-0.30.0}/src/mostlyright/data_harness/session_probes.py +0 -0
- {mostlyright_data-0.29.11 → mostlyright_data-0.30.0}/src/mostlyright/data_harness/skill_assets.py +0 -0
- {mostlyright_data-0.29.11 → mostlyright_data-0.30.0}/src/mostlyright/data_harness/table_manifest.py +0 -0
- {mostlyright_data-0.29.11 → mostlyright_data-0.30.0}/src/mostlyright/data_harness/thin/__init__.py +0 -0
- {mostlyright_data-0.29.11 → mostlyright_data-0.30.0}/src/mostlyright/data_harness/thin/acquire.py +0 -0
- {mostlyright_data-0.29.11 → mostlyright_data-0.30.0}/src/mostlyright/data_harness/thin/acquire_cancel.py +0 -0
- {mostlyright_data-0.29.11 → mostlyright_data-0.30.0}/src/mostlyright/data_harness/thin/activity.py +0 -0
- {mostlyright_data-0.29.11 → mostlyright_data-0.30.0}/src/mostlyright/data_harness/thin/approvals.py +0 -0
- {mostlyright_data-0.29.11 → mostlyright_data-0.30.0}/src/mostlyright/data_harness/thin/categories.py +0 -0
- {mostlyright_data-0.29.11 → mostlyright_data-0.30.0}/src/mostlyright/data_harness/thin/commands.py +0 -0
- {mostlyright_data-0.29.11 → mostlyright_data-0.30.0}/src/mostlyright/data_harness/thin/dataset-categories-v1.json +0 -0
- {mostlyright_data-0.29.11 → mostlyright_data-0.30.0}/src/mostlyright/data_harness/thin/download.py +0 -0
- {mostlyright_data-0.29.11 → mostlyright_data-0.30.0}/src/mostlyright/data_harness/thin/narrative.py +0 -0
- {mostlyright_data-0.29.11 → mostlyright_data-0.30.0}/src/mostlyright/data_harness/thin/parity.py +0 -0
- {mostlyright_data-0.29.11 → mostlyright_data-0.30.0}/src/mostlyright/data_harness/thin/probe.py +0 -0
- {mostlyright_data-0.29.11 → mostlyright_data-0.30.0}/src/mostlyright/data_harness/thin/progress_rate.py +0 -0
- {mostlyright_data-0.29.11 → mostlyright_data-0.30.0}/src/mostlyright/data_harness/thin/progress_vocabulary.py +0 -0
- {mostlyright_data-0.29.11 → mostlyright_data-0.30.0}/src/mostlyright/data_harness/thin/propose.py +0 -0
- {mostlyright_data-0.29.11 → mostlyright_data-0.30.0}/src/mostlyright/data_harness/thin/recipe_brief.py +0 -0
- {mostlyright_data-0.29.11 → mostlyright_data-0.30.0}/src/mostlyright/data_harness/thin/recipe_explain.py +0 -0
- {mostlyright_data-0.29.11 → mostlyright_data-0.30.0}/src/mostlyright/data_harness/thin/recipe_lint.py +0 -0
- {mostlyright_data-0.29.11 → mostlyright_data-0.30.0}/src/mostlyright/data_harness/thin/run_diagnose.py +0 -0
- {mostlyright_data-0.29.11 → mostlyright_data-0.30.0}/src/mostlyright/data_harness/thin/stream_venue.py +0 -0
- {mostlyright_data-0.29.11 → mostlyright_data-0.30.0}/src/mostlyright/data_harness/thin/studio_capabilities.py +0 -0
- {mostlyright_data-0.29.11 → mostlyright_data-0.30.0}/src/mostlyright/data_harness/thin/user_agent.py +0 -0
- {mostlyright_data-0.29.11 → mostlyright_data-0.30.0}/src/mostlyright/data_harness/thin/v4_catalog.py +0 -0
- {mostlyright_data-0.29.11 → mostlyright_data-0.30.0}/src/mostlyright/data_harness/thin/v4_connected.py +0 -0
- {mostlyright_data-0.29.11 → mostlyright_data-0.30.0}/src/mostlyright/data_harness/thin/v4_connections.py +0 -0
- {mostlyright_data-0.29.11 → mostlyright_data-0.30.0}/src/mostlyright/data_harness/thin/v4_dataset_covers.py +0 -0
- {mostlyright_data-0.29.11 → mostlyright_data-0.30.0}/src/mostlyright/data_harness/thin/v4_handoff.py +0 -0
- {mostlyright_data-0.29.11 → mostlyright_data-0.30.0}/src/mostlyright/data_harness/thin/v4_narrative.py +0 -0
- {mostlyright_data-0.29.11 → mostlyright_data-0.30.0}/src/mostlyright/data_harness/thin/v4_reader.py +0 -0
- {mostlyright_data-0.29.11 → mostlyright_data-0.30.0}/src/mostlyright/data_harness/thin/v4_secrets.py +0 -0
- {mostlyright_data-0.29.11 → mostlyright_data-0.30.0}/src/mostlyright/data_harness/thin/v4_stream.py +0 -0
- {mostlyright_data-0.29.11 → mostlyright_data-0.30.0}/src/mostlyright/data_harness/ux/__init__.py +0 -0
- {mostlyright_data-0.29.11 → mostlyright_data-0.30.0}/src/mostlyright/data_harness/ux/attendance.py +0 -0
- {mostlyright_data-0.29.11 → mostlyright_data-0.30.0}/src/mostlyright/data_harness/ux/clarification.py +0 -0
- {mostlyright_data-0.29.11 → mostlyright_data-0.30.0}/src/mostlyright/data_harness/ux/cloud_auth.py +0 -0
- {mostlyright_data-0.29.11 → mostlyright_data-0.30.0}/src/mostlyright/data_harness/ux/commands/__init__.py +0 -0
- {mostlyright_data-0.29.11 → mostlyright_data-0.30.0}/src/mostlyright/data_harness/ux/commands/auth.py +0 -0
- {mostlyright_data-0.29.11 → mostlyright_data-0.30.0}/src/mostlyright/data_harness/ux/commands/clarify.py +0 -0
- {mostlyright_data-0.29.11 → mostlyright_data-0.30.0}/src/mostlyright/data_harness/ux/commands/login.py +0 -0
- {mostlyright_data-0.29.11 → mostlyright_data-0.30.0}/src/mostlyright/data_harness/ux/commands/whoami.py +0 -0
- {mostlyright_data-0.29.11 → mostlyright_data-0.30.0}/src/mostlyright/data_harness/ux/credential_native.py +0 -0
- {mostlyright_data-0.29.11 → mostlyright_data-0.30.0}/src/mostlyright/data_harness/ux/credential_store.py +0 -0
- {mostlyright_data-0.29.11 → mostlyright_data-0.30.0}/src/mostlyright/data_harness/ux/credentials.py +0 -0
- {mostlyright_data-0.29.11 → mostlyright_data-0.30.0}/src/mostlyright/data_harness/ux/login.py +0 -0
- {mostlyright_data-0.29.11 → mostlyright_data-0.30.0}/src/mostlyright/data_harness/ux/path_kind.py +0 -0
- {mostlyright_data-0.29.11 → mostlyright_data-0.30.0}/src/mostlyright/data_harness/ux/plain_file.py +0 -0
|
@@ -1,13 +1,16 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: mostlyright-data
|
|
3
|
-
Version: 0.
|
|
3
|
+
Version: 0.30.0
|
|
4
4
|
Summary: Mostly Right hosted CLI for reviewed datasets
|
|
5
5
|
Project-URL: Homepage, https://mostlyright.md/
|
|
6
6
|
Project-URL: Documentation, https://mostlyright.md/docs/guides/cli/
|
|
7
7
|
Requires-Python: >=3.11
|
|
8
8
|
Provides-Extra: build
|
|
9
|
+
Requires-Dist: hatch-vcs==0.5.0; extra == 'build'
|
|
9
10
|
Requires-Dist: hatchling==1.28.0; extra == 'build'
|
|
11
|
+
Requires-Dist: setuptools-scm==10.3.4; extra == 'build'
|
|
10
12
|
Requires-Dist: uv-build==0.11.3; extra == 'build'
|
|
13
|
+
Requires-Dist: vcs-versioning==2.6.0; extra == 'build'
|
|
11
14
|
Description-Content-Type: text/markdown
|
|
12
15
|
|
|
13
16
|
# mostlyright-data
|
|
@@ -39,6 +42,10 @@ places it in your agent's skill directory; there is nothing to install by hand.
|
|
|
39
42
|
edited yourself is never replaced, and `MOSTLYRIGHT_SKILL_AUTOINSTALL=0` switches the placement
|
|
40
43
|
off.
|
|
41
44
|
|
|
45
|
+
Once a day, after a command has printed its answer, `mr-data` asks the Python package index whether
|
|
46
|
+
a newer release is published and says so in one line on stderr. `MOSTLYRIGHT_RELEASE_CHECK=0`
|
|
47
|
+
switches that off.
|
|
48
|
+
|
|
42
49
|
## Sign in
|
|
43
50
|
|
|
44
51
|
```bash
|
|
@@ -27,6 +27,10 @@ places it in your agent's skill directory; there is nothing to install by hand.
|
|
|
27
27
|
edited yourself is never replaced, and `MOSTLYRIGHT_SKILL_AUTOINSTALL=0` switches the placement
|
|
28
28
|
off.
|
|
29
29
|
|
|
30
|
+
Once a day, after a command has printed its answer, `mr-data` asks the Python package index whether
|
|
31
|
+
a newer release is published and says so in one line on stderr. `MOSTLYRIGHT_RELEASE_CHECK=0`
|
|
32
|
+
switches that off.
|
|
33
|
+
|
|
30
34
|
## Sign in
|
|
31
35
|
|
|
32
36
|
```bash
|
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
[project]
|
|
2
2
|
name = "mostlyright-data"
|
|
3
|
-
version
|
|
3
|
+
# The release tag is the version. `hatch-vcs` reads it from git at build time, so a release is a
|
|
4
|
+
# `v*` tag push and no file states the number. See docs/RELEASING.md.
|
|
5
|
+
dynamic = ["version"]
|
|
4
6
|
description = "Mostly Right hosted CLI for reviewed datasets"
|
|
5
7
|
readme = "README.md"
|
|
6
8
|
requires-python = ">=3.11"
|
|
@@ -17,8 +19,11 @@ mr-data = "mostlyright.data_harness.thin.router:main"
|
|
|
17
19
|
|
|
18
20
|
[project.optional-dependencies]
|
|
19
21
|
build = [
|
|
22
|
+
"hatch-vcs==0.5.0",
|
|
20
23
|
"hatchling==1.28.0",
|
|
24
|
+
"setuptools-scm==10.3.4",
|
|
21
25
|
"uv-build==0.11.3",
|
|
26
|
+
"vcs-versioning==2.6.0",
|
|
22
27
|
]
|
|
23
28
|
|
|
24
29
|
[dependency-groups]
|
|
@@ -38,9 +43,34 @@ dev = [
|
|
|
38
43
|
pypi-release = ["twine==6.2.0"]
|
|
39
44
|
|
|
40
45
|
[build-system]
|
|
41
|
-
requires = [
|
|
46
|
+
requires = [
|
|
47
|
+
"hatch-vcs==0.5.0",
|
|
48
|
+
"hatchling==1.28.0",
|
|
49
|
+
"setuptools-scm==10.3.4",
|
|
50
|
+
"vcs-versioning==2.6.0",
|
|
51
|
+
]
|
|
42
52
|
build-backend = "hatchling.build"
|
|
43
53
|
|
|
54
|
+
# `uv sync` rebuilds the editable install when the commit or the tags change, so the installed
|
|
55
|
+
# version follows a new release tag.
|
|
56
|
+
[tool.uv]
|
|
57
|
+
cache-keys = [{ file = "pyproject.toml" }, { git = { commit = true, tags = true } }]
|
|
58
|
+
|
|
59
|
+
[tool.hatch.version]
|
|
60
|
+
source = "vcs"
|
|
61
|
+
|
|
62
|
+
# Only `v<digits>` tags are releases. A commit after the last one builds as that release's
|
|
63
|
+
# version, as a checkout between releases always has: `mr-data propose` records the version as
|
|
64
|
+
# plain X.Y.Z and refuses anything else. A tree without git history builds as 0.0.0.
|
|
65
|
+
[tool.hatch.version.raw-options]
|
|
66
|
+
tag_regex = "^v(?P<version>[0-9]+(?:\\.[0-9]+)*(?:(?:a|b|rc)[0-9]+)?)$"
|
|
67
|
+
version_scheme = "only-version"
|
|
68
|
+
local_scheme = "no-local-version"
|
|
69
|
+
fallback_version = "0.0.0"
|
|
70
|
+
|
|
71
|
+
[tool.hatch.version.raw-options.scm.git]
|
|
72
|
+
describe_command = ["git", "describe", "--dirty", "--tags", "--long", "--match", "v[0-9]*"]
|
|
73
|
+
|
|
44
74
|
[tool.hatch.build.targets.wheel]
|
|
45
75
|
sources = ["src"]
|
|
46
76
|
only-include = [
|
|
@@ -34,17 +34,18 @@ only a ceiling. Keep a stated one only when a run's refusal told you to lower it
|
|
|
34
34
|
documents a limit on concurrent connections, and record the reason in a dataset note so the next
|
|
35
35
|
session finds it. Then choose the source shape that fits.
|
|
36
36
|
|
|
37
|
-
| Source shape | Use | Always state |
|
|
38
|
-
| --- | --- | --- |
|
|
39
|
-
| One public file that never changes | `public.https` with a Reader pin | `closed: true` |
|
|
40
|
-
| One large public Parquet file whose publisher answers byte ranges | a `parquet.tabular@1.1.0` pin | `columns` |
|
|
41
|
-
| Keyed JSON API paged by page number, whose first page states the page count | `authenticated.https.api_key@2.1.0` with the counted `pagination.parallel` | `total_pages_pointer`, `max_page_bytes`, the gap |
|
|
42
|
-
| API that takes a date range | `window.request` | `lookback_seconds` |
|
|
43
|
-
| Many pages behind one index | `public.https.collection@2.0.0` | the gap |
|
|
44
|
-
| One request per row of another source | a per-row `request`, with `batch` when a `GET` takes a list of ids | the gap |
|
|
45
|
-
| Bulk dump beside a windowed source | `reference` | `recheck_seconds` |
|
|
46
|
-
| Live `wss://` feed | a recorded stream | see [Streams](references/recording-a-stream-venue.md) |
|
|
37
|
+
| Source shape | Use | Always state | Recipe |
|
|
38
|
+
| --- | --- | --- | --- |
|
|
39
|
+
| One public file that never changes | `public.https` with a Reader pin | `closed: true` | [one file](references/patterns.md#one-public-file-that-never-changes) |
|
|
40
|
+
| One large public Parquet file whose publisher answers byte ranges | a `parquet.tabular@1.1.0` pin | `columns` | [ranged Parquet](references/patterns.md#one-large-public-parquet-file-read-by-range) |
|
|
41
|
+
| Keyed JSON API paged by page number, whose first page states the page count | `authenticated.https.api_key@2.1.0` with the counted `pagination.parallel` | `total_pages_pointer`, `max_page_bytes`, the gap | [keyed API](references/patterns.md#keyed-json-api-with-pages-fetched-together) |
|
|
42
|
+
| API that takes a date range | `window.request` | `lookback_seconds` | [date range](references/patterns.md#api-that-takes-a-date-range) |
|
|
43
|
+
| Many pages behind one index | `public.https.collection@2.0.0` | the gap | [collection](references/patterns.md#many-pages-behind-one-index) |
|
|
44
|
+
| One request per row of another source | a per-row `request`, with `batch` when a `GET` takes a list of ids | the gap | [per-row](references/patterns.md#one-request-per-row-many-ids-per-request) |
|
|
45
|
+
| Bulk dump beside a windowed source | `reference` | `recheck_seconds` | [reference](references/patterns.md#bulk-dump-beside-a-windowed-source) |
|
|
46
|
+
| Live `wss://` feed | a recorded stream | see [Streams](references/recording-a-stream-venue.md) | none |
|
|
47
47
|
|
|
48
|
+
[Patterns](references/patterns.md) has one complete recipe per row, with the pace set.
|
|
48
49
|
[Sources](references/sources.md#pace-and-width) has the pace rules and the limits of parallel
|
|
49
50
|
pages. [Readers](references/readers.md) has the Reader pins and the limits of a ranged read.
|
|
50
51
|
|
|
@@ -88,7 +89,10 @@ step 6. The stage 3 reference holds its rule. Gate 4 is step 6.
|
|
|
88
89
|
3. Settle purpose, row grain, tables, coverage, required sources and update cadence before
|
|
89
90
|
dependent work. In an attended build, ask unresolved material questions in one concise message
|
|
90
91
|
with recommended choices; recording an assumption is not asking the user. Default to one joined,
|
|
91
|
-
ML-ready table at the agreed grain unless the user requests otherwise.
|
|
92
|
+
ML-ready table at the agreed grain unless the user requests otherwise. Define membership and
|
|
93
|
+
relationship evidence for the intended use; resolve consequential proxies (for example,
|
|
94
|
+
institution location versus a person’s origin) rather than silently treating them as equivalent.
|
|
95
|
+
Validate join cardinality
|
|
92
96
|
and point-in-time correctness; surface incompatible grains rather than silently multiplying rows.
|
|
93
97
|
Ask whether this is a fixed snapshot or an updating dataset, how often updates are needed, and
|
|
94
98
|
whether automatic cadence adjustment is wanted. Existing answers and explicit delegation remain
|
|
@@ -189,8 +193,10 @@ merely to obtain a green run. Read [recovery details](references/agent-protocol.
|
|
|
189
193
|
|
|
190
194
|
8. Read `mr-data checks RUN_ID --json`, `mr-data receipt RUN_ID --json` and
|
|
191
195
|
`mr-data peek RUN_ID --json`; use bounded `mr-data query` for agreed quality questions.
|
|
192
|
-
Verify row grain, joins, requested fields, coverage and every declared check.
|
|
193
|
-
|
|
196
|
+
Verify row grain, joins, requested fields, coverage and every declared check. Inspect representative
|
|
197
|
+
and suspicious rows against source evidence and the agreed definitions; schema and count checks
|
|
198
|
+
alone cannot establish that the rows mean what the dataset claims. Successful execution alone
|
|
199
|
+
is not a verified dataset. `receipt` carries one coverage entry per source --
|
|
194
200
|
`bytes_fetched`, `rows_kept`, `rows_available`, `truncated` and the window -- where the run
|
|
195
201
|
record folds all sources into four numbers. That is what each source ACTUALLY weighed and
|
|
196
202
|
carried, and it is the evidence the refresh decision belongs on rather than the ceiling you
|
|
@@ -201,7 +207,8 @@ merely to obtain a green run. Read [recovery details](references/agent-protocol.
|
|
|
201
207
|
correction into step 10. Read
|
|
202
208
|
[verification](references/7-interrogate-ask-the-run-what-it-actually-delivered.md).
|
|
203
209
|
9. Any truncated source means a preview, not the requested complete dataset. Inspect coverage
|
|
204
|
-
even when the run succeeded.
|
|
210
|
+
even when the run succeeded. Untruncated acquisition does not prove publisher pagination, nested
|
|
211
|
+
records or population coverage is complete. A null coverage window does not mean all history was acquired.
|
|
205
212
|
Repair only evidenced faults on the same dataset/table and verify the revision again.
|
|
206
213
|
Record cadence only when authorized and `mr-data recipe readiness --json` reports the current
|
|
207
214
|
revision refresh-ready. A blocked mutable snapshot requires an explicit table resync, not a
|
|
@@ -234,6 +241,7 @@ merely to obtain a green run. Read [recovery details](references/agent-protocol.
|
|
|
234
241
|
| Live stream recording | [Streams](references/recording-a-stream-venue.md) |
|
|
235
242
|
| Prediction target or leakage | [Prediction labels](references/prediction-labels.md) |
|
|
236
243
|
| How each source continues, `rebuild`, and the cost of a refresh | [Making a table incremental](references/making-a-table-incremental.md) |
|
|
244
|
+
| Testing a recipe before its full, and its first refresh before the schedule | [Recipe test](references/recipe-test.md) |
|
|
237
245
|
| Refresh cadence | [Promotion and cadence](references/promote.md) |
|
|
238
246
|
| Dataset notes and evidence blocks | [Decision records](references/writing-a-decision-record.md) |
|
|
239
247
|
| Search configuration, example queries and readiness | [Search preparation](references/preparing-table-search.md) |
|
|
@@ -17,7 +17,9 @@ user already supplied. Always include update behavior when it remains unresolved
|
|
|
17
17
|
separate tables as an equal default. Check join keys, cardinality, unmatched rows and, for
|
|
18
18
|
prediction, feature availability at prediction time. If a join would mix incompatible grains,
|
|
19
19
|
duplicate examples or leak future information, explain the tradeoff and resolve it before building.
|
|
20
|
-
- **Coverage.** Which entities, geography and date range?
|
|
20
|
+
- **Coverage.** Which entities, geography and date range? Resolve definitions that materially change
|
|
21
|
+
membership here: a person’s institutional country, origin and current residence are different
|
|
22
|
+
populations. Ask about the intended population, not which convenient API filter to use.
|
|
21
23
|
- **Updates.** A fixed historical snapshot or an updating dataset? If updating, how often is new
|
|
22
24
|
data needed, and should that schedule stay fixed or adapt to source publication? Recommend a
|
|
23
25
|
cadence from the use case and available source evidence, mark an unverified recommendation as
|
|
@@ -27,10 +29,23 @@ user already supplied. Always include update behavior when it remains unresolved
|
|
|
27
29
|
the agent recommend them? Ask about the consequential fork — official but delayed against broader
|
|
28
30
|
and more recent, or a source that needs a credential — and research the options yourself.
|
|
29
31
|
|
|
30
|
-
|
|
32
|
+
Other field details, quality tradeoffs and delivery constraints are follow-ups:
|
|
31
33
|
ask one when an answer or a source finding exposes it. There is no second brief — this message is
|
|
32
34
|
the one that decides the shape.
|
|
33
35
|
|
|
36
|
+
**Turn the brief into criteria the result can be checked against.** Record what one row claims,
|
|
37
|
+
what qualifies an entity or relationship, and how repeated observations or versions count. Use the
|
|
38
|
+
existing decision notes and recipe checks; this does not introduce a new approval or schema.
|
|
39
|
+
Resolve only consequential ambiguity and honor supplied answers. For a human collaboration table,
|
|
40
|
+
a software agent credited on a release is not evidence of collaboration with that agent’s vendor;
|
|
41
|
+
the user need not specify this exclusion. Whether software contributions count at all depends on
|
|
42
|
+
their purpose. A release-history dataset can legitimately retain every version.
|
|
43
|
+
|
|
44
|
+
Use a few included and excluded examples when they help expose a boundary. Carry unresolved
|
|
45
|
+
source limitations into the source comparison rather than redefining the goal around available
|
|
46
|
+
fields. Do not infer a person’s origin from their name or silently replace it with institutional
|
|
47
|
+
country. If the intended population cannot be evidenced, explain the gap and resolve the scope.
|
|
48
|
+
|
|
34
49
|
**Every question is a pending `clarification` block on the dataset and the same words in chat.**
|
|
35
50
|
The block carries `question` and no `answer`, so the page shows it open; the chat asks it in the
|
|
36
51
|
same words, so the two readers see one question rather than two. The answer REVISES that cell —
|
|
@@ -213,6 +213,18 @@ held answer prints back as `confirm_command`. Any authenticated surface of the s
|
|
|
213
213
|
may settle it. Never present it to the user as a cost or a payment. `mr-data run --cancel RUN_ID`
|
|
214
214
|
stops a run that is queued or running.
|
|
215
215
|
|
|
216
|
+
**A full tests its recipe first.** `mr-data run --full` runs `mr-data recipe test` with Studio's
|
|
217
|
+
default bounds, waits up to five minutes for its report, and then starts the full resuming from
|
|
218
|
+
the test's pages, so nothing is fetched twice. A blocking problem, a failed or held test, or a test
|
|
219
|
+
still running after five minutes keeps the full from starting: the status is
|
|
220
|
+
`run_stopped_by_test`, `run_test_awaiting_confirmation` or `run_test_still_running`, `run_id` names
|
|
221
|
+
the test, and `next` ends with the same full plus `--skip-test`. Repair the recipe rather than
|
|
222
|
+
skipping the test, unless the user decides the problem does not matter; a test still running is
|
|
223
|
+
picked back up by the same command. A test that failed in the room (`room_fault: true`) is tested
|
|
224
|
+
again by the same command. Studio admits the test as the full it stands in front of, so a large
|
|
225
|
+
full can be held for a size confirmation twice, once for the test and once for the full. See
|
|
226
|
+
[recipe test](recipe-test.md).
|
|
227
|
+
|
|
216
228
|
Do not treat the accepted command vocabulary as execution evidence. Before proposing a schedule,
|
|
217
229
|
classify every source under one truthful continuation strategy and record the supporting evidence,
|
|
218
230
|
using [making a table incremental](making-a-table-incremental.md).
|
|
@@ -9,6 +9,35 @@ mr-data checks RUN --json # every check the recipe declared
|
|
|
9
9
|
mr-data receipt RUN --json # sources, digests, coverage, snapshot members
|
|
10
10
|
```
|
|
11
11
|
|
|
12
|
+
#### Check meaning against the brief
|
|
13
|
+
|
|
14
|
+
Inspect actual rows beyond the first preview: sample across material source/entity/type groups
|
|
15
|
+
and inspect anomalies such as unusually prolific pairs, repeated titles or concentrated counts.
|
|
16
|
+
Trace selected inclusions and suspected exclusions to source records. Record the version, sample
|
|
17
|
+
selection, rows inspected, evidence and unresolved limitations in the dataset notes. A sample is
|
|
18
|
+
not proof of population-wide accuracy; passing declared checks only proves their assertions.
|
|
19
|
+
|
|
20
|
+
Choose checks from the dataset’s claims. For a human co-authorship table, inspect counterpart
|
|
21
|
+
identity and affiliation evidence, distinct people rather than self-edges, work types, and repeated
|
|
22
|
+
release families. A bot credit does not establish a human relationship with its vendor. Use
|
|
23
|
+
source-supported identities or narrowly justified matches; a name substring is not a reliable bot
|
|
24
|
+
classifier. Preserve legitimate human names. Treat software releases and version deduplication
|
|
25
|
+
according to the agreed grain: do not ban software or collapse versions in a release-history task.
|
|
26
|
+
Encode evidenced, repeatable failures as supported recipe checks where possible, then verify the
|
|
27
|
+
repair. Do not relax checks or prune legitimate rows to make them pass.
|
|
28
|
+
|
|
29
|
+
Separate acquisition limits from source and population coverage. Read publisher totals and
|
|
30
|
+
continuation tokens, nested-list caps or completeness flags, and join losses where applicable.
|
|
31
|
+
`coverage.truncated: false` does not prove all publisher pages or all authors inside each record
|
|
32
|
+
were returned. Missing completeness evidence means unknown. A nested cap calls for another
|
|
33
|
+
supported acquisition path or a stated limitation, not silent exclusion of every large record.
|
|
34
|
+
|
|
35
|
+
Known examples can reveal omissions, but compare their eligibility against the same population,
|
|
36
|
+
dates and relationship definition first. A broader benchmark is useful for discussing scope; its
|
|
37
|
+
size is not a valid recall denominator for a narrower dataset. Investigate eligible misses and
|
|
38
|
+
preserve out-of-scope examples as such. Do not manufacture a recall or accuracy percentage from
|
|
39
|
+
an unvalidated list or an anomaly-focused sample.
|
|
40
|
+
|
|
12
41
|
**The last of those answers `THIN_NO_MATCHING_ARTIFACT` on a run that sealed no receipt**, naming
|
|
13
42
|
what it sealed instead. That is the ordinary shape of a recipe with one `request`-windowed source
|
|
14
43
|
rather than a fault. Read `mr-data status RUN --json` for its coverage, as
|
|
@@ -57,7 +86,7 @@ instead, and wait through the window the refusal names rather than retrying in a
|
|
|
57
86
|
|
|
58
87
|
**A query sent straight after another may find no worker to start.** The worker behind the query
|
|
59
88
|
before is still winding down, and Studio fails the new session at once with
|
|
60
|
-
`RESEARCH_SESSION_WORKER_UNAVAILABLE`. `mr-data query` waits 8 seconds and opens one more session,
|
|
89
|
+
`RESEARCH_SESSION_WORKER_UNAVAILABLE`. `mr-data query` waits 8 to 12 seconds and opens one more session,
|
|
61
90
|
once. The answer then names the first session under `session.retried_after`. If the second has no
|
|
62
91
|
worker either, the command refuses `THIN_RESEARCH_SESSION_ENDED` and names both sessions, each with
|
|
63
92
|
its state, close reason and failure code. Nothing was queued, so running the same command again
|
|
@@ -1,23 +1,25 @@
|
|
|
1
1
|
### 9. Present — only what survived inspection, with caveats
|
|
2
2
|
|
|
3
3
|
Report what you inspected, and nothing you did not. Nothing else checks this run: `verified` is
|
|
4
|
-
what you established by reading it, not a word another worker said.
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
acquisition was unwindowed rather than that it covered all time. Never present a sampled row as a
|
|
4
|
+
what you established by reading it, not a word another worker said. Report how many rows you
|
|
5
|
+
inspected and how you selected them, what the declared checks reported, and whether `coverage.truncated` was true anywhere. Include the source evidence and
|
|
6
|
+
limitations behind membership, relationships and population coverage. A null coverage window means
|
|
7
|
+
the acquisition was unwindowed rather than that it covered all time. Never present a sampled row as a
|
|
8
8
|
whole-population value, never call a run verified because it succeeded, and never report coverage
|
|
9
|
-
you did not
|
|
9
|
+
you did not establish from the run and source evidence.
|
|
10
10
|
|
|
11
11
|
**Read `truncated` first, because it decides which of two endings this is.** When it is false on
|
|
12
|
-
every coverage entry,
|
|
13
|
-
|
|
12
|
+
every coverage entry, the acquisition reports no transport truncation. This alone does not
|
|
13
|
+
establish publisher pagination, nested-list completeness or coverage of the intended population.
|
|
14
|
+
When it is true anywhere, what you have is a shape rather than an answer.
|
|
14
15
|
|
|
15
16
|
**The real table's full run, untruncated everywhere, is the build. Present it as one.** A
|
|
16
17
|
scratch-table test is never the build, whatever its coverage says. Calling a complete table "a
|
|
17
18
|
preview" tells somebody their dataset does not exist yet when it does. Say what was built, and link the page:
|
|
18
19
|
|
|
19
|
-
> Built 43,812 rows from four sources
|
|
20
|
-
>
|
|
20
|
+
> Built 43,812 rows from four sources with no reported acquisition truncation. All four declared
|
|
21
|
+
> checks passed. Inspected 40 rows across the four sources; publisher totals match acquired records.
|
|
22
|
+
> Live at <link>. It refreshes every 6 hours, because the publisher posts
|
|
21
23
|
> hourly and the bytes appear about forty minutes late.
|
|
22
24
|
|
|
23
25
|
Say plainly that it is live: the first succeeded run of a table goes live on its own, so there is
|
|
@@ -48,12 +50,15 @@ preview, and release it with `mr-data run --approve-full`. `failed` is the full
|
|
|
48
50
|
triple and structured recovery. A known retry case can use `mr-data run --retry RUN_ID`; otherwise
|
|
49
51
|
preserve the document until the evidence identifies a repair. A bare run of the same coordinate
|
|
50
52
|
replays that failure. `cancelled` means they withdrew the decision, so say so and ask nothing
|
|
51
|
-
further unless they raise it.
|
|
53
|
+
further unless they raise it. The exception is a run whose `cancel_reason` is
|
|
54
|
+
`preflight_complete`, or that carries `preflight`: that is a recipe test, which always ends
|
|
55
|
+
`cancelled` with its report and never becomes a version. It is not the full build and not a
|
|
56
|
+
withdrawn decision; read its `preflight_report` as [recipe test](recipe-test.md) describes. Ask, then give the turn back; do not hold a stream open waiting for
|
|
52
57
|
either answer.
|
|
53
58
|
|
|
54
|
-
Then interrogate that run as stage 7 says
|
|
55
|
-
|
|
56
|
-
dataset was asked for — the decision is whether THIS is the recipe to build.
|
|
59
|
+
Then interrogate that run as stage 7 says. Remove only the preview caveats the new evidence
|
|
60
|
+
resolves, and retain unresolved source limitations. Do not start a full build because the preview
|
|
61
|
+
looked good or because a dataset was asked for — the decision is whether THIS is the recipe to build.
|
|
57
62
|
|
|
58
63
|
**Either way, offer the bytes.** A sealed table is downloadable whatever mode produced it —
|
|
59
64
|
`mr-data download RUN --output DIR --json` — so somebody who wants to look before agreeing to
|
{mostlyright_data-0.29.11 → mostlyright_data-0.30.0}/skills/mr-data-build/references/commands.md
RENAMED
|
@@ -3,6 +3,12 @@
|
|
|
3
3
|
These thirty-eight are the whole surface, alongside `acquire-slices`, which names a capability
|
|
4
4
|
gap rather than doing anything, and `export-hosted-candidate`, which is a backend operator step.
|
|
5
5
|
|
|
6
|
+
Every command that takes a run identifier also takes its first eight or more characters,
|
|
7
|
+
`recipe propose --sources-from` included. The prefix is matched against the workspace's newest
|
|
8
|
+
1,000 runs before the command checks anything else, so it needs a signed-in session. A prefix that
|
|
9
|
+
matches two runs is refused naming both, and one that matches none is refused, so name an older
|
|
10
|
+
run in full.
|
|
11
|
+
|
|
6
12
|
| Command | What it does |
|
|
7
13
|
| --- | --- |
|
|
8
14
|
| `mr-data auth` | Validate the effective device credential with Cloud; manage metadata-only device revocation, remote-first logout, safe rotation, and explicit recovery; explain the ephemeral token boundary. |
|
|
@@ -15,21 +21,22 @@ gap rather than doing anything, and `export-hosted-candidate`, which is a backen
|
|
|
15
21
|
| `mr-data catalog` | `catalog search "QUESTION"` asks the sealed public-source catalogue which of its entries might answer a question and ranks them best first. Every ranked entry comes back with the disposition its own facts earned — `admitted`, `human_escalation_required` or `refused` — because an entry the catalogue could not vouch for is still a finding. `--format csv` states the one data format the question requires — one token per question, never repeated — and it is not a filter: an entry that does not declare that format still comes back ranked, with disposition `refused` and `filters_match` false, so nothing is held back; `--limit N` ranks at most N, up to 25. It fetches nothing and registers nothing. The catalogue holds one provider (Data.gov) and only part of it, so it is never exhaustive and an empty answer is not evidence that no such source exists. When the answer is `catalog_unavailable`, this deployment has no catalogue to search: record the lane and carry on. |
|
|
16
22
|
| `mr-data public` | Read Mostly Right's public dataset catalogue. `public search "QUERY"` ranks published datasets (`--topic`, `--limit` and `--cursor` narrow and page it), `show SLUG` reads one overview, `tables SLUG` lists its table identifiers, `schema TABLE_ID` reads one table's schema, `sample TABLE_ID` prints its published preview rows, `lookup "QUERY"` is the connector search shape and `fetch SLUG` returns the dataset's Markdown document. Those seven need no login. `query TABLE_ID`, with `--body` or `--body-file`, and `download-url TABLE_ID` do need `mr-data login`: they ask Cloud, with the device key, to run one query over a public table and to say how it can be downloaded. Preview rows are not a query, and no table bytes pass through the command. |
|
|
17
23
|
| `mr-data connected` | `connected list` shows the public datasets connected to this workspace and `connected add SLUG` connects one by its slug. It needs `mr-data login`: both ask Cloud, with the device key, over the routes MCP's `list_connected_datasets` and `connect_dataset` use. |
|
|
24
|
+
| `mr-data ask` | `ask "QUESTION" [--run RUN_ID ...] [--failure-code CODE]` asks the Mostly Right support agent one question and waits for the answer; `--no-wait` prints the question id at once and `ask status QUESTION_ID` reads it later. It needs `mr-data login` and a workspace the agent is switched on for: while it is off the answer is `THIN_CLOUD_SUPPORT_AGENT_DISABLED`, which is final. The agent may file a problem for the Mostly Right team and prints its reference (`SR-N`). |
|
|
18
25
|
| `mr-data dataset` | Bring the dataset page into existence before there is anything on it, then fill it in while somebody watches. `dataset create --name TEXT` mints it and prints the `dataset_id`, unless the user's own request already has an empty dataset open, in which case it answers `open_request_reused` with that `dataset_id` and mints nothing (`--separate` mints a new one for a different dataset); `dataset show ID` reads it back; `dataset set ID --name TEXT --topics "a,b,c" --license ID --description-file F` writes the title, the descriptive tags, the SPDX licence and the description under the version it was read at, retrying once if somebody else wrote first, and an empty `--topics` or `--license` takes that value off the page; send `--name` and `--topics` whenever you send `--description-file`, because a description sent on its own can make Studio write a new title and new tags, and read `changed` and `written_by_studio` on the receipt for every field the write moved; a saved write whose public sync fails exits 2 and reports `public_projection_synced: false` — use `dataset sync ID` to retry that sync without rewriting Studio; `dataset note ID --heading H --blocks-file B` writes one cell of the decision record that OUTLIVES every run, and `--list` reads it back; `dataset watch ID` follows the page's own event stream; `dataset activity ID --phase P --message TEXT` says what is happening right now, silently, and is never a chat message and never a cell; `dataset publish ID [--mode public|link|private]` says who can read the dataset — `public` lists it in the public directory and serves it at an address anybody can read, `link` serves it at an unlisted address, `private` takes it back to the workspace — and `dataset publish ID --show` reads that back without changing it; `dataset archive ID --confirm-name TITLE` retires the page and frees its title, deleting nothing. |
|
|
19
|
-
| `mr-data recipe` | Register one recipe document (dataset, question, table plan, sources, transform, checks and units) in one call, and print the identifiers the server derived. The document is read first and every fault comes back in one refusal, each with the JSON pointer that names it. `--no-lint` sends it as written instead. Registration refuses `THIN_BRIEF_MISSING` when the dataset's record carries no answered question and no delegation, and `THIN_RECIPE_DATASET_UNBOUND` when the document names no `dataset.id`. `--delegated "their words"` writes the delegation onto the dataset and registers in the same command, and clears the first of those two and never the second. `mr-data recipe show ID` reads one back. `mr-data recipe explain FILE` (or a recipe identifier) lists every reason its table can or cannot refresh, each with a rule code and Studio's suggested repair, and exits 2 when one blocks it. `mr-data recipe forecast RECIPE_ID
|
|
26
|
+
| `mr-data recipe` | Register one recipe document (dataset, question, table plan, sources, transform, checks and units) in one call, and print the identifiers the server derived. The document is read first and every fault comes back in one refusal, each with the JSON pointer that names it. `--no-lint` sends it as written instead. A recipe that misses a feature that sets how fast a run fetches (an unstated pace, a stated `pages.concurrency`, a per-row request open to `batch`, a page walk open to `pagination.parallel`, or a Parquet file open to a ranged read) is refused `THIN_RECIPE_SLOW`, with each feature's pointer and fix, before anything is sent. Apply the fixes, or pass `--accept-slow "REASON"` with one sentence on why the slow path is right for this source. The receipt prints the reason and the features it covered. Registration refuses `THIN_BRIEF_MISSING` when the dataset's record carries no answered question and no delegation, and `THIN_RECIPE_DATASET_UNBOUND` when the document names no `dataset.id`. `--delegated "their words"` writes the delegation onto the dataset and registers in the same command, and clears the first of those two and never the second. `mr-data recipe show ID` reads one back. `mr-data recipe explain FILE` (or a recipe identifier) lists every reason its table can or cannot refresh, each with a rule code and Studio's suggested repair, and exits 2 when one blocks it. `mr-data recipe forecast RECIPE_ID` says what one run would ask of each source before it runs, and exits 3 when the run would overrun today's platform quota or one attempt. `--digest` is optional there, and without it the digest the recipe was registered with is forecast. `mr-data recipe readiness --table TABLE_ID --current-only` reads the revision one table runs now. The explanation's `fast_features` names each fast feature the recipe uses or misses, with a one-line fix. [Making a table incremental](making-a-table-incremental.md#the-loop-explain-forecast-run-diagnose) says when to use each. |
|
|
20
27
|
| `mr-data cover` | Generate and attach one branded 1200×630 dataset cover. Give it the dataset ID and what the image should depict; Studio fixes the model, single-color style, curated random palette, dimensions and storage. |
|
|
21
|
-
| `mr-data run` | Start one run against a registered recipe, named as `--recipe RECIPE_ID
|
|
28
|
+
| `mr-data run` | Start one run against a registered recipe, named as `--recipe RECIPE_ID`, with `--digest RECIPE_DIGEST` when you want the run to assert which bytes it means. Neither is positional. The digest is the bare hex the registration receipt printed. Left out, the run reads it back from the registered recipe, which is the same value, because a recipe identifier names one revision. A full of a recipe that misses a fetch-speed feature is refused `THIN_RECIPE_SLOW`, as registration is, unless `--accept-slow "REASON"` is passed. Other modes print the missed features and are not refused. The mode is one of six: `sample`, `full`, `refresh`, `backfill`, `compact` and `replay`. Four have a shorthand flag (`--sample`, `--full`, `--refresh`, `--backfill`) and two do not, so write `--mode MODE`, which is accepted for every one of them. A refresh executes only Studio's persisted source-action plan, and a plan shape it does not refresh returns `RESYNC_REQUIRED` before acquisition. [Which plans refresh](making-a-table-incremental.md#which-plans-refresh) lists them, and `mr-data recipe explain` says which one a table is. Use `mr-data table resync TABLE_ID --request-id UUID` for an explicit full source reread, retaining that UUID if the response is uncertain. `--backfill` states the exact window with `--window START END`. `--mode replay --sources-from RUN_ID` asks Studio to run the registered revision against the RETAINED RAW INPUTS of one named successful run of the same table: nothing is fetched from this computer, nothing is acquired again, the result is compared against that run and never becomes the live version, and it neither asks for nor records an approval. Where Studio has replay switched off, or the named run is not successful, not the same table, or no longer retains its inputs, it answers a typed refusal. Report the code rather than retrying in another mode. `--sources-from` on any other mode is refused `THIN_ARGUMENT_INVALID` before anything is sent. `--max-rows` and `--max-source-bytes` bound ONE SOURCE rather than the finished table. `--max-rows` cuts rows after a source is fetched and decoded, so it does not shorten a collection walk. A sample with no clamp is refused: `CLAMPS_REQUIRED` from Studio, and `THIN_REQUEST_INVALID` from this client first. A table's first succeeded run goes live, truncated or not, so test on a scratch table as [the probe rule](3-probe-read-a-source-before-committing-to-it.md#the-probe-rule-test-on-a-scratch-table-never-on-the-real-table) says. A large run is held for a size confirmation (not a charge), which `--confirm` settles and whose printed `confirm_command` re-states every argument the request carried. `--approve-full RUN_ID` releases the full an existing legacy sample-first pair is holding once its preview has succeeded, naming either half of the pair. Where the deployment still wants a person at a browser it answers `THIN_INTERACTIVE_HUMAN_REQUIRED` and names the run page. `--retry RUN_ID` tries one failed run again when its triple carries `room_fault: true`, re-stating that run's own coordinate and ceilings and naming the failed run so Studio starts a new attempt, and refuses with the triple and the next step Studio's recovery category names when it is not. `room_fault` is Studio's `recovery.room_fault` where Studio states one. A source that kept refusing (`SOURCE_RATE_LIMITED`, `SOURCE_HTTP_5XX`, `SOURCE_PROXY_BUSY`) is sent anyway: Studio admits it 120 seconds after the failure and refuses `RUN_RETRY_TOO_SOON` with a Retry-After before then, so wait that long and run `--retry` again. `--cancel RUN` stops one. |
|
|
22
29
|
| `mr-data status` | Report which of the seven states one run is in, what it delivered and whether a ceiling cut it short, and — on a failure — what failed, where, and whether the fault was the execution room's rather than the recipe's. Exits non-zero on a failed run. `--diagnose` adds everything else Studio can say about the run: its progress, a per-row source's plan counts, its checkpoints, and how each attempt ended, with a lost attempt's cause marked as an inference. |
|
|
23
30
|
| `mr-data runs` | Report this workspace's own runs: identifier, mode, state and creation time, plus the failure triple of any that failed and whether that failure was the execution room's. `--dataset DATASET_ID` narrows it to one dataset's runs, so "what have I run for this dataset?" is one scoped read, and a value that is not an identifier is refused `THIN_ARGUMENT_INVALID`. `--status` and `--mode` narrow it too and are refused `THIN_ARGUMENT_INVALID` for a word outside the seven states or the six modes; the three combine. Studio narrows before it cuts a page, so a filtered page holds the newest runs that match however many runs the workspace has. `--limit` says how many, and pages are followed to reach it; a listing that does not end says how many were read and suggests a smaller `--limit` or a narrower filter. The answer prints `next_cursor`, and `--cursor` continues from it. |
|
|
24
31
|
| `mr-data watch` | Stream one run's live progress under the durable event type of each stage, resuming across stream cuts. Exits non-zero when the run failed. |
|
|
25
|
-
| `mr-data query` | Run one bounded read-only SQL statement over a finished run's own table and print the rows. Bounded on rows, on answer bytes and on time, and refused by name when a bound is crossed. |
|
|
26
|
-
| `mr-data search` | `search VERB` prepares and tests versioned search for a new table through Studio; no model or index runs on this computer. The verbs are `inspect`, `sample`, `values`, `propose`, `configure`, `validate`, `add-cases`, `explain`, `preview`, `evaluate`, `estimate`, `build`, `status`, `activate`, `cancel` and `
|
|
32
|
+
| `mr-data query` | Run one bounded read-only SQL statement over a finished run's own table and print the rows. Name the table `run_table` in the SQL, whatever the recipe called it. Bounded on rows, on answer bytes and on time, and refused by name when a bound is crossed. When no worker can answer, the refusal names `mr-data download RUN_ID` as `fallback_command`, which brings the table here to read locally. The question is asked through Mostly Right Cloud; while its usage paywall is on and the workspace is unsubscribed, each answered query counts toward the person's monthly allowance, and a spent allowance refuses `THIN_USAGE_LIMIT`. A refusal after the question was queued names its `query_id`; running the same command again reads that query back. |
|
|
33
|
+
| `mr-data search` | `search VERB` prepares and tests versioned search for a new table through Studio; no model or index runs on this computer. The verbs are `inspect`, `sample`, `values`, `propose`, `configure`, `validate`, `add-cases`, `explain`, `preview`, `evaluate`, `estimate`, `build`, `status`, `activate`, `cancel`, `rollback`, `locate` and `try`. `inspect`, `propose` and `validate` also take `--recipe FILE` before registration. `validate --spec` checks a spec and its evaluation cases against the pinned contract without sending anything. `locate` resolves evaluation-case rows to locators, and `try` runs one query against the live search. A build returns promptly with job coordinates, and an operation Studio does not serve answers a typed capability error. [Prepare search](preparing-table-search.md) says how it fits a build. |
|
|
27
34
|
| `mr-data peek` | Print the columns, their logical types and the first rows of one run's table. The type comes off the run's own column profile where the preview carries none, so `type` is null only for a run that sealed no profile. |
|
|
28
35
|
| `mr-data receipt` | Print what one run recorded about how it was built: every source it fetched and what those bytes hashed to, the coverage it delivered, and the members of its raw snapshot. |
|
|
29
36
|
| `mr-data checks` | Report how each check the recipe declared came out — the name, whether it passed, what it found. Exits non-zero when one did not pass. |
|
|
30
37
|
| `mr-data note` | Write one cell of a run's decision record — a heading, a body, and the typed blocks that carry a source, a decision or a clarification onto the stage its phase names. The body comes from `--markdown-file FILE`, which is the form to use; standard input is read when no file is named and is refused when it is a terminal or empty. `--list` reads back what is written. |
|
|
31
38
|
| `mr-data artifacts` | `artifacts list RUN_ID` lists what one run sealed — each artifact's identifier, kind, size and digest — without fetching a byte, which is the same answer MCP's `run_artifacts` gives. `mr-data download` brings the bytes. |
|
|
32
|
-
| `mr-data download` | Bring one run's artifacts back to this computer, each one's bytes checked against the digest Studio sealed them under. `--kind` selects out of `table_parquet`, `table_manifest`, `table_part`, `column_profile`, `preview`, `receipt` and `raw_snapshot`; without it, the shape the run sealed — one file and the receipt for a table written whole, or the manifest, EVERY part the version names and the receipt for a table made of parts, written as `table/manifest.json` beside `table/parts/<part_key>.parquet`. A version composed over several refreshes names parts earlier runs sealed; those are fetched too, and a part that cannot be fetched refuses by name rather than leaving a folder holding part of a table. A run that sealed no receipt brings back what it did seal, without one. |
|
|
39
|
+
| `mr-data download` | Bring one run's artifacts back to this computer, each one's bytes checked against the digest Studio sealed them under. `--kind` selects out of `table_parquet`, `table_manifest`, `table_part`, `column_profile`, `preview`, `receipt` and `raw_snapshot`; without it, the shape the run sealed — one file and the receipt for a table written whole, or the manifest, EVERY part the version names and the receipt for a table made of parts, written as `table/manifest.json` beside `table/parts/<part_key>.parquet`. A version composed over several refreshes names parts earlier runs sealed; those are fetched too, and a part that cannot be fetched refuses by name rather than leaving a folder holding part of a table. A run that sealed no receipt brings back what it did seal, without one. Every read is minted through Mostly Right Cloud. While Cloud's usage paywall is on and the workspace is unsubscribed, the table rows read (parts, table parquet) count toward the person's monthly allowance and a manifest or table counts one query; receipts, previews and profiles are free, and files already in the folder with the right digest are not read again. Re-running after a spent allowance does not count those files again, except that when a part sealed by an earlier run is still missing, each page of part reads fetched to reach it counts the rows of every part on it, including parts already on disk. A spent allowance refuses `THIN_USAGE_LIMIT`, naming the upgrade address and when the allowance resets. When the rows left cover only some parts, those parts are written and verified and the download ends as a partial one: `THIN_USAGE_LIMIT` with `download_partial: true`, `parts_written` of `part_count` and `rows_written` of `row_count`. The table in the folder is then NOT whole; do not read it as the dataset. Re-running the same command into the same folder after the reset or a subscription continues from the first part not written. `THIN_DATA_EGRESS_THROUGH_CLOUD` either says to upgrade mr-data (it asked Studio directly), says Cloud does not serve the metered download route yet, or says the fault is on Mostly Right's side; in the last two cases retry later, and neither upgrading nor a new device key changes anything. |
|
|
33
40
|
| `mr-data verify` | Hold one run's sealed table manifest against the parts it names, and report every disagreement. Without `--deep` it fetches the manifest alone; with `--deep` it fetches every part the run sealed and re-hashes it against the digest the manifest states. Exits non-zero when anything disagrees. |
|
|
34
41
|
| `mr-data parts` | List one table version's parts — the identifier, the row count, the byte size and the recorded bounds of each — so a training loader can shard them across workers and read a table no single file should hold. `--version` names a version rather than the live one, and `--from`/`--to` keep only the parts a value range cannot rule out. Nothing is downloaded by listing them; the pattern is under [Reading a table that is made of parts](7-interrogate-ask-the-run-what-it-actually-delivered.md#reading-a-table-that-is-made-of-parts). |
|
|
35
42
|
| `mr-data diff` | Compare two runs and say what changed. |
|
|
@@ -102,12 +109,12 @@ block carries `rows`, `bytes`, `window` and `truncated`, and on a one-source rec
|
|
|
102
109
|
source's own delivery.
|
|
103
110
|
|
|
104
111
|
`auth`, `login`, `whoami` and `clarify` are the same implementation in both profiles, and
|
|
105
|
-
`clarify` alone reaches nothing at all. The other thirty-
|
|
106
|
-
Studio apart from `public` and `
|
|
112
|
+
`clarify` alone reaches nothing at all. The other thirty-five are hosted, and they answer from
|
|
113
|
+
Studio apart from `public`, `connected` and `ask`, which answer from Cloud. Fifteen only read: `status`,
|
|
107
114
|
`runs`, `watch`, `peek`, `receipt`, `checks`, `download`, `artifacts`, `verify`, `parts`, `diff`,
|
|
108
115
|
`connections`, `catalog`, `public` and `reader`.
|
|
109
|
-
|
|
110
|
-
`source`, `search`, `keys`, `stream`, `open`, `connected`, `note`, `promote`, `reschedule`,
|
|
116
|
+
Twenty start or change something: `dataset`, `recipe`, `cover`, `run`, `query`, `probe`,
|
|
117
|
+
`source`, `search`, `keys`, `stream`, `open`, `connected`, `ask`, `note`, `promote`, `reschedule`,
|
|
111
118
|
`table`, `pin`, `unpin` and `demote`. The split is over names, not over invocations: `table TABLE`
|
|
112
119
|
reads and `table rename` writes, and the name sits on the side of whichever half changes
|
|
113
120
|
something.
|
{mostlyright_data-0.29.11 → mostlyright_data-0.30.0}/skills/mr-data-build/references/live-run.md
RENAMED
|
@@ -84,6 +84,7 @@ executing; `status` is.
|
|
|
84
84
|
**A failed run always carries the same three members** — `failure_code`, `failure_detail` and
|
|
85
85
|
`failed_stage` — on three surfaces: the run record, the terminal event on the stream, and every
|
|
86
86
|
refusal a command raises about it. `mr-data status` and `mr-data runs` add a fourth reading beside
|
|
87
|
-
them, `room_fault`, which
|
|
88
|
-
|
|
87
|
+
them, `room_fault`, which says whether the failure is the execution room's rather than the
|
|
88
|
+
document's. It is Studio's own reading (`recovery.room_fault`, which also sees the worker's
|
|
89
|
+
`failure_cause`) where Studio states one, and this client's reading of the code otherwise. `true` identifies a known retry case; `false` only means this classifier did
|
|
89
90
|
not identify one. Read structured recovery and causal evidence before changing the recipe.
|