metaobjects 0.24.1__tar.gz → 0.24.2__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 (425) hide show
  1. {metaobjects-0.24.1 → metaobjects-0.24.2}/PKG-INFO +1 -1
  2. {metaobjects-0.24.1 → metaobjects-0.24.2}/pyproject.toml +1 -1
  3. {metaobjects-0.24.1 → metaobjects-0.24.2}/src/metaobjects/core_types.py +9 -0
  4. {metaobjects-0.24.1 → metaobjects-0.24.2}/src/metaobjects/errors.py +6 -0
  5. {metaobjects-0.24.1 → metaobjects-0.24.2}/src/metaobjects/loader/validation_passes.py +76 -0
  6. {metaobjects-0.24.1 → metaobjects-0.24.2}/src/metaobjects/meta/core/requirement/requirement_constants.py +12 -0
  7. {metaobjects-0.24.1 → metaobjects-0.24.2}/src/metaobjects/registry_manifest.py +1 -1
  8. {metaobjects-0.24.1 → metaobjects-0.24.2}/src/metaobjects/spec_metamodel/requirement.json +22 -4
  9. {metaobjects-0.24.1 → metaobjects-0.24.2}/uv.lock +1 -1
  10. {metaobjects-0.24.1 → metaobjects-0.24.2}/.gitignore +0 -0
  11. {metaobjects-0.24.1 → metaobjects-0.24.2}/LICENSE +0 -0
  12. {metaobjects-0.24.1 → metaobjects-0.24.2}/README.md +0 -0
  13. {metaobjects-0.24.1 → metaobjects-0.24.2}/hatch_build.py +0 -0
  14. {metaobjects-0.24.1 → metaobjects-0.24.2}/scripts/generate_embedded_library.py +0 -0
  15. {metaobjects-0.24.1 → metaobjects-0.24.2}/src/metaobjects/__init__.py +0 -0
  16. {metaobjects-0.24.1 → metaobjects-0.24.2}/src/metaobjects/agent_context/__init__.py +0 -0
  17. {metaobjects-0.24.1 → metaobjects-0.24.2}/src/metaobjects/agent_context/scaffold.py +0 -0
  18. {metaobjects-0.24.1 → metaobjects-0.24.2}/src/metaobjects/apidocs/__init__.py +0 -0
  19. {metaobjects-0.24.1 → metaobjects-0.24.2}/src/metaobjects/apidocs/api_model.py +0 -0
  20. {metaobjects-0.24.1 → metaobjects-0.24.2}/src/metaobjects/apidocs/builder.py +0 -0
  21. {metaobjects-0.24.1 → metaobjects-0.24.2}/src/metaobjects/apidocs/naming.py +0 -0
  22. {metaobjects-0.24.1 → metaobjects-0.24.2}/src/metaobjects/apidocs/paths.py +0 -0
  23. {metaobjects-0.24.1 → metaobjects-0.24.2}/src/metaobjects/apidocs/renderer.py +0 -0
  24. {metaobjects-0.24.1 → metaobjects-0.24.2}/src/metaobjects/attr_class_map.py +0 -0
  25. {metaobjects-0.24.1 → metaobjects-0.24.2}/src/metaobjects/cli.py +0 -0
  26. {metaobjects-0.24.1 → metaobjects-0.24.2}/src/metaobjects/codegen/KNOWN_GAPS.md +0 -0
  27. {metaobjects-0.24.1 → metaobjects-0.24.2}/src/metaobjects/codegen/__init__.py +0 -0
  28. {metaobjects-0.24.1 → metaobjects-0.24.2}/src/metaobjects/codegen/collision_names.py +0 -0
  29. {metaobjects-0.24.1 → metaobjects-0.24.2}/src/metaobjects/codegen/config.py +0 -0
  30. {metaobjects-0.24.1 → metaobjects-0.24.2}/src/metaobjects/codegen/constants.py +0 -0
  31. {metaobjects-0.24.1 → metaobjects-0.24.2}/src/metaobjects/codegen/extract_delegate_emitter.py +0 -0
  32. {metaobjects-0.24.1 → metaobjects-0.24.2}/src/metaobjects/codegen/extract_schema_emitter.py +0 -0
  33. {metaobjects-0.24.1 → metaobjects-0.24.2}/src/metaobjects/codegen/format.py +0 -0
  34. {metaobjects-0.24.1 → metaobjects-0.24.2}/src/metaobjects/codegen/fr010_field_mapping.py +0 -0
  35. {metaobjects-0.24.1 → metaobjects-0.24.2}/src/metaobjects/codegen/generator.py +0 -0
  36. {metaobjects-0.24.1 → metaobjects-0.24.2}/src/metaobjects/codegen/generator_registry.py +0 -0
  37. {metaobjects-0.24.1 → metaobjects-0.24.2}/src/metaobjects/codegen/generators/__init__.py +0 -0
  38. {metaobjects-0.24.1 → metaobjects-0.24.2}/src/metaobjects/codegen/generators/entity_model.py +0 -0
  39. {metaobjects-0.24.1 → metaobjects-0.24.2}/src/metaobjects/codegen/generators/extractor_generator.py +0 -0
  40. {metaobjects-0.24.1 → metaobjects-0.24.2}/src/metaobjects/codegen/generators/filter_allowlist_generator.py +0 -0
  41. {metaobjects-0.24.1 → metaobjects-0.24.2}/src/metaobjects/codegen/generators/find_inbound.py +0 -0
  42. {metaobjects-0.24.1 → metaobjects-0.24.2}/src/metaobjects/codegen/generators/fr019_shared_enum.py +0 -0
  43. {metaobjects-0.24.1 → metaobjects-0.24.2}/src/metaobjects/codegen/generators/m2m_codegen.py +0 -0
  44. {metaobjects-0.24.1 → metaobjects-0.24.2}/src/metaobjects/codegen/generators/output_parser_generator.py +0 -0
  45. {metaobjects-0.24.1 → metaobjects-0.24.2}/src/metaobjects/codegen/generators/output_prompt_generator.py +0 -0
  46. {metaobjects-0.24.1 → metaobjects-0.24.2}/src/metaobjects/codegen/generators/payload_vo_generator.py +0 -0
  47. {metaobjects-0.24.1 → metaobjects-0.24.2}/src/metaobjects/codegen/generators/render_helper_generator.py +0 -0
  48. {metaobjects-0.24.1 → metaobjects-0.24.2}/src/metaobjects/codegen/generators/router_generator.py +0 -0
  49. {metaobjects-0.24.1 → metaobjects-0.24.2}/src/metaobjects/codegen/generators/template_generator.py +0 -0
  50. {metaobjects-0.24.1 → metaobjects-0.24.2}/src/metaobjects/codegen/generators/tph_plan.py +0 -0
  51. {metaobjects-0.24.1 → metaobjects-0.24.2}/src/metaobjects/codegen/generators/trace_helper_generator.py +0 -0
  52. {metaobjects-0.24.1 → metaobjects-0.24.2}/src/metaobjects/codegen/instance_artifacts.py +0 -0
  53. {metaobjects-0.24.1 → metaobjects-0.24.2}/src/metaobjects/codegen/metaobjects-config.schema.json +0 -0
  54. {metaobjects-0.24.1 → metaobjects-0.24.2}/src/metaobjects/codegen/output_format_spec_emitter.py +0 -0
  55. {metaobjects-0.24.1 → metaobjects-0.24.2}/src/metaobjects/codegen/overwrite_policy.py +0 -0
  56. {metaobjects-0.24.1 → metaobjects-0.24.2}/src/metaobjects/codegen/project_config.py +0 -0
  57. {metaobjects-0.24.1 → metaobjects-0.24.2}/src/metaobjects/codegen/runner.py +0 -0
  58. {metaobjects-0.24.1 → metaobjects-0.24.2}/src/metaobjects/codegen/runtime/__init__.py +0 -0
  59. {metaobjects-0.24.1 → metaobjects-0.24.2}/src/metaobjects/codegen/runtime/filter_parser.py +0 -0
  60. {metaobjects-0.24.1 → metaobjects-0.24.2}/src/metaobjects/codegen/template_codegen/__init__.py +0 -0
  61. {metaobjects-0.24.1 → metaobjects-0.24.2}/src/metaobjects/codegen/template_codegen/output_pattern.py +0 -0
  62. {metaobjects-0.24.1 → metaobjects-0.24.2}/src/metaobjects/codegen/template_codegen/template_data.py +0 -0
  63. {metaobjects-0.24.1 → metaobjects-0.24.2}/src/metaobjects/codegen/template_codegen/template_spec.py +0 -0
  64. {metaobjects-0.24.1 → metaobjects-0.24.2}/src/metaobjects/codegen/type_map.py +0 -0
  65. {metaobjects-0.24.1 → metaobjects-0.24.2}/src/metaobjects/config/__init__.py +0 -0
  66. {metaobjects-0.24.1 → metaobjects-0.24.2}/src/metaobjects/config/neutral_config.py +0 -0
  67. {metaobjects-0.24.1 → metaobjects-0.24.2}/src/metaobjects/config/source_resolver.py +0 -0
  68. {metaobjects-0.24.1 → metaobjects-0.24.2}/src/metaobjects/datatype.py +0 -0
  69. {metaobjects-0.24.1 → metaobjects-0.24.2}/src/metaobjects/documentation/__init__.py +0 -0
  70. {metaobjects-0.24.1 → metaobjects-0.24.2}/src/metaobjects/documentation/doc_constants.py +0 -0
  71. {metaobjects-0.24.1 → metaobjects-0.24.2}/src/metaobjects/documentation/doc_provider.py +0 -0
  72. {metaobjects-0.24.1 → metaobjects-0.24.2}/src/metaobjects/documentation/doc_schema.py +0 -0
  73. {metaobjects-0.24.1 → metaobjects-0.24.2}/src/metaobjects/library/__init__.py +0 -0
  74. {metaobjects-0.24.1 → metaobjects-0.24.2}/src/metaobjects/library/embedded_library.py +0 -0
  75. {metaobjects-0.24.1 → metaobjects-0.24.2}/src/metaobjects/library/library_sources.py +0 -0
  76. {metaobjects-0.24.1 → metaobjects-0.24.2}/src/metaobjects/loader/__init__.py +0 -0
  77. {metaobjects-0.24.1 → metaobjects-0.24.2}/src/metaobjects/loader/merge.py +0 -0
  78. {metaobjects-0.24.1 → metaobjects-0.24.2}/src/metaobjects/loader/meta_data_loader.py +0 -0
  79. {metaobjects-0.24.1 → metaobjects-0.24.2}/src/metaobjects/loader/registered_validation.py +0 -0
  80. {metaobjects-0.24.1 → metaobjects-0.24.2}/src/metaobjects/loader/sources/__init__.py +0 -0
  81. {metaobjects-0.24.1 → metaobjects-0.24.2}/src/metaobjects/loader/sources/directory_source.py +0 -0
  82. {metaobjects-0.24.1 → metaobjects-0.24.2}/src/metaobjects/loader/sources/file_source.py +0 -0
  83. {metaobjects-0.24.1 → metaobjects-0.24.2}/src/metaobjects/loader/sources/meta_data_source.py +0 -0
  84. {metaobjects-0.24.1 → metaobjects-0.24.2}/src/metaobjects/loader/sources/uri_source.py +0 -0
  85. {metaobjects-0.24.1 → metaobjects-0.24.2}/src/metaobjects/loader/validate_discriminator.py +0 -0
  86. {metaobjects-0.24.1 → metaobjects-0.24.2}/src/metaobjects/loader/validate_enum_normalize_ambiguity.py +0 -0
  87. {metaobjects-0.24.1 → metaobjects-0.24.2}/src/metaobjects/loader/validate_field_mutability.py +0 -0
  88. {metaobjects-0.24.1 → metaobjects-0.24.2}/src/metaobjects/loader/validate_source_escapes.py +0 -0
  89. {metaobjects-0.24.1 → metaobjects-0.24.2}/src/metaobjects/loader/validate_source_parameter_ref.py +0 -0
  90. {metaobjects-0.24.1 → metaobjects-0.24.2}/src/metaobjects/loader/validate_source_physical_names.py +0 -0
  91. {metaobjects-0.24.1 → metaobjects-0.24.2}/src/metaobjects/meta/__init__.py +0 -0
  92. {metaobjects-0.24.1 → metaobjects-0.24.2}/src/metaobjects/meta/core/__init__.py +0 -0
  93. {metaobjects-0.24.1 → metaobjects-0.24.2}/src/metaobjects/meta/core/attr/__init__.py +0 -0
  94. {metaobjects-0.24.1 → metaobjects-0.24.2}/src/metaobjects/meta/core/attr/attr_constants.py +0 -0
  95. {metaobjects-0.24.1 → metaobjects-0.24.2}/src/metaobjects/meta/core/attr/meta_attr.py +0 -0
  96. {metaobjects-0.24.1 → metaobjects-0.24.2}/src/metaobjects/meta/core/field/__init__.py +0 -0
  97. {metaobjects-0.24.1 → metaobjects-0.24.2}/src/metaobjects/meta/core/field/field_constants.py +0 -0
  98. {metaobjects-0.24.1 → metaobjects-0.24.2}/src/metaobjects/meta/core/field/meta_field.py +0 -0
  99. {metaobjects-0.24.1 → metaobjects-0.24.2}/src/metaobjects/meta/core/identity/__init__.py +0 -0
  100. {metaobjects-0.24.1 → metaobjects-0.24.2}/src/metaobjects/meta/core/identity/identity_constants.py +0 -0
  101. {metaobjects-0.24.1 → metaobjects-0.24.2}/src/metaobjects/meta/core/identity/meta_identity.py +0 -0
  102. {metaobjects-0.24.1 → metaobjects-0.24.2}/src/metaobjects/meta/core/index/__init__.py +0 -0
  103. {metaobjects-0.24.1 → metaobjects-0.24.2}/src/metaobjects/meta/core/index/index_constants.py +0 -0
  104. {metaobjects-0.24.1 → metaobjects-0.24.2}/src/metaobjects/meta/core/index/meta_index.py +0 -0
  105. {metaobjects-0.24.1 → metaobjects-0.24.2}/src/metaobjects/meta/core/object/__init__.py +0 -0
  106. {metaobjects-0.24.1 → metaobjects-0.24.2}/src/metaobjects/meta/core/object/meta_object.py +0 -0
  107. {metaobjects-0.24.1 → metaobjects-0.24.2}/src/metaobjects/meta/core/object/meta_object_aware.py +0 -0
  108. {metaobjects-0.24.1 → metaobjects-0.24.2}/src/metaobjects/meta/core/object/object_class_registry.py +0 -0
  109. {metaobjects-0.24.1 → metaobjects-0.24.2}/src/metaobjects/meta/core/object/object_constants.py +0 -0
  110. {metaobjects-0.24.1 → metaobjects-0.24.2}/src/metaobjects/meta/core/object/object_extract.py +0 -0
  111. {metaobjects-0.24.1 → metaobjects-0.24.2}/src/metaobjects/meta/core/object/value_object.py +0 -0
  112. {metaobjects-0.24.1 → metaobjects-0.24.2}/src/metaobjects/meta/core/relationship/__init__.py +0 -0
  113. {metaobjects-0.24.1 → metaobjects-0.24.2}/src/metaobjects/meta/core/relationship/derive_m2m_fields.py +0 -0
  114. {metaobjects-0.24.1 → metaobjects-0.24.2}/src/metaobjects/meta/core/relationship/meta_relationship.py +0 -0
  115. {metaobjects-0.24.1 → metaobjects-0.24.2}/src/metaobjects/meta/core/relationship/relationship_constants.py +0 -0
  116. {metaobjects-0.24.1 → metaobjects-0.24.2}/src/metaobjects/meta/core/requirement/__init__.py +0 -0
  117. {metaobjects-0.24.1 → metaobjects-0.24.2}/src/metaobjects/meta/core/requirement/meta_requirement.py +0 -0
  118. {metaobjects-0.24.1 → metaobjects-0.24.2}/src/metaobjects/meta/core/validator/__init__.py +0 -0
  119. {metaobjects-0.24.1 → metaobjects-0.24.2}/src/metaobjects/meta/core/validator/validator_constants.py +0 -0
  120. {metaobjects-0.24.1 → metaobjects-0.24.2}/src/metaobjects/meta/meta_data.py +0 -0
  121. {metaobjects-0.24.1 → metaobjects-0.24.2}/src/metaobjects/meta/meta_root.py +0 -0
  122. {metaobjects-0.24.1 → metaobjects-0.24.2}/src/metaobjects/meta/persistence/__init__.py +0 -0
  123. {metaobjects-0.24.1 → metaobjects-0.24.2}/src/metaobjects/meta/persistence/db/__init__.py +0 -0
  124. {metaobjects-0.24.1 → metaobjects-0.24.2}/src/metaobjects/meta/persistence/db/db_constants.py +0 -0
  125. {metaobjects-0.24.1 → metaobjects-0.24.2}/src/metaobjects/meta/persistence/db/db_provider.py +0 -0
  126. {metaobjects-0.24.1 → metaobjects-0.24.2}/src/metaobjects/meta/persistence/origin/__init__.py +0 -0
  127. {metaobjects-0.24.1 → metaobjects-0.24.2}/src/metaobjects/meta/persistence/origin/meta_origin.py +0 -0
  128. {metaobjects-0.24.1 → metaobjects-0.24.2}/src/metaobjects/meta/persistence/origin/origin_constants.py +0 -0
  129. {metaobjects-0.24.1 → metaobjects-0.24.2}/src/metaobjects/meta/persistence/source/__init__.py +0 -0
  130. {metaobjects-0.24.1 → metaobjects-0.24.2}/src/metaobjects/meta/persistence/source/meta_source.py +0 -0
  131. {metaobjects-0.24.1 → metaobjects-0.24.2}/src/metaobjects/meta/persistence/source/source_constants.py +0 -0
  132. {metaobjects-0.24.1 → metaobjects-0.24.2}/src/metaobjects/meta/presentation/__init__.py +0 -0
  133. {metaobjects-0.24.1 → metaobjects-0.24.2}/src/metaobjects/meta/presentation/layout/__init__.py +0 -0
  134. {metaobjects-0.24.1 → metaobjects-0.24.2}/src/metaobjects/meta/presentation/layout/layout_constants.py +0 -0
  135. {metaobjects-0.24.1 → metaobjects-0.24.2}/src/metaobjects/meta/presentation/layout/meta_layout.py +0 -0
  136. {metaobjects-0.24.1 → metaobjects-0.24.2}/src/metaobjects/meta/presentation/ui/__init__.py +0 -0
  137. {metaobjects-0.24.1 → metaobjects-0.24.2}/src/metaobjects/meta/presentation/ui/ui_provider.py +0 -0
  138. {metaobjects-0.24.1 → metaobjects-0.24.2}/src/metaobjects/meta/presentation/view/__init__.py +0 -0
  139. {metaobjects-0.24.1 → metaobjects-0.24.2}/src/metaobjects/meta/presentation/view/meta_view.py +0 -0
  140. {metaobjects-0.24.1 → metaobjects-0.24.2}/src/metaobjects/meta/presentation/view/view_constants.py +0 -0
  141. {metaobjects-0.24.1 → metaobjects-0.24.2}/src/metaobjects/meta/provider_extends.py +0 -0
  142. {metaobjects-0.24.1 → metaobjects-0.24.2}/src/metaobjects/meta/template/__init__.py +0 -0
  143. {metaobjects-0.24.1 → metaobjects-0.24.2}/src/metaobjects/meta/template/meta_template.py +0 -0
  144. {metaobjects-0.24.1 → metaobjects-0.24.2}/src/metaobjects/meta/template/prompt_provider.py +0 -0
  145. {metaobjects-0.24.1 → metaobjects-0.24.2}/src/metaobjects/meta/template/template_constants.py +0 -0
  146. {metaobjects-0.24.1 → metaobjects-0.24.2}/src/metaobjects/naming_refs.py +0 -0
  147. {metaobjects-0.24.1 → metaobjects-0.24.2}/src/metaobjects/parser.py +0 -0
  148. {metaobjects-0.24.1 → metaobjects-0.24.2}/src/metaobjects/parser_yaml.py +0 -0
  149. {metaobjects-0.24.1 → metaobjects-0.24.2}/src/metaobjects/provider.py +0 -0
  150. {metaobjects-0.24.1 → metaobjects-0.24.2}/src/metaobjects/py.typed +0 -0
  151. {metaobjects-0.24.1 → metaobjects-0.24.2}/src/metaobjects/registry.py +0 -0
  152. {metaobjects-0.24.1 → metaobjects-0.24.2}/src/metaobjects/render/__init__.py +0 -0
  153. {metaobjects-0.24.1 → metaobjects-0.24.2}/src/metaobjects/render/email_document.py +0 -0
  154. {metaobjects-0.24.1 → metaobjects-0.24.2}/src/metaobjects/render/escapers.py +0 -0
  155. {metaobjects-0.24.1 → metaobjects-0.24.2}/src/metaobjects/render/extract/KNOWN_GAPS.md +0 -0
  156. {metaobjects-0.24.1 → metaobjects-0.24.2}/src/metaobjects/render/extract/__init__.py +0 -0
  157. {metaobjects-0.24.1 → metaobjects-0.24.2}/src/metaobjects/render/extract/coerce.py +0 -0
  158. {metaobjects-0.24.1 → metaobjects-0.24.2}/src/metaobjects/render/extract/extract.py +0 -0
  159. {metaobjects-0.24.1 → metaobjects-0.24.2}/src/metaobjects/render/extract/extract_map.py +0 -0
  160. {metaobjects-0.24.1 → metaobjects-0.24.2}/src/metaobjects/render/extract/json_forgiving_reader.py +0 -0
  161. {metaobjects-0.24.1 → metaobjects-0.24.2}/src/metaobjects/render/extract/locate.py +0 -0
  162. {metaobjects-0.24.1 → metaobjects-0.24.2}/src/metaobjects/render/extract/normalize.py +0 -0
  163. {metaobjects-0.24.1 → metaobjects-0.24.2}/src/metaobjects/render/extract/strip.py +0 -0
  164. {metaobjects-0.24.1 → metaobjects-0.24.2}/src/metaobjects/render/extract/types.py +0 -0
  165. {metaobjects-0.24.1 → metaobjects-0.24.2}/src/metaobjects/render/extract/xml_forgiving_reader.py +0 -0
  166. {metaobjects-0.24.1 → metaobjects-0.24.2}/src/metaobjects/render/filesystem_provider.py +0 -0
  167. {metaobjects-0.24.1 → metaobjects-0.24.2}/src/metaobjects/render/payload_accessors.py +0 -0
  168. {metaobjects-0.24.1 → metaobjects-0.24.2}/src/metaobjects/render/prompt/__init__.py +0 -0
  169. {metaobjects-0.24.1 → metaobjects-0.24.2}/src/metaobjects/render/prompt/output_format_renderer.py +0 -0
  170. {metaobjects-0.24.1 → metaobjects-0.24.2}/src/metaobjects/render/prompt/output_format_spec.py +0 -0
  171. {metaobjects-0.24.1 → metaobjects-0.24.2}/src/metaobjects/render/prompt/prompt_field.py +0 -0
  172. {metaobjects-0.24.1 → metaobjects-0.24.2}/src/metaobjects/render/prompt/prompt_overrides.py +0 -0
  173. {metaobjects-0.24.1 → metaobjects-0.24.2}/src/metaobjects/render/prompt/prompt_style.py +0 -0
  174. {metaobjects-0.24.1 → metaobjects-0.24.2}/src/metaobjects/render/renderer.py +0 -0
  175. {metaobjects-0.24.1 → metaobjects-0.24.2}/src/metaobjects/render/verify.py +0 -0
  176. {metaobjects-0.24.1 → metaobjects-0.24.2}/src/metaobjects/runtime/__init__.py +0 -0
  177. {metaobjects-0.24.1 → metaobjects-0.24.2}/src/metaobjects/runtime/llm_recorder.py +0 -0
  178. {metaobjects-0.24.1 → metaobjects-0.24.2}/src/metaobjects/runtime/n2m_resolver.py +0 -0
  179. {metaobjects-0.24.1 → metaobjects-0.24.2}/src/metaobjects/runtime/object_manager.py +0 -0
  180. {metaobjects-0.24.1 → metaobjects-0.24.2}/src/metaobjects/runtime/tph.py +0 -0
  181. {metaobjects-0.24.1 → metaobjects-0.24.2}/src/metaobjects/serializer_json.py +0 -0
  182. {metaobjects-0.24.1 → metaobjects-0.24.2}/src/metaobjects/shared/__init__.py +0 -0
  183. {metaobjects-0.24.1 → metaobjects-0.24.2}/src/metaobjects/shared/base_types.py +0 -0
  184. {metaobjects-0.24.1 → metaobjects-0.24.2}/src/metaobjects/shared/separators.py +0 -0
  185. {metaobjects-0.24.1 → metaobjects-0.24.2}/src/metaobjects/shared/structural.py +0 -0
  186. {metaobjects-0.24.1 → metaobjects-0.24.2}/src/metaobjects/source/__init__.py +0 -0
  187. {metaobjects-0.24.1 → metaobjects-0.24.2}/src/metaobjects/source/error_source.py +0 -0
  188. {metaobjects-0.24.1 → metaobjects-0.24.2}/src/metaobjects/source/json_path.py +0 -0
  189. {metaobjects-0.24.1 → metaobjects-0.24.2}/src/metaobjects/source/semantic_diff.py +0 -0
  190. {metaobjects-0.24.1 → metaobjects-0.24.2}/src/metaobjects/source/yaml_positions.py +0 -0
  191. {metaobjects-0.24.1 → metaobjects-0.24.2}/src/metaobjects/spec_metamodel/__init__.py +0 -0
  192. {metaobjects-0.24.1 → metaobjects-0.24.2}/src/metaobjects/spec_metamodel/attr.json +0 -0
  193. {metaobjects-0.24.1 → metaobjects-0.24.2}/src/metaobjects/spec_metamodel/db.json +0 -0
  194. {metaobjects-0.24.1 → metaobjects-0.24.2}/src/metaobjects/spec_metamodel/documentation.json +0 -0
  195. {metaobjects-0.24.1 → metaobjects-0.24.2}/src/metaobjects/spec_metamodel/field.json +0 -0
  196. {metaobjects-0.24.1 → metaobjects-0.24.2}/src/metaobjects/spec_metamodel/identity.json +0 -0
  197. {metaobjects-0.24.1 → metaobjects-0.24.2}/src/metaobjects/spec_metamodel/index.json +0 -0
  198. {metaobjects-0.24.1 → metaobjects-0.24.2}/src/metaobjects/spec_metamodel/layout.json +0 -0
  199. {metaobjects-0.24.1 → metaobjects-0.24.2}/src/metaobjects/spec_metamodel/object.json +0 -0
  200. {metaobjects-0.24.1 → metaobjects-0.24.2}/src/metaobjects/spec_metamodel/origin.json +0 -0
  201. {metaobjects-0.24.1 → metaobjects-0.24.2}/src/metaobjects/spec_metamodel/prompt.json +0 -0
  202. {metaobjects-0.24.1 → metaobjects-0.24.2}/src/metaobjects/spec_metamodel/relationship.json +0 -0
  203. {metaobjects-0.24.1 → metaobjects-0.24.2}/src/metaobjects/spec_metamodel/source.json +0 -0
  204. {metaobjects-0.24.1 → metaobjects-0.24.2}/src/metaobjects/spec_metamodel/template.json +0 -0
  205. {metaobjects-0.24.1 → metaobjects-0.24.2}/src/metaobjects/spec_metamodel/ui-web.json +0 -0
  206. {metaobjects-0.24.1 → metaobjects-0.24.2}/src/metaobjects/spec_metamodel/ui.json +0 -0
  207. {metaobjects-0.24.1 → metaobjects-0.24.2}/src/metaobjects/spec_metamodel/validator.json +0 -0
  208. {metaobjects-0.24.1 → metaobjects-0.24.2}/src/metaobjects/spec_metamodel/view.json +0 -0
  209. {metaobjects-0.24.1 → metaobjects-0.24.2}/src/metaobjects/super_resolve.py +0 -0
  210. {metaobjects-0.24.1 → metaobjects-0.24.2}/src/metaobjects/validation_types.py +0 -0
  211. {metaobjects-0.24.1 → metaobjects-0.24.2}/src/metaobjects/yaml_desugar.py +0 -0
  212. {metaobjects-0.24.1 → metaobjects-0.24.2}/tests/__init__.py +0 -0
  213. {metaobjects-0.24.1 → metaobjects-0.24.2}/tests/codegen/__init__.py +0 -0
  214. {metaobjects-0.24.1 → metaobjects-0.24.2}/tests/codegen/golden/extends/expected/BaseEntity.py +0 -0
  215. {metaobjects-0.24.1 → metaobjects-0.24.2}/tests/codegen/golden/extends/expected/Program.py +0 -0
  216. {metaobjects-0.24.1 → metaobjects-0.24.2}/tests/codegen/golden/extends/meta.json +0 -0
  217. {metaobjects-0.24.1 → metaobjects-0.24.2}/tests/codegen/golden/nested-array/expected/AuthorBrief.py +0 -0
  218. {metaobjects-0.24.1 → metaobjects-0.24.2}/tests/codegen/golden/nested-array/expected/PostBrief.py +0 -0
  219. {metaobjects-0.24.1 → metaobjects-0.24.2}/tests/codegen/golden/nested-array/meta.json +0 -0
  220. {metaobjects-0.24.1 → metaobjects-0.24.2}/tests/codegen/golden/scalars/expected/Metric.py +0 -0
  221. {metaobjects-0.24.1 → metaobjects-0.24.2}/tests/codegen/golden/scalars/expected/Report.py +0 -0
  222. {metaobjects-0.24.1 → metaobjects-0.24.2}/tests/codegen/golden/scalars/meta.json +0 -0
  223. {metaobjects-0.24.1 → metaobjects-0.24.2}/tests/codegen/golden/vanilla/expected/Subscriber.py +0 -0
  224. {metaobjects-0.24.1 → metaobjects-0.24.2}/tests/codegen/golden/vanilla/meta.json +0 -0
  225. {metaobjects-0.24.1 → metaobjects-0.24.2}/tests/codegen/test_abstract_conformance.py +0 -0
  226. {metaobjects-0.24.1 → metaobjects-0.24.2}/tests/codegen/test_api_docs_builder.py +0 -0
  227. {metaobjects-0.24.1 → metaobjects-0.24.2}/tests/codegen/test_api_docs_paths.py +0 -0
  228. {metaobjects-0.24.1 → metaobjects-0.24.2}/tests/codegen/test_cli.py +0 -0
  229. {metaobjects-0.24.1 → metaobjects-0.24.2}/tests/codegen/test_cli_config_gen.py +0 -0
  230. {metaobjects-0.24.1 → metaobjects-0.24.2}/tests/codegen/test_cli_config_verify.py +0 -0
  231. {metaobjects-0.24.1 → metaobjects-0.24.2}/tests/codegen/test_cli_providers.py +0 -0
  232. {metaobjects-0.24.1 → metaobjects-0.24.2}/tests/codegen/test_cli_registry.py +0 -0
  233. {metaobjects-0.24.1 → metaobjects-0.24.2}/tests/codegen/test_cli_staleness_nudge.py +0 -0
  234. {metaobjects-0.24.1 → metaobjects-0.24.2}/tests/codegen/test_cli_verify_strict.py +0 -0
  235. {metaobjects-0.24.1 → metaobjects-0.24.2}/tests/codegen/test_cli_verify_subverbs.py +0 -0
  236. {metaobjects-0.24.1 → metaobjects-0.24.2}/tests/codegen/test_constants_config.py +0 -0
  237. {metaobjects-0.24.1 → metaobjects-0.24.2}/tests/codegen/test_entity_model.py +0 -0
  238. {metaobjects-0.24.1 → metaobjects-0.24.2}/tests/codegen/test_enum_conformance.py +0 -0
  239. {metaobjects-0.24.1 → metaobjects-0.24.2}/tests/codegen/test_extends_abstract_field_inheritance.py +0 -0
  240. {metaobjects-0.24.1 → metaobjects-0.24.2}/tests/codegen/test_extract_tier_collision.py +0 -0
  241. {metaobjects-0.24.1 → metaobjects-0.24.2}/tests/codegen/test_extractor_generator.py +0 -0
  242. {metaobjects-0.24.1 → metaobjects-0.24.2}/tests/codegen/test_filter_allowlist_generator.py +0 -0
  243. {metaobjects-0.24.1 → metaobjects-0.24.2}/tests/codegen/test_format.py +0 -0
  244. {metaobjects-0.24.1 → metaobjects-0.24.2}/tests/codegen/test_fr010_nested_object_prompt.py +0 -0
  245. {metaobjects-0.24.1 → metaobjects-0.24.2}/tests/codegen/test_fr010_output_codegen.py +0 -0
  246. {metaobjects-0.24.1 → metaobjects-0.24.2}/tests/codegen/test_fr019_shared_provided_conformance.py +0 -0
  247. {metaobjects-0.24.1 → metaobjects-0.24.2}/tests/codegen/test_generator.py +0 -0
  248. {metaobjects-0.24.1 → metaobjects-0.24.2}/tests/codegen/test_generator_extension_seams.py +0 -0
  249. {metaobjects-0.24.1 → metaobjects-0.24.2}/tests/codegen/test_golden.py +0 -0
  250. {metaobjects-0.24.1 → metaobjects-0.24.2}/tests/codegen/test_inherit_without_restate_gate.py +0 -0
  251. {metaobjects-0.24.1 → metaobjects-0.24.2}/tests/codegen/test_inheritance_conformance.py +0 -0
  252. {metaobjects-0.24.1 → metaobjects-0.24.2}/tests/codegen/test_instance_artifacts.py +0 -0
  253. {metaobjects-0.24.1 → metaobjects-0.24.2}/tests/codegen/test_m2m_codegen.py +0 -0
  254. {metaobjects-0.24.1 → metaobjects-0.24.2}/tests/codegen/test_origin_nullability.py +0 -0
  255. {metaobjects-0.24.1 → metaobjects-0.24.2}/tests/codegen/test_output_parser_generator.py +0 -0
  256. {metaobjects-0.24.1 → metaobjects-0.24.2}/tests/codegen/test_overwrite_policy.py +0 -0
  257. {metaobjects-0.24.1 → metaobjects-0.24.2}/tests/codegen/test_overwrite_policy_hash.py +0 -0
  258. {metaobjects-0.24.1 → metaobjects-0.24.2}/tests/codegen/test_payload_vo_generator.py +0 -0
  259. {metaobjects-0.24.1 → metaobjects-0.24.2}/tests/codegen/test_project_config.py +0 -0
  260. {metaobjects-0.24.1 → metaobjects-0.24.2}/tests/codegen/test_projection_compile.py +0 -0
  261. {metaobjects-0.24.1 → metaobjects-0.24.2}/tests/codegen/test_render_helper_conformance.py +0 -0
  262. {metaobjects-0.24.1 → metaobjects-0.24.2}/tests/codegen/test_render_helper_generator.py +0 -0
  263. {metaobjects-0.24.1 → metaobjects-0.24.2}/tests/codegen/test_reverse_finders.py +0 -0
  264. {metaobjects-0.24.1 → metaobjects-0.24.2}/tests/codegen/test_router_autoset.py +0 -0
  265. {metaobjects-0.24.1 → metaobjects-0.24.2}/tests/codegen/test_router_generator.py +0 -0
  266. {metaobjects-0.24.1 → metaobjects-0.24.2}/tests/codegen/test_runner.py +0 -0
  267. {metaobjects-0.24.1 → metaobjects-0.24.2}/tests/codegen/test_sourceless_projection.py +0 -0
  268. {metaobjects-0.24.1 → metaobjects-0.24.2}/tests/codegen/test_template_data.py +0 -0
  269. {metaobjects-0.24.1 → metaobjects-0.24.2}/tests/codegen/test_template_generator.py +0 -0
  270. {metaobjects-0.24.1 → metaobjects-0.24.2}/tests/codegen/test_template_output_pattern.py +0 -0
  271. {metaobjects-0.24.1 → metaobjects-0.24.2}/tests/codegen/test_template_scope_helpers.py +0 -0
  272. {metaobjects-0.24.1 → metaobjects-0.24.2}/tests/codegen/test_template_scope_walk.py +0 -0
  273. {metaobjects-0.24.1 → metaobjects-0.24.2}/tests/codegen/test_template_spec.py +0 -0
  274. {metaobjects-0.24.1 → metaobjects-0.24.2}/tests/codegen/test_tph_codegen.py +0 -0
  275. {metaobjects-0.24.1 → metaobjects-0.24.2}/tests/codegen/test_trace_helper_generator.py +0 -0
  276. {metaobjects-0.24.1 → metaobjects-0.24.2}/tests/codegen/test_type_map.py +0 -0
  277. {metaobjects-0.24.1 → metaobjects-0.24.2}/tests/codegen/test_validation_conformance.py +0 -0
  278. {metaobjects-0.24.1 → metaobjects-0.24.2}/tests/codegen/test_write_through.py +0 -0
  279. {metaobjects-0.24.1 → metaobjects-0.24.2}/tests/config/__init__.py +0 -0
  280. {metaobjects-0.24.1 → metaobjects-0.24.2}/tests/config/test_neutral_config.py +0 -0
  281. {metaobjects-0.24.1 → metaobjects-0.24.2}/tests/config/test_source_resolver.py +0 -0
  282. {metaobjects-0.24.1 → metaobjects-0.24.2}/tests/conformance/__init__.py +0 -0
  283. {metaobjects-0.24.1 → metaobjects-0.24.2}/tests/conformance/capabilities.py +0 -0
  284. {metaobjects-0.24.1 → metaobjects-0.24.2}/tests/conformance/conformance-expected-failures.json +0 -0
  285. {metaobjects-0.24.1 → metaobjects-0.24.2}/tests/conformance/conformance_adapter.py +0 -0
  286. {metaobjects-0.24.1 → metaobjects-0.24.2}/tests/conformance/corpus.py +0 -0
  287. {metaobjects-0.24.1 → metaobjects-0.24.2}/tests/conformance/expected_failures.py +0 -0
  288. {metaobjects-0.24.1 → metaobjects-0.24.2}/tests/conformance/fixture_discovery.py +0 -0
  289. {metaobjects-0.24.1 → metaobjects-0.24.2}/tests/conformance/navigator.py +0 -0
  290. {metaobjects-0.24.1 → metaobjects-0.24.2}/tests/conformance/test_api_docs_cross_port_conformance.py +0 -0
  291. {metaobjects-0.24.1 → metaobjects-0.24.2}/tests/conformance/test_conformance.py +0 -0
  292. {metaobjects-0.24.1 → metaobjects-0.24.2}/tests/conformance/test_extract_conformance.py +0 -0
  293. {metaobjects-0.24.1 → metaobjects-0.24.2}/tests/conformance/test_extract_object_verdict.py +0 -0
  294. {metaobjects-0.24.1 → metaobjects-0.24.2}/tests/conformance/test_fr010_loader_attrs.py +0 -0
  295. {metaobjects-0.24.1 → metaobjects-0.24.2}/tests/conformance/test_fr011_attrs.py +0 -0
  296. {metaobjects-0.24.1 → metaobjects-0.24.2}/tests/conformance/test_generator_registry_conformance.py +0 -0
  297. {metaobjects-0.24.1 → metaobjects-0.24.2}/tests/conformance/test_object_model_conformance.py +0 -0
  298. {metaobjects-0.24.1 → metaobjects-0.24.2}/tests/conformance/test_provider_composition_conformance.py +0 -0
  299. {metaobjects-0.24.1 → metaobjects-0.24.2}/tests/conformance/test_registry_conformance.py +0 -0
  300. {metaobjects-0.24.1 → metaobjects-0.24.2}/tests/conformance/test_runner_hardfail.py +0 -0
  301. {metaobjects-0.24.1 → metaobjects-0.24.2}/tests/conformance/test_source_resolution_conformance.py +0 -0
  302. {metaobjects-0.24.1 → metaobjects-0.24.2}/tests/conformance/test_spec_metamodel_embed.py +0 -0
  303. {metaobjects-0.24.1 → metaobjects-0.24.2}/tests/conformance/test_strict_attr_load.py +0 -0
  304. {metaobjects-0.24.1 → metaobjects-0.24.2}/tests/conformance/test_template_codegen_conformance.py +0 -0
  305. {metaobjects-0.24.1 → metaobjects-0.24.2}/tests/conformance/test_template_generator_conformance.py +0 -0
  306. {metaobjects-0.24.1 → metaobjects-0.24.2}/tests/conformance/test_yaml_conformance.py +0 -0
  307. {metaobjects-0.24.1 → metaobjects-0.24.2}/tests/conformance/yaml-conformance-expected-failures.json +0 -0
  308. {metaobjects-0.24.1 → metaobjects-0.24.2}/tests/integration/__init__.py +0 -0
  309. {metaobjects-0.24.1 → metaobjects-0.24.2}/tests/integration/api_contract_assertions.py +0 -0
  310. {metaobjects-0.24.1 → metaobjects-0.24.2}/tests/integration/api_contract_jsonb_server.py +0 -0
  311. {metaobjects-0.24.1 → metaobjects-0.24.2}/tests/integration/api_contract_m2m_server.py +0 -0
  312. {metaobjects-0.24.1 → metaobjects-0.24.2}/tests/integration/api_contract_server.py +0 -0
  313. {metaobjects-0.24.1 → metaobjects-0.24.2}/tests/integration/generated_jsonb_app.py +0 -0
  314. {metaobjects-0.24.1 → metaobjects-0.24.2}/tests/integration/generated_m2m_app.py +0 -0
  315. {metaobjects-0.24.1 → metaobjects-0.24.2}/tests/integration/generated_router_app.py +0 -0
  316. {metaobjects-0.24.1 → metaobjects-0.24.2}/tests/integration/generated_tph_app.py +0 -0
  317. {metaobjects-0.24.1 → metaobjects-0.24.2}/tests/integration/meta_ai_trace.yaml +0 -0
  318. {metaobjects-0.24.1 → metaobjects-0.24.2}/tests/integration/normalization.py +0 -0
  319. {metaobjects-0.24.1 → metaobjects-0.24.2}/tests/integration/postgres_container.py +0 -0
  320. {metaobjects-0.24.1 → metaobjects-0.24.2}/tests/integration/query_runner.py +0 -0
  321. {metaobjects-0.24.1 → metaobjects-0.24.2}/tests/integration/scenarios.py +0 -0
  322. {metaobjects-0.24.1 → metaobjects-0.24.2}/tests/integration/test_api_contract.py +0 -0
  323. {metaobjects-0.24.1 → metaobjects-0.24.2}/tests/integration/test_api_contract_generated.py +0 -0
  324. {metaobjects-0.24.1 → metaobjects-0.24.2}/tests/integration/test_api_contract_jsonb.py +0 -0
  325. {metaobjects-0.24.1 → metaobjects-0.24.2}/tests/integration/test_api_contract_m2m.py +0 -0
  326. {metaobjects-0.24.1 → metaobjects-0.24.2}/tests/integration/test_api_contract_m2m_generated.py +0 -0
  327. {metaobjects-0.24.1 → metaobjects-0.24.2}/tests/integration/test_api_contract_tph_generated.py +0 -0
  328. {metaobjects-0.24.1 → metaobjects-0.24.2}/tests/integration/test_generated_router_uuid_pk.py +0 -0
  329. {metaobjects-0.24.1 → metaobjects-0.24.2}/tests/integration/test_llm_call_trace.py +0 -0
  330. {metaobjects-0.24.1 → metaobjects-0.24.2}/tests/integration/test_normalization.py +0 -0
  331. {metaobjects-0.24.1 → metaobjects-0.24.2}/tests/integration/test_query_scenarios.py +0 -0
  332. {metaobjects-0.24.1 → metaobjects-0.24.2}/tests/integration/test_runtime_return_types.py +0 -0
  333. {metaobjects-0.24.1 → metaobjects-0.24.2}/tests/loader/__init__.py +0 -0
  334. {metaobjects-0.24.1 → metaobjects-0.24.2}/tests/loader/test_enum_extends_values_conflict.py +0 -0
  335. {metaobjects-0.24.1 → metaobjects-0.24.2}/tests/loader/test_field_mutability_order.py +0 -0
  336. {metaobjects-0.24.1 → metaobjects-0.24.2}/tests/loader/test_shipped_library_ai.py +0 -0
  337. {metaobjects-0.24.1 → metaobjects-0.24.2}/tests/loader/test_template_payload_target_210.py +0 -0
  338. {metaobjects-0.24.1 → metaobjects-0.24.2}/tests/open_closed_proof_test.py +0 -0
  339. {metaobjects-0.24.1 → metaobjects-0.24.2}/tests/render/__init__.py +0 -0
  340. {metaobjects-0.24.1 → metaobjects-0.24.2}/tests/render/extract/__init__.py +0 -0
  341. {metaobjects-0.24.1 → metaobjects-0.24.2}/tests/render/extract/test_coerce.py +0 -0
  342. {metaobjects-0.24.1 → metaobjects-0.24.2}/tests/render/extract/test_extract.py +0 -0
  343. {metaobjects-0.24.1 → metaobjects-0.24.2}/tests/render/extract/test_extract_map.py +0 -0
  344. {metaobjects-0.24.1 → metaobjects-0.24.2}/tests/render/extract/test_json_forgiving_reader.py +0 -0
  345. {metaobjects-0.24.1 → metaobjects-0.24.2}/tests/render/extract/test_locate.py +0 -0
  346. {metaobjects-0.24.1 → metaobjects-0.24.2}/tests/render/extract/test_model.py +0 -0
  347. {metaobjects-0.24.1 → metaobjects-0.24.2}/tests/render/extract/test_normalize.py +0 -0
  348. {metaobjects-0.24.1 → metaobjects-0.24.2}/tests/render/extract/test_strip.py +0 -0
  349. {metaobjects-0.24.1 → metaobjects-0.24.2}/tests/render/extract/test_xml_forgiving_reader.py +0 -0
  350. {metaobjects-0.24.1 → metaobjects-0.24.2}/tests/render/prompt/__init__.py +0 -0
  351. {metaobjects-0.24.1 → metaobjects-0.24.2}/tests/render/prompt/test_output_format_renderer.py +0 -0
  352. {metaobjects-0.24.1 → metaobjects-0.24.2}/tests/render/test_email_document.py +0 -0
  353. {metaobjects-0.24.1 → metaobjects-0.24.2}/tests/render/test_filesystem_provider.py +0 -0
  354. {metaobjects-0.24.1 → metaobjects-0.24.2}/tests/render/test_output_format_renderer_nested.py +0 -0
  355. {metaobjects-0.24.1 → metaobjects-0.24.2}/tests/render/test_output_prompt_conformance.py +0 -0
  356. {metaobjects-0.24.1 → metaobjects-0.24.2}/tests/render/test_render_conformance.py +0 -0
  357. {metaobjects-0.24.1 → metaobjects-0.24.2}/tests/render/test_render_max_chars.py +0 -0
  358. {metaobjects-0.24.1 → metaobjects-0.24.2}/tests/render/test_verify.py +0 -0
  359. {metaobjects-0.24.1 → metaobjects-0.24.2}/tests/render/test_verify_conformance.py +0 -0
  360. {metaobjects-0.24.1 → metaobjects-0.24.2}/tests/runtime/test_object_manager_enum_intvaluemap.py +0 -0
  361. {metaobjects-0.24.1 → metaobjects-0.24.2}/tests/source/__init__.py +0 -0
  362. {metaobjects-0.24.1 → metaobjects-0.24.2}/tests/source/test_fr5c_merge_attribution.py +0 -0
  363. {metaobjects-0.24.1 → metaobjects-0.24.2}/tests/source/test_fr5d_reference_resolution.py +0 -0
  364. {metaobjects-0.24.1 → metaobjects-0.24.2}/tests/source/test_fr5e_database_source_shape.py +0 -0
  365. {metaobjects-0.24.1 → metaobjects-0.24.2}/tests/source/test_json_path.py +0 -0
  366. {metaobjects-0.24.1 → metaobjects-0.24.2}/tests/source/test_semantic_diff.py +0 -0
  367. {metaobjects-0.24.1 → metaobjects-0.24.2}/tests/source/test_source_on_node.py +0 -0
  368. {metaobjects-0.24.1 → metaobjects-0.24.2}/tests/source/test_yaml_positions.py +0 -0
  369. {metaobjects-0.24.1 → metaobjects-0.24.2}/tests/test_api_docs_accuracy.py +0 -0
  370. {metaobjects-0.24.1 → metaobjects-0.24.2}/tests/unit/__init__.py +0 -0
  371. {metaobjects-0.24.1 → metaobjects-0.24.2}/tests/unit/test_agent_context_staleness.py +0 -0
  372. {metaobjects-0.24.1 → metaobjects-0.24.2}/tests/unit/test_capabilities.py +0 -0
  373. {metaobjects-0.24.1 → metaobjects-0.24.2}/tests/unit/test_common_attrs.py +0 -0
  374. {metaobjects-0.24.1 → metaobjects-0.24.2}/tests/unit/test_core_types.py +0 -0
  375. {metaobjects-0.24.1 → metaobjects-0.24.2}/tests/unit/test_effective_package.py +0 -0
  376. {metaobjects-0.24.1 → metaobjects-0.24.2}/tests/unit/test_errors.py +0 -0
  377. {metaobjects-0.24.1 → metaobjects-0.24.2}/tests/unit/test_field_enum.py +0 -0
  378. {metaobjects-0.24.1 → metaobjects-0.24.2}/tests/unit/test_field_enum_intvaluemap.py +0 -0
  379. {metaobjects-0.24.1 → metaobjects-0.24.2}/tests/unit/test_field_map_validation.py +0 -0
  380. {metaobjects-0.24.1 → metaobjects-0.24.2}/tests/unit/test_field_uuid_dbcolumntype.py +0 -0
  381. {metaobjects-0.24.1 → metaobjects-0.24.2}/tests/unit/test_fr016_source_name_and_kind_aliases.py +0 -0
  382. {metaobjects-0.24.1 → metaobjects-0.24.2}/tests/unit/test_index_lookup.py +0 -0
  383. {metaobjects-0.24.1 → metaobjects-0.24.2}/tests/unit/test_llm_recorder.py +0 -0
  384. {metaobjects-0.24.1 → metaobjects-0.24.2}/tests/unit/test_loader.py +0 -0
  385. {metaobjects-0.24.1 → metaobjects-0.24.2}/tests/unit/test_loader_bom.py +0 -0
  386. {metaobjects-0.24.1 → metaobjects-0.24.2}/tests/unit/test_loader_class.py +0 -0
  387. {metaobjects-0.24.1 → metaobjects-0.24.2}/tests/unit/test_merge.py +0 -0
  388. {metaobjects-0.24.1 → metaobjects-0.24.2}/tests/unit/test_meta_attr.py +0 -0
  389. {metaobjects-0.24.1 → metaobjects-0.24.2}/tests/unit/test_meta_data.py +0 -0
  390. {metaobjects-0.24.1 → metaobjects-0.24.2}/tests/unit/test_meta_source.py +0 -0
  391. {metaobjects-0.24.1 → metaobjects-0.24.2}/tests/unit/test_module_shortcuts.py +0 -0
  392. {metaobjects-0.24.1 → metaobjects-0.24.2}/tests/unit/test_n2m_resolver.py +0 -0
  393. {metaobjects-0.24.1 → metaobjects-0.24.2}/tests/unit/test_n2m_resolver_inherited.py +0 -0
  394. {metaobjects-0.24.1 → metaobjects-0.24.2}/tests/unit/test_object_manager_autoset_stamping.py +0 -0
  395. {metaobjects-0.24.1 → metaobjects-0.24.2}/tests/unit/test_object_manager_uuid_coercion.py +0 -0
  396. {metaobjects-0.24.1 → metaobjects-0.24.2}/tests/unit/test_object_manager_write_through.py +0 -0
  397. {metaobjects-0.24.1 → metaobjects-0.24.2}/tests/unit/test_one_primary_source.py +0 -0
  398. {metaobjects-0.24.1 → metaobjects-0.24.2}/tests/unit/test_parser.py +0 -0
  399. {metaobjects-0.24.1 → metaobjects-0.24.2}/tests/unit/test_parser_yaml.py +0 -0
  400. {metaobjects-0.24.1 → metaobjects-0.24.2}/tests/unit/test_provider.py +0 -0
  401. {metaobjects-0.24.1 → metaobjects-0.24.2}/tests/unit/test_provider_extension.py +0 -0
  402. {metaobjects-0.24.1 → metaobjects-0.24.2}/tests/unit/test_registry.py +0 -0
  403. {metaobjects-0.24.1 → metaobjects-0.24.2}/tests/unit/test_registry_completeness.py +0 -0
  404. {metaobjects-0.24.1 → metaobjects-0.24.2}/tests/unit/test_registry_extend.py +0 -0
  405. {metaobjects-0.24.1 → metaobjects-0.24.2}/tests/unit/test_registry_sealed.py +0 -0
  406. {metaobjects-0.24.1 → metaobjects-0.24.2}/tests/unit/test_relationship_referential_actions.py +0 -0
  407. {metaobjects-0.24.1 → metaobjects-0.24.2}/tests/unit/test_resolution_key.py +0 -0
  408. {metaobjects-0.24.1 → metaobjects-0.24.2}/tests/unit/test_runtime_resolution_key_binding.py +0 -0
  409. {metaobjects-0.24.1 → metaobjects-0.24.2}/tests/unit/test_serializer.py +0 -0
  410. {metaobjects-0.24.1 → metaobjects-0.24.2}/tests/unit/test_shared_constants.py +0 -0
  411. {metaobjects-0.24.1 → metaobjects-0.24.2}/tests/unit/test_smoke.py +0 -0
  412. {metaobjects-0.24.1 → metaobjects-0.24.2}/tests/unit/test_source_escapes.py +0 -0
  413. {metaobjects-0.24.1 → metaobjects-0.24.2}/tests/unit/test_sources.py +0 -0
  414. {metaobjects-0.24.1 → metaobjects-0.24.2}/tests/unit/test_strict_child_placement.py +0 -0
  415. {metaobjects-0.24.1 → metaobjects-0.24.2}/tests/unit/test_super_resolve.py +0 -0
  416. {metaobjects-0.24.1 → metaobjects-0.24.2}/tests/unit/test_template_toolcall.py +0 -0
  417. {metaobjects-0.24.1 → metaobjects-0.24.2}/tests/unit/test_template_wrong_subtype_attrs.py +0 -0
  418. {metaobjects-0.24.1 → metaobjects-0.24.2}/tests/unit/test_validation_attr_schema.py +0 -0
  419. {metaobjects-0.24.1 → metaobjects-0.24.2}/tests/unit/test_validation_filter_values.py +0 -0
  420. {metaobjects-0.24.1 → metaobjects-0.24.2}/tests/unit/test_validation_origin_195.py +0 -0
  421. {metaobjects-0.24.1 → metaobjects-0.24.2}/tests/unit/test_validation_origin_paths.py +0 -0
  422. {metaobjects-0.24.1 → metaobjects-0.24.2}/tests/unit/test_validation_sort_field.py +0 -0
  423. {metaobjects-0.24.1 → metaobjects-0.24.2}/tests/unit/test_validation_warnings.py +0 -0
  424. {metaobjects-0.24.1 → metaobjects-0.24.2}/tests/unit/test_write_coercion_arrays.py +0 -0
  425. {metaobjects-0.24.1 → metaobjects-0.24.2}/tests/unit/test_yaml_desugar.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.5
2
2
  Name: metaobjects
3
- Version: 0.24.1
3
+ Version: 0.24.2
4
4
  Summary: Cross-language metadata standard: declare typed entities once, generate idiomatic drift-checked code across languages — Python port.
5
5
  Project-URL: Homepage, https://metaobjects.dev
6
6
  Project-URL: Repository, https://github.com/metaobjectsdev/metaobjects
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "metaobjects"
3
- version = "0.24.1"
3
+ version = "0.24.2"
4
4
  description = "Cross-language metadata standard: declare typed entities once, generate idiomatic drift-checked code across languages — Python port."
5
5
  readme = "README.md"
6
6
  requires-python = ">=3.11"
@@ -69,6 +69,7 @@ from .meta.core.requirement.meta_requirement import MetaRequirement
69
69
  from .meta.core.requirement.requirement_constants import (
70
70
  REQUIREMENT_ATTR_DISPOSITION,
71
71
  REQUIREMENT_ATTR_IMPLEMENTED_BY,
72
+ REQUIREMENT_ATTR_SUPERSEDED_BY,
72
73
  REQUIREMENT_ATTR_LEVEL,
73
74
  REQUIREMENT_ATTR_STATEMENT,
74
75
  REQUIREMENT_ATTR_STATUS,
@@ -636,6 +637,14 @@ _REQUIREMENT_COMMON_ATTRS = [
636
637
  ),
637
638
  AttrSchema(name=REQUIREMENT_ATTR_STATEMENT, value_type=ATTR_SUBTYPE_STRING, required=True),
638
639
  AttrSchema(name=REQUIREMENT_ATTR_COUNTEREXAMPLE, value_type=ATTR_SUBTYPE_STRING, required=True),
640
+ # FR-039 -- the requirement that REPLACED a retired one. Declared BEFORE
641
+ # @implementedBy to match the canonical spec's child order, which the registry
642
+ # manifest emits verbatim and every port byte-matches.
643
+ AttrSchema(
644
+ name=REQUIREMENT_ATTR_SUPERSEDED_BY,
645
+ value_type=ATTR_SUBTYPE_STRING,
646
+ required=False,
647
+ ),
639
648
  AttrSchema(
640
649
  name=REQUIREMENT_ATTR_IMPLEMENTED_BY,
641
650
  value_type=ATTR_SUBTYPE_STRING,
@@ -94,6 +94,12 @@ class ErrorCode(str, Enum):
94
94
  # references / sourceRefField-not-matching / M:N-attr-on-1:N). The symmetric-
95
95
  # on-hetero + symmetric+sourceRefField rules emit ERR_BAD_ATTR_VALUE instead.
96
96
  ERR_INVALID_INDEX = "ERR_INVALID_INDEX"
97
+ # FR-039 -- @status: retired declares @implementedBy. Refused rather than exempted:
98
+ # a retired capability has no implementation BY DEFINITION, so forbidding the
99
+ # attribute makes the dangling-reference class unreachable instead of tolerated.
100
+ ERR_REQUIREMENT_RETIRED_HAS_IMPLEMENTORS = "ERR_REQUIREMENT_RETIRED_HAS_IMPLEMENTORS"
101
+ # FR-039 -- @supersededBy on a requirement whose @status is not `retired`.
102
+ ERR_REQUIREMENT_SUPERSEDED_BY_NOT_RETIRED = "ERR_REQUIREMENT_SUPERSEDED_BY_NOT_RETIRED"
97
103
  ERR_INVALID_RELATIONSHIP = "ERR_INVALID_RELATIONSHIP"
98
104
  # identity.reference @references names an FK target object that does not resolve
99
105
  # to any object in the loaded tree (a dangling cross-reference between metadata).
@@ -76,6 +76,7 @@ from ..shared.base_types import (
76
76
  TYPE_OBJECT,
77
77
  TYPE_ORIGIN,
78
78
  TYPE_RELATIONSHIP,
79
+ TYPE_REQUIREMENT,
79
80
  TYPE_SOURCE,
80
81
  TYPE_TEMPLATE,
81
82
  )
@@ -236,6 +237,9 @@ def run_validations(
236
237
  # #335 Half B — @sortable on an array field, or a subtype with no operator band → error.
237
238
  _validate_sortable_has_supported_subtype(root, errors)
238
239
  _validate_index_lookup_fields(root, errors)
240
+ # FR-039 -- a retired requirement carries no @implementedBy (refused, not exempted,
241
+ # so the dangling-ref class is unreachable) and @supersededBy is legal only there.
242
+ _validate_retired_requirement_links(root, errors)
239
243
 
240
244
 
241
245
  # ---------------------------------------------------------------------------
@@ -3827,3 +3831,75 @@ def _validate_index_lookup_fields(root: MetaData, errors: list[MetaError]) -> No
3827
3831
  ),
3828
3832
  envelope=node.source,
3829
3833
  ))
3834
+
3835
+
3836
+ # ---------------------------------------------------------------------------
3837
+ # FR-039 -- a retired requirement's link vocabulary
3838
+ #
3839
+ # Two rules, and the first is the structural point of the FR.
3840
+ #
3841
+ # 1. `@status: retired` may NOT carry `@implementedBy`. Not exempt from the
3842
+ # dangling-reference check -- REFUSED. 0.24.0 removed the previous retired
3843
+ # vocabulary because `verify` was SILENT on dangling refs for it, hiding 29
3844
+ # unresolvable references across 14 entries in one estate while reporting
3845
+ # zero. Forbidding the attribute makes the bug class UNREACHABLE instead: a
3846
+ # retired capability has no implementation by definition.
3847
+ # 2. `@supersededBy` is legal ONLY on `retired`. Resolution of the reference is
3848
+ # `verify`'s job; the loader owns the shape.
3849
+ #
3850
+ # `requirement.*` gate logic otherwise lives only in the TS CLI, which is exactly
3851
+ # why THIS rule belongs in the loader: a Python estate would otherwise be free to
3852
+ # author the shape the rule exists to prevent.
3853
+ #
3854
+ # ADR-0039: attrs() is the RESOLVING accessor in Python (attr() is own-only), so a
3855
+ # requirement inheriting its status through `extends` is judged on its EFFECTIVE one.
3856
+ # ---------------------------------------------------------------------------
3857
+
3858
+
3859
+ def _validate_retired_requirement_links(root: MetaData, errors: list[MetaError]) -> None:
3860
+ from ..meta.core.requirement.requirement_constants import (
3861
+ REQUIREMENT_ATTR_IMPLEMENTED_BY,
3862
+ REQUIREMENT_ATTR_STATUS,
3863
+ REQUIREMENT_ATTR_SUPERSEDED_BY,
3864
+ REQUIREMENT_STATUS_RETIRED,
3865
+ )
3866
+
3867
+ def walk(node: MetaData) -> None:
3868
+ for child in node.children():
3869
+ if child.type == TYPE_REQUIREMENT:
3870
+ attrs = child.attrs()
3871
+ status = attrs.get(REQUIREMENT_ATTR_STATUS)
3872
+ is_retired = status == REQUIREMENT_STATUS_RETIRED
3873
+
3874
+ if is_retired and REQUIREMENT_ATTR_IMPLEMENTED_BY in attrs:
3875
+ errors.append(MetaError(
3876
+ code=ErrorCode.ERR_REQUIREMENT_RETIRED_HAS_IMPLEMENTORS,
3877
+ message=(
3878
+ f'requirement.{child.sub_type} "{child.name}" is @status: '
3879
+ f"{REQUIREMENT_STATUS_RETIRED} and declares "
3880
+ f"@{REQUIREMENT_ATTR_IMPLEMENTED_BY}. A retired capability has no "
3881
+ f"implementation -- that is what retiring it means. Delete the "
3882
+ f"attribute; if the nodes are still there, the capability is not "
3883
+ f"retired. What used to implement it belongs in `notes`, and what "
3884
+ f"REPLACED it in @{REQUIREMENT_ATTR_SUPERSEDED_BY}."
3885
+ ),
3886
+ envelope=child.source,
3887
+ ))
3888
+
3889
+ if not is_retired and REQUIREMENT_ATTR_SUPERSEDED_BY in attrs:
3890
+ shown = status if status is not None else "(absent)"
3891
+ errors.append(MetaError(
3892
+ code=ErrorCode.ERR_REQUIREMENT_SUPERSEDED_BY_NOT_RETIRED,
3893
+ message=(
3894
+ f'requirement.{child.sub_type} "{child.name}" declares '
3895
+ f"@{REQUIREMENT_ATTR_SUPERSEDED_BY} but its "
3896
+ f'@{REQUIREMENT_ATTR_STATUS} is "{shown}". That attribute names '
3897
+ f"the requirement which REPLACED a withdrawn one, so it is legal "
3898
+ f"only on @{REQUIREMENT_ATTR_STATUS}: {REQUIREMENT_STATUS_RETIRED}."
3899
+ ),
3900
+ envelope=child.source,
3901
+ ))
3902
+ # Hierarchy IS nesting, so a retired requirement can sit at any depth.
3903
+ walk(child)
3904
+
3905
+ walk(root)
@@ -26,6 +26,9 @@ REQUIREMENT_SUBTYPES = (
26
26
  #: 1 solution · 2 segment (app/library) · 3 service · 4 object · 5 member.
27
27
  REQUIREMENT_ATTR_LEVEL = "level"
28
28
  REQUIREMENT_ATTR_STATUS = "status"
29
+ # FR-039 -- the requirement that REPLACED a retired one. Resolving reference,
30
+ # legal on `retired` only.
31
+ REQUIREMENT_ATTR_SUPERSEDED_BY = "supersededBy"
29
32
  REQUIREMENT_ATTR_DISPOSITION = "disposition"
30
33
  REQUIREMENT_ATTR_TRACKED_BY = "trackedBy"
31
34
  REQUIREMENT_ATTR_STATEMENT = "statement"
@@ -41,11 +44,15 @@ REQUIREMENT_ATTR_IMPLEMENTED_BY = "implementedBy"
41
44
  REQUIREMENT_STATUS_PLANNED = "planned"
42
45
  REQUIREMENT_STATUS_LIVE = "live"
43
46
  REQUIREMENT_STATUS_PARTIAL = "partial"
47
+ # FR-039 -- built, then deliberately removed; it must NOT be rebuilt. PRESCRIPTIVE:
48
+ # the entry states a prohibition in force, falsifiable by the capability reappearing.
49
+ REQUIREMENT_STATUS_RETIRED = "retired"
44
50
 
45
51
  REQUIREMENT_STATUSES = (
46
52
  REQUIREMENT_STATUS_PLANNED,
47
53
  REQUIREMENT_STATUS_LIVE,
48
54
  REQUIREMENT_STATUS_PARTIAL,
55
+ REQUIREMENT_STATUS_RETIRED,
49
56
  )
50
57
 
51
58
  #: Statuses whose implementing nodes are supposed to still exist. A dangling
@@ -63,6 +70,11 @@ REQUIREMENT_STATUSES_REQUIRING_LIVE_NODES = (
63
70
  # Statuses with outstanding work, so a @disposition is meaningful on them. On any
64
71
  # other status the decision IS the status, and recording a second one can only
65
72
  # agree with it or contradict it.
73
+ # Statuses on which `@implementedBy` is REFUSED AT LOAD (FR-039). Forbidding the
74
+ # attribute makes the dangling-reference bug class UNREACHABLE rather than exempt --
75
+ # a retired capability has no implementation by definition.
76
+ REQUIREMENT_STATUSES_FORBIDDING_IMPLEMENTORS = (REQUIREMENT_STATUS_RETIRED,)
77
+
66
78
  REQUIREMENT_STATUSES_WITH_OUTSTANDING_WORK = (
67
79
  REQUIREMENT_STATUS_PLANNED,
68
80
  REQUIREMENT_STATUS_PARTIAL,
@@ -255,7 +255,7 @@ def _sorted_children(definition: TypeDefinition) -> list[dict[str, object]]:
255
255
  return children
256
256
 
257
257
 
258
- METAMODEL_VERSION = "0.12"
258
+ METAMODEL_VERSION = "0.13"
259
259
  """Rolled-up spec-version for the cross-port registry manifest.
260
260
 
261
261
  ``"0"`` = pre-1.0 / unstable (semver major-0). Flips to ``"1.0"`` at the
@@ -24,9 +24,10 @@
24
24
  "allowedValues": [
25
25
  "planned",
26
26
  "live",
27
- "partial"
27
+ "partial",
28
+ "retired"
28
29
  ],
29
- "description": "planned intended but not built yet; live implemented and in use; partial implemented with known gaps. A requirement is PRESCRIPTIVE — it states what SHOULD happen and is never a journal of what happened — so a capability that no longer applies is DELETED, not annotated as retired; the record of it having existed belongs to version control and to notes on the entries that survive. A dangling @implementedBy is an ERROR on live/partial (the model moved, the requirement is stale) and ALLOWED on planned, where the nodes do not exist YET. A planned requirement also never contributes to object coverage: planning a capability must not silence the warning that nothing implements it."
30
+ "description": "planned intended but not built yet; live implemented and in use; partial implemented with known gaps; retired BUILT THEN DELIBERATELY REMOVED — it must not be rebuilt. A requirement is PRESCRIPTIVE: it states what SHOULD be true and never journals what happened, and retired satisfies that because it states a prohibition in force, falsifiable by the capability reappearing. On retired, @implementedBy is REFUSED at load (ERR_REQUIREMENT_RETIRED_HAS_IMPLEMENTORS) — a retired capability has no implementation by definition, so its references cannot dangle because they cannot exist; @supersededBy names the requirement that replaced it. A dangling @implementedBy is an ERROR on live/partial (the model moved, the requirement is stale) and ALLOWED on planned, where the nodes do not exist YET. Neither planned nor retired contributes to object coverage: planning a capability must not silence the warning that nothing implements it, and neither must retiring one."
30
31
  },
31
32
  {
32
33
  "type": "attr",
@@ -65,6 +66,14 @@
65
66
  "max": 1,
66
67
  "description": "What breaking it looks like, in one sentence — a STATIC falsifiability test, authored once, never a state. A requirement MUST be violable: 'every entity has a uuid primary key' is (point at one with a composite string key); 'things are persisted' is not, and is a description rather than a requirement. Renamed from @violation in 0.24.0, which read as a status."
67
68
  },
69
+ {
70
+ "type": "attr",
71
+ "subType": "string",
72
+ "name": "supersededBy",
73
+ "min": 0,
74
+ "max": 1,
75
+ "description": "The requirement that REPLACED this one. Legal on @status: retired only (ERR_REQUIREMENT_SUPERSEDED_BY_NOT_RETIRED otherwise), and RESOLVED like any other reference, so a dangling one is ERR_REQUIREMENT_DANGLING_REF and a supersession chain stays walkable: A names B, and when B is retired in turn it names C. That resolution is the whole point — 0.24.0 deregistered an unresolved string, and the 2026-08-10 ruling had asked for the resolving form (point 4) which was never built. A prose note in @notes points one hop and goes stale; this does not."
76
+ },
68
77
  {
69
78
  "type": "attr",
70
79
  "subType": "string",
@@ -107,9 +116,10 @@
107
116
  "allowedValues": [
108
117
  "planned",
109
118
  "live",
110
- "partial"
119
+ "partial",
120
+ "retired"
111
121
  ],
112
- "description": "As on requirement.functional. A live or partial architectural requirement claimed by NOTHING is an error: a policy declared and applied to nothing. A planned one is exempt from that check — it is not applied yet by definition."
122
+ "description": "As on requirement.functional. A live or partial architectural requirement claimed by NOTHING is an error: a policy declared and applied to nothing. planned is exempt from that check — it is not applied yet by definition — and retired is exempt because a withdrawn policy governs nothing."
113
123
  },
114
124
  {
115
125
  "type": "attr",
@@ -148,6 +158,14 @@
148
158
  "max": 1,
149
159
  "description": "What breaking it looks like — the node that would contradict it. A STATIC falsifiability test, not a state. This is what makes universality checkable. Renamed from @violation in 0.24.0, which read as a status."
150
160
  },
161
+ {
162
+ "type": "attr",
163
+ "subType": "string",
164
+ "name": "supersededBy",
165
+ "min": 0,
166
+ "max": 1,
167
+ "description": "The requirement that REPLACED this one. Legal on @status: retired only (ERR_REQUIREMENT_SUPERSEDED_BY_NOT_RETIRED otherwise), and RESOLVED like any other reference, so a dangling one is ERR_REQUIREMENT_DANGLING_REF and a supersession chain stays walkable: A names B, and when B is retired in turn it names C. That resolution is the whole point — 0.24.0 deregistered an unresolved string, and the 2026-08-10 ruling had asked for the resolving form (point 4) which was never built. A prose note in @notes points one hop and goes stale; this does not."
168
+ },
151
169
  {
152
170
  "type": "attr",
153
171
  "subType": "string",
@@ -250,7 +250,7 @@ wheels = [
250
250
 
251
251
  [[package]]
252
252
  name = "metaobjects"
253
- version = "0.24.1"
253
+ version = "0.24.2"
254
254
  source = { editable = "." }
255
255
  dependencies = [
256
256
  { name = "pyyaml" },
File without changes
File without changes
File without changes