mapsmith 0.6.0__tar.gz → 0.6.1__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 (139) hide show
  1. {mapsmith-0.6.0 → mapsmith-0.6.1}/.zenodo.json +1 -1
  2. {mapsmith-0.6.0 → mapsmith-0.6.1}/CHANGELOG.md +39 -0
  3. {mapsmith-0.6.0 → mapsmith-0.6.1}/CITATION.cff +1 -1
  4. {mapsmith-0.6.0 → mapsmith-0.6.1}/PKG-INFO +13 -12
  5. {mapsmith-0.6.0 → mapsmith-0.6.1}/README.md +12 -11
  6. {mapsmith-0.6.0 → mapsmith-0.6.1}/docs/manifest-vocabulary.md +5 -4
  7. {mapsmith-0.6.0 → mapsmith-0.6.1}/examples/01_verified_geoprocessing.ipynb +25 -25
  8. {mapsmith-0.6.0 → mapsmith-0.6.1}/examples/02_terrain_hydrology.ipynb +36 -36
  9. {mapsmith-0.6.0 → mapsmith-0.6.1}/examples/03_validated_plans.ipynb +23 -23
  10. {mapsmith-0.6.0 → mapsmith-0.6.1}/pyproject.toml +1 -1
  11. {mapsmith-0.6.0 → mapsmith-0.6.1}/server.json +3 -3
  12. {mapsmith-0.6.0 → mapsmith-0.6.1}/site/build.py +54 -0
  13. {mapsmith-0.6.0 → mapsmith-0.6.1}/site/index.template.html +1 -0
  14. {mapsmith-0.6.0 → mapsmith-0.6.1}/src/mapsmith/__init__.py +1 -1
  15. {mapsmith-0.6.0 → mapsmith-0.6.1}/src/mapsmith/antimeridian.py +109 -19
  16. {mapsmith-0.6.0 → mapsmith-0.6.1}/src/mapsmith/engines/vector.py +13 -2
  17. {mapsmith-0.6.0 → mapsmith-0.6.1}/src/mapsmith/grid.py +8 -5
  18. {mapsmith-0.6.0 → mapsmith-0.6.1}/src/mapsmith/provenance.py +5 -5
  19. {mapsmith-0.6.0 → mapsmith-0.6.1}/tests/data/manifest-v1.schema.json +29 -4
  20. {mapsmith-0.6.0 → mapsmith-0.6.1}/tests/data/manifest_spec_validator.py +39 -1
  21. {mapsmith-0.6.0 → mapsmith-0.6.1}/tests/test_failure_manifest.py +4 -2
  22. {mapsmith-0.6.0 → mapsmith-0.6.1}/tests/test_redaction.py +56 -54
  23. {mapsmith-0.6.0 → mapsmith-0.6.1}/tests/test_showcase.py +36 -0
  24. {mapsmith-0.6.0 → mapsmith-0.6.1}/tests/test_summarize_points_in_polygons.py +71 -0
  25. {mapsmith-0.6.0 → mapsmith-0.6.1}/tests/test_verify.py +18 -4
  26. {mapsmith-0.6.0 → mapsmith-0.6.1}/.dockerignore +0 -0
  27. {mapsmith-0.6.0 → mapsmith-0.6.1}/.gitignore +0 -0
  28. {mapsmith-0.6.0 → mapsmith-0.6.1}/CLAUDE.md +0 -0
  29. {mapsmith-0.6.0 → mapsmith-0.6.1}/CONTRIBUTING.md +0 -0
  30. {mapsmith-0.6.0 → mapsmith-0.6.1}/Dockerfile +0 -0
  31. {mapsmith-0.6.0 → mapsmith-0.6.1}/LICENSE +0 -0
  32. {mapsmith-0.6.0 → mapsmith-0.6.1}/MANIFESTO.md +0 -0
  33. {mapsmith-0.6.0 → mapsmith-0.6.1}/SECURITY.md +0 -0
  34. {mapsmith-0.6.0 → mapsmith-0.6.1}/TRADEMARKS.md +0 -0
  35. {mapsmith-0.6.0 → mapsmith-0.6.1}/docker-compose.yml +0 -0
  36. {mapsmith-0.6.0 → mapsmith-0.6.1}/docs/argleton-run.json +0 -0
  37. {mapsmith-0.6.0 → mapsmith-0.6.1}/docs/benchmarks.md +0 -0
  38. {mapsmith-0.6.0 → mapsmith-0.6.1}/docs/catalog-entry-spec.md +0 -0
  39. {mapsmith-0.6.0 → mapsmith-0.6.1}/examples/README.md +0 -0
  40. {mapsmith-0.6.0 → mapsmith-0.6.1}/examples/fixtures/mount_st_helens_dem.tif +0 -0
  41. {mapsmith-0.6.0 → mapsmith-0.6.1}/funding.json +0 -0
  42. {mapsmith-0.6.0 → mapsmith-0.6.1}/glama.json +0 -0
  43. {mapsmith-0.6.0 → mapsmith-0.6.1}/schema/operation.schema.json +0 -0
  44. {mapsmith-0.6.0 → mapsmith-0.6.1}/src/mapsmith/catalog.py +0 -0
  45. {mapsmith-0.6.0 → mapsmith-0.6.1}/src/mapsmith/datum.py +0 -0
  46. {mapsmith-0.6.0 → mapsmith-0.6.1}/src/mapsmith/discovery_log.py +0 -0
  47. {mapsmith-0.6.0 → mapsmith-0.6.1}/src/mapsmith/engines/__init__.py +0 -0
  48. {mapsmith-0.6.0 → mapsmith-0.6.1}/src/mapsmith/engines/dispatch.py +0 -0
  49. {mapsmith-0.6.0 → mapsmith-0.6.1}/src/mapsmith/engines/duckdb_engine.py +0 -0
  50. {mapsmith-0.6.0 → mapsmith-0.6.1}/src/mapsmith/engines/esri.py +0 -0
  51. {mapsmith-0.6.0 → mapsmith-0.6.1}/src/mapsmith/engines/geodesy.py +0 -0
  52. {mapsmith-0.6.0 → mapsmith-0.6.1}/src/mapsmith/engines/linework.py +0 -0
  53. {mapsmith-0.6.0 → mapsmith-0.6.1}/src/mapsmith/engines/network.py +0 -0
  54. {mapsmith-0.6.0 → mapsmith-0.6.1}/src/mapsmith/engines/raster.py +0 -0
  55. {mapsmith-0.6.0 → mapsmith-0.6.1}/src/mapsmith/engines/sampling.py +0 -0
  56. {mapsmith-0.6.0 → mapsmith-0.6.1}/src/mapsmith/engines/sedona_engine.py +0 -0
  57. {mapsmith-0.6.0 → mapsmith-0.6.1}/src/mapsmith/engines/spatial_stats.py +0 -0
  58. {mapsmith-0.6.0 → mapsmith-0.6.1}/src/mapsmith/engines/summaries.py +0 -0
  59. {mapsmith-0.6.0 → mapsmith-0.6.1}/src/mapsmith/engines/whitebox_engine.py +0 -0
  60. {mapsmith-0.6.0 → mapsmith-0.6.1}/src/mapsmith/gdal_policy.py +0 -0
  61. {mapsmith-0.6.0 → mapsmith-0.6.1}/src/mapsmith/jobs.py +0 -0
  62. {mapsmith-0.6.0 → mapsmith-0.6.1}/src/mapsmith/lineage.py +0 -0
  63. {mapsmith-0.6.0 → mapsmith-0.6.1}/src/mapsmith/plans/__init__.py +0 -0
  64. {mapsmith-0.6.0 → mapsmith-0.6.1}/src/mapsmith/plans/executor.py +0 -0
  65. {mapsmith-0.6.0 → mapsmith-0.6.1}/src/mapsmith/plans/models.py +0 -0
  66. {mapsmith-0.6.0 → mapsmith-0.6.1}/src/mapsmith/plans/registry.py +0 -0
  67. {mapsmith-0.6.0 → mapsmith-0.6.1}/src/mapsmith/plans/validator.py +0 -0
  68. {mapsmith-0.6.0 → mapsmith-0.6.1}/src/mapsmith/preview.py +0 -0
  69. {mapsmith-0.6.0 → mapsmith-0.6.1}/src/mapsmith/readers.py +0 -0
  70. {mapsmith-0.6.0 → mapsmith-0.6.1}/src/mapsmith/retrieval.py +0 -0
  71. {mapsmith-0.6.0 → mapsmith-0.6.1}/src/mapsmith/server.py +0 -0
  72. {mapsmith-0.6.0 → mapsmith-0.6.1}/src/mapsmith/sql_policy.py +0 -0
  73. {mapsmith-0.6.0 → mapsmith-0.6.1}/src/mapsmith/stacks.py +0 -0
  74. {mapsmith-0.6.0 → mapsmith-0.6.1}/src/mapsmith/ui.py +0 -0
  75. {mapsmith-0.6.0 → mapsmith-0.6.1}/src/mapsmith/verify.py +0 -0
  76. {mapsmith-0.6.0 → mapsmith-0.6.1}/src/mapsmith/workspace.py +0 -0
  77. {mapsmith-0.6.0 → mapsmith-0.6.1}/tests/conftest.py +0 -0
  78. {mapsmith-0.6.0 → mapsmith-0.6.1}/tests/data/discovery_queries.json +0 -0
  79. {mapsmith-0.6.0 → mapsmith-0.6.1}/tests/test_ambiguous_layer.py +0 -0
  80. {mapsmith-0.6.0 → mapsmith-0.6.1}/tests/test_antimeridian.py +0 -0
  81. {mapsmith-0.6.0 → mapsmith-0.6.1}/tests/test_band_math.py +0 -0
  82. {mapsmith-0.6.0 → mapsmith-0.6.1}/tests/test_catalog.py +0 -0
  83. {mapsmith-0.6.0 → mapsmith-0.6.1}/tests/test_catalog_applicability.py +0 -0
  84. {mapsmith-0.6.0 → mapsmith-0.6.1}/tests/test_catalog_entry_spec.py +0 -0
  85. {mapsmith-0.6.0 → mapsmith-0.6.1}/tests/test_catalog_retrieval.py +0 -0
  86. {mapsmith-0.6.0 → mapsmith-0.6.1}/tests/test_centroid_convert.py +0 -0
  87. {mapsmith-0.6.0 → mapsmith-0.6.1}/tests/test_clip_reclassify_raster.py +0 -0
  88. {mapsmith-0.6.0 → mapsmith-0.6.1}/tests/test_contours_and_cost.py +0 -0
  89. {mapsmith-0.6.0 → mapsmith-0.6.1}/tests/test_dashboard.py +0 -0
  90. {mapsmith-0.6.0 → mapsmith-0.6.1}/tests/test_datum.py +0 -0
  91. {mapsmith-0.6.0 → mapsmith-0.6.1}/tests/test_describe_raster.py +0 -0
  92. {mapsmith-0.6.0 → mapsmith-0.6.1}/tests/test_discovery_contract.py +0 -0
  93. {mapsmith-0.6.0 → mapsmith-0.6.1}/tests/test_discovery_log.py +0 -0
  94. {mapsmith-0.6.0 → mapsmith-0.6.1}/tests/test_discovery_report.py +0 -0
  95. {mapsmith-0.6.0 → mapsmith-0.6.1}/tests/test_duckdb_sandbox.py +0 -0
  96. {mapsmith-0.6.0 → mapsmith-0.6.1}/tests/test_engines.py +0 -0
  97. {mapsmith-0.6.0 → mapsmith-0.6.1}/tests/test_environment.py +0 -0
  98. {mapsmith-0.6.0 → mapsmith-0.6.1}/tests/test_gdal_policy.py +0 -0
  99. {mapsmith-0.6.0 → mapsmith-0.6.1}/tests/test_geodesy.py +0 -0
  100. {mapsmith-0.6.0 → mapsmith-0.6.1}/tests/test_geoparquet2.py +0 -0
  101. {mapsmith-0.6.0 → mapsmith-0.6.1}/tests/test_grid_registration.py +0 -0
  102. {mapsmith-0.6.0 → mapsmith-0.6.1}/tests/test_lineage.py +0 -0
  103. {mapsmith-0.6.0 → mapsmith-0.6.1}/tests/test_linework.py +0 -0
  104. {mapsmith-0.6.0 → mapsmith-0.6.1}/tests/test_measure_area.py +0 -0
  105. {mapsmith-0.6.0 → mapsmith-0.6.1}/tests/test_merge_simplify.py +0 -0
  106. {mapsmith-0.6.0 → mapsmith-0.6.1}/tests/test_nearest_explode.py +0 -0
  107. {mapsmith-0.6.0 → mapsmith-0.6.1}/tests/test_network.py +0 -0
  108. {mapsmith-0.6.0 → mapsmith-0.6.1}/tests/test_overlay_dissolve.py +0 -0
  109. {mapsmith-0.6.0 → mapsmith-0.6.1}/tests/test_path_containment.py +0 -0
  110. {mapsmith-0.6.0 → mapsmith-0.6.1}/tests/test_plans.py +0 -0
  111. {mapsmith-0.6.0 → mapsmith-0.6.1}/tests/test_preview.py +0 -0
  112. {mapsmith-0.6.0 → mapsmith-0.6.1}/tests/test_published_figures.py +0 -0
  113. {mapsmith-0.6.0 → mapsmith-0.6.1}/tests/test_raster.py +0 -0
  114. {mapsmith-0.6.0 → mapsmith-0.6.1}/tests/test_raster_reproject_bands.py +0 -0
  115. {mapsmith-0.6.0 → mapsmith-0.6.1}/tests/test_resample_raster.py +0 -0
  116. {mapsmith-0.6.0 → mapsmith-0.6.1}/tests/test_retrieval.py +0 -0
  117. {mapsmith-0.6.0 → mapsmith-0.6.1}/tests/test_retrieval_at_scale.py +0 -0
  118. {mapsmith-0.6.0 → mapsmith-0.6.1}/tests/test_retrieval_degradation.py +0 -0
  119. {mapsmith-0.6.0 → mapsmith-0.6.1}/tests/test_sampling.py +0 -0
  120. {mapsmith-0.6.0 → mapsmith-0.6.1}/tests/test_select_and_extract.py +0 -0
  121. {mapsmith-0.6.0 → mapsmith-0.6.1}/tests/test_smoke.py +0 -0
  122. {mapsmith-0.6.0 → mapsmith-0.6.1}/tests/test_south_up_and_mixed.py +0 -0
  123. {mapsmith-0.6.0 → mapsmith-0.6.1}/tests/test_spatial_stats.py +0 -0
  124. {mapsmith-0.6.0 → mapsmith-0.6.1}/tests/test_sql_axis_order.py +0 -0
  125. {mapsmith-0.6.0 → mapsmith-0.6.1}/tests/test_sql_credentials.py +0 -0
  126. {mapsmith-0.6.0 → mapsmith-0.6.1}/tests/test_stacks.py +0 -0
  127. {mapsmith-0.6.0 → mapsmith-0.6.1}/tests/test_summaries.py +0 -0
  128. {mapsmith-0.6.0 → mapsmith-0.6.1}/tests/test_terrain_derivatives.py +0 -0
  129. {mapsmith-0.6.0 → mapsmith-0.6.1}/tests/test_tier_a_operations.py +0 -0
  130. {mapsmith-0.6.0 → mapsmith-0.6.1}/tests/test_ui.py +0 -0
  131. {mapsmith-0.6.0 → mapsmith-0.6.1}/tests/test_verification_status.py +0 -0
  132. {mapsmith-0.6.0 → mapsmith-0.6.1}/tests/test_verify_repair.py +0 -0
  133. {mapsmith-0.6.0 → mapsmith-0.6.1}/tests/test_voronoi.py +0 -0
  134. {mapsmith-0.6.0 → mapsmith-0.6.1}/tests/test_whitebox.py +0 -0
  135. {mapsmith-0.6.0 → mapsmith-0.6.1}/tests/test_whitebox_derivatives.py +0 -0
  136. {mapsmith-0.6.0 → mapsmith-0.6.1}/tests/test_whitebox_encoding.py +0 -0
  137. {mapsmith-0.6.0 → mapsmith-0.6.1}/tests/test_whitebox_geographic_refusal.py +0 -0
  138. {mapsmith-0.6.0 → mapsmith-0.6.1}/tests/test_worked_example.py +0 -0
  139. {mapsmith-0.6.0 → mapsmith-0.6.1}/tests/test_workspace.py +0 -0
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "upload_type": "software",
3
3
  "title": "MapSmith: geospatial processing over MCP, with verifiable provenance",
4
- "version": "0.6.0",
4
+ "version": "0.6.1",
5
5
  "creators": [
6
6
  {"name": "The MapSmith project"}
7
7
  ],
@@ -8,6 +8,45 @@ All notable changes to MapSmith are documented here, in the format of
8
8
 
9
9
  Nothing yet.
10
10
 
11
+ ## [0.6.1] - 2026-09-25
12
+
13
+ A small release on the day of 0.6.0. It moves no manifest key and changes no
14
+ answer that 0.6.0 got right: it stops a refusal 0.6.0 introduced from firing on
15
+ a layer written in 0..360 longitudes, gives two refusals the right way out, and
16
+ declares the specification's current draft.
17
+
18
+ ### Changed
19
+
20
+ - **Records declare `spec_version` `1.0.0-draft.8`.** Two drafts in one day,
21
+ both narrowings of where a producer may add a key: draft.7 requires every
22
+ key of `crs_decisions` the specification does not define to be named
23
+ `x-<producer>:<name>`, which it had left to one reading of an ambiguous
24
+ sentence, and draft.8 carries the rule inside `transformation`,
25
+ `round_trip` and `repairs[]`. MapSmith already named every one of them that
26
+ way, so no key moves: a reader keying on the label sees draft.8, a reader
27
+ keying on fields sees nothing change. The vendored schema and validator are
28
+ draft.8's, and the conformance sweep validates every writer's record
29
+ against them.
30
+
31
+ ### Fixed
32
+
33
+ - **A layer written in 0..360 longitudes had its seam in the wrong place.**
34
+ The antimeridian refusal of 0.6.0 took the edge of the plane to be -180/180,
35
+ so the world written as `box(0, -90, 360, 90)` was refused, the way 0.6.0's
36
+ own review had found Antarctica refused in -180..180. For such a layer the
37
+ edge is 0/360, and the ring that really is drawn naively crosses the prime
38
+ meridian: the refusal now says so and tells its author to split there, where
39
+ it used to send them to 180. A layer is read as 0..360 when it has no
40
+ negative longitude and some beyond 180 -- not whenever one vertex passes
41
+ 180, which the first version of this fix did, and which refused the world
42
+ beside a polygon overshooting 180 by 1e-7. Edges along either pair of seams
43
+ are exempt in every layer.
44
+ - **"No UTM zone" said the data was centred on the antimeridian, whatever the
45
+ data, and offered no way out.** The realistic cause is latitude — UTM stops
46
+ at 84N and 80S — and the message now says that and names a polar CRS to use
47
+ (UPS, or a polar stereographic), for data that crosses 180 and for data that
48
+ does not.
49
+
11
50
  ## [0.6.0] - 2026-09-25
12
51
 
13
52
  The reason to upgrade is in **Fixed**: five operations stop reading a zone drawn
@@ -12,7 +12,7 @@ identifiers:
12
12
  value: "10.5281/zenodo.22213091"
13
13
  description: "Concept DOI — always resolves to the latest release"
14
14
  license: AGPL-3.0-or-later
15
- version: "0.6.0"
15
+ version: "0.6.1"
16
16
  date-released: "2026-09-25"
17
17
  keywords:
18
18
  - GIS
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.5
2
2
  Name: mapsmith
3
- Version: 0.6.0
3
+ Version: 0.6.1
4
4
  Summary: Professional-grade GIS geoprocessing over MCP, with verifiable provenance
5
5
  Project-URL: Homepage, https://github.com/mapsmith-ai/MapSmith
6
6
  Project-URL: Repository, https://github.com/mapsmith-ai/MapSmith
@@ -87,7 +87,7 @@ MapSmith's private output: JSON Schema, a toolchain-free validator, a conformanc
87
87
  hundred-line emitter that never imports MapSmith. Records carry `spec_version`, and CI validates
88
88
  real MapSmith output against the spec's own validator. The specification is archived and citable
89
89
  as [10.5281/zenodo.22205213](https://doi.org/10.5281/zenodo.22205213), a concept DOI that
90
- resolves to the latest *archived* draft. These records declare `1.0.0-draft.6`; if the DOI shows
90
+ resolves to the latest *archived* draft. These records declare `1.0.0-draft.8`; if the DOI shows
91
91
  an earlier one, the archive has not caught up, and the
92
92
  [repository](https://github.com/mapsmith-ai/manifest-spec) holds the text they are written against. The names MapSmith puts
93
93
  in a record beyond the ones the specification defines — every extension check name, and every
@@ -263,17 +263,18 @@ or from a terminal: `code --add-mcp '{"name":"mapsmith","command":"uvx","args":[
263
263
  To check it runs before wiring a client, `uvx mapsmith` starts the server on stdio
264
264
  (Ctrl-C to quit) — it speaks MCP, not a CLI, so a silent prompt means it is working.
265
265
 
266
- This page describes **0.6.0**, which is what that command installs. When `main` runs ahead of
266
+ This page describes **0.6.1**, which is what that command installs. When `main` runs ahead of
267
267
  the published artifact this paragraph says so and names the difference — a reader should never
268
- have to find out by calling a tool that is not there. `main` is at 0.6.0 today, with nothing
268
+ have to find out by calling a tool that is not there. `main` is at 0.6.1 today, with nothing
269
269
  unreleased beyond it.
270
270
 
271
- **If you read manifests, 0.6.0 moves one key**: `x-mapsmith:round_trip` is now `round_trip`,
272
- because the specification made it a core key in `1.0.0-draft.6` and forbids recording that
273
- fact under a prefixed name. The shape is unchanged, and records declare `spec_version`
274
- `1.0.0-draft.6`. From 0.4.0, 0.5.0 had already renamed eight `crs_decisions` keys, the
275
- top-level `mapsmith_version` (read `producer.version`), two fields of the round trip, two of
276
- `repairs[]` and `engine.geometry_library`; the changelog lists each with what to read instead.
271
+ **If you read manifests, 0.6.1 moves no key**: records declare `spec_version`
272
+ `1.0.0-draft.8`, two drafts past 0.6.0's `draft.6`, and both drafts only narrowed where a
273
+ producer may add a key of its own — which MapSmith already did the narrower way. From 0.5.x,
274
+ 0.6.0 renamed `x-mapsmith:round_trip` to `round_trip`; from 0.4.0, 0.5.0 had renamed eight
275
+ `crs_decisions` keys, the top-level `mapsmith_version` (read `producer.version`), two fields of
276
+ the round trip, two of `repairs[]` and `engine.geometry_library`. The changelog lists each with
277
+ what to read instead.
277
278
 
278
279
  Then ask your agent things like:
279
280
 
@@ -299,8 +300,8 @@ for it:
299
300
 
300
301
  ```json
301
302
  {
302
- "spec_version": "1.0.0-draft.6",
303
- "producer": {"name": "mapsmith", "version": "0.6.0"},
303
+ "spec_version": "1.0.0-draft.8",
304
+ "producer": {"name": "mapsmith", "version": "0.6.1"},
304
305
  "operation": "buffer_layer",
305
306
  "parameters": {"distance_meters": 300.0},
306
307
  "inputs": [{
@@ -45,7 +45,7 @@ MapSmith's private output: JSON Schema, a toolchain-free validator, a conformanc
45
45
  hundred-line emitter that never imports MapSmith. Records carry `spec_version`, and CI validates
46
46
  real MapSmith output against the spec's own validator. The specification is archived and citable
47
47
  as [10.5281/zenodo.22205213](https://doi.org/10.5281/zenodo.22205213), a concept DOI that
48
- resolves to the latest *archived* draft. These records declare `1.0.0-draft.6`; if the DOI shows
48
+ resolves to the latest *archived* draft. These records declare `1.0.0-draft.8`; if the DOI shows
49
49
  an earlier one, the archive has not caught up, and the
50
50
  [repository](https://github.com/mapsmith-ai/manifest-spec) holds the text they are written against. The names MapSmith puts
51
51
  in a record beyond the ones the specification defines — every extension check name, and every
@@ -221,17 +221,18 @@ or from a terminal: `code --add-mcp '{"name":"mapsmith","command":"uvx","args":[
221
221
  To check it runs before wiring a client, `uvx mapsmith` starts the server on stdio
222
222
  (Ctrl-C to quit) — it speaks MCP, not a CLI, so a silent prompt means it is working.
223
223
 
224
- This page describes **0.6.0**, which is what that command installs. When `main` runs ahead of
224
+ This page describes **0.6.1**, which is what that command installs. When `main` runs ahead of
225
225
  the published artifact this paragraph says so and names the difference — a reader should never
226
- have to find out by calling a tool that is not there. `main` is at 0.6.0 today, with nothing
226
+ have to find out by calling a tool that is not there. `main` is at 0.6.1 today, with nothing
227
227
  unreleased beyond it.
228
228
 
229
- **If you read manifests, 0.6.0 moves one key**: `x-mapsmith:round_trip` is now `round_trip`,
230
- because the specification made it a core key in `1.0.0-draft.6` and forbids recording that
231
- fact under a prefixed name. The shape is unchanged, and records declare `spec_version`
232
- `1.0.0-draft.6`. From 0.4.0, 0.5.0 had already renamed eight `crs_decisions` keys, the
233
- top-level `mapsmith_version` (read `producer.version`), two fields of the round trip, two of
234
- `repairs[]` and `engine.geometry_library`; the changelog lists each with what to read instead.
229
+ **If you read manifests, 0.6.1 moves no key**: records declare `spec_version`
230
+ `1.0.0-draft.8`, two drafts past 0.6.0's `draft.6`, and both drafts only narrowed where a
231
+ producer may add a key of its own — which MapSmith already did the narrower way. From 0.5.x,
232
+ 0.6.0 renamed `x-mapsmith:round_trip` to `round_trip`; from 0.4.0, 0.5.0 had renamed eight
233
+ `crs_decisions` keys, the top-level `mapsmith_version` (read `producer.version`), two fields of
234
+ the round trip, two of `repairs[]` and `engine.geometry_library`. The changelog lists each with
235
+ what to read instead.
235
236
 
236
237
  Then ask your agent things like:
237
238
 
@@ -257,8 +258,8 @@ for it:
257
258
 
258
259
  ```json
259
260
  {
260
- "spec_version": "1.0.0-draft.6",
261
- "producer": {"name": "mapsmith", "version": "0.6.0"},
261
+ "spec_version": "1.0.0-draft.8",
262
+ "producer": {"name": "mapsmith", "version": "0.6.1"},
262
263
  "operation": "buffer_layer",
263
264
  "parameters": {"distance_meters": 300.0},
264
265
  "inputs": [{
@@ -2,7 +2,7 @@
2
2
 
3
3
  # The names MapSmith writes into a manifest
4
4
 
5
- Against `1.0.0-draft.6` of the [manifest specification](https://github.com/mapsmith-ai/manifest-spec).
5
+ Against `1.0.0-draft.8` of the [manifest specification](https://github.com/mapsmith-ai/manifest-spec).
6
6
 
7
7
  Section 3.6 of that specification makes `verification[].name` a closed core
8
8
  plus extensions spelled `x-<producer>:<name>`, so a consumer can branch on it
@@ -107,7 +107,7 @@ reads them as check results.
107
107
  ## Extension fields in `environment` (4)
108
108
 
109
109
  Section 3.8 asks for the configuration **as the engine reports it**, and its
110
- examples are `PROJ_NETWORK`, the `GDAL_*` variables and `AREA_OR_POINT`. So a
110
+ examples are `PROJ_NETWORK` and the `GDAL_*` variables. So a
111
111
  real setting keeps the engine's own spelling and anything MapSmith worked out
112
112
  carries the prefix. Inside one object the difference is visible without a
113
113
  lookup: an UPPER_SNAKE key is a setting, a prefixed one is our reading of it.
@@ -128,7 +128,8 @@ words and not ours: `GDAL_GEOREF_SOURCES` · `GDAL_PAM_ENABLED`.
128
128
 
129
129
  ## Extension fields in `crs_decisions` (5)
130
130
 
131
- Section 3.7 recommends the keys of that object and permits more. These are
131
+ Section 3.7 recommends the keys of that object, and since draft.7 every other
132
+ key MUST be named `x-<producer>:<name>`. These are
132
133
  MapSmith's, and each one carries the reason it is **not** a synonym of a key
133
134
  the specification already has — because a prefix cannot answer that question,
134
135
  and two keys that started as synonyms are why this list exists.
@@ -138,7 +139,7 @@ and two keys that started as synonyms are why this list exists.
138
139
  | `x-mapsmith:computed_in` | Not `analysis_crs`, and its absence is the point. The Esri stack buffers geodesically in the input's own geographic CRS, so no analysis CRS was chosen; naming one would let a consumer read EPSG:4326 as the CRS a metric computation happened in. |
139
140
  | `x-mapsmith:input_crs_discarded` | Not `source_crs`, which the specification defines as the system the coordinates WERE IN. This operation exists because that declaration is wrong: a traverse on an assumed grid was never in the CRS its file claimed, so the spec key would state what the run denies. |
140
141
  | `x-mapsmith:inputs_reprojected` | Not `source_crs`: that says where the OPERATION's coordinates were, and these are other inputs brought to meet them. The output never was in the CRS named here. |
141
- | `x-mapsmith:raster_registration` | Cell registration is not a coordinate system. Section 3.7 has no key for it, and section 3.8 lists AREA_OR_POINT under `environment` -- which is a tag INSIDE the file, not configuration beside it, so that list and this key disagree and the specification is the one to fix. |
142
+ | `x-mapsmith:raster_registration` | Cell registration is not a coordinate system, and section 3.7 has no key for it. Not `environment` either: AREA_OR_POINT is a tag INSIDE the file, so it is data, and section 3.8 says a producer's reading of it goes in `crs_decisions` under the producer's own prefixed key. |
142
143
  | `x-mapsmith:raster_registration_reason` | Not `reason`, which belongs to the CRS decision and is already taken. Two different reasons under one key silently replaced each other once, and a test caught it. |
143
144
 
144
145
  ## Extension fields inside `crs_decisions.transformation` (2)
@@ -18,10 +18,10 @@
18
18
  "id": "070d8f72",
19
19
  "metadata": {
20
20
  "execution": {
21
- "iopub.execute_input": "2026-09-25T09:00:23.121159Z",
22
- "iopub.status.busy": "2026-09-25T09:00:23.121159Z",
23
- "iopub.status.idle": "2026-09-25T09:00:29.547570Z",
24
- "shell.execute_reply": "2026-09-25T09:00:29.545558Z"
21
+ "iopub.execute_input": "2026-09-25T12:12:31.143101Z",
22
+ "iopub.status.busy": "2026-09-25T12:12:31.143101Z",
23
+ "iopub.status.idle": "2026-09-25T12:12:32.005473Z",
24
+ "shell.execute_reply": "2026-09-25T12:12:32.005473Z"
25
25
  }
26
26
  },
27
27
  "outputs": [
@@ -127,10 +127,10 @@
127
127
  "id": "9816266e",
128
128
  "metadata": {
129
129
  "execution": {
130
- "iopub.execute_input": "2026-09-25T09:00:29.551580Z",
131
- "iopub.status.busy": "2026-09-25T09:00:29.550581Z",
132
- "iopub.status.idle": "2026-09-25T09:00:30.342316Z",
133
- "shell.execute_reply": "2026-09-25T09:00:30.339798Z"
130
+ "iopub.execute_input": "2026-09-25T12:12:32.008883Z",
131
+ "iopub.status.busy": "2026-09-25T12:12:32.008883Z",
132
+ "iopub.status.idle": "2026-09-25T12:12:32.198871Z",
133
+ "shell.execute_reply": "2026-09-25T12:12:32.197531Z"
134
134
  }
135
135
  },
136
136
  "outputs": [
@@ -170,10 +170,10 @@
170
170
  "id": "7bb53f16",
171
171
  "metadata": {
172
172
  "execution": {
173
- "iopub.execute_input": "2026-09-25T09:00:30.347317Z",
174
- "iopub.status.busy": "2026-09-25T09:00:30.346315Z",
175
- "iopub.status.idle": "2026-09-25T09:00:30.486032Z",
176
- "shell.execute_reply": "2026-09-25T09:00:30.484519Z"
173
+ "iopub.execute_input": "2026-09-25T12:12:32.201391Z",
174
+ "iopub.status.busy": "2026-09-25T12:12:32.201391Z",
175
+ "iopub.status.idle": "2026-09-25T12:12:32.304538Z",
176
+ "shell.execute_reply": "2026-09-25T12:12:32.304030Z"
177
177
  }
178
178
  },
179
179
  "outputs": [
@@ -214,10 +214,10 @@
214
214
  "id": "458ce3c5",
215
215
  "metadata": {
216
216
  "execution": {
217
- "iopub.execute_input": "2026-09-25T09:00:30.491317Z",
218
- "iopub.status.busy": "2026-09-25T09:00:30.490543Z",
219
- "iopub.status.idle": "2026-09-25T09:00:30.506408Z",
220
- "shell.execute_reply": "2026-09-25T09:00:30.505400Z"
217
+ "iopub.execute_input": "2026-09-25T12:12:32.308745Z",
218
+ "iopub.status.busy": "2026-09-25T12:12:32.307550Z",
219
+ "iopub.status.idle": "2026-09-25T12:12:32.324791Z",
220
+ "shell.execute_reply": "2026-09-25T12:12:32.323274Z"
221
221
  }
222
222
  },
223
223
  "outputs": [
@@ -233,7 +233,7 @@
233
233
  " \"inputs\": [\n",
234
234
  " {\n",
235
235
  " \"path\": \"data/wells.gpkg\",\n",
236
- " \"sha256\": \"9681a757f20aaedadce32efa384325f6fded871fa89e678f3709e6a8062a8eb5\",\n",
236
+ " \"sha256\": \"17b53131dacbf6af0c1a7fdf8c3a2030ea23b08df909ce5f7e4ab866dad5f77f\",\n",
237
237
  " \"crs\": \"EPSG:4326\",\n",
238
238
  " \"layer\": null\n",
239
239
  " }\n",
@@ -243,7 +243,7 @@
243
243
  " \"sha256\": \"5d95222ecc599c7393367f488914d316cf57323bb47e0771ca8238dd5cb98096\",\n",
244
244
  " \"crs\": \"EPSG:4326\"\n",
245
245
  " },\n",
246
- " \"spec_version\": \"1.0.0-draft.6\",\n",
246
+ " \"spec_version\": \"1.0.0-draft.8\",\n",
247
247
  " \"crs_decisions\": {\n",
248
248
  " \"analysis_crs\": \"EPSG:32632\",\n",
249
249
  " \"reason\": \"estimated UTM zone for metric buffering on a geographic CRS\",\n",
@@ -343,10 +343,10 @@
343
343
  " \"environment\": {},\n",
344
344
  " \"producer\": {\n",
345
345
  " \"name\": \"mapsmith\",\n",
346
- " \"version\": \"0.6.0\"\n",
346
+ " \"version\": \"0.6.1\"\n",
347
347
  " },\n",
348
- " \"started_at\": \"2026-09-25T09:00:29Z\",\n",
349
- " \"finished_at\": \"2026-09-25T09:00:30Z\",\n",
348
+ " \"started_at\": \"2026-09-25T12:12:32Z\",\n",
349
+ " \"finished_at\": \"2026-09-25T12:12:32Z\",\n",
350
350
  " \"parameters_redacted\": false\n",
351
351
  "}\n"
352
352
  ]
@@ -366,10 +366,10 @@
366
366
  "id": "29e98d8f",
367
367
  "metadata": {
368
368
  "execution": {
369
- "iopub.execute_input": "2026-09-25T09:00:30.511923Z",
370
- "iopub.status.busy": "2026-09-25T09:00:30.510923Z",
371
- "iopub.status.idle": "2026-09-25T09:00:30.635798Z",
372
- "shell.execute_reply": "2026-09-25T09:00:30.634788Z"
369
+ "iopub.execute_input": "2026-09-25T12:12:32.326798Z",
370
+ "iopub.status.busy": "2026-09-25T12:12:32.326798Z",
371
+ "iopub.status.idle": "2026-09-25T12:12:32.420323Z",
372
+ "shell.execute_reply": "2026-09-25T12:12:32.419311Z"
373
373
  }
374
374
  },
375
375
  "outputs": [
@@ -24,10 +24,10 @@
24
24
  "id": "284a0692",
25
25
  "metadata": {
26
26
  "execution": {
27
- "iopub.execute_input": "2026-09-25T09:00:35.675483Z",
28
- "iopub.status.busy": "2026-09-25T09:00:35.675483Z",
29
- "iopub.status.idle": "2026-09-25T09:00:37.741915Z",
30
- "shell.execute_reply": "2026-09-25T09:00:37.739906Z"
27
+ "iopub.execute_input": "2026-09-25T12:12:36.608361Z",
28
+ "iopub.status.busy": "2026-09-25T12:12:36.607296Z",
29
+ "iopub.status.idle": "2026-09-25T12:12:37.457311Z",
30
+ "shell.execute_reply": "2026-09-25T12:12:37.456234Z"
31
31
  }
32
32
  },
33
33
  "outputs": [
@@ -90,10 +90,10 @@
90
90
  "id": "1c4b13f7",
91
91
  "metadata": {
92
92
  "execution": {
93
- "iopub.execute_input": "2026-09-25T09:00:37.744914Z",
94
- "iopub.status.busy": "2026-09-25T09:00:37.744914Z",
95
- "iopub.status.idle": "2026-09-25T09:00:38.452715Z",
96
- "shell.execute_reply": "2026-09-25T09:00:38.451195Z"
93
+ "iopub.execute_input": "2026-09-25T12:12:37.461520Z",
94
+ "iopub.status.busy": "2026-09-25T12:12:37.461520Z",
95
+ "iopub.status.idle": "2026-09-25T12:12:38.076793Z",
96
+ "shell.execute_reply": "2026-09-25T12:12:38.075573Z"
97
97
  }
98
98
  },
99
99
  "outputs": [
@@ -126,10 +126,10 @@
126
126
  "id": "21279817",
127
127
  "metadata": {
128
128
  "execution": {
129
- "iopub.execute_input": "2026-09-25T09:00:38.455730Z",
130
- "iopub.status.busy": "2026-09-25T09:00:38.455730Z",
131
- "iopub.status.idle": "2026-09-25T09:00:38.628833Z",
132
- "shell.execute_reply": "2026-09-25T09:00:38.627320Z"
129
+ "iopub.execute_input": "2026-09-25T12:12:38.081202Z",
130
+ "iopub.status.busy": "2026-09-25T12:12:38.081202Z",
131
+ "iopub.status.idle": "2026-09-25T12:12:38.271787Z",
132
+ "shell.execute_reply": "2026-09-25T12:12:38.269643Z"
133
133
  }
134
134
  },
135
135
  "outputs": [
@@ -174,10 +174,10 @@
174
174
  "id": "394efab0",
175
175
  "metadata": {
176
176
  "execution": {
177
- "iopub.execute_input": "2026-09-25T09:00:38.633835Z",
178
- "iopub.status.busy": "2026-09-25T09:00:38.633835Z",
179
- "iopub.status.idle": "2026-09-25T09:00:39.682934Z",
180
- "shell.execute_reply": "2026-09-25T09:00:39.681923Z"
177
+ "iopub.execute_input": "2026-09-25T12:12:38.276844Z",
178
+ "iopub.status.busy": "2026-09-25T12:12:38.275832Z",
179
+ "iopub.status.idle": "2026-09-25T12:12:39.580320Z",
180
+ "shell.execute_reply": "2026-09-25T12:12:39.579790Z"
181
181
  }
182
182
  },
183
183
  "outputs": [
@@ -208,10 +208,10 @@
208
208
  "id": "e6864435",
209
209
  "metadata": {
210
210
  "execution": {
211
- "iopub.execute_input": "2026-09-25T09:00:39.687985Z",
212
- "iopub.status.busy": "2026-09-25T09:00:39.686972Z",
213
- "iopub.status.idle": "2026-09-25T09:00:40.490220Z",
214
- "shell.execute_reply": "2026-09-25T09:00:40.488209Z"
211
+ "iopub.execute_input": "2026-09-25T12:12:39.584604Z",
212
+ "iopub.status.busy": "2026-09-25T12:12:39.583592Z",
213
+ "iopub.status.idle": "2026-09-25T12:12:40.359542Z",
214
+ "shell.execute_reply": "2026-09-25T12:12:40.358021Z"
215
215
  }
216
216
  },
217
217
  "outputs": [
@@ -254,10 +254,10 @@
254
254
  "id": "a9963145",
255
255
  "metadata": {
256
256
  "execution": {
257
- "iopub.execute_input": "2026-09-25T09:00:40.493220Z",
258
- "iopub.status.busy": "2026-09-25T09:00:40.493220Z",
259
- "iopub.status.idle": "2026-09-25T09:00:41.697519Z",
260
- "shell.execute_reply": "2026-09-25T09:00:41.695508Z"
257
+ "iopub.execute_input": "2026-09-25T12:12:40.363552Z",
258
+ "iopub.status.busy": "2026-09-25T12:12:40.363552Z",
259
+ "iopub.status.idle": "2026-09-25T12:12:41.712934Z",
260
+ "shell.execute_reply": "2026-09-25T12:12:41.711565Z"
261
261
  }
262
262
  },
263
263
  "outputs": [
@@ -308,10 +308,10 @@
308
308
  "id": "29e44f7f",
309
309
  "metadata": {
310
310
  "execution": {
311
- "iopub.execute_input": "2026-09-25T09:00:41.702519Z",
312
- "iopub.status.busy": "2026-09-25T09:00:41.701519Z",
313
- "iopub.status.idle": "2026-09-25T09:00:41.759009Z",
314
- "shell.execute_reply": "2026-09-25T09:00:41.756998Z"
311
+ "iopub.execute_input": "2026-09-25T12:12:41.716970Z",
312
+ "iopub.status.busy": "2026-09-25T12:12:41.715951Z",
313
+ "iopub.status.idle": "2026-09-25T12:12:41.780646Z",
314
+ "shell.execute_reply": "2026-09-25T12:12:41.778771Z"
315
315
  }
316
316
  },
317
317
  "outputs": [
@@ -353,10 +353,10 @@
353
353
  "id": "4d1c073f",
354
354
  "metadata": {
355
355
  "execution": {
356
- "iopub.execute_input": "2026-09-25T09:00:41.761530Z",
357
- "iopub.status.busy": "2026-09-25T09:00:41.761530Z",
358
- "iopub.status.idle": "2026-09-25T09:00:42.234011Z",
359
- "shell.execute_reply": "2026-09-25T09:00:42.232999Z"
356
+ "iopub.execute_input": "2026-09-25T12:12:41.785206Z",
357
+ "iopub.status.busy": "2026-09-25T12:12:41.784206Z",
358
+ "iopub.status.idle": "2026-09-25T12:12:42.042732Z",
359
+ "shell.execute_reply": "2026-09-25T12:12:42.041212Z"
360
360
  }
361
361
  },
362
362
  "outputs": [
@@ -455,10 +455,10 @@
455
455
  "id": "fb3ccb2d",
456
456
  "metadata": {
457
457
  "execution": {
458
- "iopub.execute_input": "2026-09-25T09:00:42.238010Z",
459
- "iopub.status.busy": "2026-09-25T09:00:42.237010Z",
460
- "iopub.status.idle": "2026-09-25T09:00:42.245091Z",
461
- "shell.execute_reply": "2026-09-25T09:00:42.243567Z"
458
+ "iopub.execute_input": "2026-09-25T12:12:42.046747Z",
459
+ "iopub.status.busy": "2026-09-25T12:12:42.046747Z",
460
+ "iopub.status.idle": "2026-09-25T12:12:42.054526Z",
461
+ "shell.execute_reply": "2026-09-25T12:12:42.054012Z"
462
462
  }
463
463
  },
464
464
  "outputs": [
@@ -18,10 +18,10 @@
18
18
  "id": "25542ca4",
19
19
  "metadata": {
20
20
  "execution": {
21
- "iopub.execute_input": "2026-09-25T09:00:48.070344Z",
22
- "iopub.status.busy": "2026-09-25T09:00:48.070344Z",
23
- "iopub.status.idle": "2026-09-25T09:00:49.209007Z",
24
- "shell.execute_reply": "2026-09-25T09:00:49.206996Z"
21
+ "iopub.execute_input": "2026-09-25T12:12:46.219955Z",
22
+ "iopub.status.busy": "2026-09-25T12:12:46.218737Z",
23
+ "iopub.status.idle": "2026-09-25T12:12:46.997453Z",
24
+ "shell.execute_reply": "2026-09-25T12:12:46.996441Z"
25
25
  }
26
26
  },
27
27
  "outputs": [
@@ -68,10 +68,10 @@
68
68
  "id": "a7c1b3ee",
69
69
  "metadata": {
70
70
  "execution": {
71
- "iopub.execute_input": "2026-09-25T09:00:49.214011Z",
72
- "iopub.status.busy": "2026-09-25T09:00:49.213008Z",
73
- "iopub.status.idle": "2026-09-25T09:00:49.578741Z",
74
- "shell.execute_reply": "2026-09-25T09:00:49.577729Z"
71
+ "iopub.execute_input": "2026-09-25T12:12:47.000636Z",
72
+ "iopub.status.busy": "2026-09-25T12:12:47.000636Z",
73
+ "iopub.status.idle": "2026-09-25T12:12:47.144307Z",
74
+ "shell.execute_reply": "2026-09-25T12:12:47.143272Z"
75
75
  }
76
76
  },
77
77
  "outputs": [
@@ -126,10 +126,10 @@
126
126
  "id": "91a05af3",
127
127
  "metadata": {
128
128
  "execution": {
129
- "iopub.execute_input": "2026-09-25T09:00:49.583756Z",
130
- "iopub.status.busy": "2026-09-25T09:00:49.583756Z",
131
- "iopub.status.idle": "2026-09-25T09:00:49.623072Z",
132
- "shell.execute_reply": "2026-09-25T09:00:49.622060Z"
129
+ "iopub.execute_input": "2026-09-25T12:12:47.147760Z",
130
+ "iopub.status.busy": "2026-09-25T12:12:47.147760Z",
131
+ "iopub.status.idle": "2026-09-25T12:12:47.178986Z",
132
+ "shell.execute_reply": "2026-09-25T12:12:47.177594Z"
133
133
  }
134
134
  },
135
135
  "outputs": [
@@ -169,10 +169,10 @@
169
169
  "id": "0314a8a8",
170
170
  "metadata": {
171
171
  "execution": {
172
- "iopub.execute_input": "2026-09-25T09:00:49.627072Z",
173
- "iopub.status.busy": "2026-09-25T09:00:49.626072Z",
174
- "iopub.status.idle": "2026-09-25T09:00:50.018811Z",
175
- "shell.execute_reply": "2026-09-25T09:00:50.015286Z"
172
+ "iopub.execute_input": "2026-09-25T12:12:47.181517Z",
173
+ "iopub.status.busy": "2026-09-25T12:12:47.181517Z",
174
+ "iopub.status.idle": "2026-09-25T12:12:47.461874Z",
175
+ "shell.execute_reply": "2026-09-25T12:12:47.460349Z"
176
176
  }
177
177
  },
178
178
  "outputs": [
@@ -181,8 +181,8 @@
181
181
  "output_type": "stream",
182
182
  "text": [
183
183
  "executed: True\n",
184
- " buf: ok (4 features, 236.7 ms, verified=True)\n",
185
- " cut: ok (3 features, 109.6 ms, verified=True)\n",
184
+ " buf: ok (4 features, 153.8 ms, verified=True)\n",
185
+ " cut: ok (3 features, 92.1 ms, verified=True)\n",
186
186
  "plan sha256: a5d2cadb11b7baf8 …\n",
187
187
  "plan manifest: data\\at_risk.parquet.plan.json\n"
188
188
  ]
@@ -207,10 +207,10 @@
207
207
  "id": "6f3d69a8",
208
208
  "metadata": {
209
209
  "execution": {
210
- "iopub.execute_input": "2026-09-25T09:00:50.023211Z",
211
- "iopub.status.busy": "2026-09-25T09:00:50.022216Z",
212
- "iopub.status.idle": "2026-09-25T09:00:50.041283Z",
213
- "shell.execute_reply": "2026-09-25T09:00:50.040269Z"
210
+ "iopub.execute_input": "2026-09-25T12:12:47.464704Z",
211
+ "iopub.status.busy": "2026-09-25T12:12:47.463329Z",
212
+ "iopub.status.idle": "2026-09-25T12:12:47.479279Z",
213
+ "shell.execute_reply": "2026-09-25T12:12:47.477440Z"
214
214
  }
215
215
  },
216
216
  "outputs": [
@@ -219,7 +219,7 @@
219
219
  "output_type": "stream",
220
220
  "text": [
221
221
  "{\n",
222
- " \"mapsmith_version\": \"0.6.0\",\n",
222
+ " \"mapsmith_version\": \"0.6.1\",\n",
223
223
  " \"plan_sha256\": \"a5d2cadb11b7baf8722806fb7aca608c4ab9e22ac64f019e438c680f6b5ac852\",\n",
224
224
  " \"goal\": \"wells at risk\"\n",
225
225
  "}\n",
@@ -4,7 +4,7 @@ build-backend = "hatchling.build"
4
4
 
5
5
  [project]
6
6
  name = "mapsmith"
7
- version = "0.6.0"
7
+ version = "0.6.1"
8
8
  description = "Professional-grade GIS geoprocessing over MCP, with verifiable provenance"
9
9
  readme = "README.md"
10
10
  requires-python = ">=3.12"
@@ -2,7 +2,7 @@
2
2
  "$schema": "https://static.modelcontextprotocol.io/schemas/2025-12-11/server.schema.json",
3
3
  "name": "io.github.mapsmith-ai/mapsmith",
4
4
  "description": "Deterministic GIS geoprocessing with verifiable provenance on every output",
5
- "version": "0.6.0",
5
+ "version": "0.6.1",
6
6
  "repository": {
7
7
  "url": "https://github.com/mapsmith-ai/MapSmith",
8
8
  "source": "github"
@@ -13,7 +13,7 @@
13
13
  "registryType": "pypi",
14
14
  "registryBaseUrl": "https://pypi.org",
15
15
  "identifier": "mapsmith",
16
- "version": "0.6.0",
16
+ "version": "0.6.1",
17
17
  "runtimeHint": "uvx",
18
18
  "transport": {
19
19
  "type": "stdio"
@@ -30,7 +30,7 @@
30
30
  },
31
31
  {
32
32
  "registryType": "oci",
33
- "identifier": "ghcr.io/mapsmith-ai/mapsmith:0.6.0",
33
+ "identifier": "ghcr.io/mapsmith-ai/mapsmith:0.6.1",
34
34
  "runtimeHint": "docker",
35
35
  "transport": {
36
36
  "type": "stdio"