ai-docs-toolkit 0.4.2__tar.gz → 0.5.0__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 (157) hide show
  1. {ai_docs_toolkit-0.4.2/src/ai_docs_toolkit.egg-info → ai_docs_toolkit-0.5.0}/PKG-INFO +36 -6
  2. {ai_docs_toolkit-0.4.2 → ai_docs_toolkit-0.5.0}/README.md +10 -6
  3. {ai_docs_toolkit-0.4.2 → ai_docs_toolkit-0.5.0}/packaging/pypi/README.md +35 -5
  4. {ai_docs_toolkit-0.4.2 → ai_docs_toolkit-0.5.0}/pyproject.toml +2 -1
  5. {ai_docs_toolkit-0.4.2 → ai_docs_toolkit-0.5.0}/src/ai_docs_toolkit/__init__.py +1 -1
  6. {ai_docs_toolkit-0.4.2 → ai_docs_toolkit-0.5.0}/src/ai_docs_toolkit/cli/__init__.py +6 -0
  7. ai_docs_toolkit-0.5.0/src/ai_docs_toolkit/cli/workspace.py +58 -0
  8. {ai_docs_toolkit-0.4.2 → ai_docs_toolkit-0.5.0}/src/ai_docs_toolkit/core/changed_files.py +8 -1
  9. {ai_docs_toolkit-0.4.2 → ai_docs_toolkit-0.5.0}/src/ai_docs_toolkit/core/init.py +30 -0
  10. {ai_docs_toolkit-0.4.2 → ai_docs_toolkit-0.5.0}/src/ai_docs_toolkit/docs/agent-installation.md +91 -1
  11. {ai_docs_toolkit-0.4.2 → ai_docs_toolkit-0.5.0}/src/ai_docs_toolkit/mcp/server.py +24 -3
  12. {ai_docs_toolkit-0.4.2 → ai_docs_toolkit-0.5.0}/src/ai_docs_toolkit/templates/project/.ai-docs/reference/init-command-contract.md +16 -0
  13. ai_docs_toolkit-0.5.0/src/ai_docs_toolkit/templates/project/.ai-docs/reference/workspace-analysis.md +90 -0
  14. ai_docs_toolkit-0.5.0/src/ai_docs_toolkit/templates/project/.ai-docs/schemas/workspace/manifest-v1.schema.yaml +35 -0
  15. ai_docs_toolkit-0.5.0/src/ai_docs_toolkit/templates/project/.ai-docs/schemas/workspace/repository-v1.schema.yaml +102 -0
  16. ai_docs_toolkit-0.5.0/src/ai_docs_toolkit/templates/project/.ai-docs/schemas/workspace/request-v1.schema.yaml +90 -0
  17. ai_docs_toolkit-0.5.0/src/ai_docs_toolkit/templates/project/.ai-docs/schemas/workspace/result-v1.schema.yaml +586 -0
  18. {ai_docs_toolkit-0.4.2 → ai_docs_toolkit-0.5.0}/src/ai_docs_toolkit/templates/project/ai-docs.config.yaml +3 -0
  19. ai_docs_toolkit-0.5.0/src/ai_docs_toolkit/workspace/__init__.py +6 -0
  20. ai_docs_toolkit-0.5.0/src/ai_docs_toolkit/workspace/analysis.py +277 -0
  21. ai_docs_toolkit-0.5.0/src/ai_docs_toolkit/workspace/config.py +261 -0
  22. ai_docs_toolkit-0.5.0/src/ai_docs_toolkit/workspace/result.py +44 -0
  23. ai_docs_toolkit-0.5.0/src/ai_docs_toolkit/workspace/schemas.py +32 -0
  24. {ai_docs_toolkit-0.4.2 → ai_docs_toolkit-0.5.0/src/ai_docs_toolkit.egg-info}/PKG-INFO +36 -6
  25. {ai_docs_toolkit-0.4.2 → ai_docs_toolkit-0.5.0}/src/ai_docs_toolkit.egg-info/SOURCES.txt +19 -1
  26. {ai_docs_toolkit-0.4.2 → ai_docs_toolkit-0.5.0}/tests/test_bootstrap_templates.py +5 -0
  27. {ai_docs_toolkit-0.4.2 → ai_docs_toolkit-0.5.0}/tests/test_cli_baseline.py +2 -2
  28. ai_docs_toolkit-0.5.0/tests/test_ham_workspace_evaluation.py +83 -0
  29. ai_docs_toolkit-0.5.0/tests/test_ham_workspace_reverification.py +180 -0
  30. {ai_docs_toolkit-0.4.2 → ai_docs_toolkit-0.5.0}/tests/test_init_cli.py +5 -0
  31. {ai_docs_toolkit-0.4.2 → ai_docs_toolkit-0.5.0}/tests/test_mcp_server.py +2 -2
  32. ai_docs_toolkit-0.5.0/tests/test_multi_repository_pilot.py +297 -0
  33. ai_docs_toolkit-0.5.0/tests/test_workspace.py +303 -0
  34. ai_docs_toolkit-0.5.0/tests/test_workspace_adapters.py +179 -0
  35. ai_docs_toolkit-0.5.0/tests/test_workspace_bootstrap.py +72 -0
  36. ai_docs_toolkit-0.5.0/tests/test_workspace_schemas.py +120 -0
  37. {ai_docs_toolkit-0.4.2 → ai_docs_toolkit-0.5.0}/LICENSE +0 -0
  38. {ai_docs_toolkit-0.4.2 → ai_docs_toolkit-0.5.0}/setup.cfg +0 -0
  39. {ai_docs_toolkit-0.4.2 → ai_docs_toolkit-0.5.0}/src/ai_docs_toolkit/__main__.py +0 -0
  40. {ai_docs_toolkit-0.4.2 → ai_docs_toolkit-0.5.0}/src/ai_docs_toolkit/context/__init__.py +0 -0
  41. {ai_docs_toolkit-0.4.2 → ai_docs_toolkit-0.5.0}/src/ai_docs_toolkit/context/markdown_output.py +0 -0
  42. {ai_docs_toolkit-0.4.2 → ai_docs_toolkit-0.5.0}/src/ai_docs_toolkit/core/__init__.py +0 -0
  43. {ai_docs_toolkit-0.4.2 → ai_docs_toolkit-0.5.0}/src/ai_docs_toolkit/core/azure_devops_provider.py +0 -0
  44. {ai_docs_toolkit-0.4.2 → ai_docs_toolkit-0.5.0}/src/ai_docs_toolkit/core/code_links.py +0 -0
  45. {ai_docs_toolkit-0.4.2 → ai_docs_toolkit-0.5.0}/src/ai_docs_toolkit/core/config.py +0 -0
  46. {ai_docs_toolkit-0.4.2 → ai_docs_toolkit-0.5.0}/src/ai_docs_toolkit/core/context.py +0 -0
  47. {ai_docs_toolkit-0.4.2 → ai_docs_toolkit-0.5.0}/src/ai_docs_toolkit/core/doctor.py +0 -0
  48. {ai_docs_toolkit-0.4.2 → ai_docs_toolkit-0.5.0}/src/ai_docs_toolkit/core/file_lookup.py +0 -0
  49. {ai_docs_toolkit-0.4.2 → ai_docs_toolkit-0.5.0}/src/ai_docs_toolkit/core/frontmatter.py +0 -0
  50. {ai_docs_toolkit-0.4.2 → ai_docs_toolkit-0.5.0}/src/ai_docs_toolkit/core/graph.py +0 -0
  51. {ai_docs_toolkit-0.4.2 → ai_docs_toolkit-0.5.0}/src/ai_docs_toolkit/core/impact.py +0 -0
  52. {ai_docs_toolkit-0.4.2 → ai_docs_toolkit-0.5.0}/src/ai_docs_toolkit/core/planning_operations.py +0 -0
  53. {ai_docs_toolkit-0.4.2 → ai_docs_toolkit-0.5.0}/src/ai_docs_toolkit/core/planning_scaffold.py +0 -0
  54. {ai_docs_toolkit-0.4.2 → ai_docs_toolkit-0.5.0}/src/ai_docs_toolkit/core/registry.py +0 -0
  55. {ai_docs_toolkit-0.4.2 → ai_docs_toolkit-0.5.0}/src/ai_docs_toolkit/core/requirement_capture.py +0 -0
  56. {ai_docs_toolkit-0.4.2 → ai_docs_toolkit-0.5.0}/src/ai_docs_toolkit/core/scanner.py +0 -0
  57. {ai_docs_toolkit-0.4.2 → ai_docs_toolkit-0.5.0}/src/ai_docs_toolkit/core/schema_validation.py +0 -0
  58. {ai_docs_toolkit-0.4.2 → ai_docs_toolkit-0.5.0}/src/ai_docs_toolkit/core/section_fix.py +0 -0
  59. {ai_docs_toolkit-0.4.2 → ai_docs_toolkit-0.5.0}/src/ai_docs_toolkit/core/structure_validation.py +0 -0
  60. {ai_docs_toolkit-0.4.2 → ai_docs_toolkit-0.5.0}/src/ai_docs_toolkit/core/task_export.py +0 -0
  61. {ai_docs_toolkit-0.4.2 → ai_docs_toolkit-0.5.0}/src/ai_docs_toolkit/graph/__init__.py +0 -0
  62. {ai_docs_toolkit-0.4.2 → ai_docs_toolkit-0.5.0}/src/ai_docs_toolkit/graph/json_output.py +0 -0
  63. {ai_docs_toolkit-0.4.2 → ai_docs_toolkit-0.5.0}/src/ai_docs_toolkit/impact/__init__.py +0 -0
  64. {ai_docs_toolkit-0.4.2 → ai_docs_toolkit-0.5.0}/src/ai_docs_toolkit/impact/json_output.py +0 -0
  65. {ai_docs_toolkit-0.4.2 → ai_docs_toolkit-0.5.0}/src/ai_docs_toolkit/mcp/__init__.py +0 -0
  66. {ai_docs_toolkit-0.4.2 → ai_docs_toolkit-0.5.0}/src/ai_docs_toolkit/mcp/__main__.py +0 -0
  67. {ai_docs_toolkit-0.4.2 → ai_docs_toolkit-0.5.0}/src/ai_docs_toolkit/mcp/setup.py +0 -0
  68. {ai_docs_toolkit-0.4.2 → ai_docs_toolkit-0.5.0}/src/ai_docs_toolkit/review/__init__.py +0 -0
  69. {ai_docs_toolkit-0.4.2 → ai_docs_toolkit-0.5.0}/src/ai_docs_toolkit/review/check.py +0 -0
  70. {ai_docs_toolkit-0.4.2 → ai_docs_toolkit-0.5.0}/src/ai_docs_toolkit/review/record.py +0 -0
  71. {ai_docs_toolkit-0.4.2 → ai_docs_toolkit-0.5.0}/src/ai_docs_toolkit/templates/project/.ai-docs/examples/skills/release-publication/SKILL.md +0 -0
  72. {ai_docs_toolkit-0.4.2 → ai_docs_toolkit-0.5.0}/src/ai_docs_toolkit/templates/project/.ai-docs/reference/documentation-cascade-authoring-skill.md +0 -0
  73. {ai_docs_toolkit-0.4.2 → ai_docs_toolkit-0.5.0}/src/ai_docs_toolkit/templates/project/.ai-docs/reference/documentation-change-review-skill.md +0 -0
  74. {ai_docs_toolkit-0.4.2 → ai_docs_toolkit-0.5.0}/src/ai_docs_toolkit/templates/project/.ai-docs/reference/incoming-request-model.md +0 -0
  75. {ai_docs_toolkit-0.4.2 → ai_docs_toolkit-0.5.0}/src/ai_docs_toolkit/templates/project/.ai-docs/reference/incoming-request-triage-skill.md +0 -0
  76. {ai_docs_toolkit-0.4.2 → ai_docs_toolkit-0.5.0}/src/ai_docs_toolkit/templates/project/.ai-docs/reference/planning-document-model.md +0 -0
  77. {ai_docs_toolkit-0.4.2 → ai_docs_toolkit-0.5.0}/src/ai_docs_toolkit/templates/project/.ai-docs/reference/toolkit-maintenance-context-routing.md +0 -0
  78. {ai_docs_toolkit-0.4.2 → ai_docs_toolkit-0.5.0}/src/ai_docs_toolkit/templates/project/.ai-docs/schemas/document-types/acceptance.schema.yaml +0 -0
  79. {ai_docs_toolkit-0.4.2 → ai_docs_toolkit-0.5.0}/src/ai_docs_toolkit/templates/project/.ai-docs/schemas/document-types/architecture-decision.schema.yaml +0 -0
  80. {ai_docs_toolkit-0.4.2 → ai_docs_toolkit-0.5.0}/src/ai_docs_toolkit/templates/project/.ai-docs/schemas/document-types/asset.schema.yaml +0 -0
  81. {ai_docs_toolkit-0.4.2 → ai_docs_toolkit-0.5.0}/src/ai_docs_toolkit/templates/project/.ai-docs/schemas/document-types/business-rule.schema.yaml +0 -0
  82. {ai_docs_toolkit-0.4.2 → ai_docs_toolkit-0.5.0}/src/ai_docs_toolkit/templates/project/.ai-docs/schemas/document-types/contract.schema.yaml +0 -0
  83. {ai_docs_toolkit-0.4.2 → ai_docs_toolkit-0.5.0}/src/ai_docs_toolkit/templates/project/.ai-docs/schemas/document-types/guide.schema.yaml +0 -0
  84. {ai_docs_toolkit-0.4.2 → ai_docs_toolkit-0.5.0}/src/ai_docs_toolkit/templates/project/.ai-docs/schemas/document-types/implementation-task.schema.yaml +0 -0
  85. {ai_docs_toolkit-0.4.2 → ai_docs_toolkit-0.5.0}/src/ai_docs_toolkit/templates/project/.ai-docs/schemas/document-types/index.schema.yaml +0 -0
  86. {ai_docs_toolkit-0.4.2 → ai_docs_toolkit-0.5.0}/src/ai_docs_toolkit/templates/project/.ai-docs/schemas/document-types/inventory.schema.yaml +0 -0
  87. {ai_docs_toolkit-0.4.2 → ai_docs_toolkit-0.5.0}/src/ai_docs_toolkit/templates/project/.ai-docs/schemas/document-types/module.schema.yaml +0 -0
  88. {ai_docs_toolkit-0.4.2 → ai_docs_toolkit-0.5.0}/src/ai_docs_toolkit/templates/project/.ai-docs/schemas/document-types/operation.schema.yaml +0 -0
  89. {ai_docs_toolkit-0.4.2 → ai_docs_toolkit-0.5.0}/src/ai_docs_toolkit/templates/project/.ai-docs/schemas/document-types/plan-stage.schema.yaml +0 -0
  90. {ai_docs_toolkit-0.4.2 → ai_docs_toolkit-0.5.0}/src/ai_docs_toolkit/templates/project/.ai-docs/schemas/document-types/plan.schema.yaml +0 -0
  91. {ai_docs_toolkit-0.4.2 → ai_docs_toolkit-0.5.0}/src/ai_docs_toolkit/templates/project/.ai-docs/schemas/document-types/runbook.schema.yaml +0 -0
  92. {ai_docs_toolkit-0.4.2 → ai_docs_toolkit-0.5.0}/src/ai_docs_toolkit/templates/project/.ai-docs/schemas/document-types/scenario.schema.yaml +0 -0
  93. {ai_docs_toolkit-0.4.2 → ai_docs_toolkit-0.5.0}/src/ai_docs_toolkit/templates/project/.ai-docs/schemas/document-types/standalone-task.schema.yaml +0 -0
  94. {ai_docs_toolkit-0.4.2 → ai_docs_toolkit-0.5.0}/src/ai_docs_toolkit/templates/project/.ai-docs/schemas/document-types/task-registry.schema.yaml +0 -0
  95. {ai_docs_toolkit-0.4.2 → ai_docs_toolkit-0.5.0}/src/ai_docs_toolkit/templates/project/.ai-docs/schemas/document-types/test-case.schema.yaml +0 -0
  96. {ai_docs_toolkit-0.4.2 → ai_docs_toolkit-0.5.0}/src/ai_docs_toolkit/templates/project/.ai-docs/schemas/frontmatter.schema.yaml +0 -0
  97. {ai_docs_toolkit-0.4.2 → ai_docs_toolkit-0.5.0}/src/ai_docs_toolkit/templates/project/.ai-docs/skills/documentation-cascade-authoring/SKILL.md +0 -0
  98. {ai_docs_toolkit-0.4.2 → ai_docs_toolkit-0.5.0}/src/ai_docs_toolkit/templates/project/.ai-docs/skills/documentation-change-review/SKILL.md +0 -0
  99. {ai_docs_toolkit-0.4.2 → ai_docs_toolkit-0.5.0}/src/ai_docs_toolkit/templates/project/.ai-docs/skills/incoming-request-triage/SKILL.md +0 -0
  100. {ai_docs_toolkit-0.4.2 → ai_docs_toolkit-0.5.0}/src/ai_docs_toolkit/templates/project/.ai-docs/skills/index.md +0 -0
  101. {ai_docs_toolkit-0.4.2 → ai_docs_toolkit-0.5.0}/src/ai_docs_toolkit/templates/project/.ai-docs/skills/planning-record-generation/SKILL.md +0 -0
  102. {ai_docs_toolkit-0.4.2 → ai_docs_toolkit-0.5.0}/src/ai_docs_toolkit/templates/project/.ai-docs/skills/planning-task-execution/SKILL.md +0 -0
  103. {ai_docs_toolkit-0.4.2 → ai_docs_toolkit-0.5.0}/src/ai_docs_toolkit/templates/project/.ai-docs/skills/toolkit-consumer-policy/SKILL.md +0 -0
  104. {ai_docs_toolkit-0.4.2 → ai_docs_toolkit-0.5.0}/src/ai_docs_toolkit/templates/project/.ai-docs/skills/update-ai-docs-toolkit/SKILL.md +0 -0
  105. {ai_docs_toolkit-0.4.2 → ai_docs_toolkit-0.5.0}/src/ai_docs_toolkit/templates/project/.ai-docs/templates/release/agent-context-architecture-beta-18.md +0 -0
  106. {ai_docs_toolkit-0.4.2 → ai_docs_toolkit-0.5.0}/src/ai_docs_toolkit/templates/project/.ai-docs/templates/release/archive-validation-beta-12.md +0 -0
  107. {ai_docs_toolkit-0.4.2 → ai_docs_toolkit-0.5.0}/src/ai_docs_toolkit/templates/project/.ai-docs/templates/release/cascade-impact-beta-14.md +0 -0
  108. {ai_docs_toolkit-0.4.2 → ai_docs_toolkit-0.5.0}/src/ai_docs_toolkit/templates/project/.ai-docs/templates/release/consumer-migration-hardening.md +0 -0
  109. {ai_docs_toolkit-0.4.2 → ai_docs_toolkit-0.5.0}/src/ai_docs_toolkit/templates/project/.ai-docs/templates/release/decision-visibility-beta-13.md +0 -0
  110. {ai_docs_toolkit-0.4.2 → ai_docs_toolkit-0.5.0}/src/ai_docs_toolkit/templates/project/.ai-docs/templates/release/doctor-filesystem-traversal-beta-19.md +0 -0
  111. {ai_docs_toolkit-0.4.2 → ai_docs_toolkit-0.5.0}/src/ai_docs_toolkit/templates/project/.ai-docs/templates/release/doctor-json-provenance-beta-20.md +0 -0
  112. {ai_docs_toolkit-0.4.2 → ai_docs_toolkit-0.5.0}/src/ai_docs_toolkit/templates/project/.ai-docs/templates/release/documentation-cascade-authoring-beta-23.md +0 -0
  113. {ai_docs_toolkit-0.4.2 → ai_docs_toolkit-0.5.0}/src/ai_docs_toolkit/templates/project/.ai-docs/templates/release/documentation-change-review-beta-21.md +0 -0
  114. {ai_docs_toolkit-0.4.2 → ai_docs_toolkit-0.5.0}/src/ai_docs_toolkit/templates/project/.ai-docs/templates/release/incoming-request-storage-beta-17.md +0 -0
  115. {ai_docs_toolkit-0.4.2 → ai_docs_toolkit-0.5.0}/src/ai_docs_toolkit/templates/project/.ai-docs/templates/release/incoming-request-triage-beta-22.md +0 -0
  116. {ai_docs_toolkit-0.4.2 → ai_docs_toolkit-0.5.0}/src/ai_docs_toolkit/templates/project/.ai-docs/templates/release/migration-note.md +0 -0
  117. {ai_docs_toolkit-0.4.2 → ai_docs_toolkit-0.5.0}/src/ai_docs_toolkit/templates/project/.ai-docs/templates/release/post-publication-checks.md +0 -0
  118. {ai_docs_toolkit-0.4.2 → ai_docs_toolkit-0.5.0}/src/ai_docs_toolkit/templates/project/.ai-docs/templates/release/release-task.md +0 -0
  119. {ai_docs_toolkit-0.4.2 → ai_docs_toolkit-0.5.0}/src/ai_docs_toolkit/templates/project/.ai-docs/templates/release/routing-restoration-beta-15.md +0 -0
  120. {ai_docs_toolkit-0.4.2 → ai_docs_toolkit-0.5.0}/src/ai_docs_toolkit/templates/project/.ai-docs/templates/release/task-retirement-beta-16.md +0 -0
  121. {ai_docs_toolkit-0.4.2 → ai_docs_toolkit-0.5.0}/src/ai_docs_toolkit/templates/project/.ai-docs/templates/release/validation-evidence.md +0 -0
  122. {ai_docs_toolkit-0.4.2 → ai_docs_toolkit-0.5.0}/src/ai_docs_toolkit/templates/project/.ai-docs/templates/release/version-change-checklist.md +0 -0
  123. {ai_docs_toolkit-0.4.2 → ai_docs_toolkit-0.5.0}/src/ai_docs_toolkit/templates/project/.ai-docs/workflows/documentation-cascade-adoption.md +0 -0
  124. {ai_docs_toolkit-0.4.2 → ai_docs_toolkit-0.5.0}/src/ai_docs_toolkit/templates/project/.ai-docs/workflows/plan-stage-workflow.md +0 -0
  125. {ai_docs_toolkit-0.4.2 → ai_docs_toolkit-0.5.0}/src/ai_docs_toolkit/templates/project/.ai-docs/workflows/toolkit-migration-workflow.md +0 -0
  126. {ai_docs_toolkit-0.4.2 → ai_docs_toolkit-0.5.0}/src/ai_docs_toolkit/templates/project/AGENTS.md +0 -0
  127. {ai_docs_toolkit-0.4.2 → ai_docs_toolkit-0.5.0}/src/ai_docs_toolkit/templates/project/ai-docs-index.md +0 -0
  128. {ai_docs_toolkit-0.4.2 → ai_docs_toolkit-0.5.0}/src/ai_docs_toolkit/validation/__init__.py +0 -0
  129. {ai_docs_toolkit-0.4.2 → ai_docs_toolkit-0.5.0}/src/ai_docs_toolkit/validation/human.py +0 -0
  130. {ai_docs_toolkit-0.4.2 → ai_docs_toolkit-0.5.0}/src/ai_docs_toolkit.egg-info/dependency_links.txt +0 -0
  131. {ai_docs_toolkit-0.4.2 → ai_docs_toolkit-0.5.0}/src/ai_docs_toolkit.egg-info/entry_points.txt +0 -0
  132. {ai_docs_toolkit-0.4.2 → ai_docs_toolkit-0.5.0}/src/ai_docs_toolkit.egg-info/requires.txt +0 -0
  133. {ai_docs_toolkit-0.4.2 → ai_docs_toolkit-0.5.0}/src/ai_docs_toolkit.egg-info/top_level.txt +0 -0
  134. {ai_docs_toolkit-0.4.2 → ai_docs_toolkit-0.5.0}/tests/test_azure_devops_provider.py +0 -0
  135. {ai_docs_toolkit-0.4.2 → ai_docs_toolkit-0.5.0}/tests/test_code_links.py +0 -0
  136. {ai_docs_toolkit-0.4.2 → ai_docs_toolkit-0.5.0}/tests/test_config_loader_and_scanner.py +0 -0
  137. {ai_docs_toolkit-0.4.2 → ai_docs_toolkit-0.5.0}/tests/test_consumer_matrix.py +0 -0
  138. {ai_docs_toolkit-0.4.2 → ai_docs_toolkit-0.5.0}/tests/test_context_cli_json.py +0 -0
  139. {ai_docs_toolkit-0.4.2 → ai_docs_toolkit-0.5.0}/tests/test_context_cli_markdown.py +0 -0
  140. {ai_docs_toolkit-0.4.2 → ai_docs_toolkit-0.5.0}/tests/test_context_depth.py +0 -0
  141. {ai_docs_toolkit-0.4.2 → ai_docs_toolkit-0.5.0}/tests/test_context_policy.py +0 -0
  142. {ai_docs_toolkit-0.4.2 → ai_docs_toolkit-0.5.0}/tests/test_context_selector.py +0 -0
  143. {ai_docs_toolkit-0.4.2 → ai_docs_toolkit-0.5.0}/tests/test_document_graph.py +0 -0
  144. {ai_docs_toolkit-0.4.2 → ai_docs_toolkit-0.5.0}/tests/test_document_registry.py +0 -0
  145. {ai_docs_toolkit-0.4.2 → ai_docs_toolkit-0.5.0}/tests/test_execution_evals.py +0 -0
  146. {ai_docs_toolkit-0.4.2 → ai_docs_toolkit-0.5.0}/tests/test_frontmatter_parser.py +0 -0
  147. {ai_docs_toolkit-0.4.2 → ai_docs_toolkit-0.5.0}/tests/test_graph_cli_json.py +0 -0
  148. {ai_docs_toolkit-0.4.2 → ai_docs_toolkit-0.5.0}/tests/test_impact_analysis.py +0 -0
  149. {ai_docs_toolkit-0.4.2 → ai_docs_toolkit-0.5.0}/tests/test_impact_cli_human.py +0 -0
  150. {ai_docs_toolkit-0.4.2 → ai_docs_toolkit-0.5.0}/tests/test_impact_cli_json.py +0 -0
  151. {ai_docs_toolkit-0.4.2 → ai_docs_toolkit-0.5.0}/tests/test_review_check.py +0 -0
  152. {ai_docs_toolkit-0.4.2 → ai_docs_toolkit-0.5.0}/tests/test_schema_validation.py +0 -0
  153. {ai_docs_toolkit-0.4.2 → ai_docs_toolkit-0.5.0}/tests/test_skill_eval_harness.py +0 -0
  154. {ai_docs_toolkit-0.4.2 → ai_docs_toolkit-0.5.0}/tests/test_structure_validation.py +0 -0
  155. {ai_docs_toolkit-0.4.2 → ai_docs_toolkit-0.5.0}/tests/test_task_export.py +0 -0
  156. {ai_docs_toolkit-0.4.2 → ai_docs_toolkit-0.5.0}/tests/test_validate_cli_human.py +0 -0
  157. {ai_docs_toolkit-0.4.2 → ai_docs_toolkit-0.5.0}/tests/test_validate_cli_json.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: ai-docs-toolkit
3
- Version: 0.4.2
3
+ Version: 0.5.0
4
4
  Summary: AI-oriented documentation toolkit.
5
5
  License-Expression: MIT
6
6
  Requires-Python: >=3.14
@@ -33,7 +33,7 @@ The core idea is that documentation should not be a secondary artifact created a
33
33
 
34
34
  ## Current Status
35
35
 
36
- Version 0.4.2 includes:
36
+ Version 0.5.0 includes:
37
37
 
38
38
  - schema and structure validation for Markdown documents with YAML front matter;
39
39
  - document graph output;
@@ -45,32 +45,62 @@ Version 0.4.2 includes:
45
45
  - context bundle output;
46
46
  - an executable `ai-docs` CLI;
47
47
  - optional local MCP runtime entrypoint.
48
+ - opt-in workspace impact analysis through CLI and MCP, with explicit manifests,
49
+ repository-scoped IDs, public event interfaces and visible partial results.
48
50
 
49
51
  ## Installation
50
52
 
51
- Install version 0.4.2 with Python 3.14 or newer:
53
+ Install version 0.5.0 with Python 3.14 or newer:
52
54
 
53
55
  ```bash
54
- python -m pip install ai-docs-toolkit==0.4.2
56
+ python -m pip install ai-docs-toolkit==0.5.0
55
57
  ai-docs --version
56
58
  ```
57
59
 
58
60
  For ephemeral execution with `uvx`:
59
61
 
60
62
  ```bash
61
- uvx --python 3.14 --from ai-docs-toolkit==0.4.2 ai-docs --version
63
+ uvx --python 3.14 --from ai-docs-toolkit==0.5.0 ai-docs --version
62
64
  ```
63
65
 
64
66
  For the optional local MCP runtime:
65
67
 
66
68
  ```bash
67
- python -m pip install "ai-docs-toolkit[mcp]==0.4.2"
69
+ python -m pip install "ai-docs-toolkit[mcp]==0.5.0"
68
70
  ai-docs-mcp --project-root .
69
71
  ```
70
72
 
71
73
  For the latest stable release, use `python -m pip install --upgrade ai-docs-toolkit`
72
74
  without an exact version pin.
73
75
 
76
+ ## Release 0.5.0
77
+
78
+ `ai-docs workspace impact --workspace ./ai-docs.workspace.yaml --input ./change.yaml --format json`
79
+ analyzes explicitly connected independent repositories. Stable repository IDs
80
+ namespace document IDs; a system repository owns public event contracts and
81
+ producer/consumer roles, while local bindings select implementation modules.
82
+ Modules may be nested within a repository. Cross-repository `related.*` links
83
+ and inferred dependency discovery are not required.
84
+
85
+ The MCP tool is registered only when the server starts with `--workspace`;
86
+ ordinary local commands retain their scope. JSON v1 preserves candidates,
87
+ provenance and diagnostics when a checkout, binding or interface version is
88
+ missing. A partial result is not a clean review, and resolved routing does not
89
+ prove sufficient context or implementation compatibility.
90
+
91
+ Upgrading from 0.4.2 refreshes four managed workspace schemas and the consumer
92
+ reference in both `minimal` and `agent` profiles. Review `init --dry-run` and
93
+ `init --check` with the existing profile, reconcile local modifications, then
94
+ run ordinary `init` without blanket `--force`. Project documents, IDs, local
95
+ policy and configuration remain project-owned. Repository IDs, manifests and
96
+ bindings require manual opt-in; init does not discover neighboring repositories.
97
+ Exact commands and rollback are in “Migration 0.4.2 To 0.5.0” in the packaged
98
+ `ai_docs_toolkit/docs/agent-installation.md`.
99
+
100
+ Verification includes installed CLI/MCP and upgrade matrices plus a bounded
101
+ HAM documentation evaluation. Its accepted result retains native-format
102
+ validation findings; it is not a full HAM migration or service runtime check.
103
+
74
104
  ## Release 0.4.2
75
105
 
76
106
  The package now declares the MIT license in its metadata and includes the full
@@ -2,7 +2,7 @@
2
2
 
3
3
  AI Docs Toolkit is a documentation toolkit for AI-assisted software development.
4
4
 
5
- It treats documentation as an engineering interface between humans, AI agents, code, tests and change management. The 0.4.2 source declares the MIT license and retains the 0.4.1 impact, review and code-link improvements. Python 3.14 or newer is required.
5
+ It treats documentation as an engineering interface between humans, AI agents, code, tests and change management. Version 0.5.0 adds opt-in workspace impact analysis across independent repositories through CLI and MCP. The package uses the MIT license and requires Python 3.14 or newer.
6
6
 
7
7
  ## Purpose
8
8
 
@@ -34,6 +34,7 @@ The stable package provides:
34
34
  - impact analysis;
35
35
  - context selection with history filtering, optional body budgets and configurable depth;
36
36
  - proportionate agent workflows and optional MCP integration;
37
+ - explicit workspace manifests, repository-scoped document IDs and public event interface routing;
37
38
  - CI, pre-commit and agent workflow examples.
38
39
 
39
40
  At this stage the repository contains:
@@ -83,10 +84,13 @@ pipx install ai-docs-toolkit
83
84
  uvx --from ai-docs-toolkit ai-docs validate
84
85
  ```
85
86
 
86
- [Version 0.4.1 is available on Public PyPI](https://pypi.org/project/ai-docs-toolkit/0.4.1/).
87
- Version 0.4.2 is prepared for publication with MIT license metadata and updated
88
- product guidance. It changes no CLI, schema, template or runtime behavior.
89
- See the [0.4.1 → 0.4.2 upgrade note](src/ai_docs_toolkit/docs/agent-installation.md#migration-041-to-042).
87
+ [Release 0.5.0](ai-docs/reference/releases/0-5-0.md) adds `ai-docs workspace impact`
88
+ and the explicitly enabled MCP workspace tool. Existing repository-local commands
89
+ keep their scope. See the [0.4.2 → 0.5.0 migration guide](src/ai_docs_toolkit/docs/agent-installation.md#migration-042-to-050)
90
+ for the managed schema/reference refresh in both init profiles and manual opt-in.
91
+ Registry availability is shown on [Public PyPI](https://pypi.org/project/ai-docs-toolkit/).
92
+ If upgrading from 0.4.1, also read the
93
+ [0.4.1 → 0.4.2 upgrade note](src/ai_docs_toolkit/docs/agent-installation.md#migration-041-to-042).
90
94
  If upgrading from 0.4.0, also follow the
91
95
  [0.4.0 → 0.4.1 migration guide](src/ai_docs_toolkit/docs/agent-installation.md#migration-040-to-041).
92
96
  That patch required no schema, configuration or managed-template content migration;
@@ -270,7 +274,7 @@ The MVP does not aim to provide:
270
274
  - full IDE plugins;
271
275
  - hosted services;
272
276
  - database-backed graph storage;
273
- - cross-repository dependency graphs.
277
+ - inferred or transitive cross-repository dependency graphs beyond explicit public interface bindings.
274
278
 
275
279
  ## License
276
280
 
@@ -16,7 +16,7 @@ The core idea is that documentation should not be a secondary artifact created a
16
16
 
17
17
  ## Current Status
18
18
 
19
- Version 0.4.2 includes:
19
+ Version 0.5.0 includes:
20
20
 
21
21
  - schema and structure validation for Markdown documents with YAML front matter;
22
22
  - document graph output;
@@ -28,32 +28,62 @@ Version 0.4.2 includes:
28
28
  - context bundle output;
29
29
  - an executable `ai-docs` CLI;
30
30
  - optional local MCP runtime entrypoint.
31
+ - opt-in workspace impact analysis through CLI and MCP, with explicit manifests,
32
+ repository-scoped IDs, public event interfaces and visible partial results.
31
33
 
32
34
  ## Installation
33
35
 
34
- Install version 0.4.2 with Python 3.14 or newer:
36
+ Install version 0.5.0 with Python 3.14 or newer:
35
37
 
36
38
  ```bash
37
- python -m pip install ai-docs-toolkit==0.4.2
39
+ python -m pip install ai-docs-toolkit==0.5.0
38
40
  ai-docs --version
39
41
  ```
40
42
 
41
43
  For ephemeral execution with `uvx`:
42
44
 
43
45
  ```bash
44
- uvx --python 3.14 --from ai-docs-toolkit==0.4.2 ai-docs --version
46
+ uvx --python 3.14 --from ai-docs-toolkit==0.5.0 ai-docs --version
45
47
  ```
46
48
 
47
49
  For the optional local MCP runtime:
48
50
 
49
51
  ```bash
50
- python -m pip install "ai-docs-toolkit[mcp]==0.4.2"
52
+ python -m pip install "ai-docs-toolkit[mcp]==0.5.0"
51
53
  ai-docs-mcp --project-root .
52
54
  ```
53
55
 
54
56
  For the latest stable release, use `python -m pip install --upgrade ai-docs-toolkit`
55
57
  without an exact version pin.
56
58
 
59
+ ## Release 0.5.0
60
+
61
+ `ai-docs workspace impact --workspace ./ai-docs.workspace.yaml --input ./change.yaml --format json`
62
+ analyzes explicitly connected independent repositories. Stable repository IDs
63
+ namespace document IDs; a system repository owns public event contracts and
64
+ producer/consumer roles, while local bindings select implementation modules.
65
+ Modules may be nested within a repository. Cross-repository `related.*` links
66
+ and inferred dependency discovery are not required.
67
+
68
+ The MCP tool is registered only when the server starts with `--workspace`;
69
+ ordinary local commands retain their scope. JSON v1 preserves candidates,
70
+ provenance and diagnostics when a checkout, binding or interface version is
71
+ missing. A partial result is not a clean review, and resolved routing does not
72
+ prove sufficient context or implementation compatibility.
73
+
74
+ Upgrading from 0.4.2 refreshes four managed workspace schemas and the consumer
75
+ reference in both `minimal` and `agent` profiles. Review `init --dry-run` and
76
+ `init --check` with the existing profile, reconcile local modifications, then
77
+ run ordinary `init` without blanket `--force`. Project documents, IDs, local
78
+ policy and configuration remain project-owned. Repository IDs, manifests and
79
+ bindings require manual opt-in; init does not discover neighboring repositories.
80
+ Exact commands and rollback are in “Migration 0.4.2 To 0.5.0” in the packaged
81
+ `ai_docs_toolkit/docs/agent-installation.md`.
82
+
83
+ Verification includes installed CLI/MCP and upgrade matrices plus a bounded
84
+ HAM documentation evaluation. Its accepted result retains native-format
85
+ validation findings; it is not a full HAM migration or service runtime check.
86
+
57
87
  ## Release 0.4.2
58
88
 
59
89
  The package now declares the MIT license in its metadata and includes the full
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
4
4
 
5
5
  [project]
6
6
  name = "ai-docs-toolkit"
7
- version = "0.4.2"
7
+ version = "0.5.0"
8
8
  description = "AI-oriented documentation toolkit."
9
9
  readme = "packaging/pypi/README.md"
10
10
  requires-python = ">=3.14"
@@ -41,6 +41,7 @@ ai_docs_toolkit = [
41
41
  "templates/project/.ai-docs/reference/*.md",
42
42
  "templates/project/.ai-docs/schemas/*.schema.yaml",
43
43
  "templates/project/.ai-docs/schemas/document-types/*.schema.yaml",
44
+ "templates/project/.ai-docs/schemas/workspace/*-v1.schema.yaml",
44
45
  "templates/project/.ai-docs/templates/release/*.md",
45
46
  "templates/project/.ai-docs/workflows/*.md",
46
47
  ]
@@ -1,3 +1,3 @@
1
1
  """AI Docs Toolkit package baseline."""
2
2
 
3
- __version__ = "0.4.2"
3
+ __version__ = "0.5.0"
@@ -91,6 +91,7 @@ def _help_text() -> str:
91
91
  " ai-docs tasks push --provider azure-devops (--task TASK-ID | --stage STAGE-ID | --plan PLAN-ID) --organization ORG --project PROJECT [--dry-run] [--write-back] [--format json]",
92
92
  " ai-docs graph --format json [--type TYPE] [--module MODULE] [--id ID]",
93
93
  " ai-docs impact (--id ID | --changed [--base REF]) [--format json]",
94
+ " ai-docs workspace impact --workspace FILE --input FILE [--format human|json]",
94
95
  " ai-docs code-links-check FILE... [--format human|json|--json]",
95
96
  " ai-docs review-check RECORD [--record N] [--format json|--json]",
96
97
  " ai-docs context (--id ID | --module MODULE | --feature FEATURE | --changed) [--format json] [--history exclude|include|legacy] [--body-budget-bytes N] [--depth N]",
@@ -110,6 +111,11 @@ def main(argv: list[str] | None = None) -> int:
110
111
 
111
112
  args = sys.argv[1:]
112
113
 
114
+ if args and args[0] == "workspace":
115
+ from .workspace import main as workspace_main
116
+
117
+ return workspace_main(args[1:])
118
+
113
119
  if not args or "--help" in args or "-h" in args:
114
120
  print(_help_text())
115
121
  return 0
@@ -0,0 +1,58 @@
1
+ """Explicit workspace CLI adapter; domain results come from the shared service."""
2
+
3
+ import argparse
4
+ import sys
5
+
6
+ from ai_docs_toolkit.workspace import analyze_workspace_file, format_workspace_json
7
+
8
+
9
+ class UsageError(ValueError):
10
+ pass
11
+
12
+
13
+ class WorkspaceParser(argparse.ArgumentParser):
14
+ def error(self, message):
15
+ raise UsageError(message)
16
+
17
+
18
+ def main(argv: list[str]) -> int:
19
+ parser = WorkspaceParser(prog="ai-docs workspace impact", allow_abbrev=False)
20
+ parser.add_argument("--workspace", required=True, help="Explicit workspace manifest path.")
21
+ parser.add_argument("--input", required=True, help="Saved JSON/YAML request v1 path.")
22
+ parser.add_argument("--format", choices=("human", "json"), default="human")
23
+ try:
24
+ if not argv or argv[0] != "impact":
25
+ raise UsageError("expected 'workspace impact'")
26
+ # Duplicate selectors are ambiguous even if argparse would accept the last value.
27
+ options = [arg.split("=", 1)[0] for arg in argv[1:] if arg.startswith("--")]
28
+ if len(options) != len(set(options)):
29
+ raise UsageError("duplicate option")
30
+ args = parser.parse_args(argv[1:])
31
+ except UsageError as exc:
32
+ parser.print_usage(sys.stderr)
33
+ print(f"{parser.prog}: error: {exc}", file=sys.stderr)
34
+ return 3
35
+ except SystemExit as exc:
36
+ return int(exc.code)
37
+ result = analyze_workspace_file(args.workspace, args.input)
38
+ print(format_workspace_json(result) if args.format == "json" else format_human(result), end="")
39
+ return result["exit_code"]
40
+
41
+
42
+ def format_human(result: dict) -> str:
43
+ lines = [f"Workspace routing: {result['routing_status']} (exit {result['exit_code']})",
44
+ f"Sources: {len(result['sources'])}; candidates: {len(result['candidates'])}"]
45
+ for kind in ("sources", "candidates"):
46
+ for document in result[kind]:
47
+ lines.append(f"{kind}: {document['repository_id']}:{document['document_id']}")
48
+ for gap in result["gaps"]:
49
+ lines.append(f"Gap {gap['code']} [{gap['repository_id']}]: {gap['message']}")
50
+ for review in result["reviews"]:
51
+ if review["system_review_required"]:
52
+ lines.append(f"System review required: {review['repository_id']} ({review['interface_impact']})")
53
+ for context in result["context"]:
54
+ for field in ("warnings", "gaps", "excluded", "historical"):
55
+ if context.get(field):
56
+ lines.append(f"Context {context['repository_id']} {field}: {len(context[field])}")
57
+ lines.append("Routing completion does not mean review completion or sufficient context. Use --format json for evidence.")
58
+ return "\n".join(lines) + "\n"
@@ -49,9 +49,15 @@ def read_git_changed_files(
49
49
  *,
50
50
  unavailable_rule_id: str,
51
51
  base_ref: str | None = None,
52
+ git_config: tuple[str, ...] = (),
52
53
  ) -> GitChangedFilesResult:
54
+ """Discover local paths; optional process config lets isolated callers disable hooks.
55
+
56
+ Workspace analysis passes `-c core.fsmonitor=false` so reading a checkout
57
+ cannot execute its monitor program. Existing callers retain their defaults.
58
+ """
53
59
  process = subprocess.run(
54
- ["git", "status", "--porcelain", "-z", "--untracked-files=all"],
60
+ ["git", *git_config, "status", "--porcelain", "-z", "--untracked-files=all"],
55
61
  cwd=root,
56
62
  capture_output=True,
57
63
  text=True,
@@ -76,6 +82,7 @@ def read_git_changed_files(
76
82
  diff_process = subprocess.run(
77
83
  [
78
84
  "git",
85
+ *git_config,
79
86
  "diff",
80
87
  "--name-only",
81
88
  "-z",
@@ -440,6 +440,36 @@ BOOTSTRAP_TEMPLATES = (
440
440
  profiles=frozenset({"agent"}),
441
441
  overwrite_existing=True,
442
442
  ),
443
+ BootstrapTemplate(
444
+ source_name=".ai-docs/schemas/workspace/manifest-v1.schema.yaml",
445
+ target_path=".ai-docs/schemas/workspace/manifest-v1.schema.yaml",
446
+ profiles=frozenset({"minimal", "agent"}),
447
+ overwrite_existing=True,
448
+ ),
449
+ BootstrapTemplate(
450
+ source_name=".ai-docs/schemas/workspace/request-v1.schema.yaml",
451
+ target_path=".ai-docs/schemas/workspace/request-v1.schema.yaml",
452
+ profiles=frozenset({"minimal", "agent"}),
453
+ overwrite_existing=True,
454
+ ),
455
+ BootstrapTemplate(
456
+ source_name=".ai-docs/schemas/workspace/repository-v1.schema.yaml",
457
+ target_path=".ai-docs/schemas/workspace/repository-v1.schema.yaml",
458
+ profiles=frozenset({"minimal", "agent"}),
459
+ overwrite_existing=True,
460
+ ),
461
+ BootstrapTemplate(
462
+ source_name=".ai-docs/schemas/workspace/result-v1.schema.yaml",
463
+ target_path=".ai-docs/schemas/workspace/result-v1.schema.yaml",
464
+ profiles=frozenset({"minimal", "agent"}),
465
+ overwrite_existing=True,
466
+ ),
467
+ BootstrapTemplate(
468
+ source_name=".ai-docs/reference/workspace-analysis.md",
469
+ target_path=".ai-docs/reference/workspace-analysis.md",
470
+ profiles=frozenset({"minimal", "agent"}),
471
+ overwrite_existing=True,
472
+ ),
443
473
  )
444
474
 
445
475
 
@@ -47,7 +47,7 @@ ai-docs --version
47
47
  Pinned install:
48
48
 
49
49
  ```bash
50
- python -m pip install "ai-docs-toolkit==0.4.2"
50
+ python -m pip install "ai-docs-toolkit==0.5.0"
51
51
  ai-docs --version
52
52
  ```
53
53
 
@@ -89,6 +89,96 @@ bulk task deletion is required. Detailed migration and rollback guidance is in
89
89
  the installed `.ai-docs/reference/planning-document-model.md`, under
90
90
  “Consumer Migration: Proportionate Workflow”.
91
91
 
92
+ ## Migration 0.4.2 To 0.5.0
93
+
94
+ From: `0.4.2`. To: `0.5.0`. Python 3.14+ remains required. This minor release
95
+ adds opt-in workspace impact analysis through CLI/MCP and four workspace v1
96
+ schemas. Ordinary local graph, impact and context commands keep their scope.
97
+ No product-document or service-runtime migration is performed by the package.
98
+
99
+ Before upgrading, record the package version, Git state, hashes of project-owned
100
+ files and the results of independent project checks. Preserve saved review rounds:
101
+
102
+ ```bash
103
+ ai-docs --version
104
+ ai-docs validate --json
105
+ ai-docs doctor --format json
106
+ # Use the project's existing profile, either agent or minimal:
107
+ ai-docs init --profile agent --dry-run
108
+ ai-docs init --profile agent --check
109
+ ```
110
+
111
+ After the version is available on Public PyPI, upgrade in the approved environment
112
+ and update the project's version pin. Choose the applicable installation method:
113
+
114
+ ```bash
115
+ python -m pip install --upgrade "ai-docs-toolkit==0.5.0"
116
+ # MCP users install the complete extra instead:
117
+ python -m pip install --upgrade "ai-docs-toolkit[mcp]==0.5.0"
118
+ pipx install --force --python python3.14 "ai-docs-toolkit==0.5.0"
119
+ uvx --python 3.14 --from ai-docs-toolkit==0.5.0 ai-docs --version
120
+ ```
121
+
122
+ Reconnect long-lived MCP clients. Inspect `init --dry-run` and `--check` again
123
+ using the same profile. Both profiles add `.ai-docs/schemas/workspace/` with
124
+ `repository-v1.schema.yaml`, `manifest-v1.schema.yaml`, `request-v1.schema.yaml`
125
+ and `result-v1.schema.yaml`, plus `.ai-docs/reference/workspace-analysis.md`.
126
+ Known unchanged managed files can be refreshed by ordinary init:
127
+
128
+ ```bash
129
+ ai-docs init --profile agent --dry-run
130
+ ai-docs init --profile agent --check
131
+ # After reviewing the proposed managed-file changes:
132
+ ai-docs init --profile agent
133
+ ai-docs init --profile agent --check
134
+ ai-docs --version
135
+ ai-docs validate --json
136
+ ai-docs doctor --format json
137
+ ```
138
+
139
+ Substitute `--profile minimal` throughout for an existing minimal project.
140
+ `locally_modified` or `provenance_missing` blocks ordinary init before any
141
+ upgrade writes. Reconcile those files and their provenance manually before
142
+ retrying; do not use blanket `--force` as a migration shortcut. An initial
143
+ nonzero `init --check` can describe the expected pending refresh; after applying
144
+ reviewed updates it must be clean and a repeat init must be idempotent.
145
+
146
+ Preserve `ai-docs.config.yaml`, existing AGENTS.md and index documents,
147
+ `.ai-docs/local/**`, product documents, IDs, aliases, links, task/review history
148
+ and project-owned workspace manifests. Managed provenance is recorded in
149
+ `.ai-docs/managed-files.json`. Compare project-owned hashes after the upgrade;
150
+ stop for unexpected rewrites or new unexplained validation/doctor findings.
151
+ Keep all independent project checks. A toolkit update does not make an
152
+ unconfigured or partially adapted documentation corpus valid automatically.
153
+
154
+ Workspace use is optional. To enable it, follow the installed
155
+ `.ai-docs/reference/workspace-analysis.md`: manually assign stable repository
156
+ IDs, configure the system public event interfaces and local module bindings,
157
+ then create a project-owned manifest and request. Init does not create them.
158
+ Use explicit CLI paths, or add startup `--workspace` to the MCP server:
159
+
160
+ ```bash
161
+ ai-docs workspace impact --workspace ./ai-docs.workspace.yaml --input ./change.yaml --format json
162
+ ai-docs-mcp --project-root . --workspace ./ai-docs.workspace.yaml
163
+ ```
164
+
165
+ Verify the selected candidates and review context against the intended change.
166
+ Exit 1/`partial` retains available candidates and reports gaps; it is not zero
167
+ impact. Exit 0/`resolved` does not complete semantic review or run service tests.
168
+ MCP exposes the workspace tool only after explicit server startup opt-in;
169
+ clients cannot override the manifest path per call. Separate local commands
170
+ remain usable without neighboring checkouts.
171
+
172
+ To disable workspace analysis, remove the workspace invocation from automation
173
+ and its startup argument from MCP, then restart the server. For rollback,
174
+ preserve the current evidence, restore the previous approved pin and reinstall
175
+ `ai-docs-toolkit==0.4.2` (or the complete MCP extra) in the supported environment.
176
+ Restore only this upgrade's reviewed managed-file/provenance changes from Git,
177
+ preserving unrelated project work, and repeat local checks. Version 0.4.2 has
178
+ no workspace command. Package rollback does not rewrite project files or undo
179
+ manual opt-in metadata; retain that metadata and history unless separately
180
+ authorized to change them.
181
+
92
182
  ## Migration 0.4.1 To 0.4.2
93
183
 
94
184
  From: `0.4.1`. To: `0.4.2`. Install the target after it appears on Public
@@ -30,6 +30,7 @@ SERVER_NAME = "AI Docs Toolkit"
30
30
  class McpRuntimeArgs:
31
31
  project_root: Path
32
32
  config_file: str
33
+ workspace: str | None = None
33
34
 
34
35
 
35
36
  def parse_args(argv: list[str] | None = None) -> McpRuntimeArgs:
@@ -47,10 +48,12 @@ def parse_args(argv: list[str] | None = None) -> McpRuntimeArgs:
47
48
  default=DEFAULT_CONFIG_FILE,
48
49
  help=f"Project config file relative to the project root. Defaults to {DEFAULT_CONFIG_FILE}.",
49
50
  )
51
+ parser.add_argument("--workspace", help="Opt in to a workspace manifest, relative to project root.")
50
52
  parsed = parser.parse_args(argv)
51
53
  return McpRuntimeArgs(
52
54
  project_root=Path(parsed.project_root),
53
55
  config_file=parsed.config,
56
+ workspace=parsed.workspace,
54
57
  )
55
58
 
56
59
 
@@ -186,15 +189,33 @@ def build_server(
186
189
  *,
187
190
  project_root: str | Path = ".",
188
191
  config_file: str = DEFAULT_CONFIG_FILE,
192
+ workspace: str | Path | None = None,
189
193
  mcp_server_factory: Callable[..., Any] | None = None,
190
194
  ) -> Any:
191
195
  server_factory = mcp_server_factory or _load_mcp_server()
192
196
  server = server_factory(SERVER_NAME, version=__version__)
193
197
  default_project_root = project_root
198
+ # Capture an absolute startup choice; calls cannot override it or change it via cwd.
199
+ workspace_path = (Path(project_root) / workspace).resolve() if workspace is not None else None
200
+
201
+ def runtime_info() -> dict[str, Any]:
202
+ info = server_info(project_root=project_root, config_file=config_file)
203
+ if workspace_path is not None:
204
+ info["workspace"] = {"path": str(workspace_path),
205
+ "request_schema_versions": [1], "result_schema_versions": [1]}
206
+ return info
194
207
 
195
208
  @server.tool(name="ai_docs_server_info")
196
209
  def ai_docs_server_info() -> dict[str, Any]:
197
- return server_info(project_root=project_root, config_file=config_file)
210
+ return runtime_info()
211
+
212
+ if workspace_path is not None:
213
+ from ai_docs_toolkit.workspace import analyze_workspace
214
+
215
+ @server.tool(name="ai_docs_workspace_impact")
216
+ def ai_docs_workspace_impact(request: dict[str, Any]) -> dict[str, Any]:
217
+ """Analyze request v1 against the manifest selected at server startup."""
218
+ return analyze_workspace(workspace_path, request)
198
219
 
199
220
  @server.tool(name="ai_docs_validate")
200
221
  def ai_docs_validate(project_root: str | None = None) -> dict[str, Any]:
@@ -248,7 +269,7 @@ def build_server(
248
269
 
249
270
  @server.resource("ai-docs://config")
250
271
  def ai_docs_config() -> dict[str, Any]:
251
- return server_info(project_root=project_root, config_file=config_file)
272
+ return runtime_info()
252
273
 
253
274
  @server.resource("ai-docs://graph")
254
275
  def ai_docs_graph_resource() -> dict[str, Any]:
@@ -283,7 +304,7 @@ def build_server(
283
304
 
284
305
  def main(argv: list[str] | None = None) -> int:
285
306
  args = parse_args(argv)
286
- server = build_server(project_root=args.project_root, config_file=args.config_file)
307
+ server = build_server(project_root=args.project_root, config_file=args.config_file, workspace=args.workspace)
287
308
  server.run()
288
309
  return 0
289
310
 
@@ -114,6 +114,11 @@ MVP target paths are repository-root relative:
114
114
  | `.ai-docs/schemas/document-types/runbook.schema.yaml` | `minimal`, `agent` | Create or overwrite from toolkit distribution. |
115
115
  | `.ai-docs/schemas/document-types/scenario.schema.yaml` | `minimal`, `agent` | Create or overwrite from toolkit distribution. |
116
116
  | `.ai-docs/schemas/document-types/test-case.schema.yaml` | `minimal`, `agent` | Create or overwrite from toolkit distribution. |
117
+ | `.ai-docs/schemas/workspace/manifest-v1.schema.yaml` | `minimal`, `agent` | Managed schema v1; existing provenance/preflight rules apply. |
118
+ | `.ai-docs/schemas/workspace/request-v1.schema.yaml` | `minimal`, `agent` | Managed schema v1; existing provenance/preflight rules apply. |
119
+ | `.ai-docs/schemas/workspace/repository-v1.schema.yaml` | `minimal`, `agent` | Managed schema v1; existing provenance/preflight rules apply. |
120
+ | `.ai-docs/schemas/workspace/result-v1.schema.yaml` | `minimal`, `agent` | Managed schema v1; existing provenance/preflight rules apply. |
121
+ | `.ai-docs/reference/workspace-analysis.md` | `minimal`, `agent` | Managed opt-in and upgrade guidance; never creates a manifest. |
117
122
  | `.ai-docs/skills/index.md` | `agent` | Create or overwrite from toolkit distribution during planning workflow migration. |
118
123
  | `.ai-docs/skills/planning-task-execution/SKILL.md` | `agent` | Create or overwrite from toolkit distribution during planning workflow migration. |
119
124
  | `.ai-docs/skills/planning-record-generation/SKILL.md` | `agent` | Create or overwrite from toolkit distribution during planning workflow migration. |
@@ -242,6 +247,17 @@ Required assets must be available from the installed distribution.
242
247
 
243
248
  ## Validation Contract
244
249
 
250
+ ### Workspace opt-in в source
251
+
252
+ [Opt-in contract and upgrade guidance](workspace-analysis.md) describe the optional extension. Существующие профили `minimal`/`agent` сохраняются. `init`
253
+ не назначает repository ID, не ищет соседей и не создаёт workspace manifest.
254
+ Project-owned config, workspace, AGENTS/index/local policy и docs сохраняются;
255
+ managed-file preflight/provenance не ослабляются. Четыре schemas v1 и
256
+ [opt-in/migration guidance](workspace-analysis.md) включены в оба профиля
257
+ как managed artifacts. Manifest не является managed target. Runtime берёт
258
+ схемы из пакета, а не из изменяемой consumer-копии. Опубликованный 0.4.2
259
+ этого расширения не содержит.
260
+
245
261
  Downstream implementation and test tasks must verify:
246
262
  - empty repository bootstrap for `minimal`;
247
263
  - empty repository bootstrap for `agent`;