xrefkit 0.7.5__tar.gz → 0.7.6__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {xrefkit-0.7.5/xrefkit.egg-info → xrefkit-0.7.6}/PKG-INFO +1 -1
- {xrefkit-0.7.5 → xrefkit-0.7.6}/pyproject.toml +1 -1
- xrefkit-0.7.6/tests/test_package_skill_run.py +101 -0
- {xrefkit-0.7.5 → xrefkit-0.7.6}/xrefkit/__init__.py +1 -1
- {xrefkit-0.7.5 → xrefkit-0.7.6}/xrefkit/operations_cli.py +1 -0
- {xrefkit-0.7.5 → xrefkit-0.7.6}/xrefkit/skillrun.py +66 -15
- {xrefkit-0.7.5 → xrefkit-0.7.6/xrefkit.egg-info}/PKG-INFO +1 -1
- {xrefkit-0.7.5 → xrefkit-0.7.6}/xrefkit.egg-info/SOURCES.txt +1 -0
- {xrefkit-0.7.5 → xrefkit-0.7.6}/LICENSE +0 -0
- {xrefkit-0.7.5 → xrefkit-0.7.6}/README.md +0 -0
- {xrefkit-0.7.5 → xrefkit-0.7.6}/setup.cfg +0 -0
- {xrefkit-0.7.5 → xrefkit-0.7.6}/tests/test_artifact_selected_family.py +0 -0
- {xrefkit-0.7.5 → xrefkit-0.7.6}/tests/test_attention_pet.py +0 -0
- {xrefkit-0.7.5 → xrefkit-0.7.6}/tests/test_attention_pet_client_protocol.py +0 -0
- {xrefkit-0.7.5 → xrefkit-0.7.6}/tests/test_attention_pet_codex_session.py +0 -0
- {xrefkit-0.7.5 → xrefkit-0.7.6}/tests/test_attention_pet_fit.py +0 -0
- {xrefkit-0.7.5 → xrefkit-0.7.6}/tests/test_azure_connection.py +0 -0
- {xrefkit-0.7.5 → xrefkit-0.7.6}/tests/test_azure_import.py +0 -0
- {xrefkit-0.7.5 → xrefkit-0.7.6}/tests/test_azure_recovery.py +0 -0
- {xrefkit-0.7.5 → xrefkit-0.7.6}/tests/test_azure_update_candidate.py +0 -0
- {xrefkit-0.7.5 → xrefkit-0.7.6}/tests/test_azure_writer.py +0 -0
- {xrefkit-0.7.5 → xrefkit-0.7.6}/tests/test_boundary_analysis.py +0 -0
- {xrefkit-0.7.5 → xrefkit-0.7.6}/tests/test_brownfield_csharp_structure_definitions.py +0 -0
- {xrefkit-0.7.5 → xrefkit-0.7.6}/tests/test_brownfield_file_editing_protocol.py +0 -0
- {xrefkit-0.7.5 → xrefkit-0.7.6}/tests/test_business_intake_conversation_definitions.py +0 -0
- {xrefkit-0.7.5 → xrefkit-0.7.6}/tests/test_business_intake_definition.py +0 -0
- {xrefkit-0.7.5 → xrefkit-0.7.6}/tests/test_calibration_lint.py +0 -0
- {xrefkit-0.7.5 → xrefkit-0.7.6}/tests/test_catalog_preparation_definition.py +0 -0
- {xrefkit-0.7.5 → xrefkit-0.7.6}/tests/test_check_skill_knowledge_xids.py +0 -0
- {xrefkit-0.7.5 → xrefkit-0.7.6}/tests/test_ci_workflow_invariants.py +0 -0
- {xrefkit-0.7.5 → xrefkit-0.7.6}/tests/test_cli.py +0 -0
- {xrefkit-0.7.5 → xrefkit-0.7.6}/tests/test_code_constraint_definition.py +0 -0
- {xrefkit-0.7.5 → xrefkit-0.7.6}/tests/test_collect_analyzer_sarif.py +0 -0
- {xrefkit-0.7.5 → xrefkit-0.7.6}/tests/test_compact_skill_logs.py +0 -0
- {xrefkit-0.7.5 → xrefkit-0.7.6}/tests/test_constraint_derivation_family_definition.py +0 -0
- {xrefkit-0.7.5 → xrefkit-0.7.6}/tests/test_constraint_derivation_selected_family.py +0 -0
- {xrefkit-0.7.5 → xrefkit-0.7.6}/tests/test_contribution_adoption_bytes.py +0 -0
- {xrefkit-0.7.5 → xrefkit-0.7.6}/tests/test_contribution_returns.py +0 -0
- {xrefkit-0.7.5 → xrefkit-0.7.6}/tests/test_convert_to_xrefkit_skill.py +0 -0
- {xrefkit-0.7.5 → xrefkit-0.7.6}/tests/test_cs_scope_probe.py +0 -0
- {xrefkit-0.7.5 → xrefkit-0.7.6}/tests/test_csharp_commonality.py +0 -0
- {xrefkit-0.7.5 → xrefkit-0.7.6}/tests/test_csharp_naming_profile.py +0 -0
- {xrefkit-0.7.5 → xrefkit-0.7.6}/tests/test_ctx.py +0 -0
- {xrefkit-0.7.5 → xrefkit-0.7.6}/tests/test_cutover_readiness.py +0 -0
- {xrefkit-0.7.5 → xrefkit-0.7.6}/tests/test_dashboard.py +0 -0
- {xrefkit-0.7.5 → xrefkit-0.7.6}/tests/test_database_batch_definition_migration.py +0 -0
- {xrefkit-0.7.5 → xrefkit-0.7.6}/tests/test_decision_trace.py +0 -0
- {xrefkit-0.7.5 → xrefkit-0.7.6}/tests/test_design_business_intake_selected_family.py +0 -0
- {xrefkit-0.7.5 → xrefkit-0.7.6}/tests/test_design_planning_definition_migration.py +0 -0
- {xrefkit-0.7.5 → xrefkit-0.7.6}/tests/test_dotnet_definition_candidate.py +0 -0
- {xrefkit-0.7.5 → xrefkit-0.7.6}/tests/test_editorial_family_definition.py +0 -0
- {xrefkit-0.7.5 → xrefkit-0.7.6}/tests/test_editorial_intake_definition.py +0 -0
- {xrefkit-0.7.5 → xrefkit-0.7.6}/tests/test_editorial_selected_family.py +0 -0
- {xrefkit-0.7.5 → xrefkit-0.7.6}/tests/test_embedded_startup_pack.py +0 -0
- {xrefkit-0.7.5 → xrefkit-0.7.6}/tests/test_error_policy_audit.py +0 -0
- {xrefkit-0.7.5 → xrefkit-0.7.6}/tests/test_error_policy_locator.py +0 -0
- {xrefkit-0.7.5 → xrefkit-0.7.6}/tests/test_execution_binding.py +0 -0
- {xrefkit-0.7.5 → xrefkit-0.7.6}/tests/test_existing_skill_definition_batch.py +0 -0
- {xrefkit-0.7.5 → xrefkit-0.7.6}/tests/test_final_skilldefinition_batch.py +0 -0
- {xrefkit-0.7.5 → xrefkit-0.7.6}/tests/test_flow_selected_family.py +0 -0
- {xrefkit-0.7.5 → xrefkit-0.7.6}/tests/test_fm_multiroot.py +0 -0
- {xrefkit-0.7.5 → xrefkit-0.7.6}/tests/test_gate.py +0 -0
- {xrefkit-0.7.5 → xrefkit-0.7.6}/tests/test_gateway.py +0 -0
- {xrefkit-0.7.5 → xrefkit-0.7.6}/tests/test_gateway_mcp.py +0 -0
- {xrefkit-0.7.5 → xrefkit-0.7.6}/tests/test_gateway_skill_adapter.py +0 -0
- {xrefkit-0.7.5 → xrefkit-0.7.6}/tests/test_gateway_work_items.py +0 -0
- {xrefkit-0.7.5 → xrefkit-0.7.6}/tests/test_goal_desired_state.py +0 -0
- {xrefkit-0.7.5 → xrefkit-0.7.6}/tests/test_governance_entry.py +0 -0
- {xrefkit-0.7.5 → xrefkit-0.7.6}/tests/test_host_precheck.py +0 -0
- {xrefkit-0.7.5 → xrefkit-0.7.6}/tests/test_human_evaluation.py +0 -0
- {xrefkit-0.7.5 → xrefkit-0.7.6}/tests/test_implementation_flow_definition.py +0 -0
- {xrefkit-0.7.5 → xrefkit-0.7.6}/tests/test_implementation_review_selected_family.py +0 -0
- {xrefkit-0.7.5 → xrefkit-0.7.6}/tests/test_inbound_uploads.py +0 -0
- {xrefkit-0.7.5 → xrefkit-0.7.6}/tests/test_instruction_workflow.py +0 -0
- {xrefkit-0.7.5 → xrefkit-0.7.6}/tests/test_knowledge_relations_validator.py +0 -0
- {xrefkit-0.7.5 → xrefkit-0.7.6}/tests/test_language_review_definition.py +0 -0
- {xrefkit-0.7.5 → xrefkit-0.7.6}/tests/test_legacy_guidance.py +0 -0
- {xrefkit-0.7.5 → xrefkit-0.7.6}/tests/test_legacy_migration.py +0 -0
- {xrefkit-0.7.5 → xrefkit-0.7.6}/tests/test_legacy_resources.py +0 -0
- {xrefkit-0.7.5 → xrefkit-0.7.6}/tests/test_mcp_package_routing.py +0 -0
- {xrefkit-0.7.5 → xrefkit-0.7.6}/tests/test_mcp_setup.py +0 -0
- {xrefkit-0.7.5 → xrefkit-0.7.6}/tests/test_mcp_subagent_startup.py +0 -0
- {xrefkit-0.7.5 → xrefkit-0.7.6}/tests/test_mcp_subagent_startup_integration.py +0 -0
- {xrefkit-0.7.5 → xrefkit-0.7.6}/tests/test_ontology_assessment_validator.py +0 -0
- {xrefkit-0.7.5 → xrefkit-0.7.6}/tests/test_os_family_definition.py +0 -0
- {xrefkit-0.7.5 → xrefkit-0.7.6}/tests/test_os_knowledge_family_definition.py +0 -0
- {xrefkit-0.7.5 → xrefkit-0.7.6}/tests/test_os_selected_family.py +0 -0
- {xrefkit-0.7.5 → xrefkit-0.7.6}/tests/test_ownership.py +0 -0
- {xrefkit-0.7.5 → xrefkit-0.7.6}/tests/test_packaged_native_governance.py +0 -0
- {xrefkit-0.7.5 → xrefkit-0.7.6}/tests/test_packmeta.py +0 -0
- {xrefkit-0.7.5 → xrefkit-0.7.6}/tests/test_plan_markdown.py +0 -0
- {xrefkit-0.7.5 → xrefkit-0.7.6}/tests/test_plan_observation.py +0 -0
- {xrefkit-0.7.5 → xrefkit-0.7.6}/tests/test_project_management_materialization.py +0 -0
- {xrefkit-0.7.5 → xrefkit-0.7.6}/tests/test_project_quality_baseline.py +0 -0
- {xrefkit-0.7.5 → xrefkit-0.7.6}/tests/test_qa_report_definition.py +0 -0
- {xrefkit-0.7.5 → xrefkit-0.7.6}/tests/test_reporting_profiles.py +0 -0
- {xrefkit-0.7.5 → xrefkit-0.7.6}/tests/test_reporting_quality.py +0 -0
- {xrefkit-0.7.5 → xrefkit-0.7.6}/tests/test_repository_skill_adoption.py +0 -0
- {xrefkit-0.7.5 → xrefkit-0.7.6}/tests/test_repository_startup_pack.py +0 -0
- {xrefkit-0.7.5 → xrefkit-0.7.6}/tests/test_resource_provider.py +0 -0
- {xrefkit-0.7.5 → xrefkit-0.7.6}/tests/test_runtime_contracts.py +0 -0
- {xrefkit-0.7.5 → xrefkit-0.7.6}/tests/test_sarif_to_locator.py +0 -0
- {xrefkit-0.7.5 → xrefkit-0.7.6}/tests/test_security_definition_migration.py +0 -0
- {xrefkit-0.7.5 → xrefkit-0.7.6}/tests/test_site_release_metadata.py +0 -0
- {xrefkit-0.7.5 → xrefkit-0.7.6}/tests/test_skill_definition.py +0 -0
- {xrefkit-0.7.5 → xrefkit-0.7.6}/tests/test_skill_definition_governance.py +0 -0
- {xrefkit-0.7.5 → xrefkit-0.7.6}/tests/test_skill_definition_mcp.py +0 -0
- {xrefkit-0.7.5 → xrefkit-0.7.6}/tests/test_skill_definition_runtime.py +0 -0
- {xrefkit-0.7.5 → xrefkit-0.7.6}/tests/test_skill_edits.py +0 -0
- {xrefkit-0.7.5 → xrefkit-0.7.6}/tests/test_skill_maturity_return.py +0 -0
- {xrefkit-0.7.5 → xrefkit-0.7.6}/tests/test_skill_release_compatibility.py +0 -0
- {xrefkit-0.7.5 → xrefkit-0.7.6}/tests/test_skill_runtime_audit.py +0 -0
- {xrefkit-0.7.5 → xrefkit-0.7.6}/tests/test_skillmeta.py +0 -0
- {xrefkit-0.7.5 → xrefkit-0.7.6}/tests/test_skills_sync.py +0 -0
- {xrefkit-0.7.5 → xrefkit-0.7.6}/tests/test_source_analysis_fragments.py +0 -0
- {xrefkit-0.7.5 → xrefkit-0.7.6}/tests/test_structure_catalog.py +0 -0
- {xrefkit-0.7.5 → xrefkit-0.7.6}/tests/test_subagent_startup.py +0 -0
- {xrefkit-0.7.5 → xrefkit-0.7.6}/tests/test_subagent_startup_boundaries.py +0 -0
- {xrefkit-0.7.5 → xrefkit-0.7.6}/tests/test_wbs.py +0 -0
- {xrefkit-0.7.5 → xrefkit-0.7.6}/tests/test_work_management.py +0 -0
- {xrefkit-0.7.5 → xrefkit-0.7.6}/tests/test_work_packages.py +0 -0
- {xrefkit-0.7.5 → xrefkit-0.7.6}/tests/test_workflow_family_definition.py +0 -0
- {xrefkit-0.7.5 → xrefkit-0.7.6}/tests/test_xref.py +0 -0
- {xrefkit-0.7.5 → xrefkit-0.7.6}/tests/test_xrefkit_instance.py +0 -0
- {xrefkit-0.7.5 → xrefkit-0.7.6}/tests/test_xrefkit_tools.py +0 -0
- {xrefkit-0.7.5 → xrefkit-0.7.6}/tests/test_xrefkit_v2_discovery.py +0 -0
- {xrefkit-0.7.5 → xrefkit-0.7.6}/tests/test_xrefkit_v2_models.py +0 -0
- {xrefkit-0.7.5 → xrefkit-0.7.6}/tests/test_xrefkit_v2_pipeline.py +0 -0
- {xrefkit-0.7.5 → xrefkit-0.7.6}/xrefkit/__main__.py +0 -0
- {xrefkit-0.7.5 → xrefkit-0.7.6}/xrefkit/attention_pet/__init__.py +0 -0
- {xrefkit-0.7.5 → xrefkit-0.7.6}/xrefkit/attention_pet/__main__.py +0 -0
- {xrefkit-0.7.5 → xrefkit-0.7.6}/xrefkit/attention_pet/client.py +0 -0
- {xrefkit-0.7.5 → xrefkit-0.7.6}/xrefkit/attention_pet/client_protocol.py +0 -0
- {xrefkit-0.7.5 → xrefkit-0.7.6}/xrefkit/attention_pet/codex_session.py +0 -0
- {xrefkit-0.7.5 → xrefkit-0.7.6}/xrefkit/attention_pet/evaluator.py +0 -0
- {xrefkit-0.7.5 → xrefkit-0.7.6}/xrefkit/attention_pet/model.py +0 -0
- {xrefkit-0.7.5 → xrefkit-0.7.6}/xrefkit/attention_pet/presentation.py +0 -0
- {xrefkit-0.7.5 → xrefkit-0.7.6}/xrefkit/attention_pet/profiles.py +0 -0
- {xrefkit-0.7.5 → xrefkit-0.7.6}/xrefkit/attention_pet/scenarios.py +0 -0
- {xrefkit-0.7.5 → xrefkit-0.7.6}/xrefkit/attention_pet/server.py +0 -0
- {xrefkit-0.7.5 → xrefkit-0.7.6}/xrefkit/attention_pet/store.py +0 -0
- {xrefkit-0.7.5 → xrefkit-0.7.6}/xrefkit/azure_connection.py +0 -0
- {xrefkit-0.7.5 → xrefkit-0.7.6}/xrefkit/azure_import.py +0 -0
- {xrefkit-0.7.5 → xrefkit-0.7.6}/xrefkit/azure_recovery.py +0 -0
- {xrefkit-0.7.5 → xrefkit-0.7.6}/xrefkit/azure_update_candidate.py +0 -0
- {xrefkit-0.7.5 → xrefkit-0.7.6}/xrefkit/azure_writer.py +0 -0
- {xrefkit-0.7.5 → xrefkit-0.7.6}/xrefkit/boundary_analysis.py +0 -0
- {xrefkit-0.7.5 → xrefkit-0.7.6}/xrefkit/catalog_cli.py +0 -0
- {xrefkit-0.7.5 → xrefkit-0.7.6}/xrefkit/cli.py +0 -0
- {xrefkit-0.7.5 → xrefkit-0.7.6}/xrefkit/contracts.py +0 -0
- {xrefkit-0.7.5 → xrefkit-0.7.6}/xrefkit/ctx.py +0 -0
- {xrefkit-0.7.5 → xrefkit-0.7.6}/xrefkit/dashboard.py +0 -0
- {xrefkit-0.7.5 → xrefkit-0.7.6}/xrefkit/decision_trace.py +0 -0
- {xrefkit-0.7.5 → xrefkit-0.7.6}/xrefkit/discovery.py +0 -0
- {xrefkit-0.7.5 → xrefkit-0.7.6}/xrefkit/execution_binding.py +0 -0
- {xrefkit-0.7.5 → xrefkit-0.7.6}/xrefkit/execution_binding_cli.py +0 -0
- {xrefkit-0.7.5 → xrefkit-0.7.6}/xrefkit/gate.py +0 -0
- {xrefkit-0.7.5 → xrefkit-0.7.6}/xrefkit/gateway.py +0 -0
- {xrefkit-0.7.5 → xrefkit-0.7.6}/xrefkit/goalstate.py +0 -0
- {xrefkit-0.7.5 → xrefkit-0.7.6}/xrefkit/governance_entry.py +0 -0
- {xrefkit-0.7.5 → xrefkit-0.7.6}/xrefkit/governance_entry_cli.py +0 -0
- {xrefkit-0.7.5 → xrefkit-0.7.6}/xrefkit/hashing.py +0 -0
- {xrefkit-0.7.5 → xrefkit-0.7.6}/xrefkit/host_precheck.py +0 -0
- {xrefkit-0.7.5 → xrefkit-0.7.6}/xrefkit/import_skill.py +0 -0
- {xrefkit-0.7.5 → xrefkit-0.7.6}/xrefkit/instance.py +0 -0
- {xrefkit-0.7.5 → xrefkit-0.7.6}/xrefkit/loaders.py +0 -0
- {xrefkit-0.7.5 → xrefkit-0.7.6}/xrefkit/mcp/__init__.py +0 -0
- {xrefkit-0.7.5 → xrefkit-0.7.6}/xrefkit/mcp/audit.py +0 -0
- {xrefkit-0.7.5 → xrefkit-0.7.6}/xrefkit/mcp/bootstrap.py +0 -0
- {xrefkit-0.7.5 → xrefkit-0.7.6}/xrefkit/mcp/catalog.py +0 -0
- {xrefkit-0.7.5 → xrefkit-0.7.6}/xrefkit/mcp/cli.py +0 -0
- {xrefkit-0.7.5 → xrefkit-0.7.6}/xrefkit/mcp/client_cache.py +0 -0
- {xrefkit-0.7.5 → xrefkit-0.7.6}/xrefkit/mcp/client_flow.py +0 -0
- {xrefkit-0.7.5 → xrefkit-0.7.6}/xrefkit/mcp/context_registry.py +0 -0
- {xrefkit-0.7.5 → xrefkit-0.7.6}/xrefkit/mcp/context_token.py +0 -0
- {xrefkit-0.7.5 → xrefkit-0.7.6}/xrefkit/mcp/contracts.py +0 -0
- {xrefkit-0.7.5 → xrefkit-0.7.6}/xrefkit/mcp/contribution_adoption.py +0 -0
- {xrefkit-0.7.5 → xrefkit-0.7.6}/xrefkit/mcp/contribution_returns.py +0 -0
- {xrefkit-0.7.5 → xrefkit-0.7.6}/xrefkit/mcp/dist.py +0 -0
- {xrefkit-0.7.5 → xrefkit-0.7.6}/xrefkit/mcp/gateway.py +0 -0
- {xrefkit-0.7.5 → xrefkit-0.7.6}/xrefkit/mcp/governed_overlays.py +0 -0
- {xrefkit-0.7.5 → xrefkit-0.7.6}/xrefkit/mcp/inbound_uploads.py +0 -0
- {xrefkit-0.7.5 → xrefkit-0.7.6}/xrefkit/mcp/knowledge_edits.py +0 -0
- {xrefkit-0.7.5 → xrefkit-0.7.6}/xrefkit/mcp/legacy_guidance.py +0 -0
- {xrefkit-0.7.5 → xrefkit-0.7.6}/xrefkit/mcp/legacy_migration.py +0 -0
- {xrefkit-0.7.5 → xrefkit-0.7.6}/xrefkit/mcp/legacy_resources.py +0 -0
- {xrefkit-0.7.5 → xrefkit-0.7.6}/xrefkit/mcp/ownership.py +0 -0
- {xrefkit-0.7.5 → xrefkit-0.7.6}/xrefkit/mcp/repository.py +0 -0
- {xrefkit-0.7.5 → xrefkit-0.7.6}/xrefkit/mcp/schemas.py +0 -0
- {xrefkit-0.7.5 → xrefkit-0.7.6}/xrefkit/mcp/server.py +0 -0
- {xrefkit-0.7.5 → xrefkit-0.7.6}/xrefkit/mcp/setup.py +0 -0
- {xrefkit-0.7.5 → xrefkit-0.7.6}/xrefkit/mcp/skill_edits.py +0 -0
- {xrefkit-0.7.5 → xrefkit-0.7.6}/xrefkit/mcp/skill_maturity.py +0 -0
- {xrefkit-0.7.5 → xrefkit-0.7.6}/xrefkit/mcp/startup_contract_pack.py +0 -0
- {xrefkit-0.7.5 → xrefkit-0.7.6}/xrefkit/mcp/subagent_startup.py +0 -0
- {xrefkit-0.7.5 → xrefkit-0.7.6}/xrefkit/mcp/update_gate_intake.py +0 -0
- {xrefkit-0.7.5 → xrefkit-0.7.6}/xrefkit/mcp_tools.py +0 -0
- {xrefkit-0.7.5 → xrefkit-0.7.6}/xrefkit/models/__init__.py +0 -0
- {xrefkit-0.7.5 → xrefkit-0.7.6}/xrefkit/models/common.py +0 -0
- {xrefkit-0.7.5 → xrefkit-0.7.6}/xrefkit/models/effective_bundle.py +0 -0
- {xrefkit-0.7.5 → xrefkit-0.7.6}/xrefkit/models/human_evaluation.py +0 -0
- {xrefkit-0.7.5 → xrefkit-0.7.6}/xrefkit/models/local_manifest.py +0 -0
- {xrefkit-0.7.5 → xrefkit-0.7.6}/xrefkit/models/package_manifest.py +0 -0
- {xrefkit-0.7.5 → xrefkit-0.7.6}/xrefkit/models/run_log.py +0 -0
- {xrefkit-0.7.5 → xrefkit-0.7.6}/xrefkit/models/server_config.py +0 -0
- {xrefkit-0.7.5 → xrefkit-0.7.6}/xrefkit/models/skill_definition.py +0 -0
- {xrefkit-0.7.5 → xrefkit-0.7.6}/xrefkit/ownership.py +0 -0
- {xrefkit-0.7.5 → xrefkit-0.7.6}/xrefkit/packmeta.py +0 -0
- {xrefkit-0.7.5 → xrefkit-0.7.6}/xrefkit/plan_markdown.py +0 -0
- {xrefkit-0.7.5 → xrefkit-0.7.6}/xrefkit/plan_observation.py +0 -0
- {xrefkit-0.7.5 → xrefkit-0.7.6}/xrefkit/registry.py +0 -0
- {xrefkit-0.7.5 → xrefkit-0.7.6}/xrefkit/reporting.py +0 -0
- {xrefkit-0.7.5 → xrefkit-0.7.6}/xrefkit/reporting_profiles.py +0 -0
- {xrefkit-0.7.5 → xrefkit-0.7.6}/xrefkit/repository_skills.py +0 -0
- {xrefkit-0.7.5 → xrefkit-0.7.6}/xrefkit/resolver.py +0 -0
- {xrefkit-0.7.5 → xrefkit-0.7.6}/xrefkit/resource_provider.py +0 -0
- {xrefkit-0.7.5 → xrefkit-0.7.6}/xrefkit/resources/attention_pet/client-state.schema.json +0 -0
- {xrefkit-0.7.5 → xrefkit-0.7.6}/xrefkit/resources/attention_pet/pet.css +0 -0
- {xrefkit-0.7.5 → xrefkit-0.7.6}/xrefkit/resources/attention_pet/pet.html +0 -0
- {xrefkit-0.7.5 → xrefkit-0.7.6}/xrefkit/resources/attention_pet/pet.js +0 -0
- {xrefkit-0.7.5 → xrefkit-0.7.6}/xrefkit/resources/base/contracts.json +0 -0
- {xrefkit-0.7.5 → xrefkit-0.7.6}/xrefkit/resources/base/current.json +0 -0
- {xrefkit-0.7.5 → xrefkit-0.7.6}/xrefkit/resources/base/generations/7a682a5272907354/contracts.json +0 -0
- {xrefkit-0.7.5 → xrefkit-0.7.6}/xrefkit/resources/base/generations/7a682a5272907354/model_body.md +0 -0
- {xrefkit-0.7.5 → xrefkit-0.7.6}/xrefkit/resources/base/generations/9929294385ccb7b0/contracts.json +0 -0
- {xrefkit-0.7.5 → xrefkit-0.7.6}/xrefkit/resources/base/generations/9929294385ccb7b0/model_body.md +0 -0
- {xrefkit-0.7.5 → xrefkit-0.7.6}/xrefkit/resources/base/model_body.md +0 -0
- {xrefkit-0.7.5 → xrefkit-0.7.6}/xrefkit/resources/base/startup_sources/000_agent_entry.md +0 -0
- {xrefkit-0.7.5 → xrefkit-0.7.6}/xrefkit/resources/base/startup_sources/011_startup_xref_routing.md +0 -0
- {xrefkit-0.7.5 → xrefkit-0.7.6}/xrefkit/resources/base/startup_sources/015_shared_memory_operations.md +0 -0
- {xrefkit-0.7.5 → xrefkit-0.7.6}/xrefkit/resources/base/startup_sources/016_uncertainty_protocol.md +0 -0
- {xrefkit-0.7.5 → xrefkit-0.7.6}/xrefkit/resources/base/startup_sources/017_base_and_xref_layering.md +0 -0
- {xrefkit-0.7.5 → xrefkit-0.7.6}/xrefkit/resources/base/startup_sources/053_context_direction_security_guard.md +0 -0
- {xrefkit-0.7.5 → xrefkit-0.7.6}/xrefkit/resources/base/startup_sources/yomiyasu_LICENSE.txt +0 -0
- {xrefkit-0.7.5 → xrefkit-0.7.6}/xrefkit/resources/migration/docs/guides/062_legacy_flow_skill_migration_guide.md +0 -0
- {xrefkit-0.7.5 → xrefkit-0.7.6}/xrefkit/resources/migration/knowledge/operations/130_legacy_flow_skill_migration_rules.md +0 -0
- {xrefkit-0.7.5 → xrefkit-0.7.6}/xrefkit/resources/migration/knowledge/organization/160_context_direction_guard_rules.md +0 -0
- {xrefkit-0.7.5 → xrefkit-0.7.6}/xrefkit/resources/migration/skills/os/legacy_flow_skill_migration/SKILL.v1.md +0 -0
- {xrefkit-0.7.5 → xrefkit-0.7.6}/xrefkit/resources/migration/skills/os/legacy_flow_skill_migration/references/legacy_flow_skill_migration_template.md +0 -0
- {xrefkit-0.7.5 → xrefkit-0.7.6}/xrefkit/resources/migration/skills/repository_adoption.json +0 -0
- {xrefkit-0.7.5 → xrefkit-0.7.6}/xrefkit/resources/migration/tools/migrate_legacy_flow_skill.py +0 -0
- {xrefkit-0.7.5 → xrefkit-0.7.6}/xrefkit/runlog.py +0 -0
- {xrefkit-0.7.5 → xrefkit-0.7.6}/xrefkit/skill_definition.py +0 -0
- {xrefkit-0.7.5 → xrefkit-0.7.6}/xrefkit/skill_definition_catalog.py +0 -0
- {xrefkit-0.7.5 → xrefkit-0.7.6}/xrefkit/skill_definition_governance.py +0 -0
- {xrefkit-0.7.5 → xrefkit-0.7.6}/xrefkit/skillmeta.py +0 -0
- {xrefkit-0.7.5 → xrefkit-0.7.6}/xrefkit/skills_sync.py +0 -0
- {xrefkit-0.7.5 → xrefkit-0.7.6}/xrefkit/structure_catalog.py +0 -0
- {xrefkit-0.7.5 → xrefkit-0.7.6}/xrefkit/subagent_startup.py +0 -0
- {xrefkit-0.7.5 → xrefkit-0.7.6}/xrefkit/tools/__init__.py +0 -0
- {xrefkit-0.7.5 → xrefkit-0.7.6}/xrefkit/tools/__main__.py +0 -0
- {xrefkit-0.7.5 → xrefkit-0.7.6}/xrefkit/v2_cli.py +0 -0
- {xrefkit-0.7.5 → xrefkit-0.7.6}/xrefkit/wbs.py +0 -0
- {xrefkit-0.7.5 → xrefkit-0.7.6}/xrefkit/work_management.py +0 -0
- {xrefkit-0.7.5 → xrefkit-0.7.6}/xrefkit/work_management_view.py +0 -0
- {xrefkit-0.7.5 → xrefkit-0.7.6}/xrefkit/workspace.py +0 -0
- {xrefkit-0.7.5 → xrefkit-0.7.6}/xrefkit/xref.py +0 -0
- {xrefkit-0.7.5 → xrefkit-0.7.6}/xrefkit.egg-info/dependency_links.txt +0 -0
- {xrefkit-0.7.5 → xrefkit-0.7.6}/xrefkit.egg-info/entry_points.txt +0 -0
- {xrefkit-0.7.5 → xrefkit-0.7.6}/xrefkit.egg-info/requires.txt +0 -0
- {xrefkit-0.7.5 → xrefkit-0.7.6}/xrefkit.egg-info/top_level.txt +0 -0
|
@@ -0,0 +1,101 @@
|
|
|
1
|
+
import pytest
|
|
2
|
+
|
|
3
|
+
|
|
4
|
+
@pytest.mark.parametrize(
|
|
5
|
+
("module", "reference", "xid"),
|
|
6
|
+
[
|
|
7
|
+
("xrefkit_skills_csharp", "xrefkit.skills.csharp::csharp.review", "xid-skill-csharp-review"),
|
|
8
|
+
("xrefkit_skills_brownfield", "xrefkit.skills.brownfield::brownfield.workflow", "xid-skill-brownfield-workflow"),
|
|
9
|
+
("xrefkit_skills_batch_regression", "xrefkit.skills.batch_regression::batch.impact_regression", "xid-skill-batch-impact-regression"),
|
|
10
|
+
],
|
|
11
|
+
)
|
|
12
|
+
def test_installed_package_run_binds_over_mcp(tmp_path, module, reference, xid):
|
|
13
|
+
import json
|
|
14
|
+
import os
|
|
15
|
+
import subprocess
|
|
16
|
+
import sys
|
|
17
|
+
import tempfile
|
|
18
|
+
from pathlib import Path
|
|
19
|
+
|
|
20
|
+
pytest.importorskip(module)
|
|
21
|
+
anyio = pytest.importorskip("anyio")
|
|
22
|
+
pytest.importorskip("mcp")
|
|
23
|
+
from mcp.client.session import ClientSession
|
|
24
|
+
from mcp.client.stdio import StdioServerParameters, stdio_client
|
|
25
|
+
|
|
26
|
+
repo = Path(__file__).resolve().parents[1]
|
|
27
|
+
cli = [sys.executable, "-m", "xrefkit"]
|
|
28
|
+
|
|
29
|
+
env = {**os.environ, "PYTHONPATH": str(repo)}
|
|
30
|
+
|
|
31
|
+
def run_cli(*args):
|
|
32
|
+
return subprocess.check_output(
|
|
33
|
+
cli + list(args), cwd=tmp_path, env=env, encoding="utf-8"
|
|
34
|
+
)
|
|
35
|
+
|
|
36
|
+
args = [
|
|
37
|
+
"skill", "run",
|
|
38
|
+
"--package-skill", reference,
|
|
39
|
+
"--task", "Verify package run startup and MCP binding",
|
|
40
|
+
"--capability", "integration verification", "--tuning", "XRefKit package startup",
|
|
41
|
+
"--responsibility", "Verify run creation and correlation",
|
|
42
|
+
"--execution-mode", "subagent_required", "--json",
|
|
43
|
+
]
|
|
44
|
+
run = json.loads(run_cli(*args))
|
|
45
|
+
assert run["skill_id"] == reference.split("::")[1]
|
|
46
|
+
log_path = Path(run["run_log"])
|
|
47
|
+
assert log_path.is_relative_to(tmp_path)
|
|
48
|
+
assert Path(run["skill_doc"]).is_file()
|
|
49
|
+
log = log_path.read_text(encoding="utf-8")
|
|
50
|
+
assert "maturity: `unassessed`" in log
|
|
51
|
+
assert f"package_skill_xid: `{xid}`" in log
|
|
52
|
+
assert "package_skill_sha256:" in log
|
|
53
|
+
|
|
54
|
+
rejected = subprocess.run(
|
|
55
|
+
cli + [arg for arg in args if arg not in {"--capability", "integration verification"}],
|
|
56
|
+
cwd=tmp_path, env=env, capture_output=True, encoding="utf-8",
|
|
57
|
+
)
|
|
58
|
+
assert rejected.returncode == 1
|
|
59
|
+
assert json.loads(rejected.stdout)["run_id"] is None
|
|
60
|
+
|
|
61
|
+
async def scenario():
|
|
62
|
+
server = StdioServerParameters(
|
|
63
|
+
command=sys.executable,
|
|
64
|
+
args=[
|
|
65
|
+
"-m", "xrefkit.mcp.server", "--repo", str(repo),
|
|
66
|
+
"--audit-log", str(tmp_path / "mcp-audit.jsonl"),
|
|
67
|
+
],
|
|
68
|
+
cwd=str(repo),
|
|
69
|
+
)
|
|
70
|
+
with tempfile.TemporaryFile(mode="w+", encoding="utf-8") as stderr:
|
|
71
|
+
async with stdio_client(server, errlog=stderr) as (read, write):
|
|
72
|
+
async with ClientSession(read, write) as session:
|
|
73
|
+
await session.initialize()
|
|
74
|
+
startup = await session.call_tool("get_startup_context", {})
|
|
75
|
+
assert not startup.isError, startup.content
|
|
76
|
+
binding = await session.call_tool(
|
|
77
|
+
"bind_skill_run",
|
|
78
|
+
{"run_id": run["run_id"], "skill_id": run["skill_id"]},
|
|
79
|
+
)
|
|
80
|
+
assert not binding.isError, binding.content
|
|
81
|
+
bound = binding.structuredContent
|
|
82
|
+
assert bound["run_id"] == run["run_id"]
|
|
83
|
+
assert bound["skill_id"] == run["skill_id"]
|
|
84
|
+
assert "xrefkit skill correlate" in bound["client_record_command"]
|
|
85
|
+
run_cli(
|
|
86
|
+
"skill", "correlate", "--log", str(log_path),
|
|
87
|
+
"--run-id", bound["run_id"],
|
|
88
|
+
"--mcp-session-id", bound["mcp_session_id"],
|
|
89
|
+
"--repository-fingerprint", bound["repository_fingerprint"],
|
|
90
|
+
)
|
|
91
|
+
assert bound["mcp_session_id"] in log_path.read_text(encoding="utf-8")
|
|
92
|
+
requirements = await session.call_tool(
|
|
93
|
+
"get_skill_requirements", {"skill_id": run["skill_id"]}
|
|
94
|
+
)
|
|
95
|
+
assert not requirements.isError, requirements.content
|
|
96
|
+
assert not requirements.structuredContent["missing"]
|
|
97
|
+
skill = await session.call_tool("get_skill", {"skill_id": run["skill_id"]})
|
|
98
|
+
assert not skill.isError, skill.content
|
|
99
|
+
assert skill.structuredContent["skill_id"] == run["skill_id"]
|
|
100
|
+
|
|
101
|
+
anyio.run(scenario)
|
|
@@ -413,6 +413,7 @@ def _build_parser() -> argparse.ArgumentParser:
|
|
|
413
413
|
p_skill_run_source = p_skill_run.add_mutually_exclusive_group(required=True)
|
|
414
414
|
p_skill_run_source.add_argument("--meta", help="Relative path to the legacy Skill meta.md to run")
|
|
415
415
|
p_skill_run_source.add_argument("--definition", help="Explicit SkillDefinition document to run without a legacy meta source")
|
|
416
|
+
p_skill_run_source.add_argument("--package-skill", help="Explicit installed Skill Package reference (package_id::skill_id)")
|
|
416
417
|
p_skill_run.add_argument(
|
|
417
418
|
"--governance",
|
|
418
419
|
default=None,
|
|
@@ -660,7 +660,7 @@ def _render_log(
|
|
|
660
660
|
]
|
|
661
661
|
)
|
|
662
662
|
definition_lines = "".join(
|
|
663
|
-
f"-
|
|
663
|
+
f"- {key if key.startswith('package_') else 'definition_' + key}: `{value}`\n"
|
|
664
664
|
for key, value in (definition_identity or {}).items()
|
|
665
665
|
)
|
|
666
666
|
runtime_responsibility = role_responsibilities.get("executor") or "not declared"
|
|
@@ -2929,15 +2929,50 @@ def update_token_usage(args) -> SkillRunResult:
|
|
|
2929
2929
|
return SkillRunResult(ok=True, skill_id=_log_skill_id(text), skill_doc=None, run_log=str(log_path), errors=[])
|
|
2930
2930
|
|
|
2931
2931
|
|
|
2932
|
+
def _resolve_package_run_source(reference: str) -> tuple[Path, str, dict[str, str]]:
|
|
2933
|
+
from xrefkit.discovery import enabled_discovered_packages
|
|
2934
|
+
from xrefkit.hashing import sha256_file
|
|
2935
|
+
from xrefkit.workspace import build_registry
|
|
2936
|
+
|
|
2937
|
+
package_id, separator, skill_id = reference.partition("::")
|
|
2938
|
+
if not separator or not package_id or not skill_id:
|
|
2939
|
+
raise ValueError("--package-skill requires package_id::skill_id")
|
|
2940
|
+
packages = enabled_discovered_packages(enabled_package_ids={package_id})
|
|
2941
|
+
if len(packages) != 1:
|
|
2942
|
+
raise ValueError(f"expected one installed package for {package_id}, found {len(packages)}")
|
|
2943
|
+
package = packages[0]
|
|
2944
|
+
provided = next((item for item in package.manifest.provides.skills if item.id == skill_id), None)
|
|
2945
|
+
if provided is None:
|
|
2946
|
+
raise ValueError(f"package does not provide Skill: {reference}")
|
|
2947
|
+
if not provided.path.endswith(".skill.yaml"):
|
|
2948
|
+
raise ValueError("--package-skill requires a split YAML Skill; use --definition with packaged governance for Markdown")
|
|
2949
|
+
|
|
2950
|
+
registry = build_registry(package_manifests=[package.manifest_path])
|
|
2951
|
+
record = registry.skills.require(skill_id)
|
|
2952
|
+
if record.package_id != package_id or record.xid != provided.xid:
|
|
2953
|
+
raise ValueError(f"package Skill identity mismatch: {reference}")
|
|
2954
|
+
entry = (record.root / record.definition.entry.path).resolve()
|
|
2955
|
+
identity = {
|
|
2956
|
+
"format": "legacy_split_v1",
|
|
2957
|
+
"package_id": package_id,
|
|
2958
|
+
"package_version": package.manifest.version,
|
|
2959
|
+
"package_skill_xid": record.xid,
|
|
2960
|
+
"package_skill_path": record.path.relative_to(record.root).as_posix(),
|
|
2961
|
+
"package_skill_sha256": sha256_file(record.path),
|
|
2962
|
+
}
|
|
2963
|
+
return entry, skill_id, identity
|
|
2964
|
+
|
|
2965
|
+
|
|
2932
2966
|
def run_skill(args) -> SkillRunResult:
|
|
2933
2967
|
root = Path(args.root).resolve()
|
|
2934
2968
|
definition_arg = getattr(args, "definition", None)
|
|
2935
2969
|
governance_arg = getattr(args, "governance", None)
|
|
2936
2970
|
meta_arg = getattr(args, "meta", None)
|
|
2937
|
-
|
|
2938
|
-
|
|
2971
|
+
package_arg = getattr(args, "package_skill", None)
|
|
2972
|
+
if sum(bool(source) for source in (definition_arg, meta_arg, package_arg)) != 1:
|
|
2973
|
+
return SkillRunResult(ok=False, skill_id=None, skill_doc=None, run_log=None, errors=["exactly one of --meta, --definition, or --package-skill is required"])
|
|
2939
2974
|
try:
|
|
2940
|
-
adoption = load_repository_adoption(root)
|
|
2975
|
+
adoption = None if package_arg else load_repository_adoption(root)
|
|
2941
2976
|
adapter = repository_skill(root, definition_arg or meta_arg, adoption) if adoption else None
|
|
2942
2977
|
except (ValueError, OSError) as exc:
|
|
2943
2978
|
return SkillRunResult(ok=False, skill_id=None, skill_doc=None, run_log=None, errors=[str(exc)])
|
|
@@ -2946,15 +2981,26 @@ def run_skill(args) -> SkillRunResult:
|
|
|
2946
2981
|
return SkillRunResult(ok=False, skill_id=adapter["skill_id"], skill_doc=None, run_log=None,
|
|
2947
2982
|
errors=["draft or deprecated repository Skills are not adopted and cannot execute"])
|
|
2948
2983
|
definition_arg = adapter["definition_path"]
|
|
2949
|
-
if
|
|
2984
|
+
if package_arg and governance_arg:
|
|
2985
|
+
return SkillRunResult(ok=False, skill_id=None, skill_doc=None, run_log=None,
|
|
2986
|
+
errors=["--governance requires a Markdown SkillDefinition"])
|
|
2987
|
+
if not (definition_arg or package_arg) and (governance_arg or any(
|
|
2950
2988
|
getattr(args, key, None)
|
|
2951
2989
|
for key in ("capability", "tuning", "responsibility", "execution_mode")
|
|
2952
2990
|
)):
|
|
2953
2991
|
return SkillRunResult(
|
|
2954
2992
|
ok=False, skill_id=None, skill_doc=None, run_log=None,
|
|
2955
|
-
errors=["--governance, --capability, --tuning, --responsibility, and --execution-mode
|
|
2993
|
+
errors=["--governance, --capability, --tuning, --responsibility, and --execution-mode require --definition or --package-skill"],
|
|
2956
2994
|
)
|
|
2957
|
-
|
|
2995
|
+
definition_identity = None
|
|
2996
|
+
if package_arg:
|
|
2997
|
+
try:
|
|
2998
|
+
meta_path, package_skill_id, definition_identity = _resolve_package_run_source(package_arg)
|
|
2999
|
+
except (ImportError, KeyError, OSError, ValueError) as exc:
|
|
3000
|
+
return SkillRunResult(ok=False, skill_id=None, skill_doc=None, run_log=None, errors=[str(exc)])
|
|
3001
|
+
else:
|
|
3002
|
+
meta_path = (root / (definition_arg or meta_arg)).resolve()
|
|
3003
|
+
instruction_bound = bool(definition_arg or package_arg)
|
|
2958
3004
|
task, task_errors = _read_task(args)
|
|
2959
3005
|
if task_errors:
|
|
2960
3006
|
return SkillRunResult(ok=False, skill_id=None, skill_doc=None, run_log=None, errors=task_errors)
|
|
@@ -2964,7 +3010,6 @@ def run_skill(args) -> SkillRunResult:
|
|
|
2964
3010
|
source_name = "definition" if definition_arg else "meta"
|
|
2965
3011
|
return SkillRunResult(ok=False, skill_id=None, skill_doc=None, run_log=None, errors=[f"{source_name} not found: {meta_path}"])
|
|
2966
3012
|
|
|
2967
|
-
definition_identity = None
|
|
2968
3013
|
if definition_arg:
|
|
2969
3014
|
try:
|
|
2970
3015
|
definition = load_skill_definition(meta_path)
|
|
@@ -3018,6 +3063,12 @@ def run_skill(args) -> SkillRunResult:
|
|
|
3018
3063
|
"governance_sha256": str(governance["_content_hash"]),
|
|
3019
3064
|
"promotion_decision": str(governance["promotion"]["decision"]),
|
|
3020
3065
|
})
|
|
3066
|
+
elif package_arg:
|
|
3067
|
+
parsed = {"skill_id": package_skill_id}
|
|
3068
|
+
skill_id = package_skill_id
|
|
3069
|
+
definition_maturity = "unassessed"
|
|
3070
|
+
|
|
3071
|
+
if instruction_bound:
|
|
3021
3072
|
runtime = {key: str(getattr(args, key, "") or
|
|
3022
3073
|
(adapter["runtime"][key]["value"] if adapter else "") or "").strip()
|
|
3023
3074
|
for key in RUNTIME_FIELDS}
|
|
@@ -3058,7 +3109,7 @@ def run_skill(args) -> SkillRunResult:
|
|
|
3058
3109
|
domain_knowledge=domain_knowledge,
|
|
3059
3110
|
)
|
|
3060
3111
|
maturity, _ = _resolve_maturity(parsed)
|
|
3061
|
-
maturity = (str(parsed.get("maturity") or "unassessed") if
|
|
3112
|
+
maturity = (str(parsed.get("maturity") or "unassessed") if instruction_bound else (maturity or "stable"))
|
|
3062
3113
|
|
|
3063
3114
|
if maturity == "draft":
|
|
3064
3115
|
return SkillRunResult(
|
|
@@ -3080,8 +3131,8 @@ def run_skill(args) -> SkillRunResult:
|
|
|
3080
3131
|
)
|
|
3081
3132
|
|
|
3082
3133
|
validation_level = "trial" if maturity == "trial" else "stable"
|
|
3083
|
-
validation = validate_skill_meta(meta_path, check_level=validation_level) if not
|
|
3084
|
-
if
|
|
3134
|
+
validation = validate_skill_meta(meta_path, check_level=validation_level) if not instruction_bound else None
|
|
3135
|
+
if instruction_bound:
|
|
3085
3136
|
blocking_errors = []
|
|
3086
3137
|
elif maturity == "trial":
|
|
3087
3138
|
allowed_trial_errors = {"trial-or-higher skills must include at least one observation_refs entry"}
|
|
@@ -3147,7 +3198,7 @@ def run_skill(args) -> SkillRunResult:
|
|
|
3147
3198
|
errors=[f"skill_doc not found: {skill_doc_path}"],
|
|
3148
3199
|
)
|
|
3149
3200
|
os_contract = resolve_os_contract(parsed.get("os_contract"))
|
|
3150
|
-
if
|
|
3201
|
+
if instruction_bound:
|
|
3151
3202
|
os_contract = dict(REQUIRED_OS_CONTRACT)
|
|
3152
3203
|
if maturity == "trial":
|
|
3153
3204
|
merged_os_contract = dict(REQUIRED_OS_CONTRACT)
|
|
@@ -3226,8 +3277,8 @@ def run_skill(args) -> SkillRunResult:
|
|
|
3226
3277
|
node_id=getattr(args, "node_id", None),
|
|
3227
3278
|
skill_id=skill_id,
|
|
3228
3279
|
maturity=maturity,
|
|
3229
|
-
meta_path=Path("-") if
|
|
3230
|
-
skill_doc=skill_doc_path.relative_to(root),
|
|
3280
|
+
meta_path=Path("-") if instruction_bound else meta_path.relative_to(root),
|
|
3281
|
+
skill_doc=skill_doc_path if package_arg else skill_doc_path.relative_to(root),
|
|
3231
3282
|
execution_mode=execution_mode,
|
|
3232
3283
|
guard_policy=guard_policy,
|
|
3233
3284
|
capability_layering=capability_layering,
|
|
@@ -3244,7 +3295,7 @@ def run_skill(args) -> SkillRunResult:
|
|
|
3244
3295
|
domain_knowledge=domain_knowledge,
|
|
3245
3296
|
decision_trace_checkpoint=checkpoint,
|
|
3246
3297
|
definition_identity=definition_identity,
|
|
3247
|
-
runtime_binding_source="instruction_derived" if
|
|
3298
|
+
runtime_binding_source="instruction_derived" if instruction_bound else "legacy_meta_compatibility",
|
|
3248
3299
|
compact=True,
|
|
3249
3300
|
)
|
|
3250
3301
|
kickoff = None
|
|
@@ -78,6 +78,7 @@ 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_package_skill_run.py
|
|
81
82
|
tests/test_packaged_native_governance.py
|
|
82
83
|
tests/test_packmeta.py
|
|
83
84
|
tests/test_plan_markdown.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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|