xrefkit 0.7.4__tar.gz → 0.7.5__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 (260) hide show
  1. {xrefkit-0.7.4/xrefkit.egg-info → xrefkit-0.7.5}/PKG-INFO +1 -1
  2. {xrefkit-0.7.4 → xrefkit-0.7.5}/pyproject.toml +1 -1
  3. xrefkit-0.7.5/tests/test_packaged_native_governance.py +54 -0
  4. xrefkit-0.7.5/tests/test_project_management_materialization.py +39 -0
  5. {xrefkit-0.7.4 → xrefkit-0.7.5}/tests/test_skill_release_compatibility.py +25 -0
  6. {xrefkit-0.7.4 → xrefkit-0.7.5}/xrefkit/__init__.py +1 -1
  7. {xrefkit-0.7.4 → xrefkit-0.7.5}/xrefkit/mcp/catalog.py +21 -3
  8. {xrefkit-0.7.4 → xrefkit-0.7.5}/xrefkit/models/package_manifest.py +9 -0
  9. {xrefkit-0.7.4 → xrefkit-0.7.5/xrefkit.egg-info}/PKG-INFO +1 -1
  10. {xrefkit-0.7.4 → xrefkit-0.7.5}/xrefkit.egg-info/SOURCES.txt +2 -0
  11. {xrefkit-0.7.4 → xrefkit-0.7.5}/LICENSE +0 -0
  12. {xrefkit-0.7.4 → xrefkit-0.7.5}/README.md +0 -0
  13. {xrefkit-0.7.4 → xrefkit-0.7.5}/setup.cfg +0 -0
  14. {xrefkit-0.7.4 → xrefkit-0.7.5}/tests/test_artifact_selected_family.py +0 -0
  15. {xrefkit-0.7.4 → xrefkit-0.7.5}/tests/test_attention_pet.py +0 -0
  16. {xrefkit-0.7.4 → xrefkit-0.7.5}/tests/test_attention_pet_client_protocol.py +0 -0
  17. {xrefkit-0.7.4 → xrefkit-0.7.5}/tests/test_attention_pet_codex_session.py +0 -0
  18. {xrefkit-0.7.4 → xrefkit-0.7.5}/tests/test_attention_pet_fit.py +0 -0
  19. {xrefkit-0.7.4 → xrefkit-0.7.5}/tests/test_azure_connection.py +0 -0
  20. {xrefkit-0.7.4 → xrefkit-0.7.5}/tests/test_azure_import.py +0 -0
  21. {xrefkit-0.7.4 → xrefkit-0.7.5}/tests/test_azure_recovery.py +0 -0
  22. {xrefkit-0.7.4 → xrefkit-0.7.5}/tests/test_azure_update_candidate.py +0 -0
  23. {xrefkit-0.7.4 → xrefkit-0.7.5}/tests/test_azure_writer.py +0 -0
  24. {xrefkit-0.7.4 → xrefkit-0.7.5}/tests/test_boundary_analysis.py +0 -0
  25. {xrefkit-0.7.4 → xrefkit-0.7.5}/tests/test_brownfield_csharp_structure_definitions.py +0 -0
  26. {xrefkit-0.7.4 → xrefkit-0.7.5}/tests/test_brownfield_file_editing_protocol.py +0 -0
  27. {xrefkit-0.7.4 → xrefkit-0.7.5}/tests/test_business_intake_conversation_definitions.py +0 -0
  28. {xrefkit-0.7.4 → xrefkit-0.7.5}/tests/test_business_intake_definition.py +0 -0
  29. {xrefkit-0.7.4 → xrefkit-0.7.5}/tests/test_calibration_lint.py +0 -0
  30. {xrefkit-0.7.4 → xrefkit-0.7.5}/tests/test_catalog_preparation_definition.py +0 -0
  31. {xrefkit-0.7.4 → xrefkit-0.7.5}/tests/test_check_skill_knowledge_xids.py +0 -0
  32. {xrefkit-0.7.4 → xrefkit-0.7.5}/tests/test_ci_workflow_invariants.py +0 -0
  33. {xrefkit-0.7.4 → xrefkit-0.7.5}/tests/test_cli.py +0 -0
  34. {xrefkit-0.7.4 → xrefkit-0.7.5}/tests/test_code_constraint_definition.py +0 -0
  35. {xrefkit-0.7.4 → xrefkit-0.7.5}/tests/test_collect_analyzer_sarif.py +0 -0
  36. {xrefkit-0.7.4 → xrefkit-0.7.5}/tests/test_compact_skill_logs.py +0 -0
  37. {xrefkit-0.7.4 → xrefkit-0.7.5}/tests/test_constraint_derivation_family_definition.py +0 -0
  38. {xrefkit-0.7.4 → xrefkit-0.7.5}/tests/test_constraint_derivation_selected_family.py +0 -0
  39. {xrefkit-0.7.4 → xrefkit-0.7.5}/tests/test_contribution_adoption_bytes.py +0 -0
  40. {xrefkit-0.7.4 → xrefkit-0.7.5}/tests/test_contribution_returns.py +0 -0
  41. {xrefkit-0.7.4 → xrefkit-0.7.5}/tests/test_convert_to_xrefkit_skill.py +0 -0
  42. {xrefkit-0.7.4 → xrefkit-0.7.5}/tests/test_cs_scope_probe.py +0 -0
  43. {xrefkit-0.7.4 → xrefkit-0.7.5}/tests/test_csharp_commonality.py +0 -0
  44. {xrefkit-0.7.4 → xrefkit-0.7.5}/tests/test_csharp_naming_profile.py +0 -0
  45. {xrefkit-0.7.4 → xrefkit-0.7.5}/tests/test_ctx.py +0 -0
  46. {xrefkit-0.7.4 → xrefkit-0.7.5}/tests/test_cutover_readiness.py +0 -0
  47. {xrefkit-0.7.4 → xrefkit-0.7.5}/tests/test_dashboard.py +0 -0
  48. {xrefkit-0.7.4 → xrefkit-0.7.5}/tests/test_database_batch_definition_migration.py +0 -0
  49. {xrefkit-0.7.4 → xrefkit-0.7.5}/tests/test_decision_trace.py +0 -0
  50. {xrefkit-0.7.4 → xrefkit-0.7.5}/tests/test_design_business_intake_selected_family.py +0 -0
  51. {xrefkit-0.7.4 → xrefkit-0.7.5}/tests/test_design_planning_definition_migration.py +0 -0
  52. {xrefkit-0.7.4 → xrefkit-0.7.5}/tests/test_dotnet_definition_candidate.py +0 -0
  53. {xrefkit-0.7.4 → xrefkit-0.7.5}/tests/test_editorial_family_definition.py +0 -0
  54. {xrefkit-0.7.4 → xrefkit-0.7.5}/tests/test_editorial_intake_definition.py +0 -0
  55. {xrefkit-0.7.4 → xrefkit-0.7.5}/tests/test_editorial_selected_family.py +0 -0
  56. {xrefkit-0.7.4 → xrefkit-0.7.5}/tests/test_embedded_startup_pack.py +0 -0
  57. {xrefkit-0.7.4 → xrefkit-0.7.5}/tests/test_error_policy_audit.py +0 -0
  58. {xrefkit-0.7.4 → xrefkit-0.7.5}/tests/test_error_policy_locator.py +0 -0
  59. {xrefkit-0.7.4 → xrefkit-0.7.5}/tests/test_execution_binding.py +0 -0
  60. {xrefkit-0.7.4 → xrefkit-0.7.5}/tests/test_existing_skill_definition_batch.py +0 -0
  61. {xrefkit-0.7.4 → xrefkit-0.7.5}/tests/test_final_skilldefinition_batch.py +0 -0
  62. {xrefkit-0.7.4 → xrefkit-0.7.5}/tests/test_flow_selected_family.py +0 -0
  63. {xrefkit-0.7.4 → xrefkit-0.7.5}/tests/test_fm_multiroot.py +0 -0
  64. {xrefkit-0.7.4 → xrefkit-0.7.5}/tests/test_gate.py +0 -0
  65. {xrefkit-0.7.4 → xrefkit-0.7.5}/tests/test_gateway.py +0 -0
  66. {xrefkit-0.7.4 → xrefkit-0.7.5}/tests/test_gateway_mcp.py +0 -0
  67. {xrefkit-0.7.4 → xrefkit-0.7.5}/tests/test_gateway_skill_adapter.py +0 -0
  68. {xrefkit-0.7.4 → xrefkit-0.7.5}/tests/test_gateway_work_items.py +0 -0
  69. {xrefkit-0.7.4 → xrefkit-0.7.5}/tests/test_goal_desired_state.py +0 -0
  70. {xrefkit-0.7.4 → xrefkit-0.7.5}/tests/test_governance_entry.py +0 -0
  71. {xrefkit-0.7.4 → xrefkit-0.7.5}/tests/test_host_precheck.py +0 -0
  72. {xrefkit-0.7.4 → xrefkit-0.7.5}/tests/test_human_evaluation.py +0 -0
  73. {xrefkit-0.7.4 → xrefkit-0.7.5}/tests/test_implementation_flow_definition.py +0 -0
  74. {xrefkit-0.7.4 → xrefkit-0.7.5}/tests/test_implementation_review_selected_family.py +0 -0
  75. {xrefkit-0.7.4 → xrefkit-0.7.5}/tests/test_inbound_uploads.py +0 -0
  76. {xrefkit-0.7.4 → xrefkit-0.7.5}/tests/test_instruction_workflow.py +0 -0
  77. {xrefkit-0.7.4 → xrefkit-0.7.5}/tests/test_knowledge_relations_validator.py +0 -0
  78. {xrefkit-0.7.4 → xrefkit-0.7.5}/tests/test_language_review_definition.py +0 -0
  79. {xrefkit-0.7.4 → xrefkit-0.7.5}/tests/test_legacy_guidance.py +0 -0
  80. {xrefkit-0.7.4 → xrefkit-0.7.5}/tests/test_legacy_migration.py +0 -0
  81. {xrefkit-0.7.4 → xrefkit-0.7.5}/tests/test_legacy_resources.py +0 -0
  82. {xrefkit-0.7.4 → xrefkit-0.7.5}/tests/test_mcp_package_routing.py +0 -0
  83. {xrefkit-0.7.4 → xrefkit-0.7.5}/tests/test_mcp_setup.py +0 -0
  84. {xrefkit-0.7.4 → xrefkit-0.7.5}/tests/test_mcp_subagent_startup.py +0 -0
  85. {xrefkit-0.7.4 → xrefkit-0.7.5}/tests/test_mcp_subagent_startup_integration.py +0 -0
  86. {xrefkit-0.7.4 → xrefkit-0.7.5}/tests/test_ontology_assessment_validator.py +0 -0
  87. {xrefkit-0.7.4 → xrefkit-0.7.5}/tests/test_os_family_definition.py +0 -0
  88. {xrefkit-0.7.4 → xrefkit-0.7.5}/tests/test_os_knowledge_family_definition.py +0 -0
  89. {xrefkit-0.7.4 → xrefkit-0.7.5}/tests/test_os_selected_family.py +0 -0
  90. {xrefkit-0.7.4 → xrefkit-0.7.5}/tests/test_ownership.py +0 -0
  91. {xrefkit-0.7.4 → xrefkit-0.7.5}/tests/test_packmeta.py +0 -0
  92. {xrefkit-0.7.4 → xrefkit-0.7.5}/tests/test_plan_markdown.py +0 -0
  93. {xrefkit-0.7.4 → xrefkit-0.7.5}/tests/test_plan_observation.py +0 -0
  94. {xrefkit-0.7.4 → xrefkit-0.7.5}/tests/test_project_quality_baseline.py +0 -0
  95. {xrefkit-0.7.4 → xrefkit-0.7.5}/tests/test_qa_report_definition.py +0 -0
  96. {xrefkit-0.7.4 → xrefkit-0.7.5}/tests/test_reporting_profiles.py +0 -0
  97. {xrefkit-0.7.4 → xrefkit-0.7.5}/tests/test_reporting_quality.py +0 -0
  98. {xrefkit-0.7.4 → xrefkit-0.7.5}/tests/test_repository_skill_adoption.py +0 -0
  99. {xrefkit-0.7.4 → xrefkit-0.7.5}/tests/test_repository_startup_pack.py +0 -0
  100. {xrefkit-0.7.4 → xrefkit-0.7.5}/tests/test_resource_provider.py +0 -0
  101. {xrefkit-0.7.4 → xrefkit-0.7.5}/tests/test_runtime_contracts.py +0 -0
  102. {xrefkit-0.7.4 → xrefkit-0.7.5}/tests/test_sarif_to_locator.py +0 -0
  103. {xrefkit-0.7.4 → xrefkit-0.7.5}/tests/test_security_definition_migration.py +0 -0
  104. {xrefkit-0.7.4 → xrefkit-0.7.5}/tests/test_site_release_metadata.py +0 -0
  105. {xrefkit-0.7.4 → xrefkit-0.7.5}/tests/test_skill_definition.py +0 -0
  106. {xrefkit-0.7.4 → xrefkit-0.7.5}/tests/test_skill_definition_governance.py +0 -0
  107. {xrefkit-0.7.4 → xrefkit-0.7.5}/tests/test_skill_definition_mcp.py +0 -0
  108. {xrefkit-0.7.4 → xrefkit-0.7.5}/tests/test_skill_definition_runtime.py +0 -0
  109. {xrefkit-0.7.4 → xrefkit-0.7.5}/tests/test_skill_edits.py +0 -0
  110. {xrefkit-0.7.4 → xrefkit-0.7.5}/tests/test_skill_maturity_return.py +0 -0
  111. {xrefkit-0.7.4 → xrefkit-0.7.5}/tests/test_skill_runtime_audit.py +0 -0
  112. {xrefkit-0.7.4 → xrefkit-0.7.5}/tests/test_skillmeta.py +0 -0
  113. {xrefkit-0.7.4 → xrefkit-0.7.5}/tests/test_skills_sync.py +0 -0
  114. {xrefkit-0.7.4 → xrefkit-0.7.5}/tests/test_source_analysis_fragments.py +0 -0
  115. {xrefkit-0.7.4 → xrefkit-0.7.5}/tests/test_structure_catalog.py +0 -0
  116. {xrefkit-0.7.4 → xrefkit-0.7.5}/tests/test_subagent_startup.py +0 -0
  117. {xrefkit-0.7.4 → xrefkit-0.7.5}/tests/test_subagent_startup_boundaries.py +0 -0
  118. {xrefkit-0.7.4 → xrefkit-0.7.5}/tests/test_wbs.py +0 -0
  119. {xrefkit-0.7.4 → xrefkit-0.7.5}/tests/test_work_management.py +0 -0
  120. {xrefkit-0.7.4 → xrefkit-0.7.5}/tests/test_work_packages.py +0 -0
  121. {xrefkit-0.7.4 → xrefkit-0.7.5}/tests/test_workflow_family_definition.py +0 -0
  122. {xrefkit-0.7.4 → xrefkit-0.7.5}/tests/test_xref.py +0 -0
  123. {xrefkit-0.7.4 → xrefkit-0.7.5}/tests/test_xrefkit_instance.py +0 -0
  124. {xrefkit-0.7.4 → xrefkit-0.7.5}/tests/test_xrefkit_tools.py +0 -0
  125. {xrefkit-0.7.4 → xrefkit-0.7.5}/tests/test_xrefkit_v2_discovery.py +0 -0
  126. {xrefkit-0.7.4 → xrefkit-0.7.5}/tests/test_xrefkit_v2_models.py +0 -0
  127. {xrefkit-0.7.4 → xrefkit-0.7.5}/tests/test_xrefkit_v2_pipeline.py +0 -0
  128. {xrefkit-0.7.4 → xrefkit-0.7.5}/xrefkit/__main__.py +0 -0
  129. {xrefkit-0.7.4 → xrefkit-0.7.5}/xrefkit/attention_pet/__init__.py +0 -0
  130. {xrefkit-0.7.4 → xrefkit-0.7.5}/xrefkit/attention_pet/__main__.py +0 -0
  131. {xrefkit-0.7.4 → xrefkit-0.7.5}/xrefkit/attention_pet/client.py +0 -0
  132. {xrefkit-0.7.4 → xrefkit-0.7.5}/xrefkit/attention_pet/client_protocol.py +0 -0
  133. {xrefkit-0.7.4 → xrefkit-0.7.5}/xrefkit/attention_pet/codex_session.py +0 -0
  134. {xrefkit-0.7.4 → xrefkit-0.7.5}/xrefkit/attention_pet/evaluator.py +0 -0
  135. {xrefkit-0.7.4 → xrefkit-0.7.5}/xrefkit/attention_pet/model.py +0 -0
  136. {xrefkit-0.7.4 → xrefkit-0.7.5}/xrefkit/attention_pet/presentation.py +0 -0
  137. {xrefkit-0.7.4 → xrefkit-0.7.5}/xrefkit/attention_pet/profiles.py +0 -0
  138. {xrefkit-0.7.4 → xrefkit-0.7.5}/xrefkit/attention_pet/scenarios.py +0 -0
  139. {xrefkit-0.7.4 → xrefkit-0.7.5}/xrefkit/attention_pet/server.py +0 -0
  140. {xrefkit-0.7.4 → xrefkit-0.7.5}/xrefkit/attention_pet/store.py +0 -0
  141. {xrefkit-0.7.4 → xrefkit-0.7.5}/xrefkit/azure_connection.py +0 -0
  142. {xrefkit-0.7.4 → xrefkit-0.7.5}/xrefkit/azure_import.py +0 -0
  143. {xrefkit-0.7.4 → xrefkit-0.7.5}/xrefkit/azure_recovery.py +0 -0
  144. {xrefkit-0.7.4 → xrefkit-0.7.5}/xrefkit/azure_update_candidate.py +0 -0
  145. {xrefkit-0.7.4 → xrefkit-0.7.5}/xrefkit/azure_writer.py +0 -0
  146. {xrefkit-0.7.4 → xrefkit-0.7.5}/xrefkit/boundary_analysis.py +0 -0
  147. {xrefkit-0.7.4 → xrefkit-0.7.5}/xrefkit/catalog_cli.py +0 -0
  148. {xrefkit-0.7.4 → xrefkit-0.7.5}/xrefkit/cli.py +0 -0
  149. {xrefkit-0.7.4 → xrefkit-0.7.5}/xrefkit/contracts.py +0 -0
  150. {xrefkit-0.7.4 → xrefkit-0.7.5}/xrefkit/ctx.py +0 -0
  151. {xrefkit-0.7.4 → xrefkit-0.7.5}/xrefkit/dashboard.py +0 -0
  152. {xrefkit-0.7.4 → xrefkit-0.7.5}/xrefkit/decision_trace.py +0 -0
  153. {xrefkit-0.7.4 → xrefkit-0.7.5}/xrefkit/discovery.py +0 -0
  154. {xrefkit-0.7.4 → xrefkit-0.7.5}/xrefkit/execution_binding.py +0 -0
  155. {xrefkit-0.7.4 → xrefkit-0.7.5}/xrefkit/execution_binding_cli.py +0 -0
  156. {xrefkit-0.7.4 → xrefkit-0.7.5}/xrefkit/gate.py +0 -0
  157. {xrefkit-0.7.4 → xrefkit-0.7.5}/xrefkit/gateway.py +0 -0
  158. {xrefkit-0.7.4 → xrefkit-0.7.5}/xrefkit/goalstate.py +0 -0
  159. {xrefkit-0.7.4 → xrefkit-0.7.5}/xrefkit/governance_entry.py +0 -0
  160. {xrefkit-0.7.4 → xrefkit-0.7.5}/xrefkit/governance_entry_cli.py +0 -0
  161. {xrefkit-0.7.4 → xrefkit-0.7.5}/xrefkit/hashing.py +0 -0
  162. {xrefkit-0.7.4 → xrefkit-0.7.5}/xrefkit/host_precheck.py +0 -0
  163. {xrefkit-0.7.4 → xrefkit-0.7.5}/xrefkit/import_skill.py +0 -0
  164. {xrefkit-0.7.4 → xrefkit-0.7.5}/xrefkit/instance.py +0 -0
  165. {xrefkit-0.7.4 → xrefkit-0.7.5}/xrefkit/loaders.py +0 -0
  166. {xrefkit-0.7.4 → xrefkit-0.7.5}/xrefkit/mcp/__init__.py +0 -0
  167. {xrefkit-0.7.4 → xrefkit-0.7.5}/xrefkit/mcp/audit.py +0 -0
  168. {xrefkit-0.7.4 → xrefkit-0.7.5}/xrefkit/mcp/bootstrap.py +0 -0
  169. {xrefkit-0.7.4 → xrefkit-0.7.5}/xrefkit/mcp/cli.py +0 -0
  170. {xrefkit-0.7.4 → xrefkit-0.7.5}/xrefkit/mcp/client_cache.py +0 -0
  171. {xrefkit-0.7.4 → xrefkit-0.7.5}/xrefkit/mcp/client_flow.py +0 -0
  172. {xrefkit-0.7.4 → xrefkit-0.7.5}/xrefkit/mcp/context_registry.py +0 -0
  173. {xrefkit-0.7.4 → xrefkit-0.7.5}/xrefkit/mcp/context_token.py +0 -0
  174. {xrefkit-0.7.4 → xrefkit-0.7.5}/xrefkit/mcp/contracts.py +0 -0
  175. {xrefkit-0.7.4 → xrefkit-0.7.5}/xrefkit/mcp/contribution_adoption.py +0 -0
  176. {xrefkit-0.7.4 → xrefkit-0.7.5}/xrefkit/mcp/contribution_returns.py +0 -0
  177. {xrefkit-0.7.4 → xrefkit-0.7.5}/xrefkit/mcp/dist.py +0 -0
  178. {xrefkit-0.7.4 → xrefkit-0.7.5}/xrefkit/mcp/gateway.py +0 -0
  179. {xrefkit-0.7.4 → xrefkit-0.7.5}/xrefkit/mcp/governed_overlays.py +0 -0
  180. {xrefkit-0.7.4 → xrefkit-0.7.5}/xrefkit/mcp/inbound_uploads.py +0 -0
  181. {xrefkit-0.7.4 → xrefkit-0.7.5}/xrefkit/mcp/knowledge_edits.py +0 -0
  182. {xrefkit-0.7.4 → xrefkit-0.7.5}/xrefkit/mcp/legacy_guidance.py +0 -0
  183. {xrefkit-0.7.4 → xrefkit-0.7.5}/xrefkit/mcp/legacy_migration.py +0 -0
  184. {xrefkit-0.7.4 → xrefkit-0.7.5}/xrefkit/mcp/legacy_resources.py +0 -0
  185. {xrefkit-0.7.4 → xrefkit-0.7.5}/xrefkit/mcp/ownership.py +0 -0
  186. {xrefkit-0.7.4 → xrefkit-0.7.5}/xrefkit/mcp/repository.py +0 -0
  187. {xrefkit-0.7.4 → xrefkit-0.7.5}/xrefkit/mcp/schemas.py +0 -0
  188. {xrefkit-0.7.4 → xrefkit-0.7.5}/xrefkit/mcp/server.py +0 -0
  189. {xrefkit-0.7.4 → xrefkit-0.7.5}/xrefkit/mcp/setup.py +0 -0
  190. {xrefkit-0.7.4 → xrefkit-0.7.5}/xrefkit/mcp/skill_edits.py +0 -0
  191. {xrefkit-0.7.4 → xrefkit-0.7.5}/xrefkit/mcp/skill_maturity.py +0 -0
  192. {xrefkit-0.7.4 → xrefkit-0.7.5}/xrefkit/mcp/startup_contract_pack.py +0 -0
  193. {xrefkit-0.7.4 → xrefkit-0.7.5}/xrefkit/mcp/subagent_startup.py +0 -0
  194. {xrefkit-0.7.4 → xrefkit-0.7.5}/xrefkit/mcp/update_gate_intake.py +0 -0
  195. {xrefkit-0.7.4 → xrefkit-0.7.5}/xrefkit/mcp_tools.py +0 -0
  196. {xrefkit-0.7.4 → xrefkit-0.7.5}/xrefkit/models/__init__.py +0 -0
  197. {xrefkit-0.7.4 → xrefkit-0.7.5}/xrefkit/models/common.py +0 -0
  198. {xrefkit-0.7.4 → xrefkit-0.7.5}/xrefkit/models/effective_bundle.py +0 -0
  199. {xrefkit-0.7.4 → xrefkit-0.7.5}/xrefkit/models/human_evaluation.py +0 -0
  200. {xrefkit-0.7.4 → xrefkit-0.7.5}/xrefkit/models/local_manifest.py +0 -0
  201. {xrefkit-0.7.4 → xrefkit-0.7.5}/xrefkit/models/run_log.py +0 -0
  202. {xrefkit-0.7.4 → xrefkit-0.7.5}/xrefkit/models/server_config.py +0 -0
  203. {xrefkit-0.7.4 → xrefkit-0.7.5}/xrefkit/models/skill_definition.py +0 -0
  204. {xrefkit-0.7.4 → xrefkit-0.7.5}/xrefkit/operations_cli.py +0 -0
  205. {xrefkit-0.7.4 → xrefkit-0.7.5}/xrefkit/ownership.py +0 -0
  206. {xrefkit-0.7.4 → xrefkit-0.7.5}/xrefkit/packmeta.py +0 -0
  207. {xrefkit-0.7.4 → xrefkit-0.7.5}/xrefkit/plan_markdown.py +0 -0
  208. {xrefkit-0.7.4 → xrefkit-0.7.5}/xrefkit/plan_observation.py +0 -0
  209. {xrefkit-0.7.4 → xrefkit-0.7.5}/xrefkit/registry.py +0 -0
  210. {xrefkit-0.7.4 → xrefkit-0.7.5}/xrefkit/reporting.py +0 -0
  211. {xrefkit-0.7.4 → xrefkit-0.7.5}/xrefkit/reporting_profiles.py +0 -0
  212. {xrefkit-0.7.4 → xrefkit-0.7.5}/xrefkit/repository_skills.py +0 -0
  213. {xrefkit-0.7.4 → xrefkit-0.7.5}/xrefkit/resolver.py +0 -0
  214. {xrefkit-0.7.4 → xrefkit-0.7.5}/xrefkit/resource_provider.py +0 -0
  215. {xrefkit-0.7.4 → xrefkit-0.7.5}/xrefkit/resources/attention_pet/client-state.schema.json +0 -0
  216. {xrefkit-0.7.4 → xrefkit-0.7.5}/xrefkit/resources/attention_pet/pet.css +0 -0
  217. {xrefkit-0.7.4 → xrefkit-0.7.5}/xrefkit/resources/attention_pet/pet.html +0 -0
  218. {xrefkit-0.7.4 → xrefkit-0.7.5}/xrefkit/resources/attention_pet/pet.js +0 -0
  219. {xrefkit-0.7.4 → xrefkit-0.7.5}/xrefkit/resources/base/contracts.json +0 -0
  220. {xrefkit-0.7.4 → xrefkit-0.7.5}/xrefkit/resources/base/current.json +0 -0
  221. {xrefkit-0.7.4 → xrefkit-0.7.5}/xrefkit/resources/base/generations/7a682a5272907354/contracts.json +0 -0
  222. {xrefkit-0.7.4 → xrefkit-0.7.5}/xrefkit/resources/base/generations/7a682a5272907354/model_body.md +0 -0
  223. {xrefkit-0.7.4 → xrefkit-0.7.5}/xrefkit/resources/base/generations/9929294385ccb7b0/contracts.json +0 -0
  224. {xrefkit-0.7.4 → xrefkit-0.7.5}/xrefkit/resources/base/generations/9929294385ccb7b0/model_body.md +0 -0
  225. {xrefkit-0.7.4 → xrefkit-0.7.5}/xrefkit/resources/base/model_body.md +0 -0
  226. {xrefkit-0.7.4 → xrefkit-0.7.5}/xrefkit/resources/base/startup_sources/000_agent_entry.md +0 -0
  227. {xrefkit-0.7.4 → xrefkit-0.7.5}/xrefkit/resources/base/startup_sources/011_startup_xref_routing.md +0 -0
  228. {xrefkit-0.7.4 → xrefkit-0.7.5}/xrefkit/resources/base/startup_sources/015_shared_memory_operations.md +0 -0
  229. {xrefkit-0.7.4 → xrefkit-0.7.5}/xrefkit/resources/base/startup_sources/016_uncertainty_protocol.md +0 -0
  230. {xrefkit-0.7.4 → xrefkit-0.7.5}/xrefkit/resources/base/startup_sources/017_base_and_xref_layering.md +0 -0
  231. {xrefkit-0.7.4 → xrefkit-0.7.5}/xrefkit/resources/base/startup_sources/053_context_direction_security_guard.md +0 -0
  232. {xrefkit-0.7.4 → xrefkit-0.7.5}/xrefkit/resources/base/startup_sources/yomiyasu_LICENSE.txt +0 -0
  233. {xrefkit-0.7.4 → xrefkit-0.7.5}/xrefkit/resources/migration/docs/guides/062_legacy_flow_skill_migration_guide.md +0 -0
  234. {xrefkit-0.7.4 → xrefkit-0.7.5}/xrefkit/resources/migration/knowledge/operations/130_legacy_flow_skill_migration_rules.md +0 -0
  235. {xrefkit-0.7.4 → xrefkit-0.7.5}/xrefkit/resources/migration/knowledge/organization/160_context_direction_guard_rules.md +0 -0
  236. {xrefkit-0.7.4 → xrefkit-0.7.5}/xrefkit/resources/migration/skills/os/legacy_flow_skill_migration/SKILL.v1.md +0 -0
  237. {xrefkit-0.7.4 → xrefkit-0.7.5}/xrefkit/resources/migration/skills/os/legacy_flow_skill_migration/references/legacy_flow_skill_migration_template.md +0 -0
  238. {xrefkit-0.7.4 → xrefkit-0.7.5}/xrefkit/resources/migration/skills/repository_adoption.json +0 -0
  239. {xrefkit-0.7.4 → xrefkit-0.7.5}/xrefkit/resources/migration/tools/migrate_legacy_flow_skill.py +0 -0
  240. {xrefkit-0.7.4 → xrefkit-0.7.5}/xrefkit/runlog.py +0 -0
  241. {xrefkit-0.7.4 → xrefkit-0.7.5}/xrefkit/skill_definition.py +0 -0
  242. {xrefkit-0.7.4 → xrefkit-0.7.5}/xrefkit/skill_definition_catalog.py +0 -0
  243. {xrefkit-0.7.4 → xrefkit-0.7.5}/xrefkit/skill_definition_governance.py +0 -0
  244. {xrefkit-0.7.4 → xrefkit-0.7.5}/xrefkit/skillmeta.py +0 -0
  245. {xrefkit-0.7.4 → xrefkit-0.7.5}/xrefkit/skillrun.py +0 -0
  246. {xrefkit-0.7.4 → xrefkit-0.7.5}/xrefkit/skills_sync.py +0 -0
  247. {xrefkit-0.7.4 → xrefkit-0.7.5}/xrefkit/structure_catalog.py +0 -0
  248. {xrefkit-0.7.4 → xrefkit-0.7.5}/xrefkit/subagent_startup.py +0 -0
  249. {xrefkit-0.7.4 → xrefkit-0.7.5}/xrefkit/tools/__init__.py +0 -0
  250. {xrefkit-0.7.4 → xrefkit-0.7.5}/xrefkit/tools/__main__.py +0 -0
  251. {xrefkit-0.7.4 → xrefkit-0.7.5}/xrefkit/v2_cli.py +0 -0
  252. {xrefkit-0.7.4 → xrefkit-0.7.5}/xrefkit/wbs.py +0 -0
  253. {xrefkit-0.7.4 → xrefkit-0.7.5}/xrefkit/work_management.py +0 -0
  254. {xrefkit-0.7.4 → xrefkit-0.7.5}/xrefkit/work_management_view.py +0 -0
  255. {xrefkit-0.7.4 → xrefkit-0.7.5}/xrefkit/workspace.py +0 -0
  256. {xrefkit-0.7.4 → xrefkit-0.7.5}/xrefkit/xref.py +0 -0
  257. {xrefkit-0.7.4 → xrefkit-0.7.5}/xrefkit.egg-info/dependency_links.txt +0 -0
  258. {xrefkit-0.7.4 → xrefkit-0.7.5}/xrefkit.egg-info/entry_points.txt +0 -0
  259. {xrefkit-0.7.4 → xrefkit-0.7.5}/xrefkit.egg-info/requires.txt +0 -0
  260. {xrefkit-0.7.4 → xrefkit-0.7.5}/xrefkit.egg-info/top_level.txt +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: xrefkit
3
- Version: 0.7.4
3
+ Version: 0.7.5
4
4
  Summary: Portable XID, Skill, Knowledge, workflow, and MCP runtime for XRefKit
5
5
  Author: synthaicode
6
6
  License: MIT License
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
4
4
 
5
5
  [project]
6
6
  name = "xrefkit"
7
- version = "0.7.4"
7
+ version = "0.7.5"
8
8
  description = "Portable XID, Skill, Knowledge, workflow, and MCP runtime for XRefKit"
9
9
  readme = "README.md"
10
10
  requires-python = ">=3.11"
@@ -0,0 +1,54 @@
1
+ import json
2
+ import hashlib
3
+ from pathlib import Path
4
+
5
+ import pytest
6
+ import yaml
7
+
8
+ from xrefkit.discovery import DiscoveredSkillPackage
9
+ from xrefkit.loaders import load_package_manifest
10
+ from xrefkit.mcp.catalog import _build_package_skills
11
+ from xrefkit.models.package_manifest import ProvidedSkill
12
+
13
+
14
+ def fixture(tmp_path):
15
+ root=Path(__file__).resolve().parents[1]
16
+ source=root/'skills/packs/project-management/progress_rules_setup/SKILL.v1.md'
17
+ (tmp_path/'skill.md').write_bytes(source.read_bytes())
18
+ gov=json.loads((root/'governance/skills/progress_rules_setup.json').read_text())
19
+ gov['definition_content_hash']=hashlib.sha256(source.read_bytes()).hexdigest()
20
+ (tmp_path/'governance.json').write_text(json.dumps(gov))
21
+ manifest={'package_id':'test.native','package_type':'skill_package','version':'0.1.0',
22
+ 'requires':{'xrefkit_core':'>=2.0.0 <3.0.0'},'contract':{},
23
+ 'provides':{'skills':[{'id':'progress_rules_setup','xid':'91F7D3B6A204','path':'skill.md','governance_path':'governance.json'}]}}
24
+ (tmp_path/'package_manifest.yaml').write_text(yaml.safe_dump(manifest))
25
+ return DiscoveredSkillPackage('test',tmp_path,tmp_path/'package_manifest.yaml',load_package_manifest(tmp_path/'package_manifest.yaml'))
26
+
27
+
28
+ def test_bound_native_draft_and_live_hash_check(tmp_path):
29
+ package=fixture(tmp_path)
30
+ assert _build_package_skills(package)[0].maturity=='draft'
31
+ (tmp_path/'skill.md').write_bytes((tmp_path/'skill.md').read_bytes()+b'\nchanged\n')
32
+ with pytest.raises(ValueError,match='content_hash'):
33
+ _build_package_skills(package)
34
+
35
+
36
+ def test_omitted_governance_preserves_existing_unassessed_behavior(tmp_path):
37
+ package=fixture(tmp_path)
38
+ package.manifest.provides.skills[0].governance_path=None
39
+ assert _build_package_skills(package)[0].maturity=='unassessed'
40
+
41
+
42
+ def test_legacy_governance_field_is_rejected():
43
+ with pytest.raises(ValueError,match='native Markdown'):
44
+ ProvidedSkill(id='legacy',xid='legacy.xid',path='legacy.yaml',governance_path='gov.json')
45
+
46
+ def test_packaged_draft_ranking_is_not_runnable(tmp_path):
47
+ from xrefkit.mcp.catalog import XRefCatalog
48
+ package=fixture(tmp_path)
49
+ catalog=XRefCatalog(tmp_path,'test','test',[],discovered_packages=(package,))
50
+ ranked=catalog.rank_skills_for_purpose('confirm progress rules and destinations')
51
+ row=next(r for r in ranked if r['skill_id']=='progress_rules_setup')
52
+ assert row['maturity']=='draft'
53
+ assert row['execution_readiness']['runnable'] is False
54
+ assert 'draft' in row['execution_readiness']['governance_block_reason']
@@ -0,0 +1,39 @@
1
+ import json
2
+ import shutil
3
+ from pathlib import Path
4
+
5
+ import pytest
6
+
7
+ from tools.materialize_project_management_package import generate, main, PACKAGE
8
+
9
+
10
+ def test_approved_bytes_cannot_be_rebound_after_link_transform(tmp_path):
11
+ root=Path(__file__).resolve().parents[1]
12
+ for rel in ['skills','governance','docs']:
13
+ # Source links resolve against the actual tree; copy only governed inputs,
14
+ # then use the real remaining targets through a full temporary fixture.
15
+ shutil.copytree(root/rel,tmp_path/rel)
16
+ gp=tmp_path/'governance/skills/requirements_discovery_coordination.json'
17
+ record=json.loads(gp.read_text())
18
+ record['maturity']='trial'
19
+ record['promotion']['decision']='approved'
20
+ gp.write_text(json.dumps(record))
21
+ with pytest.raises(ValueError,match='separate package governance'):
22
+ generate(tmp_path)
23
+
24
+
25
+ def test_stale_extra_managed_asset_is_rejected(tmp_path,monkeypatch):
26
+ target=tmp_path/PACKAGE/'skills'
27
+ target.mkdir(parents=True)
28
+ (target/'retired.md').write_text('stale')
29
+ monkeypatch.setattr('tools.materialize_project_management_package.generate',lambda root:{})
30
+ monkeypatch.setattr('sys.argv',['materialize','--root',str(tmp_path),'--check'])
31
+ with pytest.raises(SystemExit,match='unexpected managed asset'):
32
+ main()
33
+
34
+
35
+ def test_embedded_migration_adoption_matches_raw_bytes():
36
+ from xrefkit.repository_skills import load_repository_adoption
37
+ import xrefkit
38
+ root=Path(xrefkit.__file__).parent/'resources/migration'
39
+ assert load_repository_adoption(root)['entries']
@@ -91,6 +91,31 @@ def test_real_resolver_probe_passes_representative_fixture(tmp_path, monkeypatch
91
91
  assert installed.verify_installed("demo", "official.demo", "0.6.1")["skills"] == ["demo.skill"]
92
92
 
93
93
 
94
+ def test_native_probe_uses_bound_catalog_and_rejects_changed_governance(tmp_path, monkeypatch):
95
+ from test_packaged_native_governance import fixture
96
+ from xrefkit import discovery
97
+ candidate = fixture(tmp_path)
98
+ monkeypatch.setattr(discovery, "discover_skill_packages", lambda: [candidate])
99
+ monkeypatch.setattr(installed.metadata, "version", lambda name: "0.7.5")
100
+ monkeypatch.setattr(installed.metadata, "distribution", lambda name: SimpleNamespace(
101
+ version="0.1.0", entry_points=[SimpleNamespace(group="xrefkit.skill_packages", name="test")]))
102
+ # This minimal fixture method uses repository links, so first replace it with
103
+ # an equivalent native method with no external file dependency and rebind draft.
104
+ path = tmp_path / "skill.md"
105
+ text = path.read_text().split("## Method", 1)[0] + "## Method\nInspect requested target.\n"
106
+ path.write_text(text)
107
+ import hashlib
108
+ gp = tmp_path / "governance.json"
109
+ record = json.loads(gp.read_text())
110
+ record["definition_content_hash"] = hashlib.sha256(path.read_bytes()).hexdigest()
111
+ gp.write_text(json.dumps(record))
112
+ assert installed.verify_installed("demo", "test.native", "0.7.5")["skills"] == ["progress_rules_setup"]
113
+ record["definition_content_hash"] = "0" * 64
114
+ gp.write_text(json.dumps(record))
115
+ with pytest.raises(ValueError, match="content_hash"):
116
+ installed.verify_installed("demo", "test.native", "0.7.5")
117
+
118
+
94
119
  def test_real_protocol_rejection_stops_installed_probe(tmp_path, monkeypatch):
95
120
  root, manifest, _ = contract_fixture(tmp_path, monkeypatch)
96
121
  manifest["requires"]["xrefkit_core"] = ">=3.0.0"
@@ -2,4 +2,4 @@
2
2
 
3
3
  __all__ = ["__version__"]
4
4
 
5
- __version__ = "0.7.4"
5
+ __version__ = "0.7.5"
@@ -1055,8 +1055,8 @@ class XRefCatalog:
1055
1055
  ]
1056
1056
  # Declared preconditions travel with the ranking so the client can
1057
1057
  # filter to Skills runnable in the current state (084 M4). Empty
1058
- # until metas adopt preconditions; tool-availability stays the only
1059
- # server-known readiness signal.
1058
+ # until metas adopt preconditions; known adoption and packaged
1059
+ # governance restrictions also constrain readiness below.
1060
1060
  readiness = {
1061
1061
  "runnable": not missing_tools,
1062
1062
  "missing_tool_contracts": missing_tools,
@@ -1071,6 +1071,11 @@ class XRefCatalog:
1071
1071
  "repository_adopted": skill.repository_adoption["effective_adopted"],
1072
1072
  "historical_repository_adopted": skill.repository_adoption["adopted"],
1073
1073
  })
1074
+ if skill.package_id and skill.maturity_governance and skill.maturity in {"draft", "deprecated"}:
1075
+ readiness.update({
1076
+ "runnable": False,
1077
+ "governance_block_reason": f"Packaged Skill maturity {skill.maturity} prohibits execution",
1078
+ })
1074
1079
  if score <= 0:
1075
1080
  continue
1076
1081
  results.append(
@@ -2343,12 +2348,24 @@ def _build_package_skills(package: DiscoveredSkillPackage) -> list[SkillCatalogE
2343
2348
  worklist_policy="required",
2344
2349
  )
2345
2350
  knowledge_needs = [dict(item) for item in meta["knowledge_needs"]]
2351
+ maturity_governance = None
2352
+ if provided.governance_path is not None:
2353
+ from ..skill_definition_governance import (
2354
+ governance_projection, load_governance_record, match_definition,
2355
+ )
2356
+ governance_path = (package_root / provided.governance_path).resolve()
2357
+ if not governance_path.is_relative_to(package_root):
2358
+ raise ValueError("package Skill governance path escapes package root")
2359
+ record = load_governance_record(governance_path)
2360
+ match_definition(record, definition)
2361
+ maturity_governance = governance_projection(record)
2362
+ maturity_governance["record_ref"]["path"] = governance_path.relative_to(package_root).as_posix()
2346
2363
  entries.append(
2347
2364
  SkillCatalogEntry(
2348
2365
  skill_id=meta["skill_id"],
2349
2366
  title=first_heading(method, meta["skill_id"]),
2350
2367
  summary=meta["summary"],
2351
- maturity="unassessed",
2368
+ maturity=maturity_governance["maturity"] if maturity_governance else "unassessed",
2352
2369
  intent=list(meta["applies_when"]),
2353
2370
  target_artifacts=list(meta["outputs"]),
2354
2371
  applies_when=list(meta["applies_when"]),
@@ -2378,6 +2395,7 @@ def _build_package_skills(package: DiscoveredSkillPackage) -> list[SkillCatalogE
2378
2395
  definition_format="skill_definition_v1",
2379
2396
  definition_xid=meta["xid"],
2380
2397
  definition_content_hash=definition["content_hash"],
2398
+ maturity_governance=maturity_governance,
2381
2399
  )
2382
2400
  )
2383
2401
  continue
@@ -35,12 +35,21 @@ class ProvidedAsset(StrictModel):
35
35
 
36
36
 
37
37
  class ProvidedSkill(ProvidedAsset):
38
+ governance_path: str | None = None
38
39
  contract_role: str | None = None
39
40
  required_outputs: list[str] = Field(default_factory=list)
40
41
  required_knowledge: list[str] = Field(default_factory=list)
41
42
  required_review_axes: list[str] = Field(default_factory=list)
42
43
  must_not: list[str] = Field(default_factory=list)
43
44
 
45
+ @model_validator(mode="after")
46
+ def _validate_governance_path(self) -> "ProvidedSkill":
47
+ if self.governance_path is not None:
48
+ validate_non_empty(self.governance_path, "governance_path")
49
+ if not self.path.lower().endswith(".md"):
50
+ raise ValueError("governance_path requires a native Markdown SkillDefinition")
51
+ return self
52
+
44
53
  @field_validator("required_outputs", "required_knowledge", "required_review_axes", "must_not")
45
54
  @classmethod
46
55
  def _validate_string_list(cls, values: list[str]) -> list[str]:
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: xrefkit
3
- Version: 0.7.4
3
+ Version: 0.7.5
4
4
  Summary: Portable XID, Skill, Knowledge, workflow, and MCP runtime for XRefKit
5
5
  Author: synthaicode
6
6
  License: MIT License
@@ -78,9 +78,11 @@ tests/test_os_family_definition.py
78
78
  tests/test_os_knowledge_family_definition.py
79
79
  tests/test_os_selected_family.py
80
80
  tests/test_ownership.py
81
+ tests/test_packaged_native_governance.py
81
82
  tests/test_packmeta.py
82
83
  tests/test_plan_markdown.py
83
84
  tests/test_plan_observation.py
85
+ tests/test_project_management_materialization.py
84
86
  tests/test_project_quality_baseline.py
85
87
  tests/test_qa_report_definition.py
86
88
  tests/test_reporting_profiles.py
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes