agent-wiki-cli 2.3.0__tar.gz → 2.3.1__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 (587) hide show
  1. {agent_wiki_cli-2.3.0/src/agent_wiki_cli.egg-info → agent_wiki_cli-2.3.1}/PKG-INFO +1 -1
  2. {agent_wiki_cli-2.3.0 → agent_wiki_cli-2.3.1}/pyproject.toml +1 -1
  3. {agent_wiki_cli-2.3.0 → agent_wiki_cli-2.3.1/src/agent_wiki_cli.egg-info}/PKG-INFO +1 -1
  4. {agent_wiki_cli-2.3.0 → agent_wiki_cli-2.3.1}/src/agent_wiki_cli.egg-info/SOURCES.txt +2 -0
  5. {agent_wiki_cli-2.3.0 → agent_wiki_cli-2.3.1}/src/llm_wiki_cli/services/concept_identity.py +31 -1
  6. {agent_wiki_cli-2.3.0 → agent_wiki_cli-2.3.1}/src/llm_wiki_cli/services/knowledge_governance.py +23 -28
  7. {agent_wiki_cli-2.3.0 → agent_wiki_cli-2.3.1}/src/llm_wiki_cli/services/knowledge_storage.py +18 -2
  8. {agent_wiki_cli-2.3.0 → agent_wiki_cli-2.3.1}/src/llm_wiki_cli/services/knowledge_storage_access.py +2 -1
  9. {agent_wiki_cli-2.3.0 → agent_wiki_cli-2.3.1}/tests/test_architecture_layers.py +1 -1
  10. {agent_wiki_cli-2.3.0 → agent_wiki_cli-2.3.1}/tests/test_concept_identity.py +45 -0
  11. {agent_wiki_cli-2.3.0 → agent_wiki_cli-2.3.1}/tests/test_core_check_performance.py +152 -0
  12. agent_wiki_cli-2.3.1/tests/test_credential_named_knowledge.py +172 -0
  13. agent_wiki_cli-2.3.1/tests/test_dependency_audit.py +386 -0
  14. {agent_wiki_cli-2.3.0 → agent_wiki_cli-2.3.1}/tests/test_knowledge_governance.py +54 -0
  15. {agent_wiki_cli-2.3.0 → agent_wiki_cli-2.3.1}/tests/test_knowledge_storage.py +23 -0
  16. {agent_wiki_cli-2.3.0 → agent_wiki_cli-2.3.1}/tests/test_package_metadata.py +1 -1
  17. {agent_wiki_cli-2.3.0 → agent_wiki_cli-2.3.1}/tests/test_release_static_checks.py +1 -0
  18. {agent_wiki_cli-2.3.0 → agent_wiki_cli-2.3.1}/tests/test_validation.py +5 -6
  19. {agent_wiki_cli-2.3.0 → agent_wiki_cli-2.3.1}/LICENSE +0 -0
  20. {agent_wiki_cli-2.3.0 → agent_wiki_cli-2.3.1}/MANIFEST.in +0 -0
  21. {agent_wiki_cli-2.3.0 → agent_wiki_cli-2.3.1}/README.md +0 -0
  22. {agent_wiki_cli-2.3.0 → agent_wiki_cli-2.3.1}/docs/automation.md +0 -0
  23. {agent_wiki_cli-2.3.0 → agent_wiki_cli-2.3.1}/docs/cli-reference.md +0 -0
  24. {agent_wiki_cli-2.3.0 → agent_wiki_cli-2.3.1}/docs/native-agent-workflow.md +0 -0
  25. {agent_wiki_cli-2.3.0 → agent_wiki_cli-2.3.1}/docs/native-knowledge-provider.md +0 -0
  26. {agent_wiki_cli-2.3.0 → agent_wiki_cli-2.3.1}/docs/security-model.md +0 -0
  27. {agent_wiki_cli-2.3.0 → agent_wiki_cli-2.3.1}/docs/standalone-documentation.md +0 -0
  28. {agent_wiki_cli-2.3.0 → agent_wiki_cli-2.3.1}/docs/wiki-guide.md +0 -0
  29. {agent_wiki_cli-2.3.0 → agent_wiki_cli-2.3.1}/examples/plugins/documentation-hooks/README.md +0 -0
  30. {agent_wiki_cli-2.3.0 → agent_wiki_cli-2.3.1}/examples/plugins/documentation-hooks/detectors.py +0 -0
  31. {agent_wiki_cli-2.3.0 → agent_wiki_cli-2.3.1}/examples/plugins/documentation-hooks/llm-wiki-plugin.json +0 -0
  32. {agent_wiki_cli-2.3.0 → agent_wiki_cli-2.3.1}/examples/plugins/documentation-hooks/styles.py +0 -0
  33. {agent_wiki_cli-2.3.0 → agent_wiki_cli-2.3.1}/release_build_backend.py +0 -0
  34. {agent_wiki_cli-2.3.0 → agent_wiki_cli-2.3.1}/setup.cfg +0 -0
  35. {agent_wiki_cli-2.3.0 → agent_wiki_cli-2.3.1}/src/agent_wiki_cli.egg-info/dependency_links.txt +0 -0
  36. {agent_wiki_cli-2.3.0 → agent_wiki_cli-2.3.1}/src/agent_wiki_cli.egg-info/entry_points.txt +0 -0
  37. {agent_wiki_cli-2.3.0 → agent_wiki_cli-2.3.1}/src/agent_wiki_cli.egg-info/requires.txt +0 -0
  38. {agent_wiki_cli-2.3.0 → agent_wiki_cli-2.3.1}/src/agent_wiki_cli.egg-info/top_level.txt +0 -0
  39. {agent_wiki_cli-2.3.0 → agent_wiki_cli-2.3.1}/src/llm_wiki_cli/__init__.py +0 -0
  40. {agent_wiki_cli-2.3.0 → agent_wiki_cli-2.3.1}/src/llm_wiki_cli/api.py +0 -0
  41. {agent_wiki_cli-2.3.0 → agent_wiki_cli-2.3.1}/src/llm_wiki_cli/api_types.py +0 -0
  42. {agent_wiki_cli-2.3.0 → agent_wiki_cli-2.3.1}/src/llm_wiki_cli/cli.py +0 -0
  43. {agent_wiki_cli-2.3.0 → agent_wiki_cli-2.3.1}/src/llm_wiki_cli/commands/__init__.py +0 -0
  44. {agent_wiki_cli-2.3.0 → agent_wiki_cli-2.3.1}/src/llm_wiki_cli/commands/api_diff_cmd.py +0 -0
  45. {agent_wiki_cli-2.3.0 → agent_wiki_cli-2.3.1}/src/llm_wiki_cli/commands/bootstrap_cmd.py +0 -0
  46. {agent_wiki_cli-2.3.0 → agent_wiki_cli-2.3.1}/src/llm_wiki_cli/commands/bump_cmd.py +0 -0
  47. {agent_wiki_cli-2.3.0 → agent_wiki_cli-2.3.1}/src/llm_wiki_cli/commands/ci_check_cmd.py +0 -0
  48. {agent_wiki_cli-2.3.0 → agent_wiki_cli-2.3.1}/src/llm_wiki_cli/commands/context_cmd.py +0 -0
  49. {agent_wiki_cli-2.3.0 → agent_wiki_cli-2.3.1}/src/llm_wiki_cli/commands/docs_cmd.py +0 -0
  50. {agent_wiki_cli-2.3.0 → agent_wiki_cli-2.3.1}/src/llm_wiki_cli/commands/doctor_cmd.py +0 -0
  51. {agent_wiki_cli-2.3.0 → agent_wiki_cli-2.3.1}/src/llm_wiki_cli/commands/extract_cmd.py +0 -0
  52. {agent_wiki_cli-2.3.0 → agent_wiki_cli-2.3.1}/src/llm_wiki_cli/commands/generate_prompt_cmd.py +0 -0
  53. {agent_wiki_cli-2.3.0 → agent_wiki_cli-2.3.1}/src/llm_wiki_cli/commands/hook_cmd.py +0 -0
  54. {agent_wiki_cli-2.3.0 → agent_wiki_cli-2.3.1}/src/llm_wiki_cli/commands/init_cmd.py +0 -0
  55. {agent_wiki_cli-2.3.0 → agent_wiki_cli-2.3.1}/src/llm_wiki_cli/commands/install_ci_cmd.py +0 -0
  56. {agent_wiki_cli-2.3.0 → agent_wiki_cli-2.3.1}/src/llm_wiki_cli/commands/install_cmd.py +0 -0
  57. {agent_wiki_cli-2.3.0 → agent_wiki_cli-2.3.1}/src/llm_wiki_cli/commands/knowledge_cmd.py +0 -0
  58. {agent_wiki_cli-2.3.0 → agent_wiki_cli-2.3.1}/src/llm_wiki_cli/commands/knowledge_storage_cmd.py +0 -0
  59. {agent_wiki_cli-2.3.0 → agent_wiki_cli-2.3.1}/src/llm_wiki_cli/commands/lint_cmd.py +0 -0
  60. {agent_wiki_cli-2.3.0 → agent_wiki_cli-2.3.1}/src/llm_wiki_cli/commands/mcp_cmd.py +0 -0
  61. {agent_wiki_cli-2.3.0 → agent_wiki_cli-2.3.1}/src/llm_wiki_cli/commands/metrics_cmd.py +0 -0
  62. {agent_wiki_cli-2.3.0 → agent_wiki_cli-2.3.1}/src/llm_wiki_cli/commands/migrate_cmd.py +0 -0
  63. {agent_wiki_cli-2.3.0 → agent_wiki_cli-2.3.1}/src/llm_wiki_cli/commands/obsidian_cmd.py +0 -0
  64. {agent_wiki_cli-2.3.0 → agent_wiki_cli-2.3.1}/src/llm_wiki_cli/commands/plugins_cmd.py +0 -0
  65. {agent_wiki_cli-2.3.0 → agent_wiki_cli-2.3.1}/src/llm_wiki_cli/commands/prepare_extractors_cmd.py +0 -0
  66. {agent_wiki_cli-2.3.0 → agent_wiki_cli-2.3.1}/src/llm_wiki_cli/commands/query_cmd.py +0 -0
  67. {agent_wiki_cli-2.3.0 → agent_wiki_cli-2.3.1}/src/llm_wiki_cli/commands/queue_cmd.py +0 -0
  68. {agent_wiki_cli-2.3.0 → agent_wiki_cli-2.3.1}/src/llm_wiki_cli/commands/release_cmd.py +0 -0
  69. {agent_wiki_cli-2.3.0 → agent_wiki_cli-2.3.1}/src/llm_wiki_cli/commands/review_cmd.py +0 -0
  70. {agent_wiki_cli-2.3.0 → agent_wiki_cli-2.3.1}/src/llm_wiki_cli/commands/search_cmd.py +0 -0
  71. {agent_wiki_cli-2.3.0 → agent_wiki_cli-2.3.1}/src/llm_wiki_cli/commands/site_cmd.py +0 -0
  72. {agent_wiki_cli-2.3.0 → agent_wiki_cli-2.3.1}/src/llm_wiki_cli/commands/skills_cmd.py +0 -0
  73. {agent_wiki_cli-2.3.0 → agent_wiki_cli-2.3.1}/src/llm_wiki_cli/commands/status_cmd.py +0 -0
  74. {agent_wiki_cli-2.3.0 → agent_wiki_cli-2.3.1}/src/llm_wiki_cli/commands/sync_cmd.py +0 -0
  75. {agent_wiki_cli-2.3.0 → agent_wiki_cli-2.3.1}/src/llm_wiki_cli/commands/task_cmd.py +0 -0
  76. {agent_wiki_cli-2.3.0 → agent_wiki_cli-2.3.1}/src/llm_wiki_cli/commands/team_cmd.py +0 -0
  77. {agent_wiki_cli-2.3.0 → agent_wiki_cli-2.3.1}/src/llm_wiki_cli/commands/trigger_cmd.py +0 -0
  78. {agent_wiki_cli-2.3.0 → agent_wiki_cli-2.3.1}/src/llm_wiki_cli/commands/uninstall_cmd.py +0 -0
  79. {agent_wiki_cli-2.3.0 → agent_wiki_cli-2.3.1}/src/llm_wiki_cli/commands/upgrade_cmd.py +0 -0
  80. {agent_wiki_cli-2.3.0 → agent_wiki_cli-2.3.1}/src/llm_wiki_cli/config.py +0 -0
  81. {agent_wiki_cli-2.3.0 → agent_wiki_cli-2.3.1}/src/llm_wiki_cli/eval_lite/__init__.py +0 -0
  82. {agent_wiki_cli-2.3.0 → agent_wiki_cli-2.3.1}/src/llm_wiki_cli/eval_lite/planner.py +0 -0
  83. {agent_wiki_cli-2.3.0 → agent_wiki_cli-2.3.1}/src/llm_wiki_cli/examples/plugins/documentation-hooks/README.md +0 -0
  84. {agent_wiki_cli-2.3.0 → agent_wiki_cli-2.3.1}/src/llm_wiki_cli/examples/plugins/documentation-hooks/detectors.py +0 -0
  85. {agent_wiki_cli-2.3.0 → agent_wiki_cli-2.3.1}/src/llm_wiki_cli/examples/plugins/documentation-hooks/llm-wiki-plugin.json +0 -0
  86. {agent_wiki_cli-2.3.0 → agent_wiki_cli-2.3.1}/src/llm_wiki_cli/examples/plugins/documentation-hooks/styles.py +0 -0
  87. {agent_wiki_cli-2.3.0 → agent_wiki_cli-2.3.1}/src/llm_wiki_cli/extractors/__init__.py +0 -0
  88. {agent_wiki_cli-2.3.0 → agent_wiki_cli-2.3.1}/src/llm_wiki_cli/extractors/common.py +0 -0
  89. {agent_wiki_cli-2.3.0 → agent_wiki_cli-2.3.1}/src/llm_wiki_cli/extractors/fastapi_contracts.py +0 -0
  90. {agent_wiki_cli-2.3.0 → agent_wiki_cli-2.3.1}/src/llm_wiki_cli/extractors/go_extractor.py +0 -0
  91. {agent_wiki_cli-2.3.0 → agent_wiki_cli-2.3.1}/src/llm_wiki_cli/extractors/go_scripts/go.mod +0 -0
  92. {agent_wiki_cli-2.3.0 → agent_wiki_cli-2.3.1}/src/llm_wiki_cli/extractors/go_scripts/main.go +0 -0
  93. {agent_wiki_cli-2.3.0 → agent_wiki_cli-2.3.1}/src/llm_wiki_cli/extractors/haskell_extractor.py +0 -0
  94. {agent_wiki_cli-2.3.0 → agent_wiki_cli-2.3.1}/src/llm_wiki_cli/extractors/haskell_scripts/Inventory.hs +0 -0
  95. {agent_wiki_cli-2.3.0 → agent_wiki_cli-2.3.1}/src/llm_wiki_cli/extractors/haskell_scripts/Json.hs +0 -0
  96. {agent_wiki_cli-2.3.0 → agent_wiki_cli-2.3.1}/src/llm_wiki_cli/extractors/haskell_scripts/Main.hs +0 -0
  97. {agent_wiki_cli-2.3.0 → agent_wiki_cli-2.3.1}/src/llm_wiki_cli/extractors/haskell_scripts/Parser.hs +0 -0
  98. {agent_wiki_cli-2.3.0 → agent_wiki_cli-2.3.1}/src/llm_wiki_cli/extractors/haskell_scripts/Paths.hs +0 -0
  99. {agent_wiki_cli-2.3.0 → agent_wiki_cli-2.3.1}/src/llm_wiki_cli/extractors/python_bindings.py +0 -0
  100. {agent_wiki_cli-2.3.0 → agent_wiki_cli-2.3.1}/src/llm_wiki_cli/extractors/python_contracts.py +0 -0
  101. {agent_wiki_cli-2.3.0 → agent_wiki_cli-2.3.1}/src/llm_wiki_cli/extractors/python_extractor.py +0 -0
  102. {agent_wiki_cli-2.3.0 → agent_wiki_cli-2.3.1}/src/llm_wiki_cli/extractors/rust_extractor.py +0 -0
  103. {agent_wiki_cli-2.3.0 → agent_wiki_cli-2.3.1}/src/llm_wiki_cli/extractors/rust_scripts/Cargo.lock +0 -0
  104. {agent_wiki_cli-2.3.0 → agent_wiki_cli-2.3.1}/src/llm_wiki_cli/extractors/rust_scripts/Cargo.toml +0 -0
  105. {agent_wiki_cli-2.3.0 → agent_wiki_cli-2.3.1}/src/llm_wiki_cli/extractors/rust_scripts/src/main.rs +0 -0
  106. {agent_wiki_cli-2.3.0 → agent_wiki_cli-2.3.1}/src/llm_wiki_cli/extractors/ts_extractor.py +0 -0
  107. {agent_wiki_cli-2.3.0 → agent_wiki_cli-2.3.1}/src/llm_wiki_cli/extractors/ts_scripts/extract.js +0 -0
  108. {agent_wiki_cli-2.3.0 → agent_wiki_cli-2.3.1}/src/llm_wiki_cli/extractors/ts_scripts/package-lock.json +0 -0
  109. {agent_wiki_cli-2.3.0 → agent_wiki_cli-2.3.1}/src/llm_wiki_cli/extractors/ts_scripts/package.json +0 -0
  110. {agent_wiki_cli-2.3.0 → agent_wiki_cli-2.3.1}/src/llm_wiki_cli/py.typed +0 -0
  111. {agent_wiki_cli-2.3.0 → agent_wiki_cli-2.3.1}/src/llm_wiki_cli/schemas/__init__.py +0 -0
  112. {agent_wiki_cli-2.3.0 → agent_wiki_cli-2.3.1}/src/llm_wiki_cli/schemas/llm-wiki-knowledge-object-v1.schema.json +0 -0
  113. {agent_wiki_cli-2.3.0 → agent_wiki_cli-2.3.1}/src/llm_wiki_cli/schemas/llm-wiki-knowledge-pack-index-v1.schema.json +0 -0
  114. {agent_wiki_cli-2.3.0 → agent_wiki_cli-2.3.1}/src/llm_wiki_cli/schemas/llm-wiki-knowledge-pack-index-v2.schema.json +0 -0
  115. {agent_wiki_cli-2.3.0 → agent_wiki_cli-2.3.1}/src/llm_wiki_cli/schemas/llm-wiki-knowledge-v1.schema.json +0 -0
  116. {agent_wiki_cli-2.3.0 → agent_wiki_cli-2.3.1}/src/llm_wiki_cli/schemas/llm-wiki-knowledge-v2.schema.json +0 -0
  117. {agent_wiki_cli-2.3.0 → agent_wiki_cli-2.3.1}/src/llm_wiki_cli/schemas/llm-wiki-knowledge-v3.schema.json +0 -0
  118. {agent_wiki_cli-2.3.0 → agent_wiki_cli-2.3.1}/src/llm_wiki_cli/schemas/llm-wiki-knowledge-v4.schema.json +0 -0
  119. {agent_wiki_cli-2.3.0 → agent_wiki_cli-2.3.1}/src/llm_wiki_cli/schemas/llm-wiki-manifest-catalog-v1.schema.json +0 -0
  120. {agent_wiki_cli-2.3.0 → agent_wiki_cli-2.3.1}/src/llm_wiki_cli/schemas/llm-wiki-manifest-v6.schema.json +0 -0
  121. {agent_wiki_cli-2.3.0 → agent_wiki_cli-2.3.1}/src/llm_wiki_cli/services/__init__.py +0 -0
  122. {agent_wiki_cli-2.3.0 → agent_wiki_cli-2.3.1}/src/llm_wiki_cli/services/analysis_capture.py +0 -0
  123. {agent_wiki_cli-2.3.0 → agent_wiki_cli-2.3.1}/src/llm_wiki_cli/services/analysis_compatibility.py +0 -0
  124. {agent_wiki_cli-2.3.0 → agent_wiki_cli-2.3.1}/src/llm_wiki_cli/services/analysis_contracts.json +0 -0
  125. {agent_wiki_cli-2.3.0 → agent_wiki_cli-2.3.1}/src/llm_wiki_cli/services/api_contracts.py +0 -0
  126. {agent_wiki_cli-2.3.0 → agent_wiki_cli-2.3.1}/src/llm_wiki_cli/services/api_diff.py +0 -0
  127. {agent_wiki_cli-2.3.0 → agent_wiki_cli-2.3.1}/src/llm_wiki_cli/services/bootstrap_runtime.py +0 -0
  128. {agent_wiki_cli-2.3.0 → agent_wiki_cli-2.3.1}/src/llm_wiki_cli/services/bootstrap_service.py +0 -0
  129. {agent_wiki_cli-2.3.0 → agent_wiki_cli-2.3.1}/src/llm_wiki_cli/services/calibration/__init__.py +0 -0
  130. {agent_wiki_cli-2.3.0 → agent_wiki_cli-2.3.1}/src/llm_wiki_cli/services/calibration/broker.py +0 -0
  131. {agent_wiki_cli-2.3.0 → agent_wiki_cli-2.3.1}/src/llm_wiki_cli/services/calibration/contracts.py +0 -0
  132. {agent_wiki_cli-2.3.0 → agent_wiki_cli-2.3.1}/src/llm_wiki_cli/services/calibration/controller.py +0 -0
  133. {agent_wiki_cli-2.3.0 → agent_wiki_cli-2.3.1}/src/llm_wiki_cli/services/calibration/host_broker.py +0 -0
  134. {agent_wiki_cli-2.3.0 → agent_wiki_cli-2.3.1}/src/llm_wiki_cli/services/canonical_json.py +0 -0
  135. {agent_wiki_cli-2.3.0 → agent_wiki_cli-2.3.1}/src/llm_wiki_cli/services/canonical_pages.py +0 -0
  136. {agent_wiki_cli-2.3.0 → agent_wiki_cli-2.3.1}/src/llm_wiki_cli/services/capability_diagnostics.py +0 -0
  137. {agent_wiki_cli-2.3.0 → agent_wiki_cli-2.3.1}/src/llm_wiki_cli/services/change_selection.py +0 -0
  138. {agent_wiki_cli-2.3.0 → agent_wiki_cli-2.3.1}/src/llm_wiki_cli/services/ci_installer.py +0 -0
  139. {agent_wiki_cli-2.3.0 → agent_wiki_cli-2.3.1}/src/llm_wiki_cli/services/ci_report.py +0 -0
  140. {agent_wiki_cli-2.3.0 → agent_wiki_cli-2.3.1}/src/llm_wiki_cli/services/circuit_breaker.py +0 -0
  141. {agent_wiki_cli-2.3.0 → agent_wiki_cli-2.3.1}/src/llm_wiki_cli/services/context_budget.py +0 -0
  142. {agent_wiki_cli-2.3.0 → agent_wiki_cli-2.3.1}/src/llm_wiki_cli/services/context_knowledge_contract.py +0 -0
  143. {agent_wiki_cli-2.3.0 → agent_wiki_cli-2.3.1}/src/llm_wiki_cli/services/context_packet.py +0 -0
  144. {agent_wiki_cli-2.3.0 → agent_wiki_cli-2.3.1}/src/llm_wiki_cli/services/context_service.py +0 -0
  145. {agent_wiki_cli-2.3.0 → agent_wiki_cli-2.3.1}/src/llm_wiki_cli/services/context_session.py +0 -0
  146. {agent_wiki_cli-2.3.0 → agent_wiki_cli-2.3.1}/src/llm_wiki_cli/services/contracts.py +0 -0
  147. {agent_wiki_cli-2.3.0 → agent_wiki_cli-2.3.1}/src/llm_wiki_cli/services/data_flow.py +0 -0
  148. {agent_wiki_cli-2.3.0 → agent_wiki_cli-2.3.1}/src/llm_wiki_cli/services/dependencies.py +0 -0
  149. {agent_wiki_cli-2.3.0 → agent_wiki_cli-2.3.1}/src/llm_wiki_cli/services/dependency_versions.py +0 -0
  150. {agent_wiki_cli-2.3.0 → agent_wiki_cli-2.3.1}/src/llm_wiki_cli/services/diagrams.py +0 -0
  151. {agent_wiki_cli-2.3.0 → agent_wiki_cli-2.3.1}/src/llm_wiki_cli/services/doctor_service.py +0 -0
  152. {agent_wiki_cli-2.3.0 → agent_wiki_cli-2.3.1}/src/llm_wiki_cli/services/documentation_calibration.py +0 -0
  153. {agent_wiki_cli-2.3.0 → agent_wiki_cli-2.3.1}/src/llm_wiki_cli/services/documentation_calibration_broker.py +0 -0
  154. {agent_wiki_cli-2.3.0 → agent_wiki_cli-2.3.1}/src/llm_wiki_cli/services/documentation_calibration_controller.py +0 -0
  155. {agent_wiki_cli-2.3.0 → agent_wiki_cli-2.3.1}/src/llm_wiki_cli/services/documentation_calibration_host_broker.py +0 -0
  156. {agent_wiki_cli-2.3.0 → agent_wiki_cli-2.3.1}/src/llm_wiki_cli/services/documentation_claim_evidence.py +0 -0
  157. {agent_wiki_cli-2.3.0 → agent_wiki_cli-2.3.1}/src/llm_wiki_cli/services/documentation_model_policy.py +0 -0
  158. {agent_wiki_cli-2.3.0 → agent_wiki_cli-2.3.1}/src/llm_wiki_cli/services/documentation_native.py +0 -0
  159. {agent_wiki_cli-2.3.0 → agent_wiki_cli-2.3.1}/src/llm_wiki_cli/services/documentation_policy.py +0 -0
  160. {agent_wiki_cli-2.3.0 → agent_wiki_cli-2.3.1}/src/llm_wiki_cli/services/documentation_queries.py +0 -0
  161. {agent_wiki_cli-2.3.0 → agent_wiki_cli-2.3.1}/src/llm_wiki_cli/services/documentation_query_builder.py +0 -0
  162. {agent_wiki_cli-2.3.0 → agent_wiki_cli-2.3.1}/src/llm_wiki_cli/services/documentation_review.py +0 -0
  163. {agent_wiki_cli-2.3.0 → agent_wiki_cli-2.3.1}/src/llm_wiki_cli/services/documentation_run/__init__.py +0 -0
  164. {agent_wiki_cli-2.3.0 → agent_wiki_cli-2.3.1}/src/llm_wiki_cli/services/documentation_run/contracts.py +0 -0
  165. {agent_wiki_cli-2.3.0 → agent_wiki_cli-2.3.1}/src/llm_wiki_cli/services/documentation_run/dependencies.py +0 -0
  166. {agent_wiki_cli-2.3.0 → agent_wiki_cli-2.3.1}/src/llm_wiki_cli/services/documentation_run/export.py +0 -0
  167. {agent_wiki_cli-2.3.0 → agent_wiki_cli-2.3.1}/src/llm_wiki_cli/services/documentation_run/integrity.py +0 -0
  168. {agent_wiki_cli-2.3.0 → agent_wiki_cli-2.3.1}/src/llm_wiki_cli/services/documentation_run/packet.py +0 -0
  169. {agent_wiki_cli-2.3.0 → agent_wiki_cli-2.3.1}/src/llm_wiki_cli/services/documentation_run/prepare.py +0 -0
  170. {agent_wiki_cli-2.3.0 → agent_wiki_cli-2.3.1}/src/llm_wiki_cli/services/documentation_run/record.py +0 -0
  171. {agent_wiki_cli-2.3.0 → agent_wiki_cli-2.3.1}/src/llm_wiki_cli/services/documentation_run/refresh.py +0 -0
  172. {agent_wiki_cli-2.3.0 → agent_wiki_cli-2.3.1}/src/llm_wiki_cli/services/documentation_run/schema.py +0 -0
  173. {agent_wiki_cli-2.3.0 → agent_wiki_cli-2.3.1}/src/llm_wiki_cli/services/documentation_run/verify.py +0 -0
  174. {agent_wiki_cli-2.3.0 → agent_wiki_cli-2.3.1}/src/llm_wiki_cli/services/documentation_run/workspace.py +0 -0
  175. {agent_wiki_cli-2.3.0 → agent_wiki_cli-2.3.1}/src/llm_wiki_cli/services/documentation_wiki_input.py +0 -0
  176. {agent_wiki_cli-2.3.0 → agent_wiki_cli-2.3.1}/src/llm_wiki_cli/services/documentation_worklist.py +0 -0
  177. {agent_wiki_cli-2.3.0 → agent_wiki_cli-2.3.1}/src/llm_wiki_cli/services/entrypoints.py +0 -0
  178. {agent_wiki_cli-2.3.0 → agent_wiki_cli-2.3.1}/src/llm_wiki_cli/services/extraction_jobs.py +0 -0
  179. {agent_wiki_cli-2.3.0 → agent_wiki_cli-2.3.1}/src/llm_wiki_cli/services/extraction_service.py +0 -0
  180. {agent_wiki_cli-2.3.0 → agent_wiki_cli-2.3.1}/src/llm_wiki_cli/services/extractor_helpers.py +0 -0
  181. {agent_wiki_cli-2.3.0 → agent_wiki_cli-2.3.1}/src/llm_wiki_cli/services/filesystem_guard.py +0 -0
  182. {agent_wiki_cli-2.3.0 → agent_wiki_cli-2.3.1}/src/llm_wiki_cli/services/go_calls.py +0 -0
  183. {agent_wiki_cli-2.3.0 → agent_wiki_cli-2.3.1}/src/llm_wiki_cli/services/health_contract.py +0 -0
  184. {agent_wiki_cli-2.3.0 → agent_wiki_cli-2.3.1}/src/llm_wiki_cli/services/health_details.py +0 -0
  185. {agent_wiki_cli-2.3.0 → agent_wiki_cli-2.3.1}/src/llm_wiki_cli/services/health_policy.py +0 -0
  186. {agent_wiki_cli-2.3.0 → agent_wiki_cli-2.3.1}/src/llm_wiki_cli/services/health_summary.py +0 -0
  187. {agent_wiki_cli-2.3.0 → agent_wiki_cli-2.3.1}/src/llm_wiki_cli/services/immutable.py +0 -0
  188. {agent_wiki_cli-2.3.0 → agent_wiki_cli-2.3.1}/src/llm_wiki_cli/services/impact.py +0 -0
  189. {agent_wiki_cli-2.3.0 → agent_wiki_cli-2.3.1}/src/llm_wiki_cli/services/imports.py +0 -0
  190. {agent_wiki_cli-2.3.0 → agent_wiki_cli-2.3.1}/src/llm_wiki_cli/services/infrastructure_inventory.py +0 -0
  191. {agent_wiki_cli-2.3.0 → agent_wiki_cli-2.3.1}/src/llm_wiki_cli/services/infrastructure_sync.py +0 -0
  192. {agent_wiki_cli-2.3.0 → agent_wiki_cli-2.3.1}/src/llm_wiki_cli/services/instruction_ownership.py +0 -0
  193. {agent_wiki_cli-2.3.0 → agent_wiki_cli-2.3.1}/src/llm_wiki_cli/services/inventory_cache.py +0 -0
  194. {agent_wiki_cli-2.3.0 → agent_wiki_cli-2.3.1}/src/llm_wiki_cli/services/io.py +0 -0
  195. {agent_wiki_cli-2.3.0 → agent_wiki_cli-2.3.1}/src/llm_wiki_cli/services/knowledge_artifacts.py +0 -0
  196. {agent_wiki_cli-2.3.0 → agent_wiki_cli-2.3.1}/src/llm_wiki_cli/services/knowledge_audit.py +0 -0
  197. {agent_wiki_cli-2.3.0 → agent_wiki_cli-2.3.1}/src/llm_wiki_cli/services/knowledge_consumption.py +0 -0
  198. {agent_wiki_cli-2.3.0 → agent_wiki_cli-2.3.1}/src/llm_wiki_cli/services/knowledge_coverage.py +0 -0
  199. {agent_wiki_cli-2.3.0 → agent_wiki_cli-2.3.1}/src/llm_wiki_cli/services/knowledge_envelope.py +0 -0
  200. {agent_wiki_cli-2.3.0 → agent_wiki_cli-2.3.1}/src/llm_wiki_cli/services/knowledge_evidence.py +0 -0
  201. {agent_wiki_cli-2.3.0 → agent_wiki_cli-2.3.1}/src/llm_wiki_cli/services/knowledge_freshness.py +0 -0
  202. {agent_wiki_cli-2.3.0 → agent_wiki_cli-2.3.1}/src/llm_wiki_cli/services/knowledge_generation.py +0 -0
  203. {agent_wiki_cli-2.3.0 → agent_wiki_cli-2.3.1}/src/llm_wiki_cli/services/knowledge_graph.py +0 -0
  204. {agent_wiki_cli-2.3.0 → agent_wiki_cli-2.3.1}/src/llm_wiki_cli/services/knowledge_index.py +0 -0
  205. {agent_wiki_cli-2.3.0 → agent_wiki_cli-2.3.1}/src/llm_wiki_cli/services/knowledge_links.py +0 -0
  206. {agent_wiki_cli-2.3.0 → agent_wiki_cli-2.3.1}/src/llm_wiki_cli/services/knowledge_loader.py +0 -0
  207. {agent_wiki_cli-2.3.0 → agent_wiki_cli-2.3.1}/src/llm_wiki_cli/services/knowledge_maintenance.py +0 -0
  208. {agent_wiki_cli-2.3.0 → agent_wiki_cli-2.3.1}/src/llm_wiki_cli/services/knowledge_model.py +0 -0
  209. {agent_wiki_cli-2.3.0 → agent_wiki_cli-2.3.1}/src/llm_wiki_cli/services/knowledge_observability.py +0 -0
  210. {agent_wiki_cli-2.3.0 → agent_wiki_cli-2.3.1}/src/llm_wiki_cli/services/knowledge_orchestration.py +0 -0
  211. {agent_wiki_cli-2.3.0 → agent_wiki_cli-2.3.1}/src/llm_wiki_cli/services/knowledge_packs.py +0 -0
  212. {agent_wiki_cli-2.3.0 → agent_wiki_cli-2.3.1}/src/llm_wiki_cli/services/knowledge_projection.py +0 -0
  213. {agent_wiki_cli-2.3.0 → agent_wiki_cli-2.3.1}/src/llm_wiki_cli/services/knowledge_reuse.py +0 -0
  214. {agent_wiki_cli-2.3.0 → agent_wiki_cli-2.3.1}/src/llm_wiki_cli/services/knowledge_storage_diagnostics.py +0 -0
  215. {agent_wiki_cli-2.3.0 → agent_wiki_cli-2.3.1}/src/llm_wiki_cli/services/knowledge_storage_io.py +0 -0
  216. {agent_wiki_cli-2.3.0 → agent_wiki_cli-2.3.1}/src/llm_wiki_cli/services/knowledge_storage_lifecycle.py +0 -0
  217. {agent_wiki_cli-2.3.0 → agent_wiki_cli-2.3.1}/src/llm_wiki_cli/services/knowledge_stream_audit.py +0 -0
  218. {agent_wiki_cli-2.3.0 → agent_wiki_cli-2.3.1}/src/llm_wiki_cli/services/knowledge_verification.py +0 -0
  219. {agent_wiki_cli-2.3.0 → agent_wiki_cli-2.3.1}/src/llm_wiki_cli/services/legacy_hooks.py +0 -0
  220. {agent_wiki_cli-2.3.0 → agent_wiki_cli-2.3.1}/src/llm_wiki_cli/services/lint_service.py +0 -0
  221. {agent_wiki_cli-2.3.0 → agent_wiki_cli-2.3.1}/src/llm_wiki_cli/services/lockfile.py +0 -0
  222. {agent_wiki_cli-2.3.0 → agent_wiki_cli-2.3.1}/src/llm_wiki_cli/services/maintenance_queue.py +0 -0
  223. {agent_wiki_cli-2.3.0 → agent_wiki_cli-2.3.1}/src/llm_wiki_cli/services/manifest_storage.py +0 -0
  224. {agent_wiki_cli-2.3.0 → agent_wiki_cli-2.3.1}/src/llm_wiki_cli/services/markdown_sections.py +0 -0
  225. {agent_wiki_cli-2.3.0 → agent_wiki_cli-2.3.1}/src/llm_wiki_cli/services/mcp_server.py +0 -0
  226. {agent_wiki_cli-2.3.0 → agent_wiki_cli-2.3.1}/src/llm_wiki_cli/services/metrics.py +0 -0
  227. {agent_wiki_cli-2.3.0 → agent_wiki_cli-2.3.1}/src/llm_wiki_cli/services/module_maps.py +0 -0
  228. {agent_wiki_cli-2.3.0 → agent_wiki_cli-2.3.1}/src/llm_wiki_cli/services/native_inspection.py +0 -0
  229. {agent_wiki_cli-2.3.0 → agent_wiki_cli-2.3.1}/src/llm_wiki_cli/services/obsidian.py +0 -0
  230. {agent_wiki_cli-2.3.0 → agent_wiki_cli-2.3.1}/src/llm_wiki_cli/services/packages.py +0 -0
  231. {agent_wiki_cli-2.3.0 → agent_wiki_cli-2.3.1}/src/llm_wiki_cli/services/packet_field_policy.py +0 -0
  232. {agent_wiki_cli-2.3.0 → agent_wiki_cli-2.3.1}/src/llm_wiki_cli/services/paths.py +0 -0
  233. {agent_wiki_cli-2.3.0 → agent_wiki_cli-2.3.1}/src/llm_wiki_cli/services/plugin_samples.py +0 -0
  234. {agent_wiki_cli-2.3.0 → agent_wiki_cli-2.3.1}/src/llm_wiki_cli/services/plugins.py +0 -0
  235. {agent_wiki_cli-2.3.0 → agent_wiki_cli-2.3.1}/src/llm_wiki_cli/services/progress.py +0 -0
  236. {agent_wiki_cli-2.3.0 → agent_wiki_cli-2.3.1}/src/llm_wiki_cli/services/protected_artifacts.py +0 -0
  237. {agent_wiki_cli-2.3.0 → agent_wiki_cli-2.3.1}/src/llm_wiki_cli/services/python_calls.py +0 -0
  238. {agent_wiki_cli-2.3.0 → agent_wiki_cli-2.3.1}/src/llm_wiki_cli/services/python_imports.py +0 -0
  239. {agent_wiki_cli-2.3.0 → agent_wiki_cli-2.3.1}/src/llm_wiki_cli/services/python_observations.py +0 -0
  240. {agent_wiki_cli-2.3.0 → agent_wiki_cli-2.3.1}/src/llm_wiki_cli/services/python_stdlib.py +0 -0
  241. {agent_wiki_cli-2.3.0 → agent_wiki_cli-2.3.1}/src/llm_wiki_cli/services/redaction.py +0 -0
  242. {agent_wiki_cli-2.3.0 → agent_wiki_cli-2.3.1}/src/llm_wiki_cli/services/relationships.py +0 -0
  243. {agent_wiki_cli-2.3.0 → agent_wiki_cli-2.3.1}/src/llm_wiki_cli/services/rendering_lifecycle.py +0 -0
  244. {agent_wiki_cli-2.3.0 → agent_wiki_cli-2.3.1}/src/llm_wiki_cli/services/request_json.py +0 -0
  245. {agent_wiki_cli-2.3.0 → agent_wiki_cli-2.3.1}/src/llm_wiki_cli/services/resource_diagnostics.py +0 -0
  246. {agent_wiki_cli-2.3.0 → agent_wiki_cli-2.3.1}/src/llm_wiki_cli/services/review_service.py +0 -0
  247. {agent_wiki_cli-2.3.0 → agent_wiki_cli-2.3.1}/src/llm_wiki_cli/services/runtime_output.py +0 -0
  248. {agent_wiki_cli-2.3.0 → agent_wiki_cli-2.3.1}/src/llm_wiki_cli/services/schema.py +0 -0
  249. {agent_wiki_cli-2.3.0 → agent_wiki_cli-2.3.1}/src/llm_wiki_cli/services/search_rank.py +0 -0
  250. {agent_wiki_cli-2.3.0 → agent_wiki_cli-2.3.1}/src/llm_wiki_cli/services/search_service.py +0 -0
  251. {agent_wiki_cli-2.3.0 → agent_wiki_cli-2.3.1}/src/llm_wiki_cli/services/section_ownership.py +0 -0
  252. {agent_wiki_cli-2.3.0 → agent_wiki_cli-2.3.1}/src/llm_wiki_cli/services/secure_file.py +0 -0
  253. {agent_wiki_cli-2.3.0 → agent_wiki_cli-2.3.1}/src/llm_wiki_cli/services/site_export.py +0 -0
  254. {agent_wiki_cli-2.3.0 → agent_wiki_cli-2.3.1}/src/llm_wiki_cli/services/site_html_check.py +0 -0
  255. {agent_wiki_cli-2.3.0 → agent_wiki_cli-2.3.1}/src/llm_wiki_cli/services/skills.py +0 -0
  256. {agent_wiki_cli-2.3.0 → agent_wiki_cli-2.3.1}/src/llm_wiki_cli/services/source_selection.py +0 -0
  257. {agent_wiki_cli-2.3.0 → agent_wiki_cli-2.3.1}/src/llm_wiki_cli/services/source_snapshot.py +0 -0
  258. {agent_wiki_cli-2.3.0 → agent_wiki_cli-2.3.1}/src/llm_wiki_cli/services/storage_receipts.py +0 -0
  259. {agent_wiki_cli-2.3.0 → agent_wiki_cli-2.3.1}/src/llm_wiki_cli/services/storage_sort.py +0 -0
  260. {agent_wiki_cli-2.3.0 → agent_wiki_cli-2.3.1}/src/llm_wiki_cli/services/storage_spool.py +0 -0
  261. {agent_wiki_cli-2.3.0 → agent_wiki_cli-2.3.1}/src/llm_wiki_cli/services/sync_analysis.py +0 -0
  262. {agent_wiki_cli-2.3.0 → agent_wiki_cli-2.3.1}/src/llm_wiki_cli/services/sync_manifest.py +0 -0
  263. {agent_wiki_cli-2.3.0 → agent_wiki_cli-2.3.1}/src/llm_wiki_cli/services/task_context.py +0 -0
  264. {agent_wiki_cli-2.3.0 → agent_wiki_cli-2.3.1}/src/llm_wiki_cli/services/task_context_v2.py +0 -0
  265. {agent_wiki_cli-2.3.0 → agent_wiki_cli-2.3.1}/src/llm_wiki_cli/services/task_contract.py +0 -0
  266. {agent_wiki_cli-2.3.0 → agent_wiki_cli-2.3.1}/src/llm_wiki_cli/services/task_evidence.py +0 -0
  267. {agent_wiki_cli-2.3.0 → agent_wiki_cli-2.3.1}/src/llm_wiki_cli/services/team.py +0 -0
  268. {agent_wiki_cli-2.3.0 → agent_wiki_cli-2.3.1}/src/llm_wiki_cli/services/token_counting.py +0 -0
  269. {agent_wiki_cli-2.3.0 → agent_wiki_cli-2.3.1}/src/llm_wiki_cli/services/validation.py +0 -0
  270. {agent_wiki_cli-2.3.0 → agent_wiki_cli-2.3.1}/src/llm_wiki_cli/services/verification_contracts.py +0 -0
  271. {agent_wiki_cli-2.3.0 → agent_wiki_cli-2.3.1}/src/llm_wiki_cli/services/versioning.py +0 -0
  272. {agent_wiki_cli-2.3.0 → agent_wiki_cli-2.3.1}/src/llm_wiki_cli/services/wiki_git_policy.py +0 -0
  273. {agent_wiki_cli-2.3.0 → agent_wiki_cli-2.3.1}/src/llm_wiki_cli/services/wiki_lifecycle.py +0 -0
  274. {agent_wiki_cli-2.3.0 → agent_wiki_cli-2.3.1}/src/llm_wiki_cli/services/wiki_media.py +0 -0
  275. {agent_wiki_cli-2.3.0 → agent_wiki_cli-2.3.1}/src/llm_wiki_cli/services/wiki_scaffold.py +0 -0
  276. {agent_wiki_cli-2.3.0 → agent_wiki_cli-2.3.1}/src/llm_wiki_cli/services/wiki_surface.py +0 -0
  277. {agent_wiki_cli-2.3.0 → agent_wiki_cli-2.3.1}/src/llm_wiki_cli/services/wiki_surface_index.py +0 -0
  278. {agent_wiki_cli-2.3.0 → agent_wiki_cli-2.3.1}/src/llm_wiki_cli/services/workflow_profile.py +0 -0
  279. {agent_wiki_cli-2.3.0 → agent_wiki_cli-2.3.1}/src/llm_wiki_cli/skills/agent-docs/SKILL.md +0 -0
  280. {agent_wiki_cli-2.3.0 → agent_wiki_cli-2.3.1}/src/llm_wiki_cli/skills/agent-docs/reference.md +0 -0
  281. {agent_wiki_cli-2.3.0 → agent_wiki_cli-2.3.1}/src/llm_wiki_cli/skills/attack-surface/SKILL.md +0 -0
  282. {agent_wiki_cli-2.3.0 → agent_wiki_cli-2.3.1}/src/llm_wiki_cli/skills/attack-surface/reference.md +0 -0
  283. {agent_wiki_cli-2.3.0 → agent_wiki_cli-2.3.1}/src/llm_wiki_cli/skills/dep-audit/SKILL.md +0 -0
  284. {agent_wiki_cli-2.3.0 → agent_wiki_cli-2.3.1}/src/llm_wiki_cli/skills/dep-audit/reference.md +0 -0
  285. {agent_wiki_cli-2.3.0 → agent_wiki_cli-2.3.1}/src/llm_wiki_cli/skills/dep-vuln-triage/SKILL.md +0 -0
  286. {agent_wiki_cli-2.3.0 → agent_wiki_cli-2.3.1}/src/llm_wiki_cli/skills/dep-vuln-triage/reference.md +0 -0
  287. {agent_wiki_cli-2.3.0 → agent_wiki_cli-2.3.1}/src/llm_wiki_cli/skills/doc-hub/SKILL.md +0 -0
  288. {agent_wiki_cli-2.3.0 → agent_wiki_cli-2.3.1}/src/llm_wiki_cli/skills/doc-hub/reference.md +0 -0
  289. {agent_wiki_cli-2.3.0 → agent_wiki_cli-2.3.1}/src/llm_wiki_cli/skills/doc-review/SKILL.md +0 -0
  290. {agent_wiki_cli-2.3.0 → agent_wiki_cli-2.3.1}/src/llm_wiki_cli/skills/doc-review/reference.md +0 -0
  291. {agent_wiki_cli-2.3.0 → agent_wiki_cli-2.3.1}/src/llm_wiki_cli/skills/impact-analysis/SKILL.md +0 -0
  292. {agent_wiki_cli-2.3.0 → agent_wiki_cli-2.3.1}/src/llm_wiki_cli/skills/impact-analysis/reference.md +0 -0
  293. {agent_wiki_cli-2.3.0 → agent_wiki_cli-2.3.1}/src/llm_wiki_cli/skills/infra-review/SKILL.md +0 -0
  294. {agent_wiki_cli-2.3.0 → agent_wiki_cli-2.3.1}/src/llm_wiki_cli/skills/infra-review/reference.md +0 -0
  295. {agent_wiki_cli-2.3.0 → agent_wiki_cli-2.3.1}/src/llm_wiki_cli/skills/native-coding/SKILL.md +0 -0
  296. {agent_wiki_cli-2.3.0 → agent_wiki_cli-2.3.1}/src/llm_wiki_cli/skills/native-coding/profile.json +0 -0
  297. {agent_wiki_cli-2.3.0 → agent_wiki_cli-2.3.1}/src/llm_wiki_cli/skills/onboarding-guide/SKILL.md +0 -0
  298. {agent_wiki_cli-2.3.0 → agent_wiki_cli-2.3.1}/src/llm_wiki_cli/skills/onboarding-guide/reference.md +0 -0
  299. {agent_wiki_cli-2.3.0 → agent_wiki_cli-2.3.1}/src/llm_wiki_cli/skills/publish-docs/SKILL.md +0 -0
  300. {agent_wiki_cli-2.3.0 → agent_wiki_cli-2.3.1}/src/llm_wiki_cli/skills/publish-docs/reference.md +0 -0
  301. {agent_wiki_cli-2.3.0 → agent_wiki_cli-2.3.1}/src/llm_wiki_cli/skills/usage-examples/SKILL.md +0 -0
  302. {agent_wiki_cli-2.3.0 → agent_wiki_cli-2.3.1}/src/llm_wiki_cli/skills/usage-examples/reference.md +0 -0
  303. {agent_wiki_cli-2.3.0 → agent_wiki_cli-2.3.1}/src/llm_wiki_cli/skills/user-docs-author/SKILL.md +0 -0
  304. {agent_wiki_cli-2.3.0 → agent_wiki_cli-2.3.1}/src/llm_wiki_cli/skills/user-docs-author/reference.md +0 -0
  305. {agent_wiki_cli-2.3.0 → agent_wiki_cli-2.3.1}/src/llm_wiki_cli/skills/wiki-bootstrap/SKILL.md +0 -0
  306. {agent_wiki_cli-2.3.0 → agent_wiki_cli-2.3.1}/src/llm_wiki_cli/skills/wiki-bootstrap/reference.md +0 -0
  307. {agent_wiki_cli-2.3.0 → agent_wiki_cli-2.3.1}/src/llm_wiki_cli/skills/wiki-reference/SKILL.md +0 -0
  308. {agent_wiki_cli-2.3.0 → agent_wiki_cli-2.3.1}/src/llm_wiki_cli/skills/wiki-reference/reference.md +0 -0
  309. {agent_wiki_cli-2.3.0 → agent_wiki_cli-2.3.1}/src/llm_wiki_cli/skills/wiki-reference/references/context-query.md +0 -0
  310. {agent_wiki_cli-2.3.0 → agent_wiki_cli-2.3.1}/src/llm_wiki_cli/skills/wiki-reference/references/extractors-dependencies.md +0 -0
  311. {agent_wiki_cli-2.3.0 → agent_wiki_cli-2.3.1}/src/llm_wiki_cli/skills/wiki-reference/references/governance.md +0 -0
  312. {agent_wiki_cli-2.3.0 → agent_wiki_cli-2.3.1}/src/llm_wiki_cli/skills/wiki-reference/references/knowledge-consumption.md +0 -0
  313. {agent_wiki_cli-2.3.0 → agent_wiki_cli-2.3.1}/src/llm_wiki_cli/skills/wiki-reference/references/maintenance.md +0 -0
  314. {agent_wiki_cli-2.3.0 → agent_wiki_cli-2.3.1}/src/llm_wiki_cli/skills/wiki-reference/references/publishing.md +0 -0
  315. {agent_wiki_cli-2.3.0 → agent_wiki_cli-2.3.1}/src/llm_wiki_cli/skills/wiki-reference/references/repository-handoff.md +0 -0
  316. {agent_wiki_cli-2.3.0 → agent_wiki_cli-2.3.1}/src/llm_wiki_cli/skills/wiki-reference/references/resources-context.md +0 -0
  317. {agent_wiki_cli-2.3.0 → agent_wiki_cli-2.3.1}/src/llm_wiki_cli/skills/wiki-reference/references/surfaces-naming.md +0 -0
  318. {agent_wiki_cli-2.3.0 → agent_wiki_cli-2.3.1}/src/llm_wiki_cli/skills/wiki-semantic-enhance/SKILL.md +0 -0
  319. {agent_wiki_cli-2.3.0 → agent_wiki_cli-2.3.1}/src/llm_wiki_cli/skills/wiki-semantic-enhance/reference.md +0 -0
  320. {agent_wiki_cli-2.3.0 → agent_wiki_cli-2.3.1}/src/llm_wiki_cli/skills/wiki-sync/SKILL.md +0 -0
  321. {agent_wiki_cli-2.3.0 → agent_wiki_cli-2.3.1}/src/llm_wiki_cli/skills/wiki-sync/reference.md +0 -0
  322. {agent_wiki_cli-2.3.0 → agent_wiki_cli-2.3.1}/tests/test_action_runtimes.py +0 -0
  323. {agent_wiki_cli-2.3.0 → agent_wiki_cli-2.3.1}/tests/test_agent_instruction_decisions.py +0 -0
  324. {agent_wiki_cli-2.3.0 → agent_wiki_cli-2.3.1}/tests/test_analysis_compatibility.py +0 -0
  325. {agent_wiki_cli-2.3.0 → agent_wiki_cli-2.3.1}/tests/test_analysis_qualification.py +0 -0
  326. {agent_wiki_cli-2.3.0 → agent_wiki_cli-2.3.1}/tests/test_api.py +0 -0
  327. {agent_wiki_cli-2.3.0 → agent_wiki_cli-2.3.1}/tests/test_api_contracts.py +0 -0
  328. {agent_wiki_cli-2.3.0 → agent_wiki_cli-2.3.1}/tests/test_api_diff.py +0 -0
  329. {agent_wiki_cli-2.3.0 → agent_wiki_cli-2.3.1}/tests/test_api_exception_taxonomy.py +0 -0
  330. {agent_wiki_cli-2.3.0 → agent_wiki_cli-2.3.1}/tests/test_artifact_fixture_clock.py +0 -0
  331. {agent_wiki_cli-2.3.0 → agent_wiki_cli-2.3.1}/tests/test_bandit_decision.py +0 -0
  332. {agent_wiki_cli-2.3.0 → agent_wiki_cli-2.3.1}/tests/test_bandit_probe_metadata.py +0 -0
  333. {agent_wiki_cli-2.3.0 → agent_wiki_cli-2.3.1}/tests/test_bandit_runner.py +0 -0
  334. {agent_wiki_cli-2.3.0 → agent_wiki_cli-2.3.1}/tests/test_bootstrap.py +0 -0
  335. {agent_wiki_cli-2.3.0 → agent_wiki_cli-2.3.1}/tests/test_bootstrap_api_contracts.py +0 -0
  336. {agent_wiki_cli-2.3.0 → agent_wiki_cli-2.3.1}/tests/test_bootstrap_service.py +0 -0
  337. {agent_wiki_cli-2.3.0 → agent_wiki_cli-2.3.1}/tests/test_bump.py +0 -0
  338. {agent_wiki_cli-2.3.0 → agent_wiki_cli-2.3.1}/tests/test_calibration_cli.py +0 -0
  339. {agent_wiki_cli-2.3.0 → agent_wiki_cli-2.3.1}/tests/test_calibration_isolation.py +0 -0
  340. {agent_wiki_cli-2.3.0 → agent_wiki_cli-2.3.1}/tests/test_capability_diagnostics.py +0 -0
  341. {agent_wiki_cli-2.3.0 → agent_wiki_cli-2.3.1}/tests/test_change_selection.py +0 -0
  342. {agent_wiki_cli-2.3.0 → agent_wiki_cli-2.3.1}/tests/test_ci_check.py +0 -0
  343. {agent_wiki_cli-2.3.0 → agent_wiki_cli-2.3.1}/tests/test_ci_runtime_output.py +0 -0
  344. {agent_wiki_cli-2.3.0 → agent_wiki_cli-2.3.1}/tests/test_ci_toolchain_setup.py +0 -0
  345. {agent_wiki_cli-2.3.0 → agent_wiki_cli-2.3.1}/tests/test_ci_workflow_wrapper.py +0 -0
  346. {agent_wiki_cli-2.3.0 → agent_wiki_cli-2.3.1}/tests/test_circuit_breaker.py +0 -0
  347. {agent_wiki_cli-2.3.0 → agent_wiki_cli-2.3.1}/tests/test_cli.py +0 -0
  348. {agent_wiki_cli-2.3.0 → agent_wiki_cli-2.3.1}/tests/test_cli_error_streams.py +0 -0
  349. {agent_wiki_cli-2.3.0 → agent_wiki_cli-2.3.1}/tests/test_config.py +0 -0
  350. {agent_wiki_cli-2.3.0 → agent_wiki_cli-2.3.1}/tests/test_context.py +0 -0
  351. {agent_wiki_cli-2.3.0 → agent_wiki_cli-2.3.1}/tests/test_context_budget.py +0 -0
  352. {agent_wiki_cli-2.3.0 → agent_wiki_cli-2.3.1}/tests/test_context_integration.py +0 -0
  353. {agent_wiki_cli-2.3.0 → agent_wiki_cli-2.3.1}/tests/test_context_knowledge_contract.py +0 -0
  354. {agent_wiki_cli-2.3.0 → agent_wiki_cli-2.3.1}/tests/test_context_knowledge_runtime.py +0 -0
  355. {agent_wiki_cli-2.3.0 → agent_wiki_cli-2.3.1}/tests/test_context_packet.py +0 -0
  356. {agent_wiki_cli-2.3.0 → agent_wiki_cli-2.3.1}/tests/test_context_packet_knowledge.py +0 -0
  357. {agent_wiki_cli-2.3.0 → agent_wiki_cli-2.3.1}/tests/test_context_session.py +0 -0
  358. {agent_wiki_cli-2.3.0 → agent_wiki_cli-2.3.1}/tests/test_core_shard_runner.py +0 -0
  359. {agent_wiki_cli-2.3.0 → agent_wiki_cli-2.3.1}/tests/test_core_shard_workflow.py +0 -0
  360. {agent_wiki_cli-2.3.0 → agent_wiki_cli-2.3.1}/tests/test_core_shards.py +0 -0
  361. {agent_wiki_cli-2.3.0 → agent_wiki_cli-2.3.1}/tests/test_data_flow.py +0 -0
  362. {agent_wiki_cli-2.3.0 → agent_wiki_cli-2.3.1}/tests/test_dep_vuln_triage_skill.py +0 -0
  363. {agent_wiki_cli-2.3.0 → agent_wiki_cli-2.3.1}/tests/test_dependencies.py +0 -0
  364. {agent_wiki_cli-2.3.0 → agent_wiki_cli-2.3.1}/tests/test_dependencies_external.py +0 -0
  365. {agent_wiki_cli-2.3.0 → agent_wiki_cli-2.3.1}/tests/test_dependency_downloads.py +0 -0
  366. {agent_wiki_cli-2.3.0 → agent_wiki_cli-2.3.1}/tests/test_dependency_setup_probe.py +0 -0
  367. {agent_wiki_cli-2.3.0 → agent_wiki_cli-2.3.1}/tests/test_dependency_setup_workflow.py +0 -0
  368. {agent_wiki_cli-2.3.0 → agent_wiki_cli-2.3.1}/tests/test_dependency_version_details.py +0 -0
  369. {agent_wiki_cli-2.3.0 → agent_wiki_cli-2.3.1}/tests/test_diagrams.py +0 -0
  370. {agent_wiki_cli-2.3.0 → agent_wiki_cli-2.3.1}/tests/test_docker_bootstrap.py +0 -0
  371. {agent_wiki_cli-2.3.0 → agent_wiki_cli-2.3.1}/tests/test_docker_extract.py +0 -0
  372. {agent_wiki_cli-2.3.0 → agent_wiki_cli-2.3.1}/tests/test_docker_lint.py +0 -0
  373. {agent_wiki_cli-2.3.0 → agent_wiki_cli-2.3.1}/tests/test_docs_cli.py +0 -0
  374. {agent_wiki_cli-2.3.0 → agent_wiki_cli-2.3.1}/tests/test_doctor.py +0 -0
  375. {agent_wiki_cli-2.3.0 → agent_wiki_cli-2.3.1}/tests/test_documentation_adversarial.py +0 -0
  376. {agent_wiki_cli-2.3.0 → agent_wiki_cli-2.3.1}/tests/test_documentation_calibration.py +0 -0
  377. {agent_wiki_cli-2.3.0 → agent_wiki_cli-2.3.1}/tests/test_documentation_calibration_broker.py +0 -0
  378. {agent_wiki_cli-2.3.0 → agent_wiki_cli-2.3.1}/tests/test_documentation_calibration_controller.py +0 -0
  379. {agent_wiki_cli-2.3.0 → agent_wiki_cli-2.3.1}/tests/test_documentation_calibration_host_broker.py +0 -0
  380. {agent_wiki_cli-2.3.0 → agent_wiki_cli-2.3.1}/tests/test_documentation_calibration_oci_integration.py +0 -0
  381. {agent_wiki_cli-2.3.0 → agent_wiki_cli-2.3.1}/tests/test_documentation_claim_evidence.py +0 -0
  382. {agent_wiki_cli-2.3.0 → agent_wiki_cli-2.3.1}/tests/test_documentation_control_integrity.py +0 -0
  383. {agent_wiki_cli-2.3.0 → agent_wiki_cli-2.3.1}/tests/test_documentation_dogfood.py +0 -0
  384. {agent_wiki_cli-2.3.0 → agent_wiki_cli-2.3.1}/tests/test_documentation_input_recheck.py +0 -0
  385. {agent_wiki_cli-2.3.0 → agent_wiki_cli-2.3.1}/tests/test_documentation_model_policy.py +0 -0
  386. {agent_wiki_cli-2.3.0 → agent_wiki_cli-2.3.1}/tests/test_documentation_native.py +0 -0
  387. {agent_wiki_cli-2.3.0 → agent_wiki_cli-2.3.1}/tests/test_documentation_native_lifecycle.py +0 -0
  388. {agent_wiki_cli-2.3.0 → agent_wiki_cli-2.3.1}/tests/test_documentation_prepare_transaction.py +0 -0
  389. {agent_wiki_cli-2.3.0 → agent_wiki_cli-2.3.1}/tests/test_documentation_projection_policy.py +0 -0
  390. {agent_wiki_cli-2.3.0 → agent_wiki_cli-2.3.1}/tests/test_documentation_protocol.py +0 -0
  391. {agent_wiki_cli-2.3.0 → agent_wiki_cli-2.3.1}/tests/test_documentation_queries.py +0 -0
  392. {agent_wiki_cli-2.3.0 → agent_wiki_cli-2.3.1}/tests/test_documentation_refresh_continuation.py +0 -0
  393. {agent_wiki_cli-2.3.0 → agent_wiki_cli-2.3.1}/tests/test_documentation_review.py +0 -0
  394. {agent_wiki_cli-2.3.0 → agent_wiki_cli-2.3.1}/tests/test_documentation_run_fixtures.py +0 -0
  395. {agent_wiki_cli-2.3.0 → agent_wiki_cli-2.3.1}/tests/test_documentation_wiki_input.py +0 -0
  396. {agent_wiki_cli-2.3.0 → agent_wiki_cli-2.3.1}/tests/test_documentation_worklist.py +0 -0
  397. {agent_wiki_cli-2.3.0 → agent_wiki_cli-2.3.1}/tests/test_documentation_workspace.py +0 -0
  398. {agent_wiki_cli-2.3.0 → agent_wiki_cli-2.3.1}/tests/test_e2e.py +0 -0
  399. {agent_wiki_cli-2.3.0 → agent_wiki_cli-2.3.1}/tests/test_enriched_projection_resilience.py +0 -0
  400. {agent_wiki_cli-2.3.0 → agent_wiki_cli-2.3.1}/tests/test_entrypoints.py +0 -0
  401. {agent_wiki_cli-2.3.0 → agent_wiki_cli-2.3.1}/tests/test_eval_lite.py +0 -0
  402. {agent_wiki_cli-2.3.0 → agent_wiki_cli-2.3.1}/tests/test_examples.py +0 -0
  403. {agent_wiki_cli-2.3.0 → agent_wiki_cli-2.3.1}/tests/test_extract.py +0 -0
  404. {agent_wiki_cli-2.3.0 → agent_wiki_cli-2.3.1}/tests/test_extract_api_contracts.py +0 -0
  405. {agent_wiki_cli-2.3.0 → agent_wiki_cli-2.3.1}/tests/test_extract_data_flow_details.py +0 -0
  406. {agent_wiki_cli-2.3.0 → agent_wiki_cli-2.3.1}/tests/test_extractor_helpers.py +0 -0
  407. {agent_wiki_cli-2.3.0 → agent_wiki_cli-2.3.1}/tests/test_extractor_inventory_contracts.py +0 -0
  408. {agent_wiki_cli-2.3.0 → agent_wiki_cli-2.3.1}/tests/test_filesystem_guard.py +0 -0
  409. {agent_wiki_cli-2.3.0 → agent_wiki_cli-2.3.1}/tests/test_filesystem_guard_windows.py +0 -0
  410. {agent_wiki_cli-2.3.0 → agent_wiki_cli-2.3.1}/tests/test_filesystem_guard_windows_model.py +0 -0
  411. {agent_wiki_cli-2.3.0 → agent_wiki_cli-2.3.1}/tests/test_generate_prompt.py +0 -0
  412. {agent_wiki_cli-2.3.0 → agent_wiki_cli-2.3.1}/tests/test_generated_relationship_pages.py +0 -0
  413. {agent_wiki_cli-2.3.0 → agent_wiki_cli-2.3.1}/tests/test_github_action.py +0 -0
  414. {agent_wiki_cli-2.3.0 → agent_wiki_cli-2.3.1}/tests/test_github_action_shell.py +0 -0
  415. {agent_wiki_cli-2.3.0 → agent_wiki_cli-2.3.1}/tests/test_go_calls.py +0 -0
  416. {agent_wiki_cli-2.3.0 → agent_wiki_cli-2.3.1}/tests/test_go_extract.py +0 -0
  417. {agent_wiki_cli-2.3.0 → agent_wiki_cli-2.3.1}/tests/test_governance_reconciliation.py +0 -0
  418. {agent_wiki_cli-2.3.0 → agent_wiki_cli-2.3.1}/tests/test_graph_section_end_to_end.py +0 -0
  419. {agent_wiki_cli-2.3.0 → agent_wiki_cli-2.3.1}/tests/test_guarded_read_metadata.py +0 -0
  420. {agent_wiki_cli-2.3.0 → agent_wiki_cli-2.3.1}/tests/test_haskell_extract.py +0 -0
  421. {agent_wiki_cli-2.3.0 → agent_wiki_cli-2.3.1}/tests/test_health_details.py +0 -0
  422. {agent_wiki_cli-2.3.0 → agent_wiki_cli-2.3.1}/tests/test_helper_packaging_parity.py +0 -0
  423. {agent_wiki_cli-2.3.0 → agent_wiki_cli-2.3.1}/tests/test_hook.py +0 -0
  424. {agent_wiki_cli-2.3.0 → agent_wiki_cli-2.3.1}/tests/test_hosted_evidence.py +0 -0
  425. {agent_wiki_cli-2.3.0 → agent_wiki_cli-2.3.1}/tests/test_impact.py +0 -0
  426. {agent_wiki_cli-2.3.0 → agent_wiki_cli-2.3.1}/tests/test_imports.py +0 -0
  427. {agent_wiki_cli-2.3.0 → agent_wiki_cli-2.3.1}/tests/test_infra_review_skill.py +0 -0
  428. {agent_wiki_cli-2.3.0 → agent_wiki_cli-2.3.1}/tests/test_infrastructure_inventory.py +0 -0
  429. {agent_wiki_cli-2.3.0 → agent_wiki_cli-2.3.1}/tests/test_infrastructure_sync.py +0 -0
  430. {agent_wiki_cli-2.3.0 → agent_wiki_cli-2.3.1}/tests/test_init.py +0 -0
  431. {agent_wiki_cli-2.3.0 → agent_wiki_cli-2.3.1}/tests/test_install.py +0 -0
  432. {agent_wiki_cli-2.3.0 → agent_wiki_cli-2.3.1}/tests/test_install_ci.py +0 -0
  433. {agent_wiki_cli-2.3.0 → agent_wiki_cli-2.3.1}/tests/test_instruction_ownership.py +0 -0
  434. {agent_wiki_cli-2.3.0 → agent_wiki_cli-2.3.1}/tests/test_inventory_cache.py +0 -0
  435. {agent_wiki_cli-2.3.0 → agent_wiki_cli-2.3.1}/tests/test_io.py +0 -0
  436. {agent_wiki_cli-2.3.0 → agent_wiki_cli-2.3.1}/tests/test_knowledge_artifacts.py +0 -0
  437. {agent_wiki_cli-2.3.0 → agent_wiki_cli-2.3.1}/tests/test_knowledge_benchmark.py +0 -0
  438. {agent_wiki_cli-2.3.0 → agent_wiki_cli-2.3.1}/tests/test_knowledge_cmd.py +0 -0
  439. {agent_wiki_cli-2.3.0 → agent_wiki_cli-2.3.1}/tests/test_knowledge_commands.py +0 -0
  440. {agent_wiki_cli-2.3.0 → agent_wiki_cli-2.3.1}/tests/test_knowledge_compatibility.py +0 -0
  441. {agent_wiki_cli-2.3.0 → agent_wiki_cli-2.3.1}/tests/test_knowledge_consumption.py +0 -0
  442. {agent_wiki_cli-2.3.0 → agent_wiki_cli-2.3.1}/tests/test_knowledge_contract.py +0 -0
  443. {agent_wiki_cli-2.3.0 → agent_wiki_cli-2.3.1}/tests/test_knowledge_coverage.py +0 -0
  444. {agent_wiki_cli-2.3.0 → agent_wiki_cli-2.3.1}/tests/test_knowledge_envelope.py +0 -0
  445. {agent_wiki_cli-2.3.0 → agent_wiki_cli-2.3.1}/tests/test_knowledge_evidence.py +0 -0
  446. {agent_wiki_cli-2.3.0 → agent_wiki_cli-2.3.1}/tests/test_knowledge_freshness.py +0 -0
  447. {agent_wiki_cli-2.3.0 → agent_wiki_cli-2.3.1}/tests/test_knowledge_generation.py +0 -0
  448. {agent_wiki_cli-2.3.0 → agent_wiki_cli-2.3.1}/tests/test_knowledge_graph.py +0 -0
  449. {agent_wiki_cli-2.3.0 → agent_wiki_cli-2.3.1}/tests/test_knowledge_hardening.py +0 -0
  450. {agent_wiki_cli-2.3.0 → agent_wiki_cli-2.3.1}/tests/test_knowledge_health_refresh.py +0 -0
  451. {agent_wiki_cli-2.3.0 → agent_wiki_cli-2.3.1}/tests/test_knowledge_index.py +0 -0
  452. {agent_wiki_cli-2.3.0 → agent_wiki_cli-2.3.1}/tests/test_knowledge_links.py +0 -0
  453. {agent_wiki_cli-2.3.0 → agent_wiki_cli-2.3.1}/tests/test_knowledge_lint.py +0 -0
  454. {agent_wiki_cli-2.3.0 → agent_wiki_cli-2.3.1}/tests/test_knowledge_loader.py +0 -0
  455. {agent_wiki_cli-2.3.0 → agent_wiki_cli-2.3.1}/tests/test_knowledge_maintenance.py +0 -0
  456. {agent_wiki_cli-2.3.0 → agent_wiki_cli-2.3.1}/tests/test_knowledge_model.py +0 -0
  457. {agent_wiki_cli-2.3.0 → agent_wiki_cli-2.3.1}/tests/test_knowledge_observability.py +0 -0
  458. {agent_wiki_cli-2.3.0 → agent_wiki_cli-2.3.1}/tests/test_knowledge_packs.py +0 -0
  459. {agent_wiki_cli-2.3.0 → agent_wiki_cli-2.3.1}/tests/test_knowledge_performance.py +0 -0
  460. {agent_wiki_cli-2.3.0 → agent_wiki_cli-2.3.1}/tests/test_knowledge_producer_languages.py +0 -0
  461. {agent_wiki_cli-2.3.0 → agent_wiki_cli-2.3.1}/tests/test_knowledge_projection.py +0 -0
  462. {agent_wiki_cli-2.3.0 → agent_wiki_cli-2.3.1}/tests/test_knowledge_projection_e2e.py +0 -0
  463. {agent_wiki_cli-2.3.0 → agent_wiki_cli-2.3.1}/tests/test_knowledge_queries.py +0 -0
  464. {agent_wiki_cli-2.3.0 → agent_wiki_cli-2.3.1}/tests/test_knowledge_query_adapters.py +0 -0
  465. {agent_wiki_cli-2.3.0 → agent_wiki_cli-2.3.1}/tests/test_knowledge_reuse.py +0 -0
  466. {agent_wiki_cli-2.3.0 → agent_wiki_cli-2.3.1}/tests/test_knowledge_scale.py +0 -0
  467. {agent_wiki_cli-2.3.0 → agent_wiki_cli-2.3.1}/tests/test_knowledge_storage_artifacts.py +0 -0
  468. {agent_wiki_cli-2.3.0 → agent_wiki_cli-2.3.1}/tests/test_knowledge_storage_lifecycle.py +0 -0
  469. {agent_wiki_cli-2.3.0 → agent_wiki_cli-2.3.1}/tests/test_knowledge_verification_view.py +0 -0
  470. {agent_wiki_cli-2.3.0 → agent_wiki_cli-2.3.1}/tests/test_lint.py +0 -0
  471. {agent_wiki_cli-2.3.0 → agent_wiki_cli-2.3.1}/tests/test_llm_wiki_convergence_script.py +0 -0
  472. {agent_wiki_cli-2.3.0 → agent_wiki_cli-2.3.1}/tests/test_llm_wiki_convergence_workflow.py +0 -0
  473. {agent_wiki_cli-2.3.0 → agent_wiki_cli-2.3.1}/tests/test_lockfile.py +0 -0
  474. {agent_wiki_cli-2.3.0 → agent_wiki_cli-2.3.1}/tests/test_maintenance_queue.py +0 -0
  475. {agent_wiki_cli-2.3.0 → agent_wiki_cli-2.3.1}/tests/test_managed_reference_topics.py +0 -0
  476. {agent_wiki_cli-2.3.0 → agent_wiki_cli-2.3.1}/tests/test_manifest_storage.py +0 -0
  477. {agent_wiki_cli-2.3.0 → agent_wiki_cli-2.3.1}/tests/test_markdown_sections.py +0 -0
  478. {agent_wiki_cli-2.3.0 → agent_wiki_cli-2.3.1}/tests/test_mcp.py +0 -0
  479. {agent_wiki_cli-2.3.0 → agent_wiki_cli-2.3.1}/tests/test_mcp_probe.py +0 -0
  480. {agent_wiki_cli-2.3.0 → agent_wiki_cli-2.3.1}/tests/test_mcp_sdk.py +0 -0
  481. {agent_wiki_cli-2.3.0 → agent_wiki_cli-2.3.1}/tests/test_metrics.py +0 -0
  482. {agent_wiki_cli-2.3.0 → agent_wiki_cli-2.3.1}/tests/test_migrate.py +0 -0
  483. {agent_wiki_cli-2.3.0 → agent_wiki_cli-2.3.1}/tests/test_module_maps.py +0 -0
  484. {agent_wiki_cli-2.3.0 → agent_wiki_cli-2.3.1}/tests/test_multilanguage_wiki.py +0 -0
  485. {agent_wiki_cli-2.3.0 → agent_wiki_cli-2.3.1}/tests/test_native_inspection.py +0 -0
  486. {agent_wiki_cli-2.3.0 → agent_wiki_cli-2.3.1}/tests/test_native_knowledge_semantics_docs.py +0 -0
  487. {agent_wiki_cli-2.3.0 → agent_wiki_cli-2.3.1}/tests/test_native_query_boundaries.py +0 -0
  488. {agent_wiki_cli-2.3.0 → agent_wiki_cli-2.3.1}/tests/test_native_reduction_contracts.py +0 -0
  489. {agent_wiki_cli-2.3.0 → agent_wiki_cli-2.3.1}/tests/test_native_skill_preflight_and_reanchor.py +0 -0
  490. {agent_wiki_cli-2.3.0 → agent_wiki_cli-2.3.1}/tests/test_native_workflow_baseline.py +0 -0
  491. {agent_wiki_cli-2.3.0 → agent_wiki_cli-2.3.1}/tests/test_native_workflow_codex_host.py +0 -0
  492. {agent_wiki_cli-2.3.0 → agent_wiki_cli-2.3.1}/tests/test_native_workflow_executable.py +0 -0
  493. {agent_wiki_cli-2.3.0 → agent_wiki_cli-2.3.1}/tests/test_native_workflow_oracles.py +0 -0
  494. {agent_wiki_cli-2.3.0 → agent_wiki_cli-2.3.1}/tests/test_native_workflow_scenarios.py +0 -0
  495. {agent_wiki_cli-2.3.0 → agent_wiki_cli-2.3.1}/tests/test_native_workflow_trace.py +0 -0
  496. {agent_wiki_cli-2.3.0 → agent_wiki_cli-2.3.1}/tests/test_navigation_layouts.py +0 -0
  497. {agent_wiki_cli-2.3.0 → agent_wiki_cli-2.3.1}/tests/test_obsidian.py +0 -0
  498. {agent_wiki_cli-2.3.0 → agent_wiki_cli-2.3.1}/tests/test_optimization_evidence.py +0 -0
  499. {agent_wiki_cli-2.3.0 → agent_wiki_cli-2.3.1}/tests/test_optimization_measurements.py +0 -0
  500. {agent_wiki_cli-2.3.0 → agent_wiki_cli-2.3.1}/tests/test_package_validation.py +0 -0
  501. {agent_wiki_cli-2.3.0 → agent_wiki_cli-2.3.1}/tests/test_packages.py +0 -0
  502. {agent_wiki_cli-2.3.0 → agent_wiki_cli-2.3.1}/tests/test_packet_field_policy.py +0 -0
  503. {agent_wiki_cli-2.3.0 → agent_wiki_cli-2.3.1}/tests/test_paths.py +0 -0
  504. {agent_wiki_cli-2.3.0 → agent_wiki_cli-2.3.1}/tests/test_plugin_sample.py +0 -0
  505. {agent_wiki_cli-2.3.0 → agent_wiki_cli-2.3.1}/tests/test_plugins.py +0 -0
  506. {agent_wiki_cli-2.3.0 → agent_wiki_cli-2.3.1}/tests/test_progress.py +0 -0
  507. {agent_wiki_cli-2.3.0 → agent_wiki_cli-2.3.1}/tests/test_protected_artifacts.py +0 -0
  508. {agent_wiki_cli-2.3.0 → agent_wiki_cli-2.3.1}/tests/test_protocol_registry.py +0 -0
  509. {agent_wiki_cli-2.3.0 → agent_wiki_cli-2.3.1}/tests/test_provider_conformance.py +0 -0
  510. {agent_wiki_cli-2.3.0 → agent_wiki_cli-2.3.1}/tests/test_provisioning_failures.py +0 -0
  511. {agent_wiki_cli-2.3.0 → agent_wiki_cli-2.3.1}/tests/test_public_docs_performance.py +0 -0
  512. {agent_wiki_cli-2.3.0 → agent_wiki_cli-2.3.1}/tests/test_public_docs_vocabulary.py +0 -0
  513. {agent_wiki_cli-2.3.0 → agent_wiki_cli-2.3.1}/tests/test_publishing_hub_attack_contracts.py +0 -0
  514. {agent_wiki_cli-2.3.0 → agent_wiki_cli-2.3.1}/tests/test_pytest_portability.py +0 -0
  515. {agent_wiki_cli-2.3.0 → agent_wiki_cli-2.3.1}/tests/test_python_call_bindings.py +0 -0
  516. {agent_wiki_cli-2.3.0 → agent_wiki_cli-2.3.1}/tests/test_python_import_scopes.py +0 -0
  517. {agent_wiki_cli-2.3.0 → agent_wiki_cli-2.3.1}/tests/test_python_observation_cache.py +0 -0
  518. {agent_wiki_cli-2.3.0 → agent_wiki_cli-2.3.1}/tests/test_python_source_inventory.py +0 -0
  519. {agent_wiki_cli-2.3.0 → agent_wiki_cli-2.3.1}/tests/test_python_typed_dicts.py +0 -0
  520. {agent_wiki_cli-2.3.0 → agent_wiki_cli-2.3.1}/tests/test_qualified_context_acceptance.py +0 -0
  521. {agent_wiki_cli-2.3.0 → agent_wiki_cli-2.3.1}/tests/test_quality_workflows.py +0 -0
  522. {agent_wiki_cli-2.3.0 → agent_wiki_cli-2.3.1}/tests/test_readonly_subprocess_stdin.py +0 -0
  523. {agent_wiki_cli-2.3.0 → agent_wiki_cli-2.3.1}/tests/test_redaction.py +0 -0
  524. {agent_wiki_cli-2.3.0 → agent_wiki_cli-2.3.1}/tests/test_reference_skill_verifier.py +0 -0
  525. {agent_wiki_cli-2.3.0 → agent_wiki_cli-2.3.1}/tests/test_relationships.py +0 -0
  526. {agent_wiki_cli-2.3.0 → agent_wiki_cli-2.3.1}/tests/test_release.py +0 -0
  527. {agent_wiki_cli-2.3.0 → agent_wiki_cli-2.3.1}/tests/test_release_build_backend.py +0 -0
  528. {agent_wiki_cli-2.3.0 → agent_wiki_cli-2.3.1}/tests/test_release_dogfood.py +0 -0
  529. {agent_wiki_cli-2.3.0 → agent_wiki_cli-2.3.1}/tests/test_release_qualification.py +0 -0
  530. {agent_wiki_cli-2.3.0 → agent_wiki_cli-2.3.1}/tests/test_release_supply_chain.py +0 -0
  531. {agent_wiki_cli-2.3.0 → agent_wiki_cli-2.3.1}/tests/test_release_workflows.py +0 -0
  532. {agent_wiki_cli-2.3.0 → agent_wiki_cli-2.3.1}/tests/test_rendering_lifecycle.py +0 -0
  533. {agent_wiki_cli-2.3.0 → agent_wiki_cli-2.3.1}/tests/test_resource_diagnostics.py +0 -0
  534. {agent_wiki_cli-2.3.0 → agent_wiki_cli-2.3.1}/tests/test_route_projection_regressions.py +0 -0
  535. {agent_wiki_cli-2.3.0 → agent_wiki_cli-2.3.1}/tests/test_runtime_output.py +0 -0
  536. {agent_wiki_cli-2.3.0 → agent_wiki_cli-2.3.1}/tests/test_rust_extract.py +0 -0
  537. {agent_wiki_cli-2.3.0 → agent_wiki_cli-2.3.1}/tests/test_schema.py +0 -0
  538. {agent_wiki_cli-2.3.0 → agent_wiki_cli-2.3.1}/tests/test_schema_context_baselines.py +0 -0
  539. {agent_wiki_cli-2.3.0 → agent_wiki_cli-2.3.1}/tests/test_search_rank.py +0 -0
  540. {agent_wiki_cli-2.3.0 → agent_wiki_cli-2.3.1}/tests/test_section_ownership.py +0 -0
  541. {agent_wiki_cli-2.3.0 → agent_wiki_cli-2.3.1}/tests/test_secure_file.py +0 -0
  542. {agent_wiki_cli-2.3.0 → agent_wiki_cli-2.3.1}/tests/test_site_export.py +0 -0
  543. {agent_wiki_cli-2.3.0 → agent_wiki_cli-2.3.1}/tests/test_site_knowledge_metadata.py +0 -0
  544. {agent_wiki_cli-2.3.0 → agent_wiki_cli-2.3.1}/tests/test_site_root_identity.py +0 -0
  545. {agent_wiki_cli-2.3.0 → agent_wiki_cli-2.3.1}/tests/test_skill_contracts.py +0 -0
  546. {agent_wiki_cli-2.3.0 → agent_wiki_cli-2.3.1}/tests/test_skill_contracts_all.py +0 -0
  547. {agent_wiki_cli-2.3.0 → agent_wiki_cli-2.3.1}/tests/test_skill_ownership_boundaries.py +0 -0
  548. {agent_wiki_cli-2.3.0 → agent_wiki_cli-2.3.1}/tests/test_skill_policy_routes.py +0 -0
  549. {agent_wiki_cli-2.3.0 → agent_wiki_cli-2.3.1}/tests/test_skills.py +0 -0
  550. {agent_wiki_cli-2.3.0 → agent_wiki_cli-2.3.1}/tests/test_source_selection.py +0 -0
  551. {agent_wiki_cli-2.3.0 → agent_wiki_cli-2.3.1}/tests/test_source_snapshot.py +0 -0
  552. {agent_wiki_cli-2.3.0 → agent_wiki_cli-2.3.1}/tests/test_static_quality_architecture.py +0 -0
  553. {agent_wiki_cli-2.3.0 → agent_wiki_cli-2.3.1}/tests/test_status.py +0 -0
  554. {agent_wiki_cli-2.3.0 → agent_wiki_cli-2.3.1}/tests/test_storage_followup_controls.py +0 -0
  555. {agent_wiki_cli-2.3.0 → agent_wiki_cli-2.3.1}/tests/test_storage_locality.py +0 -0
  556. {agent_wiki_cli-2.3.0 → agent_wiki_cli-2.3.1}/tests/test_storage_performance.py +0 -0
  557. {agent_wiki_cli-2.3.0 → agent_wiki_cli-2.3.1}/tests/test_surface_initialization.py +0 -0
  558. {agent_wiki_cli-2.3.0 → agent_wiki_cli-2.3.1}/tests/test_sync.py +0 -0
  559. {agent_wiki_cli-2.3.0 → agent_wiki_cli-2.3.1}/tests/test_sync_api_contracts.py +0 -0
  560. {agent_wiki_cli-2.3.0 → agent_wiki_cli-2.3.1}/tests/test_sync_manifest.py +0 -0
  561. {agent_wiki_cli-2.3.0 → agent_wiki_cli-2.3.1}/tests/test_sync_no_plugins.py +0 -0
  562. {agent_wiki_cli-2.3.0 → agent_wiki_cli-2.3.1}/tests/test_sync_runtime_regressions.py +0 -0
  563. {agent_wiki_cli-2.3.0 → agent_wiki_cli-2.3.1}/tests/test_task_context.py +0 -0
  564. {agent_wiki_cli-2.3.0 → agent_wiki_cli-2.3.1}/tests/test_task_context_v2.py +0 -0
  565. {agent_wiki_cli-2.3.0 → agent_wiki_cli-2.3.1}/tests/test_team.py +0 -0
  566. {agent_wiki_cli-2.3.0 → agent_wiki_cli-2.3.1}/tests/test_team_policy_regressions.py +0 -0
  567. {agent_wiki_cli-2.3.0 → agent_wiki_cli-2.3.1}/tests/test_trigger.py +0 -0
  568. {agent_wiki_cli-2.3.0 → agent_wiki_cli-2.3.1}/tests/test_ts_extract.py +0 -0
  569. {agent_wiki_cli-2.3.0 → agent_wiki_cli-2.3.1}/tests/test_typed_graph_queries.py +0 -0
  570. {agent_wiki_cli-2.3.0 → agent_wiki_cli-2.3.1}/tests/test_ubuntu_shadow.py +0 -0
  571. {agent_wiki_cli-2.3.0 → agent_wiki_cli-2.3.1}/tests/test_ubuntu_suites.py +0 -0
  572. {agent_wiki_cli-2.3.0 → agent_wiki_cli-2.3.1}/tests/test_uninstall.py +0 -0
  573. {agent_wiki_cli-2.3.0 → agent_wiki_cli-2.3.1}/tests/test_upgrade.py +0 -0
  574. {agent_wiki_cli-2.3.0 → agent_wiki_cli-2.3.1}/tests/test_validated_knowledge_reuse.py +0 -0
  575. {agent_wiki_cli-2.3.0 → agent_wiki_cli-2.3.1}/tests/test_verification_contracts.py +0 -0
  576. {agent_wiki_cli-2.3.0 → agent_wiki_cli-2.3.1}/tests/test_verified_bug_migrations.py +0 -0
  577. {agent_wiki_cli-2.3.0 → agent_wiki_cli-2.3.1}/tests/test_versioning.py +0 -0
  578. {agent_wiki_cli-2.3.0 → agent_wiki_cli-2.3.1}/tests/test_wiki_git_policy.py +0 -0
  579. {agent_wiki_cli-2.3.0 → agent_wiki_cli-2.3.1}/tests/test_wiki_helper_cache.py +0 -0
  580. {agent_wiki_cli-2.3.0 → agent_wiki_cli-2.3.1}/tests/test_wiki_integrity_action.py +0 -0
  581. {agent_wiki_cli-2.3.0 → agent_wiki_cli-2.3.1}/tests/test_wiki_lifecycle.py +0 -0
  582. {agent_wiki_cli-2.3.0 → agent_wiki_cli-2.3.1}/tests/test_wiki_reference_skill.py +0 -0
  583. {agent_wiki_cli-2.3.0 → agent_wiki_cli-2.3.1}/tests/test_wiki_surface.py +0 -0
  584. {agent_wiki_cli-2.3.0 → agent_wiki_cli-2.3.1}/tests/test_wiki_surface_index.py +0 -0
  585. {agent_wiki_cli-2.3.0 → agent_wiki_cli-2.3.1}/tests/test_wiki_sync_cleanup.py +0 -0
  586. {agent_wiki_cli-2.3.0 → agent_wiki_cli-2.3.1}/tests/test_workflow_contracts.py +0 -0
  587. {agent_wiki_cli-2.3.0 → agent_wiki_cli-2.3.1}/tests/test_workflow_interfaces.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: agent-wiki-cli
3
- Version: 2.3.0
3
+ Version: 2.3.1
4
4
  Summary: CLI tool to maintain hybrid LLM Wikis for multi-language projects.
5
5
  Author-email: Denis Sivagin <denissvgn@gmail.com>
6
6
  License-Expression: MIT
@@ -5,7 +5,7 @@ backend-path = ["."]
5
5
 
6
6
  [project]
7
7
  name = "agent-wiki-cli"
8
- version = "2.3.0"
8
+ version = "2.3.1"
9
9
  description = "CLI tool to maintain hybrid LLM Wikis for multi-language projects."
10
10
  readme = "README.md"
11
11
  license = "MIT"
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: agent-wiki-cli
3
- Version: 2.3.0
3
+ Version: 2.3.1
4
4
  Summary: CLI tool to maintain hybrid LLM Wikis for multi-language projects.
5
5
  Author-email: Denis Sivagin <denissvgn@gmail.com>
6
6
  License-Expression: MIT
@@ -349,10 +349,12 @@ tests/test_core_check_performance.py
349
349
  tests/test_core_shard_runner.py
350
350
  tests/test_core_shard_workflow.py
351
351
  tests/test_core_shards.py
352
+ tests/test_credential_named_knowledge.py
352
353
  tests/test_data_flow.py
353
354
  tests/test_dep_vuln_triage_skill.py
354
355
  tests/test_dependencies.py
355
356
  tests/test_dependencies_external.py
357
+ tests/test_dependency_audit.py
356
358
  tests/test_dependency_downloads.py
357
359
  tests/test_dependency_setup_probe.py
358
360
  tests/test_dependency_setup_workflow.py
@@ -1,4 +1,4 @@
1
- """Pure stable-identity primitives for governed knowledge concepts.
1
+ """Pure stable-identity primitives for knowledge concepts.
2
2
 
3
3
  The records in this module deliberately contain no filesystem behavior. They
4
4
  validate the small identity vocabulary used by a governance ledger, derive an
@@ -20,6 +20,7 @@ from enum import Enum
20
20
  from typing import TypeVar, cast
21
21
  from urllib.parse import quote, unquote, urlsplit
22
22
 
23
+ from .validation import require_repository_relative_path
23
24
  from .wiki_surface import (
24
25
  WikiSurfaceError,
25
26
  canonical_path,
@@ -315,6 +316,35 @@ def validate_concept_kind(value: object) -> str:
315
316
  return text
316
317
 
317
318
 
319
+ def natural_key_for(concept_kind: str, canonical_path: str) -> str:
320
+ """Build a natural key from safe coordinates, independent of governance.
321
+
322
+ Credential-related words are ordinary identifier text. Coordinate grammar
323
+ rejects unsafe paths and credential-bearing authorities; it does not apply
324
+ the separate policy for credential-like governance metadata fields.
325
+ """
326
+
327
+ kind = validate_concept_kind(concept_kind)
328
+ path = require_repository_relative_path(
329
+ canonical_path,
330
+ text_error=ConceptIdentityError(
331
+ "canonical_path", "must be a repository-relative POSIX path"
332
+ ),
333
+ posix_error=ConceptIdentityError(
334
+ "canonical_path", "must be a repository-relative POSIX path"
335
+ ),
336
+ normalized_error=ConceptIdentityError(
337
+ "canonical_path", "must be a normalized relative path"
338
+ ),
339
+ control_error=ConceptIdentityError(
340
+ "canonical_path", "must not contain control characters"
341
+ ),
342
+ reject_delete_character=True,
343
+ control_after_normalization=True,
344
+ )
345
+ return validate_natural_key(f"{kind}:{path}")
346
+
347
+
318
348
  def validate_natural_key(value: object) -> str:
319
349
  """Validate one normalized, non-prose concept natural key.
320
350
 
@@ -41,10 +41,12 @@ from .concept_identity import (
41
41
  ConceptIdentityError,
42
42
  derive_concept_uid as _derive_identity_uid,
43
43
  identity_coordinate_key,
44
+ natural_key_for as _identity_natural_key_for,
44
45
  validate_alias_value,
45
46
  validate_bundle_id,
46
47
  validate_concept_kind,
47
48
  validate_concept_uid,
49
+ validate_locator,
48
50
  validate_natural_key,
49
51
  )
50
52
  from .knowledge_evidence import (
@@ -68,7 +70,6 @@ from .validation import (
68
70
  require_mapping,
69
71
  require_no_control_characters,
70
72
  require_nonnegative_int,
71
- require_repository_relative_path,
72
73
  require_sha256,
73
74
  )
74
75
  from .wiki_media import contains_uri_authority_userinfo
@@ -389,11 +390,12 @@ def natural_key_for(
389
390
  concept_kind: str,
390
391
  canonical_path: str,
391
392
  ) -> str:
392
- """Build the initial natural key without using an absolute checkout path."""
393
+ """Build a shared natural key with governance-compatible diagnostics."""
393
394
 
394
- kind = _concept_kind(concept_kind, "concept_kind")
395
- path = _relative_path(canonical_path, "canonical_path")
396
- return _natural_key(f"{kind}:{path}", "natural_key")
395
+ try:
396
+ return _identity_natural_key_for(concept_kind, canonical_path)
397
+ except ConceptIdentityError as exc:
398
+ raise GovernanceError(exc.field, exc.message) from exc
397
399
 
398
400
 
399
401
  def derive_concept_uid(
@@ -3307,28 +3309,6 @@ def _identity_ownership_key(alias_type: str, value: str) -> str:
3307
3309
  raise GovernanceError("identity", exc.message) from exc
3308
3310
 
3309
3311
 
3310
- def _relative_path(value: object, path: str) -> str:
3311
- result = require_repository_relative_path(
3312
- value,
3313
- text_error=GovernanceError(
3314
- path, "must be a repository-relative POSIX path"
3315
- ),
3316
- posix_error=GovernanceError(
3317
- path, "must be a repository-relative POSIX path"
3318
- ),
3319
- normalized_error=GovernanceError(
3320
- path, "must be a normalized relative path"
3321
- ),
3322
- control_error=GovernanceError(
3323
- path, "must not contain control characters"
3324
- ),
3325
- reject_delete_character=True,
3326
- control_after_normalization=True,
3327
- )
3328
- _safe_text(result, path)
3329
- return result
3330
-
3331
-
3332
3312
  def _section_locator(value: object, path: str) -> str:
3333
3313
  if (
3334
3314
  not isinstance(value, str)
@@ -3341,7 +3321,22 @@ def _section_locator(value: object, path: str) -> str:
3341
3321
  path,
3342
3322
  "must be an exact llm-wiki section locator",
3343
3323
  )
3344
- _safe_text(value, path)
3324
+ page_locator, _, section_path = value.partition("#section/")
3325
+ if not section_path:
3326
+ raise GovernanceError(path, "must contain a section coordinate")
3327
+ try:
3328
+ validate_locator(page_locator)
3329
+ except ConceptIdentityError as exc:
3330
+ raise GovernanceError(path, exc.message) from exc
3331
+ # Page identifiers and heading text may legitimately discuss credentials.
3332
+ # Validate coordinates independently of actor/method metadata safeguards.
3333
+ require_no_control_characters(
3334
+ value,
3335
+ error=GovernanceError(path, "must not contain control characters"),
3336
+ reject_delete_character=True,
3337
+ )
3338
+ if contains_uri_authority_userinfo(value):
3339
+ raise GovernanceError(path, "must not contain URI credentials")
3345
3340
  return value
3346
3341
 
3347
3342
 
@@ -160,9 +160,25 @@ def _node_aliases(node: Any) -> set[str]:
160
160
 
161
161
 
162
162
  def _concept_aliases(concept: Mapping[str, Any]) -> set[str]:
163
- from .knowledge_governance import natural_key_for
163
+ from .concept_identity import ConceptIdentityError, natural_key_for, validate_locator
164
+
165
+ path = concept["document"]["canonical_path"]
166
+ try:
167
+ natural_key = natural_key_for(concept["concept_kind"], path)
168
+ except ConceptIdentityError as exc:
169
+ # Include only a validated page coordinate; unsafe values (including
170
+ # URI credentials) must never be reflected in storage diagnostics.
171
+ try:
172
+ coordinate = repr(validate_locator(path))
173
+ except ConceptIdentityError:
174
+ coordinate = "a concept (invalid canonical path omitted)"
175
+ raise KnowledgeStorageError(
176
+ f"concepts.aliases.{exc.field}",
177
+ f"cannot build lookup identity for {coordinate}: {exc.message}",
178
+ code="storage-identity-invalid",
179
+ ) from exc
164
180
  aliases = {"concept:" + concept["locator"], "page:" + concept["document"]["canonical_path"],
165
- "concept:" + natural_key_for(concept["concept_kind"], concept["document"]["canonical_path"]),
181
+ "concept:" + natural_key,
166
182
  _owner(concept), *("term:" + term for term in re.findall(r"\w+", concept["title"].casefold())[:64])}
167
183
  from .contracts import GOVERNANCE_EXTENSION_KEY
168
184
  governance = concept.get("extensions", {}).get(GOVERNANCE_EXTENSION_KEY)
@@ -8,9 +8,10 @@ import json
8
8
  from pathlib import Path
9
9
  from typing import Any
10
10
 
11
+ from .concept_identity import natural_key_for
11
12
  from .knowledge_envelope import EvaluatedEnvelope
12
13
  from .knowledge_governance import (
13
- GOVERNANCE_FILENAME, parse_governance_ledger, lifecycle_state_by_uid, natural_key_for,
14
+ GOVERNANCE_FILENAME, parse_governance_ledger, lifecycle_state_by_uid,
14
15
  )
15
16
  from .contracts import GOVERNANCE_EXTENSION_KEY
16
17
  from .knowledge_model import _parse_bundle
@@ -41,6 +41,7 @@ _VALIDATION_DUPLICATE_EXEMPT_NAMES = frozenset(
41
41
  )
42
42
  REQUIRED_SHARED_VALIDATION_ADAPTERS_BY_FAMILY = {
43
43
  "bootstrap_runtime": frozenset({"_path_text", "_safe_page_component"}),
44
+ "concept_identity": frozenset({"natural_key_for"}),
44
45
  "context_service": frozenset({"_nonnegative_count"}),
45
46
  "data_flow": frozenset({"_positive_source_line"}),
46
47
  "dependencies": frozenset(
@@ -197,7 +198,6 @@ REQUIRED_SHARED_VALIDATION_ADAPTERS_BY_FAMILY = {
197
198
  "_hash",
198
199
  "_nonnegative_int",
199
200
  "_object",
200
- "_relative_path",
201
201
  }
202
202
  ),
203
203
  "knowledge_graph": frozenset(
@@ -22,6 +22,7 @@ from llm_wiki_cli.services.concept_identity import (
22
22
  find_identity_collisions,
23
23
  identity_coordinate_key,
24
24
  move_allocation,
25
+ natural_key_for,
25
26
  validate_alias_value,
26
27
  validate_bundle_id,
27
28
  validate_concept_kind,
@@ -195,6 +196,50 @@ def test_natural_key_accepts_occurrence_fragments_and_canonical_utf8_escapes():
195
196
  )
196
197
 
197
198
 
199
+ @pytest.mark.parametrize("name", [
200
+ "RuntimeSecretField", "SecretMaterialError", "ResetPasswordForm",
201
+ "PasswdEntry", "ApiKeySettings", "AccessTokenProvider", "PrivateKeyStore",
202
+ ])
203
+ def test_natural_key_construction_accepts_credential_related_identifiers(name):
204
+ from llm_wiki_cli.services import knowledge_governance
205
+
206
+ path = f"entities/{name}.md"
207
+ expected = f"code-entity:{path}"
208
+ assert natural_key_for("code-entity", path) == expected
209
+ assert knowledge_governance.natural_key_for("code-entity", path) == expected
210
+ assert validate_locator(f"llm-wiki://entities/{name}") == f"llm-wiki://entities/{name}"
211
+
212
+
213
+ def test_natural_key_construction_preserves_existing_identity_bytes():
214
+ key = natural_key_for("source-module", "modules/core.md")
215
+ assert key == "source-module:modules/core.md"
216
+ assert derive_concept_uid("bundle:project-1", "source-module", key) == (
217
+ "lw:module:27b9ae241cad1427564442436cbc22a2"
218
+ )
219
+
220
+
221
+ @pytest.mark.parametrize("path", [
222
+ "", None, "/tmp/entities/core.md", "C:/wiki/entities/core.md", "C:core.md",
223
+ r"entities\core.md", "entities/../core.md", "entities/./core.md",
224
+ "entities//core.md", "entities/core.md/", "entities/CON.md",
225
+ "entities/core.md ", "entities/core\x00.md", "entities/core\x7f.md",
226
+ "entities/core\u200b.md", "entities/%2E%2E/core.md", "entities/%GG.md",
227
+ "https://user:CREDENTIAL_SENTINEL@example.test/core.md",
228
+ "user:CREDENTIAL_SENTINEL@example.test/core.md",
229
+ "git@example.test/core.md",
230
+ ])
231
+ def test_natural_key_construction_keeps_path_and_credential_safeguards(path):
232
+ from llm_wiki_cli.services import knowledge_governance
233
+
234
+ with pytest.raises(ConceptIdentityError) as identity_error:
235
+ natural_key_for("code-entity", path)
236
+ with pytest.raises(knowledge_governance.GovernanceError) as governance_error:
237
+ knowledge_governance.natural_key_for("code-entity", path)
238
+ assert identity_error.value.field in {"canonical_path", "natural_key"}
239
+ assert str(identity_error.value) == str(governance_error.value)
240
+ assert "CREDENTIAL_SENTINEL" not in str(identity_error.value)
241
+
242
+
198
243
  @pytest.mark.parametrize(
199
244
  "value",
200
245
  [
@@ -249,6 +249,7 @@ def test_extracted_input_changes_are_rejected(frozen, tmp_path):
249
249
  ("python_peak_bytes", 100),
250
250
  ("input_tree_sha256", {}),
251
251
  ("policy_sha256", "b" * 64),
252
+ ("adapter_inventory_sha256", "b" * 64),
252
253
  ],
253
254
  )
254
255
  def test_observation_results_are_bound_and_finite(field, value):
@@ -261,6 +262,7 @@ def test_observation_results_are_bound_and_finite(field, value):
261
262
  "python_peak_bytes": None,
262
263
  "input_tree_sha256": "c" * 64,
263
264
  "policy_sha256": "a" * 64,
265
+ "adapter_inventory_sha256": None,
264
266
  }
265
267
  changed = deepcopy(row)
266
268
  changed[field] = value
@@ -399,3 +401,153 @@ def test_failed_windows_tree_cleanup_is_reported_and_root_is_reaped(
399
401
  ["owned"], cwd=tmp_path, env={}, log=io.BytesIO(), platform_name="nt"
400
402
  )
401
403
  assert process.killed and process.waits == 2
404
+
405
+
406
+ def _inventory_work(tmp_path):
407
+ work = tmp_path / "work"
408
+ for role, inventory in (
409
+ ("baseline", "{'knowledge_governance': frozenset({'_relative_path'})}"),
410
+ ("candidate", "{'concept_identity': frozenset({'natural_key_for'})}"),
411
+ ):
412
+ policy = work / role / "tests/test_architecture_layers.py"
413
+ policy.parent.mkdir(parents=True)
414
+ policy.write_text(
415
+ "import ast\nfrom pathlib import Path\n"
416
+ f"{performance.ADAPTER_INVENTORY} = {inventory}\n"
417
+ "def test_shared_validation_adapters_remain_thin():\n"
418
+ " root = Path(__file__).parents[1] / 'src/llm_wiki_cli/services'\n"
419
+ f" for family, names in {performance.ADAPTER_INVENTORY}.items():\n"
420
+ " tree = ast.parse((root / (family + '.py')).read_text())\n"
421
+ " defined = {n.name for n in ast.walk(tree) if isinstance(n, ast.FunctionDef)}\n"
422
+ " assert names <= defined\n",
423
+ encoding="utf-8",
424
+ )
425
+ services = work / "candidate/src/llm_wiki_cli/services"
426
+ services.mkdir(parents=True)
427
+ (services / "concept_identity.py").write_text("def natural_key_for(value):\n return value\n")
428
+ return work
429
+
430
+
431
+ @pytest.fixture
432
+ def policy_imports():
433
+ previous_path = sys.path[:]
434
+ previous_modules = {name: module for name, module in sys.modules.items()
435
+ if name == "tests" or name.startswith("tests.")}
436
+ try:
437
+ yield
438
+ finally:
439
+ sys.path[:] = previous_path
440
+ for name in list(sys.modules):
441
+ if name == "tests" or name.startswith("tests."):
442
+ del sys.modules[name]
443
+ sys.modules.update(previous_modules)
444
+
445
+
446
+ def test_moved_adapter_inventory_is_identical_input_for_both_policy_workers(tmp_path):
447
+ work = _inventory_work(tmp_path)
448
+ inventory = performance.comparison_inventory(work)
449
+ assert inventory["removed"] == [["knowledge_governance", "_relative_path"]]
450
+ assert inventory["added"] == [["concept_identity", "natural_key_for"]]
451
+ assert inventory["baseline_sha256"] != inventory["candidate_sha256"]
452
+ before = performance.tree_identity(work)
453
+ for role in ("baseline", "candidate"):
454
+ output = tmp_path / f"{role}.json"
455
+ result = subprocess.run(
456
+ [sys.executable, "-I", "-B", performance.__file__, "worker", "--work", str(work),
457
+ "--inputs", str(tmp_path), "--role", role, "--target", "adapters", "--output", str(output)],
458
+ stdin=subprocess.DEVNULL, capture_output=True, text=True, timeout=30,
459
+ )
460
+ assert result.returncode == 0, result.stderr
461
+ row = json.loads(output.read_text())
462
+ performance.validate_observation(
463
+ row, target="adapters", role=role, coverage=False, memory=False,
464
+ policy_sha256=performance.digest(work / role / "tests/test_architecture_layers.py"),
465
+ adapter_inventory_sha256=inventory["candidate_sha256"],
466
+ )
467
+ with pytest.raises(ValueError, match="identity"):
468
+ performance.validate_observation(
469
+ row, target="adapters", role=role, coverage=False, memory=False,
470
+ policy_sha256=row["policy_sha256"], adapter_inventory_sha256=inventory["baseline_sha256"],
471
+ )
472
+ assert performance.tree_identity(work) == before
473
+
474
+
475
+ @pytest.mark.parametrize("role", ["baseline", "candidate"])
476
+ def test_worker_retains_failed_assertion_traceback_with_current_inventory(tmp_path, role):
477
+ work = _inventory_work(tmp_path)
478
+ (work / "candidate/src/llm_wiki_cli/services/concept_identity.py").write_text("")
479
+ output = tmp_path / "observation.json"
480
+ result = subprocess.run(
481
+ [sys.executable, "-I", "-B", performance.__file__, "worker", "--work", str(work),
482
+ "--inputs", str(tmp_path), "--role", role, "--target", "adapters", "--output", str(output)],
483
+ stdin=subprocess.DEVNULL, capture_output=True, text=True, timeout=30,
484
+ )
485
+ assert result.returncode == 1
486
+ assert "test_shared_validation_adapters_remain_thin" in result.stderr
487
+ assert "AssertionError" in result.stderr
488
+ assert not output.exists()
489
+
490
+
491
+ @pytest.mark.parametrize("relative", ["knowledge_governance.py", "knowledge_governance/nested.py"])
492
+ def test_comparison_cannot_drop_requirements_for_remaining_definitions(tmp_path, relative):
493
+ work = _inventory_work(tmp_path)
494
+ path = work / "candidate/src/llm_wiki_cli/services" / relative
495
+ path.parent.mkdir(parents=True, exist_ok=True)
496
+ path.write_text("class Adapter:\n def _relative_path(self, value):\n return value\n")
497
+ with pytest.raises(ValueError, match="required adapter that still exists"):
498
+ performance.comparison_inventory(work)
499
+
500
+
501
+ @pytest.mark.parametrize("declaration", [
502
+ "get_inventory()", "{'../escape': frozenset({'validate'})}",
503
+ "{'owner': frozenset({123})}", "{'owner': frozenset(build_names())}",
504
+ "{'owner': frozenset({'one'}), 'owner': frozenset({'two'})}",
505
+ ])
506
+ def test_adapter_inventory_rejects_nonliteral_or_ambiguous_data(tmp_path, declaration):
507
+ policy = tmp_path / "tests/test_architecture_layers.py"
508
+ policy.parent.mkdir()
509
+ policy.write_text(f"{performance.ADAPTER_INVENTORY} = {declaration}\n")
510
+ with pytest.raises(ValueError):
511
+ performance.adapter_inventory(tmp_path)
512
+
513
+
514
+ def test_adapter_inventory_accepts_an_empty_literal_frozenset(tmp_path):
515
+ policy = tmp_path / "tests/test_architecture_layers.py"
516
+ policy.parent.mkdir()
517
+ policy.write_text(f"{performance.ADAPTER_INVENTORY} = {{'owner': frozenset()}}\n")
518
+ assert performance.adapter_inventory(tmp_path) == {"owner": []}
519
+
520
+
521
+ def test_mixed_missing_inventory_is_not_silently_accepted(tmp_path):
522
+ work = _inventory_work(tmp_path)
523
+ (work / "baseline/tests/test_architecture_layers.py").write_text("pass\n")
524
+ with pytest.raises(ValueError, match="both policies"):
525
+ performance.comparison_inventory(work)
526
+
527
+
528
+ def test_runtime_inventory_must_match_its_frozen_declaration(tmp_path, policy_imports):
529
+ work = _inventory_work(tmp_path)
530
+ policy = work / "baseline/tests/test_architecture_layers.py"
531
+ policy.write_text(policy.read_text() + f"\n{performance.ADAPTER_INVENTORY}.clear()\n")
532
+ inventory = performance.adapter_inventory(work / "baseline")
533
+ module = performance.load_policy(work / "baseline", work / "candidate", policy.name, "baseline")
534
+ with pytest.raises(ValueError, match="changed its declared adapter inventory"):
535
+ performance.bind_inventory(module, inventory, performance.adapter_inventory(work / "candidate"))
536
+
537
+
538
+ def test_complete_adapter_controls_detect_a_weakened_candidate_assertion(tmp_path, policy_imports):
539
+ work = tmp_path / "work"
540
+ tests = Path(__file__).parent
541
+ for role in ("baseline", "candidate"):
542
+ target = work / role / "tests"
543
+ target.mkdir(parents=True)
544
+ (target / "__init__.py").write_text("")
545
+ for name in ("test_architecture_layers.py", "python_source_inventory.py"):
546
+ shutil.copyfile(tests / name, target / name)
547
+ args = argparse.Namespace(work=work)
548
+ results = performance.adapter_control_parity(args)
549
+ assert [r["expected_pass"] for r in results] == [True, False, False, False, False]
550
+ policy = work / "candidate/tests/test_architecture_layers.py"
551
+ policy.write_text(policy.read_text() + "\ndef test_shared_validation_adapters_remain_thin():\n pass\n")
552
+ with pytest.raises(ValueError, match="adapter control outcome differs: missing/candidate"):
553
+ performance.adapter_control_parity(args)
@@ -0,0 +1,172 @@
1
+ """Credential-related identifiers survive storage and governance operations."""
2
+
3
+ import hashlib
4
+ import sys
5
+
6
+ import pytest
7
+
8
+ from llm_wiki_cli import api
9
+ from llm_wiki_cli.cli import main
10
+ from llm_wiki_cli.services.io import read_md, write_md
11
+ from llm_wiki_cli.services.knowledge_governance import (
12
+ GOVERNANCE_FILENAME, load_governance,
13
+ )
14
+ from llm_wiki_cli.services.knowledge_loader import load_knowledge_state
15
+ from llm_wiki_cli.services.knowledge_storage import KnowledgeStorageError
16
+ from llm_wiki_cli.services.knowledge_storage_access import capture_knowledge_slice
17
+ from llm_wiki_cli.services.knowledge_storage_diagnostics import storage_report
18
+ from llm_wiki_cli.services.knowledge_storage_lifecycle import (
19
+ export_knowledge_v1, migrate_knowledge_storage, recover_knowledge_storage,
20
+ )
21
+ from llm_wiki_cli.services.section_ownership import observe_page_sections
22
+ from llm_wiki_cli.services.wiki_surface import PageKind
23
+ from tests.test_knowledge_storage_lifecycle import snapshot
24
+
25
+
26
+ NAMES = (
27
+ "RuntimeSecretField", "SecretMaterialError", "ResetPasswordForm",
28
+ "PasswdEntry", "ApiKeySettings", "AccessTokenProvider", "PrivateKeyStore",
29
+ )
30
+
31
+
32
+ @pytest.fixture(params=[False, True], ids=["ungoverned", "governed"])
33
+ def credential_named_wiki(tmp_path, monkeypatch, capsys, request):
34
+ monkeypatch.chdir(tmp_path)
35
+ # Do not discover the caller's Git repository under a custom pytest base.
36
+ (tmp_path / ".git").write_text("gitdir: absent\n", encoding="utf-8")
37
+ source = tmp_path / "source"
38
+ source.mkdir()
39
+ (source / "models.py").write_text(
40
+ "\n\n".join(f'class {name}:\n """A documented field type."""\n pass' for name in NAMES),
41
+ encoding="utf-8",
42
+ )
43
+ root = tmp_path / "wiki"
44
+ api.bootstrap_wiki(str(source), str(root), skip_workflows=True,
45
+ skip_flows=True, skip_dependencies=True)
46
+
47
+ def command(*args):
48
+ monkeypatch.setattr(sys, "argv", ["llm-wiki", *args])
49
+ main()
50
+ return capsys.readouterr()
51
+
52
+ page = root / "entities" / "RuntimeSecretField.md"
53
+ content = read_md(page)
54
+ assert "## Description" in content
55
+ authored = content.replace("## Description", "## Description\n\nPreserve this authored explanation.", 1)
56
+ # Exercise Windows-style input on every host. The owning writer emits the
57
+ # canonical UTF-8/LF bytes required by storage and task receipt commitments.
58
+ write_md(page, authored.replace("\n", "\r\n"))
59
+ assert page.read_bytes() == authored.encode("utf-8")
60
+ command("sync", "--src-dir", "source", "--wiki-dir", "wiki", "--jobs", "1",
61
+ "--no-plugins", "--progress", "never")
62
+ selectors = [f"code-entity:entities/{name}.md" for name in NAMES]
63
+ if request.param:
64
+ command("knowledge", "init", "--wiki-dir", "wiki")
65
+ ledger = load_governance(root).ledger
66
+ assert ledger is not None
67
+ allocation = next(a for a in ledger.concepts.values()
68
+ if a.locator == "llm-wiki://entities/RuntimeSecretField")
69
+ historical = "llm-wiki://entities/PreviousSecretField"
70
+ command("knowledge", "alias", "--wiki-dir", "wiki", "--uid", allocation.uid,
71
+ "--type", "locator", "--value", historical)
72
+ observed = observe_page_sections(page.read_text(encoding="utf-8"), allocation.locator, PageKind.ENTITIES)
73
+ section = next(s for s in observed.sections if s.title == "Description" and s.semantic_hash is not None)
74
+ command("knowledge", "review", "--wiki-dir", "wiki", "--uid", allocation.uid,
75
+ "--section", section.locator, "--reviewer-kind", "human", "--reviewer-id", "reviewer-1",
76
+ "--method", "manual-review", "--method-version", "1", "--authored-at", "2026-09-28T12:00:00Z")
77
+ selectors.extend([allocation.uid, historical])
78
+ else:
79
+ assert not (root / GOVERNANCE_FILENAME).exists()
80
+ knowledge = load_knowledge_state(root).knowledge
81
+ assert knowledge is not None
82
+ for concept in knowledge.concepts:
83
+ raw = (root / concept.document.canonical_path).read_bytes()
84
+ assert concept.facets.semantics.page_hash == "sha256:" + hashlib.sha256(raw).hexdigest()
85
+ return root, selectors, command
86
+
87
+
88
+ @pytest.mark.parametrize("format_name", [
89
+ "sharded-v2", "packed-v3", "packed-v3-deflate", "packed-v4", "packed-v4-deflate",
90
+ ])
91
+ def test_migration_preserves_named_concepts_authority_aliases_and_recovery(
92
+ credential_named_wiki, tmp_path, format_name,
93
+ ):
94
+ root, selectors, _command = credential_named_wiki
95
+ before = snapshot(root)
96
+ logical = load_knowledge_state(root).knowledge
97
+ recovery = tmp_path / "recovery"
98
+ preview = migrate_knowledge_storage(root, to=format_name, dry_run=True, recovery_dir=recovery)
99
+ assert preview["changed"]
100
+ assert snapshot(root) == before
101
+ assert not recovery.exists()
102
+
103
+ applied = migrate_knowledge_storage(root, to=format_name, recovery_dir=recovery)
104
+ assert applied["root_hash"] == preview["root_hash"]
105
+ assert load_knowledge_state(root).knowledge == logical
106
+ for name, raw in before.items():
107
+ if name.endswith(".md") or name == GOVERNANCE_FILENAME:
108
+ assert (root / name).read_bytes() == raw
109
+ after = snapshot(root)
110
+ assert not migrate_knowledge_storage(root, to=format_name)["changed"]
111
+ assert snapshot(root) == after
112
+
113
+ # Both manifest encodings must support lookup validation with these names.
114
+ for indexed_manifest in (False, True):
115
+ if indexed_manifest:
116
+ migrate_knowledge_storage(root, to="indexed-v6", recovery_dir=tmp_path / "manifest-recovery")
117
+ assert load_knowledge_state(root).knowledge == logical
118
+ assert storage_report(root, full=True)["integrity"] == "valid-committed-snapshot"
119
+ for selector in selectors:
120
+ capture = capture_knowledge_slice(root, ["concept:" + selector], collections=("concepts",))
121
+ selected = capture.slice.to_payload()
122
+ assert selected["lookup_complete"]
123
+ assert len(selected["records"]["concepts"]) == 1, selector
124
+ assert selected["records"]["concepts"][0]["value"]["title"] in NAMES
125
+ capture.finish()
126
+ task = {
127
+ "schema_version": "llm-wiki-task-request/v2",
128
+ "options": {"read_scope": "snapshot", "knowledge_mode": "required"},
129
+ "requirements": [{"id": "field", "facet": "concept", "selector": selectors[-1]}],
130
+ }
131
+ answer = api.build_task_context(task, wiki_dir=str(root))
132
+ assert api.validate_task_context(answer.rendered, task)["state"] == "covered"
133
+
134
+ export_knowledge_v1(root, tmp_path / "export.json")
135
+ assert (tmp_path / "export.json").read_bytes() == before[".llm-wiki-knowledge.json"]
136
+ recover_knowledge_storage(root, tmp_path / "manifest-recovery")
137
+ recover_knowledge_storage(root, recovery)
138
+ for name, raw in before.items():
139
+ assert (root / name).read_bytes() == raw
140
+ assert load_knowledge_state(root).knowledge == logical
141
+
142
+
143
+ def test_sync_preserves_named_concepts_and_governance_after_migration(credential_named_wiki, tmp_path):
144
+ root, _selectors, command = credential_named_wiki
145
+ before = snapshot(root)
146
+ migrate_knowledge_storage(root, to="packed-v4-deflate", recovery_dir=tmp_path / "recovery")
147
+ command("sync", "--src-dir", "source", "--wiki-dir", "wiki", "--jobs", "1",
148
+ "--no-plugins", "--progress", "never")
149
+ assert "Preserve this authored explanation." in (root / "entities" / "RuntimeSecretField.md").read_text(encoding="utf-8")
150
+ if GOVERNANCE_FILENAME in before:
151
+ assert (root / GOVERNANCE_FILENAME).read_bytes() == before[GOVERNANCE_FILENAME]
152
+ report = storage_report(root, full=True)
153
+ assert report["ok"] and report["format"] == "packed-v4-deflate"
154
+ first_sync = snapshot(root)
155
+ command("sync", "--src-dir", "source", "--wiki-dir", "wiki", "--jobs", "1",
156
+ "--no-plugins", "--progress", "never")
157
+ assert snapshot(root) == first_sync
158
+
159
+
160
+ def test_migration_rejects_newline_changes_after_commit(credential_named_wiki, tmp_path):
161
+ root, _selectors, _command = credential_named_wiki
162
+ page = root / "entities" / "RuntimeSecretField.md"
163
+ raw = page.read_bytes()
164
+ assert b"\r" not in raw and b"\n" in raw
165
+ page.write_bytes(raw.replace(b"\n", b"\r\n"))
166
+ before = snapshot(root)
167
+ recovery = tmp_path / "recovery"
168
+ with pytest.raises(KnowledgeStorageError, match="authored input changed") as raised:
169
+ migrate_knowledge_storage(root, to="packed-v4-deflate", dry_run=True, recovery_dir=recovery)
170
+ assert raised.value.code == "storage-mutation"
171
+ assert snapshot(root) == before
172
+ assert not recovery.exists()