agentbundle 0.43.1__tar.gz → 0.44.2__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (670) hide show
  1. {agentbundle-0.43.1/agentbundle.egg-info → agentbundle-0.44.2}/PKG-INFO +29 -1
  2. {agentbundle-0.43.1 → agentbundle-0.44.2}/README-pypi.md +28 -0
  3. {agentbundle-0.43.1 → agentbundle-0.44.2}/agentbundle/_data/catalogue-scaffold/manifest.json +1 -0
  4. agentbundle-0.44.2/agentbundle/_data/catalogue-scaffold/tests/conformance/test_pack_layout_declared_section.py +236 -0
  5. {agentbundle-0.43.1 → agentbundle-0.44.2}/agentbundle/_data/pack.schema.json +4 -2
  6. {agentbundle-0.43.1 → agentbundle-0.44.2}/agentbundle/_data/workspace_status_engine.py +141 -8
  7. {agentbundle-0.43.1 → agentbundle-0.44.2}/agentbundle/catalogue_tooling/initialise_self_hosted.py +87 -1
  8. {agentbundle-0.43.1 → agentbundle-0.44.2}/agentbundle/catalogue_tooling/lint.py +57 -24
  9. {agentbundle-0.43.1 → agentbundle-0.44.2}/agentbundle/commands/install.py +322 -116
  10. {agentbundle-0.43.1 → agentbundle-0.44.2}/agentbundle/version.py +1 -1
  11. {agentbundle-0.43.1 → agentbundle-0.44.2}/agentbundle/workspace_mcp.py +35 -7
  12. {agentbundle-0.43.1 → agentbundle-0.44.2/agentbundle.egg-info}/PKG-INFO +29 -1
  13. {agentbundle-0.43.1 → agentbundle-0.44.2}/agentbundle.egg-info/SOURCES.txt +4 -0
  14. {agentbundle-0.43.1 → agentbundle-0.44.2}/pyproject.toml +1 -1
  15. {agentbundle-0.43.1 → agentbundle-0.44.2}/tests/build_pipeline/test_self_host_check.py +4 -2
  16. {agentbundle-0.43.1 → agentbundle-0.44.2}/tests/fixtures/cognitive-load-hosts.json +6 -9
  17. agentbundle-0.44.2/tests/integration/test_install_layout_is_best_effort.py +127 -0
  18. agentbundle-0.44.2/tests/unit/test_append_layout_section.py +616 -0
  19. {agentbundle-0.43.1 → agentbundle-0.44.2}/tests/unit/test_catalogue_tooling_file_safety.py +4 -4
  20. {agentbundle-0.43.1 → agentbundle-0.44.2}/tests/unit/test_catalogue_tooling_self_hosted_init.py +206 -0
  21. agentbundle-0.44.2/tests/unit/test_cognitive_load_seed_contract.py +255 -0
  22. agentbundle-0.44.2/tests/unit/test_layout_bases_anchoring.py +138 -0
  23. agentbundle-0.44.2/tests/unit/test_pack_layout_section_schema.py +94 -0
  24. agentbundle-0.43.1/tests/unit/test_append_layout_section.py +0 -238
  25. agentbundle-0.43.1/tests/unit/test_cognitive_load_seed_contract.py +0 -129
  26. {agentbundle-0.43.1 → agentbundle-0.44.2}/MANIFEST.in +0 -0
  27. {agentbundle-0.43.1 → agentbundle-0.44.2}/README.md +0 -0
  28. {agentbundle-0.43.1 → agentbundle-0.44.2}/agentbundle/__init__.py +0 -0
  29. {agentbundle-0.43.1 → agentbundle-0.44.2}/agentbundle/__main__.py +0 -0
  30. {agentbundle-0.43.1 → agentbundle-0.44.2}/agentbundle/_data/__init__.py +0 -0
  31. {agentbundle-0.43.1 → agentbundle-0.44.2}/agentbundle/_data/adapter.schema.json +0 -0
  32. {agentbundle-0.43.1 → agentbundle-0.44.2}/agentbundle/_data/adapter.toml +0 -0
  33. {agentbundle-0.43.1 → agentbundle-0.44.2}/agentbundle/_data/agent-plugin-extension-namespaces.schema.json +0 -0
  34. {agentbundle-0.43.1 → agentbundle-0.44.2}/agentbundle/_data/agent-plugin-extension-namespaces.toml +0 -0
  35. {agentbundle-0.43.1 → agentbundle-0.44.2}/agentbundle/_data/catalogue-index.schema.json +0 -0
  36. {agentbundle-0.43.1 → agentbundle-0.44.2}/agentbundle/_data/catalogue-scaffold/guides/_shared/reference/catalogue-authoring-standards.md +0 -0
  37. {agentbundle-0.43.1 → agentbundle-0.44.2}/agentbundle/_data/catalogue-scaffold/guides/_shared/reference/catalogue-ci-contract.md +0 -0
  38. {agentbundle-0.43.1 → agentbundle-0.44.2}/agentbundle/_data/catalogue-scaffold/packs/AGENTS.md +0 -0
  39. {agentbundle-0.43.1 → agentbundle-0.44.2}/agentbundle/_data/catalogue-scaffold/packs/CLAUDE.md +0 -0
  40. {agentbundle-0.43.1 → agentbundle-0.44.2}/agentbundle/_data/catalogue-scaffold/packs/README.md +0 -0
  41. {agentbundle-0.43.1 → agentbundle-0.44.2}/agentbundle/_data/catalogue-scaffold/packs/_example/.apm/skills/example-skill/SKILL.md +0 -0
  42. {agentbundle-0.43.1 → agentbundle-0.44.2}/agentbundle/_data/catalogue-scaffold/packs/_example/.apm/skills/example-skill/evals/eval_queries.json +0 -0
  43. {agentbundle-0.43.1 → agentbundle-0.44.2}/agentbundle/_data/catalogue-scaffold/packs/_example/.claude-plugin/plugin.json +0 -0
  44. {agentbundle-0.43.1 → agentbundle-0.44.2}/agentbundle/_data/catalogue-scaffold/packs/_example/README.md +0 -0
  45. {agentbundle-0.43.1 → agentbundle-0.44.2}/agentbundle/_data/catalogue-scaffold/packs/_example/pack.toml +0 -0
  46. {agentbundle-0.43.1 → agentbundle-0.44.2}/agentbundle/_data/catalogue-scaffold/profiles/AGENTS.md +0 -0
  47. {agentbundle-0.43.1 → agentbundle-0.44.2}/agentbundle/_data/catalogue-scaffold/profiles/CLAUDE.md +0 -0
  48. {agentbundle-0.43.1 → agentbundle-0.44.2}/agentbundle/_data/catalogue-scaffold/profiles/README.md +0 -0
  49. {agentbundle-0.43.1 → agentbundle-0.44.2}/agentbundle/_data/catalogue-scaffold/profiles/_example/README.md +0 -0
  50. {agentbundle-0.43.1 → agentbundle-0.44.2}/agentbundle/_data/catalogue-scaffold/profiles/_example/profile.toml +0 -0
  51. {agentbundle-0.43.1 → agentbundle-0.44.2}/agentbundle/_data/catalogue-scaffold/tests/conformance/test_gemini_admissibility.py +0 -0
  52. {agentbundle-0.43.1 → agentbundle-0.44.2}/agentbundle/_data/catalogue-scaffold/tests/conformance/test_pack_metadata.py +0 -0
  53. {agentbundle-0.43.1 → agentbundle-0.44.2}/agentbundle/_data/catalogue-scaffold/tests/conformance/test_shared_library_boundaries.py +0 -0
  54. {agentbundle-0.43.1 → agentbundle-0.44.2}/agentbundle/_data/catalogue.schema.json +0 -0
  55. {agentbundle-0.43.1 → agentbundle-0.44.2}/agentbundle/_data/close_work.py +0 -0
  56. {agentbundle-0.43.1 → agentbundle-0.44.2}/agentbundle/_data/cooling.py +0 -0
  57. {agentbundle-0.43.1 → agentbundle-0.44.2}/agentbundle/_data/distribution-routes.schema.json +0 -0
  58. {agentbundle-0.43.1 → agentbundle-0.44.2}/agentbundle/_data/distribution-routes.toml +0 -0
  59. {agentbundle-0.43.1 → agentbundle-0.44.2}/agentbundle/_data/file_safety.py +0 -0
  60. {agentbundle-0.43.1 → agentbundle-0.44.2}/agentbundle/_data/guide.schema.json +0 -0
  61. {agentbundle-0.43.1 → agentbundle-0.44.2}/agentbundle/_data/install-defaults.toml +0 -0
  62. {agentbundle-0.43.1 → agentbundle-0.44.2}/agentbundle/_data/install-marker.py +0 -0
  63. {agentbundle-0.43.1 → agentbundle-0.44.2}/agentbundle/_data/knowledge-captured-observation.schema.json +0 -0
  64. {agentbundle-0.43.1 → agentbundle-0.44.2}/agentbundle/_data/marketplace-entry.schema.json +0 -0
  65. {agentbundle-0.43.1 → agentbundle-0.44.2}/agentbundle/_data/plugin-manifest.derived.schema.json +0 -0
  66. {agentbundle-0.43.1 → agentbundle-0.44.2}/agentbundle/_data/plugin-manifest.schema.json +0 -0
  67. {agentbundle-0.43.1 → agentbundle-0.44.2}/agentbundle/_data/profile.schema.json +0 -0
  68. {agentbundle-0.43.1 → agentbundle-0.44.2}/agentbundle/_data/public-contracts.txt +0 -0
  69. {agentbundle-0.43.1 → agentbundle-0.44.2}/agentbundle/_data/skill-manifest.schema.json +0 -0
  70. {agentbundle-0.43.1 → agentbundle-0.44.2}/agentbundle/_data/skill.schema.json +0 -0
  71. {agentbundle-0.43.1 → agentbundle-0.44.2}/agentbundle/_data/target-vocab.toml +0 -0
  72. {agentbundle-0.43.1 → agentbundle-0.44.2}/agentbundle/_data/vendor/agent-plugins/1.0.0/LICENSE.md +0 -0
  73. {agentbundle-0.43.1 → agentbundle-0.44.2}/agentbundle/_data/vendor/agent-plugins/1.0.0/PROVENANCE.md +0 -0
  74. {agentbundle-0.43.1 → agentbundle-0.44.2}/agentbundle/_data/vendor/agent-plugins/1.0.0/mcp.schema.json +0 -0
  75. {agentbundle-0.43.1 → agentbundle-0.44.2}/agentbundle/_data/vendor/agent-plugins/1.0.0/plugin.schema.json +0 -0
  76. {agentbundle-0.43.1 → agentbundle-0.44.2}/agentbundle/_data/work_intake_refresh.py +0 -0
  77. {agentbundle-0.43.1 → agentbundle-0.44.2}/agentbundle/bounded_metadata.py +0 -0
  78. {agentbundle-0.43.1 → agentbundle-0.44.2}/agentbundle/build/__init__.py +0 -0
  79. {agentbundle-0.43.1 → agentbundle-0.44.2}/agentbundle/build/__main__.py +0 -0
  80. {agentbundle-0.43.1 → agentbundle-0.44.2}/agentbundle/build/adapter_root_bins.py +0 -0
  81. {agentbundle-0.43.1 → agentbundle-0.44.2}/agentbundle/build/adapters/__init__.py +0 -0
  82. {agentbundle-0.43.1 → agentbundle-0.44.2}/agentbundle/build/adapters/_sweep_guard.py +0 -0
  83. {agentbundle-0.43.1 → agentbundle-0.44.2}/agentbundle/build/adapters/claude_code.py +0 -0
  84. {agentbundle-0.43.1 → agentbundle-0.44.2}/agentbundle/build/adapters/codex.py +0 -0
  85. {agentbundle-0.43.1 → agentbundle-0.44.2}/agentbundle/build/adapters/copilot.py +0 -0
  86. {agentbundle-0.43.1 → agentbundle-0.44.2}/agentbundle/build/adapters/cursor.py +0 -0
  87. {agentbundle-0.43.1 → agentbundle-0.44.2}/agentbundle/build/adapters/gemini.py +0 -0
  88. {agentbundle-0.43.1 → agentbundle-0.44.2}/agentbundle/build/adapters/kiro.py +0 -0
  89. {agentbundle-0.43.1 → agentbundle-0.44.2}/agentbundle/build/adapters/kiro_cli.py +0 -0
  90. {agentbundle-0.43.1 → agentbundle-0.44.2}/agentbundle/build/adapters/kiro_ide.py +0 -0
  91. {agentbundle-0.43.1 → agentbundle-0.44.2}/agentbundle/build/contract.py +0 -0
  92. {agentbundle-0.43.1 → agentbundle-0.44.2}/agentbundle/build/hook_wiring_rules.py +0 -0
  93. {agentbundle-0.43.1 → agentbundle-0.44.2}/agentbundle/build/lint_packs.py +0 -0
  94. {agentbundle-0.43.1 → agentbundle-0.44.2}/agentbundle/build/main.py +0 -0
  95. {agentbundle-0.43.1 → agentbundle-0.44.2}/agentbundle/build/phase_order.py +0 -0
  96. {agentbundle-0.43.1 → agentbundle-0.44.2}/agentbundle/build/projection_io.py +0 -0
  97. {agentbundle-0.43.1 → agentbundle-0.44.2}/agentbundle/build/projections/__init__.py +0 -0
  98. {agentbundle-0.43.1 → agentbundle-0.44.2}/agentbundle/build/projections/codex_agent_toml.py +0 -0
  99. {agentbundle-0.43.1 → agentbundle-0.44.2}/agentbundle/build/projections/copilot_agent_md.py +0 -0
  100. {agentbundle-0.43.1 → agentbundle-0.44.2}/agentbundle/build/projections/copilot_hooks_json.py +0 -0
  101. {agentbundle-0.43.1 → agentbundle-0.44.2}/agentbundle/build/projections/direct_directory.py +0 -0
  102. {agentbundle-0.43.1 → agentbundle-0.44.2}/agentbundle/build/projections/gemini_command_toml.py +0 -0
  103. {agentbundle-0.43.1 → agentbundle-0.44.2}/agentbundle/build/projections/hook_id.py +0 -0
  104. {agentbundle-0.43.1 → agentbundle-0.44.2}/agentbundle/build/projections/kiro_ide_hook.py +0 -0
  105. {agentbundle-0.43.1 → agentbundle-0.44.2}/agentbundle/build/projections/merge_into_agent_json.py +0 -0
  106. {agentbundle-0.43.1 → agentbundle-0.44.2}/agentbundle/build/projections/merge_json.py +0 -0
  107. {agentbundle-0.43.1 → agentbundle-0.44.2}/agentbundle/build/projections/plugin_hooks.py +0 -0
  108. {agentbundle-0.43.1 → agentbundle-0.44.2}/agentbundle/build/projections/user_merge_json.py +0 -0
  109. {agentbundle-0.43.1 → agentbundle-0.44.2}/agentbundle/build/recipes/composite-agents-md.toml +0 -0
  110. {agentbundle-0.43.1 → agentbundle-0.44.2}/agentbundle/build/recipes/composite-marketplace.toml +0 -0
  111. {agentbundle-0.43.1 → agentbundle-0.44.2}/agentbundle/build/recipes/marketplace.toml +0 -0
  112. {agentbundle-0.43.1 → agentbundle-0.44.2}/agentbundle/build/recipes/per-pack-agent-plugin.toml +0 -0
  113. {agentbundle-0.43.1 → agentbundle-0.44.2}/agentbundle/build/recipes/per-pack-apm-package.toml +0 -0
  114. {agentbundle-0.43.1 → agentbundle-0.44.2}/agentbundle/build/recipes/per-pack-claude-plugin.toml +0 -0
  115. {agentbundle-0.43.1 → agentbundle-0.44.2}/agentbundle/build/recipes/per-pack-overlay.toml +0 -0
  116. {agentbundle-0.43.1 → agentbundle-0.44.2}/agentbundle/build/recipes/self-host.toml +0 -0
  117. {agentbundle-0.43.1 → agentbundle-0.44.2}/agentbundle/build/route_agent_plugin.py +0 -0
  118. {agentbundle-0.43.1 → agentbundle-0.44.2}/agentbundle/build/route_apm.py +0 -0
  119. {agentbundle-0.43.1 → agentbundle-0.44.2}/agentbundle/build/route_claude_plugins.py +0 -0
  120. {agentbundle-0.43.1 → agentbundle-0.44.2}/agentbundle/build/route_lookup.py +0 -0
  121. {agentbundle-0.43.1 → agentbundle-0.44.2}/agentbundle/build/scope_rails.py +0 -0
  122. {agentbundle-0.43.1 → agentbundle-0.44.2}/agentbundle/build/self_host.py +0 -0
  123. {agentbundle-0.43.1 → agentbundle-0.44.2}/agentbundle/build/shared_libs.py +0 -0
  124. {agentbundle-0.43.1 → agentbundle-0.44.2}/agentbundle/build/target_resolver.py +0 -0
  125. {agentbundle-0.43.1 → agentbundle-0.44.2}/agentbundle/build/user_libs.py +0 -0
  126. {agentbundle-0.43.1 → agentbundle-0.44.2}/agentbundle/build/validate.py +0 -0
  127. {agentbundle-0.43.1 → agentbundle-0.44.2}/agentbundle/catalogue.py +0 -0
  128. {agentbundle-0.43.1 → agentbundle-0.44.2}/agentbundle/catalogue_tooling/__init__.py +0 -0
  129. {agentbundle-0.43.1 → agentbundle-0.44.2}/agentbundle/catalogue_tooling/archive.py +0 -0
  130. {agentbundle-0.43.1 → agentbundle-0.44.2}/agentbundle/catalogue_tooling/build.py +0 -0
  131. {agentbundle-0.43.1 → agentbundle-0.44.2}/agentbundle/catalogue_tooling/config.py +0 -0
  132. {agentbundle-0.43.1 → agentbundle-0.44.2}/agentbundle/catalogue_tooling/contracts_inspector.py +0 -0
  133. {agentbundle-0.43.1 → agentbundle-0.44.2}/agentbundle/catalogue_tooling/defaults.py +0 -0
  134. {agentbundle-0.43.1 → agentbundle-0.44.2}/agentbundle/catalogue_tooling/diagnostics.py +0 -0
  135. {agentbundle-0.43.1 → agentbundle-0.44.2}/agentbundle/catalogue_tooling/file_safety.py +0 -0
  136. {agentbundle-0.43.1 → agentbundle-0.44.2}/agentbundle/catalogue_tooling/identity.py +0 -0
  137. {agentbundle-0.43.1 → agentbundle-0.44.2}/agentbundle/catalogue_tooling/index_generator.py +0 -0
  138. {agentbundle-0.43.1 → agentbundle-0.44.2}/agentbundle/catalogue_tooling/initialise.py +0 -0
  139. {agentbundle-0.43.1 → agentbundle-0.44.2}/agentbundle/catalogue_tooling/journey_validator.py +0 -0
  140. {agentbundle-0.43.1 → agentbundle-0.44.2}/agentbundle/catalogue_tooling/manifest.py +0 -0
  141. {agentbundle-0.43.1 → agentbundle-0.44.2}/agentbundle/catalogue_tooling/okf_discovery.py +0 -0
  142. {agentbundle-0.43.1 → agentbundle-0.44.2}/agentbundle/catalogue_tooling/package.py +0 -0
  143. {agentbundle-0.43.1 → agentbundle-0.44.2}/agentbundle/catalogue_tooling/results.py +0 -0
  144. {agentbundle-0.43.1 → agentbundle-0.44.2}/agentbundle/catalogue_tooling/self_host.py +0 -0
  145. {agentbundle-0.43.1 → agentbundle-0.44.2}/agentbundle/catalogue_tooling/self_host_windows.py +0 -0
  146. {agentbundle-0.43.1 → agentbundle-0.44.2}/agentbundle/catalogue_tooling/skill_spec_lint.py +0 -0
  147. {agentbundle-0.43.1 → agentbundle-0.44.2}/agentbundle/catalogue_tooling/toml_emit.py +0 -0
  148. {agentbundle-0.43.1 → agentbundle-0.44.2}/agentbundle/catalogue_tooling/verify.py +0 -0
  149. {agentbundle-0.43.1 → agentbundle-0.44.2}/agentbundle/catalogue_tooling/version_ranges.py +0 -0
  150. {agentbundle-0.43.1 → agentbundle-0.44.2}/agentbundle/categories.py +0 -0
  151. {agentbundle-0.43.1 → agentbundle-0.44.2}/agentbundle/cli.py +0 -0
  152. {agentbundle-0.43.1 → agentbundle-0.44.2}/agentbundle/commands/__init__.py +0 -0
  153. {agentbundle-0.43.1 → agentbundle-0.44.2}/agentbundle/commands/_common.py +0 -0
  154. {agentbundle-0.43.1 → agentbundle-0.44.2}/agentbundle/commands/_drop_warning.py +0 -0
  155. {agentbundle-0.43.1 → agentbundle-0.44.2}/agentbundle/commands/adapt.py +0 -0
  156. {agentbundle-0.43.1 → agentbundle-0.44.2}/agentbundle/commands/catalogue_build.py +0 -0
  157. {agentbundle-0.43.1 → agentbundle-0.44.2}/agentbundle/commands/catalogue_contracts.py +0 -0
  158. {agentbundle-0.43.1 → agentbundle-0.44.2}/agentbundle/commands/catalogue_index.py +0 -0
  159. {agentbundle-0.43.1 → agentbundle-0.44.2}/agentbundle/commands/catalogue_init.py +0 -0
  160. {agentbundle-0.43.1 → agentbundle-0.44.2}/agentbundle/commands/catalogue_lint.py +0 -0
  161. {agentbundle-0.43.1 → agentbundle-0.44.2}/agentbundle/commands/catalogue_package.py +0 -0
  162. {agentbundle-0.43.1 → agentbundle-0.44.2}/agentbundle/commands/catalogue_self_host.py +0 -0
  163. {agentbundle-0.43.1 → agentbundle-0.44.2}/agentbundle/commands/catalogue_sync_defaults.py +0 -0
  164. {agentbundle-0.43.1 → agentbundle-0.44.2}/agentbundle/commands/catalogue_tooling_stub.py +0 -0
  165. {agentbundle-0.43.1 → agentbundle-0.44.2}/agentbundle/commands/catalogue_verify.py +0 -0
  166. {agentbundle-0.43.1 → agentbundle-0.44.2}/agentbundle/commands/config.py +0 -0
  167. {agentbundle-0.43.1 → agentbundle-0.44.2}/agentbundle/commands/diff.py +0 -0
  168. {agentbundle-0.43.1 → agentbundle-0.44.2}/agentbundle/commands/docs.py +0 -0
  169. {agentbundle-0.43.1 → agentbundle-0.44.2}/agentbundle/commands/init_state.py +0 -0
  170. {agentbundle-0.43.1 → agentbundle-0.44.2}/agentbundle/commands/list_installed.py +0 -0
  171. {agentbundle-0.43.1 → agentbundle-0.44.2}/agentbundle/commands/list_packs.py +0 -0
  172. {agentbundle-0.43.1 → agentbundle-0.44.2}/agentbundle/commands/list_profiles.py +0 -0
  173. {agentbundle-0.43.1 → agentbundle-0.44.2}/agentbundle/commands/list_targets.py +0 -0
  174. {agentbundle-0.43.1 → agentbundle-0.44.2}/agentbundle/commands/oplog_cmd.py +0 -0
  175. {agentbundle-0.43.1 → agentbundle-0.44.2}/agentbundle/commands/pack_config_cmd.py +0 -0
  176. {agentbundle-0.43.1 → agentbundle-0.44.2}/agentbundle/commands/pack_evals.py +0 -0
  177. {agentbundle-0.43.1 → agentbundle-0.44.2}/agentbundle/commands/package_catalogue.py +0 -0
  178. {agentbundle-0.43.1 → agentbundle-0.44.2}/agentbundle/commands/profile.py +0 -0
  179. {agentbundle-0.43.1 → agentbundle-0.44.2}/agentbundle/commands/reconcile.py +0 -0
  180. {agentbundle-0.43.1 → agentbundle-0.44.2}/agentbundle/commands/render.py +0 -0
  181. {agentbundle-0.43.1 → agentbundle-0.44.2}/agentbundle/commands/scaffold.py +0 -0
  182. {agentbundle-0.43.1 → agentbundle-0.44.2}/agentbundle/commands/show.py +0 -0
  183. {agentbundle-0.43.1 → agentbundle-0.44.2}/agentbundle/commands/uninstall.py +0 -0
  184. {agentbundle-0.43.1 → agentbundle-0.44.2}/agentbundle/commands/upgrade.py +0 -0
  185. {agentbundle-0.43.1 → agentbundle-0.44.2}/agentbundle/commands/validate.py +0 -0
  186. {agentbundle-0.43.1 → agentbundle-0.44.2}/agentbundle/config.py +0 -0
  187. {agentbundle-0.43.1 → agentbundle-0.44.2}/agentbundle/direct_install.py +0 -0
  188. {agentbundle-0.43.1 → agentbundle-0.44.2}/agentbundle/direct_source.py +0 -0
  189. {agentbundle-0.43.1 → agentbundle-0.44.2}/agentbundle/direct_source_acquisition.py +0 -0
  190. {agentbundle-0.43.1 → agentbundle-0.44.2}/agentbundle/direct_source_state.py +0 -0
  191. {agentbundle-0.43.1 → agentbundle-0.44.2}/agentbundle/direct_validate.py +0 -0
  192. {agentbundle-0.43.1 → agentbundle-0.44.2}/agentbundle/https_catalogue.py +0 -0
  193. {agentbundle-0.43.1 → agentbundle-0.44.2}/agentbundle/local_exclude.py +0 -0
  194. {agentbundle-0.43.1 → agentbundle-0.44.2}/agentbundle/oplog.py +0 -0
  195. {agentbundle-0.43.1 → agentbundle-0.44.2}/agentbundle/pack_inventory.py +0 -0
  196. {agentbundle-0.43.1 → agentbundle-0.44.2}/agentbundle/render.py +0 -0
  197. {agentbundle-0.43.1 → agentbundle-0.44.2}/agentbundle/safety.py +0 -0
  198. {agentbundle-0.43.1 → agentbundle-0.44.2}/agentbundle/scaffold.py +0 -0
  199. {agentbundle-0.43.1 → agentbundle-0.44.2}/agentbundle/scope.py +0 -0
  200. {agentbundle-0.43.1 → agentbundle-0.44.2}/agentbundle/source_defaults.py +0 -0
  201. {agentbundle-0.43.1 → agentbundle-0.44.2}/agentbundle/statelock.py +0 -0
  202. {agentbundle-0.43.1 → agentbundle-0.44.2}/agentbundle/system_trust.py +0 -0
  203. {agentbundle-0.43.1 → agentbundle-0.44.2}/agentbundle/user_config.py +0 -0
  204. {agentbundle-0.43.1 → agentbundle-0.44.2}/agentbundle.egg-info/dependency_links.txt +0 -0
  205. {agentbundle-0.43.1 → agentbundle-0.44.2}/agentbundle.egg-info/entry_points.txt +0 -0
  206. {agentbundle-0.43.1 → agentbundle-0.44.2}/agentbundle.egg-info/requires.txt +0 -0
  207. {agentbundle-0.43.1 → agentbundle-0.44.2}/agentbundle.egg-info/top_level.txt +0 -0
  208. {agentbundle-0.43.1 → agentbundle-0.44.2}/conftest.py +0 -0
  209. {agentbundle-0.43.1 → agentbundle-0.44.2}/setup.cfg +0 -0
  210. {agentbundle-0.43.1 → agentbundle-0.44.2}/templates/install-marker.py +0 -0
  211. {agentbundle-0.43.1 → agentbundle-0.44.2}/tests/__init__.py +0 -0
  212. {agentbundle-0.43.1 → agentbundle-0.44.2}/tests/_direct_acquisition.py +0 -0
  213. {agentbundle-0.43.1 → agentbundle-0.44.2}/tests/_support.py +0 -0
  214. {agentbundle-0.43.1 → agentbundle-0.44.2}/tests/build_pipeline/__init__.py +0 -0
  215. {agentbundle-0.43.1 → agentbundle-0.44.2}/tests/build_pipeline/fixtures/README.md +0 -0
  216. {agentbundle-0.43.1 → agentbundle-0.44.2}/tests/build_pipeline/fixtures/claude-code-2.1.226-hook-events.json +0 -0
  217. {agentbundle-0.43.1 → agentbundle-0.44.2}/tests/build_pipeline/fixtures/claude-code-2.1.228-hook-events.json +0 -0
  218. {agentbundle-0.43.1 → agentbundle-0.44.2}/tests/build_pipeline/fixtures/packs/core/.apm/agents/bar.md +0 -0
  219. {agentbundle-0.43.1 → agentbundle-0.44.2}/tests/build_pipeline/fixtures/packs/core/.apm/commands/qux.md +0 -0
  220. {agentbundle-0.43.1 → agentbundle-0.44.2}/tests/build_pipeline/fixtures/packs/core/.apm/hook-wiring/baz.toml +0 -0
  221. {agentbundle-0.43.1 → agentbundle-0.44.2}/tests/build_pipeline/fixtures/packs/core/.apm/hook-wiring/qux.toml +0 -0
  222. {agentbundle-0.43.1 → agentbundle-0.44.2}/tests/build_pipeline/fixtures/packs/core/.apm/hooks/baz.py +0 -0
  223. {agentbundle-0.43.1 → agentbundle-0.44.2}/tests/build_pipeline/fixtures/packs/core/.apm/hooks/baz.sh +0 -0
  224. {agentbundle-0.43.1 → agentbundle-0.44.2}/tests/build_pipeline/fixtures/packs/core/.apm/skills/example/SKILL.md +0 -0
  225. {agentbundle-0.43.1 → agentbundle-0.44.2}/tests/build_pipeline/fixtures/packs/core/.claude-plugin/plugin.json +0 -0
  226. {agentbundle-0.43.1 → agentbundle-0.44.2}/tests/build_pipeline/fixtures/packs/core/pack.toml +0 -0
  227. {agentbundle-0.43.1 → agentbundle-0.44.2}/tests/build_pipeline/fixtures/packs/governance-extras/.apm/skills/example/SKILL.md +0 -0
  228. {agentbundle-0.43.1 → agentbundle-0.44.2}/tests/build_pipeline/fixtures/packs/governance-extras/.claude-plugin/plugin.json +0 -0
  229. {agentbundle-0.43.1 → agentbundle-0.44.2}/tests/build_pipeline/fixtures/packs/governance-extras/pack.toml +0 -0
  230. {agentbundle-0.43.1 → agentbundle-0.44.2}/tests/build_pipeline/fixtures/packs/monorepo-extras/.apm/skills/example/SKILL.md +0 -0
  231. {agentbundle-0.43.1 → agentbundle-0.44.2}/tests/build_pipeline/fixtures/packs/monorepo-extras/.claude-plugin/plugin.json +0 -0
  232. {agentbundle-0.43.1 → agentbundle-0.44.2}/tests/build_pipeline/fixtures/packs/monorepo-extras/pack.toml +0 -0
  233. {agentbundle-0.43.1 → agentbundle-0.44.2}/tests/build_pipeline/fixtures/packs/product-documentation/.apm/skills/example/SKILL.md +0 -0
  234. {agentbundle-0.43.1 → agentbundle-0.44.2}/tests/build_pipeline/fixtures/packs/product-documentation/.claude-plugin/plugin.json +0 -0
  235. {agentbundle-0.43.1 → agentbundle-0.44.2}/tests/build_pipeline/fixtures/packs/product-documentation/pack.toml +0 -0
  236. {agentbundle-0.43.1 → agentbundle-0.44.2}/tests/build_pipeline/fixtures/packs/user-guide-diataxis/.apm/skills/example/SKILL.md +0 -0
  237. {agentbundle-0.43.1 → agentbundle-0.44.2}/tests/build_pipeline/fixtures/packs/user-guide-diataxis/.claude-plugin/plugin.json +0 -0
  238. {agentbundle-0.43.1 → agentbundle-0.44.2}/tests/build_pipeline/fixtures/packs/user-guide-diataxis/pack.toml +0 -0
  239. {agentbundle-0.43.1 → agentbundle-0.44.2}/tests/build_pipeline/fixtures/recipes/bogus-target.toml +0 -0
  240. {agentbundle-0.43.1 → agentbundle-0.44.2}/tests/build_pipeline/test_adapter_claude_code.py +0 -0
  241. {agentbundle-0.43.1 → agentbundle-0.44.2}/tests/build_pipeline/test_adapter_codex.py +0 -0
  242. {agentbundle-0.43.1 → agentbundle-0.44.2}/tests/build_pipeline/test_adapter_copilot.py +0 -0
  243. {agentbundle-0.43.1 → agentbundle-0.44.2}/tests/build_pipeline/test_adapter_cursor.py +0 -0
  244. {agentbundle-0.43.1 → agentbundle-0.44.2}/tests/build_pipeline/test_adapter_gemini.py +0 -0
  245. {agentbundle-0.43.1 → agentbundle-0.44.2}/tests/build_pipeline/test_adapter_kiro.py +0 -0
  246. {agentbundle-0.43.1 → agentbundle-0.44.2}/tests/build_pipeline/test_adapter_kiro_alias.py +0 -0
  247. {agentbundle-0.43.1 → agentbundle-0.44.2}/tests/build_pipeline/test_adapter_kiro_cli.py +0 -0
  248. {agentbundle-0.43.1 → agentbundle-0.44.2}/tests/build_pipeline/test_adapter_kiro_ide.py +0 -0
  249. {agentbundle-0.43.1 → agentbundle-0.44.2}/tests/build_pipeline/test_adapter_root_bins_projection.py +0 -0
  250. {agentbundle-0.43.1 → agentbundle-0.44.2}/tests/build_pipeline/test_agent_boundary_metadata_projection.py +0 -0
  251. {agentbundle-0.43.1 → agentbundle-0.44.2}/tests/build_pipeline/test_agent_plugin_projection.py +0 -0
  252. {agentbundle-0.43.1 → agentbundle-0.44.2}/tests/build_pipeline/test_build_ships_seeds.py +0 -0
  253. {agentbundle-0.43.1 → agentbundle-0.44.2}/tests/build_pipeline/test_contract.py +0 -0
  254. {agentbundle-0.43.1 → agentbundle-0.44.2}/tests/build_pipeline/test_contract_scope.py +0 -0
  255. {agentbundle-0.43.1 → agentbundle-0.44.2}/tests/build_pipeline/test_contract_v07.py +0 -0
  256. {agentbundle-0.43.1 → agentbundle-0.44.2}/tests/build_pipeline/test_contract_v08.py +0 -0
  257. {agentbundle-0.43.1 → agentbundle-0.44.2}/tests/build_pipeline/test_direct_directory_cleanup.py +0 -0
  258. {agentbundle-0.43.1 → agentbundle-0.44.2}/tests/build_pipeline/test_distribution_route_contract.py +0 -0
  259. {agentbundle-0.43.1 → agentbundle-0.44.2}/tests/build_pipeline/test_distribution_route_golden.py +0 -0
  260. {agentbundle-0.43.1 → agentbundle-0.44.2}/tests/build_pipeline/test_distribution_route_resolution.py +0 -0
  261. {agentbundle-0.43.1 → agentbundle-0.44.2}/tests/build_pipeline/test_end_to_end_build.py +0 -0
  262. {agentbundle-0.43.1 → agentbundle-0.44.2}/tests/build_pipeline/test_hook_wiring_rules.py +0 -0
  263. {agentbundle-0.43.1 → agentbundle-0.44.2}/tests/build_pipeline/test_lint_packs.py +0 -0
  264. {agentbundle-0.43.1 → agentbundle-0.44.2}/tests/build_pipeline/test_load_pack_hook_wiring_safely.py +0 -0
  265. {agentbundle-0.43.1 → agentbundle-0.44.2}/tests/build_pipeline/test_pack_schema.py +0 -0
  266. {agentbundle-0.43.1 → agentbundle-0.44.2}/tests/build_pipeline/test_pack_schema_allowed_adapters.py +0 -0
  267. {agentbundle-0.43.1 → agentbundle-0.44.2}/tests/build_pipeline/test_pack_schema_install.py +0 -0
  268. {agentbundle-0.43.1 → agentbundle-0.44.2}/tests/build_pipeline/test_pipeline.py +0 -0
  269. {agentbundle-0.43.1 → agentbundle-0.44.2}/tests/build_pipeline/test_plugin_hooks.py +0 -0
  270. {agentbundle-0.43.1 → agentbundle-0.44.2}/tests/build_pipeline/test_plugin_manifest_schema.py +0 -0
  271. {agentbundle-0.43.1 → agentbundle-0.44.2}/tests/build_pipeline/test_plugin_publication_gates.py +0 -0
  272. {agentbundle-0.43.1 → agentbundle-0.44.2}/tests/build_pipeline/test_policy_registry_projection.py +0 -0
  273. {agentbundle-0.43.1 → agentbundle-0.44.2}/tests/build_pipeline/test_projectable_subset.py +0 -0
  274. {agentbundle-0.43.1 → agentbundle-0.44.2}/tests/build_pipeline/test_projection_io.py +0 -0
  275. {agentbundle-0.43.1 → agentbundle-0.44.2}/tests/build_pipeline/test_projections_merge_json.py +0 -0
  276. {agentbundle-0.43.1 → agentbundle-0.44.2}/tests/build_pipeline/test_route_lookup.py +0 -0
  277. {agentbundle-0.43.1 → agentbundle-0.44.2}/tests/build_pipeline/test_scope_rails.py +0 -0
  278. {agentbundle-0.43.1 → agentbundle-0.44.2}/tests/build_pipeline/test_security.py +0 -0
  279. {agentbundle-0.43.1 → agentbundle-0.44.2}/tests/build_pipeline/test_self_host_fixture_guard.py +0 -0
  280. {agentbundle-0.43.1 → agentbundle-0.44.2}/tests/build_pipeline/test_self_host_metadata_policy.py +0 -0
  281. {agentbundle-0.43.1 → agentbundle-0.44.2}/tests/build_pipeline/test_self_host_recipe_config.py +0 -0
  282. {agentbundle-0.43.1 → agentbundle-0.44.2}/tests/build_pipeline/test_sequential_implementer_dispatch_projection.py +0 -0
  283. {agentbundle-0.43.1 → agentbundle-0.44.2}/tests/build_pipeline/test_shared_libs_projection.py +0 -0
  284. {agentbundle-0.43.1 → agentbundle-0.44.2}/tests/build_pipeline/test_shared_prefix_contract.py +0 -0
  285. {agentbundle-0.43.1 → agentbundle-0.44.2}/tests/build_pipeline/test_user_libs_projection.py +0 -0
  286. {agentbundle-0.43.1 → agentbundle-0.44.2}/tests/build_pipeline/test_validate.py +0 -0
  287. {agentbundle-0.43.1 → agentbundle-0.44.2}/tests/build_pipeline/test_writers_emit_lf.py +0 -0
  288. {agentbundle-0.43.1 → agentbundle-0.44.2}/tests/conftest.py +0 -0
  289. {agentbundle-0.43.1 → agentbundle-0.44.2}/tests/contracts/test_agentbundle_show_schema.py +0 -0
  290. {agentbundle-0.43.1 → agentbundle-0.44.2}/tests/contracts/test_skill_schema.py +0 -0
  291. {agentbundle-0.43.1 → agentbundle-0.44.2}/tests/fixtures/adapt/.adapt-discovery.toml +0 -0
  292. {agentbundle-0.43.1 → agentbundle-0.44.2}/tests/fixtures/adapt/values.toml +0 -0
  293. {agentbundle-0.43.1 → agentbundle-0.44.2}/tests/fixtures/blank_catalogue/.claude-plugin/marketplace.json +0 -0
  294. {agentbundle-0.43.1 → agentbundle-0.44.2}/tests/fixtures/blank_catalogue/catalogue.toml +0 -0
  295. {agentbundle-0.43.1 → agentbundle-0.44.2}/tests/fixtures/blank_catalogue/packs/.gitkeep +0 -0
  296. {agentbundle-0.43.1 → agentbundle-0.44.2}/tests/fixtures/blank_catalogue/packs/_example/.apm/skills/example-skill/SKILL.md +0 -0
  297. {agentbundle-0.43.1 → agentbundle-0.44.2}/tests/fixtures/blank_catalogue/packs/_example/.claude-plugin/plugin.json +0 -0
  298. {agentbundle-0.43.1 → agentbundle-0.44.2}/tests/fixtures/blank_catalogue/packs/_example/README.md +0 -0
  299. {agentbundle-0.43.1 → agentbundle-0.44.2}/tests/fixtures/blank_catalogue/packs/_example/evals/eval_queries.json +0 -0
  300. {agentbundle-0.43.1 → agentbundle-0.44.2}/tests/fixtures/blank_catalogue/packs/_example/pack.toml +0 -0
  301. {agentbundle-0.43.1 → agentbundle-0.44.2}/tests/fixtures/blank_catalogue/profiles/.gitkeep +0 -0
  302. {agentbundle-0.43.1 → agentbundle-0.44.2}/tests/fixtures/blank_catalogue/profiles/_example/README.md +0 -0
  303. {agentbundle-0.43.1 → agentbundle-0.44.2}/tests/fixtures/blank_catalogue/profiles/_example/profile.toml +0 -0
  304. {agentbundle-0.43.1 → agentbundle-0.44.2}/tests/fixtures/brownfield/values.toml +0 -0
  305. {agentbundle-0.43.1 → agentbundle-0.44.2}/tests/fixtures/brownfield-adapt/AGENTS.md +0 -0
  306. {agentbundle-0.43.1 → agentbundle-0.44.2}/tests/fixtures/brownfield-adapt/AGENTS.upstream.md +0 -0
  307. {agentbundle-0.43.1 → agentbundle-0.44.2}/tests/fixtures/brownfield-adapt/DESIGN.md +0 -0
  308. {agentbundle-0.43.1 → agentbundle-0.44.2}/tests/fixtures/brownfield-adapt/EXPECTED_TREE.md +0 -0
  309. {agentbundle-0.43.1 → agentbundle-0.44.2}/tests/fixtures/brownfield-adapt/docs/CHARTER.md +0 -0
  310. {agentbundle-0.43.1 → agentbundle-0.44.2}/tests/fixtures/brownfield-adapt/docs/guides/how-to/index.md +0 -0
  311. {agentbundle-0.43.1 → agentbundle-0.44.2}/tests/fixtures/brownfield-adapt/docs/howto/getting-started.md +0 -0
  312. {agentbundle-0.43.1 → agentbundle-0.44.2}/tests/fixtures/brownfield-adapt-expected/AGENTS.md +0 -0
  313. {agentbundle-0.43.1 → agentbundle-0.44.2}/tests/fixtures/brownfield-adapt-expected/docs/CHARTER.md +0 -0
  314. {agentbundle-0.43.1 → agentbundle-0.44.2}/tests/fixtures/brownfield-adapt-user-home/.agentbundle/.adapt-discovery.toml +0 -0
  315. {agentbundle-0.43.1 → agentbundle-0.44.2}/tests/fixtures/brownfield-adapt-user-home/.agentbundle/state.toml +0 -0
  316. {agentbundle-0.43.1 → agentbundle-0.44.2}/tests/fixtures/catalogue_wave4/catalogue.toml +0 -0
  317. {agentbundle-0.43.1 → agentbundle-0.44.2}/tests/fixtures/catalogue_wave4/packs/pack-with-journey/.apm/hook-wiring/example.json +0 -0
  318. {agentbundle-0.43.1 → agentbundle-0.44.2}/tests/fixtures/catalogue_wave4/packs/pack-with-journey/.apm/skills/example-skill/SKILL.md +0 -0
  319. {agentbundle-0.43.1 → agentbundle-0.44.2}/tests/fixtures/catalogue_wave4/packs/pack-with-journey/.apm/skills/example-skill/scripts/run.py +0 -0
  320. {agentbundle-0.43.1 → agentbundle-0.44.2}/tests/fixtures/catalogue_wave4/packs/pack-with-journey/JOURNEY.md +0 -0
  321. {agentbundle-0.43.1 → agentbundle-0.44.2}/tests/fixtures/catalogue_wave4/packs/pack-with-journey/pack.toml +0 -0
  322. {agentbundle-0.43.1 → agentbundle-0.44.2}/tests/fixtures/catalogue_wave4/packs/pack-without-journey/pack.toml +0 -0
  323. {agentbundle-0.43.1 → agentbundle-0.44.2}/tests/fixtures/catalogue_wave4/profiles/test-profile.toml +0 -0
  324. {agentbundle-0.43.1 → agentbundle-0.44.2}/tests/fixtures/creds/skills/argv-flag/SKILL.md +0 -0
  325. {agentbundle-0.43.1 → agentbundle-0.44.2}/tests/fixtures/creds/skills/argv-flag/scripts/cli.py +0 -0
  326. {agentbundle-0.43.1 → agentbundle-0.44.2}/tests/fixtures/creds/skills/argv-flag-derived/SKILL.md +0 -0
  327. {agentbundle-0.43.1 → agentbundle-0.44.2}/tests/fixtures/creds/skills/argv-flag-derived/scripts/cli.py +0 -0
  328. {agentbundle-0.43.1 → agentbundle-0.44.2}/tests/fixtures/creds/skills/argv-flag-normalised/SKILL.md +0 -0
  329. {agentbundle-0.43.1 → agentbundle-0.44.2}/tests/fixtures/creds/skills/argv-flag-normalised/scripts/cli.py +0 -0
  330. {agentbundle-0.43.1 → agentbundle-0.44.2}/tests/fixtures/creds/skills/conforming/SKILL.md +0 -0
  331. {agentbundle-0.43.1 → agentbundle-0.44.2}/tests/fixtures/creds/skills/conforming/scripts/cli.py +0 -0
  332. {agentbundle-0.43.1 → agentbundle-0.44.2}/tests/fixtures/creds/skills/dotfile-grep/SKILL.md +0 -0
  333. {agentbundle-0.43.1 → agentbundle-0.44.2}/tests/fixtures/creds/skills/dotfile-grep/scripts/leak.py +0 -0
  334. {agentbundle-0.43.1 → agentbundle-0.44.2}/tests/fixtures/creds/skills/dotfile-with-optout/SKILL.md +0 -0
  335. {agentbundle-0.43.1 → agentbundle-0.44.2}/tests/fixtures/creds/skills/dotfile-with-optout/scripts/legit.py +0 -0
  336. {agentbundle-0.43.1 → agentbundle-0.44.2}/tests/fixtures/creds/skills/mcp-server-headers/SKILL.md +0 -0
  337. {agentbundle-0.43.1 → agentbundle-0.44.2}/tests/fixtures/creds/skills/mcp-server-headers/scripts/cli.py +0 -0
  338. {agentbundle-0.43.1 → agentbundle-0.44.2}/tests/fixtures/creds/skills/missing-dont-block/SKILL.md +0 -0
  339. {agentbundle-0.43.1 → agentbundle-0.44.2}/tests/fixtures/direct/ac35_corpus_verdicts.json +0 -0
  340. {agentbundle-0.43.1 → agentbundle-0.44.2}/tests/fixtures/direct/golden_state_0_5.toml +0 -0
  341. {agentbundle-0.43.1 → agentbundle-0.44.2}/tests/fixtures/distribution-routes/golden.json +0 -0
  342. {agentbundle-0.43.1 → agentbundle-0.44.2}/tests/fixtures/distribution-routes/witness-packs/portable/.apm/skills/example/SKILL.md +0 -0
  343. {agentbundle-0.43.1 → agentbundle-0.44.2}/tests/fixtures/distribution-routes/witness-packs/portable/pack.toml +0 -0
  344. {agentbundle-0.43.1 → agentbundle-0.44.2}/tests/fixtures/external_catalogue/.claude-plugin/marketplace.json +0 -0
  345. {agentbundle-0.43.1 → agentbundle-0.44.2}/tests/fixtures/external_catalogue/AGENTS.md +0 -0
  346. {agentbundle-0.43.1 → agentbundle-0.44.2}/tests/fixtures/external_catalogue/LICENSE-APACHE +0 -0
  347. {agentbundle-0.43.1 → agentbundle-0.44.2}/tests/fixtures/external_catalogue/LICENSE-MIT +0 -0
  348. {agentbundle-0.43.1 → agentbundle-0.44.2}/tests/fixtures/external_catalogue/agentbundle/_data/install-defaults.toml +0 -0
  349. {agentbundle-0.43.1 → agentbundle-0.44.2}/tests/fixtures/external_catalogue/catalogue.toml +0 -0
  350. {agentbundle-0.43.1 → agentbundle-0.44.2}/tests/fixtures/external_catalogue/packs/alpha/.apm/skills/example/SKILL.md +0 -0
  351. {agentbundle-0.43.1 → agentbundle-0.44.2}/tests/fixtures/external_catalogue/packs/alpha/.claude-plugin/plugin.json +0 -0
  352. {agentbundle-0.43.1 → agentbundle-0.44.2}/tests/fixtures/external_catalogue/packs/alpha/pack.toml +0 -0
  353. {agentbundle-0.43.1 → agentbundle-0.44.2}/tests/fixtures/external_catalogue/packs/alpha/seeds/AGENTS.md +0 -0
  354. {agentbundle-0.43.1 → agentbundle-0.44.2}/tests/fixtures/external_catalogue/packs/beta/.claude-plugin/plugin.json +0 -0
  355. {agentbundle-0.43.1 → agentbundle-0.44.2}/tests/fixtures/external_catalogue/packs/beta/pack.toml +0 -0
  356. {agentbundle-0.43.1 → agentbundle-0.44.2}/tests/fixtures/external_catalogue/profiles/example.toml +0 -0
  357. {agentbundle-0.43.1 → agentbundle-0.44.2}/tests/fixtures/install/catalogue/packs/alpha/.apm/agents/helper.md +0 -0
  358. {agentbundle-0.43.1 → agentbundle-0.44.2}/tests/fixtures/install/catalogue/packs/alpha/.apm/commands/cmd.md +0 -0
  359. {agentbundle-0.43.1 → agentbundle-0.44.2}/tests/fixtures/install/catalogue/packs/alpha/.apm/hook-wiring/run.toml +0 -0
  360. {agentbundle-0.43.1 → agentbundle-0.44.2}/tests/fixtures/install/catalogue/packs/alpha/.apm/hooks/run.sh +0 -0
  361. {agentbundle-0.43.1 → agentbundle-0.44.2}/tests/fixtures/install/catalogue/packs/alpha/.apm/skills/example/SKILL.md +0 -0
  362. {agentbundle-0.43.1 → agentbundle-0.44.2}/tests/fixtures/install/catalogue/packs/alpha/.claude-plugin/plugin.json +0 -0
  363. {agentbundle-0.43.1 → agentbundle-0.44.2}/tests/fixtures/install/catalogue/packs/alpha/pack.toml +0 -0
  364. {agentbundle-0.43.1 → agentbundle-0.44.2}/tests/fixtures/kiro_ide_hook/ask_agent_basic.kiro.hook +0 -0
  365. {agentbundle-0.43.1 → agentbundle-0.44.2}/tests/fixtures/kiro_ide_hook/run_command_with_placeholder.kiro.hook +0 -0
  366. {agentbundle-0.43.1 → agentbundle-0.44.2}/tests/fixtures/lint_packs/clean/pack.toml +0 -0
  367. {agentbundle-0.43.1 → agentbundle-0.44.2}/tests/fixtures/lint_packs/clean/seeds/README.md +0 -0
  368. {agentbundle-0.43.1 → agentbundle-0.44.2}/tests/fixtures/list-installed/golden_120col.txt +0 -0
  369. {agentbundle-0.43.1 → agentbundle-0.44.2}/tests/fixtures/list-installed/golden_80col.txt +0 -0
  370. {agentbundle-0.43.1 → agentbundle-0.44.2}/tests/fixtures/list_packs/catalogue/packs/alpha/pack.toml +0 -0
  371. {agentbundle-0.43.1 → agentbundle-0.44.2}/tests/fixtures/list_packs/catalogue/packs/beta/pack.toml +0 -0
  372. {agentbundle-0.43.1 → agentbundle-0.44.2}/tests/fixtures/local_scope/catalogue/packs/local-test-pack/.apm/skills/local-test/SKILL.md +0 -0
  373. {agentbundle-0.43.1 → agentbundle-0.44.2}/tests/fixtures/local_scope/catalogue/packs/local-test-pack/pack.toml +0 -0
  374. {agentbundle-0.43.1 → agentbundle-0.44.2}/tests/fixtures/packs/cc-user-hooks/.apm/hook-wiring/on-prompt.toml +0 -0
  375. {agentbundle-0.43.1 → agentbundle-0.44.2}/tests/fixtures/packs/cc-user-hooks/.apm/hooks/on-prompt.sh +0 -0
  376. {agentbundle-0.43.1 → agentbundle-0.44.2}/tests/fixtures/packs/cc-user-hooks/pack.toml +0 -0
  377. {agentbundle-0.43.1 → agentbundle-0.44.2}/tests/fixtures/packs/kiro-repo-hooks/.apm/agents/reviewer.md +0 -0
  378. {agentbundle-0.43.1 → agentbundle-0.44.2}/tests/fixtures/packs/kiro-repo-hooks/.apm/hook-wiring/on-spawn.toml +0 -0
  379. {agentbundle-0.43.1 → agentbundle-0.44.2}/tests/fixtures/packs/kiro-repo-hooks/.apm/hooks/on-spawn.sh +0 -0
  380. {agentbundle-0.43.1 → agentbundle-0.44.2}/tests/fixtures/packs/kiro-repo-hooks/pack.toml +0 -0
  381. {agentbundle-0.43.1 → agentbundle-0.44.2}/tests/fixtures/packs/kiro-user-hooks/.apm/agents/reviewer.md +0 -0
  382. {agentbundle-0.43.1 → agentbundle-0.44.2}/tests/fixtures/packs/kiro-user-hooks/.apm/hook-wiring/on-spawn.toml +0 -0
  383. {agentbundle-0.43.1 → agentbundle-0.44.2}/tests/fixtures/packs/kiro-user-hooks/.apm/hooks/on-spawn.sh +0 -0
  384. {agentbundle-0.43.1 → agentbundle-0.44.2}/tests/fixtures/packs/kiro-user-hooks/pack.toml +0 -0
  385. {agentbundle-0.43.1 → agentbundle-0.44.2}/tests/fixtures/packs/malformed-kiro-missing-attach/.apm/agents/reviewer.md +0 -0
  386. {agentbundle-0.43.1 → agentbundle-0.44.2}/tests/fixtures/packs/malformed-kiro-missing-attach/.apm/hook-wiring/on-spawn.toml +0 -0
  387. {agentbundle-0.43.1 → agentbundle-0.44.2}/tests/fixtures/packs/malformed-kiro-missing-attach/.apm/hooks/on-spawn.sh +0 -0
  388. {agentbundle-0.43.1 → agentbundle-0.44.2}/tests/fixtures/packs/malformed-kiro-missing-attach/pack.toml +0 -0
  389. {agentbundle-0.43.1 → agentbundle-0.44.2}/tests/fixtures/packs/malformed-kiro-pascal-events/.apm/agents/reviewer.md +0 -0
  390. {agentbundle-0.43.1 → agentbundle-0.44.2}/tests/fixtures/packs/malformed-kiro-pascal-events/.apm/hook-wiring/on-spawn.toml +0 -0
  391. {agentbundle-0.43.1 → agentbundle-0.44.2}/tests/fixtures/packs/malformed-kiro-pascal-events/.apm/hooks/on-spawn.sh +0 -0
  392. {agentbundle-0.43.1 → agentbundle-0.44.2}/tests/fixtures/packs/malformed-kiro-pascal-events/pack.toml +0 -0
  393. {agentbundle-0.43.1 → agentbundle-0.44.2}/tests/fixtures/packs/malformed-kiro-unknown-agent/.apm/agents/reviewer.md +0 -0
  394. {agentbundle-0.43.1 → agentbundle-0.44.2}/tests/fixtures/packs/malformed-kiro-unknown-agent/.apm/hook-wiring/on-spawn.toml +0 -0
  395. {agentbundle-0.43.1 → agentbundle-0.44.2}/tests/fixtures/packs/malformed-kiro-unknown-agent/.apm/hooks/on-spawn.sh +0 -0
  396. {agentbundle-0.43.1 → agentbundle-0.44.2}/tests/fixtures/packs/malformed-kiro-unknown-agent/pack.toml +0 -0
  397. {agentbundle-0.43.1 → agentbundle-0.44.2}/tests/fixtures/scaffold/test-pack/seeds/AGENTS.md +0 -0
  398. {agentbundle-0.43.1 → agentbundle-0.44.2}/tests/fixtures/scaffold/test-pack/seeds/_agents-footer.md +0 -0
  399. {agentbundle-0.43.1 → agentbundle-0.44.2}/tests/fixtures/scaffold/test-pack/seeds/docs/CHARTER.md +0 -0
  400. {agentbundle-0.43.1 → agentbundle-0.44.2}/tests/fixtures/show_contract/agentbundle-show.schema.json +0 -0
  401. {agentbundle-0.43.1 → agentbundle-0.44.2}/tests/fixtures/show_contract/catalogue.json +0 -0
  402. {agentbundle-0.43.1 → agentbundle-0.44.2}/tests/fixtures/show_contract/installed_state.json +0 -0
  403. {agentbundle-0.43.1 → agentbundle-0.44.2}/tests/fixtures/upgrade/catalogue_v1/packs/core/.apm/agents/reviewer.md +0 -0
  404. {agentbundle-0.43.1 → agentbundle-0.44.2}/tests/fixtures/upgrade/catalogue_v1/packs/core/.apm/commands/deploy.md +0 -0
  405. {agentbundle-0.43.1 → agentbundle-0.44.2}/tests/fixtures/upgrade/catalogue_v1/packs/core/.apm/hook-wiring/pre-commit.toml +0 -0
  406. {agentbundle-0.43.1 → agentbundle-0.44.2}/tests/fixtures/upgrade/catalogue_v1/packs/core/.apm/hooks/lint.py +0 -0
  407. {agentbundle-0.43.1 → agentbundle-0.44.2}/tests/fixtures/upgrade/catalogue_v1/packs/core/.apm/hooks/pre-commit.sh +0 -0
  408. {agentbundle-0.43.1 → agentbundle-0.44.2}/tests/fixtures/upgrade/catalogue_v1/packs/core/.apm/skills/work-loop/SKILL.md +0 -0
  409. {agentbundle-0.43.1 → agentbundle-0.44.2}/tests/fixtures/upgrade/catalogue_v1/packs/core/.claude-plugin/plugin.json +0 -0
  410. {agentbundle-0.43.1 → agentbundle-0.44.2}/tests/fixtures/upgrade/catalogue_v1/packs/core/pack.toml +0 -0
  411. {agentbundle-0.43.1 → agentbundle-0.44.2}/tests/fixtures/upgrade/catalogue_v2/packs/core/.apm/agents/reviewer.md +0 -0
  412. {agentbundle-0.43.1 → agentbundle-0.44.2}/tests/fixtures/upgrade/catalogue_v2/packs/core/.apm/commands/deploy.md +0 -0
  413. {agentbundle-0.43.1 → agentbundle-0.44.2}/tests/fixtures/upgrade/catalogue_v2/packs/core/.apm/hook-wiring/pre-commit.toml +0 -0
  414. {agentbundle-0.43.1 → agentbundle-0.44.2}/tests/fixtures/upgrade/catalogue_v2/packs/core/.apm/hooks/lint.py +0 -0
  415. {agentbundle-0.43.1 → agentbundle-0.44.2}/tests/fixtures/upgrade/catalogue_v2/packs/core/.apm/hooks/pre-commit.sh +0 -0
  416. {agentbundle-0.43.1 → agentbundle-0.44.2}/tests/fixtures/upgrade/catalogue_v2/packs/core/.apm/skills/work-loop/SKILL.md +0 -0
  417. {agentbundle-0.43.1 → agentbundle-0.44.2}/tests/fixtures/upgrade/catalogue_v2/packs/core/.claude-plugin/plugin.json +0 -0
  418. {agentbundle-0.43.1 → agentbundle-0.44.2}/tests/fixtures/upgrade/catalogue_v2/packs/core/pack.toml +0 -0
  419. {agentbundle-0.43.1 → agentbundle-0.44.2}/tests/fixtures/upgrade/catalogue_v3/packs/core/.apm/agents/reviewer.md +0 -0
  420. {agentbundle-0.43.1 → agentbundle-0.44.2}/tests/fixtures/upgrade/catalogue_v3/packs/core/.apm/commands/deploy.md +0 -0
  421. {agentbundle-0.43.1 → agentbundle-0.44.2}/tests/fixtures/upgrade/catalogue_v3/packs/core/.apm/hook-wiring/pre-commit.toml +0 -0
  422. {agentbundle-0.43.1 → agentbundle-0.44.2}/tests/fixtures/upgrade/catalogue_v3/packs/core/.apm/hooks/lint.py +0 -0
  423. {agentbundle-0.43.1 → agentbundle-0.44.2}/tests/fixtures/upgrade/catalogue_v3/packs/core/.apm/hooks/pre-commit.sh +0 -0
  424. {agentbundle-0.43.1 → agentbundle-0.44.2}/tests/fixtures/upgrade/catalogue_v3/packs/core/.apm/skills/work-loop/SKILL.md +0 -0
  425. {agentbundle-0.43.1 → agentbundle-0.44.2}/tests/fixtures/upgrade/catalogue_v3/packs/core/.claude-plugin/plugin.json +0 -0
  426. {agentbundle-0.43.1 → agentbundle-0.44.2}/tests/fixtures/upgrade/catalogue_v3/packs/core/pack.toml +0 -0
  427. {agentbundle-0.43.1 → agentbundle-0.44.2}/tests/fixtures/validate/bad_recipe_pack/pack.toml +0 -0
  428. {agentbundle-0.43.1 → agentbundle-0.44.2}/tests/fixtures/validate/malformed_pack/pack.toml +0 -0
  429. {agentbundle-0.43.1 → agentbundle-0.44.2}/tests/fixtures/validate/valid_pack/pack.toml +0 -0
  430. {agentbundle-0.43.1 → agentbundle-0.44.2}/tests/fixtures/validate/version_mismatch_pack/pack.toml +0 -0
  431. {agentbundle-0.43.1 → agentbundle-0.44.2}/tests/integration/__init__.py +0 -0
  432. {agentbundle-0.43.1 → agentbundle-0.44.2}/tests/integration/test_adapt_cmd.py +0 -0
  433. {agentbundle-0.43.1 → agentbundle-0.44.2}/tests/integration/test_adapt_dual_scope.py +0 -0
  434. {agentbundle-0.43.1 → agentbundle-0.44.2}/tests/integration/test_adapt_preflight_detection.py +0 -0
  435. {agentbundle-0.43.1 → agentbundle-0.44.2}/tests/integration/test_adapt_schema_migration.py +0 -0
  436. {agentbundle-0.43.1 → agentbundle-0.44.2}/tests/integration/test_apm_install_route.py +0 -0
  437. {agentbundle-0.43.1 → agentbundle-0.44.2}/tests/integration/test_blank_catalogue.py +0 -0
  438. {agentbundle-0.43.1 → agentbundle-0.44.2}/tests/integration/test_brownfield_adapt_end_to_end.py +0 -0
  439. {agentbundle-0.43.1 → agentbundle-0.44.2}/tests/integration/test_brownfield_round_trip.py +0 -0
  440. {agentbundle-0.43.1 → agentbundle-0.44.2}/tests/integration/test_brownfield_user_home_fixture.py +0 -0
  441. {agentbundle-0.43.1 → agentbundle-0.44.2}/tests/integration/test_build_check_drift_gates.py +0 -0
  442. {agentbundle-0.43.1 → agentbundle-0.44.2}/tests/integration/test_build_derivation_apm.py +0 -0
  443. {agentbundle-0.43.1 → agentbundle-0.44.2}/tests/integration/test_build_derivation_claude_plugins.py +0 -0
  444. {agentbundle-0.43.1 → agentbundle-0.44.2}/tests/integration/test_catalogue_init.py +0 -0
  445. {agentbundle-0.43.1 → agentbundle-0.44.2}/tests/integration/test_catalogue_verify_adapter_compat.py +0 -0
  446. {agentbundle-0.43.1 → agentbundle-0.44.2}/tests/integration/test_catalogue_verify_dependencies.py +0 -0
  447. {agentbundle-0.43.1 → agentbundle-0.44.2}/tests/integration/test_catalogue_verify_external_portability.py +0 -0
  448. {agentbundle-0.43.1 → agentbundle-0.44.2}/tests/integration/test_catalogue_verify_fixture_checks.py +0 -0
  449. {agentbundle-0.43.1 → agentbundle-0.44.2}/tests/integration/test_catalogue_verify_marketplace.py +0 -0
  450. {agentbundle-0.43.1 → agentbundle-0.44.2}/tests/integration/test_catalogue_verify_output_drift.py +0 -0
  451. {agentbundle-0.43.1 → agentbundle-0.44.2}/tests/integration/test_catalogue_verify_package_preflight.py +0 -0
  452. {agentbundle-0.43.1 → agentbundle-0.44.2}/tests/integration/test_catalogue_verify_plugin_path.py +0 -0
  453. {agentbundle-0.43.1 → agentbundle-0.44.2}/tests/integration/test_catalogue_verify_profile_schema.py +0 -0
  454. {agentbundle-0.43.1 → agentbundle-0.44.2}/tests/integration/test_catalogue_verify_step1.py +0 -0
  455. {agentbundle-0.43.1 → agentbundle-0.44.2}/tests/integration/test_catalogue_wave4_index_generator.py +0 -0
  456. {agentbundle-0.43.1 → agentbundle-0.44.2}/tests/integration/test_catalogue_wave4_integration.py +0 -0
  457. {agentbundle-0.43.1 → agentbundle-0.44.2}/tests/integration/test_catalogue_wave4_journey_validator.py +0 -0
  458. {agentbundle-0.43.1 → agentbundle-0.44.2}/tests/integration/test_catalogue_wave4_schema.py +0 -0
  459. {agentbundle-0.43.1 → agentbundle-0.44.2}/tests/integration/test_cc_user_hooks_fixture.py +0 -0
  460. {agentbundle-0.43.1 → agentbundle-0.44.2}/tests/integration/test_claude_plugins_install_route.py +0 -0
  461. {agentbundle-0.43.1 → agentbundle-0.44.2}/tests/integration/test_config_cascade.py +0 -0
  462. {agentbundle-0.43.1 → agentbundle-0.44.2}/tests/integration/test_credential_brokers_pack_install.py +0 -0
  463. {agentbundle-0.43.1 → agentbundle-0.44.2}/tests/integration/test_credentials_wheel.py +0 -0
  464. {agentbundle-0.43.1 → agentbundle-0.44.2}/tests/integration/test_direct_install.py +0 -0
  465. {agentbundle-0.43.1 → agentbundle-0.44.2}/tests/integration/test_discovery_schema_cross_consumer.py +0 -0
  466. {agentbundle-0.43.1 → agentbundle-0.44.2}/tests/integration/test_editable_source_detection.py +0 -0
  467. {agentbundle-0.43.1 → agentbundle-0.44.2}/tests/integration/test_fixtures_validate.py +0 -0
  468. {agentbundle-0.43.1 → agentbundle-0.44.2}/tests/integration/test_hook_wiring_ingress.py +0 -0
  469. {agentbundle-0.43.1 → agentbundle-0.44.2}/tests/integration/test_install_adapt_chain.py +0 -0
  470. {agentbundle-0.43.1 → agentbundle-0.44.2}/tests/integration/test_install_cmd.py +0 -0
  471. {agentbundle-0.43.1 → agentbundle-0.44.2}/tests/integration/test_install_converters_user_scope.py +0 -0
  472. {agentbundle-0.43.1 → agentbundle-0.44.2}/tests/integration/test_install_copilot_full_parity.py +0 -0
  473. {agentbundle-0.43.1 → agentbundle-0.44.2}/tests/integration/test_install_core_smoke.py +0 -0
  474. {agentbundle-0.43.1 → agentbundle-0.44.2}/tests/integration/test_install_default_source.py +0 -0
  475. {agentbundle-0.43.1 → agentbundle-0.44.2}/tests/integration/test_install_dependencies_gate.py +0 -0
  476. {agentbundle-0.43.1 → agentbundle-0.44.2}/tests/integration/test_install_dropped_primitives_warning.py +0 -0
  477. {agentbundle-0.43.1 → agentbundle-0.44.2}/tests/integration/test_install_dual_scope.py +0 -0
  478. {agentbundle-0.43.1 → agentbundle-0.44.2}/tests/integration/test_install_orphan_reshape.py +0 -0
  479. {agentbundle-0.43.1 → agentbundle-0.44.2}/tests/integration/test_install_pack_metadata_shape.py +0 -0
  480. {agentbundle-0.43.1 → agentbundle-0.44.2}/tests/integration/test_install_profile.py +0 -0
  481. {agentbundle-0.43.1 → agentbundle-0.44.2}/tests/integration/test_install_profile_live.py +0 -0
  482. {agentbundle-0.43.1 → agentbundle-0.44.2}/tests/integration/test_install_repo_scope_per_adapter.py +0 -0
  483. {agentbundle-0.43.1 → agentbundle-0.44.2}/tests/integration/test_install_research_user_scope.py +0 -0
  484. {agentbundle-0.43.1 → agentbundle-0.44.2}/tests/integration/test_install_seed_delivery.py +0 -0
  485. {agentbundle-0.43.1 → agentbundle-0.44.2}/tests/integration/test_install_session_start_wiring.py +0 -0
  486. {agentbundle-0.43.1 → agentbundle-0.44.2}/tests/integration/test_install_upgrade_offer.py +0 -0
  487. {agentbundle-0.43.1 → agentbundle-0.44.2}/tests/integration/test_install_user_hooks.py +0 -0
  488. {agentbundle-0.43.1 → agentbundle-0.44.2}/tests/integration/test_install_user_scope_allowed_adapters.py +0 -0
  489. {agentbundle-0.43.1 → agentbundle-0.44.2}/tests/integration/test_kiro_ide_hook_e2e.py +0 -0
  490. {agentbundle-0.43.1 → agentbundle-0.44.2}/tests/integration/test_kiro_repo_hooks_fixture.py +0 -0
  491. {agentbundle-0.43.1 → agentbundle-0.44.2}/tests/integration/test_kiro_user_hooks_fixture.py +0 -0
  492. {agentbundle-0.43.1 → agentbundle-0.44.2}/tests/integration/test_list_packs_cmd.py +0 -0
  493. {agentbundle-0.43.1 → agentbundle-0.44.2}/tests/integration/test_local_scope_install.py +0 -0
  494. {agentbundle-0.43.1 → agentbundle-0.44.2}/tests/integration/test_marketplace_entry_validation.py +0 -0
  495. {agentbundle-0.43.1 → agentbundle-0.44.2}/tests/integration/test_marketplace_manifest_regression.py +0 -0
  496. {agentbundle-0.43.1 → agentbundle-0.44.2}/tests/integration/test_multi_pack_install.py +0 -0
  497. {agentbundle-0.43.1 → agentbundle-0.44.2}/tests/integration/test_orphan_cleanup_respects_foreign_state.py +0 -0
  498. {agentbundle-0.43.1 → agentbundle-0.44.2}/tests/integration/test_plugin_route_membership.py +0 -0
  499. {agentbundle-0.43.1 → agentbundle-0.44.2}/tests/integration/test_recommends_cross_scope.py +0 -0
  500. {agentbundle-0.43.1 → agentbundle-0.44.2}/tests/integration/test_reconcile.py +0 -0
  501. {agentbundle-0.43.1 → agentbundle-0.44.2}/tests/integration/test_reserved_path_filter.py +0 -0
  502. {agentbundle-0.43.1 → agentbundle-0.44.2}/tests/integration/test_scaffold_projection.py +0 -0
  503. {agentbundle-0.43.1 → agentbundle-0.44.2}/tests/integration/test_self_host_schema_migration.py +0 -0
  504. {agentbundle-0.43.1 → agentbundle-0.44.2}/tests/integration/test_self_host_sweep_respects_state.py +0 -0
  505. {agentbundle-0.43.1 → agentbundle-0.44.2}/tests/integration/test_shared_prefix_coexistence.py +0 -0
  506. {agentbundle-0.43.1 → agentbundle-0.44.2}/tests/integration/test_show_cmd.py +0 -0
  507. {agentbundle-0.43.1 → agentbundle-0.44.2}/tests/integration/test_tier_invariants.py +0 -0
  508. {agentbundle-0.43.1 → agentbundle-0.44.2}/tests/integration/test_trust_fallback_tls.py +0 -0
  509. {agentbundle-0.43.1 → agentbundle-0.44.2}/tests/integration/test_uninstall_cmd.py +0 -0
  510. {agentbundle-0.43.1 → agentbundle-0.44.2}/tests/integration/test_uninstall_user_hooks.py +0 -0
  511. {agentbundle-0.43.1 → agentbundle-0.44.2}/tests/integration/test_upgrade_attach_to_agent.py +0 -0
  512. {agentbundle-0.43.1 → agentbundle-0.44.2}/tests/integration/test_upgrade_cmd.py +0 -0
  513. {agentbundle-0.43.1 → agentbundle-0.44.2}/tests/integration/test_upgrade_user_hooks.py +0 -0
  514. {agentbundle-0.43.1 → agentbundle-0.44.2}/tests/integration/test_version_gate_matrix.py +0 -0
  515. {agentbundle-0.43.1 → agentbundle-0.44.2}/tests/integration/test_workspace_mcp_git_fsm.py +0 -0
  516. {agentbundle-0.43.1 → agentbundle-0.44.2}/tests/integration/test_zipapp.py +0 -0
  517. {agentbundle-0.43.1 → agentbundle-0.44.2}/tests/performance/__init__.py +0 -0
  518. {agentbundle-0.43.1 → agentbundle-0.44.2}/tests/performance/test_direct_family2_budget_cost.py +0 -0
  519. {agentbundle-0.43.1 → agentbundle-0.44.2}/tests/test_adapter_permissions_projection.py +0 -0
  520. {agentbundle-0.43.1 → agentbundle-0.44.2}/tests/test_workspace_mcp_elicit.py +0 -0
  521. {agentbundle-0.43.1 → agentbundle-0.44.2}/tests/test_workspace_mcp_event_bridge.py +0 -0
  522. {agentbundle-0.43.1 → agentbundle-0.44.2}/tests/test_workspace_mcp_git.py +0 -0
  523. {agentbundle-0.43.1 → agentbundle-0.44.2}/tests/test_workspace_mcp_lifecycle.py +0 -0
  524. {agentbundle-0.43.1 → agentbundle-0.44.2}/tests/test_workspace_mcp_stdin.py +0 -0
  525. {agentbundle-0.43.1 → agentbundle-0.44.2}/tests/test_workspace_mcp_tools.py +0 -0
  526. {agentbundle-0.43.1 → agentbundle-0.44.2}/tests/unit/__init__.py +0 -0
  527. {agentbundle-0.43.1 → agentbundle-0.44.2}/tests/unit/test_adapt_discovery_schema.py +0 -0
  528. {agentbundle-0.43.1 → agentbundle-0.44.2}/tests/unit/test_adapter_symlink_policy.py +0 -0
  529. {agentbundle-0.43.1 → agentbundle-0.44.2}/tests/unit/test_architect_readme_install_command.py +0 -0
  530. {agentbundle-0.43.1 → agentbundle-0.44.2}/tests/unit/test_catalogue_ci_contract.py +0 -0
  531. {agentbundle-0.43.1 → agentbundle-0.44.2}/tests/unit/test_catalogue_curation_deps.py +0 -0
  532. {agentbundle-0.43.1 → agentbundle-0.44.2}/tests/unit/test_catalogue_init_cli_self_hosted.py +0 -0
  533. {agentbundle-0.43.1 → agentbundle-0.44.2}/tests/unit/test_catalogue_pack_defaults.py +0 -0
  534. {agentbundle-0.43.1 → agentbundle-0.44.2}/tests/unit/test_catalogue_self_hosted_export_removal.py +0 -0
  535. {agentbundle-0.43.1 → agentbundle-0.44.2}/tests/unit/test_catalogue_skill_spec_lint.py +0 -0
  536. {agentbundle-0.43.1 → agentbundle-0.44.2}/tests/unit/test_catalogue_tooling_archive.py +0 -0
  537. {agentbundle-0.43.1 → agentbundle-0.44.2}/tests/unit/test_catalogue_tooling_build.py +0 -0
  538. {agentbundle-0.43.1 → agentbundle-0.44.2}/tests/unit/test_catalogue_tooling_defaults.py +0 -0
  539. {agentbundle-0.43.1 → agentbundle-0.44.2}/tests/unit/test_catalogue_tooling_foundation.py +0 -0
  540. {agentbundle-0.43.1 → agentbundle-0.44.2}/tests/unit/test_catalogue_tooling_identity.py +0 -0
  541. {agentbundle-0.43.1 → agentbundle-0.44.2}/tests/unit/test_catalogue_tooling_init.py +0 -0
  542. {agentbundle-0.43.1 → agentbundle-0.44.2}/tests/unit/test_catalogue_tooling_lint.py +0 -0
  543. {agentbundle-0.43.1 → agentbundle-0.44.2}/tests/unit/test_catalogue_tooling_package.py +0 -0
  544. {agentbundle-0.43.1 → agentbundle-0.44.2}/tests/unit/test_catalogue_tooling_self_host.py +0 -0
  545. {agentbundle-0.43.1 → agentbundle-0.44.2}/tests/unit/test_catalogue_tooling_source_package.py +0 -0
  546. {agentbundle-0.43.1 → agentbundle-0.44.2}/tests/unit/test_catalogue_tooling_verify.py +0 -0
  547. {agentbundle-0.43.1 → agentbundle-0.44.2}/tests/unit/test_catalogue_trust_fallback.py +0 -0
  548. {agentbundle-0.43.1 → agentbundle-0.44.2}/tests/unit/test_catalogue_wave2_schema.py +0 -0
  549. {agentbundle-0.43.1 → agentbundle-0.44.2}/tests/unit/test_catalogue_wave2_validation.py +0 -0
  550. {agentbundle-0.43.1 → agentbundle-0.44.2}/tests/unit/test_catalogue_wave3_contracts_cli.py +0 -0
  551. {agentbundle-0.43.1 → agentbundle-0.44.2}/tests/unit/test_catalogue_wave3_contracts_inspector.py +0 -0
  552. {agentbundle-0.43.1 → agentbundle-0.44.2}/tests/unit/test_catalogue_wave3_init_nextsteps.py +0 -0
  553. {agentbundle-0.43.1 → agentbundle-0.44.2}/tests/unit/test_catalogue_wave3_offline_navigation.py +0 -0
  554. {agentbundle-0.43.1 → agentbundle-0.44.2}/tests/unit/test_cli_catalogue_optional.py +0 -0
  555. {agentbundle-0.43.1 → agentbundle-0.44.2}/tests/unit/test_cli_help_lists_config.py +0 -0
  556. {agentbundle-0.43.1 → agentbundle-0.44.2}/tests/unit/test_cli_list_targets_help.py +0 -0
  557. {agentbundle-0.43.1 → agentbundle-0.44.2}/tests/unit/test_cli_path_normalisation.py +0 -0
  558. {agentbundle-0.43.1 → agentbundle-0.44.2}/tests/unit/test_cli_profile_surface.py +0 -0
  559. {agentbundle-0.43.1 → agentbundle-0.44.2}/tests/unit/test_cli_scope_flags.py +0 -0
  560. {agentbundle-0.43.1 → agentbundle-0.44.2}/tests/unit/test_codex_agent_toml.py +0 -0
  561. {agentbundle-0.43.1 → agentbundle-0.44.2}/tests/unit/test_codex_projection_modes.py +0 -0
  562. {agentbundle-0.43.1 → agentbundle-0.44.2}/tests/unit/test_collect_tree_symlinks.py +0 -0
  563. {agentbundle-0.43.1 → agentbundle-0.44.2}/tests/unit/test_common_classify_seeds.py +0 -0
  564. {agentbundle-0.43.1 → agentbundle-0.44.2}/tests/unit/test_config.py +0 -0
  565. {agentbundle-0.43.1 → agentbundle-0.44.2}/tests/unit/test_config_cmd.py +0 -0
  566. {agentbundle-0.43.1 → agentbundle-0.44.2}/tests/unit/test_configured_adapter.py +0 -0
  567. {agentbundle-0.43.1 → agentbundle-0.44.2}/tests/unit/test_confirm_helper.py +0 -0
  568. {agentbundle-0.43.1 → agentbundle-0.44.2}/tests/unit/test_contract_parity.py +0 -0
  569. {agentbundle-0.43.1 → agentbundle-0.44.2}/tests/unit/test_contract_v0_3_schema.py +0 -0
  570. {agentbundle-0.43.1 → agentbundle-0.44.2}/tests/unit/test_copilot_agent_md.py +0 -0
  571. {agentbundle-0.43.1 → agentbundle-0.44.2}/tests/unit/test_copilot_hooks_json.py +0 -0
  572. {agentbundle-0.43.1 → agentbundle-0.44.2}/tests/unit/test_copilot_user_scope_wiring.py +0 -0
  573. {agentbundle-0.43.1 → agentbundle-0.44.2}/tests/unit/test_credbroker_lint_hardening.py +0 -0
  574. {agentbundle-0.43.1 → agentbundle-0.44.2}/tests/unit/test_dependencies_batch.py +0 -0
  575. {agentbundle-0.43.1 → agentbundle-0.44.2}/tests/unit/test_diff_cmd.py +0 -0
  576. {agentbundle-0.43.1 → agentbundle-0.44.2}/tests/unit/test_direct_admission.py +0 -0
  577. {agentbundle-0.43.1 → agentbundle-0.44.2}/tests/unit/test_direct_architecture_controls.py +0 -0
  578. {agentbundle-0.43.1 → agentbundle-0.44.2}/tests/unit/test_direct_diagnostics.py +0 -0
  579. {agentbundle-0.43.1 → agentbundle-0.44.2}/tests/unit/test_direct_lifecycle_facts.py +0 -0
  580. {agentbundle-0.43.1 → agentbundle-0.44.2}/tests/unit/test_direct_source_acquisition.py +0 -0
  581. {agentbundle-0.43.1 → agentbundle-0.44.2}/tests/unit/test_direct_source_state.py +0 -0
  582. {agentbundle-0.43.1 → agentbundle-0.44.2}/tests/unit/test_direct_upgrade.py +0 -0
  583. {agentbundle-0.43.1 → agentbundle-0.44.2}/tests/unit/test_direct_validate.py +0 -0
  584. {agentbundle-0.43.1 → agentbundle-0.44.2}/tests/unit/test_footprint_ownership.py +0 -0
  585. {agentbundle-0.43.1 → agentbundle-0.44.2}/tests/unit/test_https_catalogue.py +0 -0
  586. {agentbundle-0.43.1 → agentbundle-0.44.2}/tests/unit/test_init_state_cmd.py +0 -0
  587. {agentbundle-0.43.1 → agentbundle-0.44.2}/tests/unit/test_install_argparse_adapter_flag.py +0 -0
  588. {agentbundle-0.43.1 → agentbundle-0.44.2}/tests/unit/test_install_argparse_emit_install_routes.py +0 -0
  589. {agentbundle-0.43.1 → agentbundle-0.44.2}/tests/unit/test_install_defaults_preferred_adapter.py +0 -0
  590. {agentbundle-0.43.1 → agentbundle-0.44.2}/tests/unit/test_install_dropped_primitives_warning.py +0 -0
  591. {agentbundle-0.43.1 → agentbundle-0.44.2}/tests/unit/test_install_event_dropped_wirings.py +0 -0
  592. {agentbundle-0.43.1 → agentbundle-0.44.2}/tests/unit/test_install_first_value_handoff.py +0 -0
  593. {agentbundle-0.43.1 → agentbundle-0.44.2}/tests/unit/test_install_force_help.py +0 -0
  594. {agentbundle-0.43.1 → agentbundle-0.44.2}/tests/unit/test_install_inband_detection.py +0 -0
  595. {agentbundle-0.43.1 → agentbundle-0.44.2}/tests/unit/test_install_messages.py +0 -0
  596. {agentbundle-0.43.1 → agentbundle-0.44.2}/tests/unit/test_install_messages_repo_scope.py +0 -0
  597. {agentbundle-0.43.1 → agentbundle-0.44.2}/tests/unit/test_install_refusal_ordering.py +0 -0
  598. {agentbundle-0.43.1 → agentbundle-0.44.2}/tests/unit/test_install_state_provenance.py +0 -0
  599. {agentbundle-0.43.1 → agentbundle-0.44.2}/tests/unit/test_kiro_ide_hook_projection.py +0 -0
  600. {agentbundle-0.43.1 → agentbundle-0.44.2}/tests/unit/test_kiro_ide_hook_rail.py +0 -0
  601. {agentbundle-0.43.1 → agentbundle-0.44.2}/tests/unit/test_kiro_ide_hook_schema.py +0 -0
  602. {agentbundle-0.43.1 → agentbundle-0.44.2}/tests/unit/test_lint_agent_artifacts_metadata_auth.py +0 -0
  603. {agentbundle-0.43.1 → agentbundle-0.44.2}/tests/unit/test_list_installed_cmd.py +0 -0
  604. {agentbundle-0.43.1 → agentbundle-0.44.2}/tests/unit/test_list_installed_status.py +0 -0
  605. {agentbundle-0.43.1 → agentbundle-0.44.2}/tests/unit/test_list_targets_cmd.py +0 -0
  606. {agentbundle-0.43.1 → agentbundle-0.44.2}/tests/unit/test_local_exclude_git_cache.py +0 -0
  607. {agentbundle-0.43.1 → agentbundle-0.44.2}/tests/unit/test_local_scope_schema.py +0 -0
  608. {agentbundle-0.43.1 → agentbundle-0.44.2}/tests/unit/test_local_scope_t10_uninstall.py +0 -0
  609. {agentbundle-0.43.1 → agentbundle-0.44.2}/tests/unit/test_local_scope_t12_show.py +0 -0
  610. {agentbundle-0.43.1 → agentbundle-0.44.2}/tests/unit/test_local_scope_t2_resolve.py +0 -0
  611. {agentbundle-0.43.1 → agentbundle-0.44.2}/tests/unit/test_local_scope_t3_config.py +0 -0
  612. {agentbundle-0.43.1 → agentbundle-0.44.2}/tests/unit/test_local_scope_t4_state_path.py +0 -0
  613. {agentbundle-0.43.1 → agentbundle-0.44.2}/tests/unit/test_local_scope_t5_list_installed.py +0 -0
  614. {agentbundle-0.43.1 → agentbundle-0.44.2}/tests/unit/test_local_scope_t7_install_gates.py +0 -0
  615. {agentbundle-0.43.1 → agentbundle-0.44.2}/tests/unit/test_local_scope_t8_install.py +0 -0
  616. {agentbundle-0.43.1 → agentbundle-0.44.2}/tests/unit/test_local_scope_t9_exclude.py +0 -0
  617. {agentbundle-0.43.1 → agentbundle-0.44.2}/tests/unit/test_marker_schema_version_parity.py +0 -0
  618. {agentbundle-0.43.1 → agentbundle-0.44.2}/tests/unit/test_merge_into_agent_json.py +0 -0
  619. {agentbundle-0.43.1 → agentbundle-0.44.2}/tests/unit/test_multi_adapter_disambiguator.py +0 -0
  620. {agentbundle-0.43.1 → agentbundle-0.44.2}/tests/unit/test_nested_symlink_hardening.py +0 -0
  621. {agentbundle-0.43.1 → agentbundle-0.44.2}/tests/unit/test_okf_discovery.py +0 -0
  622. {agentbundle-0.43.1 → agentbundle-0.44.2}/tests/unit/test_org_bootstrap.py +0 -0
  623. {agentbundle-0.43.1 → agentbundle-0.44.2}/tests/unit/test_orphan_sweep_guards.py +0 -0
  624. {agentbundle-0.43.1 → agentbundle-0.44.2}/tests/unit/test_pack_config_api.py +0 -0
  625. {agentbundle-0.43.1 → agentbundle-0.44.2}/tests/unit/test_pack_inventory.py +0 -0
  626. {agentbundle-0.43.1 → agentbundle-0.44.2}/tests/unit/test_package_catalogue.py +0 -0
  627. {agentbundle-0.43.1 → agentbundle-0.44.2}/tests/unit/test_packstate_source_provenance.py +0 -0
  628. {agentbundle-0.43.1 → agentbundle-0.44.2}/tests/unit/test_pipeline_phase_order.py +0 -0
  629. {agentbundle-0.43.1 → agentbundle-0.44.2}/tests/unit/test_plugin_scope_filter.py +0 -0
  630. {agentbundle-0.43.1 → agentbundle-0.44.2}/tests/unit/test_profile_reader.py +0 -0
  631. {agentbundle-0.43.1 → agentbundle-0.44.2}/tests/unit/test_render.py +0 -0
  632. {agentbundle-0.43.1 → agentbundle-0.44.2}/tests/unit/test_render_cmd.py +0 -0
  633. {agentbundle-0.43.1 → agentbundle-0.44.2}/tests/unit/test_render_table.py +0 -0
  634. {agentbundle-0.43.1 → agentbundle-0.44.2}/tests/unit/test_resolve_state_path.py +0 -0
  635. {agentbundle-0.43.1 → agentbundle-0.44.2}/tests/unit/test_resolve_target_adapter_user_config.py +0 -0
  636. {agentbundle-0.43.1 → agentbundle-0.44.2}/tests/unit/test_resolve_user_scope_target_adapter.py +0 -0
  637. {agentbundle-0.43.1 → agentbundle-0.44.2}/tests/unit/test_route_surface_parity.py +0 -0
  638. {agentbundle-0.43.1 → agentbundle-0.44.2}/tests/unit/test_safety.py +0 -0
  639. {agentbundle-0.43.1 → agentbundle-0.44.2}/tests/unit/test_safety_repo_scope_prefixes.py +0 -0
  640. {agentbundle-0.43.1 → agentbundle-0.44.2}/tests/unit/test_safety_scan_per_pack_scoping.py +0 -0
  641. {agentbundle-0.43.1 → agentbundle-0.44.2}/tests/unit/test_scaffold_cmd.py +0 -0
  642. {agentbundle-0.43.1 → agentbundle-0.44.2}/tests/unit/test_scope.py +0 -0
  643. {agentbundle-0.43.1 → agentbundle-0.44.2}/tests/unit/test_self_host_windows.py +0 -0
  644. {agentbundle-0.43.1 → agentbundle-0.44.2}/tests/unit/test_shared_prefix_disclosure.py +0 -0
  645. {agentbundle-0.43.1 → agentbundle-0.44.2}/tests/unit/test_source_conflict_guard.py +0 -0
  646. {agentbundle-0.43.1 → agentbundle-0.44.2}/tests/unit/test_source_defaults.py +0 -0
  647. {agentbundle-0.43.1 → agentbundle-0.44.2}/tests/unit/test_state_v01_refuse_write.py +0 -0
  648. {agentbundle-0.43.1 → agentbundle-0.44.2}/tests/unit/test_state_v02.py +0 -0
  649. {agentbundle-0.43.1 → agentbundle-0.44.2}/tests/unit/test_state_v0_4_schema.py +0 -0
  650. {agentbundle-0.43.1 → agentbundle-0.44.2}/tests/unit/test_statelock.py +0 -0
  651. {agentbundle-0.43.1 → agentbundle-0.44.2}/tests/unit/test_statelock_hardening.py +0 -0
  652. {agentbundle-0.43.1 → agentbundle-0.44.2}/tests/unit/test_system_trust.py +0 -0
  653. {agentbundle-0.43.1 → agentbundle-0.44.2}/tests/unit/test_target_resolver.py +0 -0
  654. {agentbundle-0.43.1 → agentbundle-0.44.2}/tests/unit/test_toml_emitters.py +0 -0
  655. {agentbundle-0.43.1 → agentbundle-0.44.2}/tests/unit/test_unresolved_markers.py +0 -0
  656. {agentbundle-0.43.1 → agentbundle-0.44.2}/tests/unit/test_upgrade_bulk_all.py +0 -0
  657. {agentbundle-0.43.1 → agentbundle-0.44.2}/tests/unit/test_upgrade_recap.py +0 -0
  658. {agentbundle-0.43.1 → agentbundle-0.44.2}/tests/unit/test_upgrade_source_inference.py +0 -0
  659. {agentbundle-0.43.1 → agentbundle-0.44.2}/tests/unit/test_user_config_io.py +0 -0
  660. {agentbundle-0.43.1 → agentbundle-0.44.2}/tests/unit/test_user_config_isolation.py +0 -0
  661. {agentbundle-0.43.1 → agentbundle-0.44.2}/tests/unit/test_user_config_path.py +0 -0
  662. {agentbundle-0.43.1 → agentbundle-0.44.2}/tests/unit/test_user_config_source.py +0 -0
  663. {agentbundle-0.43.1 → agentbundle-0.44.2}/tests/unit/test_user_merge_json.py +0 -0
  664. {agentbundle-0.43.1 → agentbundle-0.44.2}/tests/unit/test_validate_attach_to_agent.py +0 -0
  665. {agentbundle-0.43.1 → agentbundle-0.44.2}/tests/unit/test_validate_categories.py +0 -0
  666. {agentbundle-0.43.1 → agentbundle-0.44.2}/tests/unit/test_validate_cmd.py +0 -0
  667. {agentbundle-0.43.1 → agentbundle-0.44.2}/tests/unit/test_validate_hook_wiring_per_file_compatibility.py +0 -0
  668. {agentbundle-0.43.1 → agentbundle-0.44.2}/tests/unit/test_values_from_shapes.py +0 -0
  669. {agentbundle-0.43.1 → agentbundle-0.44.2}/tests/unit/test_version.py +0 -0
  670. {agentbundle-0.43.1 → agentbundle-0.44.2}/tests/unit/test_windows_direct_suite_registration.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: agentbundle
3
- Version: 0.43.1
3
+ Version: 0.44.2
4
4
  Summary: npm for your coding agent. Install packs of skills, subagents, and hooks into any repo, for every major agent.
5
5
  Author-email: eugenelim <eugenelim@users.noreply.github.com>
6
6
  License-Expression: Apache-2.0 OR MIT
@@ -34,6 +34,34 @@ python -m pip install agentbundle
34
34
 
35
35
  Requires Python 3.11+. Runs on macOS, Linux, and Windows.
36
36
 
37
+ ## What's new in 0.44.2
38
+
39
+ A catalogue you derive with `catalogue init --preset self-hosted` now keeps a
40
+ working drift check on its vendored `credbroker` code. Selecting the
41
+ `credential-brokers` pack copies the package source alongside it, so the check
42
+ that compares the vendored copy against that source has something to compare.
43
+ Previously the source was left behind and the check passed by finding nothing:
44
+ the vendored copy was frozen, and an edit to it went unreported.
45
+
46
+ `--attribution white-label` also no longer records the upstream catalogue's
47
+ name in `.agentbundle/self-host-state.json`. That file is written after the
48
+ identity scan runs, so the name reached a file you commit and ship. It now
49
+ records your own catalogue's name. `--attribution attributed` is unchanged and
50
+ still records the upstream name.
51
+
52
+ ## What's new in 0.44.1
53
+
54
+ Installing a pack now adds its default output location to an
55
+ `agentbundle-layout.toml` you already keep. That step has existed for several
56
+ releases and never wrote anything: it looked for a manifest key no pack
57
+ declares, and named the table after the pack while every skill reads a
58
+ differently-named section. A pack now declares the section it writes.
59
+
60
+ The append also stops rewriting your file. It adds one table and leaves every
61
+ other byte alone — comments, key order, quoting style, line endings, and any
62
+ key it does not recognise — and the file keeps its permissions. A layout
63
+ problem is reported and the install finishes; it no longer aborts.
64
+
37
65
  ## What's new in 0.43.1
38
66
 
39
67
  `agentbundle catalogue init` now writes `packs/CLAUDE.md` and
@@ -14,6 +14,34 @@ python -m pip install agentbundle
14
14
 
15
15
  Requires Python 3.11+. Runs on macOS, Linux, and Windows.
16
16
 
17
+ ## What's new in 0.44.2
18
+
19
+ A catalogue you derive with `catalogue init --preset self-hosted` now keeps a
20
+ working drift check on its vendored `credbroker` code. Selecting the
21
+ `credential-brokers` pack copies the package source alongside it, so the check
22
+ that compares the vendored copy against that source has something to compare.
23
+ Previously the source was left behind and the check passed by finding nothing:
24
+ the vendored copy was frozen, and an edit to it went unreported.
25
+
26
+ `--attribution white-label` also no longer records the upstream catalogue's
27
+ name in `.agentbundle/self-host-state.json`. That file is written after the
28
+ identity scan runs, so the name reached a file you commit and ship. It now
29
+ records your own catalogue's name. `--attribution attributed` is unchanged and
30
+ still records the upstream name.
31
+
32
+ ## What's new in 0.44.1
33
+
34
+ Installing a pack now adds its default output location to an
35
+ `agentbundle-layout.toml` you already keep. That step has existed for several
36
+ releases and never wrote anything: it looked for a manifest key no pack
37
+ declares, and named the table after the pack while every skill reads a
38
+ differently-named section. A pack now declares the section it writes.
39
+
40
+ The append also stops rewriting your file. It adds one table and leaves every
41
+ other byte alone — comments, key order, quoting style, line endings, and any
42
+ key it does not recognise — and the file keeps its permissions. A layout
43
+ problem is reported and the install finishes; it no longer aborts.
44
+
17
45
  ## What's new in 0.43.1
18
46
 
19
47
  `agentbundle catalogue init` now writes `packs/CLAUDE.md` and
@@ -16,6 +16,7 @@
16
16
  "profiles/_example/README.md": "164494df049ddce3e57cb44ed604cb3d39be0a6ec2072e609ea3fa4bbfc74c72",
17
17
  "profiles/_example/profile.toml": "68af18cf50fa0327a9776b029c92bb1cf82710c649691b3ac889eb8537b8eac7",
18
18
  "tests/conformance/test_gemini_admissibility.py": "8b337da9272823aed2cb22041b3f9fd27549f075f28b9817efd5be8f8c5bb948",
19
+ "tests/conformance/test_pack_layout_declared_section.py": "1e03e04b995bd3f3cd2e6362c07d05514d3fe995c0fbe59045e3cc11a1e787a0",
19
20
  "tests/conformance/test_pack_metadata.py": "8ea175b88cc6e10ba10cda87676fc225ee2b968d710c8e6ab05fb20e31ec978a",
20
21
  "tests/conformance/test_shared_library_boundaries.py": "5e07783459336e657a355f43aa5a9cf6c138603624daec258ecc0fa3d74239c3"
21
22
  },
@@ -0,0 +1,236 @@
1
+ """A pack's declared layout section must be one it documents (spec AC6).
2
+
3
+ `agentbundle install` appends `[<section>] output_dir = <output_dir>` to an
4
+ adopter's `agentbundle-layout.toml`, taking both values from the pack manifest.
5
+ Every consuming skill then reads that section by prose instruction in its own
6
+ `SKILL.md` — no skill calls Python, so nothing at runtime can reconcile a
7
+ manifest that names a section the pack's own documentation does not.
8
+
9
+ That is exactly how the original defect survived two releases: the writer and
10
+ the readers were each exercised against their own idea of the shape. So this
11
+ check derives **both** sides from the repository and compares them. It carries
12
+ no list of expected section names; a list is the hand-maintained table the
13
+ design rejects.
14
+
15
+ Matching the *pair* rather than the section alone is what makes the check
16
+ discriminate. A pack may legitimately document several sections: one per
17
+ output tree it owns, plus any it only *reads* from a sibling pack. Section
18
+ membership alone would then admit a declaration that crosses two of them — a
19
+ section from one documented pair carried on the base from another — which
20
+ installs a default under a section whose readers resolve somewhere else. No
21
+ document describes that combination, and the pair rule is what rejects it.
22
+
23
+ This file is pack-portable by rule: it derives every pack and every pair from
24
+ the tree rather than naming any. It also ships — `catalogue init` writes it
25
+ into an adopter's catalogue, which may hold no packs, or packs that declare no
26
+ layout — so every tree-derived case skips when its evidence is absent, and the
27
+ rule's own discrimination is proven against synthetic input that is always
28
+ present and can never be vacuous.
29
+
30
+ That the *source* catalogue actually supplies that evidence is a claim about
31
+ this repository, not about every catalogue, so it lives in `tests/roster/`,
32
+ which does not ship. Without it a mis-rooted glob here would skip rather than
33
+ fail.
34
+ """
35
+
36
+ from __future__ import annotations
37
+
38
+ import re
39
+ import tomllib
40
+ from pathlib import Path
41
+
42
+ import pytest
43
+
44
+ REPO_ROOT = Path(__file__).resolve().parents[2]
45
+ PACKS_DIR = REPO_ROOT / "packs"
46
+
47
+ # `[section]` immediately followed by an `output_dir = "..."` assignment, inside
48
+ # one fenced block. Intervening comment lines are allowed; a blank line is not,
49
+ # so two unrelated examples cannot be read as one pair.
50
+ _PAIR = re.compile(
51
+ r"^\[([a-z0-9][a-z0-9-]*)\]\n(?:#[^\n]*\n)*output_dir = \"([^\"]+)\"",
52
+ re.MULTILINE,
53
+ )
54
+
55
+
56
+ def _declaring_packs() -> list[tuple[str, str, str, str]]:
57
+ """(pack, scope, section, output_dir) for every declared layout scope.
58
+
59
+ Both scopes, because the installer honours `[pack.layout.user]` too. No
60
+ shipped pack declares one today, but this file ships into adopter
61
+ catalogues where one could — and a user-scope pair no document describes
62
+ would otherwise pass unseen.
63
+ """
64
+ found = []
65
+ for manifest in sorted(PACKS_DIR.glob("*/pack.toml")):
66
+ layout = (
67
+ tomllib.loads(manifest.read_text(encoding="utf-8"))
68
+ .get("pack", {})
69
+ .get("layout", {})
70
+ )
71
+ for scope in ("repo", "user"):
72
+ table = layout.get(scope)
73
+ if not table:
74
+ continue
75
+ section, output_dir = table.get("section"), table.get("output_dir")
76
+ if section is None and output_dir is None:
77
+ continue
78
+ found.append((manifest.parent.name, scope, section, output_dir))
79
+ return found
80
+
81
+
82
+ def _is_repo_scope_base(base: str) -> bool:
83
+ """A repo-scope base is relative; a user-scope base is absolute.
84
+
85
+ This is the anchoring rule the layout contract already states — a
86
+ repo-root file's value is repo-root-relative, a user-profile file's must
87
+ be an explicit absolute path. Reading scope off the value keeps the check
88
+ from depending on how a fenced example is commented.
89
+ """
90
+ return not base.startswith(("/", "~"))
91
+
92
+
93
+ def _documented_pairs(pack: str, *, repo_scope: bool = True) -> set[tuple[str, str]]:
94
+ """Every (section, base) pair this pack's docs state for one scope.
95
+
96
+ Scope matters: a pack's reference docs carry both a repo-scope and a
97
+ user-scope example for the same section, so unioning them would let a
98
+ repo-scope declaration be validated by the user-scope base — a pair no
99
+ reader of the repo file would ever resolve.
100
+ """
101
+ pairs: set[tuple[str, str]] = set()
102
+ for doc in (PACKS_DIR / pack).rglob("references/agentbundle-layout.md"):
103
+ pairs |= {
104
+ (section, base)
105
+ for section, base in _PAIR.findall(doc.read_text(encoding="utf-8"))
106
+ if _is_repo_scope_base(base) is repo_scope
107
+ }
108
+ return pairs
109
+
110
+
111
+ def _is_admitted(
112
+ section: str, output_dir: str, documented: set[tuple[str, str]]
113
+ ) -> bool:
114
+ """The admission decision, in one place.
115
+
116
+ Both the tree-derived case and the discrimination proof call this, so a
117
+ weakening — to section membership alone, say — fails the proof instead of
118
+ passing it.
119
+ """
120
+ return (section, output_dir) in documented
121
+
122
+
123
+ def test_the_admission_rule_rejects_a_crossed_declaration() -> None:
124
+ """A section from one documented pair, carried on another's base.
125
+
126
+ Asserted through `_is_admitted`, the same predicate the tree-derived case
127
+ uses. Weakening that predicate to section membership admits the crossing
128
+ and turns this red.
129
+ """
130
+ documented = {("alpha", "one/alpha"), ("beta", "two/beta")}
131
+
132
+ assert _is_admitted("alpha", "one/alpha", documented)
133
+ assert _is_admitted("beta", "two/beta", documented)
134
+ assert not _is_admitted("alpha", "two/beta", documented)
135
+ assert not _is_admitted("beta", "one/alpha", documented)
136
+
137
+
138
+ @pytest.mark.parametrize("pack,scope,section,output_dir", _declaring_packs())
139
+ def test_declared_pair_is_documented_by_the_pack( # noqa: D103
140
+ pack: str, scope: str, section: str | None, output_dir: str | None
141
+ ) -> None:
142
+ assert section, f"{pack} declares a {scope} layout without a section"
143
+ assert output_dir, f"{pack} declares a {scope} layout without an output_dir"
144
+
145
+ documented = _documented_pairs(pack, repo_scope=scope == "repo")
146
+ assert documented, f"{pack} declares a layout but documents no section"
147
+ assert _is_admitted(section, output_dir, documented), (
148
+ f"{pack} declares ({section!r}, {output_dir!r}); its reference docs "
149
+ f"document {sorted(documented)}. The installer writes the declared "
150
+ f"pair, so a pair no document describes installs a default the pack's "
151
+ f"own skills will not read."
152
+ )
153
+
154
+
155
+ def _crossed_pairs(pairs: set[tuple[str, str]]) -> set[tuple[str, str]]:
156
+ """Every (section, base) formed from two *different* documented pairs."""
157
+ return {
158
+ (one_section, other_base)
159
+ for one_section, one_base in pairs
160
+ for other_section, other_base in pairs
161
+ if one_section != other_section and one_base != other_base
162
+ }
163
+
164
+
165
+ def test_the_rule_rejects_a_crossed_pair() -> None:
166
+ """The rule must discriminate, proven without depending on the tree.
167
+
168
+ Section membership alone would admit a declaration that takes its section
169
+ from one documented pair and its base from another. This is the property
170
+ that makes the pair rule worth having, so it is asserted against synthetic
171
+ input rather than against whichever packs happen to document two pairs
172
+ today — on an empty catalogue that evidence would simply be absent, and
173
+ the guarantee would silently stop being checked.
174
+ """
175
+ documented = {("alpha", "one/alpha"), ("beta", "two/beta")}
176
+ crossed = _crossed_pairs(documented)
177
+
178
+ assert crossed == {("alpha", "two/beta"), ("beta", "one/alpha")}
179
+ assert not (crossed & documented), "a crossed pair must never be documented"
180
+
181
+
182
+ def test_a_repo_declaration_is_not_validated_by_a_user_scope_example() -> None:
183
+ """The scope split must discriminate, not merely pass on today's tree.
184
+
185
+ A pack documenting the same section at both scopes offers two bases. If
186
+ the check unioned them, a repo-scope manifest carrying the user-scope base
187
+ would pass while naming a path no reader of the repo file resolves.
188
+ """
189
+ checked = 0
190
+ for pack, _scope, _section, _base in _declaring_packs():
191
+ repo_pairs = _documented_pairs(pack, repo_scope=True)
192
+ user_pairs = _documented_pairs(pack, repo_scope=False)
193
+ for section, user_base in user_pairs:
194
+ if any(s == section for s, _ in repo_pairs):
195
+ assert (section, user_base) not in repo_pairs
196
+ checked += 1
197
+ if not checked:
198
+ pytest.skip("no pack here documents one section at both scopes")
199
+
200
+
201
+ def test_no_pack_documents_a_crossing_of_its_own_pairs() -> None:
202
+ """The same property over the real tree, where there is one."""
203
+ for pack, _scope, _section, _base in _declaring_packs():
204
+ pairs = _documented_pairs(pack)
205
+ assert not (_crossed_pairs(pairs) & pairs), (
206
+ f"{pack} documents a pair and also a crossing of it, so the rule "
207
+ "cannot discriminate for that pack"
208
+ )
209
+
210
+
211
+ def test_every_reference_doc_agrees_with_its_pack_on_the_base() -> None:
212
+ """AC6 admits a pair documented in *one* doc; this requires all of them.
213
+
214
+ A pack with several reference pages can otherwise regress one of them to a
215
+ base the installer does not write, and stay green — the adopter reading
216
+ that page gets a location nothing populates.
217
+ """
218
+ walked = 0
219
+ for pack, scope, section, output_dir in _declaring_packs():
220
+ if scope != "repo":
221
+ continue
222
+ for doc in sorted((PACKS_DIR / pack).rglob("references/agentbundle-layout.md")):
223
+ pairs = {
224
+ (s, b)
225
+ for s, b in _PAIR.findall(doc.read_text(encoding="utf-8"))
226
+ if s == section and _is_repo_scope_base(b)
227
+ }
228
+ if not pairs:
229
+ continue # this page documents another section, or user scope
230
+ walked += 1
231
+ assert pairs == {(section, output_dir)}, (
232
+ f"{doc.relative_to(REPO_ROOT)} documents {sorted(pairs)} for "
233
+ f"[{section}] while {pack} declares {output_dir!r}"
234
+ )
235
+ if not walked:
236
+ pytest.skip("no reference doc here documents a declared repo-scope section")
@@ -248,7 +248,8 @@
248
248
  "properties": {
249
249
  "parent": {"type": "string"},
250
250
  "template": {"type": "string"},
251
- "output_dir": {"type": "string"}
251
+ "output_dir": {"type": "string"},
252
+ "section": {"type": "string", "pattern": "^[a-z0-9][a-z0-9-]*$"}
252
253
  }
253
254
  },
254
255
  "user": {
@@ -257,7 +258,8 @@
257
258
  "properties": {
258
259
  "parent": {"type": "string"},
259
260
  "template": {"type": "string"},
260
- "output_dir": {"type": "string"}
261
+ "output_dir": {"type": "string"},
262
+ "section": {"type": "string", "pattern": "^[a-z0-9][a-z0-9-]*$"}
261
263
  }
262
264
  }
263
265
  }
@@ -297,6 +297,16 @@ class LegacyWorkspaceMembership:
297
297
  entry_index: int = 0
298
298
 
299
299
 
300
+ @dataclasses.dataclass(frozen=True)
301
+ class ParseBlockedWorkspaceMembership:
302
+ """One target-like entry whose safe artifact identity survived parsing."""
303
+
304
+ canonical_artifact_path: str
305
+ ini_slug: str
306
+ collection: str
307
+ entry_index: int
308
+
309
+
300
310
  @dataclasses.dataclass(frozen=True)
301
311
  class MigrationSelection:
302
312
  """Closed human-selected binding from one legacy finding to one target."""
@@ -2481,12 +2491,12 @@ def _extract_canonical_memberships(
2481
2491
  list[WorkspaceMembership],
2482
2492
  list[LegacyWorkspaceMembership],
2483
2493
  list[RoutingFinding],
2484
- dict[str, int],
2494
+ list[ParseBlockedWorkspaceMembership],
2485
2495
  ]:
2486
2496
  memberships: list[WorkspaceMembership] = []
2487
2497
  legacy_memberships: list[LegacyWorkspaceMembership] = []
2488
2498
  findings: list[RoutingFinding] = []
2489
- parse_blocked_path_counts: dict[str, int] = {}
2499
+ parse_blocked_memberships: list[ParseBlockedWorkspaceMembership] = []
2490
2500
  for section_name, top_level_names in _TOP_LEVEL_ENTRY_COLLECTIONS.items():
2491
2501
  section = workspace.get(section_name, {})
2492
2502
  if not isinstance(section, dict):
@@ -2514,8 +2524,13 @@ def _extract_canonical_memberships(
2514
2524
  dataclasses.replace(legacy_membership, entry_index=entry_index)
2515
2525
  )
2516
2526
  if blocked_path is not None:
2517
- parse_blocked_path_counts[blocked_path] = (
2518
- parse_blocked_path_counts.get(blocked_path, 0) + 1
2527
+ parse_blocked_memberships.append(
2528
+ ParseBlockedWorkspaceMembership(
2529
+ canonical_artifact_path=blocked_path,
2530
+ ini_slug="",
2531
+ collection=collection,
2532
+ entry_index=entry_index,
2533
+ )
2519
2534
  )
2520
2535
  findings.extend(entry_findings)
2521
2536
  for raw_ini_slug, section in workspace.items():
@@ -2569,11 +2584,16 @@ def _extract_canonical_memberships(
2569
2584
  dataclasses.replace(legacy_membership, entry_index=entry_index)
2570
2585
  )
2571
2586
  if blocked_path is not None:
2572
- parse_blocked_path_counts[blocked_path] = (
2573
- parse_blocked_path_counts.get(blocked_path, 0) + 1
2587
+ parse_blocked_memberships.append(
2588
+ ParseBlockedWorkspaceMembership(
2589
+ canonical_artifact_path=blocked_path,
2590
+ ini_slug=ini_slug,
2591
+ collection=collection,
2592
+ entry_index=entry_index,
2593
+ )
2574
2594
  )
2575
2595
  findings.extend(entry_findings)
2576
- return memberships, legacy_memberships, findings, parse_blocked_path_counts
2596
+ return memberships, legacy_memberships, findings, parse_blocked_memberships
2577
2597
 
2578
2598
 
2579
2599
  def _membership_status(membership: WorkspaceMembership) -> str | None:
@@ -2856,6 +2876,115 @@ def _legacy_canonical_alias(entry: LegacyWorkspaceEntry) -> str | None:
2856
2876
  return None
2857
2877
 
2858
2878
 
2879
+ _SELECTED_SPEC_COLLECTIONS = frozenset(
2880
+ {"backlog.open", "work.queue", "work.active", "work.shipped"}
2881
+ )
2882
+
2883
+
2884
+ def selected_membership_status(root: Path, selectors: list[str]) -> dict[str, object]:
2885
+ """Return membership occurrences for an explicit ordered spec selection.
2886
+
2887
+ The selected spec artifacts need not exist. Only ``workspace.toml`` is read;
2888
+ matching is performed on canonical repository-relative artifact identities.
2889
+ """
2890
+ if not selectors:
2891
+ return {"error": {"code": "empty_selection"}}
2892
+
2893
+ selected_artifact_paths: list[str] = []
2894
+ for selector in selectors:
2895
+ artifact_path = f"{selector}/spec.md" if isinstance(selector, str) else ""
2896
+ if (
2897
+ not _is_canonical_spec_artifact_path(artifact_path)
2898
+ or _confined_artifact_path(root, selector) is None
2899
+ ):
2900
+ return {"error": {"code": "invalid_selector"}}
2901
+ selected_artifact_paths.append(artifact_path)
2902
+
2903
+ workspace_path = _confined_artifact_path(root, "workspace.toml")
2904
+ if workspace_path is None:
2905
+ return {"error": {"code": "invalid_workspace"}}
2906
+ try:
2907
+ workspace = parse_workspace(workspace_path)
2908
+ except tomllib.TOMLDecodeError:
2909
+ return {"error": {"code": "malformed_toml"}}
2910
+ except OSError:
2911
+ return {"error": {"code": "invalid_workspace"}}
2912
+
2913
+ (
2914
+ memberships,
2915
+ legacy_memberships,
2916
+ findings,
2917
+ parse_blocked_memberships,
2918
+ ) = _extract_canonical_memberships(workspace)
2919
+ if any(finding.code == "invalid_workspace" for finding in findings):
2920
+ return {"error": {"code": "invalid_workspace"}}
2921
+
2922
+ occurrences_by_path: dict[str, list[dict[str, object]]] = {
2923
+ path: [] for path in selected_artifact_paths
2924
+ }
2925
+ for membership in memberships:
2926
+ path = membership.entry.path
2927
+ if (
2928
+ membership.entry.kind != "spec"
2929
+ or membership.collection not in _SELECTED_SPEC_COLLECTIONS
2930
+ or path not in occurrences_by_path
2931
+ ):
2932
+ continue
2933
+ occurrences_by_path[path].append(
2934
+ {
2935
+ "canonical_artifact_path": path,
2936
+ "initiative": membership.ini_slug or None,
2937
+ "collection": membership.collection,
2938
+ "entry_index": membership.entry_index,
2939
+ "form": "canonical",
2940
+ }
2941
+ )
2942
+ for legacy_membership in legacy_memberships:
2943
+ path = _legacy_canonical_alias(legacy_membership.entry)
2944
+ if (
2945
+ legacy_membership.collection not in _SELECTED_SPEC_COLLECTIONS
2946
+ or path not in occurrences_by_path
2947
+ ):
2948
+ continue
2949
+ occurrences_by_path[path].append(
2950
+ {
2951
+ "canonical_artifact_path": path,
2952
+ "initiative": legacy_membership.ini_slug or None,
2953
+ "collection": legacy_membership.collection,
2954
+ "entry_index": legacy_membership.entry_index,
2955
+ "form": "legacy",
2956
+ }
2957
+ )
2958
+ for blocked_membership in parse_blocked_memberships:
2959
+ path = blocked_membership.canonical_artifact_path
2960
+ if (
2961
+ blocked_membership.collection not in _SELECTED_SPEC_COLLECTIONS
2962
+ or path not in occurrences_by_path
2963
+ ):
2964
+ continue
2965
+ occurrences_by_path[path].append(
2966
+ {
2967
+ "canonical_artifact_path": path,
2968
+ "initiative": blocked_membership.ini_slug or None,
2969
+ "collection": blocked_membership.collection,
2970
+ "entry_index": blocked_membership.entry_index,
2971
+ "form": "parse-blocked",
2972
+ }
2973
+ )
2974
+
2975
+ return {
2976
+ "results": [
2977
+ {
2978
+ "selected_directory": selector,
2979
+ "canonical_artifact_path": artifact_path,
2980
+ "membership_present": bool(occurrences_by_path[artifact_path]),
2981
+ "occurrences": occurrences_by_path[artifact_path],
2982
+ }
2983
+ for selector, artifact_path in zip(selectors, selected_artifact_paths, strict=True)
2984
+ ]
2985
+ }
2986
+
2987
+
2859
2988
  def _legacy_membership_is_cooled(
2860
2989
  membership: LegacyWorkspaceMembership,
2861
2990
  root: Path | None,
@@ -3421,8 +3550,12 @@ def run_canonical_reconciliation(
3421
3550
  memberships,
3422
3551
  legacy_memberships,
3423
3552
  parse_findings,
3424
- parse_blocked_path_counts,
3553
+ parse_blocked_memberships,
3425
3554
  ) = _extract_canonical_memberships(workspace)
3555
+ parse_blocked_path_counts: dict[str, int] = {}
3556
+ for blocked in parse_blocked_memberships:
3557
+ path = blocked.canonical_artifact_path
3558
+ parse_blocked_path_counts[path] = parse_blocked_path_counts.get(path, 0) + 1
3426
3559
  # Cooling is applied at evaluation and emission, never here. Every fact
3427
3560
  # derived below — by_path, duplicate_paths, cycle_paths, legacy_alias_counts
3428
3561
  # and the structural loop — must see a cooled artifact as *cooled*, not as
@@ -28,6 +28,8 @@ from dataclasses import dataclass, field
28
28
  from pathlib import Path
29
29
  from typing import Any
30
30
 
31
+ from agentbundle.build.user_libs import PACK_NAME as _USER_LIBS_PACK
32
+ from agentbundle.build.user_libs import PACKAGE_SUBPATH as _USER_LIBS_PACKAGE_SUBPATH
31
33
  from agentbundle.catalogue_tooling.file_safety import (
32
34
  UnsafeContentError,
33
35
  read_confined_regular_file,
@@ -116,6 +118,33 @@ _BUILD_RESIDUE_DIRS: frozenset[str] = frozenset(
116
118
  _BUILD_RESIDUE_FILES: frozenset[str] = frozenset({".DS_Store", "coverage.xml"})
117
119
  _VENDORED_PACK_EXCLUDE: tuple[str, ...] = ("tests/",)
118
120
 
121
+ # The credbroker project directory: the parent of the package `user_libs`
122
+ # resolves. `user_libs._package_source_dir` looks for the package at
123
+ # `packs_dir.parent / PACKAGE_SUBPATH`, i.e. `<catalogue root>/packages/
124
+ # credbroker/credbroker/`, so a derived catalogue must carry it at exactly that
125
+ # path. Derived from the resolver's own constant rather than re-spelled, so the
126
+ # copy follows the resolver if that path ever moves.
127
+ #
128
+ # Absent it, `compute_projections` finds no sources and returns `[]`, which
129
+ # makes BOTH its consumers silent no-ops in the derived tree: `apply_projection`
130
+ # writes no `.agentbundle/lib/credbroker/` floor, and `check_drift` compares
131
+ # nothing and reports clean. The pack-vendored copy under
132
+ # `.apm/user-libs/credbroker/` still arrives with the pack, so credbroker still
133
+ # runs — as frozen content with no source and no drift signal.
134
+ #
135
+ # This is deliberately NOT the `packages/agentbundle/` treatment. That one is
136
+ # vendored to `.agentbundle/tooling/agentbundle/` because it is an *install
137
+ # source* the adopter `pip install -e`s. credbroker is a *build input resolved
138
+ # by relative path*. Same principle, different mechanics: the two paths are not
139
+ # interchangeable and must not be reconciled.
140
+ _USER_LIBS_PACKAGE_DIR: str = _USER_LIBS_PACKAGE_SUBPATH.parent.as_posix()
141
+
142
+ # No test content ships to a derived catalogue — the same boundary
143
+ # `_VENDORED_PACK_EXCLUDE` draws. `user_libs.collect_sources` already excludes
144
+ # `tests` from the projection, so the drift gate compares the same file set
145
+ # either way and this costs the gate nothing.
146
+ _USER_LIBS_PACKAGE_EXCLUDE: tuple[str, ...] = ("tests/",)
147
+
119
148
 
120
149
  # ---------------------------------------------------------------------------
121
150
  # Dataclasses
@@ -780,6 +809,42 @@ def _write_ownership_state(target: Path, state: SelfHostOwnershipState) -> None:
780
809
  )
781
810
 
782
811
 
812
+ def _source_pack_identity(
813
+ source_meta: dict[str, Any], cfg: SelfHostedInitConfig
814
+ ) -> str:
815
+ """Return the pin recorded in the committed ownership state file.
816
+
817
+ Under ``attributed``, that is the source catalogue's name — the accurate
818
+ provenance pin, and permitted because attributed mode makes no promise of
819
+ anonymity.
820
+
821
+ Otherwise it is the **derived** catalogue's name. The source name is
822
+ identity anchor #1, and ``verify()`` allows it zero hits anywhere in
823
+ white-label mode. But the leak check runs over the planned ``file_bytes``
824
+ map, and ``_OWNERSHIP_STATE_FILE`` is written afterwards and is never in
825
+ that map — so pinning the source name here would ship the exact banned
826
+ string in a file the adopter commits, past a control that cannot see it.
827
+
828
+ Bringing the state file inside the leak check would instead make a usable
829
+ pin impossible in the very mode that most needs control over what ships,
830
+ so the value changes rather than the check's scope.
831
+
832
+ The branch is on ``attributed`` rather than on ``white-label`` so that any
833
+ other value fails closed to the non-disclosing pin, matching how
834
+ ``_apply_identity_transform_bytes`` and ``verify`` both treat ``attributed``
835
+ as the single exception.
836
+
837
+ Note for editors: this module's own prose is vendored into a target and
838
+ scanned. ``_transform_text`` replaces anchors case-sensitively while
839
+ ``verify`` matches case-insensitively, so a differently-cased echo of an
840
+ anchor value here survives replacement and then fails the leak check. Keep
841
+ identity wording generic.
842
+ """
843
+ if cfg.attribution == "attributed":
844
+ return source_meta.get("catalogue", {}).get("name", "")
845
+ return cfg.name or ""
846
+
847
+
783
848
  # ---------------------------------------------------------------------------
784
849
  # Next-steps builder
785
850
  # ---------------------------------------------------------------------------
@@ -950,6 +1015,27 @@ def init_self_hosted(cfg: SelfHostedInitConfig) -> SelfHostedInitResult:
950
1015
  if collect_error:
951
1016
  return _fail(collect_error)
952
1017
 
1018
+ # The credbroker package source travels with the pack that vendors it, in
1019
+ # BOTH tooling modes — it is a build input the user-libs projection resolves
1020
+ # by relative path, not an install source. See _USER_LIBS_PACKAGE_DIR.
1021
+ if _USER_LIBS_PACK in pack_names:
1022
+ src_user_libs = cfg.source / _USER_LIBS_PACKAGE_DIR
1023
+ if src_user_libs.is_dir() and not src_user_libs.is_symlink():
1024
+ collect_error = _collect_source_dir(
1025
+ src_user_libs,
1026
+ _USER_LIBS_PACKAGE_DIR,
1027
+ kind="package",
1028
+ exclude=_USER_LIBS_PACKAGE_EXCLUDE,
1029
+ )
1030
+ if collect_error:
1031
+ return _fail(collect_error)
1032
+ else:
1033
+ diagnostics.append(
1034
+ f"{_USER_LIBS_PACKAGE_DIR}/ not found in source; the "
1035
+ f"{_USER_LIBS_PACK} pack ships without its package source, so "
1036
+ "the user-libs projection and its drift gate stay inert"
1037
+ )
1038
+
953
1039
  # Vendored mode: copy agentbundle source and catalogue-curation.
954
1040
  if cfg.tooling == "vendored":
955
1041
  src_agentbundle = cfg.source / "packages" / "agentbundle"
@@ -1097,7 +1183,7 @@ def init_self_hosted(cfg: SelfHostedInitConfig) -> SelfHostedInitResult:
1097
1183
  ],
1098
1184
  adapters=adapters,
1099
1185
  managed_target_path=str(cfg.target),
1100
- source_pack_identity=source_meta.get("catalogue", {}).get("name", ""),
1186
+ source_pack_identity=_source_pack_identity(source_meta, cfg),
1101
1187
  source_root_kind="self-hosted-source",
1102
1188
  )
1103
1189
  _write_ownership_state(cfg.target, new_state)