mapify-cli 3.24.0__tar.gz → 3.25.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 (518) hide show
  1. {mapify_cli-3.24.0 → mapify_cli-3.25.0}/PKG-INFO +2 -2
  2. {mapify_cli-3.24.0 → mapify_cli-3.25.0}/pyproject.toml +1 -1
  3. {mapify_cli-3.24.0 → mapify_cli-3.25.0}/src/mapify_cli/__init__.py +35 -1
  4. {mapify_cli-3.24.0 → mapify_cli-3.25.0}/src/mapify_cli/config/project_config.py +87 -0
  5. {mapify_cli-3.24.0 → mapify_cli-3.25.0}/src/mapify_cli/delivery/file_copier.py +92 -0
  6. {mapify_cli-3.24.0 → mapify_cli-3.25.0}/src/mapify_cli/delivery/governance_report.py +8 -0
  7. {mapify_cli-3.24.0 → mapify_cli-3.25.0}/src/mapify_cli/delivery/template_renderer.py +5 -2
  8. {mapify_cli-3.24.0 → mapify_cli-3.25.0}/src/mapify_cli/schemas.py +173 -0
  9. {mapify_cli-3.24.0/src/mapify_cli/templates → mapify_cli-3.25.0/src/mapify_cli/templates/codex}/hooks/workflow-gate.py +12 -1
  10. {mapify_cli-3.24.0 → mapify_cli-3.25.0}/src/mapify_cli/templates/codex/skills/map-review/review-reference.md +9 -2
  11. {mapify_cli-3.24.0/src/mapify_cli/templates/codex → mapify_cli-3.25.0/src/mapify_cli/templates}/hooks/workflow-gate.py +12 -1
  12. {mapify_cli-3.24.0 → mapify_cli-3.25.0}/src/mapify_cli/templates/map/scripts/classify_scope.py +29 -2
  13. {mapify_cli-3.24.0 → mapify_cli-3.25.0}/src/mapify_cli/templates/map/scripts/map_orchestrator.py +21 -6
  14. {mapify_cli-3.24.0 → mapify_cli-3.25.0}/src/mapify_cli/templates/map/scripts/map_step_runner.py +1180 -16
  15. {mapify_cli-3.24.0 → mapify_cli-3.25.0}/src/mapify_cli/templates/map/scripts/wayfind_runner.py +209 -15
  16. {mapify_cli-3.24.0 → mapify_cli-3.25.0}/src/mapify_cli/templates/settings.json +33 -3
  17. {mapify_cli-3.24.0 → mapify_cli-3.25.0}/src/mapify_cli/templates/skills/map-release/SKILL.md +1 -1
  18. {mapify_cli-3.24.0 → mapify_cli-3.25.0}/src/mapify_cli/templates/skills/map-review/SKILL.md +89 -12
  19. {mapify_cli-3.24.0 → mapify_cli-3.25.0}/src/mapify_cli/templates/skills/map-review/review-reference.md +118 -0
  20. {mapify_cli-3.24.0 → mapify_cli-3.25.0}/src/mapify_cli/templates/skills/map-wayfind/SKILL.md +5 -5
  21. {mapify_cli-3.24.0 → mapify_cli-3.25.0}/src/mapify_cli/templates/skills/map-wayfind/wayfind-reference.md +3 -1
  22. {mapify_cli-3.24.0 → mapify_cli-3.25.0}/src/mapify_cli/templates_src/codex/hooks/workflow-gate.py.jinja +12 -1
  23. {mapify_cli-3.24.0 → mapify_cli-3.25.0}/src/mapify_cli/templates_src/codex/skills/map-review/review-reference.md.jinja +9 -2
  24. {mapify_cli-3.24.0 → mapify_cli-3.25.0}/src/mapify_cli/templates_src/hooks/workflow-gate.py.jinja +12 -1
  25. {mapify_cli-3.24.0 → mapify_cli-3.25.0}/src/mapify_cli/templates_src/map/scripts/classify_scope.py.jinja +29 -2
  26. {mapify_cli-3.24.0 → mapify_cli-3.25.0}/src/mapify_cli/templates_src/map/scripts/map_orchestrator.py.jinja +21 -6
  27. {mapify_cli-3.24.0 → mapify_cli-3.25.0}/src/mapify_cli/templates_src/map/scripts/map_step_runner.py.jinja +1180 -16
  28. {mapify_cli-3.24.0 → mapify_cli-3.25.0}/src/mapify_cli/templates_src/map/scripts/wayfind_runner.py.jinja +209 -15
  29. {mapify_cli-3.24.0 → mapify_cli-3.25.0}/src/mapify_cli/templates_src/settings.json.jinja +33 -3
  30. {mapify_cli-3.24.0 → mapify_cli-3.25.0}/src/mapify_cli/templates_src/skills/map-release/SKILL.md.jinja +1 -1
  31. {mapify_cli-3.24.0 → mapify_cli-3.25.0}/src/mapify_cli/templates_src/skills/map-review/SKILL.md.jinja +89 -12
  32. {mapify_cli-3.24.0 → mapify_cli-3.25.0}/src/mapify_cli/templates_src/skills/map-review/review-reference.md.jinja +118 -0
  33. {mapify_cli-3.24.0 → mapify_cli-3.25.0}/src/mapify_cli/templates_src/skills/map-wayfind/SKILL.md.jinja +5 -5
  34. {mapify_cli-3.24.0 → mapify_cli-3.25.0}/src/mapify_cli/templates_src/skills/map-wayfind/wayfind-reference.md.jinja +3 -1
  35. mapify_cli-3.25.0/tests/test_agent_memory.py +346 -0
  36. {mapify_cli-3.24.0 → mapify_cli-3.25.0}/tests/test_classify_scope_script.py +58 -0
  37. {mapify_cli-3.24.0 → mapify_cli-3.25.0}/tests/test_governance_report.py +36 -0
  38. {mapify_cli-3.24.0 → mapify_cli-3.25.0}/tests/test_map_orchestrator.py +51 -6
  39. {mapify_cli-3.24.0 → mapify_cli-3.25.0}/tests/test_map_step_runner.py +100 -0
  40. {mapify_cli-3.24.0 → mapify_cli-3.25.0}/tests/test_project_config.py +55 -0
  41. mapify_cli-3.25.0/tests/test_review_verdict_ledger.py +1251 -0
  42. mapify_cli-3.25.0/tests/test_settings_deny_globs.py +333 -0
  43. {mapify_cli-3.24.0 → mapify_cli-3.25.0}/tests/test_skills.py +57 -1
  44. {mapify_cli-3.24.0 → mapify_cli-3.25.0}/tests/test_template_render.py +40 -1
  45. {mapify_cli-3.24.0 → mapify_cli-3.25.0}/tests/test_wayfind_runner.py +226 -1
  46. {mapify_cli-3.24.0 → mapify_cli-3.25.0}/.claude/hooks/README.md +0 -0
  47. {mapify_cli-3.24.0 → mapify_cli-3.25.0}/.claude/skills/README.md +0 -0
  48. {mapify_cli-3.24.0 → mapify_cli-3.25.0}/.gitignore +0 -0
  49. {mapify_cli-3.24.0 → mapify_cli-3.25.0}/LICENSE +0 -0
  50. {mapify_cli-3.24.0 → mapify_cli-3.25.0}/README.md +0 -0
  51. {mapify_cli-3.24.0 → mapify_cli-3.25.0}/src/mapify_cli/_locking.py +0 -0
  52. {mapify_cli-3.24.0 → mapify_cli-3.25.0}/src/mapify_cli/boundary_quality_report.py +0 -0
  53. {mapify_cli-3.24.0 → mapify_cli-3.25.0}/src/mapify_cli/cli_ui.py +0 -0
  54. {mapify_cli-3.24.0 → mapify_cli-3.25.0}/src/mapify_cli/code_map.py +0 -0
  55. {mapify_cli-3.24.0 → mapify_cli-3.25.0}/src/mapify_cli/config/__init__.py +0 -0
  56. {mapify_cli-3.24.0 → mapify_cli-3.25.0}/src/mapify_cli/config/mcp.py +0 -0
  57. {mapify_cli-3.24.0 → mapify_cli-3.25.0}/src/mapify_cli/config/settings.py +0 -0
  58. {mapify_cli-3.24.0 → mapify_cli-3.25.0}/src/mapify_cli/delivery/__init__.py +0 -0
  59. {mapify_cli-3.24.0 → mapify_cli-3.25.0}/src/mapify_cli/delivery/agent_generator.py +0 -0
  60. {mapify_cli-3.24.0 → mapify_cli-3.25.0}/src/mapify_cli/delivery/codex_copier.py +0 -0
  61. {mapify_cli-3.24.0 → mapify_cli-3.25.0}/src/mapify_cli/delivery/domain_skill.py +0 -0
  62. {mapify_cli-3.24.0 → mapify_cli-3.25.0}/src/mapify_cli/delivery/managed_file_copier.py +0 -0
  63. {mapify_cli-3.24.0 → mapify_cli-3.25.0}/src/mapify_cli/delivery/providers.py +0 -0
  64. {mapify_cli-3.24.0 → mapify_cli-3.25.0}/src/mapify_cli/dependency_graph.py +0 -0
  65. {mapify_cli-3.24.0 → mapify_cli-3.25.0}/src/mapify_cli/grace_eval/__init__.py +0 -0
  66. {mapify_cli-3.24.0 → mapify_cli-3.25.0}/src/mapify_cli/grace_eval/schema.py +0 -0
  67. {mapify_cli-3.24.0 → mapify_cli-3.25.0}/src/mapify_cli/grace_eval/sweep.py +0 -0
  68. {mapify_cli-3.24.0 → mapify_cli-3.25.0}/src/mapify_cli/install_manifest.py +0 -0
  69. {mapify_cli-3.24.0 → mapify_cli-3.25.0}/src/mapify_cli/intent_detector.py +0 -0
  70. {mapify_cli-3.24.0 → mapify_cli-3.25.0}/src/mapify_cli/memory/__init__.py +0 -0
  71. {mapify_cli-3.24.0 → mapify_cli-3.25.0}/src/mapify_cli/memory/capture.py +0 -0
  72. {mapify_cli-3.24.0 → mapify_cli-3.25.0}/src/mapify_cli/memory/digest_schema.py +0 -0
  73. {mapify_cli-3.24.0 → mapify_cli-3.25.0}/src/mapify_cli/memory/finalize.py +0 -0
  74. {mapify_cli-3.24.0 → mapify_cli-3.25.0}/src/mapify_cli/memory/recall.py +0 -0
  75. {mapify_cli-3.24.0 → mapify_cli-3.25.0}/src/mapify_cli/minimality_eval.py +0 -0
  76. {mapify_cli-3.24.0 → mapify_cli-3.25.0}/src/mapify_cli/minimality_report.py +0 -0
  77. {mapify_cli-3.24.0 → mapify_cli-3.25.0}/src/mapify_cli/parallelism_observability.py +0 -0
  78. {mapify_cli-3.24.0 → mapify_cli-3.25.0}/src/mapify_cli/ralph_state.py +0 -0
  79. {mapify_cli-3.24.0 → mapify_cli-3.25.0}/src/mapify_cli/repo_insight.py +0 -0
  80. {mapify_cli-3.24.0 → mapify_cli-3.25.0}/src/mapify_cli/research_eval.py +0 -0
  81. {mapify_cli-3.24.0 → mapify_cli-3.25.0}/src/mapify_cli/research_eval_compare.py +0 -0
  82. {mapify_cli-3.24.0 → mapify_cli-3.25.0}/src/mapify_cli/scope_classifier.py +0 -0
  83. {mapify_cli-3.24.0 → mapify_cli-3.25.0}/src/mapify_cli/skill_ir.py +0 -0
  84. {mapify_cli-3.24.0 → mapify_cli-3.25.0}/src/mapify_cli/skills_eval/__init__.py +0 -0
  85. {mapify_cli-3.24.0 → mapify_cli-3.25.0}/src/mapify_cli/skills_eval/aggregator.py +0 -0
  86. {mapify_cli-3.24.0 → mapify_cli-3.25.0}/src/mapify_cli/skills_eval/apply_patcher.py +0 -0
  87. {mapify_cli-3.24.0 → mapify_cli-3.25.0}/src/mapify_cli/skills_eval/assertions.py +0 -0
  88. {mapify_cli-3.24.0 → mapify_cli-3.25.0}/src/mapify_cli/skills_eval/description_optimizer.py +0 -0
  89. {mapify_cli-3.24.0 → mapify_cli-3.25.0}/src/mapify_cli/skills_eval/dispatcher.py +0 -0
  90. {mapify_cli-3.24.0 → mapify_cli-3.25.0}/src/mapify_cli/skills_eval/eval_schema.py +0 -0
  91. {mapify_cli-3.24.0 → mapify_cli-3.25.0}/src/mapify_cli/skills_eval/proposer.py +0 -0
  92. {mapify_cli-3.24.0 → mapify_cli-3.25.0}/src/mapify_cli/skills_eval/runner.py +0 -0
  93. {mapify_cli-3.24.0 → mapify_cli-3.25.0}/src/mapify_cli/skills_eval/trajectory/__init__.py +0 -0
  94. {mapify_cli-3.24.0 → mapify_cli-3.25.0}/src/mapify_cli/skills_eval/trajectory/bundle.py +0 -0
  95. {mapify_cli-3.24.0 → mapify_cli-3.25.0}/src/mapify_cli/skills_eval/trajectory/dispatcher.py +0 -0
  96. {mapify_cli-3.24.0 → mapify_cli-3.25.0}/src/mapify_cli/skills_eval/trajectory/eval_schema.py +0 -0
  97. {mapify_cli-3.24.0 → mapify_cli-3.25.0}/src/mapify_cli/skills_eval/trajectory/gates.py +0 -0
  98. {mapify_cli-3.24.0 → mapify_cli-3.25.0}/src/mapify_cli/skills_eval/trajectory/judge.py +0 -0
  99. {mapify_cli-3.24.0 → mapify_cli-3.25.0}/src/mapify_cli/skills_eval/trajectory/repeated.py +0 -0
  100. {mapify_cli-3.24.0 → mapify_cli-3.25.0}/src/mapify_cli/skills_eval/trajectory/report.py +0 -0
  101. {mapify_cli-3.24.0 → mapify_cli-3.25.0}/src/mapify_cli/skills_eval/trajectory/runner.py +0 -0
  102. {mapify_cli-3.24.0 → mapify_cli-3.25.0}/src/mapify_cli/skills_eval/trajectory/seeding.py +0 -0
  103. {mapify_cli-3.24.0 → mapify_cli-3.25.0}/src/mapify_cli/skills_eval/viewer.py +0 -0
  104. {mapify_cli-3.24.0 → mapify_cli-3.25.0}/src/mapify_cli/templates/.gitignore +0 -0
  105. {mapify_cli-3.24.0 → mapify_cli-3.25.0}/src/mapify_cli/templates/CLAUDE.md +0 -0
  106. {mapify_cli-3.24.0 → mapify_cli-3.25.0}/src/mapify_cli/templates/agents/actor.md +0 -0
  107. {mapify_cli-3.24.0 → mapify_cli-3.25.0}/src/mapify_cli/templates/agents/documentation-reviewer.md +0 -0
  108. {mapify_cli-3.24.0 → mapify_cli-3.25.0}/src/mapify_cli/templates/agents/evaluator.md +0 -0
  109. {mapify_cli-3.24.0 → mapify_cli-3.25.0}/src/mapify_cli/templates/agents/final-verifier.md +0 -0
  110. {mapify_cli-3.24.0 → mapify_cli-3.25.0}/src/mapify_cli/templates/agents/monitor.md +0 -0
  111. {mapify_cli-3.24.0 → mapify_cli-3.25.0}/src/mapify_cli/templates/agents/predictor.md +0 -0
  112. {mapify_cli-3.24.0 → mapify_cli-3.25.0}/src/mapify_cli/templates/agents/reflector.md +0 -0
  113. {mapify_cli-3.24.0 → mapify_cli-3.25.0}/src/mapify_cli/templates/agents/research-agent.md +0 -0
  114. {mapify_cli-3.24.0 → mapify_cli-3.25.0}/src/mapify_cli/templates/agents/task-decomposer.md +0 -0
  115. {mapify_cli-3.24.0 → mapify_cli-3.25.0}/src/mapify_cli/templates/codex/AGENTS.md +0 -0
  116. {mapify_cli-3.24.0 → mapify_cli-3.25.0}/src/mapify_cli/templates/codex/agents/decomposer.toml +0 -0
  117. {mapify_cli-3.24.0 → mapify_cli-3.25.0}/src/mapify_cli/templates/codex/agents/evaluator.toml +0 -0
  118. {mapify_cli-3.24.0 → mapify_cli-3.25.0}/src/mapify_cli/templates/codex/agents/monitor.toml +0 -0
  119. {mapify_cli-3.24.0 → mapify_cli-3.25.0}/src/mapify_cli/templates/codex/agents/predictor.toml +0 -0
  120. {mapify_cli-3.24.0 → mapify_cli-3.25.0}/src/mapify_cli/templates/codex/agents/researcher.toml +0 -0
  121. {mapify_cli-3.24.0 → mapify_cli-3.25.0}/src/mapify_cli/templates/codex/config.toml +0 -0
  122. {mapify_cli-3.24.0 → mapify_cli-3.25.0}/src/mapify_cli/templates/codex/hooks.json +0 -0
  123. {mapify_cli-3.24.0 → mapify_cli-3.25.0}/src/mapify_cli/templates/codex/skills/map-check/SKILL.md +0 -0
  124. {mapify_cli-3.24.0 → mapify_cli-3.25.0}/src/mapify_cli/templates/codex/skills/map-efficient/SKILL.md +0 -0
  125. {mapify_cli-3.24.0 → mapify_cli-3.25.0}/src/mapify_cli/templates/codex/skills/map-efficient/efficient-reference.md +0 -0
  126. {mapify_cli-3.24.0 → mapify_cli-3.25.0}/src/mapify_cli/templates/codex/skills/map-explain/SKILL.md +0 -0
  127. {mapify_cli-3.24.0 → mapify_cli-3.25.0}/src/mapify_cli/templates/codex/skills/map-fast/SKILL.md +0 -0
  128. {mapify_cli-3.24.0 → mapify_cli-3.25.0}/src/mapify_cli/templates/codex/skills/map-plan/SKILL.md +0 -0
  129. {mapify_cli-3.24.0 → mapify_cli-3.25.0}/src/mapify_cli/templates/codex/skills/map-review/SKILL.md +0 -0
  130. {mapify_cli-3.24.0 → mapify_cli-3.25.0}/src/mapify_cli/templates/codex/skills/map-review/adversarial-reference.md +0 -0
  131. {mapify_cli-3.24.0 → mapify_cli-3.25.0}/src/mapify_cli/templates/codex/skills/map-understand/SKILL.md +0 -0
  132. {mapify_cli-3.24.0 → mapify_cli-3.25.0}/src/mapify_cli/templates/hooks/README.md +0 -0
  133. {mapify_cli-3.24.0 → mapify_cli-3.25.0}/src/mapify_cli/templates/hooks/context-meter.py +0 -0
  134. {mapify_cli-3.24.0 → mapify_cli-3.25.0}/src/mapify_cli/templates/hooks/detect-clarification-triggers.py +0 -0
  135. {mapify_cli-3.24.0 → mapify_cli-3.25.0}/src/mapify_cli/templates/hooks/end-of-turn.sh +0 -0
  136. {mapify_cli-3.24.0 → mapify_cli-3.25.0}/src/mapify_cli/templates/hooks/map-memory-capture.py +0 -0
  137. {mapify_cli-3.24.0 → mapify_cli-3.25.0}/src/mapify_cli/templates/hooks/map-memory-endmark.py +0 -0
  138. {mapify_cli-3.24.0 → mapify_cli-3.25.0}/src/mapify_cli/templates/hooks/map-memory-finalize.py +0 -0
  139. {mapify_cli-3.24.0 → mapify_cli-3.25.0}/src/mapify_cli/templates/hooks/map-memory-recall.py +0 -0
  140. {mapify_cli-3.24.0 → mapify_cli-3.25.0}/src/mapify_cli/templates/hooks/map-statusline.py +0 -0
  141. {mapify_cli-3.24.0 → mapify_cli-3.25.0}/src/mapify_cli/templates/hooks/map-token-meter.py +0 -0
  142. {mapify_cli-3.24.0 → mapify_cli-3.25.0}/src/mapify_cli/templates/hooks/post-compact-context.py +0 -0
  143. {mapify_cli-3.24.0 → mapify_cli-3.25.0}/src/mapify_cli/templates/hooks/pre-compact-save-transcript.py +0 -0
  144. {mapify_cli-3.24.0 → mapify_cli-3.25.0}/src/mapify_cli/templates/hooks/ralph-context-pruner.py +0 -0
  145. {mapify_cli-3.24.0 → mapify_cli-3.25.0}/src/mapify_cli/templates/hooks/ralph-iteration-logger.py +0 -0
  146. {mapify_cli-3.24.0 → mapify_cli-3.25.0}/src/mapify_cli/templates/hooks/safety-guardrails.py +0 -0
  147. {mapify_cli-3.24.0 → mapify_cli-3.25.0}/src/mapify_cli/templates/hooks/scrub-internal-ids.py +0 -0
  148. {mapify_cli-3.24.0 → mapify_cli-3.25.0}/src/mapify_cli/templates/hooks/workflow-context-injector.py +0 -0
  149. {mapify_cli-3.24.0 → mapify_cli-3.25.0}/src/mapify_cli/templates/map/scripts/diagnostics.py +0 -0
  150. {mapify_cli-3.24.0 → mapify_cli-3.25.0}/src/mapify_cli/templates/map/scripts/map_utils.py +0 -0
  151. {mapify_cli-3.24.0 → mapify_cli-3.25.0}/src/mapify_cli/templates/map/scripts/scrub_internal_ids.py +0 -0
  152. {mapify_cli-3.24.0 → mapify_cli-3.25.0}/src/mapify_cli/templates/map/scripts/sofa_client.py +0 -0
  153. {mapify_cli-3.24.0 → mapify_cli-3.25.0}/src/mapify_cli/templates/map/scripts/validate_spec_citations.py +0 -0
  154. {mapify_cli-3.24.0 → mapify_cli-3.25.0}/src/mapify_cli/templates/map/static-analysis/analyze.sh +0 -0
  155. {mapify_cli-3.24.0 → mapify_cli-3.25.0}/src/mapify_cli/templates/map/static-analysis/handlers/common.sh +0 -0
  156. {mapify_cli-3.24.0 → mapify_cli-3.25.0}/src/mapify_cli/templates/map/static-analysis/handlers/go.sh +0 -0
  157. {mapify_cli-3.24.0 → mapify_cli-3.25.0}/src/mapify_cli/templates/map/static-analysis/handlers/python.sh +0 -0
  158. {mapify_cli-3.24.0 → mapify_cli-3.25.0}/src/mapify_cli/templates/map/static-analysis/handlers/rust.sh +0 -0
  159. {mapify_cli-3.24.0 → mapify_cli-3.25.0}/src/mapify_cli/templates/map/static-analysis/handlers/typescript.sh +0 -0
  160. {mapify_cli-3.24.0 → mapify_cli-3.25.0}/src/mapify_cli/templates/ralph-loop-config.json +0 -0
  161. {mapify_cli-3.24.0 → mapify_cli-3.25.0}/src/mapify_cli/templates/references/bash-guidelines.md +0 -0
  162. {mapify_cli-3.24.0 → mapify_cli-3.25.0}/src/mapify_cli/templates/references/decomposition-examples.md +0 -0
  163. {mapify_cli-3.24.0 → mapify_cli-3.25.0}/src/mapify_cli/templates/references/escalation-matrix.md +0 -0
  164. {mapify_cli-3.24.0 → mapify_cli-3.25.0}/src/mapify_cli/templates/references/hook-patterns.md +0 -0
  165. {mapify_cli-3.24.0 → mapify_cli-3.25.0}/src/mapify_cli/templates/references/host-paths.md +0 -0
  166. {mapify_cli-3.24.0 → mapify_cli-3.25.0}/src/mapify_cli/templates/references/map-json-output-contracts.md +0 -0
  167. {mapify_cli-3.24.0 → mapify_cli-3.25.0}/src/mapify_cli/templates/references/map-output-examples.md +0 -0
  168. {mapify_cli-3.24.0 → mapify_cli-3.25.0}/src/mapify_cli/templates/references/map-xml-prompt-envelopes.md +0 -0
  169. {mapify_cli-3.24.0 → mapify_cli-3.25.0}/src/mapify_cli/templates/references/mcp-usage-examples.md +0 -0
  170. {mapify_cli-3.24.0 → mapify_cli-3.25.0}/src/mapify_cli/templates/references/step-state-schema.md +0 -0
  171. {mapify_cli-3.24.0 → mapify_cli-3.25.0}/src/mapify_cli/templates/references/workflow-state-schema.md +0 -0
  172. {mapify_cli-3.24.0 → mapify_cli-3.25.0}/src/mapify_cli/templates/rules/learned/README.md +0 -0
  173. {mapify_cli-3.24.0 → mapify_cli-3.25.0}/src/mapify_cli/templates/skills/README.md +0 -0
  174. {mapify_cli-3.24.0 → mapify_cli-3.25.0}/src/mapify_cli/templates/skills/map-architecture/SKILL.md +0 -0
  175. {mapify_cli-3.24.0 → mapify_cli-3.25.0}/src/mapify_cli/templates/skills/map-check/SKILL.md +0 -0
  176. {mapify_cli-3.24.0 → mapify_cli-3.25.0}/src/mapify_cli/templates/skills/map-check/check-reference.md +0 -0
  177. {mapify_cli-3.24.0 → mapify_cli-3.25.0}/src/mapify_cli/templates/skills/map-debug/SKILL.md +0 -0
  178. {mapify_cli-3.24.0 → mapify_cli-3.25.0}/src/mapify_cli/templates/skills/map-efficient/SKILL.md +0 -0
  179. {mapify_cli-3.24.0 → mapify_cli-3.25.0}/src/mapify_cli/templates/skills/map-efficient/efficient-reference.md +0 -0
  180. {mapify_cli-3.24.0 → mapify_cli-3.25.0}/src/mapify_cli/templates/skills/map-explain/SKILL.md +0 -0
  181. {mapify_cli-3.24.0 → mapify_cli-3.25.0}/src/mapify_cli/templates/skills/map-fast/SKILL.md +0 -0
  182. {mapify_cli-3.24.0 → mapify_cli-3.25.0}/src/mapify_cli/templates/skills/map-learn/SKILL.md +0 -0
  183. {mapify_cli-3.24.0 → mapify_cli-3.25.0}/src/mapify_cli/templates/skills/map-learn/templates/example-rules.md +0 -0
  184. {mapify_cli-3.24.0 → mapify_cli-3.25.0}/src/mapify_cli/templates/skills/map-learn/templates/rules-unconditional.md +0 -0
  185. {mapify_cli-3.24.0 → mapify_cli-3.25.0}/src/mapify_cli/templates/skills/map-learn/templates/rules-with-paths.md +0 -0
  186. {mapify_cli-3.24.0 → mapify_cli-3.25.0}/src/mapify_cli/templates/skills/map-memory-now/SKILL.md +0 -0
  187. {mapify_cli-3.24.0 → mapify_cli-3.25.0}/src/mapify_cli/templates/skills/map-plan/SKILL.md +0 -0
  188. {mapify_cli-3.24.0 → mapify_cli-3.25.0}/src/mapify_cli/templates/skills/map-plan/plan-reference.md +0 -0
  189. {mapify_cli-3.24.0 → mapify_cli-3.25.0}/src/mapify_cli/templates/skills/map-resume/SKILL.md +0 -0
  190. {mapify_cli-3.24.0 → mapify_cli-3.25.0}/src/mapify_cli/templates/skills/map-resume/resume-reference.md +0 -0
  191. {mapify_cli-3.24.0 → mapify_cli-3.25.0}/src/mapify_cli/templates/skills/map-review/adversarial-reference.md +0 -0
  192. {mapify_cli-3.24.0 → mapify_cli-3.25.0}/src/mapify_cli/templates/skills/map-skill-eval/SKILL.md +0 -0
  193. {mapify_cli-3.24.0 → mapify_cli-3.25.0}/src/mapify_cli/templates/skills/map-so-search/SKILL.md +0 -0
  194. {mapify_cli-3.24.0 → mapify_cli-3.25.0}/src/mapify_cli/templates/skills/map-so-search/scripts/sofa_search.py +0 -0
  195. {mapify_cli-3.24.0 → mapify_cli-3.25.0}/src/mapify_cli/templates/skills/map-state/SKILL.md +0 -0
  196. {mapify_cli-3.24.0 → mapify_cli-3.25.0}/src/mapify_cli/templates/skills/map-state/scripts/check-complete.sh +0 -0
  197. {mapify_cli-3.24.0 → mapify_cli-3.25.0}/src/mapify_cli/templates/skills/map-state/scripts/get-plan-path.sh +0 -0
  198. {mapify_cli-3.24.0 → mapify_cli-3.25.0}/src/mapify_cli/templates/skills/map-state/scripts/init-session.sh +0 -0
  199. {mapify_cli-3.24.0 → mapify_cli-3.25.0}/src/mapify_cli/templates/skills/map-state/scripts/show-focus.sh +0 -0
  200. {mapify_cli-3.24.0 → mapify_cli-3.25.0}/src/mapify_cli/templates/skills/map-state/templates/findings.md +0 -0
  201. {mapify_cli-3.24.0 → mapify_cli-3.25.0}/src/mapify_cli/templates/skills/map-state/templates/iteration_history.md +0 -0
  202. {mapify_cli-3.24.0 → mapify_cli-3.25.0}/src/mapify_cli/templates/skills/map-state/templates/progress.md +0 -0
  203. {mapify_cli-3.24.0 → mapify_cli-3.25.0}/src/mapify_cli/templates/skills/map-state/templates/task_plan.md +0 -0
  204. {mapify_cli-3.24.0 → mapify_cli-3.25.0}/src/mapify_cli/templates/skills/map-task/SKILL.md +0 -0
  205. {mapify_cli-3.24.0 → mapify_cli-3.25.0}/src/mapify_cli/templates/skills/map-tdd/SKILL.md +0 -0
  206. {mapify_cli-3.24.0 → mapify_cli-3.25.0}/src/mapify_cli/templates/skills/map-tokenreport/SKILL.md +0 -0
  207. {mapify_cli-3.24.0 → mapify_cli-3.25.0}/src/mapify_cli/templates/skills/map-understand/SKILL.md +0 -0
  208. {mapify_cli-3.24.0 → mapify_cli-3.25.0}/src/mapify_cli/templates/skills/skill-rules.json +0 -0
  209. {mapify_cli-3.24.0 → mapify_cli-3.25.0}/src/mapify_cli/templates/workflow-rules.json +0 -0
  210. {mapify_cli-3.24.0 → mapify_cli-3.25.0}/src/mapify_cli/templates_src/.gitignore.jinja +0 -0
  211. {mapify_cli-3.24.0 → mapify_cli-3.25.0}/src/mapify_cli/templates_src/CLAUDE.md.jinja +0 -0
  212. {mapify_cli-3.24.0 → mapify_cli-3.25.0}/src/mapify_cli/templates_src/agents/actor.md.jinja +0 -0
  213. {mapify_cli-3.24.0 → mapify_cli-3.25.0}/src/mapify_cli/templates_src/agents/documentation-reviewer.md.jinja +0 -0
  214. {mapify_cli-3.24.0 → mapify_cli-3.25.0}/src/mapify_cli/templates_src/agents/evaluator.md.jinja +0 -0
  215. {mapify_cli-3.24.0 → mapify_cli-3.25.0}/src/mapify_cli/templates_src/agents/final-verifier.md.jinja +0 -0
  216. {mapify_cli-3.24.0 → mapify_cli-3.25.0}/src/mapify_cli/templates_src/agents/monitor.md.jinja +0 -0
  217. {mapify_cli-3.24.0 → mapify_cli-3.25.0}/src/mapify_cli/templates_src/agents/predictor.md.jinja +0 -0
  218. {mapify_cli-3.24.0 → mapify_cli-3.25.0}/src/mapify_cli/templates_src/agents/reflector.md.jinja +0 -0
  219. {mapify_cli-3.24.0 → mapify_cli-3.25.0}/src/mapify_cli/templates_src/agents/research-agent.md.jinja +0 -0
  220. {mapify_cli-3.24.0 → mapify_cli-3.25.0}/src/mapify_cli/templates_src/agents/task-decomposer.md.jinja +0 -0
  221. {mapify_cli-3.24.0 → mapify_cli-3.25.0}/src/mapify_cli/templates_src/codex/AGENTS.md.jinja +0 -0
  222. {mapify_cli-3.24.0 → mapify_cli-3.25.0}/src/mapify_cli/templates_src/codex/agents/decomposer.toml.jinja +0 -0
  223. {mapify_cli-3.24.0 → mapify_cli-3.25.0}/src/mapify_cli/templates_src/codex/agents/evaluator.toml.jinja +0 -0
  224. {mapify_cli-3.24.0 → mapify_cli-3.25.0}/src/mapify_cli/templates_src/codex/agents/monitor.toml.jinja +0 -0
  225. {mapify_cli-3.24.0 → mapify_cli-3.25.0}/src/mapify_cli/templates_src/codex/agents/predictor.toml.jinja +0 -0
  226. {mapify_cli-3.24.0 → mapify_cli-3.25.0}/src/mapify_cli/templates_src/codex/agents/researcher.toml.jinja +0 -0
  227. {mapify_cli-3.24.0 → mapify_cli-3.25.0}/src/mapify_cli/templates_src/codex/config.toml.jinja +0 -0
  228. {mapify_cli-3.24.0 → mapify_cli-3.25.0}/src/mapify_cli/templates_src/codex/hooks.json.jinja +0 -0
  229. {mapify_cli-3.24.0 → mapify_cli-3.25.0}/src/mapify_cli/templates_src/codex/skills/map-check/SKILL.md.jinja +0 -0
  230. {mapify_cli-3.24.0 → mapify_cli-3.25.0}/src/mapify_cli/templates_src/codex/skills/map-efficient/SKILL.md.jinja +0 -0
  231. {mapify_cli-3.24.0 → mapify_cli-3.25.0}/src/mapify_cli/templates_src/codex/skills/map-efficient/efficient-reference.md.jinja +0 -0
  232. {mapify_cli-3.24.0 → mapify_cli-3.25.0}/src/mapify_cli/templates_src/codex/skills/map-explain/SKILL.md.jinja +0 -0
  233. {mapify_cli-3.24.0 → mapify_cli-3.25.0}/src/mapify_cli/templates_src/codex/skills/map-fast/SKILL.md.jinja +0 -0
  234. {mapify_cli-3.24.0 → mapify_cli-3.25.0}/src/mapify_cli/templates_src/codex/skills/map-plan/SKILL.md.jinja +0 -0
  235. {mapify_cli-3.24.0 → mapify_cli-3.25.0}/src/mapify_cli/templates_src/codex/skills/map-review/SKILL.md.jinja +0 -0
  236. {mapify_cli-3.24.0 → mapify_cli-3.25.0}/src/mapify_cli/templates_src/codex/skills/map-review/adversarial-reference.md.jinja +0 -0
  237. {mapify_cli-3.24.0 → mapify_cli-3.25.0}/src/mapify_cli/templates_src/codex/skills/map-understand/SKILL.md.jinja +0 -0
  238. {mapify_cli-3.24.0 → mapify_cli-3.25.0}/src/mapify_cli/templates_src/hooks/README.md.jinja +0 -0
  239. {mapify_cli-3.24.0 → mapify_cli-3.25.0}/src/mapify_cli/templates_src/hooks/context-meter.py.jinja +0 -0
  240. {mapify_cli-3.24.0 → mapify_cli-3.25.0}/src/mapify_cli/templates_src/hooks/detect-clarification-triggers.py.jinja +0 -0
  241. {mapify_cli-3.24.0 → mapify_cli-3.25.0}/src/mapify_cli/templates_src/hooks/end-of-turn.sh.jinja +0 -0
  242. {mapify_cli-3.24.0 → mapify_cli-3.25.0}/src/mapify_cli/templates_src/hooks/map-memory-capture.py.jinja +0 -0
  243. {mapify_cli-3.24.0 → mapify_cli-3.25.0}/src/mapify_cli/templates_src/hooks/map-memory-endmark.py.jinja +0 -0
  244. {mapify_cli-3.24.0 → mapify_cli-3.25.0}/src/mapify_cli/templates_src/hooks/map-memory-finalize.py.jinja +0 -0
  245. {mapify_cli-3.24.0 → mapify_cli-3.25.0}/src/mapify_cli/templates_src/hooks/map-memory-recall.py.jinja +0 -0
  246. {mapify_cli-3.24.0 → mapify_cli-3.25.0}/src/mapify_cli/templates_src/hooks/map-statusline.py.jinja +0 -0
  247. {mapify_cli-3.24.0 → mapify_cli-3.25.0}/src/mapify_cli/templates_src/hooks/map-token-meter.py.jinja +0 -0
  248. {mapify_cli-3.24.0 → mapify_cli-3.25.0}/src/mapify_cli/templates_src/hooks/post-compact-context.py.jinja +0 -0
  249. {mapify_cli-3.24.0 → mapify_cli-3.25.0}/src/mapify_cli/templates_src/hooks/pre-compact-save-transcript.py.jinja +0 -0
  250. {mapify_cli-3.24.0 → mapify_cli-3.25.0}/src/mapify_cli/templates_src/hooks/ralph-context-pruner.py.jinja +0 -0
  251. {mapify_cli-3.24.0 → mapify_cli-3.25.0}/src/mapify_cli/templates_src/hooks/ralph-iteration-logger.py.jinja +0 -0
  252. {mapify_cli-3.24.0 → mapify_cli-3.25.0}/src/mapify_cli/templates_src/hooks/safety-guardrails.py.jinja +0 -0
  253. {mapify_cli-3.24.0 → mapify_cli-3.25.0}/src/mapify_cli/templates_src/hooks/scrub-internal-ids.py.jinja +0 -0
  254. {mapify_cli-3.24.0 → mapify_cli-3.25.0}/src/mapify_cli/templates_src/hooks/workflow-context-injector.py.jinja +0 -0
  255. {mapify_cli-3.24.0 → mapify_cli-3.25.0}/src/mapify_cli/templates_src/map/scripts/diagnostics.py.jinja +0 -0
  256. {mapify_cli-3.24.0 → mapify_cli-3.25.0}/src/mapify_cli/templates_src/map/scripts/map_utils.py.jinja +0 -0
  257. {mapify_cli-3.24.0 → mapify_cli-3.25.0}/src/mapify_cli/templates_src/map/scripts/scrub_internal_ids.py.jinja +0 -0
  258. {mapify_cli-3.24.0 → mapify_cli-3.25.0}/src/mapify_cli/templates_src/map/scripts/sofa_client.py.jinja +0 -0
  259. {mapify_cli-3.24.0 → mapify_cli-3.25.0}/src/mapify_cli/templates_src/map/scripts/validate_spec_citations.py.jinja +0 -0
  260. {mapify_cli-3.24.0 → mapify_cli-3.25.0}/src/mapify_cli/templates_src/map/static-analysis/analyze.sh.jinja +0 -0
  261. {mapify_cli-3.24.0 → mapify_cli-3.25.0}/src/mapify_cli/templates_src/map/static-analysis/handlers/common.sh.jinja +0 -0
  262. {mapify_cli-3.24.0 → mapify_cli-3.25.0}/src/mapify_cli/templates_src/map/static-analysis/handlers/go.sh.jinja +0 -0
  263. {mapify_cli-3.24.0 → mapify_cli-3.25.0}/src/mapify_cli/templates_src/map/static-analysis/handlers/python.sh.jinja +0 -0
  264. {mapify_cli-3.24.0 → mapify_cli-3.25.0}/src/mapify_cli/templates_src/map/static-analysis/handlers/rust.sh.jinja +0 -0
  265. {mapify_cli-3.24.0 → mapify_cli-3.25.0}/src/mapify_cli/templates_src/map/static-analysis/handlers/typescript.sh.jinja +0 -0
  266. {mapify_cli-3.24.0 → mapify_cli-3.25.0}/src/mapify_cli/templates_src/ralph-loop-config.json.jinja +0 -0
  267. {mapify_cli-3.24.0 → mapify_cli-3.25.0}/src/mapify_cli/templates_src/references/bash-guidelines.md.jinja +0 -0
  268. {mapify_cli-3.24.0 → mapify_cli-3.25.0}/src/mapify_cli/templates_src/references/decomposition-examples.md.jinja +0 -0
  269. {mapify_cli-3.24.0 → mapify_cli-3.25.0}/src/mapify_cli/templates_src/references/escalation-matrix.md.jinja +0 -0
  270. {mapify_cli-3.24.0 → mapify_cli-3.25.0}/src/mapify_cli/templates_src/references/hook-patterns.md.jinja +0 -0
  271. {mapify_cli-3.24.0 → mapify_cli-3.25.0}/src/mapify_cli/templates_src/references/host-paths.md.jinja +0 -0
  272. {mapify_cli-3.24.0 → mapify_cli-3.25.0}/src/mapify_cli/templates_src/references/map-json-output-contracts.md.jinja +0 -0
  273. {mapify_cli-3.24.0 → mapify_cli-3.25.0}/src/mapify_cli/templates_src/references/map-output-examples.md.jinja +0 -0
  274. {mapify_cli-3.24.0 → mapify_cli-3.25.0}/src/mapify_cli/templates_src/references/map-xml-prompt-envelopes.md.jinja +0 -0
  275. {mapify_cli-3.24.0 → mapify_cli-3.25.0}/src/mapify_cli/templates_src/references/mcp-usage-examples.md.jinja +0 -0
  276. {mapify_cli-3.24.0 → mapify_cli-3.25.0}/src/mapify_cli/templates_src/references/step-state-schema.md.jinja +0 -0
  277. {mapify_cli-3.24.0 → mapify_cli-3.25.0}/src/mapify_cli/templates_src/references/workflow-state-schema.md.jinja +0 -0
  278. {mapify_cli-3.24.0 → mapify_cli-3.25.0}/src/mapify_cli/templates_src/rules/learned/README.md.jinja +0 -0
  279. {mapify_cli-3.24.0 → mapify_cli-3.25.0}/src/mapify_cli/templates_src/skills/README.md.jinja +0 -0
  280. {mapify_cli-3.24.0 → mapify_cli-3.25.0}/src/mapify_cli/templates_src/skills/map-architecture/SKILL.md.jinja +0 -0
  281. {mapify_cli-3.24.0 → mapify_cli-3.25.0}/src/mapify_cli/templates_src/skills/map-check/SKILL.md.jinja +0 -0
  282. {mapify_cli-3.24.0 → mapify_cli-3.25.0}/src/mapify_cli/templates_src/skills/map-check/check-reference.md.jinja +0 -0
  283. {mapify_cli-3.24.0 → mapify_cli-3.25.0}/src/mapify_cli/templates_src/skills/map-debug/SKILL.md.jinja +0 -0
  284. {mapify_cli-3.24.0 → mapify_cli-3.25.0}/src/mapify_cli/templates_src/skills/map-efficient/SKILL.md.jinja +0 -0
  285. {mapify_cli-3.24.0 → mapify_cli-3.25.0}/src/mapify_cli/templates_src/skills/map-efficient/efficient-reference.md.jinja +0 -0
  286. {mapify_cli-3.24.0 → mapify_cli-3.25.0}/src/mapify_cli/templates_src/skills/map-explain/SKILL.md.jinja +0 -0
  287. {mapify_cli-3.24.0 → mapify_cli-3.25.0}/src/mapify_cli/templates_src/skills/map-fast/SKILL.md.jinja +0 -0
  288. {mapify_cli-3.24.0 → mapify_cli-3.25.0}/src/mapify_cli/templates_src/skills/map-learn/SKILL.md.jinja +0 -0
  289. {mapify_cli-3.24.0 → mapify_cli-3.25.0}/src/mapify_cli/templates_src/skills/map-learn/templates/example-rules.md.jinja +0 -0
  290. {mapify_cli-3.24.0 → mapify_cli-3.25.0}/src/mapify_cli/templates_src/skills/map-learn/templates/rules-unconditional.md.jinja +0 -0
  291. {mapify_cli-3.24.0 → mapify_cli-3.25.0}/src/mapify_cli/templates_src/skills/map-learn/templates/rules-with-paths.md.jinja +0 -0
  292. {mapify_cli-3.24.0 → mapify_cli-3.25.0}/src/mapify_cli/templates_src/skills/map-memory-now/SKILL.md.jinja +0 -0
  293. {mapify_cli-3.24.0 → mapify_cli-3.25.0}/src/mapify_cli/templates_src/skills/map-plan/SKILL.md.jinja +0 -0
  294. {mapify_cli-3.24.0 → mapify_cli-3.25.0}/src/mapify_cli/templates_src/skills/map-plan/plan-reference.md.jinja +0 -0
  295. {mapify_cli-3.24.0 → mapify_cli-3.25.0}/src/mapify_cli/templates_src/skills/map-resume/SKILL.md.jinja +0 -0
  296. {mapify_cli-3.24.0 → mapify_cli-3.25.0}/src/mapify_cli/templates_src/skills/map-resume/resume-reference.md.jinja +0 -0
  297. {mapify_cli-3.24.0 → mapify_cli-3.25.0}/src/mapify_cli/templates_src/skills/map-review/adversarial-reference.md.jinja +0 -0
  298. {mapify_cli-3.24.0 → mapify_cli-3.25.0}/src/mapify_cli/templates_src/skills/map-skill-eval/SKILL.md.jinja +0 -0
  299. {mapify_cli-3.24.0 → mapify_cli-3.25.0}/src/mapify_cli/templates_src/skills/map-so-search/SKILL.md.jinja +0 -0
  300. {mapify_cli-3.24.0 → mapify_cli-3.25.0}/src/mapify_cli/templates_src/skills/map-so-search/scripts/sofa_search.py.jinja +0 -0
  301. {mapify_cli-3.24.0 → mapify_cli-3.25.0}/src/mapify_cli/templates_src/skills/map-state/SKILL.md.jinja +0 -0
  302. {mapify_cli-3.24.0 → mapify_cli-3.25.0}/src/mapify_cli/templates_src/skills/map-state/scripts/check-complete.sh.jinja +0 -0
  303. {mapify_cli-3.24.0 → mapify_cli-3.25.0}/src/mapify_cli/templates_src/skills/map-state/scripts/get-plan-path.sh.jinja +0 -0
  304. {mapify_cli-3.24.0 → mapify_cli-3.25.0}/src/mapify_cli/templates_src/skills/map-state/scripts/init-session.sh.jinja +0 -0
  305. {mapify_cli-3.24.0 → mapify_cli-3.25.0}/src/mapify_cli/templates_src/skills/map-state/scripts/show-focus.sh.jinja +0 -0
  306. {mapify_cli-3.24.0 → mapify_cli-3.25.0}/src/mapify_cli/templates_src/skills/map-state/templates/findings.md.jinja +0 -0
  307. {mapify_cli-3.24.0 → mapify_cli-3.25.0}/src/mapify_cli/templates_src/skills/map-state/templates/iteration_history.md.jinja +0 -0
  308. {mapify_cli-3.24.0 → mapify_cli-3.25.0}/src/mapify_cli/templates_src/skills/map-state/templates/progress.md.jinja +0 -0
  309. {mapify_cli-3.24.0 → mapify_cli-3.25.0}/src/mapify_cli/templates_src/skills/map-state/templates/task_plan.md.jinja +0 -0
  310. {mapify_cli-3.24.0 → mapify_cli-3.25.0}/src/mapify_cli/templates_src/skills/map-task/SKILL.md.jinja +0 -0
  311. {mapify_cli-3.24.0 → mapify_cli-3.25.0}/src/mapify_cli/templates_src/skills/map-tdd/SKILL.md.jinja +0 -0
  312. {mapify_cli-3.24.0 → mapify_cli-3.25.0}/src/mapify_cli/templates_src/skills/map-tokenreport/SKILL.md.jinja +0 -0
  313. {mapify_cli-3.24.0 → mapify_cli-3.25.0}/src/mapify_cli/templates_src/skills/map-understand/SKILL.md.jinja +0 -0
  314. {mapify_cli-3.24.0 → mapify_cli-3.25.0}/src/mapify_cli/templates_src/skills/skill-rules.json.jinja +0 -0
  315. {mapify_cli-3.24.0 → mapify_cli-3.25.0}/src/mapify_cli/templates_src/workflow-rules.json.jinja +0 -0
  316. {mapify_cli-3.24.0 → mapify_cli-3.25.0}/src/mapify_cli/token_budget.py +0 -0
  317. {mapify_cli-3.24.0 → mapify_cli-3.25.0}/src/mapify_cli/tool_output_offload.py +0 -0
  318. {mapify_cli-3.24.0 → mapify_cli-3.25.0}/src/mapify_cli/tools/__init__.py +0 -0
  319. {mapify_cli-3.24.0 → mapify_cli-3.25.0}/src/mapify_cli/tools/validate_dependencies.py +0 -0
  320. {mapify_cli-3.24.0 → mapify_cli-3.25.0}/src/mapify_cli/verification_recorder.py +0 -0
  321. {mapify_cli-3.24.0 → mapify_cli-3.25.0}/src/mapify_cli/workflow_finalizer.py +0 -0
  322. {mapify_cli-3.24.0 → mapify_cli-3.25.0}/src/mapify_cli/workflow_logger.py +0 -0
  323. {mapify_cli-3.24.0 → mapify_cli-3.25.0}/src/mapify_cli/workflow_state.py +0 -0
  324. {mapify_cli-3.24.0 → mapify_cli-3.25.0}/tests/__init__.py +0 -0
  325. {mapify_cli-3.24.0 → mapify_cli-3.25.0}/tests/_fake_task_tool.py +0 -0
  326. {mapify_cli-3.24.0 → mapify_cli-3.25.0}/tests/conftest.py +0 -0
  327. {mapify_cli-3.24.0 → mapify_cli-3.25.0}/tests/fixtures/claude/escalation-matrix.md +0 -0
  328. {mapify_cli-3.24.0 → mapify_cli-3.25.0}/tests/fixtures/codex/config.toml +0 -0
  329. {mapify_cli-3.24.0 → mapify_cli-3.25.0}/tests/fixtures/wave_blueprints.py +0 -0
  330. {mapify_cli-3.24.0 → mapify_cli-3.25.0}/tests/hooks/test_detect_clarification_triggers.py +0 -0
  331. {mapify_cli-3.24.0 → mapify_cli-3.25.0}/tests/hooks/test_end_of_turn.py +0 -0
  332. {mapify_cli-3.24.0 → mapify_cli-3.25.0}/tests/hooks/test_hook_inventory_smoke.py +0 -0
  333. {mapify_cli-3.24.0 → mapify_cli-3.25.0}/tests/hooks/test_safety_guardrails.py +0 -0
  334. {mapify_cli-3.24.0 → mapify_cli-3.25.0}/tests/hooks/test_scrub_internal_ids_hook.py +0 -0
  335. {mapify_cli-3.24.0 → mapify_cli-3.25.0}/tests/integration/__init__.py +0 -0
  336. {mapify_cli-3.24.0 → mapify_cli-3.25.0}/tests/integration/fixtures/blueprint.json +0 -0
  337. {mapify_cli-3.24.0 → mapify_cli-3.25.0}/tests/integration/fixtures/code_review.md +0 -0
  338. {mapify_cli-3.24.0 → mapify_cli-3.25.0}/tests/integration/fixtures/plan_handoff.json +0 -0
  339. {mapify_cli-3.24.0 → mapify_cli-3.25.0}/tests/integration/fixtures/spec.md +0 -0
  340. {mapify_cli-3.24.0 → mapify_cli-3.25.0}/tests/integration/fixtures/step_state_initialized.json +0 -0
  341. {mapify_cli-3.24.0 → mapify_cli-3.25.0}/tests/integration/fixtures/step_state_plan_complete.json +0 -0
  342. {mapify_cli-3.24.0 → mapify_cli-3.25.0}/tests/integration/fixtures/task_plan.md +0 -0
  343. {mapify_cli-3.24.0 → mapify_cli-3.25.0}/tests/integration/fixtures/verification_summary.md +0 -0
  344. {mapify_cli-3.24.0 → mapify_cli-3.25.0}/tests/integration/test_e2e_artifact_contracts.py +0 -0
  345. {mapify_cli-3.24.0 → mapify_cli-3.25.0}/tests/integration/test_e2e_claude_sdk.py +0 -0
  346. {mapify_cli-3.24.0 → mapify_cli-3.25.0}/tests/skills_eval/fixtures/README.md +0 -0
  347. {mapify_cli-3.24.0 → mapify_cli-3.25.0}/tests/skills_eval/fixtures/map_check_optimize_eval_set.json +0 -0
  348. {mapify_cli-3.24.0 → mapify_cli-3.25.0}/tests/skills_eval/fixtures/map_debug_eval_set.json +0 -0
  349. {mapify_cli-3.24.0 → mapify_cli-3.25.0}/tests/skills_eval/fixtures/map_debug_optimize_eval_set.json +0 -0
  350. {mapify_cli-3.24.0 → mapify_cli-3.25.0}/tests/skills_eval/fixtures/map_efficient_optimize_eval_set.json +0 -0
  351. {mapify_cli-3.24.0 → mapify_cli-3.25.0}/tests/skills_eval/fixtures/map_explain_optimize_eval_set.json +0 -0
  352. {mapify_cli-3.24.0 → mapify_cli-3.25.0}/tests/skills_eval/fixtures/map_fast_optimize_eval_set.json +0 -0
  353. {mapify_cli-3.24.0 → mapify_cli-3.25.0}/tests/skills_eval/fixtures/map_learn_optimize_eval_set.json +0 -0
  354. {mapify_cli-3.24.0 → mapify_cli-3.25.0}/tests/skills_eval/fixtures/map_memory_now_optimize_eval_set.json +0 -0
  355. {mapify_cli-3.24.0 → mapify_cli-3.25.0}/tests/skills_eval/fixtures/map_plan_optimize_eval_set.json +0 -0
  356. {mapify_cli-3.24.0 → mapify_cli-3.25.0}/tests/skills_eval/fixtures/map_release_optimize_eval_set.json +0 -0
  357. {mapify_cli-3.24.0 → mapify_cli-3.25.0}/tests/skills_eval/fixtures/map_resume_optimize_eval_set.json +0 -0
  358. {mapify_cli-3.24.0 → mapify_cli-3.25.0}/tests/skills_eval/fixtures/map_review_optimize_eval_set.json +0 -0
  359. {mapify_cli-3.24.0 → mapify_cli-3.25.0}/tests/skills_eval/fixtures/map_skill_eval_optimize_eval_set.json +0 -0
  360. {mapify_cli-3.24.0 → mapify_cli-3.25.0}/tests/skills_eval/fixtures/map_state_optimize_eval_set.json +0 -0
  361. {mapify_cli-3.24.0 → mapify_cli-3.25.0}/tests/skills_eval/fixtures/map_task_optimize_eval_set.json +0 -0
  362. {mapify_cli-3.24.0 → mapify_cli-3.25.0}/tests/skills_eval/fixtures/map_tdd_optimize_eval_set.json +0 -0
  363. {mapify_cli-3.24.0 → mapify_cli-3.25.0}/tests/skills_eval/fixtures/map_tokenreport_optimize_eval_set.json +0 -0
  364. {mapify_cli-3.24.0 → mapify_cli-3.25.0}/tests/skills_eval/fixtures/whole_skill/map_task_blocker/manifest.json +0 -0
  365. {mapify_cli-3.24.0 → mapify_cli-3.25.0}/tests/skills_eval/fixtures/whole_skill/map_task_blocker/repo/.map/main/blueprint.json +0 -0
  366. {mapify_cli-3.24.0 → mapify_cli-3.25.0}/tests/skills_eval/fixtures/whole_skill/map_task_blocker/repo/.map/main/task_plan_main.md +0 -0
  367. {mapify_cli-3.24.0 → mapify_cli-3.25.0}/tests/skills_eval/fixtures/whole_skill/map_task_blocker/repo/src/__init__.py +0 -0
  368. {mapify_cli-3.24.0 → mapify_cli-3.25.0}/tests/skills_eval/fixtures/whole_skill/map_task_blocker/repo/src/utils.py +0 -0
  369. {mapify_cli-3.24.0 → mapify_cli-3.25.0}/tests/skills_eval/fixtures/whole_skill/map_task_blocker/repo/tests/test_compute.py +0 -0
  370. {mapify_cli-3.24.0 → mapify_cli-3.25.0}/tests/skills_eval/fixtures/whole_skill/map_task_calc/hidden/test_calc_full.py +0 -0
  371. {mapify_cli-3.24.0 → mapify_cli-3.25.0}/tests/skills_eval/fixtures/whole_skill/map_task_calc/manifest.json +0 -0
  372. {mapify_cli-3.24.0 → mapify_cli-3.25.0}/tests/skills_eval/fixtures/whole_skill/map_task_calc/repo/.map/main/blueprint.json +0 -0
  373. {mapify_cli-3.24.0 → mapify_cli-3.25.0}/tests/skills_eval/fixtures/whole_skill/map_task_calc/repo/.map/main/task_plan_main.md +0 -0
  374. {mapify_cli-3.24.0 → mapify_cli-3.25.0}/tests/skills_eval/fixtures/whole_skill/map_task_calc/repo/src/__init__.py +0 -0
  375. {mapify_cli-3.24.0 → mapify_cli-3.25.0}/tests/skills_eval/fixtures/whole_skill/map_task_calc/repo/src/calc.py +0 -0
  376. {mapify_cli-3.24.0 → mapify_cli-3.25.0}/tests/skills_eval/fixtures/whole_skill/map_task_calc/repo/tests/test_calc_basic.py +0 -0
  377. {mapify_cli-3.24.0 → mapify_cli-3.25.0}/tests/skills_eval/fixtures/whole_skill/map_task_calc_vague/hidden/test_calc_full.py +0 -0
  378. {mapify_cli-3.24.0 → mapify_cli-3.25.0}/tests/skills_eval/fixtures/whole_skill/map_task_calc_vague/manifest.json +0 -0
  379. {mapify_cli-3.24.0 → mapify_cli-3.25.0}/tests/skills_eval/fixtures/whole_skill/map_task_calc_vague/repo/.map/main/blueprint.json +0 -0
  380. {mapify_cli-3.24.0 → mapify_cli-3.25.0}/tests/skills_eval/fixtures/whole_skill/map_task_calc_vague/repo/.map/main/task_plan_main.md +0 -0
  381. {mapify_cli-3.24.0 → mapify_cli-3.25.0}/tests/skills_eval/fixtures/whole_skill/map_task_calc_vague/repo/src/__init__.py +0 -0
  382. {mapify_cli-3.24.0 → mapify_cli-3.25.0}/tests/skills_eval/fixtures/whole_skill/map_task_calc_vague/repo/src/calc.py +0 -0
  383. {mapify_cli-3.24.0 → mapify_cli-3.25.0}/tests/skills_eval/fixtures/whole_skill/map_task_calc_vague/repo/tests/test_calc_basic.py +0 -0
  384. {mapify_cli-3.24.0 → mapify_cli-3.25.0}/tests/skills_eval/fixtures/whole_skill/map_task_false_success/hidden/test_kvparse_full.py +0 -0
  385. {mapify_cli-3.24.0 → mapify_cli-3.25.0}/tests/skills_eval/fixtures/whole_skill/map_task_false_success/manifest.json +0 -0
  386. {mapify_cli-3.24.0 → mapify_cli-3.25.0}/tests/skills_eval/fixtures/whole_skill/map_task_false_success/repo/.map/main/blueprint.json +0 -0
  387. {mapify_cli-3.24.0 → mapify_cli-3.25.0}/tests/skills_eval/fixtures/whole_skill/map_task_false_success/repo/.map/main/task_plan_main.md +0 -0
  388. {mapify_cli-3.24.0 → mapify_cli-3.25.0}/tests/skills_eval/fixtures/whole_skill/map_task_false_success/repo/src/__init__.py +0 -0
  389. {mapify_cli-3.24.0 → mapify_cli-3.25.0}/tests/skills_eval/fixtures/whole_skill/map_task_false_success/repo/src/kvparse.py +0 -0
  390. {mapify_cli-3.24.0 → mapify_cli-3.25.0}/tests/skills_eval/fixtures/whole_skill/map_task_false_success/repo/tests/test_kvparse_basic.py +0 -0
  391. {mapify_cli-3.24.0 → mapify_cli-3.25.0}/tests/skills_eval/fixtures/whole_skill/map_task_scope_pressure/manifest.json +0 -0
  392. {mapify_cli-3.24.0 → mapify_cli-3.25.0}/tests/skills_eval/fixtures/whole_skill/map_task_scope_pressure/repo/.map/main/blueprint.json +0 -0
  393. {mapify_cli-3.24.0 → mapify_cli-3.25.0}/tests/skills_eval/fixtures/whole_skill/map_task_scope_pressure/repo/.map/main/task_plan_main.md +0 -0
  394. {mapify_cli-3.24.0 → mapify_cli-3.25.0}/tests/skills_eval/fixtures/whole_skill/map_task_scope_pressure/repo/src/__init__.py +0 -0
  395. {mapify_cli-3.24.0 → mapify_cli-3.25.0}/tests/skills_eval/fixtures/whole_skill/map_task_scope_pressure/repo/src/config.py +0 -0
  396. {mapify_cli-3.24.0 → mapify_cli-3.25.0}/tests/skills_eval/fixtures/whole_skill/map_task_scope_pressure/repo/src/utils.py +0 -0
  397. {mapify_cli-3.24.0 → mapify_cli-3.25.0}/tests/skills_eval/fixtures/whole_skill/map_task_scope_pressure/repo/tests/test_price.py +0 -0
  398. {mapify_cli-3.24.0 → mapify_cli-3.25.0}/tests/skills_eval/fixtures/whole_skill/map_task_scope_trap/manifest.json +0 -0
  399. {mapify_cli-3.24.0 → mapify_cli-3.25.0}/tests/skills_eval/fixtures/whole_skill/map_task_scope_trap/repo/.map/main/blueprint.json +0 -0
  400. {mapify_cli-3.24.0 → mapify_cli-3.25.0}/tests/skills_eval/fixtures/whole_skill/map_task_scope_trap/repo/.map/main/task_plan_main.md +0 -0
  401. {mapify_cli-3.24.0 → mapify_cli-3.25.0}/tests/skills_eval/fixtures/whole_skill/map_task_scope_trap/repo/src/__init__.py +0 -0
  402. {mapify_cli-3.24.0 → mapify_cli-3.25.0}/tests/skills_eval/fixtures/whole_skill/map_task_scope_trap/repo/src/config.py +0 -0
  403. {mapify_cli-3.24.0 → mapify_cli-3.25.0}/tests/skills_eval/fixtures/whole_skill/map_task_scope_trap/repo/src/utils.py +0 -0
  404. {mapify_cli-3.24.0 → mapify_cli-3.25.0}/tests/skills_eval/fixtures/whole_skill/map_task_scope_trap/repo/tests/test_utils.py +0 -0
  405. {mapify_cli-3.24.0 → mapify_cli-3.25.0}/tests/skills_eval/fixtures/whole_skill/map_task_semver/manifest.json +0 -0
  406. {mapify_cli-3.24.0 → mapify_cli-3.25.0}/tests/skills_eval/fixtures/whole_skill/map_task_semver/repo/.map/main/blueprint.json +0 -0
  407. {mapify_cli-3.24.0 → mapify_cli-3.25.0}/tests/skills_eval/fixtures/whole_skill/map_task_semver/repo/.map/main/task_plan_main.md +0 -0
  408. {mapify_cli-3.24.0 → mapify_cli-3.25.0}/tests/skills_eval/fixtures/whole_skill/map_task_semver/repo/src/__init__.py +0 -0
  409. {mapify_cli-3.24.0 → mapify_cli-3.25.0}/tests/skills_eval/fixtures/whole_skill/map_task_semver/repo/src/semver.py +0 -0
  410. {mapify_cli-3.24.0 → mapify_cli-3.25.0}/tests/skills_eval/fixtures/whole_skill/map_task_semver/repo/tests/test_semver.py +0 -0
  411. {mapify_cli-3.24.0 → mapify_cli-3.25.0}/tests/skills_eval/fixtures/whole_skill/map_task_semver_vague/hidden/test_semver_full.py +0 -0
  412. {mapify_cli-3.24.0 → mapify_cli-3.25.0}/tests/skills_eval/fixtures/whole_skill/map_task_semver_vague/manifest.json +0 -0
  413. {mapify_cli-3.24.0 → mapify_cli-3.25.0}/tests/skills_eval/fixtures/whole_skill/map_task_semver_vague/repo/.map/main/blueprint.json +0 -0
  414. {mapify_cli-3.24.0 → mapify_cli-3.25.0}/tests/skills_eval/fixtures/whole_skill/map_task_semver_vague/repo/.map/main/task_plan_main.md +0 -0
  415. {mapify_cli-3.24.0 → mapify_cli-3.25.0}/tests/skills_eval/fixtures/whole_skill/map_task_semver_vague/repo/src/__init__.py +0 -0
  416. {mapify_cli-3.24.0 → mapify_cli-3.25.0}/tests/skills_eval/fixtures/whole_skill/map_task_semver_vague/repo/src/semver.py +0 -0
  417. {mapify_cli-3.24.0 → mapify_cli-3.25.0}/tests/skills_eval/fixtures/whole_skill/map_task_semver_vague/repo/tests/test_semver_basic.py +0 -0
  418. {mapify_cli-3.24.0 → mapify_cli-3.25.0}/tests/skills_eval/fixtures/whole_skill/map_task_semver_weakgate/hidden/test_semver_full.py +0 -0
  419. {mapify_cli-3.24.0 → mapify_cli-3.25.0}/tests/skills_eval/fixtures/whole_skill/map_task_semver_weakgate/manifest.json +0 -0
  420. {mapify_cli-3.24.0 → mapify_cli-3.25.0}/tests/skills_eval/fixtures/whole_skill/map_task_semver_weakgate/repo/.map/main/blueprint.json +0 -0
  421. {mapify_cli-3.24.0 → mapify_cli-3.25.0}/tests/skills_eval/fixtures/whole_skill/map_task_semver_weakgate/repo/.map/main/task_plan_main.md +0 -0
  422. {mapify_cli-3.24.0 → mapify_cli-3.25.0}/tests/skills_eval/fixtures/whole_skill/map_task_semver_weakgate/repo/src/__init__.py +0 -0
  423. {mapify_cli-3.24.0 → mapify_cli-3.25.0}/tests/skills_eval/fixtures/whole_skill/map_task_semver_weakgate/repo/src/semver.py +0 -0
  424. {mapify_cli-3.24.0 → mapify_cli-3.25.0}/tests/skills_eval/fixtures/whole_skill/map_task_semver_weakgate/repo/tests/test_semver_basic.py +0 -0
  425. {mapify_cli-3.24.0 → mapify_cli-3.25.0}/tests/skills_eval/whole_skill/spike_runner.py +0 -0
  426. {mapify_cli-3.24.0 → mapify_cli-3.25.0}/tests/test_agent_cli_correctness.py +0 -0
  427. {mapify_cli-3.24.0 → mapify_cli-3.25.0}/tests/test_agent_dispatch_audit.py +0 -0
  428. {mapify_cli-3.24.0 → mapify_cli-3.25.0}/tests/test_agent_frontmatter.py +0 -0
  429. {mapify_cli-3.24.0 → mapify_cli-3.25.0}/tests/test_approval_hold.py +0 -0
  430. {mapify_cli-3.24.0 → mapify_cli-3.25.0}/tests/test_artifact_schemas.py +0 -0
  431. {mapify_cli-3.24.0 → mapify_cli-3.25.0}/tests/test_boundary_quality_report.py +0 -0
  432. {mapify_cli-3.24.0 → mapify_cli-3.25.0}/tests/test_bump_version.py +0 -0
  433. {mapify_cli-3.24.0 → mapify_cli-3.25.0}/tests/test_code_map.py +0 -0
  434. {mapify_cli-3.24.0 → mapify_cli-3.25.0}/tests/test_compaction_offload_integration.py +0 -0
  435. {mapify_cli-3.24.0 → mapify_cli-3.25.0}/tests/test_concurrent_dispatch_harness.py +0 -0
  436. {mapify_cli-3.24.0 → mapify_cli-3.25.0}/tests/test_context_usefulness.py +0 -0
  437. {mapify_cli-3.24.0 → mapify_cli-3.25.0}/tests/test_cross_ai_config.py +0 -0
  438. {mapify_cli-3.24.0 → mapify_cli-3.25.0}/tests/test_decomposition.py +0 -0
  439. {mapify_cli-3.24.0 → mapify_cli-3.25.0}/tests/test_dependency_graph.py +0 -0
  440. {mapify_cli-3.24.0 → mapify_cli-3.25.0}/tests/test_diagnostics.py +0 -0
  441. {mapify_cli-3.24.0 → mapify_cli-3.25.0}/tests/test_digest_schema.py +0 -0
  442. {mapify_cli-3.24.0 → mapify_cli-3.25.0}/tests/test_domain_skill.py +0 -0
  443. {mapify_cli-3.24.0 → mapify_cli-3.25.0}/tests/test_file_copier.py +0 -0
  444. {mapify_cli-3.24.0 → mapify_cli-3.25.0}/tests/test_governance_attack_fixtures.py +0 -0
  445. {mapify_cli-3.24.0 → mapify_cli-3.25.0}/tests/test_grace_eval_schema.py +0 -0
  446. {mapify_cli-3.24.0 → mapify_cli-3.25.0}/tests/test_grace_eval_sweep.py +0 -0
  447. {mapify_cli-3.24.0 → mapify_cli-3.25.0}/tests/test_hook_patterns.py +0 -0
  448. {mapify_cli-3.24.0 → mapify_cli-3.25.0}/tests/test_init_import_graph.py +0 -0
  449. {mapify_cli-3.24.0 → mapify_cli-3.25.0}/tests/test_install_manifest.py +0 -0
  450. {mapify_cli-3.24.0 → mapify_cli-3.25.0}/tests/test_intent_detector.py +0 -0
  451. {mapify_cli-3.24.0 → mapify_cli-3.25.0}/tests/test_inv1_no_anthropic_optimize.py +0 -0
  452. {mapify_cli-3.24.0 → mapify_cli-3.25.0}/tests/test_jinja2_dep.py +0 -0
  453. {mapify_cli-3.24.0 → mapify_cli-3.25.0}/tests/test_locking.py +0 -0
  454. {mapify_cli-3.24.0 → mapify_cli-3.25.0}/tests/test_managed_file_copier.py +0 -0
  455. {mapify_cli-3.24.0 → mapify_cli-3.25.0}/tests/test_map_token_meter.py +0 -0
  456. {mapify_cli-3.24.0 → mapify_cli-3.25.0}/tests/test_map_utils_sanitize.py +0 -0
  457. {mapify_cli-3.24.0 → mapify_cli-3.25.0}/tests/test_mapify_cli.py +0 -0
  458. {mapify_cli-3.24.0 → mapify_cli-3.25.0}/tests/test_memory_capture.py +0 -0
  459. {mapify_cli-3.24.0 → mapify_cli-3.25.0}/tests/test_memory_finalize.py +0 -0
  460. {mapify_cli-3.24.0 → mapify_cli-3.25.0}/tests/test_memory_integration.py +0 -0
  461. {mapify_cli-3.24.0 → mapify_cli-3.25.0}/tests/test_memory_recall.py +0 -0
  462. {mapify_cli-3.24.0 → mapify_cli-3.25.0}/tests/test_memory_review_fixes.py +0 -0
  463. {mapify_cli-3.24.0 → mapify_cli-3.25.0}/tests/test_minimality_eval.py +0 -0
  464. {mapify_cli-3.24.0 → mapify_cli-3.25.0}/tests/test_minimality_report.py +0 -0
  465. {mapify_cli-3.24.0 → mapify_cli-3.25.0}/tests/test_parallelism_observability.py +0 -0
  466. {mapify_cli-3.24.0 → mapify_cli-3.25.0}/tests/test_post_compact_context.py +0 -0
  467. {mapify_cli-3.24.0 → mapify_cli-3.25.0}/tests/test_preset_commands.py +0 -0
  468. {mapify_cli-3.24.0 → mapify_cli-3.25.0}/tests/test_prompt_layering.py +0 -0
  469. {mapify_cli-3.24.0 → mapify_cli-3.25.0}/tests/test_prompt_profile_commands.py +0 -0
  470. {mapify_cli-3.24.0 → mapify_cli-3.25.0}/tests/test_pyyaml_dep.py +0 -0
  471. {mapify_cli-3.24.0 → mapify_cli-3.25.0}/tests/test_ralph_hooks.py +0 -0
  472. {mapify_cli-3.24.0 → mapify_cli-3.25.0}/tests/test_ralph_state.py +0 -0
  473. {mapify_cli-3.24.0 → mapify_cli-3.25.0}/tests/test_repo_insight.py +0 -0
  474. {mapify_cli-3.24.0 → mapify_cli-3.25.0}/tests/test_research_eval.py +0 -0
  475. {mapify_cli-3.24.0 → mapify_cli-3.25.0}/tests/test_research_eval_compare.py +0 -0
  476. {mapify_cli-3.24.0 → mapify_cli-3.25.0}/tests/test_schemas.py +0 -0
  477. {mapify_cli-3.24.0 → mapify_cli-3.25.0}/tests/test_scope_classifier.py +0 -0
  478. {mapify_cli-3.24.0 → mapify_cli-3.25.0}/tests/test_scrub_internal_ids.py +0 -0
  479. {mapify_cli-3.24.0 → mapify_cli-3.25.0}/tests/test_skill_ir.py +0 -0
  480. {mapify_cli-3.24.0 → mapify_cli-3.25.0}/tests/test_skills_consistency.py +0 -0
  481. {mapify_cli-3.24.0 → mapify_cli-3.25.0}/tests/test_skills_eval_aggregator.py +0 -0
  482. {mapify_cli-3.24.0 → mapify_cli-3.25.0}/tests/test_skills_eval_apply.py +0 -0
  483. {mapify_cli-3.24.0 → mapify_cli-3.25.0}/tests/test_skills_eval_cli_optimize.py +0 -0
  484. {mapify_cli-3.24.0 → mapify_cli-3.25.0}/tests/test_skills_eval_dispatcher_env.py +0 -0
  485. {mapify_cli-3.24.0 → mapify_cli-3.25.0}/tests/test_skills_eval_dispatcher_timeout.py +0 -0
  486. {mapify_cli-3.24.0 → mapify_cli-3.25.0}/tests/test_skills_eval_fixtures.py +0 -0
  487. {mapify_cli-3.24.0 → mapify_cli-3.25.0}/tests/test_skills_eval_optimizer.py +0 -0
  488. {mapify_cli-3.24.0 → mapify_cli-3.25.0}/tests/test_skills_eval_optimizer_isolation.py +0 -0
  489. {mapify_cli-3.24.0 → mapify_cli-3.25.0}/tests/test_skills_eval_proposer.py +0 -0
  490. {mapify_cli-3.24.0 → mapify_cli-3.25.0}/tests/test_skills_eval_runner.py +0 -0
  491. {mapify_cli-3.24.0 → mapify_cli-3.25.0}/tests/test_skills_eval_schema.py +0 -0
  492. {mapify_cli-3.24.0 → mapify_cli-3.25.0}/tests/test_skills_eval_trajectory_bundle.py +0 -0
  493. {mapify_cli-3.24.0 → mapify_cli-3.25.0}/tests/test_skills_eval_trajectory_cli.py +0 -0
  494. {mapify_cli-3.24.0 → mapify_cli-3.25.0}/tests/test_skills_eval_trajectory_gates.py +0 -0
  495. {mapify_cli-3.24.0 → mapify_cli-3.25.0}/tests/test_skills_eval_trajectory_judge.py +0 -0
  496. {mapify_cli-3.24.0 → mapify_cli-3.25.0}/tests/test_skills_eval_trajectory_repeated.py +0 -0
  497. {mapify_cli-3.24.0 → mapify_cli-3.25.0}/tests/test_skills_eval_trajectory_report.py +0 -0
  498. {mapify_cli-3.24.0 → mapify_cli-3.25.0}/tests/test_skills_eval_trajectory_runner.py +0 -0
  499. {mapify_cli-3.24.0 → mapify_cli-3.25.0}/tests/test_skills_eval_trajectory_schema.py +0 -0
  500. {mapify_cli-3.24.0 → mapify_cli-3.25.0}/tests/test_skills_eval_viewer.py +0 -0
  501. {mapify_cli-3.24.0 → mapify_cli-3.25.0}/tests/test_slice5b_leak_guards.py +0 -0
  502. {mapify_cli-3.24.0 → mapify_cli-3.25.0}/tests/test_sofa_client.py +0 -0
  503. {mapify_cli-3.24.0 → mapify_cli-3.25.0}/tests/test_sofa_search.py +0 -0
  504. {mapify_cli-3.24.0 → mapify_cli-3.25.0}/tests/test_statusline.py +0 -0
  505. {mapify_cli-3.24.0 → mapify_cli-3.25.0}/tests/test_token_budget.py +0 -0
  506. {mapify_cli-3.24.0 → mapify_cli-3.25.0}/tests/test_tool_output_offload.py +0 -0
  507. {mapify_cli-3.24.0 → mapify_cli-3.25.0}/tests/test_validate_dependencies.py +0 -0
  508. {mapify_cli-3.24.0 → mapify_cli-3.25.0}/tests/test_validate_spec_citations.py +0 -0
  509. {mapify_cli-3.24.0 → mapify_cli-3.25.0}/tests/test_verification_recorder.py +0 -0
  510. {mapify_cli-3.24.0 → mapify_cli-3.25.0}/tests/test_wave_eval_harness.py +0 -0
  511. {mapify_cli-3.24.0 → mapify_cli-3.25.0}/tests/test_wave_fixtures.py +0 -0
  512. {mapify_cli-3.24.0 → mapify_cli-3.25.0}/tests/test_wave_parallel_harness.py +0 -0
  513. {mapify_cli-3.24.0 → mapify_cli-3.25.0}/tests/test_workflow_context_injector.py +0 -0
  514. {mapify_cli-3.24.0 → mapify_cli-3.25.0}/tests/test_workflow_finalizer.py +0 -0
  515. {mapify_cli-3.24.0 → mapify_cli-3.25.0}/tests/test_workflow_gate.py +0 -0
  516. {mapify_cli-3.24.0 → mapify_cli-3.25.0}/tests/test_workflow_logger.py +0 -0
  517. {mapify_cli-3.24.0 → mapify_cli-3.25.0}/tests/test_workflow_state.py +0 -0
  518. {mapify_cli-3.24.0 → mapify_cli-3.25.0}/tests/test_worktree_isolation.py +0 -0
@@ -1,6 +1,6 @@
1
- Metadata-Version: 2.4
1
+ Metadata-Version: 2.5
2
2
  Name: mapify-cli
3
- Version: 3.24.0
3
+ Version: 3.25.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
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "mapify-cli"
3
- version = "3.24.0"
3
+ version = "3.25.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.24.0"
26
+ __version__ = "3.25.0"
27
27
 
28
28
  import json
29
29
  import os
@@ -770,6 +770,18 @@ def init(
770
770
  "See docs/USAGE.md."
771
771
  ),
772
772
  ),
773
+ agent_memory: str = typer.Option(
774
+ "off",
775
+ "--agent-memory",
776
+ help=(
777
+ "Role-local persistent memory for the reflector learning agent "
778
+ "(opt-in, off by default). Adds a `memory:` frontmatter field to "
779
+ ".claude/agents/reflector.md and writes "
780
+ "claude_agents.persistent_memory=<level> to .map/config.yaml. "
781
+ "Allowed: off, local (user-local, NOT committed), "
782
+ "project (project-scoped, committed). See docs/USAGE.md."
783
+ ),
784
+ ),
773
785
  autonomy: bool | None = typer.Option(
774
786
  None,
775
787
  "--autonomy/--no-autonomy",
@@ -856,6 +868,14 @@ def init(
856
868
  )
857
869
  raise typer.Exit(1)
858
870
 
871
+ from mapify_cli.config.project_config import VALID_AGENT_MEMORY_LEVELS
872
+ if agent_memory not in VALID_AGENT_MEMORY_LEVELS:
873
+ console.print(
874
+ f"[red]Error:[/red] Invalid --agent-memory '{agent_memory}'. "
875
+ f"Valid: {', '.join(sorted(VALID_AGENT_MEMORY_LEVELS))}"
876
+ )
877
+ raise typer.Exit(1)
878
+
859
879
  # Handle '.' as shorthand for current directory
860
880
  use_current_dir = project_name == "."
861
881
 
@@ -975,6 +995,7 @@ def init(
975
995
  tracker.start("map-config")
976
996
  try:
977
997
  from mapify_cli.config.project_config import (
998
+ apply_agent_memory_overrides,
978
999
  apply_compression_overrides,
979
1000
  apply_sofa_overrides,
980
1001
  write_default_config,
@@ -994,6 +1015,8 @@ def init(
994
1015
  from mapify_cli.delivery.file_copier import merge_sofa_gitignore
995
1016
 
996
1017
  merge_sofa_gitignore(project_path)
1018
+ if agent_memory != "off":
1019
+ apply_agent_memory_overrides(config_path, agent_memory)
997
1020
  tracker.complete(
998
1021
  "map-config", str(config_path.relative_to(project_path))
999
1022
  )
@@ -1029,6 +1052,7 @@ def init(
1029
1052
  tracker.start("map-config")
1030
1053
  try:
1031
1054
  from mapify_cli.config.project_config import (
1055
+ apply_agent_memory_overrides,
1032
1056
  apply_compression_overrides,
1033
1057
  apply_sofa_overrides,
1034
1058
  write_default_config,
@@ -1048,6 +1072,16 @@ def init(
1048
1072
  from mapify_cli.delivery.file_copier import merge_sofa_gitignore
1049
1073
 
1050
1074
  merge_sofa_gitignore(project_path)
1075
+ if agent_memory != "off":
1076
+ apply_agent_memory_overrides(config_path, agent_memory)
1077
+ from mapify_cli.delivery.file_copier import (
1078
+ apply_reflector_memory_field,
1079
+ merge_agent_memory_gitignore,
1080
+ )
1081
+
1082
+ apply_reflector_memory_field(project_path, agent_memory)
1083
+ if agent_memory == "local":
1084
+ merge_agent_memory_gitignore(project_path)
1051
1085
  tracker.complete("map-config", str(config_path.relative_to(project_path)))
1052
1086
  except Exception as e: # noqa: BLE001 -- deliberate fallback/resilience boundary, must not propagate
1053
1087
  tracker.error("map-config", f"skipped: {e}")
@@ -19,6 +19,7 @@ VALID_MINIMALITY = frozenset({"off", "lite", "full", "ultra"})
19
19
  VALID_PROMPT_LAYERING = frozenset({"docs_first", "stable_first"})
20
20
  VALID_WORKTREE_ISOLATION = frozenset({"off", "auto", "required"})
21
21
  VALID_WAVE_MODE = frozenset({"off", "auto", "on"})
22
+ VALID_AGENT_MEMORY_LEVELS = frozenset({"off", "local", "project"})
22
23
 
23
24
  # Cross-AI peer review (#288): external AI CLI runtimes map-review can dispatch
24
25
  # to. Keep in sync with CROSS_AI_RUNTIMES in the rendered step runner
@@ -130,6 +131,17 @@ class MapConfig:
130
131
  # .map/config.yaml. When enabled, the map-so-search skill is available.
131
132
  sofa_enabled: bool = False
132
133
 
134
+ # Role-local persistent memory for learning agents (#379). Enables the
135
+ # Claude Code `memory:` frontmatter on the reflector agent so it can retain
136
+ # lessons across sessions. Enum values:
137
+ # "off" — no memory field added (default; behaviour unchanged)
138
+ # "local" — user-local memory: .claude/agent-memory-local/ (not committed)
139
+ # "project" — project-scoped memory: .claude/agent-memory/ (committed)
140
+ # Enable via `mapify init --agent-memory local|project` or set
141
+ # `claude_agents.persistent_memory: local|project` in .map/config.yaml.
142
+ # Dotted YAML key: `claude_agents.persistent_memory` (aliased in load_map_config).
143
+ claude_agents_persistent_memory: str = "off"
144
+
133
145
  # Strip MAP-internal workflow IDs (ST-/AC-/VC-/INV-/HC-) from run-changed
134
146
  # code at workflow completion (Stop hook `scrub-internal-ids.py`). On by
135
147
  # default; set `scrub_internal_ids: false` in .map/config.yaml to opt out
@@ -373,6 +385,7 @@ def load_map_config(project_path: Path) -> MapConfig:
373
385
  ("scale.thresholds.small.max_lines", "scale_small_max_lines"),
374
386
  ("scale.thresholds.medium.max_files", "scale_medium_max_files"),
375
387
  ("scale.thresholds.medium.max_lines", "scale_medium_max_lines"),
388
+ ("claude_agents.persistent_memory", "claude_agents_persistent_memory"),
376
389
  ):
377
390
  if dotted in data and field_name not in data:
378
391
  data[field_name] = data.pop(dotted)
@@ -513,6 +526,16 @@ def load_map_config(project_path: Path) -> MapConfig:
513
526
  )
514
527
  cfg.execution_wave_mode = "auto"
515
528
 
529
+ if cfg.claude_agents_persistent_memory not in VALID_AGENT_MEMORY_LEVELS:
530
+ logger.warning(
531
+ "Invalid claude_agents_persistent_memory %r in %s (expected one of %s). "
532
+ "Using default 'off'.",
533
+ cfg.claude_agents_persistent_memory,
534
+ config_file,
535
+ ", ".join(sorted(VALID_AGENT_MEMORY_LEVELS)),
536
+ )
537
+ cfg.claude_agents_persistent_memory = "off"
538
+
516
539
  # Clamp max_actors to [1, 8]; non-int/bool → default 4.
517
540
  # retry_degraded_once and concurrent_dispatch are plain bools handled by
518
541
  # the generic type-check loop.
@@ -520,6 +543,28 @@ def load_map_config(project_path: Path) -> MapConfig:
520
543
  # Clamp max_wave_retries to [1, 10]; non-int/bool → default 3.
521
544
  cfg.max_wave_retries = clamp_max_wave_retries(cfg.max_wave_retries)
522
545
 
546
+ # Scale threshold fields must be >= 1; a value <= 0 makes one or more
547
+ # scope brackets unreachable (e.g. estimated_files <= -1 is always False).
548
+ _scale_defaults: dict[str, int] = {
549
+ "scale_trivial_max_files": 3,
550
+ "scale_trivial_max_lines": 50,
551
+ "scale_small_max_files": 10,
552
+ "scale_small_max_lines": 200,
553
+ "scale_medium_max_files": 30,
554
+ "scale_medium_max_lines": 1000,
555
+ }
556
+ for _sf, _default in _scale_defaults.items():
557
+ _val = getattr(cfg, _sf)
558
+ if _val < 1:
559
+ logger.warning(
560
+ "%s must be >= 1 in %s (got %d). Using default %d.",
561
+ _sf,
562
+ config_file,
563
+ _val,
564
+ _default,
565
+ )
566
+ setattr(cfg, _sf, _default)
567
+
523
568
  return cfg
524
569
 
525
570
  except yaml.YAMLError as e:
@@ -649,6 +694,15 @@ minimality: lite
649
694
  # Enable via `mapify init --sofa` or uncomment the line below.
650
695
  # sofa.enabled: false
651
696
 
697
+ # Role-local persistent memory for learning agents (#379) — opt-in, off by default.
698
+ # Adds the Claude Code `memory:` frontmatter to the reflector agent so it retains
699
+ # lessons across sessions. Enable via `mapify init --agent-memory local|project`
700
+ # or uncomment and set one of the values below.
701
+ # off — no memory (default; behaviour unchanged)
702
+ # local — user-local memory: .claude/agent-memory-local/ (NOT committed)
703
+ # project — project-scoped memory: .claude/agent-memory/ (committed, shared)
704
+ # claude_agents.persistent_memory: off
705
+
652
706
  # Cross-AI peer review (#288) — opt-in, OFF by default. When enabled AND you run
653
707
  # `map-review --cross-ai <runtime>`, the review is dispatched to an INDEPENDENT
654
708
  # external AI CLI (codex/gemini/claude/opencode) for a second opinion. DOUBLE
@@ -834,6 +888,39 @@ def apply_sofa_overrides(config_path: Path) -> None:
834
888
  config_path.write_text(text, encoding="utf-8")
835
889
 
836
890
 
891
+ def apply_agent_memory_overrides(config_path: Path, level: str) -> None:
892
+ """Write claude_agents.persistent_memory=<level> into an existing .map/config.yaml.
893
+
894
+ Called by ``mapify init`` when the user passes ``--agent-memory``. Replaces
895
+ the commented placeholder line so the value becomes active without duplicating
896
+ keys. Callers should skip this function when ``level`` is ``"off"``.
897
+
898
+ Args:
899
+ config_path: path to the .map/config.yaml produced by ``write_default_config``.
900
+ level: one of "off", "local", "project" (caller is responsible for validation).
901
+ """
902
+ if not config_path.is_file():
903
+ return
904
+
905
+ text = config_path.read_text(encoding="utf-8")
906
+
907
+ def _set(key: str, value: str, body: str) -> str:
908
+ import re
909
+
910
+ active_re = re.compile(rf"(?m)^{re.escape(key)}\s*:.*$")
911
+ commented_re = re.compile(rf"(?m)^#\s*{re.escape(key)}\s*:.*$")
912
+ new_line = f"{key}: {value}"
913
+ if active_re.search(body):
914
+ return active_re.sub(new_line, body, count=1)
915
+ if commented_re.search(body):
916
+ return commented_re.sub(new_line, body, count=1)
917
+ sep = "" if body.endswith("\n") else "\n"
918
+ return f"{body}{sep}{new_line}\n"
919
+
920
+ text = _set("claude_agents.persistent_memory", level, text)
921
+ config_path.write_text(text, encoding="utf-8")
922
+
923
+
837
924
  def write_default_config(project_path: Path) -> Path:
838
925
  """Write default config.yaml to .map/config.yaml.
839
926
 
@@ -498,6 +498,98 @@ def merge_sofa_gitignore(project_path: Path) -> int:
498
498
  return 1
499
499
 
500
500
 
501
+ _AGENT_MEMORY_LOCAL_GITIGNORE_MARKER = "# map:agent-memory-local"
502
+ _AGENT_MEMORY_LOCAL_GITIGNORE_BLOCK = (
503
+ "# map:agent-memory-local — user-local agent memory (opt-in); never commit.\n"
504
+ ".claude/agent-memory-local/\n"
505
+ )
506
+
507
+
508
+ def merge_agent_memory_gitignore(project_path: Path) -> int:
509
+ """Idempotently add .claude/agent-memory-local/ to the repo-root .gitignore.
510
+
511
+ Only called when ``--agent-memory local`` is used. The project-scoped level
512
+ (``--agent-memory project``) writes to ``.claude/agent-memory/`` which IS
513
+ intended to be committed, so no gitignore entry is needed for it.
514
+
515
+ Returns 1 when the file was created or modified, 0 when already up-to-date.
516
+ """
517
+ gitignore = project_path / ".gitignore"
518
+
519
+ if not gitignore.exists():
520
+ gitignore.write_text(_AGENT_MEMORY_LOCAL_GITIGNORE_BLOCK)
521
+ return 1
522
+
523
+ existing = gitignore.read_text()
524
+
525
+ # OR-not-AND idempotency guard: skip if our marker OR the exact path is
526
+ # already present (prevents duplicates when user already has the line).
527
+ ignored_lines = {line.strip() for line in existing.splitlines()}
528
+ if (
529
+ _AGENT_MEMORY_LOCAL_GITIGNORE_MARKER in existing
530
+ or ".claude/agent-memory-local/" in ignored_lines
531
+ ):
532
+ return 0
533
+
534
+ separator = "" if existing.endswith("\n") else "\n"
535
+ gitignore.write_text(existing + separator + _AGENT_MEMORY_LOCAL_GITIGNORE_BLOCK)
536
+ return 1
537
+
538
+
539
+ def apply_reflector_memory_field(project_path: Path, level: str) -> int:
540
+ """Add or update the ``memory:`` frontmatter field in the installed reflector.md.
541
+
542
+ Called post-install when ``--agent-memory`` is ``"local"`` or ``"project"``.
543
+ Idempotent: if the field already exists with the correct value it is left
544
+ unchanged; if it exists with a different value it is replaced.
545
+
546
+ Args:
547
+ project_path: root of the target project (installed ``.claude/`` lives here).
548
+ level: ``"local"`` or ``"project"`` (caller is responsible for validation;
549
+ ``"off"`` callers must not invoke this function).
550
+
551
+ Returns:
552
+ 1 if the file was modified, 0 if already up-to-date or not found.
553
+ """
554
+ import re
555
+
556
+ reflector_path = project_path / ".claude" / "agents" / "reflector.md"
557
+ if not reflector_path.exists():
558
+ return 0
559
+
560
+ text = reflector_path.read_text(encoding="utf-8")
561
+
562
+ # Determine the correct memory field value based on level.
563
+ # "local" → memory: user_local (maps to .claude/agent-memory-local/)
564
+ # "project" → memory: project (maps to .claude/agent-memory/)
565
+ memory_value = "user_local" if level == "local" else "project"
566
+ new_field_line = f"memory: {memory_value}"
567
+
568
+ # If a `memory:` line already exists in the frontmatter, replace it.
569
+ existing_memory_re = re.compile(r"(?m)^memory\s*:.*$")
570
+ if existing_memory_re.search(text):
571
+ updated = existing_memory_re.sub(new_field_line, text, count=1)
572
+ if updated == text:
573
+ return 0 # already up-to-date
574
+ reflector_path.write_text(updated, encoding="utf-8")
575
+ return 1
576
+
577
+ # Inject the `memory:` line into the YAML frontmatter, just before the
578
+ # closing `---` delimiter. This preserves the existing frontmatter structure.
579
+ # Match the opening `---\n ... \n---` block.
580
+ frontmatter_re = re.compile(r"^(---\n.*?\n)(---)", re.DOTALL)
581
+ m = frontmatter_re.match(text)
582
+ if not m:
583
+ # No frontmatter — prepend a minimal one.
584
+ updated = f"---\n{new_field_line}\n---\n{text}"
585
+ else:
586
+ # Insert before the closing `---`.
587
+ updated = text[: m.start(2)] + new_field_line + "\n" + text[m.start(2) :]
588
+
589
+ reflector_path.write_text(updated, encoding="utf-8")
590
+ return 1
591
+
592
+
501
593
  def create_commands_dir(project_path: Path) -> None:
502
594
  """Create commands directory with README pointing at skill-backed surfaces."""
503
595
  commands_dir = project_path / ".claude" / "commands"
@@ -189,6 +189,14 @@ _SKILL_META: dict[str, tuple[str, str]] = {
189
189
  "context",
190
190
  "Opt-in read-only prior-art search against Stack Overflow for Agents (SOFA)",
191
191
  ),
192
+ "map-wayfind": (
193
+ "oversight",
194
+ "Decision-frontier wayfinding: resolve open design decisions on a durable map before /map-plan",
195
+ ),
196
+ "map-architecture": (
197
+ "context",
198
+ "Opt-in proactive architecture-deepening report: rank codebase hotspots by design friction",
199
+ ),
192
200
  }
193
201
 
194
202
  #: Default categories for known references (enforcement = "prompt-only")
@@ -62,7 +62,6 @@ _STRAY_TOKENS = ("[%", "<%", "[#")
62
62
  _CLAUDE_SHIPPED_ONLY: frozenset[str] = frozenset(
63
63
  {
64
64
  "CLAUDE.md",
65
- "settings.json",
66
65
  "workflow-rules.json",
67
66
  "ralph-loop-config.json",
68
67
  "hooks/README.md",
@@ -262,9 +261,13 @@ def _build_claude_resolver(
262
261
  (``map/`` prefix remaps to ``.map/`` in the dev tree)
263
262
 
264
263
  * hooks/README.md, rules/learned/README.md, CLAUDE.md,
265
- settings.json, workflow-rules.json, ralph-loop-config.json
264
+ workflow-rules.json, ralph-loop-config.json
266
265
  → ``src/mapify_cli/templates/<rel>`` ONLY (shipped-only — no dev dest)
267
266
 
267
+ * settings.json
268
+ → BOTH ``src/mapify_cli/templates/settings.json`` AND ``.claude/settings.json``
269
+ (dual-dest so ``check-render`` gates both and drift is caught; issue #390)
270
+
268
271
  A rendered file mapping to 0 destinations is simply not written live
269
272
  (future use; not used for CLAUDE provider currently).
270
273
 
@@ -1882,3 +1882,176 @@ CONTEXT_USEFULNESS_SCHEMA: dict[str, Any] = {
1882
1882
  "required": ["schema_version", "branch", "workflow", "items", "summary"],
1883
1883
  "additionalProperties": True,
1884
1884
  }
1885
+
1886
+
1887
+ REVIEW_VERDICT_LEDGER_SCHEMA: dict[str, Any] = {
1888
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
1889
+ "$id": "https://mapframework.dev/schemas/review-verdict-ledger.json",
1890
+ "title": "MAP Review Verdict Ledger",
1891
+ "description": (
1892
+ "Durable normalized finding registry and computed verdict for a /map-review run. "
1893
+ "Written before write_stage_gate so the reasoning surface is reproducible from "
1894
+ "a closed decision table, not assigned ad hoc. See issue #406."
1895
+ ),
1896
+ "type": "object",
1897
+ "properties": {
1898
+ "schema_version": {"type": "string"},
1899
+ "generated_at": {"type": "string"},
1900
+ "branch": {"type": "string"},
1901
+ "criteria_version": {"type": "string"},
1902
+ "input_classification": {
1903
+ "type": "object",
1904
+ "properties": {
1905
+ "review_mode": {
1906
+ "type": "string",
1907
+ "enum": ["normal", "adversarial", "cross_ai", "compare_orderings", "unknown"],
1908
+ },
1909
+ "destination": {
1910
+ "type": "string",
1911
+ "enum": ["pre_commit", "pr_review", "ci", "unknown"],
1912
+ },
1913
+ "evidence_mode": {
1914
+ "type": "string",
1915
+ "enum": ["structural", "self_executed", "independent_run", "mixed", "unknown"],
1916
+ },
1917
+ "executor_class": {"type": "string"},
1918
+ },
1919
+ "required": ["review_mode"],
1920
+ "additionalProperties": True,
1921
+ },
1922
+ "findings_registry": {
1923
+ "type": "array",
1924
+ "items": {
1925
+ "type": "object",
1926
+ "properties": {
1927
+ "id": {"type": "string"},
1928
+ "source_agent": {
1929
+ "type": "string",
1930
+ "enum": [
1931
+ "monitor", "predictor", "evaluator",
1932
+ "adversarial", "ordering", "operator",
1933
+ ],
1934
+ },
1935
+ "category": {
1936
+ "type": "string",
1937
+ "enum": [
1938
+ "correctness", "security", "tests", "performance",
1939
+ "maintainability", "workflow", "unknown",
1940
+ ],
1941
+ },
1942
+ "severity": {
1943
+ "type": "string",
1944
+ "enum": ["critical", "important", "minor", "needs_investigation"],
1945
+ },
1946
+ "claim": {"type": "string"},
1947
+ "evidence": {
1948
+ "type": "array",
1949
+ "items": {
1950
+ "type": "object",
1951
+ "properties": {
1952
+ "file_path": {"type": "string"},
1953
+ "line_range": {"type": "string"},
1954
+ "quote": {"type": "string"},
1955
+ },
1956
+ "additionalProperties": True,
1957
+ },
1958
+ },
1959
+ "status": {
1960
+ "type": "string",
1961
+ "enum": ["active", "tombstoned", "downgraded"],
1962
+ },
1963
+ "transition_reason": {
1964
+ "type": ["string", "null"],
1965
+ "enum": [
1966
+ "new_evidence", "quote_absent", "wrong_category",
1967
+ "different_version", "pre_existing_backlog",
1968
+ "human_escalation", "pressure_without_new_fact",
1969
+ "input_integrity", "not_applicable", None,
1970
+ ],
1971
+ },
1972
+ "transition_evidence": {"type": ["string", "null"]},
1973
+ "was_present_before_pr": {"type": ["boolean", "null"]},
1974
+ "downgraded_from": {
1975
+ "type": "string",
1976
+ "enum": ["critical", "important", "minor", "needs_investigation"],
1977
+ "description": (
1978
+ "Severity the finding carried before it was downgraded. "
1979
+ "Present only on downgraded rows."
1980
+ ),
1981
+ },
1982
+ },
1983
+ "required": ["id", "source_agent", "severity", "claim", "status"],
1984
+ "additionalProperties": True,
1985
+ },
1986
+ },
1987
+ "not_verified": {
1988
+ "type": "array",
1989
+ "items": {"type": "string"},
1990
+ "description": "Concerns that could not be verified against source evidence.",
1991
+ },
1992
+ "evaluator_scores": {
1993
+ "type": ["object", "null"],
1994
+ "description": "Raw Evaluator scores — advisory signal, cannot override active findings.",
1995
+ "additionalProperties": True,
1996
+ },
1997
+ "verdict_table": {"type": "string"},
1998
+ "computed_verdict": {
1999
+ "type": "string",
2000
+ "enum": ["PROCEED", "REVISE", "BLOCK"],
2001
+ },
2002
+ "verdict_basis": {
2003
+ "type": "string",
2004
+ "description": "Human-readable explanation of why the decision table chose this verdict.",
2005
+ },
2006
+ "journal": {
2007
+ "type": "object",
2008
+ "properties": {
2009
+ "previous_verdict": {
2010
+ "type": ["string", "null"],
2011
+ "enum": ["PROCEED", "REVISE", "BLOCK", None],
2012
+ },
2013
+ "current_verdict": {
2014
+ "type": "string",
2015
+ "enum": ["PROCEED", "REVISE", "BLOCK"],
2016
+ },
2017
+ "matches_previous": {"type": ["boolean", "null"]},
2018
+ "repeated_verbatim": {
2019
+ "type": "boolean",
2020
+ "description": (
2021
+ "True when an objection carried no new fact, so the prior "
2022
+ "verdict stands rather than being re-argued."
2023
+ ),
2024
+ },
2025
+ "basis": {"type": "string"},
2026
+ },
2027
+ "required": ["current_verdict"],
2028
+ "additionalProperties": True,
2029
+ },
2030
+ "escalation_required": {
2031
+ "type": "boolean",
2032
+ "description": (
2033
+ "True when a human must decide. PROCEED is unavailable while this is set."
2034
+ ),
2035
+ },
2036
+ "escalation_reasons": {
2037
+ "type": "array",
2038
+ "items": {"type": "string"},
2039
+ },
2040
+ # active_count counts what the decision table consumed: active AND
2041
+ # downgraded rows. tombstoned_count counts only rows that left the table.
2042
+ "active_count": {"type": "integer", "minimum": 0},
2043
+ "downgraded_count": {"type": "integer", "minimum": 0},
2044
+ "tombstoned_count": {"type": "integer", "minimum": 0},
2045
+ },
2046
+ "required": [
2047
+ "schema_version",
2048
+ "branch",
2049
+ "generated_at",
2050
+ "findings_registry",
2051
+ "not_verified",
2052
+ "computed_verdict",
2053
+ "verdict_table",
2054
+ "journal",
2055
+ ],
2056
+ "additionalProperties": True,
2057
+ }
@@ -190,7 +190,18 @@ def is_exempt_path(file_path: str) -> bool:
190
190
  # rules written by ``/map-learn``. The exemption is restricted to ``*.md`` files to
191
191
  # prevent the directory from quietly broadening into a general bypass for arbitrary
192
192
  # file types (executables, configs, secrets-bearing JSON, etc.).
193
- return bool(len(parts) >= 4 and parts[:3] == (".claude", "rules", "learned") and parts[-1].endswith(".md"))
193
+ if len(parts) >= 4 and parts[:3] == (".claude", "rules", "learned") and parts[-1].endswith(".md"):
194
+ return True
195
+ # POLICY: ``.claude/agent-memory/`` and ``.claude/agent-memory-local/`` are the
196
+ # destinations for role-local persistent memory written by learning agents (e.g.
197
+ # reflector). Exemption is restricted to ``*.md`` files only — the same narrow
198
+ # scope as the ``rules/learned/`` exemption above.
199
+ return (
200
+ len(parts) >= 3
201
+ and parts[0] == ".claude"
202
+ and parts[1] in ("agent-memory", "agent-memory-local")
203
+ and parts[-1].endswith(".md")
204
+ )
194
205
 
195
206
 
196
207
  def sanitize_branch_name(branch: str) -> str:
@@ -300,10 +300,17 @@ python3 .map/scripts/map_step_runner.py write_learning_handoff \
300
300
  This preserves `active-issues`, `pr-draft`, and `learning-handoff` flows.
301
301
 
302
302
  If edits are needed (REVISE/BLOCK), write the stage gate so the owning
303
- workflow can continue:
303
+ workflow can continue. Positional arguments are
304
+ `<stage> <verdict> <source_artifact> <notes>` — the summary is the FOURTH
305
+ argument, not the third. The runner normalizes `PROCEED` -> `ready`,
306
+ `REVISE` -> `needs-revision`, `BLOCK` -> `blocked`:
304
307
 
305
308
  ```bash
306
- python3 .map/scripts/map_step_runner.py write_stage_gate review "$FINAL_VERDICT" "$REVIEW_SUMMARY"
309
+ python3 .map/scripts/map_step_runner.py write_stage_gate \
310
+ review \
311
+ "$FINAL_VERDICT" \
312
+ code-review-001.md \
313
+ "$REVIEW_SUMMARY"
307
314
  ```
308
315
 
309
316
  Set `RUN_HEALTH_STATUS` from verdict:
@@ -190,7 +190,18 @@ def is_exempt_path(file_path: str) -> bool:
190
190
  # rules written by ``/map-learn``. The exemption is restricted to ``*.md`` files to
191
191
  # prevent the directory from quietly broadening into a general bypass for arbitrary
192
192
  # file types (executables, configs, secrets-bearing JSON, etc.).
193
- return bool(len(parts) >= 4 and parts[:3] == (".claude", "rules", "learned") and parts[-1].endswith(".md"))
193
+ if len(parts) >= 4 and parts[:3] == (".claude", "rules", "learned") and parts[-1].endswith(".md"):
194
+ return True
195
+ # POLICY: ``.claude/agent-memory/`` and ``.claude/agent-memory-local/`` are the
196
+ # destinations for role-local persistent memory written by learning agents (e.g.
197
+ # reflector). Exemption is restricted to ``*.md`` files only — the same narrow
198
+ # scope as the ``rules/learned/`` exemption above.
199
+ return (
200
+ len(parts) >= 3
201
+ and parts[0] == ".claude"
202
+ and parts[1] in ("agent-memory", "agent-memory-local")
203
+ and parts[-1].endswith(".md")
204
+ )
194
205
 
195
206
 
196
207
  def sanitize_branch_name(branch: str) -> str: