mapify-cli 3.21.0__tar.gz → 3.22.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 (468) hide show
  1. {mapify_cli-3.21.0 → mapify_cli-3.22.0}/PKG-INFO +2 -1
  2. {mapify_cli-3.21.0 → mapify_cli-3.22.0}/README.md +1 -0
  3. {mapify_cli-3.21.0 → mapify_cli-3.22.0}/pyproject.toml +1 -1
  4. {mapify_cli-3.21.0 → mapify_cli-3.22.0}/src/mapify_cli/__init__.py +503 -1
  5. mapify_cli-3.22.0/src/mapify_cli/boundary_quality_report.py +306 -0
  6. mapify_cli-3.22.0/src/mapify_cli/code_map.py +291 -0
  7. {mapify_cli-3.21.0 → mapify_cli-3.22.0}/src/mapify_cli/config/project_config.py +17 -0
  8. {mapify_cli-3.21.0 → mapify_cli-3.22.0}/src/mapify_cli/delivery/__init__.py +10 -0
  9. mapify_cli-3.22.0/src/mapify_cli/delivery/domain_skill.py +264 -0
  10. mapify_cli-3.22.0/src/mapify_cli/delivery/governance_report.py +612 -0
  11. mapify_cli-3.22.0/src/mapify_cli/install_manifest.py +653 -0
  12. mapify_cli-3.22.0/src/mapify_cli/minimality_eval.py +549 -0
  13. mapify_cli-3.22.0/src/mapify_cli/research_eval_compare.py +407 -0
  14. {mapify_cli-3.21.0 → mapify_cli-3.22.0}/src/mapify_cli/templates/agents/monitor.md +44 -0
  15. {mapify_cli-3.21.0 → mapify_cli-3.22.0}/src/mapify_cli/templates/codex/hooks/workflow-gate.py +64 -32
  16. {mapify_cli-3.21.0 → mapify_cli-3.22.0}/src/mapify_cli/templates/hooks/safety-guardrails.py +9 -4
  17. {mapify_cli-3.21.0 → mapify_cli-3.22.0}/src/mapify_cli/templates/hooks/workflow-context-injector.py +48 -3
  18. {mapify_cli-3.21.0 → mapify_cli-3.22.0}/src/mapify_cli/templates/hooks/workflow-gate.py +64 -32
  19. {mapify_cli-3.21.0 → mapify_cli-3.22.0}/src/mapify_cli/templates/map/scripts/map_orchestrator.py +199 -40
  20. {mapify_cli-3.21.0 → mapify_cli-3.22.0}/src/mapify_cli/templates/map/scripts/map_step_runner.py +389 -4
  21. {mapify_cli-3.21.0 → mapify_cli-3.22.0}/src/mapify_cli/templates/skills/map-efficient/efficient-reference.md +1 -1
  22. {mapify_cli-3.21.0 → mapify_cli-3.22.0}/src/mapify_cli/templates/skills/map-tdd/SKILL.md +150 -1
  23. {mapify_cli-3.21.0 → mapify_cli-3.22.0}/src/mapify_cli/templates_src/agents/monitor.md.jinja +44 -0
  24. {mapify_cli-3.21.0 → mapify_cli-3.22.0}/src/mapify_cli/templates_src/codex/hooks/workflow-gate.py.jinja +64 -32
  25. {mapify_cli-3.21.0 → mapify_cli-3.22.0}/src/mapify_cli/templates_src/hooks/safety-guardrails.py.jinja +9 -4
  26. {mapify_cli-3.21.0 → mapify_cli-3.22.0}/src/mapify_cli/templates_src/hooks/workflow-context-injector.py.jinja +48 -3
  27. {mapify_cli-3.21.0 → mapify_cli-3.22.0}/src/mapify_cli/templates_src/hooks/workflow-gate.py.jinja +64 -32
  28. {mapify_cli-3.21.0 → mapify_cli-3.22.0}/src/mapify_cli/templates_src/map/scripts/map_orchestrator.py.jinja +199 -40
  29. {mapify_cli-3.21.0 → mapify_cli-3.22.0}/src/mapify_cli/templates_src/map/scripts/map_step_runner.py.jinja +389 -4
  30. {mapify_cli-3.21.0 → mapify_cli-3.22.0}/src/mapify_cli/templates_src/skills/map-efficient/efficient-reference.md.jinja +1 -1
  31. {mapify_cli-3.21.0 → mapify_cli-3.22.0}/src/mapify_cli/templates_src/skills/map-tdd/SKILL.md.jinja +150 -1
  32. {mapify_cli-3.21.0 → mapify_cli-3.22.0}/tests/hooks/test_safety_guardrails.py +58 -0
  33. mapify_cli-3.22.0/tests/test_approval_hold.py +569 -0
  34. mapify_cli-3.22.0/tests/test_boundary_quality_report.py +456 -0
  35. mapify_cli-3.22.0/tests/test_code_map.py +460 -0
  36. mapify_cli-3.22.0/tests/test_domain_skill.py +371 -0
  37. mapify_cli-3.22.0/tests/test_governance_attack_fixtures.py +571 -0
  38. mapify_cli-3.22.0/tests/test_governance_report.py +487 -0
  39. mapify_cli-3.22.0/tests/test_install_manifest.py +891 -0
  40. {mapify_cli-3.21.0 → mapify_cli-3.22.0}/tests/test_map_orchestrator.py +428 -8
  41. {mapify_cli-3.21.0 → mapify_cli-3.22.0}/tests/test_map_step_runner.py +26 -0
  42. {mapify_cli-3.21.0 → mapify_cli-3.22.0}/tests/test_mapify_cli.py +4 -2
  43. mapify_cli-3.22.0/tests/test_minimality_eval.py +341 -0
  44. {mapify_cli-3.21.0 → mapify_cli-3.22.0}/tests/test_project_config.py +187 -0
  45. mapify_cli-3.22.0/tests/test_research_eval_compare.py +402 -0
  46. {mapify_cli-3.21.0 → mapify_cli-3.22.0}/tests/test_skills.py +4 -0
  47. {mapify_cli-3.21.0 → mapify_cli-3.22.0}/tests/test_workflow_context_injector.py +69 -22
  48. {mapify_cli-3.21.0 → mapify_cli-3.22.0}/tests/test_workflow_gate.py +171 -27
  49. {mapify_cli-3.21.0 → mapify_cli-3.22.0}/.claude/hooks/README.md +0 -0
  50. {mapify_cli-3.21.0 → mapify_cli-3.22.0}/.claude/skills/README.md +0 -0
  51. {mapify_cli-3.21.0 → mapify_cli-3.22.0}/.gitignore +0 -0
  52. {mapify_cli-3.21.0 → mapify_cli-3.22.0}/LICENSE +0 -0
  53. {mapify_cli-3.21.0 → mapify_cli-3.22.0}/src/mapify_cli/_locking.py +0 -0
  54. {mapify_cli-3.21.0 → mapify_cli-3.22.0}/src/mapify_cli/cli_ui.py +0 -0
  55. {mapify_cli-3.21.0 → mapify_cli-3.22.0}/src/mapify_cli/config/__init__.py +0 -0
  56. {mapify_cli-3.21.0 → mapify_cli-3.22.0}/src/mapify_cli/config/mcp.py +0 -0
  57. {mapify_cli-3.21.0 → mapify_cli-3.22.0}/src/mapify_cli/config/settings.py +0 -0
  58. {mapify_cli-3.21.0 → mapify_cli-3.22.0}/src/mapify_cli/delivery/agent_generator.py +0 -0
  59. {mapify_cli-3.21.0 → mapify_cli-3.22.0}/src/mapify_cli/delivery/codex_copier.py +0 -0
  60. {mapify_cli-3.21.0 → mapify_cli-3.22.0}/src/mapify_cli/delivery/file_copier.py +0 -0
  61. {mapify_cli-3.21.0 → mapify_cli-3.22.0}/src/mapify_cli/delivery/managed_file_copier.py +0 -0
  62. {mapify_cli-3.21.0 → mapify_cli-3.22.0}/src/mapify_cli/delivery/providers.py +0 -0
  63. {mapify_cli-3.21.0 → mapify_cli-3.22.0}/src/mapify_cli/delivery/template_renderer.py +0 -0
  64. {mapify_cli-3.21.0 → mapify_cli-3.22.0}/src/mapify_cli/dependency_graph.py +0 -0
  65. {mapify_cli-3.21.0 → mapify_cli-3.22.0}/src/mapify_cli/intent_detector.py +0 -0
  66. {mapify_cli-3.21.0 → mapify_cli-3.22.0}/src/mapify_cli/memory/__init__.py +0 -0
  67. {mapify_cli-3.21.0 → mapify_cli-3.22.0}/src/mapify_cli/memory/capture.py +0 -0
  68. {mapify_cli-3.21.0 → mapify_cli-3.22.0}/src/mapify_cli/memory/digest_schema.py +0 -0
  69. {mapify_cli-3.21.0 → mapify_cli-3.22.0}/src/mapify_cli/memory/finalize.py +0 -0
  70. {mapify_cli-3.21.0 → mapify_cli-3.22.0}/src/mapify_cli/memory/recall.py +0 -0
  71. {mapify_cli-3.21.0 → mapify_cli-3.22.0}/src/mapify_cli/minimality_report.py +0 -0
  72. {mapify_cli-3.21.0 → mapify_cli-3.22.0}/src/mapify_cli/parallelism_observability.py +0 -0
  73. {mapify_cli-3.21.0 → mapify_cli-3.22.0}/src/mapify_cli/ralph_state.py +0 -0
  74. {mapify_cli-3.21.0 → mapify_cli-3.22.0}/src/mapify_cli/repo_insight.py +0 -0
  75. {mapify_cli-3.21.0 → mapify_cli-3.22.0}/src/mapify_cli/research_eval.py +0 -0
  76. {mapify_cli-3.21.0 → mapify_cli-3.22.0}/src/mapify_cli/schemas.py +0 -0
  77. {mapify_cli-3.21.0 → mapify_cli-3.22.0}/src/mapify_cli/skill_ir.py +0 -0
  78. {mapify_cli-3.21.0 → mapify_cli-3.22.0}/src/mapify_cli/skills_eval/__init__.py +0 -0
  79. {mapify_cli-3.21.0 → mapify_cli-3.22.0}/src/mapify_cli/skills_eval/aggregator.py +0 -0
  80. {mapify_cli-3.21.0 → mapify_cli-3.22.0}/src/mapify_cli/skills_eval/apply_patcher.py +0 -0
  81. {mapify_cli-3.21.0 → mapify_cli-3.22.0}/src/mapify_cli/skills_eval/assertions.py +0 -0
  82. {mapify_cli-3.21.0 → mapify_cli-3.22.0}/src/mapify_cli/skills_eval/description_optimizer.py +0 -0
  83. {mapify_cli-3.21.0 → mapify_cli-3.22.0}/src/mapify_cli/skills_eval/dispatcher.py +0 -0
  84. {mapify_cli-3.21.0 → mapify_cli-3.22.0}/src/mapify_cli/skills_eval/eval_schema.py +0 -0
  85. {mapify_cli-3.21.0 → mapify_cli-3.22.0}/src/mapify_cli/skills_eval/proposer.py +0 -0
  86. {mapify_cli-3.21.0 → mapify_cli-3.22.0}/src/mapify_cli/skills_eval/runner.py +0 -0
  87. {mapify_cli-3.21.0 → mapify_cli-3.22.0}/src/mapify_cli/skills_eval/viewer.py +0 -0
  88. {mapify_cli-3.21.0 → mapify_cli-3.22.0}/src/mapify_cli/templates/.gitignore +0 -0
  89. {mapify_cli-3.21.0 → mapify_cli-3.22.0}/src/mapify_cli/templates/CLAUDE.md +0 -0
  90. {mapify_cli-3.21.0 → mapify_cli-3.22.0}/src/mapify_cli/templates/agents/actor.md +0 -0
  91. {mapify_cli-3.21.0 → mapify_cli-3.22.0}/src/mapify_cli/templates/agents/documentation-reviewer.md +0 -0
  92. {mapify_cli-3.21.0 → mapify_cli-3.22.0}/src/mapify_cli/templates/agents/evaluator.md +0 -0
  93. {mapify_cli-3.21.0 → mapify_cli-3.22.0}/src/mapify_cli/templates/agents/final-verifier.md +0 -0
  94. {mapify_cli-3.21.0 → mapify_cli-3.22.0}/src/mapify_cli/templates/agents/predictor.md +0 -0
  95. {mapify_cli-3.21.0 → mapify_cli-3.22.0}/src/mapify_cli/templates/agents/reflector.md +0 -0
  96. {mapify_cli-3.21.0 → mapify_cli-3.22.0}/src/mapify_cli/templates/agents/research-agent.md +0 -0
  97. {mapify_cli-3.21.0 → mapify_cli-3.22.0}/src/mapify_cli/templates/agents/task-decomposer.md +0 -0
  98. {mapify_cli-3.21.0 → mapify_cli-3.22.0}/src/mapify_cli/templates/codex/AGENTS.md +0 -0
  99. {mapify_cli-3.21.0 → mapify_cli-3.22.0}/src/mapify_cli/templates/codex/agents/decomposer.toml +0 -0
  100. {mapify_cli-3.21.0 → mapify_cli-3.22.0}/src/mapify_cli/templates/codex/agents/evaluator.toml +0 -0
  101. {mapify_cli-3.21.0 → mapify_cli-3.22.0}/src/mapify_cli/templates/codex/agents/monitor.toml +0 -0
  102. {mapify_cli-3.21.0 → mapify_cli-3.22.0}/src/mapify_cli/templates/codex/agents/predictor.toml +0 -0
  103. {mapify_cli-3.21.0 → mapify_cli-3.22.0}/src/mapify_cli/templates/codex/agents/researcher.toml +0 -0
  104. {mapify_cli-3.21.0 → mapify_cli-3.22.0}/src/mapify_cli/templates/codex/config.toml +0 -0
  105. {mapify_cli-3.21.0 → mapify_cli-3.22.0}/src/mapify_cli/templates/codex/hooks.json +0 -0
  106. {mapify_cli-3.21.0 → mapify_cli-3.22.0}/src/mapify_cli/templates/codex/skills/map-check/SKILL.md +0 -0
  107. {mapify_cli-3.21.0 → mapify_cli-3.22.0}/src/mapify_cli/templates/codex/skills/map-efficient/SKILL.md +0 -0
  108. {mapify_cli-3.21.0 → mapify_cli-3.22.0}/src/mapify_cli/templates/codex/skills/map-efficient/efficient-reference.md +0 -0
  109. {mapify_cli-3.21.0 → mapify_cli-3.22.0}/src/mapify_cli/templates/codex/skills/map-explain/SKILL.md +0 -0
  110. {mapify_cli-3.21.0 → mapify_cli-3.22.0}/src/mapify_cli/templates/codex/skills/map-fast/SKILL.md +0 -0
  111. {mapify_cli-3.21.0 → mapify_cli-3.22.0}/src/mapify_cli/templates/codex/skills/map-plan/SKILL.md +0 -0
  112. {mapify_cli-3.21.0 → mapify_cli-3.22.0}/src/mapify_cli/templates/codex/skills/map-review/SKILL.md +0 -0
  113. {mapify_cli-3.21.0 → mapify_cli-3.22.0}/src/mapify_cli/templates/codex/skills/map-review/adversarial-reference.md +0 -0
  114. {mapify_cli-3.21.0 → mapify_cli-3.22.0}/src/mapify_cli/templates/codex/skills/map-review/review-reference.md +0 -0
  115. {mapify_cli-3.21.0 → mapify_cli-3.22.0}/src/mapify_cli/templates/codex/skills/map-understand/SKILL.md +0 -0
  116. {mapify_cli-3.21.0 → mapify_cli-3.22.0}/src/mapify_cli/templates/hooks/README.md +0 -0
  117. {mapify_cli-3.21.0 → mapify_cli-3.22.0}/src/mapify_cli/templates/hooks/context-meter.py +0 -0
  118. {mapify_cli-3.21.0 → mapify_cli-3.22.0}/src/mapify_cli/templates/hooks/detect-clarification-triggers.py +0 -0
  119. {mapify_cli-3.21.0 → mapify_cli-3.22.0}/src/mapify_cli/templates/hooks/end-of-turn.sh +0 -0
  120. {mapify_cli-3.21.0 → mapify_cli-3.22.0}/src/mapify_cli/templates/hooks/map-memory-capture.py +0 -0
  121. {mapify_cli-3.21.0 → mapify_cli-3.22.0}/src/mapify_cli/templates/hooks/map-memory-endmark.py +0 -0
  122. {mapify_cli-3.21.0 → mapify_cli-3.22.0}/src/mapify_cli/templates/hooks/map-memory-finalize.py +0 -0
  123. {mapify_cli-3.21.0 → mapify_cli-3.22.0}/src/mapify_cli/templates/hooks/map-memory-recall.py +0 -0
  124. {mapify_cli-3.21.0 → mapify_cli-3.22.0}/src/mapify_cli/templates/hooks/map-statusline.py +0 -0
  125. {mapify_cli-3.21.0 → mapify_cli-3.22.0}/src/mapify_cli/templates/hooks/map-token-meter.py +0 -0
  126. {mapify_cli-3.21.0 → mapify_cli-3.22.0}/src/mapify_cli/templates/hooks/post-compact-context.py +0 -0
  127. {mapify_cli-3.21.0 → mapify_cli-3.22.0}/src/mapify_cli/templates/hooks/pre-compact-save-transcript.py +0 -0
  128. {mapify_cli-3.21.0 → mapify_cli-3.22.0}/src/mapify_cli/templates/hooks/ralph-context-pruner.py +0 -0
  129. {mapify_cli-3.21.0 → mapify_cli-3.22.0}/src/mapify_cli/templates/hooks/ralph-iteration-logger.py +0 -0
  130. {mapify_cli-3.21.0 → mapify_cli-3.22.0}/src/mapify_cli/templates/hooks/scrub-internal-ids.py +0 -0
  131. {mapify_cli-3.21.0 → mapify_cli-3.22.0}/src/mapify_cli/templates/map/scripts/diagnostics.py +0 -0
  132. {mapify_cli-3.21.0 → mapify_cli-3.22.0}/src/mapify_cli/templates/map/scripts/map_utils.py +0 -0
  133. {mapify_cli-3.21.0 → mapify_cli-3.22.0}/src/mapify_cli/templates/map/scripts/scrub_internal_ids.py +0 -0
  134. {mapify_cli-3.21.0 → mapify_cli-3.22.0}/src/mapify_cli/templates/map/scripts/sofa_client.py +0 -0
  135. {mapify_cli-3.21.0 → mapify_cli-3.22.0}/src/mapify_cli/templates/map/scripts/validate_spec_citations.py +0 -0
  136. {mapify_cli-3.21.0 → mapify_cli-3.22.0}/src/mapify_cli/templates/map/static-analysis/analyze.sh +0 -0
  137. {mapify_cli-3.21.0 → mapify_cli-3.22.0}/src/mapify_cli/templates/map/static-analysis/handlers/common.sh +0 -0
  138. {mapify_cli-3.21.0 → mapify_cli-3.22.0}/src/mapify_cli/templates/map/static-analysis/handlers/go.sh +0 -0
  139. {mapify_cli-3.21.0 → mapify_cli-3.22.0}/src/mapify_cli/templates/map/static-analysis/handlers/python.sh +0 -0
  140. {mapify_cli-3.21.0 → mapify_cli-3.22.0}/src/mapify_cli/templates/map/static-analysis/handlers/rust.sh +0 -0
  141. {mapify_cli-3.21.0 → mapify_cli-3.22.0}/src/mapify_cli/templates/map/static-analysis/handlers/typescript.sh +0 -0
  142. {mapify_cli-3.21.0 → mapify_cli-3.22.0}/src/mapify_cli/templates/ralph-loop-config.json +0 -0
  143. {mapify_cli-3.21.0 → mapify_cli-3.22.0}/src/mapify_cli/templates/references/bash-guidelines.md +0 -0
  144. {mapify_cli-3.21.0 → mapify_cli-3.22.0}/src/mapify_cli/templates/references/decomposition-examples.md +0 -0
  145. {mapify_cli-3.21.0 → mapify_cli-3.22.0}/src/mapify_cli/templates/references/escalation-matrix.md +0 -0
  146. {mapify_cli-3.21.0 → mapify_cli-3.22.0}/src/mapify_cli/templates/references/hook-patterns.md +0 -0
  147. {mapify_cli-3.21.0 → mapify_cli-3.22.0}/src/mapify_cli/templates/references/host-paths.md +0 -0
  148. {mapify_cli-3.21.0 → mapify_cli-3.22.0}/src/mapify_cli/templates/references/map-json-output-contracts.md +0 -0
  149. {mapify_cli-3.21.0 → mapify_cli-3.22.0}/src/mapify_cli/templates/references/map-output-examples.md +0 -0
  150. {mapify_cli-3.21.0 → mapify_cli-3.22.0}/src/mapify_cli/templates/references/map-xml-prompt-envelopes.md +0 -0
  151. {mapify_cli-3.21.0 → mapify_cli-3.22.0}/src/mapify_cli/templates/references/mcp-usage-examples.md +0 -0
  152. {mapify_cli-3.21.0 → mapify_cli-3.22.0}/src/mapify_cli/templates/references/step-state-schema.md +0 -0
  153. {mapify_cli-3.21.0 → mapify_cli-3.22.0}/src/mapify_cli/templates/references/workflow-state-schema.md +0 -0
  154. {mapify_cli-3.21.0 → mapify_cli-3.22.0}/src/mapify_cli/templates/rules/learned/README.md +0 -0
  155. {mapify_cli-3.21.0 → mapify_cli-3.22.0}/src/mapify_cli/templates/settings.json +0 -0
  156. {mapify_cli-3.21.0 → mapify_cli-3.22.0}/src/mapify_cli/templates/skills/README.md +0 -0
  157. {mapify_cli-3.21.0 → mapify_cli-3.22.0}/src/mapify_cli/templates/skills/map-check/SKILL.md +0 -0
  158. {mapify_cli-3.21.0 → mapify_cli-3.22.0}/src/mapify_cli/templates/skills/map-check/check-reference.md +0 -0
  159. {mapify_cli-3.21.0 → mapify_cli-3.22.0}/src/mapify_cli/templates/skills/map-debug/SKILL.md +0 -0
  160. {mapify_cli-3.21.0 → mapify_cli-3.22.0}/src/mapify_cli/templates/skills/map-efficient/SKILL.md +0 -0
  161. {mapify_cli-3.21.0 → mapify_cli-3.22.0}/src/mapify_cli/templates/skills/map-explain/SKILL.md +0 -0
  162. {mapify_cli-3.21.0 → mapify_cli-3.22.0}/src/mapify_cli/templates/skills/map-fast/SKILL.md +0 -0
  163. {mapify_cli-3.21.0 → mapify_cli-3.22.0}/src/mapify_cli/templates/skills/map-learn/SKILL.md +0 -0
  164. {mapify_cli-3.21.0 → mapify_cli-3.22.0}/src/mapify_cli/templates/skills/map-learn/templates/example-rules.md +0 -0
  165. {mapify_cli-3.21.0 → mapify_cli-3.22.0}/src/mapify_cli/templates/skills/map-learn/templates/rules-unconditional.md +0 -0
  166. {mapify_cli-3.21.0 → mapify_cli-3.22.0}/src/mapify_cli/templates/skills/map-learn/templates/rules-with-paths.md +0 -0
  167. {mapify_cli-3.21.0 → mapify_cli-3.22.0}/src/mapify_cli/templates/skills/map-memory-now/SKILL.md +0 -0
  168. {mapify_cli-3.21.0 → mapify_cli-3.22.0}/src/mapify_cli/templates/skills/map-plan/SKILL.md +0 -0
  169. {mapify_cli-3.21.0 → mapify_cli-3.22.0}/src/mapify_cli/templates/skills/map-plan/plan-reference.md +0 -0
  170. {mapify_cli-3.21.0 → mapify_cli-3.22.0}/src/mapify_cli/templates/skills/map-release/SKILL.md +0 -0
  171. {mapify_cli-3.21.0 → mapify_cli-3.22.0}/src/mapify_cli/templates/skills/map-resume/SKILL.md +0 -0
  172. {mapify_cli-3.21.0 → mapify_cli-3.22.0}/src/mapify_cli/templates/skills/map-resume/resume-reference.md +0 -0
  173. {mapify_cli-3.21.0 → mapify_cli-3.22.0}/src/mapify_cli/templates/skills/map-review/SKILL.md +0 -0
  174. {mapify_cli-3.21.0 → mapify_cli-3.22.0}/src/mapify_cli/templates/skills/map-review/adversarial-reference.md +0 -0
  175. {mapify_cli-3.21.0 → mapify_cli-3.22.0}/src/mapify_cli/templates/skills/map-review/review-reference.md +0 -0
  176. {mapify_cli-3.21.0 → mapify_cli-3.22.0}/src/mapify_cli/templates/skills/map-skill-eval/SKILL.md +0 -0
  177. {mapify_cli-3.21.0 → mapify_cli-3.22.0}/src/mapify_cli/templates/skills/map-so-search/SKILL.md +0 -0
  178. {mapify_cli-3.21.0 → mapify_cli-3.22.0}/src/mapify_cli/templates/skills/map-so-search/scripts/sofa_search.py +0 -0
  179. {mapify_cli-3.21.0 → mapify_cli-3.22.0}/src/mapify_cli/templates/skills/map-state/SKILL.md +0 -0
  180. {mapify_cli-3.21.0 → mapify_cli-3.22.0}/src/mapify_cli/templates/skills/map-state/scripts/check-complete.sh +0 -0
  181. {mapify_cli-3.21.0 → mapify_cli-3.22.0}/src/mapify_cli/templates/skills/map-state/scripts/get-plan-path.sh +0 -0
  182. {mapify_cli-3.21.0 → mapify_cli-3.22.0}/src/mapify_cli/templates/skills/map-state/scripts/init-session.sh +0 -0
  183. {mapify_cli-3.21.0 → mapify_cli-3.22.0}/src/mapify_cli/templates/skills/map-state/scripts/show-focus.sh +0 -0
  184. {mapify_cli-3.21.0 → mapify_cli-3.22.0}/src/mapify_cli/templates/skills/map-state/templates/findings.md +0 -0
  185. {mapify_cli-3.21.0 → mapify_cli-3.22.0}/src/mapify_cli/templates/skills/map-state/templates/iteration_history.md +0 -0
  186. {mapify_cli-3.21.0 → mapify_cli-3.22.0}/src/mapify_cli/templates/skills/map-state/templates/progress.md +0 -0
  187. {mapify_cli-3.21.0 → mapify_cli-3.22.0}/src/mapify_cli/templates/skills/map-state/templates/task_plan.md +0 -0
  188. {mapify_cli-3.21.0 → mapify_cli-3.22.0}/src/mapify_cli/templates/skills/map-task/SKILL.md +0 -0
  189. {mapify_cli-3.21.0 → mapify_cli-3.22.0}/src/mapify_cli/templates/skills/map-tokenreport/SKILL.md +0 -0
  190. {mapify_cli-3.21.0 → mapify_cli-3.22.0}/src/mapify_cli/templates/skills/map-understand/SKILL.md +0 -0
  191. {mapify_cli-3.21.0 → mapify_cli-3.22.0}/src/mapify_cli/templates/skills/skill-rules.json +0 -0
  192. {mapify_cli-3.21.0 → mapify_cli-3.22.0}/src/mapify_cli/templates/workflow-rules.json +0 -0
  193. {mapify_cli-3.21.0 → mapify_cli-3.22.0}/src/mapify_cli/templates_src/.gitignore.jinja +0 -0
  194. {mapify_cli-3.21.0 → mapify_cli-3.22.0}/src/mapify_cli/templates_src/CLAUDE.md.jinja +0 -0
  195. {mapify_cli-3.21.0 → mapify_cli-3.22.0}/src/mapify_cli/templates_src/agents/actor.md.jinja +0 -0
  196. {mapify_cli-3.21.0 → mapify_cli-3.22.0}/src/mapify_cli/templates_src/agents/documentation-reviewer.md.jinja +0 -0
  197. {mapify_cli-3.21.0 → mapify_cli-3.22.0}/src/mapify_cli/templates_src/agents/evaluator.md.jinja +0 -0
  198. {mapify_cli-3.21.0 → mapify_cli-3.22.0}/src/mapify_cli/templates_src/agents/final-verifier.md.jinja +0 -0
  199. {mapify_cli-3.21.0 → mapify_cli-3.22.0}/src/mapify_cli/templates_src/agents/predictor.md.jinja +0 -0
  200. {mapify_cli-3.21.0 → mapify_cli-3.22.0}/src/mapify_cli/templates_src/agents/reflector.md.jinja +0 -0
  201. {mapify_cli-3.21.0 → mapify_cli-3.22.0}/src/mapify_cli/templates_src/agents/research-agent.md.jinja +0 -0
  202. {mapify_cli-3.21.0 → mapify_cli-3.22.0}/src/mapify_cli/templates_src/agents/task-decomposer.md.jinja +0 -0
  203. {mapify_cli-3.21.0 → mapify_cli-3.22.0}/src/mapify_cli/templates_src/codex/AGENTS.md.jinja +0 -0
  204. {mapify_cli-3.21.0 → mapify_cli-3.22.0}/src/mapify_cli/templates_src/codex/agents/decomposer.toml.jinja +0 -0
  205. {mapify_cli-3.21.0 → mapify_cli-3.22.0}/src/mapify_cli/templates_src/codex/agents/evaluator.toml.jinja +0 -0
  206. {mapify_cli-3.21.0 → mapify_cli-3.22.0}/src/mapify_cli/templates_src/codex/agents/monitor.toml.jinja +0 -0
  207. {mapify_cli-3.21.0 → mapify_cli-3.22.0}/src/mapify_cli/templates_src/codex/agents/predictor.toml.jinja +0 -0
  208. {mapify_cli-3.21.0 → mapify_cli-3.22.0}/src/mapify_cli/templates_src/codex/agents/researcher.toml.jinja +0 -0
  209. {mapify_cli-3.21.0 → mapify_cli-3.22.0}/src/mapify_cli/templates_src/codex/config.toml.jinja +0 -0
  210. {mapify_cli-3.21.0 → mapify_cli-3.22.0}/src/mapify_cli/templates_src/codex/hooks.json.jinja +0 -0
  211. {mapify_cli-3.21.0 → mapify_cli-3.22.0}/src/mapify_cli/templates_src/codex/skills/map-check/SKILL.md.jinja +0 -0
  212. {mapify_cli-3.21.0 → mapify_cli-3.22.0}/src/mapify_cli/templates_src/codex/skills/map-efficient/SKILL.md.jinja +0 -0
  213. {mapify_cli-3.21.0 → mapify_cli-3.22.0}/src/mapify_cli/templates_src/codex/skills/map-efficient/efficient-reference.md.jinja +0 -0
  214. {mapify_cli-3.21.0 → mapify_cli-3.22.0}/src/mapify_cli/templates_src/codex/skills/map-explain/SKILL.md.jinja +0 -0
  215. {mapify_cli-3.21.0 → mapify_cli-3.22.0}/src/mapify_cli/templates_src/codex/skills/map-fast/SKILL.md.jinja +0 -0
  216. {mapify_cli-3.21.0 → mapify_cli-3.22.0}/src/mapify_cli/templates_src/codex/skills/map-plan/SKILL.md.jinja +0 -0
  217. {mapify_cli-3.21.0 → mapify_cli-3.22.0}/src/mapify_cli/templates_src/codex/skills/map-review/SKILL.md.jinja +0 -0
  218. {mapify_cli-3.21.0 → mapify_cli-3.22.0}/src/mapify_cli/templates_src/codex/skills/map-review/adversarial-reference.md.jinja +0 -0
  219. {mapify_cli-3.21.0 → mapify_cli-3.22.0}/src/mapify_cli/templates_src/codex/skills/map-review/review-reference.md.jinja +0 -0
  220. {mapify_cli-3.21.0 → mapify_cli-3.22.0}/src/mapify_cli/templates_src/codex/skills/map-understand/SKILL.md.jinja +0 -0
  221. {mapify_cli-3.21.0 → mapify_cli-3.22.0}/src/mapify_cli/templates_src/hooks/README.md.jinja +0 -0
  222. {mapify_cli-3.21.0 → mapify_cli-3.22.0}/src/mapify_cli/templates_src/hooks/context-meter.py.jinja +0 -0
  223. {mapify_cli-3.21.0 → mapify_cli-3.22.0}/src/mapify_cli/templates_src/hooks/detect-clarification-triggers.py.jinja +0 -0
  224. {mapify_cli-3.21.0 → mapify_cli-3.22.0}/src/mapify_cli/templates_src/hooks/end-of-turn.sh.jinja +0 -0
  225. {mapify_cli-3.21.0 → mapify_cli-3.22.0}/src/mapify_cli/templates_src/hooks/map-memory-capture.py.jinja +0 -0
  226. {mapify_cli-3.21.0 → mapify_cli-3.22.0}/src/mapify_cli/templates_src/hooks/map-memory-endmark.py.jinja +0 -0
  227. {mapify_cli-3.21.0 → mapify_cli-3.22.0}/src/mapify_cli/templates_src/hooks/map-memory-finalize.py.jinja +0 -0
  228. {mapify_cli-3.21.0 → mapify_cli-3.22.0}/src/mapify_cli/templates_src/hooks/map-memory-recall.py.jinja +0 -0
  229. {mapify_cli-3.21.0 → mapify_cli-3.22.0}/src/mapify_cli/templates_src/hooks/map-statusline.py.jinja +0 -0
  230. {mapify_cli-3.21.0 → mapify_cli-3.22.0}/src/mapify_cli/templates_src/hooks/map-token-meter.py.jinja +0 -0
  231. {mapify_cli-3.21.0 → mapify_cli-3.22.0}/src/mapify_cli/templates_src/hooks/post-compact-context.py.jinja +0 -0
  232. {mapify_cli-3.21.0 → mapify_cli-3.22.0}/src/mapify_cli/templates_src/hooks/pre-compact-save-transcript.py.jinja +0 -0
  233. {mapify_cli-3.21.0 → mapify_cli-3.22.0}/src/mapify_cli/templates_src/hooks/ralph-context-pruner.py.jinja +0 -0
  234. {mapify_cli-3.21.0 → mapify_cli-3.22.0}/src/mapify_cli/templates_src/hooks/ralph-iteration-logger.py.jinja +0 -0
  235. {mapify_cli-3.21.0 → mapify_cli-3.22.0}/src/mapify_cli/templates_src/hooks/scrub-internal-ids.py.jinja +0 -0
  236. {mapify_cli-3.21.0 → mapify_cli-3.22.0}/src/mapify_cli/templates_src/map/scripts/diagnostics.py.jinja +0 -0
  237. {mapify_cli-3.21.0 → mapify_cli-3.22.0}/src/mapify_cli/templates_src/map/scripts/map_utils.py.jinja +0 -0
  238. {mapify_cli-3.21.0 → mapify_cli-3.22.0}/src/mapify_cli/templates_src/map/scripts/scrub_internal_ids.py.jinja +0 -0
  239. {mapify_cli-3.21.0 → mapify_cli-3.22.0}/src/mapify_cli/templates_src/map/scripts/sofa_client.py.jinja +0 -0
  240. {mapify_cli-3.21.0 → mapify_cli-3.22.0}/src/mapify_cli/templates_src/map/scripts/validate_spec_citations.py.jinja +0 -0
  241. {mapify_cli-3.21.0 → mapify_cli-3.22.0}/src/mapify_cli/templates_src/map/static-analysis/analyze.sh.jinja +0 -0
  242. {mapify_cli-3.21.0 → mapify_cli-3.22.0}/src/mapify_cli/templates_src/map/static-analysis/handlers/common.sh.jinja +0 -0
  243. {mapify_cli-3.21.0 → mapify_cli-3.22.0}/src/mapify_cli/templates_src/map/static-analysis/handlers/go.sh.jinja +0 -0
  244. {mapify_cli-3.21.0 → mapify_cli-3.22.0}/src/mapify_cli/templates_src/map/static-analysis/handlers/python.sh.jinja +0 -0
  245. {mapify_cli-3.21.0 → mapify_cli-3.22.0}/src/mapify_cli/templates_src/map/static-analysis/handlers/rust.sh.jinja +0 -0
  246. {mapify_cli-3.21.0 → mapify_cli-3.22.0}/src/mapify_cli/templates_src/map/static-analysis/handlers/typescript.sh.jinja +0 -0
  247. {mapify_cli-3.21.0 → mapify_cli-3.22.0}/src/mapify_cli/templates_src/ralph-loop-config.json.jinja +0 -0
  248. {mapify_cli-3.21.0 → mapify_cli-3.22.0}/src/mapify_cli/templates_src/references/bash-guidelines.md.jinja +0 -0
  249. {mapify_cli-3.21.0 → mapify_cli-3.22.0}/src/mapify_cli/templates_src/references/decomposition-examples.md.jinja +0 -0
  250. {mapify_cli-3.21.0 → mapify_cli-3.22.0}/src/mapify_cli/templates_src/references/escalation-matrix.md.jinja +0 -0
  251. {mapify_cli-3.21.0 → mapify_cli-3.22.0}/src/mapify_cli/templates_src/references/hook-patterns.md.jinja +0 -0
  252. {mapify_cli-3.21.0 → mapify_cli-3.22.0}/src/mapify_cli/templates_src/references/host-paths.md.jinja +0 -0
  253. {mapify_cli-3.21.0 → mapify_cli-3.22.0}/src/mapify_cli/templates_src/references/map-json-output-contracts.md.jinja +0 -0
  254. {mapify_cli-3.21.0 → mapify_cli-3.22.0}/src/mapify_cli/templates_src/references/map-output-examples.md.jinja +0 -0
  255. {mapify_cli-3.21.0 → mapify_cli-3.22.0}/src/mapify_cli/templates_src/references/map-xml-prompt-envelopes.md.jinja +0 -0
  256. {mapify_cli-3.21.0 → mapify_cli-3.22.0}/src/mapify_cli/templates_src/references/mcp-usage-examples.md.jinja +0 -0
  257. {mapify_cli-3.21.0 → mapify_cli-3.22.0}/src/mapify_cli/templates_src/references/step-state-schema.md.jinja +0 -0
  258. {mapify_cli-3.21.0 → mapify_cli-3.22.0}/src/mapify_cli/templates_src/references/workflow-state-schema.md.jinja +0 -0
  259. {mapify_cli-3.21.0 → mapify_cli-3.22.0}/src/mapify_cli/templates_src/rules/learned/README.md.jinja +0 -0
  260. {mapify_cli-3.21.0 → mapify_cli-3.22.0}/src/mapify_cli/templates_src/settings.json.jinja +0 -0
  261. {mapify_cli-3.21.0 → mapify_cli-3.22.0}/src/mapify_cli/templates_src/skills/README.md.jinja +0 -0
  262. {mapify_cli-3.21.0 → mapify_cli-3.22.0}/src/mapify_cli/templates_src/skills/map-check/SKILL.md.jinja +0 -0
  263. {mapify_cli-3.21.0 → mapify_cli-3.22.0}/src/mapify_cli/templates_src/skills/map-check/check-reference.md.jinja +0 -0
  264. {mapify_cli-3.21.0 → mapify_cli-3.22.0}/src/mapify_cli/templates_src/skills/map-debug/SKILL.md.jinja +0 -0
  265. {mapify_cli-3.21.0 → mapify_cli-3.22.0}/src/mapify_cli/templates_src/skills/map-efficient/SKILL.md.jinja +0 -0
  266. {mapify_cli-3.21.0 → mapify_cli-3.22.0}/src/mapify_cli/templates_src/skills/map-explain/SKILL.md.jinja +0 -0
  267. {mapify_cli-3.21.0 → mapify_cli-3.22.0}/src/mapify_cli/templates_src/skills/map-fast/SKILL.md.jinja +0 -0
  268. {mapify_cli-3.21.0 → mapify_cli-3.22.0}/src/mapify_cli/templates_src/skills/map-learn/SKILL.md.jinja +0 -0
  269. {mapify_cli-3.21.0 → mapify_cli-3.22.0}/src/mapify_cli/templates_src/skills/map-learn/templates/example-rules.md.jinja +0 -0
  270. {mapify_cli-3.21.0 → mapify_cli-3.22.0}/src/mapify_cli/templates_src/skills/map-learn/templates/rules-unconditional.md.jinja +0 -0
  271. {mapify_cli-3.21.0 → mapify_cli-3.22.0}/src/mapify_cli/templates_src/skills/map-learn/templates/rules-with-paths.md.jinja +0 -0
  272. {mapify_cli-3.21.0 → mapify_cli-3.22.0}/src/mapify_cli/templates_src/skills/map-memory-now/SKILL.md.jinja +0 -0
  273. {mapify_cli-3.21.0 → mapify_cli-3.22.0}/src/mapify_cli/templates_src/skills/map-plan/SKILL.md.jinja +0 -0
  274. {mapify_cli-3.21.0 → mapify_cli-3.22.0}/src/mapify_cli/templates_src/skills/map-plan/plan-reference.md.jinja +0 -0
  275. {mapify_cli-3.21.0 → mapify_cli-3.22.0}/src/mapify_cli/templates_src/skills/map-release/SKILL.md.jinja +0 -0
  276. {mapify_cli-3.21.0 → mapify_cli-3.22.0}/src/mapify_cli/templates_src/skills/map-resume/SKILL.md.jinja +0 -0
  277. {mapify_cli-3.21.0 → mapify_cli-3.22.0}/src/mapify_cli/templates_src/skills/map-resume/resume-reference.md.jinja +0 -0
  278. {mapify_cli-3.21.0 → mapify_cli-3.22.0}/src/mapify_cli/templates_src/skills/map-review/SKILL.md.jinja +0 -0
  279. {mapify_cli-3.21.0 → mapify_cli-3.22.0}/src/mapify_cli/templates_src/skills/map-review/adversarial-reference.md.jinja +0 -0
  280. {mapify_cli-3.21.0 → mapify_cli-3.22.0}/src/mapify_cli/templates_src/skills/map-review/review-reference.md.jinja +0 -0
  281. {mapify_cli-3.21.0 → mapify_cli-3.22.0}/src/mapify_cli/templates_src/skills/map-skill-eval/SKILL.md.jinja +0 -0
  282. {mapify_cli-3.21.0 → mapify_cli-3.22.0}/src/mapify_cli/templates_src/skills/map-so-search/SKILL.md.jinja +0 -0
  283. {mapify_cli-3.21.0 → mapify_cli-3.22.0}/src/mapify_cli/templates_src/skills/map-so-search/scripts/sofa_search.py.jinja +0 -0
  284. {mapify_cli-3.21.0 → mapify_cli-3.22.0}/src/mapify_cli/templates_src/skills/map-state/SKILL.md.jinja +0 -0
  285. {mapify_cli-3.21.0 → mapify_cli-3.22.0}/src/mapify_cli/templates_src/skills/map-state/scripts/check-complete.sh.jinja +0 -0
  286. {mapify_cli-3.21.0 → mapify_cli-3.22.0}/src/mapify_cli/templates_src/skills/map-state/scripts/get-plan-path.sh.jinja +0 -0
  287. {mapify_cli-3.21.0 → mapify_cli-3.22.0}/src/mapify_cli/templates_src/skills/map-state/scripts/init-session.sh.jinja +0 -0
  288. {mapify_cli-3.21.0 → mapify_cli-3.22.0}/src/mapify_cli/templates_src/skills/map-state/scripts/show-focus.sh.jinja +0 -0
  289. {mapify_cli-3.21.0 → mapify_cli-3.22.0}/src/mapify_cli/templates_src/skills/map-state/templates/findings.md.jinja +0 -0
  290. {mapify_cli-3.21.0 → mapify_cli-3.22.0}/src/mapify_cli/templates_src/skills/map-state/templates/iteration_history.md.jinja +0 -0
  291. {mapify_cli-3.21.0 → mapify_cli-3.22.0}/src/mapify_cli/templates_src/skills/map-state/templates/progress.md.jinja +0 -0
  292. {mapify_cli-3.21.0 → mapify_cli-3.22.0}/src/mapify_cli/templates_src/skills/map-state/templates/task_plan.md.jinja +0 -0
  293. {mapify_cli-3.21.0 → mapify_cli-3.22.0}/src/mapify_cli/templates_src/skills/map-task/SKILL.md.jinja +0 -0
  294. {mapify_cli-3.21.0 → mapify_cli-3.22.0}/src/mapify_cli/templates_src/skills/map-tokenreport/SKILL.md.jinja +0 -0
  295. {mapify_cli-3.21.0 → mapify_cli-3.22.0}/src/mapify_cli/templates_src/skills/map-understand/SKILL.md.jinja +0 -0
  296. {mapify_cli-3.21.0 → mapify_cli-3.22.0}/src/mapify_cli/templates_src/skills/skill-rules.json.jinja +0 -0
  297. {mapify_cli-3.21.0 → mapify_cli-3.22.0}/src/mapify_cli/templates_src/workflow-rules.json.jinja +0 -0
  298. {mapify_cli-3.21.0 → mapify_cli-3.22.0}/src/mapify_cli/token_budget.py +0 -0
  299. {mapify_cli-3.21.0 → mapify_cli-3.22.0}/src/mapify_cli/tool_output_offload.py +0 -0
  300. {mapify_cli-3.21.0 → mapify_cli-3.22.0}/src/mapify_cli/tools/__init__.py +0 -0
  301. {mapify_cli-3.21.0 → mapify_cli-3.22.0}/src/mapify_cli/tools/validate_dependencies.py +0 -0
  302. {mapify_cli-3.21.0 → mapify_cli-3.22.0}/src/mapify_cli/verification_recorder.py +0 -0
  303. {mapify_cli-3.21.0 → mapify_cli-3.22.0}/src/mapify_cli/workflow_finalizer.py +0 -0
  304. {mapify_cli-3.21.0 → mapify_cli-3.22.0}/src/mapify_cli/workflow_logger.py +0 -0
  305. {mapify_cli-3.21.0 → mapify_cli-3.22.0}/src/mapify_cli/workflow_state.py +0 -0
  306. {mapify_cli-3.21.0 → mapify_cli-3.22.0}/tests/__init__.py +0 -0
  307. {mapify_cli-3.21.0 → mapify_cli-3.22.0}/tests/_fake_task_tool.py +0 -0
  308. {mapify_cli-3.21.0 → mapify_cli-3.22.0}/tests/conftest.py +0 -0
  309. {mapify_cli-3.21.0 → mapify_cli-3.22.0}/tests/fixtures/claude/escalation-matrix.md +0 -0
  310. {mapify_cli-3.21.0 → mapify_cli-3.22.0}/tests/fixtures/codex/config.toml +0 -0
  311. {mapify_cli-3.21.0 → mapify_cli-3.22.0}/tests/fixtures/wave_blueprints.py +0 -0
  312. {mapify_cli-3.21.0 → mapify_cli-3.22.0}/tests/hooks/test_detect_clarification_triggers.py +0 -0
  313. {mapify_cli-3.21.0 → mapify_cli-3.22.0}/tests/hooks/test_end_of_turn.py +0 -0
  314. {mapify_cli-3.21.0 → mapify_cli-3.22.0}/tests/hooks/test_hook_inventory_smoke.py +0 -0
  315. {mapify_cli-3.21.0 → mapify_cli-3.22.0}/tests/hooks/test_scrub_internal_ids_hook.py +0 -0
  316. {mapify_cli-3.21.0 → mapify_cli-3.22.0}/tests/integration/__init__.py +0 -0
  317. {mapify_cli-3.21.0 → mapify_cli-3.22.0}/tests/integration/fixtures/blueprint.json +0 -0
  318. {mapify_cli-3.21.0 → mapify_cli-3.22.0}/tests/integration/fixtures/code_review.md +0 -0
  319. {mapify_cli-3.21.0 → mapify_cli-3.22.0}/tests/integration/fixtures/plan_handoff.json +0 -0
  320. {mapify_cli-3.21.0 → mapify_cli-3.22.0}/tests/integration/fixtures/spec.md +0 -0
  321. {mapify_cli-3.21.0 → mapify_cli-3.22.0}/tests/integration/fixtures/step_state_initialized.json +0 -0
  322. {mapify_cli-3.21.0 → mapify_cli-3.22.0}/tests/integration/fixtures/step_state_plan_complete.json +0 -0
  323. {mapify_cli-3.21.0 → mapify_cli-3.22.0}/tests/integration/fixtures/task_plan.md +0 -0
  324. {mapify_cli-3.21.0 → mapify_cli-3.22.0}/tests/integration/fixtures/verification_summary.md +0 -0
  325. {mapify_cli-3.21.0 → mapify_cli-3.22.0}/tests/integration/test_e2e_artifact_contracts.py +0 -0
  326. {mapify_cli-3.21.0 → mapify_cli-3.22.0}/tests/integration/test_e2e_claude_sdk.py +0 -0
  327. {mapify_cli-3.21.0 → mapify_cli-3.22.0}/tests/skills_eval/fixtures/README.md +0 -0
  328. {mapify_cli-3.21.0 → mapify_cli-3.22.0}/tests/skills_eval/fixtures/map_check_optimize_eval_set.json +0 -0
  329. {mapify_cli-3.21.0 → mapify_cli-3.22.0}/tests/skills_eval/fixtures/map_debug_eval_set.json +0 -0
  330. {mapify_cli-3.21.0 → mapify_cli-3.22.0}/tests/skills_eval/fixtures/map_debug_optimize_eval_set.json +0 -0
  331. {mapify_cli-3.21.0 → mapify_cli-3.22.0}/tests/skills_eval/fixtures/map_efficient_optimize_eval_set.json +0 -0
  332. {mapify_cli-3.21.0 → mapify_cli-3.22.0}/tests/skills_eval/fixtures/map_explain_optimize_eval_set.json +0 -0
  333. {mapify_cli-3.21.0 → mapify_cli-3.22.0}/tests/skills_eval/fixtures/map_fast_optimize_eval_set.json +0 -0
  334. {mapify_cli-3.21.0 → mapify_cli-3.22.0}/tests/skills_eval/fixtures/map_learn_optimize_eval_set.json +0 -0
  335. {mapify_cli-3.21.0 → mapify_cli-3.22.0}/tests/skills_eval/fixtures/map_memory_now_optimize_eval_set.json +0 -0
  336. {mapify_cli-3.21.0 → mapify_cli-3.22.0}/tests/skills_eval/fixtures/map_plan_optimize_eval_set.json +0 -0
  337. {mapify_cli-3.21.0 → mapify_cli-3.22.0}/tests/skills_eval/fixtures/map_release_optimize_eval_set.json +0 -0
  338. {mapify_cli-3.21.0 → mapify_cli-3.22.0}/tests/skills_eval/fixtures/map_resume_optimize_eval_set.json +0 -0
  339. {mapify_cli-3.21.0 → mapify_cli-3.22.0}/tests/skills_eval/fixtures/map_review_optimize_eval_set.json +0 -0
  340. {mapify_cli-3.21.0 → mapify_cli-3.22.0}/tests/skills_eval/fixtures/map_skill_eval_optimize_eval_set.json +0 -0
  341. {mapify_cli-3.21.0 → mapify_cli-3.22.0}/tests/skills_eval/fixtures/map_state_optimize_eval_set.json +0 -0
  342. {mapify_cli-3.21.0 → mapify_cli-3.22.0}/tests/skills_eval/fixtures/map_task_optimize_eval_set.json +0 -0
  343. {mapify_cli-3.21.0 → mapify_cli-3.22.0}/tests/skills_eval/fixtures/map_tdd_optimize_eval_set.json +0 -0
  344. {mapify_cli-3.21.0 → mapify_cli-3.22.0}/tests/skills_eval/fixtures/map_tokenreport_optimize_eval_set.json +0 -0
  345. {mapify_cli-3.21.0 → mapify_cli-3.22.0}/tests/skills_eval/fixtures/whole_skill/map_task_blocker/manifest.json +0 -0
  346. {mapify_cli-3.21.0 → mapify_cli-3.22.0}/tests/skills_eval/fixtures/whole_skill/map_task_blocker/repo/.map/main/blueprint.json +0 -0
  347. {mapify_cli-3.21.0 → mapify_cli-3.22.0}/tests/skills_eval/fixtures/whole_skill/map_task_blocker/repo/.map/main/task_plan_main.md +0 -0
  348. {mapify_cli-3.21.0 → mapify_cli-3.22.0}/tests/skills_eval/fixtures/whole_skill/map_task_blocker/repo/src/__init__.py +0 -0
  349. {mapify_cli-3.21.0 → mapify_cli-3.22.0}/tests/skills_eval/fixtures/whole_skill/map_task_blocker/repo/src/utils.py +0 -0
  350. {mapify_cli-3.21.0 → mapify_cli-3.22.0}/tests/skills_eval/fixtures/whole_skill/map_task_blocker/repo/tests/test_compute.py +0 -0
  351. {mapify_cli-3.21.0 → mapify_cli-3.22.0}/tests/skills_eval/fixtures/whole_skill/map_task_calc/hidden/test_calc_full.py +0 -0
  352. {mapify_cli-3.21.0 → mapify_cli-3.22.0}/tests/skills_eval/fixtures/whole_skill/map_task_calc/manifest.json +0 -0
  353. {mapify_cli-3.21.0 → mapify_cli-3.22.0}/tests/skills_eval/fixtures/whole_skill/map_task_calc/repo/.map/main/blueprint.json +0 -0
  354. {mapify_cli-3.21.0 → mapify_cli-3.22.0}/tests/skills_eval/fixtures/whole_skill/map_task_calc/repo/.map/main/task_plan_main.md +0 -0
  355. {mapify_cli-3.21.0 → mapify_cli-3.22.0}/tests/skills_eval/fixtures/whole_skill/map_task_calc/repo/src/__init__.py +0 -0
  356. {mapify_cli-3.21.0 → mapify_cli-3.22.0}/tests/skills_eval/fixtures/whole_skill/map_task_calc/repo/src/calc.py +0 -0
  357. {mapify_cli-3.21.0 → mapify_cli-3.22.0}/tests/skills_eval/fixtures/whole_skill/map_task_calc/repo/tests/test_calc_basic.py +0 -0
  358. {mapify_cli-3.21.0 → mapify_cli-3.22.0}/tests/skills_eval/fixtures/whole_skill/map_task_calc_vague/hidden/test_calc_full.py +0 -0
  359. {mapify_cli-3.21.0 → mapify_cli-3.22.0}/tests/skills_eval/fixtures/whole_skill/map_task_calc_vague/manifest.json +0 -0
  360. {mapify_cli-3.21.0 → mapify_cli-3.22.0}/tests/skills_eval/fixtures/whole_skill/map_task_calc_vague/repo/.map/main/blueprint.json +0 -0
  361. {mapify_cli-3.21.0 → mapify_cli-3.22.0}/tests/skills_eval/fixtures/whole_skill/map_task_calc_vague/repo/.map/main/task_plan_main.md +0 -0
  362. {mapify_cli-3.21.0 → mapify_cli-3.22.0}/tests/skills_eval/fixtures/whole_skill/map_task_calc_vague/repo/src/__init__.py +0 -0
  363. {mapify_cli-3.21.0 → mapify_cli-3.22.0}/tests/skills_eval/fixtures/whole_skill/map_task_calc_vague/repo/src/calc.py +0 -0
  364. {mapify_cli-3.21.0 → mapify_cli-3.22.0}/tests/skills_eval/fixtures/whole_skill/map_task_calc_vague/repo/tests/test_calc_basic.py +0 -0
  365. {mapify_cli-3.21.0 → mapify_cli-3.22.0}/tests/skills_eval/fixtures/whole_skill/map_task_scope_pressure/manifest.json +0 -0
  366. {mapify_cli-3.21.0 → mapify_cli-3.22.0}/tests/skills_eval/fixtures/whole_skill/map_task_scope_pressure/repo/.map/main/blueprint.json +0 -0
  367. {mapify_cli-3.21.0 → mapify_cli-3.22.0}/tests/skills_eval/fixtures/whole_skill/map_task_scope_pressure/repo/.map/main/task_plan_main.md +0 -0
  368. {mapify_cli-3.21.0 → mapify_cli-3.22.0}/tests/skills_eval/fixtures/whole_skill/map_task_scope_pressure/repo/src/__init__.py +0 -0
  369. {mapify_cli-3.21.0 → mapify_cli-3.22.0}/tests/skills_eval/fixtures/whole_skill/map_task_scope_pressure/repo/src/config.py +0 -0
  370. {mapify_cli-3.21.0 → mapify_cli-3.22.0}/tests/skills_eval/fixtures/whole_skill/map_task_scope_pressure/repo/src/utils.py +0 -0
  371. {mapify_cli-3.21.0 → mapify_cli-3.22.0}/tests/skills_eval/fixtures/whole_skill/map_task_scope_pressure/repo/tests/test_price.py +0 -0
  372. {mapify_cli-3.21.0 → mapify_cli-3.22.0}/tests/skills_eval/fixtures/whole_skill/map_task_scope_trap/manifest.json +0 -0
  373. {mapify_cli-3.21.0 → mapify_cli-3.22.0}/tests/skills_eval/fixtures/whole_skill/map_task_scope_trap/repo/.map/main/blueprint.json +0 -0
  374. {mapify_cli-3.21.0 → mapify_cli-3.22.0}/tests/skills_eval/fixtures/whole_skill/map_task_scope_trap/repo/.map/main/task_plan_main.md +0 -0
  375. {mapify_cli-3.21.0 → mapify_cli-3.22.0}/tests/skills_eval/fixtures/whole_skill/map_task_scope_trap/repo/src/__init__.py +0 -0
  376. {mapify_cli-3.21.0 → mapify_cli-3.22.0}/tests/skills_eval/fixtures/whole_skill/map_task_scope_trap/repo/src/config.py +0 -0
  377. {mapify_cli-3.21.0 → mapify_cli-3.22.0}/tests/skills_eval/fixtures/whole_skill/map_task_scope_trap/repo/src/utils.py +0 -0
  378. {mapify_cli-3.21.0 → mapify_cli-3.22.0}/tests/skills_eval/fixtures/whole_skill/map_task_scope_trap/repo/tests/test_utils.py +0 -0
  379. {mapify_cli-3.21.0 → mapify_cli-3.22.0}/tests/skills_eval/fixtures/whole_skill/map_task_semver/manifest.json +0 -0
  380. {mapify_cli-3.21.0 → mapify_cli-3.22.0}/tests/skills_eval/fixtures/whole_skill/map_task_semver/repo/.map/main/blueprint.json +0 -0
  381. {mapify_cli-3.21.0 → mapify_cli-3.22.0}/tests/skills_eval/fixtures/whole_skill/map_task_semver/repo/.map/main/task_plan_main.md +0 -0
  382. {mapify_cli-3.21.0 → mapify_cli-3.22.0}/tests/skills_eval/fixtures/whole_skill/map_task_semver/repo/src/__init__.py +0 -0
  383. {mapify_cli-3.21.0 → mapify_cli-3.22.0}/tests/skills_eval/fixtures/whole_skill/map_task_semver/repo/src/semver.py +0 -0
  384. {mapify_cli-3.21.0 → mapify_cli-3.22.0}/tests/skills_eval/fixtures/whole_skill/map_task_semver/repo/tests/test_semver.py +0 -0
  385. {mapify_cli-3.21.0 → mapify_cli-3.22.0}/tests/skills_eval/fixtures/whole_skill/map_task_semver_vague/hidden/test_semver_full.py +0 -0
  386. {mapify_cli-3.21.0 → mapify_cli-3.22.0}/tests/skills_eval/fixtures/whole_skill/map_task_semver_vague/manifest.json +0 -0
  387. {mapify_cli-3.21.0 → mapify_cli-3.22.0}/tests/skills_eval/fixtures/whole_skill/map_task_semver_vague/repo/.map/main/blueprint.json +0 -0
  388. {mapify_cli-3.21.0 → mapify_cli-3.22.0}/tests/skills_eval/fixtures/whole_skill/map_task_semver_vague/repo/.map/main/task_plan_main.md +0 -0
  389. {mapify_cli-3.21.0 → mapify_cli-3.22.0}/tests/skills_eval/fixtures/whole_skill/map_task_semver_vague/repo/src/__init__.py +0 -0
  390. {mapify_cli-3.21.0 → mapify_cli-3.22.0}/tests/skills_eval/fixtures/whole_skill/map_task_semver_vague/repo/src/semver.py +0 -0
  391. {mapify_cli-3.21.0 → mapify_cli-3.22.0}/tests/skills_eval/fixtures/whole_skill/map_task_semver_vague/repo/tests/test_semver_basic.py +0 -0
  392. {mapify_cli-3.21.0 → mapify_cli-3.22.0}/tests/skills_eval/fixtures/whole_skill/map_task_semver_weakgate/hidden/test_semver_full.py +0 -0
  393. {mapify_cli-3.21.0 → mapify_cli-3.22.0}/tests/skills_eval/fixtures/whole_skill/map_task_semver_weakgate/manifest.json +0 -0
  394. {mapify_cli-3.21.0 → mapify_cli-3.22.0}/tests/skills_eval/fixtures/whole_skill/map_task_semver_weakgate/repo/.map/main/blueprint.json +0 -0
  395. {mapify_cli-3.21.0 → mapify_cli-3.22.0}/tests/skills_eval/fixtures/whole_skill/map_task_semver_weakgate/repo/.map/main/task_plan_main.md +0 -0
  396. {mapify_cli-3.21.0 → mapify_cli-3.22.0}/tests/skills_eval/fixtures/whole_skill/map_task_semver_weakgate/repo/src/__init__.py +0 -0
  397. {mapify_cli-3.21.0 → mapify_cli-3.22.0}/tests/skills_eval/fixtures/whole_skill/map_task_semver_weakgate/repo/src/semver.py +0 -0
  398. {mapify_cli-3.21.0 → mapify_cli-3.22.0}/tests/skills_eval/fixtures/whole_skill/map_task_semver_weakgate/repo/tests/test_semver_basic.py +0 -0
  399. {mapify_cli-3.21.0 → mapify_cli-3.22.0}/tests/skills_eval/whole_skill/spike_runner.py +0 -0
  400. {mapify_cli-3.21.0 → mapify_cli-3.22.0}/tests/test_agent_cli_correctness.py +0 -0
  401. {mapify_cli-3.21.0 → mapify_cli-3.22.0}/tests/test_agent_dispatch_audit.py +0 -0
  402. {mapify_cli-3.21.0 → mapify_cli-3.22.0}/tests/test_agent_frontmatter.py +0 -0
  403. {mapify_cli-3.21.0 → mapify_cli-3.22.0}/tests/test_artifact_schemas.py +0 -0
  404. {mapify_cli-3.21.0 → mapify_cli-3.22.0}/tests/test_bump_version.py +0 -0
  405. {mapify_cli-3.21.0 → mapify_cli-3.22.0}/tests/test_compaction_offload_integration.py +0 -0
  406. {mapify_cli-3.21.0 → mapify_cli-3.22.0}/tests/test_concurrent_dispatch_harness.py +0 -0
  407. {mapify_cli-3.21.0 → mapify_cli-3.22.0}/tests/test_cross_ai_config.py +0 -0
  408. {mapify_cli-3.21.0 → mapify_cli-3.22.0}/tests/test_decomposition.py +0 -0
  409. {mapify_cli-3.21.0 → mapify_cli-3.22.0}/tests/test_dependency_graph.py +0 -0
  410. {mapify_cli-3.21.0 → mapify_cli-3.22.0}/tests/test_diagnostics.py +0 -0
  411. {mapify_cli-3.21.0 → mapify_cli-3.22.0}/tests/test_digest_schema.py +0 -0
  412. {mapify_cli-3.21.0 → mapify_cli-3.22.0}/tests/test_file_copier.py +0 -0
  413. {mapify_cli-3.21.0 → mapify_cli-3.22.0}/tests/test_hook_patterns.py +0 -0
  414. {mapify_cli-3.21.0 → mapify_cli-3.22.0}/tests/test_init_import_graph.py +0 -0
  415. {mapify_cli-3.21.0 → mapify_cli-3.22.0}/tests/test_intent_detector.py +0 -0
  416. {mapify_cli-3.21.0 → mapify_cli-3.22.0}/tests/test_inv1_no_anthropic_optimize.py +0 -0
  417. {mapify_cli-3.21.0 → mapify_cli-3.22.0}/tests/test_jinja2_dep.py +0 -0
  418. {mapify_cli-3.21.0 → mapify_cli-3.22.0}/tests/test_locking.py +0 -0
  419. {mapify_cli-3.21.0 → mapify_cli-3.22.0}/tests/test_managed_file_copier.py +0 -0
  420. {mapify_cli-3.21.0 → mapify_cli-3.22.0}/tests/test_map_token_meter.py +0 -0
  421. {mapify_cli-3.21.0 → mapify_cli-3.22.0}/tests/test_map_utils_sanitize.py +0 -0
  422. {mapify_cli-3.21.0 → mapify_cli-3.22.0}/tests/test_memory_capture.py +0 -0
  423. {mapify_cli-3.21.0 → mapify_cli-3.22.0}/tests/test_memory_finalize.py +0 -0
  424. {mapify_cli-3.21.0 → mapify_cli-3.22.0}/tests/test_memory_integration.py +0 -0
  425. {mapify_cli-3.21.0 → mapify_cli-3.22.0}/tests/test_memory_recall.py +0 -0
  426. {mapify_cli-3.21.0 → mapify_cli-3.22.0}/tests/test_memory_review_fixes.py +0 -0
  427. {mapify_cli-3.21.0 → mapify_cli-3.22.0}/tests/test_minimality_report.py +0 -0
  428. {mapify_cli-3.21.0 → mapify_cli-3.22.0}/tests/test_parallelism_observability.py +0 -0
  429. {mapify_cli-3.21.0 → mapify_cli-3.22.0}/tests/test_post_compact_context.py +0 -0
  430. {mapify_cli-3.21.0 → mapify_cli-3.22.0}/tests/test_prompt_layering.py +0 -0
  431. {mapify_cli-3.21.0 → mapify_cli-3.22.0}/tests/test_pyyaml_dep.py +0 -0
  432. {mapify_cli-3.21.0 → mapify_cli-3.22.0}/tests/test_ralph_hooks.py +0 -0
  433. {mapify_cli-3.21.0 → mapify_cli-3.22.0}/tests/test_ralph_state.py +0 -0
  434. {mapify_cli-3.21.0 → mapify_cli-3.22.0}/tests/test_repo_insight.py +0 -0
  435. {mapify_cli-3.21.0 → mapify_cli-3.22.0}/tests/test_research_eval.py +0 -0
  436. {mapify_cli-3.21.0 → mapify_cli-3.22.0}/tests/test_schemas.py +0 -0
  437. {mapify_cli-3.21.0 → mapify_cli-3.22.0}/tests/test_scrub_internal_ids.py +0 -0
  438. {mapify_cli-3.21.0 → mapify_cli-3.22.0}/tests/test_skill_ir.py +0 -0
  439. {mapify_cli-3.21.0 → mapify_cli-3.22.0}/tests/test_skills_consistency.py +0 -0
  440. {mapify_cli-3.21.0 → mapify_cli-3.22.0}/tests/test_skills_eval_aggregator.py +0 -0
  441. {mapify_cli-3.21.0 → mapify_cli-3.22.0}/tests/test_skills_eval_apply.py +0 -0
  442. {mapify_cli-3.21.0 → mapify_cli-3.22.0}/tests/test_skills_eval_cli_optimize.py +0 -0
  443. {mapify_cli-3.21.0 → mapify_cli-3.22.0}/tests/test_skills_eval_dispatcher_env.py +0 -0
  444. {mapify_cli-3.21.0 → mapify_cli-3.22.0}/tests/test_skills_eval_dispatcher_timeout.py +0 -0
  445. {mapify_cli-3.21.0 → mapify_cli-3.22.0}/tests/test_skills_eval_fixtures.py +0 -0
  446. {mapify_cli-3.21.0 → mapify_cli-3.22.0}/tests/test_skills_eval_optimizer.py +0 -0
  447. {mapify_cli-3.21.0 → mapify_cli-3.22.0}/tests/test_skills_eval_optimizer_isolation.py +0 -0
  448. {mapify_cli-3.21.0 → mapify_cli-3.22.0}/tests/test_skills_eval_proposer.py +0 -0
  449. {mapify_cli-3.21.0 → mapify_cli-3.22.0}/tests/test_skills_eval_runner.py +0 -0
  450. {mapify_cli-3.21.0 → mapify_cli-3.22.0}/tests/test_skills_eval_schema.py +0 -0
  451. {mapify_cli-3.21.0 → mapify_cli-3.22.0}/tests/test_skills_eval_viewer.py +0 -0
  452. {mapify_cli-3.21.0 → mapify_cli-3.22.0}/tests/test_slice5b_leak_guards.py +0 -0
  453. {mapify_cli-3.21.0 → mapify_cli-3.22.0}/tests/test_sofa_client.py +0 -0
  454. {mapify_cli-3.21.0 → mapify_cli-3.22.0}/tests/test_sofa_search.py +0 -0
  455. {mapify_cli-3.21.0 → mapify_cli-3.22.0}/tests/test_statusline.py +0 -0
  456. {mapify_cli-3.21.0 → mapify_cli-3.22.0}/tests/test_template_render.py +0 -0
  457. {mapify_cli-3.21.0 → mapify_cli-3.22.0}/tests/test_token_budget.py +0 -0
  458. {mapify_cli-3.21.0 → mapify_cli-3.22.0}/tests/test_tool_output_offload.py +0 -0
  459. {mapify_cli-3.21.0 → mapify_cli-3.22.0}/tests/test_validate_dependencies.py +0 -0
  460. {mapify_cli-3.21.0 → mapify_cli-3.22.0}/tests/test_validate_spec_citations.py +0 -0
  461. {mapify_cli-3.21.0 → mapify_cli-3.22.0}/tests/test_verification_recorder.py +0 -0
  462. {mapify_cli-3.21.0 → mapify_cli-3.22.0}/tests/test_wave_eval_harness.py +0 -0
  463. {mapify_cli-3.21.0 → mapify_cli-3.22.0}/tests/test_wave_fixtures.py +0 -0
  464. {mapify_cli-3.21.0 → mapify_cli-3.22.0}/tests/test_wave_parallel_harness.py +0 -0
  465. {mapify_cli-3.21.0 → mapify_cli-3.22.0}/tests/test_workflow_finalizer.py +0 -0
  466. {mapify_cli-3.21.0 → mapify_cli-3.22.0}/tests/test_workflow_logger.py +0 -0
  467. {mapify_cli-3.21.0 → mapify_cli-3.22.0}/tests/test_workflow_state.py +0 -0
  468. {mapify_cli-3.21.0 → mapify_cli-3.22.0}/tests/test_worktree_isolation.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: mapify-cli
3
- Version: 3.21.0
3
+ Version: 3.22.0
4
4
  Summary: MAP Framework installer - Modular Agentic Planner for Claude Code
5
5
  Project-URL: Homepage, https://github.com/azalio/map-framework
6
6
  Project-URL: Repository, https://github.com/azalio/map-framework.git
@@ -291,6 +291,7 @@ mapify init . --no-autonomy # remove the autonomy posture
291
291
  |-------|-------------|
292
292
  | [Installation](docs/INSTALL.md) | All install methods, PATH setup, troubleshooting |
293
293
  | [Usage Guide](docs/USAGE.md) | Workflows, examples, cost optimization, playbook |
294
+ | [Prompt Library](docs/PROMPT_LIBRARY.md) | Copyable prompt recipes by SDLC phase and role |
294
295
  | [Architecture](docs/ARCHITECTURE.md) | Agents, MCP integration, customization |
295
296
  | [Platform Spec](docs/MAP_PLATFORM_SPEC.md) | Platform refactor roadmap, codebase analysis |
296
297
 
@@ -246,6 +246,7 @@ mapify init . --no-autonomy # remove the autonomy posture
246
246
  |-------|-------------|
247
247
  | [Installation](docs/INSTALL.md) | All install methods, PATH setup, troubleshooting |
248
248
  | [Usage Guide](docs/USAGE.md) | Workflows, examples, cost optimization, playbook |
249
+ | [Prompt Library](docs/PROMPT_LIBRARY.md) | Copyable prompt recipes by SDLC phase and role |
249
250
  | [Architecture](docs/ARCHITECTURE.md) | Agents, MCP integration, customization |
250
251
  | [Platform Spec](docs/MAP_PLATFORM_SPEC.md) | Platform refactor roadmap, codebase analysis |
251
252
 
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "mapify-cli"
3
- version = "3.21.0"
3
+ version = "3.22.0"
4
4
  description = "MAP Framework installer - Modular Agentic Planner for Claude Code"
5
5
  authors = [{ name = "MAP Framework Contributors" }]
6
6
  readme = "README.md"
@@ -23,7 +23,7 @@ Or install globally:
23
23
  mapify check
24
24
  """
25
25
 
26
- __version__ = "3.21.0"
26
+ __version__ = "3.22.0"
27
27
 
28
28
  import os
29
29
  import subprocess
@@ -152,6 +152,27 @@ research_eval_app = typer.Typer(
152
152
 
153
153
  app.add_typer(research_eval_app, name="research-eval")
154
154
 
155
+ code_map_app = typer.Typer(
156
+ name="code-map",
157
+ help="Structural code-map provider for MAP research (Python AST fallback).",
158
+ )
159
+
160
+ app.add_typer(code_map_app, name="code-map")
161
+
162
+ domain_skill_app = typer.Typer(
163
+ name="domain-skill",
164
+ help="Bootstrap a project-local domain/reference skill for Claude Code.",
165
+ )
166
+
167
+ app.add_typer(domain_skill_app, name="domain-skill")
168
+
169
+ governance_app = typer.Typer(
170
+ name="governance",
171
+ help="Inventory and audit MAP behavior-shaping assets installed in a project.",
172
+ )
173
+
174
+ app.add_typer(governance_app, name="governance")
175
+
155
176
 
156
177
  def version_callback(value: bool):
157
178
  """Callback to show version and exit."""
@@ -1003,6 +1024,22 @@ def init(
1003
1024
  else:
1004
1025
  tracker.error("git", "failed")
1005
1026
 
1027
+ # Write install manifest (.map/mapify.lock.json) — scan-based, after all files
1028
+ # have been installed by both providers.
1029
+ tracker.add("manifest", "Write install manifest")
1030
+ tracker.start("manifest")
1031
+ try:
1032
+ from mapify_cli.install_manifest import build_manifest, write_manifest
1033
+
1034
+ manifest = build_manifest(project_path, provider, __version__)
1035
+ manifest_path = write_manifest(project_path, manifest)
1036
+ tracker.complete(
1037
+ "manifest",
1038
+ f"{len(manifest.entries)} entries → {manifest_path.relative_to(project_path)}",
1039
+ )
1040
+ except Exception as _manifest_exc:
1041
+ tracker.error("manifest", f"skipped: {_manifest_exc}")
1042
+
1006
1043
  tracker.add("finalize", "Finalize")
1007
1044
  tracker.complete("finalize", "project ready")
1008
1045
 
@@ -1571,6 +1608,160 @@ def upgrade():
1571
1608
  )
1572
1609
 
1573
1610
 
1611
+ @app.command("check-installed")
1612
+ def check_installed(
1613
+ project_path: Optional[Path] = typer.Argument(
1614
+ None,
1615
+ help="Project root directory (defaults to current directory).",
1616
+ ),
1617
+ ) -> None:
1618
+ """Compare installed MAP files against .map/mapify.lock.json.
1619
+
1620
+ Reports missing files (in manifest but absent from disk), orphaned files
1621
+ (MAP-managed on disk but not recorded in the manifest), and drifted files
1622
+ (template hash differs from the manifest record).
1623
+
1624
+ Exit codes: 0 = all ok, 1 = issues found, 2 = no manifest.
1625
+ """
1626
+ from mapify_cli.install_manifest import check_installed as _check_installed
1627
+ from mapify_cli.install_manifest import read_manifest
1628
+
1629
+ target = project_path or Path.cwd()
1630
+
1631
+ manifest = read_manifest(target)
1632
+ if manifest is None:
1633
+ console.print(
1634
+ f"[yellow]No install manifest found at {target / '.map' / 'mapify.lock.json'}[/yellow]"
1635
+ )
1636
+ console.print(
1637
+ "[dim]Run [cyan]mapify init .[/cyan] to generate the manifest.[/dim]"
1638
+ )
1639
+ raise typer.Exit(2)
1640
+
1641
+ console.print(
1642
+ f"[bold]MAP install manifest[/bold] — provider: [cyan]{manifest.provider}[/cyan], "
1643
+ f"version: [cyan]{manifest.mapify_version}[/cyan], "
1644
+ f"installed: [dim]{manifest.installed_at}[/dim]"
1645
+ )
1646
+ console.print(f"[dim]{len(manifest.entries)} entries recorded[/dim]")
1647
+ console.print()
1648
+
1649
+ result = _check_installed(target)
1650
+
1651
+ has_issues = False
1652
+
1653
+ if result.missing:
1654
+ has_issues = True
1655
+ console.print(f"[red]Missing ({len(result.missing)} files):[/red]")
1656
+ for path in result.missing:
1657
+ console.print(f" [red]✗[/red] {path}")
1658
+
1659
+ if result.orphaned:
1660
+ has_issues = True
1661
+ console.print(f"[yellow]Orphaned ({len(result.orphaned)} files):[/yellow]")
1662
+ for path in result.orphaned:
1663
+ console.print(f" [yellow]?[/yellow] {path}")
1664
+
1665
+ if result.drifted:
1666
+ has_issues = True
1667
+ console.print(f"[yellow]Drifted ({len(result.drifted)} files):[/yellow]")
1668
+ for path in result.drifted:
1669
+ console.print(f" [yellow]~[/yellow] {path}")
1670
+
1671
+ if result.ok and not has_issues:
1672
+ console.print(
1673
+ f"[green]✅ All {len(result.ok)} managed files match the manifest.[/green]"
1674
+ )
1675
+ elif not has_issues:
1676
+ console.print("[green]✅ No issues found.[/green]")
1677
+ else:
1678
+ console.print()
1679
+ console.print(
1680
+ "[dim]Run [cyan]mapify init . --force[/cyan] to refresh managed files.[/dim]"
1681
+ )
1682
+ raise typer.Exit(1)
1683
+
1684
+
1685
+ @app.command()
1686
+ def uninstall(
1687
+ project_path: Optional[Path] = typer.Argument(
1688
+ None,
1689
+ help="Project root directory (defaults to current directory).",
1690
+ ),
1691
+ yes: bool = typer.Option(
1692
+ False,
1693
+ "--yes",
1694
+ "-y",
1695
+ help="Skip confirmation prompt.",
1696
+ ),
1697
+ ) -> None:
1698
+ """Remove MAP-owned config entries from provider config files.
1699
+
1700
+ Reads .map/mapify.lock.json and removes only the config-merge entries
1701
+ MAP injected (MCP server keys in .mcp.json, the MAP statusline in
1702
+ settings.local.json). User-modified or user-owned entries are
1703
+ preserved. Installed files (.claude/, .map/scripts/, etc.) are
1704
+ NOT removed by this command.
1705
+
1706
+ Exit codes: 0 = ok / nothing to remove, 1 = error, 2 = no manifest.
1707
+ """
1708
+ from mapify_cli.install_manifest import read_manifest, reconcile_config
1709
+
1710
+ target = project_path or Path.cwd()
1711
+
1712
+ manifest = read_manifest(target)
1713
+ if manifest is None:
1714
+ console.print(
1715
+ f"[yellow]No install manifest found at "
1716
+ f"{target / '.map' / 'mapify.lock.json'}[/yellow]"
1717
+ )
1718
+ console.print("[dim]Run [cyan]mapify init .[/cyan] to generate the manifest.[/dim]")
1719
+ raise typer.Exit(2)
1720
+
1721
+ if not manifest.config_entries:
1722
+ console.print("[green]No MAP-owned config entries in the manifest.[/green]")
1723
+ return
1724
+
1725
+ console.print(
1726
+ f"[bold]MAP config entries to remove[/bold] "
1727
+ f"(provider: [cyan]{manifest.provider}[/cyan]):"
1728
+ )
1729
+ for entry in manifest.config_entries:
1730
+ console.print(f" [dim]{entry.file}[/dim] [cyan]{entry.key_path}[/cyan]")
1731
+
1732
+ console.print()
1733
+ if not yes:
1734
+ confirm = typer.confirm(
1735
+ "Remove these MAP-owned config entries?",
1736
+ default=False,
1737
+ )
1738
+ if not confirm:
1739
+ console.print("[dim]Aborted.[/dim]")
1740
+ return
1741
+
1742
+ result = reconcile_config(target)
1743
+
1744
+ if result.removed:
1745
+ console.print(f"[green]Removed ({len(result.removed)}):[/green]")
1746
+ for label in result.removed:
1747
+ console.print(f" [green]✓[/green] {label}")
1748
+
1749
+ if result.skipped:
1750
+ console.print(
1751
+ f"[yellow]Skipped ({len(result.skipped)}) — user-modified, preserved:[/yellow]"
1752
+ )
1753
+ for label in result.skipped:
1754
+ console.print(f" [yellow]~[/yellow] {label}")
1755
+
1756
+ if result.missing:
1757
+ console.print(f"[dim]Already absent ({len(result.missing)}):[/dim]")
1758
+ for label in result.missing:
1759
+ console.print(f" [dim]-[/dim] {label}")
1760
+
1761
+ if not result.removed and not result.skipped and not result.missing:
1762
+ console.print("[dim]Nothing to do.[/dim]")
1763
+
1764
+
1574
1765
  # Research localization eval commands
1575
1766
 
1576
1767
 
@@ -1678,6 +1869,127 @@ def research_eval_score(
1678
1869
  raise typer.Exit(1)
1679
1870
 
1680
1871
 
1872
+ @research_eval_app.command("compare")
1873
+ def research_eval_compare(
1874
+ baseline_file: Path = typer.Argument(
1875
+ ...,
1876
+ help="ResearchEvidence JSON/text from the baseline discovery arm (e.g. glob_grep)",
1877
+ ),
1878
+ treatment_file: Path = typer.Argument(
1879
+ ...,
1880
+ help="ResearchEvidence JSON/text from the treatment discovery arm (e.g. structural-map)",
1881
+ ),
1882
+ expected_file: Path = typer.Argument(
1883
+ ...,
1884
+ help="JSON list, or object with expected_locations, of target file ranges",
1885
+ ),
1886
+ baseline_name: str = typer.Option(
1887
+ "baseline",
1888
+ "--baseline-name",
1889
+ help="Display name for the baseline arm",
1890
+ ),
1891
+ treatment_name: str = typer.Option(
1892
+ "treatment",
1893
+ "--treatment-name",
1894
+ help="Display name for the treatment arm",
1895
+ ),
1896
+ repo_root: Optional[Path] = typer.Option(
1897
+ None,
1898
+ "--repo-root",
1899
+ help="Fixture repository root for path existence (stale detection) and line validation",
1900
+ ),
1901
+ min_treatment_file_f1: float = typer.Option(
1902
+ 0.0,
1903
+ "--min-file-f1",
1904
+ min=0.0,
1905
+ max=1.0,
1906
+ help="Hard quality floor on treatment file-level F1 (token-only wins are not enough)",
1907
+ ),
1908
+ min_treatment_line_f1: float = typer.Option(
1909
+ 0.0,
1910
+ "--min-line-f1",
1911
+ min=0.0,
1912
+ max=1.0,
1913
+ help="Hard quality floor on treatment line-level F1",
1914
+ ),
1915
+ max_stale_regression: int = typer.Option(
1916
+ 0,
1917
+ "--max-stale-regression",
1918
+ min=0,
1919
+ help="Max allowed increase in stale/missing-file locations for treatment vs baseline",
1920
+ ),
1921
+ overbroad_line_threshold: int = typer.Option(
1922
+ 50,
1923
+ "--overbroad-line-threshold",
1924
+ min=1,
1925
+ help="Locations with span above this are counted as over-broad",
1926
+ ),
1927
+ no_warn_regression: bool = typer.Option(
1928
+ False,
1929
+ "--no-warn-regression",
1930
+ help="Suppress quality-regression warnings (treatment vs baseline delta)",
1931
+ ),
1932
+ out: Optional[Path] = typer.Option(
1933
+ None,
1934
+ "--out",
1935
+ help="Write JSON report to this file (default: stdout only)",
1936
+ ),
1937
+ ) -> None:
1938
+ """Compare two ResearchEvidence discovery arms (baseline vs treatment).
1939
+
1940
+ Scores quality (precision/recall/F1) and exploration-cost metrics
1941
+ (location_count, stale_count, overbroad_count) separately so token/LOC
1942
+ reduction cannot mask lower evidence quality.
1943
+
1944
+ Exit codes:
1945
+ 0 - Treatment meets all hard quality floors and stale-regression limits
1946
+ 1 - Hard failure: quality floor not met or stale regression exceeded
1947
+ 2 - Input files are missing or malformed
1948
+ """
1949
+ import json
1950
+
1951
+ from mapify_cli.research_eval_compare import compare_research_files
1952
+
1953
+ for label, path in [
1954
+ ("baseline", baseline_file),
1955
+ ("treatment", treatment_file),
1956
+ ("expected", expected_file),
1957
+ ]:
1958
+ if not path.is_file():
1959
+ console.print(f"[bold red]Error:[/bold red] {label} file not found: {path}")
1960
+ raise typer.Exit(2)
1961
+
1962
+ root = repo_root.resolve() if repo_root else None
1963
+ try:
1964
+ report = compare_research_files(
1965
+ baseline_file,
1966
+ treatment_file,
1967
+ expected_file,
1968
+ baseline_name=baseline_name,
1969
+ treatment_name=treatment_name,
1970
+ repo_root=root,
1971
+ overbroad_line_threshold=overbroad_line_threshold,
1972
+ min_treatment_file_f1=min_treatment_file_f1,
1973
+ min_treatment_line_f1=min_treatment_line_f1,
1974
+ max_stale_regression=max_stale_regression,
1975
+ warn_on_quality_regression=not no_warn_regression,
1976
+ )
1977
+ except (OSError, ValueError) as exc:
1978
+ console.print(f"[bold red]Error:[/bold red] {exc}")
1979
+ raise typer.Exit(2)
1980
+
1981
+ payload = report.as_dict()
1982
+ output_json = json.dumps(payload, indent=2, sort_keys=True)
1983
+ print(output_json)
1984
+
1985
+ if out is not None:
1986
+ out.parent.mkdir(parents=True, exist_ok=True)
1987
+ out.write_text(output_json + "\n", encoding="utf-8")
1988
+
1989
+ if not report.passed:
1990
+ raise typer.Exit(1)
1991
+
1992
+
1681
1993
  # Skill-eval commands
1682
1994
 
1683
1995
 
@@ -2116,3 +2428,193 @@ def main():
2116
2428
 
2117
2429
  if __name__ == "__main__":
2118
2430
  main()
2431
+
2432
+
2433
+ # ---------------------------------------------------------------------------
2434
+ # Code-map commands
2435
+ # ---------------------------------------------------------------------------
2436
+
2437
+
2438
+ @code_map_app.command("query")
2439
+ def code_map_query(
2440
+ query: str = typer.Argument(..., help="Symbol name or keyword to search for."),
2441
+ repo_root: Path = typer.Option(
2442
+ Path("."),
2443
+ "--repo-root",
2444
+ "-r",
2445
+ help="Root of the repository to index (default: current directory).",
2446
+ ),
2447
+ max_results: int = typer.Option(
2448
+ 5,
2449
+ "--max-results",
2450
+ "-n",
2451
+ min=1,
2452
+ max=20,
2453
+ help="Maximum number of locations to return (default 5).",
2454
+ ),
2455
+ out: Optional[Path] = typer.Option(
2456
+ None,
2457
+ "--out",
2458
+ help="Write ResearchEvidence JSON to this file (default: stdout only).",
2459
+ ),
2460
+ ) -> None:
2461
+ """Query the structural code map for a symbol and emit ResearchEvidence JSON.
2462
+
2463
+ Scans all Python files under REPO_ROOT using AST parsing (no external
2464
+ dependencies required) and returns matching symbol locations compatible
2465
+ with the existing ResearchEvidence contract.
2466
+
2467
+ Exit codes:
2468
+ 0 - One or more matching locations found.
2469
+ 1 - No matches found, empty index, or error.
2470
+ """
2471
+ from mapify_cli.code_map import query_code_map
2472
+
2473
+ result = query_code_map(query, repo_root.resolve(), max_results=max_results)
2474
+ evidence = result.as_research_evidence()
2475
+
2476
+ print(evidence)
2477
+
2478
+ if out is not None:
2479
+ out.parent.mkdir(parents=True, exist_ok=True)
2480
+ out.write_text(evidence + "\n", encoding="utf-8")
2481
+
2482
+ if result.status not in ("ok",):
2483
+ raise typer.Exit(1)
2484
+
2485
+
2486
+ # ---------------------------------------------------------------------------
2487
+ # Domain-skill commands
2488
+ # ---------------------------------------------------------------------------
2489
+
2490
+
2491
+ @domain_skill_app.command("init")
2492
+ def domain_skill_init(
2493
+ project_path: Optional[str] = typer.Argument(
2494
+ None,
2495
+ help="Project directory to bootstrap the domain skill in (default: current directory)",
2496
+ ),
2497
+ name: Optional[str] = typer.Option(
2498
+ None,
2499
+ "--name",
2500
+ help="Skill name in kebab-case (default: <project-name>-domain)",
2501
+ ),
2502
+ overwrite: bool = typer.Option(
2503
+ False,
2504
+ "--overwrite",
2505
+ help="Overwrite an existing domain skill file",
2506
+ ),
2507
+ ) -> None:
2508
+ """Bootstrap a project-local domain/reference skill.
2509
+
2510
+ Scans README.md, pyproject.toml, package.json, go.mod, and Makefile to
2511
+ extract factual content. Missing facts become explicit placeholders for you
2512
+ to fill. No content is fabricated, and secrets are never read or emitted.
2513
+
2514
+ The generated .claude/skills/<name>/SKILL.md is yours — it is not a
2515
+ MAP-managed shipped template and will not be overwritten by mapify init.
2516
+
2517
+ This differs from /map-learn: this skill provides day-one project context
2518
+ before any workflow runs; /map-learn captures lessons after a run completes.
2519
+
2520
+ Examples:
2521
+
2522
+ mapify domain-skill init
2523
+
2524
+ mapify domain-skill init . --name myproject-domain
2525
+
2526
+ mapify domain-skill init /path/to/project --overwrite
2527
+ """
2528
+ from mapify_cli.delivery.domain_skill import create_domain_skill
2529
+
2530
+ target = Path(project_path) if project_path else Path.cwd()
2531
+ if not target.exists():
2532
+ console.print(f"[red]Error:[/red] Path does not exist: {target}")
2533
+ raise typer.Exit(1)
2534
+
2535
+ skill_file, created = create_domain_skill(target, skill_name=name, overwrite=overwrite)
2536
+
2537
+ rel = skill_file.relative_to(target)
2538
+ if created:
2539
+ console.print(f"[green]Created[/green] {rel}")
2540
+ console.print(
2541
+ "[dim]Edit the file and replace placeholders with real project facts.[/dim]"
2542
+ )
2543
+ console.print(
2544
+ "[dim]Do not commit secrets, tokens, passwords, or API keys into this file.[/dim]"
2545
+ )
2546
+ else:
2547
+ console.print(
2548
+ f"[yellow]Skipped:[/yellow] {rel} already exists"
2549
+ " (use --overwrite to replace)"
2550
+ )
2551
+
2552
+
2553
+ # ---------------------------------------------------------------------------
2554
+ # Governance commands
2555
+ # ---------------------------------------------------------------------------
2556
+
2557
+
2558
+ @governance_app.command("report")
2559
+ def governance_report(
2560
+ project_path: Optional[str] = typer.Argument(
2561
+ None,
2562
+ help="Project directory to audit (default: current directory)",
2563
+ ),
2564
+ output_json: bool = typer.Option(
2565
+ False,
2566
+ "--json",
2567
+ help="Output the report as JSON instead of Markdown",
2568
+ ),
2569
+ out: Optional[str] = typer.Option(
2570
+ None,
2571
+ "--out",
2572
+ help="Write the report to a file instead of stdout",
2573
+ ),
2574
+ ) -> None:
2575
+ """Generate a governance report for MAP behavior-shaping assets.
2576
+
2577
+ Inventories installed skills, hooks, references, and learned rules in the
2578
+ .claude/ directory and classifies each asset under six governance categories:
2579
+ Charter, Policy, Context, Harness, Oversight, Learning.
2580
+
2581
+ Distinguishes enforced controls (runtime hooks) from prompt-only guidance
2582
+ (skills, references, learned rules) and lists governance gaps where
2583
+ policy claims rely solely on prompt text without a backing harness control.
2584
+
2585
+ Examples:
2586
+
2587
+ mapify governance report
2588
+
2589
+ mapify governance report /path/to/project
2590
+
2591
+ mapify governance report --json --out .map/governance.json
2592
+ """
2593
+ from mapify_cli.delivery.governance_report import build_governance_report
2594
+
2595
+ target = Path(project_path) if project_path else Path.cwd()
2596
+ if not target.exists():
2597
+ console.print(f"[red]Error:[/red] Path does not exist: {target}")
2598
+ raise typer.Exit(1)
2599
+
2600
+ report = build_governance_report(target)
2601
+
2602
+ if not report.assets:
2603
+ console.print(
2604
+ f"[yellow]No MAP assets found[/yellow] in {target} — "
2605
+ "run 'mapify init' first to install the MAP framework."
2606
+ )
2607
+ raise typer.Exit(1)
2608
+
2609
+ content = report.as_json() if output_json else report.as_markdown()
2610
+
2611
+ if out is not None:
2612
+ out_path = Path(out)
2613
+ out_path.parent.mkdir(parents=True, exist_ok=True)
2614
+ out_path.write_text(content, encoding="utf-8")
2615
+ console.print(f"[green]Written[/green] {out_path}")
2616
+ elif output_json:
2617
+ # Bypass Rich to avoid ANSI escape codes in JSON output
2618
+ typer.echo(content)
2619
+ else:
2620
+ console.print(content)