mostlyright-data 0.19.5__tar.gz → 0.19.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 (72) hide show
  1. {mostlyright_data-0.19.5 → mostlyright_data-0.19.6}/PKG-INFO +1 -1
  2. {mostlyright_data-0.19.5 → mostlyright_data-0.19.6}/pyproject.toml +1 -1
  3. {mostlyright_data-0.19.5 → mostlyright_data-0.19.6}/skills/mr-data-build/SKILL.md +42 -47
  4. {mostlyright_data-0.19.5 → mostlyright_data-0.19.6}/.gitignore +0 -0
  5. {mostlyright_data-0.19.5 → mostlyright_data-0.19.6}/README.md +0 -0
  6. {mostlyright_data-0.19.5 → mostlyright_data-0.19.6}/scripts/hatch_build.py +0 -0
  7. {mostlyright_data-0.19.5 → mostlyright_data-0.19.6}/skills/mr-data-build/agents/openai.yaml +0 -0
  8. {mostlyright_data-0.19.5 → mostlyright_data-0.19.6}/skills/mr-data-build/scripts/write_research_notebook.py +0 -0
  9. {mostlyright_data-0.19.5 → mostlyright_data-0.19.6}/src/mostlyright/data_harness/__init__.py +0 -0
  10. {mostlyright_data-0.19.5 → mostlyright_data-0.19.6}/src/mostlyright/data_harness/canonical.py +0 -0
  11. {mostlyright_data-0.19.5 → mostlyright_data-0.19.6}/src/mostlyright/data_harness/formats.py +0 -0
  12. {mostlyright_data-0.19.5 → mostlyright_data-0.19.6}/src/mostlyright/data_harness/hosted_crawler_protocol.py +0 -0
  13. {mostlyright_data-0.19.5 → mostlyright_data-0.19.6}/src/mostlyright/data_harness/key_seam.py +0 -0
  14. {mostlyright_data-0.19.5 → mostlyright_data-0.19.6}/src/mostlyright/data_harness/page_coverage.py +0 -0
  15. {mostlyright_data-0.19.5 → mostlyright_data-0.19.6}/src/mostlyright/data_harness/part_check_evidence.py +0 -0
  16. {mostlyright_data-0.19.5 → mostlyright_data-0.19.6}/src/mostlyright/data_harness/session_probes.py +0 -0
  17. {mostlyright_data-0.19.5 → mostlyright_data-0.19.6}/src/mostlyright/data_harness/skill_assets.py +0 -0
  18. {mostlyright_data-0.19.5 → mostlyright_data-0.19.6}/src/mostlyright/data_harness/table_manifest.py +0 -0
  19. {mostlyright_data-0.19.5 → mostlyright_data-0.19.6}/src/mostlyright/data_harness/thin/__init__.py +0 -0
  20. {mostlyright_data-0.19.5 → mostlyright_data-0.19.6}/src/mostlyright/data_harness/thin/acquire.py +0 -0
  21. {mostlyright_data-0.19.5 → mostlyright_data-0.19.6}/src/mostlyright/data_harness/thin/acquire_cancel.py +0 -0
  22. {mostlyright_data-0.19.5 → mostlyright_data-0.19.6}/src/mostlyright/data_harness/thin/activity.py +0 -0
  23. {mostlyright_data-0.19.5 → mostlyright_data-0.19.6}/src/mostlyright/data_harness/thin/approvals.py +0 -0
  24. {mostlyright_data-0.19.5 → mostlyright_data-0.19.6}/src/mostlyright/data_harness/thin/categories.py +0 -0
  25. {mostlyright_data-0.19.5 → mostlyright_data-0.19.6}/src/mostlyright/data_harness/thin/commands.py +0 -0
  26. {mostlyright_data-0.19.5 → mostlyright_data-0.19.6}/src/mostlyright/data_harness/thin/dataset-categories-v1.json +0 -0
  27. {mostlyright_data-0.19.5 → mostlyright_data-0.19.6}/src/mostlyright/data_harness/thin/download.py +0 -0
  28. {mostlyright_data-0.19.5 → mostlyright_data-0.19.6}/src/mostlyright/data_harness/thin/narrative.py +0 -0
  29. {mostlyright_data-0.19.5 → mostlyright_data-0.19.6}/src/mostlyright/data_harness/thin/parity.py +0 -0
  30. {mostlyright_data-0.19.5 → mostlyright_data-0.19.6}/src/mostlyright/data_harness/thin/probe.py +0 -0
  31. {mostlyright_data-0.19.5 → mostlyright_data-0.19.6}/src/mostlyright/data_harness/thin/progress_vocabulary.py +0 -0
  32. {mostlyright_data-0.19.5 → mostlyright_data-0.19.6}/src/mostlyright/data_harness/thin/propose.py +0 -0
  33. {mostlyright_data-0.19.5 → mostlyright_data-0.19.6}/src/mostlyright/data_harness/thin/recipe.py +0 -0
  34. {mostlyright_data-0.19.5 → mostlyright_data-0.19.6}/src/mostlyright/data_harness/thin/research.py +0 -0
  35. {mostlyright_data-0.19.5 → mostlyright_data-0.19.6}/src/mostlyright/data_harness/thin/router.py +0 -0
  36. {mostlyright_data-0.19.5 → mostlyright_data-0.19.6}/src/mostlyright/data_harness/thin/runs.py +0 -0
  37. {mostlyright_data-0.19.5 → mostlyright_data-0.19.6}/src/mostlyright/data_harness/thin/session.py +0 -0
  38. {mostlyright_data-0.19.5 → mostlyright_data-0.19.6}/src/mostlyright/data_harness/thin/stream.py +0 -0
  39. {mostlyright_data-0.19.5 → mostlyright_data-0.19.6}/src/mostlyright/data_harness/thin/stream_venue.py +0 -0
  40. {mostlyright_data-0.19.5 → mostlyright_data-0.19.6}/src/mostlyright/data_harness/thin/transport.py +0 -0
  41. {mostlyright_data-0.19.5 → mostlyright_data-0.19.6}/src/mostlyright/data_harness/thin/user_agent.py +0 -0
  42. {mostlyright_data-0.19.5 → mostlyright_data-0.19.6}/src/mostlyright/data_harness/thin/v4.py +0 -0
  43. {mostlyright_data-0.19.5 → mostlyright_data-0.19.6}/src/mostlyright/data_harness/thin/v4_artifacts.py +0 -0
  44. {mostlyright_data-0.19.5 → mostlyright_data-0.19.6}/src/mostlyright/data_harness/thin/v4_catalog.py +0 -0
  45. {mostlyright_data-0.19.5 → mostlyright_data-0.19.6}/src/mostlyright/data_harness/thin/v4_connections.py +0 -0
  46. {mostlyright_data-0.19.5 → mostlyright_data-0.19.6}/src/mostlyright/data_harness/thin/v4_dataset_covers.py +0 -0
  47. {mostlyright_data-0.19.5 → mostlyright_data-0.19.6}/src/mostlyright/data_harness/thin/v4_datasets.py +0 -0
  48. {mostlyright_data-0.19.5 → mostlyright_data-0.19.6}/src/mostlyright/data_harness/thin/v4_handoff.py +0 -0
  49. {mostlyright_data-0.19.5 → mostlyright_data-0.19.6}/src/mostlyright/data_harness/thin/v4_narrative.py +0 -0
  50. {mostlyright_data-0.19.5 → mostlyright_data-0.19.6}/src/mostlyright/data_harness/thin/v4_query.py +0 -0
  51. {mostlyright_data-0.19.5 → mostlyright_data-0.19.6}/src/mostlyright/data_harness/thin/v4_runs.py +0 -0
  52. {mostlyright_data-0.19.5 → mostlyright_data-0.19.6}/src/mostlyright/data_harness/thin/v4_secrets.py +0 -0
  53. {mostlyright_data-0.19.5 → mostlyright_data-0.19.6}/src/mostlyright/data_harness/thin/v4_stream.py +0 -0
  54. {mostlyright_data-0.19.5 → mostlyright_data-0.19.6}/src/mostlyright/data_harness/thin/v4_tables.py +0 -0
  55. {mostlyright_data-0.19.5 → mostlyright_data-0.19.6}/src/mostlyright/data_harness/thin/vocabulary.py +0 -0
  56. {mostlyright_data-0.19.5 → mostlyright_data-0.19.6}/src/mostlyright/data_harness/ux/__init__.py +0 -0
  57. {mostlyright_data-0.19.5 → mostlyright_data-0.19.6}/src/mostlyright/data_harness/ux/attendance.py +0 -0
  58. {mostlyright_data-0.19.5 → mostlyright_data-0.19.6}/src/mostlyright/data_harness/ux/clarification.py +0 -0
  59. {mostlyright_data-0.19.5 → mostlyright_data-0.19.6}/src/mostlyright/data_harness/ux/cloud_auth.py +0 -0
  60. {mostlyright_data-0.19.5 → mostlyright_data-0.19.6}/src/mostlyright/data_harness/ux/commands/__init__.py +0 -0
  61. {mostlyright_data-0.19.5 → mostlyright_data-0.19.6}/src/mostlyright/data_harness/ux/commands/auth.py +0 -0
  62. {mostlyright_data-0.19.5 → mostlyright_data-0.19.6}/src/mostlyright/data_harness/ux/commands/clarify.py +0 -0
  63. {mostlyright_data-0.19.5 → mostlyright_data-0.19.6}/src/mostlyright/data_harness/ux/commands/login.py +0 -0
  64. {mostlyright_data-0.19.5 → mostlyright_data-0.19.6}/src/mostlyright/data_harness/ux/commands/whoami.py +0 -0
  65. {mostlyright_data-0.19.5 → mostlyright_data-0.19.6}/src/mostlyright/data_harness/ux/credential_native.py +0 -0
  66. {mostlyright_data-0.19.5 → mostlyright_data-0.19.6}/src/mostlyright/data_harness/ux/credential_store.py +0 -0
  67. {mostlyright_data-0.19.5 → mostlyright_data-0.19.6}/src/mostlyright/data_harness/ux/credentials.py +0 -0
  68. {mostlyright_data-0.19.5 → mostlyright_data-0.19.6}/src/mostlyright/data_harness/ux/login.py +0 -0
  69. {mostlyright_data-0.19.5 → mostlyright_data-0.19.6}/src/mostlyright/data_harness/ux/path_kind.py +0 -0
  70. {mostlyright_data-0.19.5 → mostlyright_data-0.19.6}/src/mostlyright/data_harness/ux/plain_file.py +0 -0
  71. {mostlyright_data-0.19.5 → mostlyright_data-0.19.6}/src/mostlyright/data_harness/ux/remediation.py +0 -0
  72. {mostlyright_data-0.19.5 → mostlyright_data-0.19.6}/src/mostlyright/data_harness/ux/render.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: mostlyright-data
3
- Version: 0.19.5
3
+ Version: 0.19.6
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/
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "mostlyright-data"
3
- version = "0.19.5"
3
+ version = "0.19.6"
4
4
  description = "Mostly Right hosted CLI for reviewed datasets"
5
5
  readme = "README.md"
6
6
  requires-python = ">=3.13"
@@ -640,16 +640,16 @@ seconds -- not a paragraph, and not a report. Use exactly this shape, in this or
640
640
  section out only when there is genuinely nothing to say (shown indented here; the document
641
641
  itself carries the headings at column one):
642
642
 
643
- Two or three plain sentences: what the data is about, why it is worth a look, and what is
644
- in it.
643
+ A plain opening paragraph: what the data contains, what question or model it supports, and
644
+ the facts a reader needs before using it.
645
645
 
646
646
  ## Coverage
647
- - **Window:** the exact dates and the time zone.
648
- - **Grain:** one row per what.
649
- - **Cadence:** how often rows arrive, and how many per day or month.
647
+ - Window: the exact dates and the time zone.
648
+ - Grain: one row per what.
649
+ - Cadence: how often rows arrive, and how many per day or month.
650
650
 
651
651
  ## Columns
652
- - `column_name` — what it measures, in which unit.
652
+ - `column_name`: what it measures, in which unit.
653
653
  - (one bullet per column; group unit-sharing columns on one line where that reads better)
654
654
 
655
655
  ## Missing values
@@ -665,43 +665,33 @@ That is six sections: the opening paragraph, and the five headings under it.
665
665
 
666
666
  **Opening paragraph** (everything before the first `##` heading)
667
667
 
668
- Two or three short sentences, 120 to 280 characters, written for somebody who has never heard of
669
- the source, the venue or the format. Sentence one says what the data is about and what makes it
670
- worth a look, in at most 110 characters. The rest says, in the same plain words, what is in it.
671
-
672
- 1. No tickers, station codes, series codes, format names, publisher names, row definitions (the
673
- sentence that begins `Each row is`) or row counts here. Every one of those facts is in the
674
- sections below, which is where a reader who wants it will look.
675
- 2. No Markdown: no bold, no links, no bullets, no code.
676
- 3. A hook is an interesting fact stated plainly, never a pitch. Banned outright: comprehensive,
677
- rich, valuable, powerful, unlock, explore, dive into, perfect for, insights, "this dataset", a
678
- rhetorical question, an exclamation mark.
679
- 4. Every number in it must be one the run established. "About every half hour" and "thousands of
680
- markets" are claims, and a claim that is not on the run does not go here.
681
- 5. The stranger test, before anything else is written: read sentence one alone under the title. If
682
- a curious non-specialist could not say what the data is about and would not want the next line,
683
- rewrite it.
684
- 6. Plain and short. Every sentence under about twenty words, every sentence a fact: the venue, the
685
- subject, the horizon, the cadence, the window. Nothing about what a reader might do with it: no
686
- "so you can", "a way to", "ready to", "for seeing". Say what is there and stop.
687
-
688
- One airport weather table, the shape to avoid and the shape to write. To avoid:
689
-
690
- Each row is one METAR or SPECI weather report from Beijing (ZBAA), since January 2020, via
691
- Iowa Environmental Mesonet. 117,876 reports of temperature, wind, pressure, visibility with
692
- the day's highest and lowest reading.
693
-
694
- To write:
695
-
696
- Beijing airport weather since 2020, a report about every half hour, with the day's high and
697
- low on each row. Temperature, wind, pressure and visibility as the airport recorded them.
698
-
699
- The station code, the report types, the publisher and the count all moved down to Coverage and to
700
- Source and rights, where a reader who wants them looks. "About every half hour" stays only because
701
- Coverage puts a month at 1,302 to 1,591 rows, which is one row every 27 to 33 minutes. Three ways
702
- to fail: the pitch (`Unlock real-time insights into how prediction markets price
703
- the weather!`), the promise (`ready to test a forecast against what actually happened`) and the
704
- bare subject with no reason to care (`Beijing weather data.`).
668
+ Write as an engineer explaining a useful table to another engineer. The opening may have more than
669
+ two sentences. Start with the concrete records the dataset contains. Then say which question the
670
+ records help answer or which model they can support. Include geography, time range, row grain,
671
+ update cadence and material limitations when those facts are known. Put a join, transformation or
672
+ source caveat here only when it changes how somebody should use the data.
673
+
674
+ 1. The first two sentences must distinguish this dataset from every other dataset in the set. If
675
+ both sentences could describe another dataset unchanged, rewrite them.
676
+ 2. Use ordinary verbs such as contains, tracks, joins, updates, records and returns. Vary sentence
677
+ length, and use short sentences for the important facts.
678
+ 3. Preserve every established fact. Never invent coverage, freshness, quality, licensing or an
679
+ intended use.
680
+ 4. Write `Mostly Right`, with a space, except inside a literal identifier that uses another form.
681
+ 5. Use no Markdown in the opening paragraph. Do not use generic openings such as `This dataset
682
+ provides`, marketing claims such as `comprehensive`, `powerful` or `high-quality`, or abstract
683
+ phrases such as `enables insights`, `facilitates analysis` or `serves as a valuable resource`.
684
+ 6. Do not explain page design or metadata fields. Do not use em dashes, semicolons, bold labels or
685
+ fake quotations. Explain the data before implementation details.
686
+
687
+ After the build establishes each fact, an airport-weather opening can read:
688
+
689
+ Hourly weather observations from 20 airport stations across the United States. Each row records
690
+ one station report with temperature, dew point, wind, visibility, and observation time. Use it
691
+ to compare observed conditions across stations and time or train a short-term weather model.
692
+ The table keeps multiple reports within an hour when conditions change, so aggregate it before
693
+ using one row per station-hour. Mostly Right refreshes the recent window and preserves older
694
+ observations.
705
695
 
706
696
  **Body rules** (the five sections under the headings)
707
697
  1. Every sentence must stay true and complete when quoted alone, away from the page. Never
@@ -715,21 +705,26 @@ bare subject with no reason to care (`Beijing weather data.`).
715
705
  5. Everything in the paragraph below still applies.
716
706
 
717
707
  Rules that keep it readable: short sentences; no sentence over about twenty-five words; bullets
718
- rather than comma lists; no tables, no code blocks, no links to internal tools, no headings beyond
708
+ rather than comma lists; no bold labels, em dashes, semicolons or fake quotations; no tables, no
709
+ code blocks, no links to internal tools, no headings beyond
719
710
  the ones above. Spell out the names a reader would search for -- the place, the identifiers in
720
711
  every common form, the programme and the publisher -- once each, under Coverage and under
721
712
  Source and rights, and never as a keyword list. A one-line description is a defect to fix in the
722
713
  revision, not a style choice. Give `table.description` the grain and the window.
714
+ Every statement in the opening and body must preserve an established fact. Never add unsupported
715
+ coverage, freshness, quality, licensing or intended use.
723
716
 
724
717
  **Check before writing.** Fix and re-check until every line passes:
725
718
  - title: at most 60 characters, contains the place, contains no colon, pipe or exclamation mark,
726
719
  no brand, no "dataset" or "data", no version number, no run date
727
- - opening paragraph: two or three sentences, each under about twenty words, 120 to 280 characters,
728
- first full stop before character 110, no Markdown, no identifier, publisher name, row count or
729
- row definition, no banned word, no clause about what a reader might do
720
+ - opening paragraph: at least two distinct sentences, with the concrete records first and the
721
+ question or model they support next; include known geography, time range, grain, update cadence
722
+ and material limitations; no Markdown, banned style or invented fact
730
723
  - category: exactly one fixed ID saved and verified before recipe registration
731
724
  - topics: 3 to 8 descriptive tags, no duplicates, lowercase, at most 40 characters each
732
725
  - licence: an SPDX identifier the sources actually grant, or `--license` left off
726
+ - whole description: every statement preserves an established fact; no bold labels, em dashes,
727
+ semicolons, fake quotations or unsupported claims
733
728
  - every `##` heading in DESCRIPTION.md is one of the five, in that relative order, none repeated
734
729
 
735
730
  **Every dataset gets a cover before its first run is presented.** Once the description is