xrefkit 0.7.8__tar.gz → 0.7.10__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 (264) hide show
  1. {xrefkit-0.7.8/xrefkit.egg-info → xrefkit-0.7.10}/PKG-INFO +1 -1
  2. {xrefkit-0.7.8 → xrefkit-0.7.10}/pyproject.toml +1 -1
  3. {xrefkit-0.7.8 → xrefkit-0.7.10}/tests/test_ci_workflow_invariants.py +11 -27
  4. {xrefkit-0.7.8 → xrefkit-0.7.10}/tests/test_package_knowledge_resolution.py +40 -0
  5. {xrefkit-0.7.8 → xrefkit-0.7.10}/tests/test_xrefkit_v2_pipeline.py +16 -0
  6. {xrefkit-0.7.8 → xrefkit-0.7.10}/xrefkit/__init__.py +1 -1
  7. {xrefkit-0.7.8 → xrefkit-0.7.10}/xrefkit/mcp/catalog.py +19 -3
  8. {xrefkit-0.7.8 → xrefkit-0.7.10}/xrefkit/workspace.py +4 -0
  9. {xrefkit-0.7.8 → xrefkit-0.7.10/xrefkit.egg-info}/PKG-INFO +1 -1
  10. {xrefkit-0.7.8 → xrefkit-0.7.10}/LICENSE +0 -0
  11. {xrefkit-0.7.8 → xrefkit-0.7.10}/README.md +0 -0
  12. {xrefkit-0.7.8 → xrefkit-0.7.10}/setup.cfg +0 -0
  13. {xrefkit-0.7.8 → xrefkit-0.7.10}/tests/test_artifact_selected_family.py +0 -0
  14. {xrefkit-0.7.8 → xrefkit-0.7.10}/tests/test_attention_pet.py +0 -0
  15. {xrefkit-0.7.8 → xrefkit-0.7.10}/tests/test_attention_pet_client_protocol.py +0 -0
  16. {xrefkit-0.7.8 → xrefkit-0.7.10}/tests/test_attention_pet_codex_session.py +0 -0
  17. {xrefkit-0.7.8 → xrefkit-0.7.10}/tests/test_attention_pet_fit.py +0 -0
  18. {xrefkit-0.7.8 → xrefkit-0.7.10}/tests/test_azure_connection.py +0 -0
  19. {xrefkit-0.7.8 → xrefkit-0.7.10}/tests/test_azure_import.py +0 -0
  20. {xrefkit-0.7.8 → xrefkit-0.7.10}/tests/test_azure_recovery.py +0 -0
  21. {xrefkit-0.7.8 → xrefkit-0.7.10}/tests/test_azure_update_candidate.py +0 -0
  22. {xrefkit-0.7.8 → xrefkit-0.7.10}/tests/test_azure_writer.py +0 -0
  23. {xrefkit-0.7.8 → xrefkit-0.7.10}/tests/test_boundary_analysis.py +0 -0
  24. {xrefkit-0.7.8 → xrefkit-0.7.10}/tests/test_brownfield_csharp_structure_definitions.py +0 -0
  25. {xrefkit-0.7.8 → xrefkit-0.7.10}/tests/test_brownfield_file_editing_protocol.py +0 -0
  26. {xrefkit-0.7.8 → xrefkit-0.7.10}/tests/test_business_intake_conversation_definitions.py +0 -0
  27. {xrefkit-0.7.8 → xrefkit-0.7.10}/tests/test_business_intake_definition.py +0 -0
  28. {xrefkit-0.7.8 → xrefkit-0.7.10}/tests/test_calibration_lint.py +0 -0
  29. {xrefkit-0.7.8 → xrefkit-0.7.10}/tests/test_catalog_preparation_definition.py +0 -0
  30. {xrefkit-0.7.8 → xrefkit-0.7.10}/tests/test_check_skill_knowledge_xids.py +0 -0
  31. {xrefkit-0.7.8 → xrefkit-0.7.10}/tests/test_cli.py +0 -0
  32. {xrefkit-0.7.8 → xrefkit-0.7.10}/tests/test_code_constraint_definition.py +0 -0
  33. {xrefkit-0.7.8 → xrefkit-0.7.10}/tests/test_collect_analyzer_sarif.py +0 -0
  34. {xrefkit-0.7.8 → xrefkit-0.7.10}/tests/test_compact_skill_logs.py +0 -0
  35. {xrefkit-0.7.8 → xrefkit-0.7.10}/tests/test_constraint_derivation_family_definition.py +0 -0
  36. {xrefkit-0.7.8 → xrefkit-0.7.10}/tests/test_constraint_derivation_selected_family.py +0 -0
  37. {xrefkit-0.7.8 → xrefkit-0.7.10}/tests/test_contribution_adoption_bytes.py +0 -0
  38. {xrefkit-0.7.8 → xrefkit-0.7.10}/tests/test_contribution_returns.py +0 -0
  39. {xrefkit-0.7.8 → xrefkit-0.7.10}/tests/test_convert_to_xrefkit_skill.py +0 -0
  40. {xrefkit-0.7.8 → xrefkit-0.7.10}/tests/test_cs_scope_probe.py +0 -0
  41. {xrefkit-0.7.8 → xrefkit-0.7.10}/tests/test_csharp_commonality.py +0 -0
  42. {xrefkit-0.7.8 → xrefkit-0.7.10}/tests/test_csharp_naming_profile.py +0 -0
  43. {xrefkit-0.7.8 → xrefkit-0.7.10}/tests/test_ctx.py +0 -0
  44. {xrefkit-0.7.8 → xrefkit-0.7.10}/tests/test_cutover_readiness.py +0 -0
  45. {xrefkit-0.7.8 → xrefkit-0.7.10}/tests/test_dashboard.py +0 -0
  46. {xrefkit-0.7.8 → xrefkit-0.7.10}/tests/test_database_batch_definition_migration.py +0 -0
  47. {xrefkit-0.7.8 → xrefkit-0.7.10}/tests/test_decision_trace.py +0 -0
  48. {xrefkit-0.7.8 → xrefkit-0.7.10}/tests/test_design_business_intake_selected_family.py +0 -0
  49. {xrefkit-0.7.8 → xrefkit-0.7.10}/tests/test_design_planning_definition_migration.py +0 -0
  50. {xrefkit-0.7.8 → xrefkit-0.7.10}/tests/test_dotnet_definition_candidate.py +0 -0
  51. {xrefkit-0.7.8 → xrefkit-0.7.10}/tests/test_editorial_family_definition.py +0 -0
  52. {xrefkit-0.7.8 → xrefkit-0.7.10}/tests/test_editorial_intake_definition.py +0 -0
  53. {xrefkit-0.7.8 → xrefkit-0.7.10}/tests/test_editorial_selected_family.py +0 -0
  54. {xrefkit-0.7.8 → xrefkit-0.7.10}/tests/test_embedded_startup_pack.py +0 -0
  55. {xrefkit-0.7.8 → xrefkit-0.7.10}/tests/test_error_policy_audit.py +0 -0
  56. {xrefkit-0.7.8 → xrefkit-0.7.10}/tests/test_error_policy_locator.py +0 -0
  57. {xrefkit-0.7.8 → xrefkit-0.7.10}/tests/test_execution_binding.py +0 -0
  58. {xrefkit-0.7.8 → xrefkit-0.7.10}/tests/test_existing_skill_definition_batch.py +0 -0
  59. {xrefkit-0.7.8 → xrefkit-0.7.10}/tests/test_final_skilldefinition_batch.py +0 -0
  60. {xrefkit-0.7.8 → xrefkit-0.7.10}/tests/test_flow_selected_family.py +0 -0
  61. {xrefkit-0.7.8 → xrefkit-0.7.10}/tests/test_fm_multiroot.py +0 -0
  62. {xrefkit-0.7.8 → xrefkit-0.7.10}/tests/test_gate.py +0 -0
  63. {xrefkit-0.7.8 → xrefkit-0.7.10}/tests/test_gateway.py +0 -0
  64. {xrefkit-0.7.8 → xrefkit-0.7.10}/tests/test_gateway_mcp.py +0 -0
  65. {xrefkit-0.7.8 → xrefkit-0.7.10}/tests/test_gateway_skill_adapter.py +0 -0
  66. {xrefkit-0.7.8 → xrefkit-0.7.10}/tests/test_gateway_work_items.py +0 -0
  67. {xrefkit-0.7.8 → xrefkit-0.7.10}/tests/test_goal_desired_state.py +0 -0
  68. {xrefkit-0.7.8 → xrefkit-0.7.10}/tests/test_governance_entry.py +0 -0
  69. {xrefkit-0.7.8 → xrefkit-0.7.10}/tests/test_governance_host.py +0 -0
  70. {xrefkit-0.7.8 → xrefkit-0.7.10}/tests/test_host_precheck.py +0 -0
  71. {xrefkit-0.7.8 → xrefkit-0.7.10}/tests/test_human_evaluation.py +0 -0
  72. {xrefkit-0.7.8 → xrefkit-0.7.10}/tests/test_implementation_flow_definition.py +0 -0
  73. {xrefkit-0.7.8 → xrefkit-0.7.10}/tests/test_implementation_review_selected_family.py +0 -0
  74. {xrefkit-0.7.8 → xrefkit-0.7.10}/tests/test_inbound_uploads.py +0 -0
  75. {xrefkit-0.7.8 → xrefkit-0.7.10}/tests/test_instruction_workflow.py +0 -0
  76. {xrefkit-0.7.8 → xrefkit-0.7.10}/tests/test_knowledge_relations_validator.py +0 -0
  77. {xrefkit-0.7.8 → xrefkit-0.7.10}/tests/test_language_review_definition.py +0 -0
  78. {xrefkit-0.7.8 → xrefkit-0.7.10}/tests/test_legacy_guidance.py +0 -0
  79. {xrefkit-0.7.8 → xrefkit-0.7.10}/tests/test_legacy_migration.py +0 -0
  80. {xrefkit-0.7.8 → xrefkit-0.7.10}/tests/test_legacy_resources.py +0 -0
  81. {xrefkit-0.7.8 → xrefkit-0.7.10}/tests/test_mcp_package_routing.py +0 -0
  82. {xrefkit-0.7.8 → xrefkit-0.7.10}/tests/test_mcp_setup.py +0 -0
  83. {xrefkit-0.7.8 → xrefkit-0.7.10}/tests/test_mcp_subagent_startup.py +0 -0
  84. {xrefkit-0.7.8 → xrefkit-0.7.10}/tests/test_mcp_subagent_startup_integration.py +0 -0
  85. {xrefkit-0.7.8 → xrefkit-0.7.10}/tests/test_ontology_assessment_validator.py +0 -0
  86. {xrefkit-0.7.8 → xrefkit-0.7.10}/tests/test_os_family_definition.py +0 -0
  87. {xrefkit-0.7.8 → xrefkit-0.7.10}/tests/test_os_knowledge_family_definition.py +0 -0
  88. {xrefkit-0.7.8 → xrefkit-0.7.10}/tests/test_os_selected_family.py +0 -0
  89. {xrefkit-0.7.8 → xrefkit-0.7.10}/tests/test_ownership.py +0 -0
  90. {xrefkit-0.7.8 → xrefkit-0.7.10}/tests/test_package_skill_run.py +0 -0
  91. {xrefkit-0.7.8 → xrefkit-0.7.10}/tests/test_packaged_native_governance.py +0 -0
  92. {xrefkit-0.7.8 → xrefkit-0.7.10}/tests/test_packmeta.py +0 -0
  93. {xrefkit-0.7.8 → xrefkit-0.7.10}/tests/test_plan_markdown.py +0 -0
  94. {xrefkit-0.7.8 → xrefkit-0.7.10}/tests/test_plan_observation.py +0 -0
  95. {xrefkit-0.7.8 → xrefkit-0.7.10}/tests/test_project_management_materialization.py +0 -0
  96. {xrefkit-0.7.8 → xrefkit-0.7.10}/tests/test_project_quality_baseline.py +0 -0
  97. {xrefkit-0.7.8 → xrefkit-0.7.10}/tests/test_qa_report_definition.py +0 -0
  98. {xrefkit-0.7.8 → xrefkit-0.7.10}/tests/test_reporting_profiles.py +0 -0
  99. {xrefkit-0.7.8 → xrefkit-0.7.10}/tests/test_reporting_quality.py +0 -0
  100. {xrefkit-0.7.8 → xrefkit-0.7.10}/tests/test_repository_skill_adoption.py +0 -0
  101. {xrefkit-0.7.8 → xrefkit-0.7.10}/tests/test_repository_startup_pack.py +0 -0
  102. {xrefkit-0.7.8 → xrefkit-0.7.10}/tests/test_resource_provider.py +0 -0
  103. {xrefkit-0.7.8 → xrefkit-0.7.10}/tests/test_runtime_contracts.py +0 -0
  104. {xrefkit-0.7.8 → xrefkit-0.7.10}/tests/test_sarif_to_locator.py +0 -0
  105. {xrefkit-0.7.8 → xrefkit-0.7.10}/tests/test_security_definition_migration.py +0 -0
  106. {xrefkit-0.7.8 → xrefkit-0.7.10}/tests/test_site_release_metadata.py +0 -0
  107. {xrefkit-0.7.8 → xrefkit-0.7.10}/tests/test_skill_definition.py +0 -0
  108. {xrefkit-0.7.8 → xrefkit-0.7.10}/tests/test_skill_definition_governance.py +0 -0
  109. {xrefkit-0.7.8 → xrefkit-0.7.10}/tests/test_skill_definition_mcp.py +0 -0
  110. {xrefkit-0.7.8 → xrefkit-0.7.10}/tests/test_skill_definition_runtime.py +0 -0
  111. {xrefkit-0.7.8 → xrefkit-0.7.10}/tests/test_skill_edits.py +0 -0
  112. {xrefkit-0.7.8 → xrefkit-0.7.10}/tests/test_skill_maturity_return.py +0 -0
  113. {xrefkit-0.7.8 → xrefkit-0.7.10}/tests/test_skill_release_compatibility.py +0 -0
  114. {xrefkit-0.7.8 → xrefkit-0.7.10}/tests/test_skill_runtime_audit.py +0 -0
  115. {xrefkit-0.7.8 → xrefkit-0.7.10}/tests/test_skillmeta.py +0 -0
  116. {xrefkit-0.7.8 → xrefkit-0.7.10}/tests/test_skills_sync.py +0 -0
  117. {xrefkit-0.7.8 → xrefkit-0.7.10}/tests/test_source_analysis_fragments.py +0 -0
  118. {xrefkit-0.7.8 → xrefkit-0.7.10}/tests/test_structure_catalog.py +0 -0
  119. {xrefkit-0.7.8 → xrefkit-0.7.10}/tests/test_subagent_startup.py +0 -0
  120. {xrefkit-0.7.8 → xrefkit-0.7.10}/tests/test_subagent_startup_boundaries.py +0 -0
  121. {xrefkit-0.7.8 → xrefkit-0.7.10}/tests/test_wbs.py +0 -0
  122. {xrefkit-0.7.8 → xrefkit-0.7.10}/tests/test_work_management.py +0 -0
  123. {xrefkit-0.7.8 → xrefkit-0.7.10}/tests/test_work_packages.py +0 -0
  124. {xrefkit-0.7.8 → xrefkit-0.7.10}/tests/test_workflow_family_definition.py +0 -0
  125. {xrefkit-0.7.8 → xrefkit-0.7.10}/tests/test_xref.py +0 -0
  126. {xrefkit-0.7.8 → xrefkit-0.7.10}/tests/test_xrefkit_instance.py +0 -0
  127. {xrefkit-0.7.8 → xrefkit-0.7.10}/tests/test_xrefkit_tools.py +0 -0
  128. {xrefkit-0.7.8 → xrefkit-0.7.10}/tests/test_xrefkit_v2_discovery.py +0 -0
  129. {xrefkit-0.7.8 → xrefkit-0.7.10}/tests/test_xrefkit_v2_models.py +0 -0
  130. {xrefkit-0.7.8 → xrefkit-0.7.10}/xrefkit/__main__.py +0 -0
  131. {xrefkit-0.7.8 → xrefkit-0.7.10}/xrefkit/attention_pet/__init__.py +0 -0
  132. {xrefkit-0.7.8 → xrefkit-0.7.10}/xrefkit/attention_pet/__main__.py +0 -0
  133. {xrefkit-0.7.8 → xrefkit-0.7.10}/xrefkit/attention_pet/client.py +0 -0
  134. {xrefkit-0.7.8 → xrefkit-0.7.10}/xrefkit/attention_pet/client_protocol.py +0 -0
  135. {xrefkit-0.7.8 → xrefkit-0.7.10}/xrefkit/attention_pet/codex_session.py +0 -0
  136. {xrefkit-0.7.8 → xrefkit-0.7.10}/xrefkit/attention_pet/evaluator.py +0 -0
  137. {xrefkit-0.7.8 → xrefkit-0.7.10}/xrefkit/attention_pet/model.py +0 -0
  138. {xrefkit-0.7.8 → xrefkit-0.7.10}/xrefkit/attention_pet/presentation.py +0 -0
  139. {xrefkit-0.7.8 → xrefkit-0.7.10}/xrefkit/attention_pet/profiles.py +0 -0
  140. {xrefkit-0.7.8 → xrefkit-0.7.10}/xrefkit/attention_pet/scenarios.py +0 -0
  141. {xrefkit-0.7.8 → xrefkit-0.7.10}/xrefkit/attention_pet/server.py +0 -0
  142. {xrefkit-0.7.8 → xrefkit-0.7.10}/xrefkit/attention_pet/store.py +0 -0
  143. {xrefkit-0.7.8 → xrefkit-0.7.10}/xrefkit/azure_connection.py +0 -0
  144. {xrefkit-0.7.8 → xrefkit-0.7.10}/xrefkit/azure_import.py +0 -0
  145. {xrefkit-0.7.8 → xrefkit-0.7.10}/xrefkit/azure_recovery.py +0 -0
  146. {xrefkit-0.7.8 → xrefkit-0.7.10}/xrefkit/azure_update_candidate.py +0 -0
  147. {xrefkit-0.7.8 → xrefkit-0.7.10}/xrefkit/azure_writer.py +0 -0
  148. {xrefkit-0.7.8 → xrefkit-0.7.10}/xrefkit/boundary_analysis.py +0 -0
  149. {xrefkit-0.7.8 → xrefkit-0.7.10}/xrefkit/catalog_cli.py +0 -0
  150. {xrefkit-0.7.8 → xrefkit-0.7.10}/xrefkit/cli.py +0 -0
  151. {xrefkit-0.7.8 → xrefkit-0.7.10}/xrefkit/contracts.py +0 -0
  152. {xrefkit-0.7.8 → xrefkit-0.7.10}/xrefkit/ctx.py +0 -0
  153. {xrefkit-0.7.8 → xrefkit-0.7.10}/xrefkit/dashboard.py +0 -0
  154. {xrefkit-0.7.8 → xrefkit-0.7.10}/xrefkit/decision_trace.py +0 -0
  155. {xrefkit-0.7.8 → xrefkit-0.7.10}/xrefkit/discovery.py +0 -0
  156. {xrefkit-0.7.8 → xrefkit-0.7.10}/xrefkit/execution_binding.py +0 -0
  157. {xrefkit-0.7.8 → xrefkit-0.7.10}/xrefkit/execution_binding_cli.py +0 -0
  158. {xrefkit-0.7.8 → xrefkit-0.7.10}/xrefkit/gate.py +0 -0
  159. {xrefkit-0.7.8 → xrefkit-0.7.10}/xrefkit/gateway.py +0 -0
  160. {xrefkit-0.7.8 → xrefkit-0.7.10}/xrefkit/goalstate.py +0 -0
  161. {xrefkit-0.7.8 → xrefkit-0.7.10}/xrefkit/governance_entry.py +0 -0
  162. {xrefkit-0.7.8 → xrefkit-0.7.10}/xrefkit/governance_entry_cli.py +0 -0
  163. {xrefkit-0.7.8 → xrefkit-0.7.10}/xrefkit/governance_host.py +0 -0
  164. {xrefkit-0.7.8 → xrefkit-0.7.10}/xrefkit/hashing.py +0 -0
  165. {xrefkit-0.7.8 → xrefkit-0.7.10}/xrefkit/host_precheck.py +0 -0
  166. {xrefkit-0.7.8 → xrefkit-0.7.10}/xrefkit/import_skill.py +0 -0
  167. {xrefkit-0.7.8 → xrefkit-0.7.10}/xrefkit/instance.py +0 -0
  168. {xrefkit-0.7.8 → xrefkit-0.7.10}/xrefkit/loaders.py +0 -0
  169. {xrefkit-0.7.8 → xrefkit-0.7.10}/xrefkit/mcp/__init__.py +0 -0
  170. {xrefkit-0.7.8 → xrefkit-0.7.10}/xrefkit/mcp/audit.py +0 -0
  171. {xrefkit-0.7.8 → xrefkit-0.7.10}/xrefkit/mcp/bootstrap.py +0 -0
  172. {xrefkit-0.7.8 → xrefkit-0.7.10}/xrefkit/mcp/cli.py +0 -0
  173. {xrefkit-0.7.8 → xrefkit-0.7.10}/xrefkit/mcp/client_cache.py +0 -0
  174. {xrefkit-0.7.8 → xrefkit-0.7.10}/xrefkit/mcp/client_flow.py +0 -0
  175. {xrefkit-0.7.8 → xrefkit-0.7.10}/xrefkit/mcp/context_registry.py +0 -0
  176. {xrefkit-0.7.8 → xrefkit-0.7.10}/xrefkit/mcp/context_token.py +0 -0
  177. {xrefkit-0.7.8 → xrefkit-0.7.10}/xrefkit/mcp/contracts.py +0 -0
  178. {xrefkit-0.7.8 → xrefkit-0.7.10}/xrefkit/mcp/contribution_adoption.py +0 -0
  179. {xrefkit-0.7.8 → xrefkit-0.7.10}/xrefkit/mcp/contribution_returns.py +0 -0
  180. {xrefkit-0.7.8 → xrefkit-0.7.10}/xrefkit/mcp/dist.py +0 -0
  181. {xrefkit-0.7.8 → xrefkit-0.7.10}/xrefkit/mcp/gateway.py +0 -0
  182. {xrefkit-0.7.8 → xrefkit-0.7.10}/xrefkit/mcp/governed_overlays.py +0 -0
  183. {xrefkit-0.7.8 → xrefkit-0.7.10}/xrefkit/mcp/inbound_uploads.py +0 -0
  184. {xrefkit-0.7.8 → xrefkit-0.7.10}/xrefkit/mcp/knowledge_edits.py +0 -0
  185. {xrefkit-0.7.8 → xrefkit-0.7.10}/xrefkit/mcp/legacy_guidance.py +0 -0
  186. {xrefkit-0.7.8 → xrefkit-0.7.10}/xrefkit/mcp/legacy_migration.py +0 -0
  187. {xrefkit-0.7.8 → xrefkit-0.7.10}/xrefkit/mcp/legacy_resources.py +0 -0
  188. {xrefkit-0.7.8 → xrefkit-0.7.10}/xrefkit/mcp/ownership.py +0 -0
  189. {xrefkit-0.7.8 → xrefkit-0.7.10}/xrefkit/mcp/repository.py +0 -0
  190. {xrefkit-0.7.8 → xrefkit-0.7.10}/xrefkit/mcp/schemas.py +0 -0
  191. {xrefkit-0.7.8 → xrefkit-0.7.10}/xrefkit/mcp/server.py +0 -0
  192. {xrefkit-0.7.8 → xrefkit-0.7.10}/xrefkit/mcp/setup.py +0 -0
  193. {xrefkit-0.7.8 → xrefkit-0.7.10}/xrefkit/mcp/skill_edits.py +0 -0
  194. {xrefkit-0.7.8 → xrefkit-0.7.10}/xrefkit/mcp/skill_maturity.py +0 -0
  195. {xrefkit-0.7.8 → xrefkit-0.7.10}/xrefkit/mcp/startup_contract_pack.py +0 -0
  196. {xrefkit-0.7.8 → xrefkit-0.7.10}/xrefkit/mcp/subagent_startup.py +0 -0
  197. {xrefkit-0.7.8 → xrefkit-0.7.10}/xrefkit/mcp/update_gate_intake.py +0 -0
  198. {xrefkit-0.7.8 → xrefkit-0.7.10}/xrefkit/mcp_tools.py +0 -0
  199. {xrefkit-0.7.8 → xrefkit-0.7.10}/xrefkit/models/__init__.py +0 -0
  200. {xrefkit-0.7.8 → xrefkit-0.7.10}/xrefkit/models/common.py +0 -0
  201. {xrefkit-0.7.8 → xrefkit-0.7.10}/xrefkit/models/effective_bundle.py +0 -0
  202. {xrefkit-0.7.8 → xrefkit-0.7.10}/xrefkit/models/human_evaluation.py +0 -0
  203. {xrefkit-0.7.8 → xrefkit-0.7.10}/xrefkit/models/local_manifest.py +0 -0
  204. {xrefkit-0.7.8 → xrefkit-0.7.10}/xrefkit/models/package_manifest.py +0 -0
  205. {xrefkit-0.7.8 → xrefkit-0.7.10}/xrefkit/models/run_log.py +0 -0
  206. {xrefkit-0.7.8 → xrefkit-0.7.10}/xrefkit/models/server_config.py +0 -0
  207. {xrefkit-0.7.8 → xrefkit-0.7.10}/xrefkit/models/skill_definition.py +0 -0
  208. {xrefkit-0.7.8 → xrefkit-0.7.10}/xrefkit/operations_cli.py +0 -0
  209. {xrefkit-0.7.8 → xrefkit-0.7.10}/xrefkit/ownership.py +0 -0
  210. {xrefkit-0.7.8 → xrefkit-0.7.10}/xrefkit/packmeta.py +0 -0
  211. {xrefkit-0.7.8 → xrefkit-0.7.10}/xrefkit/plan_markdown.py +0 -0
  212. {xrefkit-0.7.8 → xrefkit-0.7.10}/xrefkit/plan_observation.py +0 -0
  213. {xrefkit-0.7.8 → xrefkit-0.7.10}/xrefkit/registry.py +0 -0
  214. {xrefkit-0.7.8 → xrefkit-0.7.10}/xrefkit/reporting.py +0 -0
  215. {xrefkit-0.7.8 → xrefkit-0.7.10}/xrefkit/reporting_profiles.py +0 -0
  216. {xrefkit-0.7.8 → xrefkit-0.7.10}/xrefkit/repository_skills.py +0 -0
  217. {xrefkit-0.7.8 → xrefkit-0.7.10}/xrefkit/resolver.py +0 -0
  218. {xrefkit-0.7.8 → xrefkit-0.7.10}/xrefkit/resource_provider.py +0 -0
  219. {xrefkit-0.7.8 → xrefkit-0.7.10}/xrefkit/resources/attention_pet/client-state.schema.json +0 -0
  220. {xrefkit-0.7.8 → xrefkit-0.7.10}/xrefkit/resources/attention_pet/pet.css +0 -0
  221. {xrefkit-0.7.8 → xrefkit-0.7.10}/xrefkit/resources/attention_pet/pet.html +0 -0
  222. {xrefkit-0.7.8 → xrefkit-0.7.10}/xrefkit/resources/attention_pet/pet.js +0 -0
  223. {xrefkit-0.7.8 → xrefkit-0.7.10}/xrefkit/resources/base/contracts.json +0 -0
  224. {xrefkit-0.7.8 → xrefkit-0.7.10}/xrefkit/resources/base/current.json +0 -0
  225. {xrefkit-0.7.8 → xrefkit-0.7.10}/xrefkit/resources/base/generations/7a682a5272907354/contracts.json +0 -0
  226. {xrefkit-0.7.8 → xrefkit-0.7.10}/xrefkit/resources/base/generations/7a682a5272907354/model_body.md +0 -0
  227. {xrefkit-0.7.8 → xrefkit-0.7.10}/xrefkit/resources/base/generations/9929294385ccb7b0/contracts.json +0 -0
  228. {xrefkit-0.7.8 → xrefkit-0.7.10}/xrefkit/resources/base/generations/9929294385ccb7b0/model_body.md +0 -0
  229. {xrefkit-0.7.8 → xrefkit-0.7.10}/xrefkit/resources/base/model_body.md +0 -0
  230. {xrefkit-0.7.8 → xrefkit-0.7.10}/xrefkit/resources/base/startup_sources/000_agent_entry.md +0 -0
  231. {xrefkit-0.7.8 → xrefkit-0.7.10}/xrefkit/resources/base/startup_sources/011_startup_xref_routing.md +0 -0
  232. {xrefkit-0.7.8 → xrefkit-0.7.10}/xrefkit/resources/base/startup_sources/015_shared_memory_operations.md +0 -0
  233. {xrefkit-0.7.8 → xrefkit-0.7.10}/xrefkit/resources/base/startup_sources/016_uncertainty_protocol.md +0 -0
  234. {xrefkit-0.7.8 → xrefkit-0.7.10}/xrefkit/resources/base/startup_sources/017_base_and_xref_layering.md +0 -0
  235. {xrefkit-0.7.8 → xrefkit-0.7.10}/xrefkit/resources/base/startup_sources/053_context_direction_security_guard.md +0 -0
  236. {xrefkit-0.7.8 → xrefkit-0.7.10}/xrefkit/resources/base/startup_sources/yomiyasu_LICENSE.txt +0 -0
  237. {xrefkit-0.7.8 → xrefkit-0.7.10}/xrefkit/resources/migration/docs/guides/062_legacy_flow_skill_migration_guide.md +0 -0
  238. {xrefkit-0.7.8 → xrefkit-0.7.10}/xrefkit/resources/migration/knowledge/operations/130_legacy_flow_skill_migration_rules.md +0 -0
  239. {xrefkit-0.7.8 → xrefkit-0.7.10}/xrefkit/resources/migration/knowledge/organization/160_context_direction_guard_rules.md +0 -0
  240. {xrefkit-0.7.8 → xrefkit-0.7.10}/xrefkit/resources/migration/skills/os/legacy_flow_skill_migration/SKILL.v1.md +0 -0
  241. {xrefkit-0.7.8 → xrefkit-0.7.10}/xrefkit/resources/migration/skills/os/legacy_flow_skill_migration/references/legacy_flow_skill_migration_template.md +0 -0
  242. {xrefkit-0.7.8 → xrefkit-0.7.10}/xrefkit/resources/migration/skills/repository_adoption.json +0 -0
  243. {xrefkit-0.7.8 → xrefkit-0.7.10}/xrefkit/resources/migration/tools/migrate_legacy_flow_skill.py +0 -0
  244. {xrefkit-0.7.8 → xrefkit-0.7.10}/xrefkit/runlog.py +0 -0
  245. {xrefkit-0.7.8 → xrefkit-0.7.10}/xrefkit/skill_definition.py +0 -0
  246. {xrefkit-0.7.8 → xrefkit-0.7.10}/xrefkit/skill_definition_catalog.py +0 -0
  247. {xrefkit-0.7.8 → xrefkit-0.7.10}/xrefkit/skill_definition_governance.py +0 -0
  248. {xrefkit-0.7.8 → xrefkit-0.7.10}/xrefkit/skillmeta.py +0 -0
  249. {xrefkit-0.7.8 → xrefkit-0.7.10}/xrefkit/skillrun.py +0 -0
  250. {xrefkit-0.7.8 → xrefkit-0.7.10}/xrefkit/skills_sync.py +0 -0
  251. {xrefkit-0.7.8 → xrefkit-0.7.10}/xrefkit/structure_catalog.py +0 -0
  252. {xrefkit-0.7.8 → xrefkit-0.7.10}/xrefkit/subagent_startup.py +0 -0
  253. {xrefkit-0.7.8 → xrefkit-0.7.10}/xrefkit/tools/__init__.py +0 -0
  254. {xrefkit-0.7.8 → xrefkit-0.7.10}/xrefkit/tools/__main__.py +0 -0
  255. {xrefkit-0.7.8 → xrefkit-0.7.10}/xrefkit/v2_cli.py +0 -0
  256. {xrefkit-0.7.8 → xrefkit-0.7.10}/xrefkit/wbs.py +0 -0
  257. {xrefkit-0.7.8 → xrefkit-0.7.10}/xrefkit/work_management.py +0 -0
  258. {xrefkit-0.7.8 → xrefkit-0.7.10}/xrefkit/work_management_view.py +0 -0
  259. {xrefkit-0.7.8 → xrefkit-0.7.10}/xrefkit/xref.py +0 -0
  260. {xrefkit-0.7.8 → xrefkit-0.7.10}/xrefkit.egg-info/SOURCES.txt +0 -0
  261. {xrefkit-0.7.8 → xrefkit-0.7.10}/xrefkit.egg-info/dependency_links.txt +0 -0
  262. {xrefkit-0.7.8 → xrefkit-0.7.10}/xrefkit.egg-info/entry_points.txt +0 -0
  263. {xrefkit-0.7.8 → xrefkit-0.7.10}/xrefkit.egg-info/requires.txt +0 -0
  264. {xrefkit-0.7.8 → xrefkit-0.7.10}/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.8
3
+ Version: 0.7.10
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.8"
7
+ version = "0.7.10"
8
8
  description = "Portable XID, Skill, Knowledge, workflow, and MCP runtime for XRefKit"
9
9
  readme = "README.md"
10
10
  requires-python = ">=3.11"
@@ -18,34 +18,18 @@ PACKAGES = {
18
18
  }
19
19
 
20
20
 
21
- @pytest.mark.parametrize("stop_status,remains,expected", [
22
- (0, False, 0), (1, False, 0), (1, True, 1), (2, False, 2),
21
+ @pytest.mark.parametrize("filename", [
22
+ "python-package.yml",
23
+ "python-skill-project-management-package.yml",
23
24
  ])
24
- def test_core_updater_stop_handles_exit_race_without_hiding_errors(stop_status, remains, expected):
25
- bash = shutil.which("bash")
26
- if Path("C:/Program Files/Git/bin/bash.exe").is_file():
27
- bash = "C:/Program Files/Git/bin/bash.exe"
28
- if not bash:
29
- pytest.skip("Bash is required to execute the workflow stop block")
30
- steps = workflow("python-package.yml")["jobs"]["artifact-inspection"]["steps"]
31
- update = next(s["run"] for s in steps if "sudo apt-get install --yes clamav" in s.get("run", ""))
32
- block = update.split("# Package installation", 1)[1].split("# A failed definition update", 1)[0]
33
- block = "# Package installation" + block
34
- mocks = f"""
35
- set -euo pipefail
36
- calls=0
37
- pgrep() {{
38
- calls=$((calls + 1))
39
- if [ "$calls" -eq 1 ]; then return 0; fi
40
- return {0 if remains else 1}
41
- }}
42
- sudo() {{ return {stop_status}; }}
43
- sleep() {{ :; }}
44
- """
45
- result = subprocess.run([bash, "-c", mocks + block + "\necho stop-complete\n"],
46
- capture_output=True, text=True)
47
- assert result.returncode == expected, result.stdout + result.stderr
48
- assert ("stop-complete" in result.stdout) == (expected == 0)
25
+ def test_release_artifact_inspection_uses_verified_fresh_clamav(filename):
26
+ steps = workflow(filename)["jobs"]["artifact-inspection"]["steps"]
27
+ assert any(step.get("run") == "bash tools/scan_python_artifacts.sh dist/" for step in steps)
28
+ script = (WORKFLOWS.parents[1] / "tools/scan_python_artifacts.sh").read_text(encoding="utf-8")
29
+ assert "sha256sum --check" in script
30
+ assert "--fail-if-cvd-older-than=1" in script
31
+ assert script.index("sha256sum --check") < script.index('"${clamav_bin}/freshclam"')
32
+ assert script.index('"${clamav_bin}/freshclam"') < script.index('"${clamav_bin}/clamscan"')
49
33
 
50
34
 
51
35
  def workflow(filename):
@@ -164,3 +164,43 @@ def test_inline_identity_mismatch_refused(tmp_path):
164
164
  path.write_text("<!-- xid: ABCDEF123456 -->\n# Wrong identity")
165
165
  with pytest.raises(ValueError, match="identity does not match"):
166
166
  catalog.expand_knowledge("xid-knowledge-rules")
167
+
168
+
169
+ @pytest.mark.parametrize(("declared", "inline", "accepted"), [
170
+ ("xid-7A2F4C8D1401", "7A2F4C8D1401", True),
171
+ ("7A2F4C8D1401", "xid-7A2F4C8D1401", True),
172
+ ("xid-7A2F4C8D1401", "7A2F4C8D1402", False),
173
+ ("xid-knowledge-rules", "knowledge-rules", False),
174
+ ("xid-7A2F4C8D1401-extra", "7A2F4C8D1401", False),
175
+ ])
176
+ def test_native_hex_inline_identity_compatibility(tmp_path, declared, inline, accepted):
177
+ catalog = package_catalog(tmp_path)
178
+ package = catalog.discovered_packages[0]
179
+ package.manifest.provides.knowledge[0].xid = declared
180
+ (package.package_root / "knowledge/rules.md").write_text(f"<!-- xid: {inline} -->\n# Rules")
181
+ if accepted:
182
+ assert catalog.get_document_by_xid(declared)["xid"] == declared
183
+ assert catalog.expand_knowledge(declared)["content"]
184
+ else:
185
+ with pytest.raises(ValueError, match="identity does not match"):
186
+ catalog.get_document_by_xid(declared)
187
+
188
+
189
+ def test_prefixed_native_startup_identity_cannot_shadow_core(tmp_path):
190
+ catalog = package_catalog(tmp_path)
191
+ catalog.discovered_packages[0].manifest.provides.knowledge[0].xid = "xid-0B5C58B5E5B2"
192
+ with pytest.raises(ValueError, match="core startup XID"):
193
+ catalog.get_document_by_xid("xid-0B5C58B5E5B2")
194
+
195
+
196
+ def test_native_seed_resolves_prefixed_package_asset(tmp_path):
197
+ catalog = package_catalog(tmp_path)
198
+ package = catalog.discovered_packages[0]
199
+ package.manifest.provides.knowledge[0].xid = "xid-7A2F4C8D1701"
200
+ bare = catalog.get_document_by_xid("7A2F4C8D1701")
201
+ prefixed = catalog.get_document_by_xid("xid-7A2F4C8D1701")
202
+ assert bare["content_hash"] == prefixed["content_hash"]
203
+ assert bare["content"] == prefixed["content"]
204
+
205
+ duplicate = replace(catalog, discovered_packages=(package, package))
206
+ assert duplicate.get_document_by_xid("7A2F4C8D1701")["error"] == "xid_conflict"
@@ -533,3 +533,19 @@ def test_repository_csharp_package_resolves_local_csharp_review(tmp_path: Path)
533
533
  assert "applied_skills" in bundle.required_outputs
534
534
  assert "xid-branch-csharp-review-async-synchronization" in bundle.references.branches
535
535
  assert "xid-project-csharp-current-code-scope" in bundle.references.knowledge
536
+
537
+
538
+ def test_registry_loads_split_contract_from_mixed_package(tmp_path):
539
+ package_manifest, local_manifest = _sample_workspace(tmp_path)
540
+ manifest = yaml.safe_load(package_manifest.read_text(encoding="utf-8"))
541
+ native_path = "skills/investigation_flow/SKILL.v1.md"
542
+ _write(package_manifest.parent / native_path, (REPO_ROOT / native_path).read_text(encoding="utf-8"))
543
+ manifest["provides"]["skills"].append({
544
+ "id": "investigation_flow",
545
+ "xid": "E8B2D6A4C190",
546
+ "path": native_path,
547
+ })
548
+ _write_yaml(package_manifest, manifest)
549
+
550
+ registry = build_registry(package_manifests=[package_manifest], local_manifest_path=local_manifest)
551
+ assert registry.skills.require("xddp.design.change_design").definition.entry.path == "skills/change_design/entry.md"
@@ -2,4 +2,4 @@
2
2
 
3
3
  __all__ = ["__version__"]
4
4
 
5
- __version__ = "0.7.8"
5
+ __version__ = "0.7.10"
@@ -709,7 +709,7 @@ class XRefCatalog:
709
709
  for kind, assets in groups.items():
710
710
  for asset in assets:
711
711
  path = _package_asset_path(root, asset.path)
712
- if _embedded_startup_document(asset.xid) is not None:
712
+ if _embedded_startup_document(_native_xid_identity(asset.xid)) is not None:
713
713
  raise ValueError(f"package asset conflicts with core startup XID: {asset.xid}")
714
714
  key = (asset.xid, path)
715
715
  if key not in seen:
@@ -721,7 +721,7 @@ class XRefCatalog:
721
721
  raise ValueError("package Skill identity does not match manifest")
722
722
  for fragment in [skill.entry, *skill.required_fragments, *skill.branches]:
723
723
  target = _package_asset_path(root, fragment.path)
724
- if _embedded_startup_document(fragment.xid) is not None:
724
+ if _embedded_startup_document(_native_xid_identity(fragment.xid)) is not None:
725
725
  raise ValueError(f"package fragment conflicts with core startup XID: {fragment.xid}")
726
726
  key = (fragment.xid, target)
727
727
  if key not in seen:
@@ -729,7 +729,8 @@ class XRefCatalog:
729
729
  yield package, fragment.xid, target, "fragment"
730
730
 
731
731
  def _package_document(self, package: DiscoveredSkillPackage, xid: str, path: Path, text: str) -> XRefDocument:
732
- if path.suffix.lower() == ".md" and first_xid(text) and first_xid(text) != xid:
732
+ document_xid = first_xid(text) if path.suffix.lower() == ".md" else None
733
+ if document_xid and _native_xid_identity(document_xid) != _native_xid_identity(xid):
733
734
  raise ValueError(f"package document identity does not match manifest: {xid}")
734
735
  return XRefDocument(
735
736
  xid=xid,
@@ -1298,11 +1299,20 @@ class XRefCatalog:
1298
1299
  if local_xid == xid
1299
1300
  )
1300
1301
  package_documents = {}
1302
+ package_aliases = []
1303
+ native_identity = _native_xid_identity(xid)
1301
1304
  for package, asset_xid, path, _kind in self._package_assets():
1302
1305
  if asset_xid == xid:
1303
1306
  text = read_text(path)
1304
1307
  matches.append((path, text))
1305
1308
  package_documents[path] = self._package_document(package, xid, path, text)
1309
+ elif _native_xid_identity(asset_xid) == native_identity:
1310
+ package_aliases.append((package, path))
1311
+ if not matches:
1312
+ for package, path in package_aliases:
1313
+ text = read_text(path)
1314
+ matches.append((path, text))
1315
+ package_documents[path] = self._package_document(package, xid, path, text)
1306
1316
  if package_documents:
1307
1317
  # Installed packages cannot shadow a core migration document merely
1308
1318
  # because the consumer repository does not contain that document.
@@ -1720,6 +1730,12 @@ def _knowledge_entry(
1720
1730
  )
1721
1731
 
1722
1732
 
1733
+ def _native_xid_identity(xid: str) -> str:
1734
+ """Accept the legacy anchor prefix only for native 12-digit hex XIDs."""
1735
+ match = re.fullmatch(r"(?:xid-)?([0-9A-F]{12})", xid)
1736
+ return match.group(1) if match else xid
1737
+
1738
+
1723
1739
  def _package_asset_path(root: Path, relative: str) -> Path:
1724
1740
  """Manifest paths are portable relative allowlist entries, never glob roots."""
1725
1741
  portable = PurePosixPath(relative)
@@ -67,6 +67,10 @@ def build_registry(
67
67
  registry.add_package(manifest, package_root)
68
68
  for provided in manifest.provides.skills:
69
69
  skill_path = _contained_path(package_root, provided.path, label=f"package skill {provided.id}")
70
+ # The effective Skill resolver composes split YAML contracts.
71
+ # Native Markdown Skills are registered by the MCP catalog.
72
+ if skill_path.suffix.lower() == ".md":
73
+ continue
70
74
  skill = load_skill_definition(skill_path)
71
75
  _validate_skill_paths(package_root, skill)
72
76
  registry.add_package_skill(
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: xrefkit
3
- Version: 0.7.8
3
+ Version: 0.7.10
4
4
  Summary: Portable XID, Skill, Knowledge, workflow, and MCP runtime for XRefKit
5
5
  Author: synthaicode
6
6
  License: MIT License
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