mapify-cli 3.32.0__tar.gz → 3.33.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 (716) hide show
  1. {mapify_cli-3.32.0 → mapify_cli-3.33.0}/PKG-INFO +17 -5
  2. {mapify_cli-3.32.0 → mapify_cli-3.33.0}/README.md +16 -4
  3. {mapify_cli-3.32.0 → mapify_cli-3.33.0}/pyproject.toml +1 -1
  4. {mapify_cli-3.32.0 → mapify_cli-3.33.0}/src/mapify_cli/__init__.py +1 -1
  5. mapify_cli-3.33.0/src/mapify_cli/skills_eval/apply_patcher.py +277 -0
  6. {mapify_cli-3.32.0 → mapify_cli-3.33.0}/src/mapify_cli/templates/agents/monitor.md +21 -0
  7. {mapify_cli-3.32.0 → mapify_cli-3.33.0}/src/mapify_cli/templates/codex/agents/monitor.toml +34 -2
  8. {mapify_cli-3.32.0 → mapify_cli-3.33.0}/src/mapify_cli/templates/codex/hooks/end-of-turn.sh +11 -3
  9. {mapify_cli-3.32.0 → mapify_cli-3.33.0}/src/mapify_cli/templates/codex/hooks/workflow-gate.py +83 -2
  10. {mapify_cli-3.32.0 → mapify_cli-3.33.0}/src/mapify_cli/templates/codex/skills/map-efficient/SKILL.md +54 -3
  11. {mapify_cli-3.32.0 → mapify_cli-3.33.0}/src/mapify_cli/templates/codex/skills/map-efficient/efficient-reference.md +71 -23
  12. {mapify_cli-3.32.0 → mapify_cli-3.33.0}/src/mapify_cli/templates/codex/skills/map-explain/SKILL.md +3 -1
  13. {mapify_cli-3.32.0 → mapify_cli-3.33.0}/src/mapify_cli/templates/codex/skills/map-learn/SKILL.md +5 -0
  14. {mapify_cli-3.32.0 → mapify_cli-3.33.0}/src/mapify_cli/templates/codex/skills/map-memory-now/SKILL.md +8 -8
  15. {mapify_cli-3.32.0 → mapify_cli-3.33.0}/src/mapify_cli/templates/codex/skills/map-resume/SKILL.md +8 -0
  16. {mapify_cli-3.32.0 → mapify_cli-3.33.0}/src/mapify_cli/templates/codex/skills/map-resume/resume-reference.md +83 -0
  17. {mapify_cli-3.32.0 → mapify_cli-3.33.0}/src/mapify_cli/templates/codex/skills/map-review/SKILL.md +6 -7
  18. {mapify_cli-3.32.0 → mapify_cli-3.33.0}/src/mapify_cli/templates/codex/skills/map-review/review-reference.md +16 -10
  19. {mapify_cli-3.32.0 → mapify_cli-3.33.0}/src/mapify_cli/templates/codex/skills/map-skill-eval/SKILL.md +1 -1
  20. {mapify_cli-3.32.0 → mapify_cli-3.33.0}/src/mapify_cli/templates/hooks/end-of-turn.sh +11 -3
  21. {mapify_cli-3.32.0 → mapify_cli-3.33.0}/src/mapify_cli/templates/hooks/workflow-gate.py +87 -3
  22. mapify_cli-3.33.0/src/mapify_cli/templates/map/scripts/map_interruption.py +981 -0
  23. {mapify_cli-3.32.0 → mapify_cli-3.33.0}/src/mapify_cli/templates/map/scripts/map_orchestrator.py +221 -6
  24. {mapify_cli-3.32.0 → mapify_cli-3.33.0}/src/mapify_cli/templates/map/scripts/map_step_runner.py +691 -256
  25. {mapify_cli-3.32.0 → mapify_cli-3.33.0}/src/mapify_cli/templates/skills/map-efficient/SKILL.md +5 -5
  26. {mapify_cli-3.32.0 → mapify_cli-3.33.0}/src/mapify_cli/templates/skills/map-efficient/efficient-reference.md +123 -18
  27. {mapify_cli-3.32.0 → mapify_cli-3.33.0}/src/mapify_cli/templates/skills/map-explain/SKILL.md +1 -1
  28. {mapify_cli-3.32.0 → mapify_cli-3.33.0}/src/mapify_cli/templates/skills/map-memory-now/SKILL.md +8 -8
  29. {mapify_cli-3.32.0 → mapify_cli-3.33.0}/src/mapify_cli/templates/skills/map-resume/SKILL.md +8 -0
  30. {mapify_cli-3.32.0 → mapify_cli-3.33.0}/src/mapify_cli/templates/skills/map-resume/resume-reference.md +83 -0
  31. {mapify_cli-3.32.0 → mapify_cli-3.33.0}/src/mapify_cli/templates/skills/map-review/SKILL.md +6 -5
  32. {mapify_cli-3.32.0 → mapify_cli-3.33.0}/src/mapify_cli/templates/skills/map-review/review-reference.md +16 -10
  33. mapify_cli-3.33.0/src/mapify_cli/templates_src/_partials/monitor-review-context.md.jinja +19 -0
  34. mapify_cli-3.33.0/src/mapify_cli/templates_src/_partials/serial-blocker-repair.md.jinja +49 -0
  35. mapify_cli-3.33.0/src/mapify_cli/templates_src/_partials/stale-attribution-recovery.md.jinja +30 -0
  36. {mapify_cli-3.32.0 → mapify_cli-3.33.0}/src/mapify_cli/templates_src/agents/monitor.md.jinja +2 -0
  37. {mapify_cli-3.32.0 → mapify_cli-3.33.0}/src/mapify_cli/templates_src/codex/agents/monitor.toml.jinja +15 -2
  38. {mapify_cli-3.32.0 → mapify_cli-3.33.0}/src/mapify_cli/templates_src/codex/hooks/workflow-gate.py.jinja +83 -2
  39. mapify_cli-3.33.0/src/mapify_cli/templates_src/codex/skills/map-check/SKILL.md.jinja +1 -0
  40. mapify_cli-3.33.0/src/mapify_cli/templates_src/codex/skills/map-check/check-reference.md.jinja +1 -0
  41. mapify_cli-3.33.0/src/mapify_cli/templates_src/codex/skills/map-debug/SKILL.md.jinja +1 -0
  42. mapify_cli-3.33.0/src/mapify_cli/templates_src/codex/skills/map-efficient/SKILL.md.jinja +1 -0
  43. mapify_cli-3.33.0/src/mapify_cli/templates_src/codex/skills/map-efficient/efficient-reference.md.jinja +1 -0
  44. mapify_cli-3.33.0/src/mapify_cli/templates_src/codex/skills/map-explain/SKILL.md.jinja +1 -0
  45. mapify_cli-3.33.0/src/mapify_cli/templates_src/codex/skills/map-fast/SKILL.md.jinja +1 -0
  46. mapify_cli-3.33.0/src/mapify_cli/templates_src/codex/skills/map-learn/SKILL.md.jinja +1 -0
  47. mapify_cli-3.33.0/src/mapify_cli/templates_src/codex/skills/map-learn/templates/example-rules.md.jinja +1 -0
  48. mapify_cli-3.33.0/src/mapify_cli/templates_src/codex/skills/map-learn/templates/rules-unconditional.md.jinja +1 -0
  49. mapify_cli-3.33.0/src/mapify_cli/templates_src/codex/skills/map-learn/templates/rules-with-paths.md.jinja +1 -0
  50. mapify_cli-3.33.0/src/mapify_cli/templates_src/codex/skills/map-memory-now/SKILL.md.jinja +1 -0
  51. mapify_cli-3.33.0/src/mapify_cli/templates_src/codex/skills/map-plan/SKILL.md.jinja +1 -0
  52. mapify_cli-3.33.0/src/mapify_cli/templates_src/codex/skills/map-plan/plan-reference.md.jinja +1 -0
  53. mapify_cli-3.33.0/src/mapify_cli/templates_src/codex/skills/map-prd-review/SKILL.md.jinja +1 -0
  54. mapify_cli-3.33.0/src/mapify_cli/templates_src/codex/skills/map-resume/SKILL.md.jinja +1 -0
  55. mapify_cli-3.33.0/src/mapify_cli/templates_src/codex/skills/map-resume/resume-reference.md.jinja +1 -0
  56. mapify_cli-3.33.0/src/mapify_cli/templates_src/codex/skills/map-skill-eval/SKILL.md.jinja +1 -0
  57. mapify_cli-3.33.0/src/mapify_cli/templates_src/codex/skills/map-so-search/SKILL.md.jinja +1 -0
  58. mapify_cli-3.33.0/src/mapify_cli/templates_src/codex/skills/map-so-search/scripts/sofa_search.py.jinja +1 -0
  59. mapify_cli-3.33.0/src/mapify_cli/templates_src/codex/skills/map-state/SKILL.md.jinja +1 -0
  60. mapify_cli-3.33.0/src/mapify_cli/templates_src/codex/skills/map-state/scripts/check-complete.sh.jinja +1 -0
  61. mapify_cli-3.33.0/src/mapify_cli/templates_src/codex/skills/map-state/scripts/get-plan-path.sh.jinja +1 -0
  62. mapify_cli-3.33.0/src/mapify_cli/templates_src/codex/skills/map-state/scripts/init-session.sh.jinja +1 -0
  63. mapify_cli-3.33.0/src/mapify_cli/templates_src/codex/skills/map-state/scripts/show-focus.sh.jinja +1 -0
  64. mapify_cli-3.33.0/src/mapify_cli/templates_src/codex/skills/map-state/templates/findings.md.jinja +1 -0
  65. mapify_cli-3.33.0/src/mapify_cli/templates_src/codex/skills/map-state/templates/iteration_history.md.jinja +1 -0
  66. mapify_cli-3.33.0/src/mapify_cli/templates_src/codex/skills/map-state/templates/progress.md.jinja +1 -0
  67. mapify_cli-3.33.0/src/mapify_cli/templates_src/codex/skills/map-state/templates/task_plan.md.jinja +1 -0
  68. mapify_cli-3.33.0/src/mapify_cli/templates_src/codex/skills/map-task/SKILL.md.jinja +1 -0
  69. mapify_cli-3.33.0/src/mapify_cli/templates_src/codex/skills/map-tdd/SKILL.md.jinja +1 -0
  70. mapify_cli-3.33.0/src/mapify_cli/templates_src/codex/skills/map-tokenreport/SKILL.md.jinja +1 -0
  71. mapify_cli-3.33.0/src/mapify_cli/templates_src/codex/skills/map-understand/SKILL.md.jinja +1 -0
  72. mapify_cli-3.33.0/src/mapify_cli/templates_src/codex/skills/map-upgrade/SKILL.md.jinja +1 -0
  73. {mapify_cli-3.32.0 → mapify_cli-3.33.0}/src/mapify_cli/templates_src/hooks/end-of-turn.sh.jinja +11 -3
  74. {mapify_cli-3.32.0 → mapify_cli-3.33.0}/src/mapify_cli/templates_src/hooks/workflow-gate.py.jinja +87 -3
  75. mapify_cli-3.33.0/src/mapify_cli/templates_src/map/scripts/map_interruption.py.jinja +981 -0
  76. {mapify_cli-3.32.0 → mapify_cli-3.33.0}/src/mapify_cli/templates_src/map/scripts/map_orchestrator.py.jinja +221 -6
  77. {mapify_cli-3.32.0 → mapify_cli-3.33.0}/src/mapify_cli/templates_src/map/scripts/map_step_runner.py.jinja +691 -256
  78. {mapify_cli-3.32.0 → mapify_cli-3.33.0}/src/mapify_cli/templates_src/skills/map-check/SKILL.md.jinja +18 -12
  79. {mapify_cli-3.32.0/src/mapify_cli/templates_src/codex → mapify_cli-3.33.0/src/mapify_cli/templates_src}/skills/map-check/check-reference.md.jinja +7 -6
  80. {mapify_cli-3.32.0/src/mapify_cli/templates_src/codex → mapify_cli-3.33.0/src/mapify_cli/templates_src}/skills/map-debug/SKILL.md.jinja +76 -36
  81. {mapify_cli-3.32.0 → mapify_cli-3.33.0}/src/mapify_cli/templates_src/skills/map-efficient/SKILL.md.jinja +364 -110
  82. {mapify_cli-3.32.0 → mapify_cli-3.33.0}/src/mapify_cli/templates_src/skills/map-efficient/efficient-reference.md.jinja +373 -113
  83. {mapify_cli-3.32.0 → mapify_cli-3.33.0}/src/mapify_cli/templates_src/skills/map-explain/SKILL.md.jinja +125 -35
  84. {mapify_cli-3.32.0/src/mapify_cli/templates_src/codex → mapify_cli-3.33.0/src/mapify_cli/templates_src}/skills/map-fast/SKILL.md.jinja +35 -16
  85. {mapify_cli-3.32.0/src/mapify_cli/templates_src/codex → mapify_cli-3.33.0/src/mapify_cli/templates_src}/skills/map-learn/SKILL.md.jinja +94 -57
  86. {mapify_cli-3.32.0/src/mapify_cli/templates_src/codex → mapify_cli-3.33.0/src/mapify_cli/templates_src}/skills/map-learn/templates/example-rules.md.jinja +2 -1
  87. mapify_cli-3.33.0/src/mapify_cli/templates_src/skills/map-learn/templates/rules-unconditional.md.jinja +6 -0
  88. {mapify_cli-3.32.0/src/mapify_cli/templates_src/codex → mapify_cli-3.33.0/src/mapify_cli/templates_src}/skills/map-learn/templates/rules-with-paths.md.jinja +2 -1
  89. {mapify_cli-3.32.0 → mapify_cli-3.33.0}/src/mapify_cli/templates_src/skills/map-memory-now/SKILL.md.jinja +35 -25
  90. mapify_cli-3.33.0/src/mapify_cli/templates_src/skills/map-plan/SKILL.md.jinja +1175 -0
  91. {mapify_cli-3.32.0 → mapify_cli-3.33.0}/src/mapify_cli/templates_src/skills/map-plan/plan-reference.md.jinja +5 -4
  92. {mapify_cli-3.32.0 → mapify_cli-3.33.0}/src/mapify_cli/templates_src/skills/map-prd-review/SKILL.md.jinja +88 -46
  93. {mapify_cli-3.32.0 → mapify_cli-3.33.0}/src/mapify_cli/templates_src/skills/map-resume/SKILL.md.jinja +28 -14
  94. {mapify_cli-3.32.0 → mapify_cli-3.33.0}/src/mapify_cli/templates_src/skills/map-resume/resume-reference.md.jinja +36 -26
  95. {mapify_cli-3.32.0 → mapify_cli-3.33.0}/src/mapify_cli/templates_src/skills/map-review/SKILL.md.jinja +6 -9
  96. {mapify_cli-3.32.0 → mapify_cli-3.33.0}/src/mapify_cli/templates_src/skills/map-review/review-reference.md.jinja +16 -10
  97. mapify_cli-3.33.0/src/mapify_cli/templates_src/skills/map-skill-eval/SKILL.md.jinja +201 -0
  98. {mapify_cli-3.32.0 → mapify_cli-3.33.0}/src/mapify_cli/templates_src/skills/map-so-search/SKILL.md.jinja +11 -9
  99. {mapify_cli-3.32.0 → mapify_cli-3.33.0}/src/mapify_cli/templates_src/skills/map-so-search/scripts/sofa_search.py.jinja +3 -3
  100. {mapify_cli-3.32.0 → mapify_cli-3.33.0}/src/mapify_cli/templates_src/skills/map-state/SKILL.md.jinja +20 -14
  101. {mapify_cli-3.32.0/src/mapify_cli/templates_src/codex → mapify_cli-3.33.0/src/mapify_cli/templates_src}/skills/map-state/scripts/check-complete.sh.jinja +3 -2
  102. {mapify_cli-3.32.0 → mapify_cli-3.33.0}/src/mapify_cli/templates_src/skills/map-state/scripts/get-plan-path.sh.jinja +6 -4
  103. {mapify_cli-3.32.0/src/mapify_cli/templates_src/codex → mapify_cli-3.33.0/src/mapify_cli/templates_src}/skills/map-state/scripts/init-session.sh.jinja +6 -4
  104. {mapify_cli-3.32.0/src/mapify_cli/templates_src/codex → mapify_cli-3.33.0/src/mapify_cli/templates_src}/skills/map-state/scripts/show-focus.sh.jinja +14 -8
  105. {mapify_cli-3.32.0/src/mapify_cli/templates_src/codex → mapify_cli-3.33.0/src/mapify_cli/templates_src}/skills/map-state/templates/findings.md.jinja +10 -5
  106. {mapify_cli-3.32.0/src/mapify_cli/templates_src/codex → mapify_cli-3.33.0/src/mapify_cli/templates_src}/skills/map-state/templates/iteration_history.md.jinja +1 -0
  107. {mapify_cli-3.32.0/src/mapify_cli/templates_src/codex → mapify_cli-3.33.0/src/mapify_cli/templates_src}/skills/map-state/templates/progress.md.jinja +1 -0
  108. {mapify_cli-3.32.0/src/mapify_cli/templates_src/codex → mapify_cli-3.33.0/src/mapify_cli/templates_src}/skills/map-state/templates/task_plan.md.jinja +1 -0
  109. {mapify_cli-3.32.0 → mapify_cli-3.33.0}/src/mapify_cli/templates_src/skills/map-task/SKILL.md.jinja +42 -35
  110. {mapify_cli-3.32.0 → mapify_cli-3.33.0}/src/mapify_cli/templates_src/skills/map-tdd/SKILL.md.jinja +62 -38
  111. {mapify_cli-3.32.0 → mapify_cli-3.33.0}/src/mapify_cli/templates_src/skills/map-tokenreport/SKILL.md.jinja +25 -19
  112. mapify_cli-3.33.0/src/mapify_cli/templates_src/skills/map-understand/SKILL.md.jinja +174 -0
  113. {mapify_cli-3.32.0 → mapify_cli-3.33.0}/src/mapify_cli/templates_src/skills/map-upgrade/SKILL.md.jinja +3 -1
  114. {mapify_cli-3.32.0 → mapify_cli-3.33.0}/tests/hooks/test_end_of_turn.py +99 -0
  115. mapify_cli-3.33.0/tests/test_agent_cli_correctness.py +168 -0
  116. mapify_cli-3.33.0/tests/test_map_interruption.py +559 -0
  117. {mapify_cli-3.32.0 → mapify_cli-3.33.0}/tests/test_map_orchestrator.py +483 -3
  118. {mapify_cli-3.32.0 → mapify_cli-3.33.0}/tests/test_map_step_runner.py +279 -8
  119. mapify_cli-3.33.0/tests/test_mutation_path_normalization.py +281 -0
  120. {mapify_cli-3.32.0 → mapify_cli-3.33.0}/tests/test_python_version_requirement.py +17 -2
  121. {mapify_cli-3.32.0 → mapify_cli-3.33.0}/tests/test_release_ci_gates.py +30 -0
  122. mapify_cli-3.33.0/tests/test_repair_attribution.py +876 -0
  123. mapify_cli-3.33.0/tests/test_repair_workflow_gate.py +171 -0
  124. {mapify_cli-3.32.0 → mapify_cli-3.33.0}/tests/test_skills.py +334 -25
  125. {mapify_cli-3.32.0 → mapify_cli-3.33.0}/tests/test_skills_eval_apply.py +276 -0
  126. mapify_cli-3.32.0/src/mapify_cli/skills_eval/apply_patcher.py +0 -238
  127. mapify_cli-3.32.0/src/mapify_cli/templates_src/codex/skills/map-check/SKILL.md.jinja +0 -309
  128. mapify_cli-3.32.0/src/mapify_cli/templates_src/codex/skills/map-efficient/SKILL.md.jinja +0 -357
  129. mapify_cli-3.32.0/src/mapify_cli/templates_src/codex/skills/map-efficient/efficient-reference.md.jinja +0 -351
  130. mapify_cli-3.32.0/src/mapify_cli/templates_src/codex/skills/map-explain/SKILL.md.jinja +0 -280
  131. mapify_cli-3.32.0/src/mapify_cli/templates_src/codex/skills/map-learn/templates/rules-unconditional.md.jinja +0 -5
  132. mapify_cli-3.32.0/src/mapify_cli/templates_src/codex/skills/map-memory-now/SKILL.md.jinja +0 -136
  133. mapify_cli-3.32.0/src/mapify_cli/templates_src/codex/skills/map-plan/SKILL.md.jinja +0 -839
  134. mapify_cli-3.32.0/src/mapify_cli/templates_src/codex/skills/map-plan/plan-reference.md.jinja +0 -226
  135. mapify_cli-3.32.0/src/mapify_cli/templates_src/codex/skills/map-prd-review/SKILL.md.jinja +0 -204
  136. mapify_cli-3.32.0/src/mapify_cli/templates_src/codex/skills/map-resume/SKILL.md.jinja +0 -294
  137. mapify_cli-3.32.0/src/mapify_cli/templates_src/codex/skills/map-resume/resume-reference.md.jinja +0 -218
  138. mapify_cli-3.32.0/src/mapify_cli/templates_src/codex/skills/map-skill-eval/SKILL.md.jinja +0 -178
  139. mapify_cli-3.32.0/src/mapify_cli/templates_src/codex/skills/map-so-search/SKILL.md.jinja +0 -122
  140. mapify_cli-3.32.0/src/mapify_cli/templates_src/codex/skills/map-so-search/scripts/sofa_search.py.jinja +0 -573
  141. mapify_cli-3.32.0/src/mapify_cli/templates_src/codex/skills/map-state/SKILL.md.jinja +0 -217
  142. mapify_cli-3.32.0/src/mapify_cli/templates_src/codex/skills/map-state/scripts/get-plan-path.sh.jinja +0 -40
  143. mapify_cli-3.32.0/src/mapify_cli/templates_src/codex/skills/map-task/SKILL.md.jinja +0 -295
  144. mapify_cli-3.32.0/src/mapify_cli/templates_src/codex/skills/map-tdd/SKILL.md.jinja +0 -536
  145. mapify_cli-3.32.0/src/mapify_cli/templates_src/codex/skills/map-tokenreport/SKILL.md.jinja +0 -245
  146. mapify_cli-3.32.0/src/mapify_cli/templates_src/codex/skills/map-understand/SKILL.md.jinja +0 -113
  147. mapify_cli-3.32.0/src/mapify_cli/templates_src/codex/skills/map-upgrade/SKILL.md.jinja +0 -5
  148. mapify_cli-3.32.0/src/mapify_cli/templates_src/skills/map-check/check-reference.md.jinja +0 -70
  149. mapify_cli-3.32.0/src/mapify_cli/templates_src/skills/map-debug/SKILL.md.jinja +0 -405
  150. mapify_cli-3.32.0/src/mapify_cli/templates_src/skills/map-fast/SKILL.md.jinja +0 -190
  151. mapify_cli-3.32.0/src/mapify_cli/templates_src/skills/map-learn/SKILL.md.jinja +0 -404
  152. mapify_cli-3.32.0/src/mapify_cli/templates_src/skills/map-learn/templates/example-rules.md.jinja +0 -19
  153. mapify_cli-3.32.0/src/mapify_cli/templates_src/skills/map-learn/templates/rules-unconditional.md.jinja +0 -5
  154. mapify_cli-3.32.0/src/mapify_cli/templates_src/skills/map-learn/templates/rules-with-paths.md.jinja +0 -10
  155. mapify_cli-3.32.0/src/mapify_cli/templates_src/skills/map-plan/SKILL.md.jinja +0 -511
  156. mapify_cli-3.32.0/src/mapify_cli/templates_src/skills/map-skill-eval/SKILL.md.jinja +0 -181
  157. mapify_cli-3.32.0/src/mapify_cli/templates_src/skills/map-state/scripts/check-complete.sh.jinja +0 -68
  158. mapify_cli-3.32.0/src/mapify_cli/templates_src/skills/map-state/scripts/init-session.sh.jinja +0 -78
  159. mapify_cli-3.32.0/src/mapify_cli/templates_src/skills/map-state/scripts/show-focus.sh.jinja +0 -62
  160. mapify_cli-3.32.0/src/mapify_cli/templates_src/skills/map-state/templates/findings.md.jinja +0 -62
  161. mapify_cli-3.32.0/src/mapify_cli/templates_src/skills/map-state/templates/iteration_history.md.jinja +0 -93
  162. mapify_cli-3.32.0/src/mapify_cli/templates_src/skills/map-state/templates/progress.md.jinja +0 -75
  163. mapify_cli-3.32.0/src/mapify_cli/templates_src/skills/map-state/templates/task_plan.md.jinja +0 -70
  164. mapify_cli-3.32.0/src/mapify_cli/templates_src/skills/map-understand/SKILL.md.jinja +0 -129
  165. mapify_cli-3.32.0/tests/test_agent_cli_correctness.py +0 -91
  166. {mapify_cli-3.32.0 → mapify_cli-3.33.0}/.claude/hooks/README.md +0 -0
  167. {mapify_cli-3.32.0 → mapify_cli-3.33.0}/.claude/skills/README.md +0 -0
  168. {mapify_cli-3.32.0 → mapify_cli-3.33.0}/.gitignore +0 -0
  169. {mapify_cli-3.32.0 → mapify_cli-3.33.0}/LICENSE +0 -0
  170. {mapify_cli-3.32.0 → mapify_cli-3.33.0}/src/mapify_cli/__main__.py +0 -0
  171. {mapify_cli-3.32.0 → mapify_cli-3.33.0}/src/mapify_cli/_locking.py +0 -0
  172. {mapify_cli-3.32.0 → mapify_cli-3.33.0}/src/mapify_cli/_python_guard.py +0 -0
  173. {mapify_cli-3.32.0 → mapify_cli-3.33.0}/src/mapify_cli/auto_update.py +0 -0
  174. {mapify_cli-3.32.0 → mapify_cli-3.33.0}/src/mapify_cli/boundary_quality_report.py +0 -0
  175. {mapify_cli-3.32.0 → mapify_cli-3.33.0}/src/mapify_cli/cli_ui.py +0 -0
  176. {mapify_cli-3.32.0 → mapify_cli-3.33.0}/src/mapify_cli/code_map.py +0 -0
  177. {mapify_cli-3.32.0 → mapify_cli-3.33.0}/src/mapify_cli/codex_exec.py +0 -0
  178. {mapify_cli-3.32.0 → mapify_cli-3.33.0}/src/mapify_cli/config/__init__.py +0 -0
  179. {mapify_cli-3.32.0 → mapify_cli-3.33.0}/src/mapify_cli/config/mcp.py +0 -0
  180. {mapify_cli-3.32.0 → mapify_cli-3.33.0}/src/mapify_cli/config/project_config.py +0 -0
  181. {mapify_cli-3.32.0 → mapify_cli-3.33.0}/src/mapify_cli/config/settings.py +0 -0
  182. {mapify_cli-3.32.0 → mapify_cli-3.33.0}/src/mapify_cli/delivery/__init__.py +0 -0
  183. {mapify_cli-3.32.0 → mapify_cli-3.33.0}/src/mapify_cli/delivery/agent_generator.py +0 -0
  184. {mapify_cli-3.32.0 → mapify_cli-3.33.0}/src/mapify_cli/delivery/codex_copier.py +0 -0
  185. {mapify_cli-3.32.0 → mapify_cli-3.33.0}/src/mapify_cli/delivery/domain_skill.py +0 -0
  186. {mapify_cli-3.32.0 → mapify_cli-3.33.0}/src/mapify_cli/delivery/file_copier.py +0 -0
  187. {mapify_cli-3.32.0 → mapify_cli-3.33.0}/src/mapify_cli/delivery/governance_report.py +0 -0
  188. {mapify_cli-3.32.0 → mapify_cli-3.33.0}/src/mapify_cli/delivery/managed_file_copier.py +0 -0
  189. {mapify_cli-3.32.0 → mapify_cli-3.33.0}/src/mapify_cli/delivery/providers.py +0 -0
  190. {mapify_cli-3.32.0 → mapify_cli-3.33.0}/src/mapify_cli/delivery/template_renderer.py +0 -0
  191. {mapify_cli-3.32.0 → mapify_cli-3.33.0}/src/mapify_cli/dependency_graph.py +0 -0
  192. {mapify_cli-3.32.0 → mapify_cli-3.33.0}/src/mapify_cli/grace_eval/__init__.py +0 -0
  193. {mapify_cli-3.32.0 → mapify_cli-3.33.0}/src/mapify_cli/grace_eval/schema.py +0 -0
  194. {mapify_cli-3.32.0 → mapify_cli-3.33.0}/src/mapify_cli/grace_eval/sweep.py +0 -0
  195. {mapify_cli-3.32.0 → mapify_cli-3.33.0}/src/mapify_cli/install_manifest.py +0 -0
  196. {mapify_cli-3.32.0 → mapify_cli-3.33.0}/src/mapify_cli/intent_detector.py +0 -0
  197. {mapify_cli-3.32.0 → mapify_cli-3.33.0}/src/mapify_cli/memory/__init__.py +0 -0
  198. {mapify_cli-3.32.0 → mapify_cli-3.33.0}/src/mapify_cli/memory/capture.py +0 -0
  199. {mapify_cli-3.32.0 → mapify_cli-3.33.0}/src/mapify_cli/memory/digest_schema.py +0 -0
  200. {mapify_cli-3.32.0 → mapify_cli-3.33.0}/src/mapify_cli/memory/finalize.py +0 -0
  201. {mapify_cli-3.32.0 → mapify_cli-3.33.0}/src/mapify_cli/memory/recall.py +0 -0
  202. {mapify_cli-3.32.0 → mapify_cli-3.33.0}/src/mapify_cli/minimality_eval.py +0 -0
  203. {mapify_cli-3.32.0 → mapify_cli-3.33.0}/src/mapify_cli/minimality_report.py +0 -0
  204. {mapify_cli-3.32.0 → mapify_cli-3.33.0}/src/mapify_cli/parallelism_observability.py +0 -0
  205. {mapify_cli-3.32.0 → mapify_cli-3.33.0}/src/mapify_cli/provider_registry.py +0 -0
  206. {mapify_cli-3.32.0 → mapify_cli-3.33.0}/src/mapify_cli/python_runtime.py +0 -0
  207. {mapify_cli-3.32.0 → mapify_cli-3.33.0}/src/mapify_cli/ralph_state.py +0 -0
  208. {mapify_cli-3.32.0 → mapify_cli-3.33.0}/src/mapify_cli/repo_insight.py +0 -0
  209. {mapify_cli-3.32.0 → mapify_cli-3.33.0}/src/mapify_cli/research_eval.py +0 -0
  210. {mapify_cli-3.32.0 → mapify_cli-3.33.0}/src/mapify_cli/research_eval_compare.py +0 -0
  211. {mapify_cli-3.32.0 → mapify_cli-3.33.0}/src/mapify_cli/schemas.py +0 -0
  212. {mapify_cli-3.32.0 → mapify_cli-3.33.0}/src/mapify_cli/scope_classifier.py +0 -0
  213. {mapify_cli-3.32.0 → mapify_cli-3.33.0}/src/mapify_cli/skill_ir.py +0 -0
  214. {mapify_cli-3.32.0 → mapify_cli-3.33.0}/src/mapify_cli/skills_eval/__init__.py +0 -0
  215. {mapify_cli-3.32.0 → mapify_cli-3.33.0}/src/mapify_cli/skills_eval/aggregator.py +0 -0
  216. {mapify_cli-3.32.0 → mapify_cli-3.33.0}/src/mapify_cli/skills_eval/assertions.py +0 -0
  217. {mapify_cli-3.32.0 → mapify_cli-3.33.0}/src/mapify_cli/skills_eval/description_optimizer.py +0 -0
  218. {mapify_cli-3.32.0 → mapify_cli-3.33.0}/src/mapify_cli/skills_eval/dispatcher.py +0 -0
  219. {mapify_cli-3.32.0 → mapify_cli-3.33.0}/src/mapify_cli/skills_eval/eval_schema.py +0 -0
  220. {mapify_cli-3.32.0 → mapify_cli-3.33.0}/src/mapify_cli/skills_eval/proposer.py +0 -0
  221. {mapify_cli-3.32.0 → mapify_cli-3.33.0}/src/mapify_cli/skills_eval/runner.py +0 -0
  222. {mapify_cli-3.32.0 → mapify_cli-3.33.0}/src/mapify_cli/skills_eval/trajectory/__init__.py +0 -0
  223. {mapify_cli-3.32.0 → mapify_cli-3.33.0}/src/mapify_cli/skills_eval/trajectory/bundle.py +0 -0
  224. {mapify_cli-3.32.0 → mapify_cli-3.33.0}/src/mapify_cli/skills_eval/trajectory/dispatcher.py +0 -0
  225. {mapify_cli-3.32.0 → mapify_cli-3.33.0}/src/mapify_cli/skills_eval/trajectory/eval_schema.py +0 -0
  226. {mapify_cli-3.32.0 → mapify_cli-3.33.0}/src/mapify_cli/skills_eval/trajectory/gates.py +0 -0
  227. {mapify_cli-3.32.0 → mapify_cli-3.33.0}/src/mapify_cli/skills_eval/trajectory/judge.py +0 -0
  228. {mapify_cli-3.32.0 → mapify_cli-3.33.0}/src/mapify_cli/skills_eval/trajectory/repeated.py +0 -0
  229. {mapify_cli-3.32.0 → mapify_cli-3.33.0}/src/mapify_cli/skills_eval/trajectory/report.py +0 -0
  230. {mapify_cli-3.32.0 → mapify_cli-3.33.0}/src/mapify_cli/skills_eval/trajectory/runner.py +0 -0
  231. {mapify_cli-3.32.0 → mapify_cli-3.33.0}/src/mapify_cli/skills_eval/trajectory/seeding.py +0 -0
  232. {mapify_cli-3.32.0 → mapify_cli-3.33.0}/src/mapify_cli/skills_eval/viewer.py +0 -0
  233. {mapify_cli-3.32.0 → mapify_cli-3.33.0}/src/mapify_cli/templates/.gitignore +0 -0
  234. {mapify_cli-3.32.0 → mapify_cli-3.33.0}/src/mapify_cli/templates/CLAUDE.md +0 -0
  235. {mapify_cli-3.32.0 → mapify_cli-3.33.0}/src/mapify_cli/templates/agents/actor.md +0 -0
  236. {mapify_cli-3.32.0 → mapify_cli-3.33.0}/src/mapify_cli/templates/agents/documentation-reviewer.md +0 -0
  237. {mapify_cli-3.32.0 → mapify_cli-3.33.0}/src/mapify_cli/templates/agents/evaluator.md +0 -0
  238. {mapify_cli-3.32.0 → mapify_cli-3.33.0}/src/mapify_cli/templates/agents/final-verifier.md +0 -0
  239. {mapify_cli-3.32.0 → mapify_cli-3.33.0}/src/mapify_cli/templates/agents/predictor.md +0 -0
  240. {mapify_cli-3.32.0 → mapify_cli-3.33.0}/src/mapify_cli/templates/agents/reflector.md +0 -0
  241. {mapify_cli-3.32.0 → mapify_cli-3.33.0}/src/mapify_cli/templates/agents/research-agent.md +0 -0
  242. {mapify_cli-3.32.0 → mapify_cli-3.33.0}/src/mapify_cli/templates/agents/task-decomposer.md +0 -0
  243. {mapify_cli-3.32.0 → mapify_cli-3.33.0}/src/mapify_cli/templates/codex/AGENTS.md +0 -0
  244. {mapify_cli-3.32.0 → mapify_cli-3.33.0}/src/mapify_cli/templates/codex/agents/actor.toml +0 -0
  245. {mapify_cli-3.32.0 → mapify_cli-3.33.0}/src/mapify_cli/templates/codex/agents/decomposer.toml +0 -0
  246. {mapify_cli-3.32.0 → mapify_cli-3.33.0}/src/mapify_cli/templates/codex/agents/documentation-reviewer.toml +0 -0
  247. {mapify_cli-3.32.0 → mapify_cli-3.33.0}/src/mapify_cli/templates/codex/agents/evaluator.toml +0 -0
  248. {mapify_cli-3.32.0 → mapify_cli-3.33.0}/src/mapify_cli/templates/codex/agents/final-verifier.toml +0 -0
  249. {mapify_cli-3.32.0 → mapify_cli-3.33.0}/src/mapify_cli/templates/codex/agents/predictor.toml +0 -0
  250. {mapify_cli-3.32.0 → mapify_cli-3.33.0}/src/mapify_cli/templates/codex/agents/reflector.toml +0 -0
  251. {mapify_cli-3.32.0 → mapify_cli-3.33.0}/src/mapify_cli/templates/codex/agents/researcher.toml +0 -0
  252. {mapify_cli-3.32.0 → mapify_cli-3.33.0}/src/mapify_cli/templates/codex/config.toml +0 -0
  253. {mapify_cli-3.32.0 → mapify_cli-3.33.0}/src/mapify_cli/templates/codex/hooks/context-meter.py +0 -0
  254. {mapify_cli-3.32.0 → mapify_cli-3.33.0}/src/mapify_cli/templates/codex/hooks/detect-clarification-triggers.py +0 -0
  255. {mapify_cli-3.32.0 → mapify_cli-3.33.0}/src/mapify_cli/templates/codex/hooks/map-memory-capture.py +0 -0
  256. {mapify_cli-3.32.0 → mapify_cli-3.33.0}/src/mapify_cli/templates/codex/hooks/map-memory-endmark.py +0 -0
  257. {mapify_cli-3.32.0 → mapify_cli-3.33.0}/src/mapify_cli/templates/codex/hooks/map-memory-recall.py +0 -0
  258. {mapify_cli-3.32.0 → mapify_cli-3.33.0}/src/mapify_cli/templates/codex/hooks/map-memory-session.py +0 -0
  259. {mapify_cli-3.32.0 → mapify_cli-3.33.0}/src/mapify_cli/templates/codex/hooks/map-stop.py +0 -0
  260. {mapify_cli-3.32.0 → mapify_cli-3.33.0}/src/mapify_cli/templates/codex/hooks/map-token-meter.py +0 -0
  261. {mapify_cli-3.32.0 → mapify_cli-3.33.0}/src/mapify_cli/templates/codex/hooks/post-compact-context.py +0 -0
  262. {mapify_cli-3.32.0 → mapify_cli-3.33.0}/src/mapify_cli/templates/codex/hooks/pre-compact-save-transcript.py +0 -0
  263. {mapify_cli-3.32.0 → mapify_cli-3.33.0}/src/mapify_cli/templates/codex/hooks/ralph-context-pruner.py +0 -0
  264. {mapify_cli-3.32.0 → mapify_cli-3.33.0}/src/mapify_cli/templates/codex/hooks/ralph-iteration-logger.py +0 -0
  265. {mapify_cli-3.32.0 → mapify_cli-3.33.0}/src/mapify_cli/templates/codex/hooks/safety-guardrails.py +0 -0
  266. {mapify_cli-3.32.0 → mapify_cli-3.33.0}/src/mapify_cli/templates/codex/hooks/scrub-internal-ids.py +0 -0
  267. {mapify_cli-3.32.0 → mapify_cli-3.33.0}/src/mapify_cli/templates/codex/hooks/workflow-context-injector.py +0 -0
  268. {mapify_cli-3.32.0 → mapify_cli-3.33.0}/src/mapify_cli/templates/codex/hooks.json +0 -0
  269. {mapify_cli-3.32.0 → mapify_cli-3.33.0}/src/mapify_cli/templates/codex/references/map-json-output-contracts.md +0 -0
  270. {mapify_cli-3.32.0 → mapify_cli-3.33.0}/src/mapify_cli/templates/codex/references/map-output-examples.md +0 -0
  271. {mapify_cli-3.32.0 → mapify_cli-3.33.0}/src/mapify_cli/templates/codex/references/map-xml-prompt-envelopes.md +0 -0
  272. {mapify_cli-3.32.0 → mapify_cli-3.33.0}/src/mapify_cli/templates/codex/skills/map-architecture/SKILL.md +0 -0
  273. {mapify_cli-3.32.0 → mapify_cli-3.33.0}/src/mapify_cli/templates/codex/skills/map-auto/SKILL.md +0 -0
  274. {mapify_cli-3.32.0 → mapify_cli-3.33.0}/src/mapify_cli/templates/codex/skills/map-auto/auto-reference.md +0 -0
  275. {mapify_cli-3.32.0 → mapify_cli-3.33.0}/src/mapify_cli/templates/codex/skills/map-check/SKILL.md +0 -0
  276. {mapify_cli-3.32.0 → mapify_cli-3.33.0}/src/mapify_cli/templates/codex/skills/map-check/check-reference.md +0 -0
  277. {mapify_cli-3.32.0 → mapify_cli-3.33.0}/src/mapify_cli/templates/codex/skills/map-debug/SKILL.md +0 -0
  278. {mapify_cli-3.32.0 → mapify_cli-3.33.0}/src/mapify_cli/templates/codex/skills/map-fast/SKILL.md +0 -0
  279. {mapify_cli-3.32.0 → mapify_cli-3.33.0}/src/mapify_cli/templates/codex/skills/map-learn/templates/example-rules.md +0 -0
  280. {mapify_cli-3.32.0 → mapify_cli-3.33.0}/src/mapify_cli/templates/codex/skills/map-learn/templates/rules-unconditional.md +0 -0
  281. {mapify_cli-3.32.0 → mapify_cli-3.33.0}/src/mapify_cli/templates/codex/skills/map-learn/templates/rules-with-paths.md +0 -0
  282. {mapify_cli-3.32.0 → mapify_cli-3.33.0}/src/mapify_cli/templates/codex/skills/map-plan/SKILL.md +0 -0
  283. {mapify_cli-3.32.0 → mapify_cli-3.33.0}/src/mapify_cli/templates/codex/skills/map-plan/plan-reference.md +0 -0
  284. {mapify_cli-3.32.0 → mapify_cli-3.33.0}/src/mapify_cli/templates/codex/skills/map-prd-review/SKILL.md +0 -0
  285. {mapify_cli-3.32.0 → mapify_cli-3.33.0}/src/mapify_cli/templates/codex/skills/map-release/SKILL.md +0 -0
  286. {mapify_cli-3.32.0 → mapify_cli-3.33.0}/src/mapify_cli/templates/codex/skills/map-release/release-reference.md +0 -0
  287. {mapify_cli-3.32.0 → mapify_cli-3.33.0}/src/mapify_cli/templates/codex/skills/map-review/adversarial-reference.md +0 -0
  288. {mapify_cli-3.32.0 → mapify_cli-3.33.0}/src/mapify_cli/templates/codex/skills/map-so-search/SKILL.md +0 -0
  289. {mapify_cli-3.32.0 → mapify_cli-3.33.0}/src/mapify_cli/templates/codex/skills/map-so-search/scripts/sofa_search.py +0 -0
  290. {mapify_cli-3.32.0 → mapify_cli-3.33.0}/src/mapify_cli/templates/codex/skills/map-state/SKILL.md +0 -0
  291. {mapify_cli-3.32.0 → mapify_cli-3.33.0}/src/mapify_cli/templates/codex/skills/map-state/scripts/check-complete.sh +0 -0
  292. {mapify_cli-3.32.0 → mapify_cli-3.33.0}/src/mapify_cli/templates/codex/skills/map-state/scripts/get-plan-path.sh +0 -0
  293. {mapify_cli-3.32.0 → mapify_cli-3.33.0}/src/mapify_cli/templates/codex/skills/map-state/scripts/init-session.sh +0 -0
  294. {mapify_cli-3.32.0 → mapify_cli-3.33.0}/src/mapify_cli/templates/codex/skills/map-state/scripts/show-focus.sh +0 -0
  295. {mapify_cli-3.32.0 → mapify_cli-3.33.0}/src/mapify_cli/templates/codex/skills/map-state/templates/findings.md +0 -0
  296. {mapify_cli-3.32.0 → mapify_cli-3.33.0}/src/mapify_cli/templates/codex/skills/map-state/templates/iteration_history.md +0 -0
  297. {mapify_cli-3.32.0 → mapify_cli-3.33.0}/src/mapify_cli/templates/codex/skills/map-state/templates/progress.md +0 -0
  298. {mapify_cli-3.32.0 → mapify_cli-3.33.0}/src/mapify_cli/templates/codex/skills/map-state/templates/task_plan.md +0 -0
  299. {mapify_cli-3.32.0 → mapify_cli-3.33.0}/src/mapify_cli/templates/codex/skills/map-task/SKILL.md +0 -0
  300. {mapify_cli-3.32.0 → mapify_cli-3.33.0}/src/mapify_cli/templates/codex/skills/map-tdd/SKILL.md +0 -0
  301. {mapify_cli-3.32.0 → mapify_cli-3.33.0}/src/mapify_cli/templates/codex/skills/map-tokenreport/SKILL.md +0 -0
  302. {mapify_cli-3.32.0 → mapify_cli-3.33.0}/src/mapify_cli/templates/codex/skills/map-understand/SKILL.md +0 -0
  303. {mapify_cli-3.32.0 → mapify_cli-3.33.0}/src/mapify_cli/templates/codex/skills/map-upgrade/SKILL.md +0 -0
  304. {mapify_cli-3.32.0 → mapify_cli-3.33.0}/src/mapify_cli/templates/codex/skills/map-wayfind/SKILL.md +0 -0
  305. {mapify_cli-3.32.0 → mapify_cli-3.33.0}/src/mapify_cli/templates/codex/skills/map-wayfind/wayfind-reference.md +0 -0
  306. {mapify_cli-3.32.0 → mapify_cli-3.33.0}/src/mapify_cli/templates/hooks/README.md +0 -0
  307. {mapify_cli-3.32.0 → mapify_cli-3.33.0}/src/mapify_cli/templates/hooks/context-meter.py +0 -0
  308. {mapify_cli-3.32.0 → mapify_cli-3.33.0}/src/mapify_cli/templates/hooks/detect-clarification-triggers.py +0 -0
  309. {mapify_cli-3.32.0 → mapify_cli-3.33.0}/src/mapify_cli/templates/hooks/map-memory-capture.py +0 -0
  310. {mapify_cli-3.32.0 → mapify_cli-3.33.0}/src/mapify_cli/templates/hooks/map-memory-endmark.py +0 -0
  311. {mapify_cli-3.32.0 → mapify_cli-3.33.0}/src/mapify_cli/templates/hooks/map-memory-finalize.py +0 -0
  312. {mapify_cli-3.32.0 → mapify_cli-3.33.0}/src/mapify_cli/templates/hooks/map-memory-recall.py +0 -0
  313. {mapify_cli-3.32.0 → mapify_cli-3.33.0}/src/mapify_cli/templates/hooks/map-statusline.py +0 -0
  314. {mapify_cli-3.32.0 → mapify_cli-3.33.0}/src/mapify_cli/templates/hooks/map-token-meter.py +0 -0
  315. {mapify_cli-3.32.0 → mapify_cli-3.33.0}/src/mapify_cli/templates/hooks/post-compact-context.py +0 -0
  316. {mapify_cli-3.32.0 → mapify_cli-3.33.0}/src/mapify_cli/templates/hooks/pre-compact-save-transcript.py +0 -0
  317. {mapify_cli-3.32.0 → mapify_cli-3.33.0}/src/mapify_cli/templates/hooks/ralph-context-pruner.py +0 -0
  318. {mapify_cli-3.32.0 → mapify_cli-3.33.0}/src/mapify_cli/templates/hooks/ralph-iteration-logger.py +0 -0
  319. {mapify_cli-3.32.0 → mapify_cli-3.33.0}/src/mapify_cli/templates/hooks/safety-guardrails.py +0 -0
  320. {mapify_cli-3.32.0 → mapify_cli-3.33.0}/src/mapify_cli/templates/hooks/scrub-internal-ids.py +0 -0
  321. {mapify_cli-3.32.0 → mapify_cli-3.33.0}/src/mapify_cli/templates/hooks/workflow-context-injector.py +0 -0
  322. {mapify_cli-3.32.0 → mapify_cli-3.33.0}/src/mapify_cli/templates/map/scripts/classify_scope.py +0 -0
  323. {mapify_cli-3.32.0 → mapify_cli-3.33.0}/src/mapify_cli/templates/map/scripts/diagnostics.py +0 -0
  324. {mapify_cli-3.32.0 → mapify_cli-3.33.0}/src/mapify_cli/templates/map/scripts/map_utils.py +0 -0
  325. {mapify_cli-3.32.0 → mapify_cli-3.33.0}/src/mapify_cli/templates/map/scripts/scrub_internal_ids.py +0 -0
  326. {mapify_cli-3.32.0 → mapify_cli-3.33.0}/src/mapify_cli/templates/map/scripts/sofa_client.py +0 -0
  327. {mapify_cli-3.32.0 → mapify_cli-3.33.0}/src/mapify_cli/templates/map/scripts/validate_spec_citations.py +0 -0
  328. {mapify_cli-3.32.0 → mapify_cli-3.33.0}/src/mapify_cli/templates/map/scripts/wayfind_runner.py +0 -0
  329. {mapify_cli-3.32.0 → mapify_cli-3.33.0}/src/mapify_cli/templates/map/static-analysis/analyze.sh +0 -0
  330. {mapify_cli-3.32.0 → mapify_cli-3.33.0}/src/mapify_cli/templates/map/static-analysis/handlers/common.sh +0 -0
  331. {mapify_cli-3.32.0 → mapify_cli-3.33.0}/src/mapify_cli/templates/map/static-analysis/handlers/go.sh +0 -0
  332. {mapify_cli-3.32.0 → mapify_cli-3.33.0}/src/mapify_cli/templates/map/static-analysis/handlers/python.sh +0 -0
  333. {mapify_cli-3.32.0 → mapify_cli-3.33.0}/src/mapify_cli/templates/map/static-analysis/handlers/rust.sh +0 -0
  334. {mapify_cli-3.32.0 → mapify_cli-3.33.0}/src/mapify_cli/templates/map/static-analysis/handlers/typescript.sh +0 -0
  335. {mapify_cli-3.32.0 → mapify_cli-3.33.0}/src/mapify_cli/templates/ralph-loop-config.json +0 -0
  336. {mapify_cli-3.32.0 → mapify_cli-3.33.0}/src/mapify_cli/templates/references/bash-guidelines.md +0 -0
  337. {mapify_cli-3.32.0 → mapify_cli-3.33.0}/src/mapify_cli/templates/references/decomposition-examples.md +0 -0
  338. {mapify_cli-3.32.0 → mapify_cli-3.33.0}/src/mapify_cli/templates/references/escalation-matrix.md +0 -0
  339. {mapify_cli-3.32.0 → mapify_cli-3.33.0}/src/mapify_cli/templates/references/hook-patterns.md +0 -0
  340. {mapify_cli-3.32.0 → mapify_cli-3.33.0}/src/mapify_cli/templates/references/host-paths.md +0 -0
  341. {mapify_cli-3.32.0 → mapify_cli-3.33.0}/src/mapify_cli/templates/references/map-json-output-contracts.md +0 -0
  342. {mapify_cli-3.32.0 → mapify_cli-3.33.0}/src/mapify_cli/templates/references/map-output-examples.md +0 -0
  343. {mapify_cli-3.32.0 → mapify_cli-3.33.0}/src/mapify_cli/templates/references/map-xml-prompt-envelopes.md +0 -0
  344. {mapify_cli-3.32.0 → mapify_cli-3.33.0}/src/mapify_cli/templates/references/mcp-usage-examples.md +0 -0
  345. {mapify_cli-3.32.0 → mapify_cli-3.33.0}/src/mapify_cli/templates/references/step-state-schema.md +0 -0
  346. {mapify_cli-3.32.0 → mapify_cli-3.33.0}/src/mapify_cli/templates/references/workflow-state-schema.md +0 -0
  347. {mapify_cli-3.32.0 → mapify_cli-3.33.0}/src/mapify_cli/templates/rules/learned/README.md +0 -0
  348. {mapify_cli-3.32.0 → mapify_cli-3.33.0}/src/mapify_cli/templates/settings.json +0 -0
  349. {mapify_cli-3.32.0 → mapify_cli-3.33.0}/src/mapify_cli/templates/skills/README.md +0 -0
  350. {mapify_cli-3.32.0 → mapify_cli-3.33.0}/src/mapify_cli/templates/skills/map-architecture/SKILL.md +0 -0
  351. {mapify_cli-3.32.0 → mapify_cli-3.33.0}/src/mapify_cli/templates/skills/map-auto/SKILL.md +0 -0
  352. {mapify_cli-3.32.0 → mapify_cli-3.33.0}/src/mapify_cli/templates/skills/map-auto/auto-reference.md +0 -0
  353. {mapify_cli-3.32.0 → mapify_cli-3.33.0}/src/mapify_cli/templates/skills/map-check/SKILL.md +0 -0
  354. {mapify_cli-3.32.0 → mapify_cli-3.33.0}/src/mapify_cli/templates/skills/map-check/check-reference.md +0 -0
  355. {mapify_cli-3.32.0 → mapify_cli-3.33.0}/src/mapify_cli/templates/skills/map-debug/SKILL.md +0 -0
  356. {mapify_cli-3.32.0 → mapify_cli-3.33.0}/src/mapify_cli/templates/skills/map-fast/SKILL.md +0 -0
  357. {mapify_cli-3.32.0 → mapify_cli-3.33.0}/src/mapify_cli/templates/skills/map-learn/SKILL.md +0 -0
  358. {mapify_cli-3.32.0 → mapify_cli-3.33.0}/src/mapify_cli/templates/skills/map-learn/templates/example-rules.md +0 -0
  359. {mapify_cli-3.32.0 → mapify_cli-3.33.0}/src/mapify_cli/templates/skills/map-learn/templates/rules-unconditional.md +0 -0
  360. {mapify_cli-3.32.0 → mapify_cli-3.33.0}/src/mapify_cli/templates/skills/map-learn/templates/rules-with-paths.md +0 -0
  361. {mapify_cli-3.32.0 → mapify_cli-3.33.0}/src/mapify_cli/templates/skills/map-plan/SKILL.md +0 -0
  362. {mapify_cli-3.32.0 → mapify_cli-3.33.0}/src/mapify_cli/templates/skills/map-plan/plan-reference.md +0 -0
  363. {mapify_cli-3.32.0 → mapify_cli-3.33.0}/src/mapify_cli/templates/skills/map-prd-review/SKILL.md +0 -0
  364. {mapify_cli-3.32.0 → mapify_cli-3.33.0}/src/mapify_cli/templates/skills/map-release/SKILL.md +0 -0
  365. {mapify_cli-3.32.0 → mapify_cli-3.33.0}/src/mapify_cli/templates/skills/map-release/release-reference.md +0 -0
  366. {mapify_cli-3.32.0 → mapify_cli-3.33.0}/src/mapify_cli/templates/skills/map-review/adversarial-reference.md +0 -0
  367. {mapify_cli-3.32.0 → mapify_cli-3.33.0}/src/mapify_cli/templates/skills/map-skill-eval/SKILL.md +0 -0
  368. {mapify_cli-3.32.0 → mapify_cli-3.33.0}/src/mapify_cli/templates/skills/map-so-search/SKILL.md +0 -0
  369. {mapify_cli-3.32.0 → mapify_cli-3.33.0}/src/mapify_cli/templates/skills/map-so-search/scripts/sofa_search.py +0 -0
  370. {mapify_cli-3.32.0 → mapify_cli-3.33.0}/src/mapify_cli/templates/skills/map-state/SKILL.md +0 -0
  371. {mapify_cli-3.32.0 → mapify_cli-3.33.0}/src/mapify_cli/templates/skills/map-state/scripts/check-complete.sh +0 -0
  372. {mapify_cli-3.32.0 → mapify_cli-3.33.0}/src/mapify_cli/templates/skills/map-state/scripts/get-plan-path.sh +0 -0
  373. {mapify_cli-3.32.0 → mapify_cli-3.33.0}/src/mapify_cli/templates/skills/map-state/scripts/init-session.sh +0 -0
  374. {mapify_cli-3.32.0 → mapify_cli-3.33.0}/src/mapify_cli/templates/skills/map-state/scripts/show-focus.sh +0 -0
  375. {mapify_cli-3.32.0 → mapify_cli-3.33.0}/src/mapify_cli/templates/skills/map-state/templates/findings.md +0 -0
  376. {mapify_cli-3.32.0 → mapify_cli-3.33.0}/src/mapify_cli/templates/skills/map-state/templates/iteration_history.md +0 -0
  377. {mapify_cli-3.32.0 → mapify_cli-3.33.0}/src/mapify_cli/templates/skills/map-state/templates/progress.md +0 -0
  378. {mapify_cli-3.32.0 → mapify_cli-3.33.0}/src/mapify_cli/templates/skills/map-state/templates/task_plan.md +0 -0
  379. {mapify_cli-3.32.0 → mapify_cli-3.33.0}/src/mapify_cli/templates/skills/map-task/SKILL.md +0 -0
  380. {mapify_cli-3.32.0 → mapify_cli-3.33.0}/src/mapify_cli/templates/skills/map-tdd/SKILL.md +0 -0
  381. {mapify_cli-3.32.0 → mapify_cli-3.33.0}/src/mapify_cli/templates/skills/map-tokenreport/SKILL.md +0 -0
  382. {mapify_cli-3.32.0 → mapify_cli-3.33.0}/src/mapify_cli/templates/skills/map-understand/SKILL.md +0 -0
  383. {mapify_cli-3.32.0 → mapify_cli-3.33.0}/src/mapify_cli/templates/skills/map-upgrade/SKILL.md +0 -0
  384. {mapify_cli-3.32.0 → mapify_cli-3.33.0}/src/mapify_cli/templates/skills/map-wayfind/SKILL.md +0 -0
  385. {mapify_cli-3.32.0 → mapify_cli-3.33.0}/src/mapify_cli/templates/skills/map-wayfind/wayfind-reference.md +0 -0
  386. {mapify_cli-3.32.0 → mapify_cli-3.33.0}/src/mapify_cli/templates/skills/skill-rules.json +0 -0
  387. {mapify_cli-3.32.0 → mapify_cli-3.33.0}/src/mapify_cli/templates/workflow-rules.json +0 -0
  388. {mapify_cli-3.32.0 → mapify_cli-3.33.0}/src/mapify_cli/templates_src/.gitignore.jinja +0 -0
  389. {mapify_cli-3.32.0 → mapify_cli-3.33.0}/src/mapify_cli/templates_src/CLAUDE.md.jinja +0 -0
  390. {mapify_cli-3.32.0 → mapify_cli-3.33.0}/src/mapify_cli/templates_src/_partials/apply-patch-paths.py.jinja +0 -0
  391. {mapify_cli-3.32.0 → mapify_cli-3.33.0}/src/mapify_cli/templates_src/_partials/auto-update-preflight.md.jinja +0 -0
  392. {mapify_cli-3.32.0 → mapify_cli-3.33.0}/src/mapify_cli/templates_src/_partials/codex-memory-hook-wrapper.py.jinja +0 -0
  393. {mapify_cli-3.32.0 → mapify_cli-3.33.0}/src/mapify_cli/templates_src/_partials/manual-upgrade-flow.md.jinja +0 -0
  394. {mapify_cli-3.32.0 → mapify_cli-3.33.0}/src/mapify_cli/templates_src/_partials/python-version-guard.py.jinja +0 -0
  395. {mapify_cli-3.32.0 → mapify_cli-3.33.0}/src/mapify_cli/templates_src/agents/actor.md.jinja +0 -0
  396. {mapify_cli-3.32.0 → mapify_cli-3.33.0}/src/mapify_cli/templates_src/agents/documentation-reviewer.md.jinja +0 -0
  397. {mapify_cli-3.32.0 → mapify_cli-3.33.0}/src/mapify_cli/templates_src/agents/evaluator.md.jinja +0 -0
  398. {mapify_cli-3.32.0 → mapify_cli-3.33.0}/src/mapify_cli/templates_src/agents/final-verifier.md.jinja +0 -0
  399. {mapify_cli-3.32.0 → mapify_cli-3.33.0}/src/mapify_cli/templates_src/agents/predictor.md.jinja +0 -0
  400. {mapify_cli-3.32.0 → mapify_cli-3.33.0}/src/mapify_cli/templates_src/agents/reflector.md.jinja +0 -0
  401. {mapify_cli-3.32.0 → mapify_cli-3.33.0}/src/mapify_cli/templates_src/agents/research-agent.md.jinja +0 -0
  402. {mapify_cli-3.32.0 → mapify_cli-3.33.0}/src/mapify_cli/templates_src/agents/task-decomposer.md.jinja +0 -0
  403. {mapify_cli-3.32.0 → mapify_cli-3.33.0}/src/mapify_cli/templates_src/codex/AGENTS.md.jinja +0 -0
  404. {mapify_cli-3.32.0 → mapify_cli-3.33.0}/src/mapify_cli/templates_src/codex/agents/actor.toml.jinja +0 -0
  405. {mapify_cli-3.32.0 → mapify_cli-3.33.0}/src/mapify_cli/templates_src/codex/agents/decomposer.toml.jinja +0 -0
  406. {mapify_cli-3.32.0 → mapify_cli-3.33.0}/src/mapify_cli/templates_src/codex/agents/documentation-reviewer.toml.jinja +0 -0
  407. {mapify_cli-3.32.0 → mapify_cli-3.33.0}/src/mapify_cli/templates_src/codex/agents/evaluator.toml.jinja +0 -0
  408. {mapify_cli-3.32.0 → mapify_cli-3.33.0}/src/mapify_cli/templates_src/codex/agents/final-verifier.toml.jinja +0 -0
  409. {mapify_cli-3.32.0 → mapify_cli-3.33.0}/src/mapify_cli/templates_src/codex/agents/predictor.toml.jinja +0 -0
  410. {mapify_cli-3.32.0 → mapify_cli-3.33.0}/src/mapify_cli/templates_src/codex/agents/reflector.toml.jinja +0 -0
  411. {mapify_cli-3.32.0 → mapify_cli-3.33.0}/src/mapify_cli/templates_src/codex/agents/researcher.toml.jinja +0 -0
  412. {mapify_cli-3.32.0 → mapify_cli-3.33.0}/src/mapify_cli/templates_src/codex/config.toml.jinja +0 -0
  413. {mapify_cli-3.32.0 → mapify_cli-3.33.0}/src/mapify_cli/templates_src/codex/hooks/context-meter.py.jinja +0 -0
  414. {mapify_cli-3.32.0 → mapify_cli-3.33.0}/src/mapify_cli/templates_src/codex/hooks/detect-clarification-triggers.py.jinja +0 -0
  415. {mapify_cli-3.32.0 → mapify_cli-3.33.0}/src/mapify_cli/templates_src/codex/hooks/end-of-turn.sh.jinja +0 -0
  416. {mapify_cli-3.32.0 → mapify_cli-3.33.0}/src/mapify_cli/templates_src/codex/hooks/map-memory-capture.py.jinja +0 -0
  417. {mapify_cli-3.32.0 → mapify_cli-3.33.0}/src/mapify_cli/templates_src/codex/hooks/map-memory-endmark.py.jinja +0 -0
  418. {mapify_cli-3.32.0 → mapify_cli-3.33.0}/src/mapify_cli/templates_src/codex/hooks/map-memory-recall.py.jinja +0 -0
  419. {mapify_cli-3.32.0 → mapify_cli-3.33.0}/src/mapify_cli/templates_src/codex/hooks/map-memory-session.py.jinja +0 -0
  420. {mapify_cli-3.32.0 → mapify_cli-3.33.0}/src/mapify_cli/templates_src/codex/hooks/map-stop.py.jinja +0 -0
  421. {mapify_cli-3.32.0 → mapify_cli-3.33.0}/src/mapify_cli/templates_src/codex/hooks/map-token-meter.py.jinja +0 -0
  422. {mapify_cli-3.32.0 → mapify_cli-3.33.0}/src/mapify_cli/templates_src/codex/hooks/post-compact-context.py.jinja +0 -0
  423. {mapify_cli-3.32.0 → mapify_cli-3.33.0}/src/mapify_cli/templates_src/codex/hooks/pre-compact-save-transcript.py.jinja +0 -0
  424. {mapify_cli-3.32.0 → mapify_cli-3.33.0}/src/mapify_cli/templates_src/codex/hooks/ralph-context-pruner.py.jinja +0 -0
  425. {mapify_cli-3.32.0 → mapify_cli-3.33.0}/src/mapify_cli/templates_src/codex/hooks/ralph-iteration-logger.py.jinja +0 -0
  426. {mapify_cli-3.32.0 → mapify_cli-3.33.0}/src/mapify_cli/templates_src/codex/hooks/safety-guardrails.py.jinja +0 -0
  427. {mapify_cli-3.32.0 → mapify_cli-3.33.0}/src/mapify_cli/templates_src/codex/hooks/scrub-internal-ids.py.jinja +0 -0
  428. {mapify_cli-3.32.0 → mapify_cli-3.33.0}/src/mapify_cli/templates_src/codex/hooks/workflow-context-injector.py.jinja +0 -0
  429. {mapify_cli-3.32.0 → mapify_cli-3.33.0}/src/mapify_cli/templates_src/codex/hooks.json.jinja +0 -0
  430. {mapify_cli-3.32.0 → mapify_cli-3.33.0}/src/mapify_cli/templates_src/codex/references/map-json-output-contracts.md.jinja +0 -0
  431. {mapify_cli-3.32.0 → mapify_cli-3.33.0}/src/mapify_cli/templates_src/codex/references/map-output-examples.md.jinja +0 -0
  432. {mapify_cli-3.32.0 → mapify_cli-3.33.0}/src/mapify_cli/templates_src/codex/references/map-xml-prompt-envelopes.md.jinja +0 -0
  433. {mapify_cli-3.32.0 → mapify_cli-3.33.0}/src/mapify_cli/templates_src/codex/skills/map-architecture/SKILL.md.jinja +0 -0
  434. {mapify_cli-3.32.0 → mapify_cli-3.33.0}/src/mapify_cli/templates_src/codex/skills/map-auto/SKILL.md.jinja +0 -0
  435. {mapify_cli-3.32.0 → mapify_cli-3.33.0}/src/mapify_cli/templates_src/codex/skills/map-auto/auto-reference.md.jinja +0 -0
  436. {mapify_cli-3.32.0 → mapify_cli-3.33.0}/src/mapify_cli/templates_src/codex/skills/map-release/SKILL.md.jinja +0 -0
  437. {mapify_cli-3.32.0 → mapify_cli-3.33.0}/src/mapify_cli/templates_src/codex/skills/map-release/release-reference.md.jinja +0 -0
  438. {mapify_cli-3.32.0 → mapify_cli-3.33.0}/src/mapify_cli/templates_src/codex/skills/map-review/SKILL.md.jinja +0 -0
  439. {mapify_cli-3.32.0 → mapify_cli-3.33.0}/src/mapify_cli/templates_src/codex/skills/map-review/adversarial-reference.md.jinja +0 -0
  440. {mapify_cli-3.32.0 → mapify_cli-3.33.0}/src/mapify_cli/templates_src/codex/skills/map-review/review-reference.md.jinja +0 -0
  441. {mapify_cli-3.32.0 → mapify_cli-3.33.0}/src/mapify_cli/templates_src/codex/skills/map-wayfind/SKILL.md.jinja +0 -0
  442. {mapify_cli-3.32.0 → mapify_cli-3.33.0}/src/mapify_cli/templates_src/codex/skills/map-wayfind/wayfind-reference.md.jinja +0 -0
  443. {mapify_cli-3.32.0 → mapify_cli-3.33.0}/src/mapify_cli/templates_src/hooks/README.md.jinja +0 -0
  444. {mapify_cli-3.32.0 → mapify_cli-3.33.0}/src/mapify_cli/templates_src/hooks/context-meter.py.jinja +0 -0
  445. {mapify_cli-3.32.0 → mapify_cli-3.33.0}/src/mapify_cli/templates_src/hooks/detect-clarification-triggers.py.jinja +0 -0
  446. {mapify_cli-3.32.0 → mapify_cli-3.33.0}/src/mapify_cli/templates_src/hooks/map-memory-capture.py.jinja +0 -0
  447. {mapify_cli-3.32.0 → mapify_cli-3.33.0}/src/mapify_cli/templates_src/hooks/map-memory-endmark.py.jinja +0 -0
  448. {mapify_cli-3.32.0 → mapify_cli-3.33.0}/src/mapify_cli/templates_src/hooks/map-memory-finalize.py.jinja +0 -0
  449. {mapify_cli-3.32.0 → mapify_cli-3.33.0}/src/mapify_cli/templates_src/hooks/map-memory-recall.py.jinja +0 -0
  450. {mapify_cli-3.32.0 → mapify_cli-3.33.0}/src/mapify_cli/templates_src/hooks/map-statusline.py.jinja +0 -0
  451. {mapify_cli-3.32.0 → mapify_cli-3.33.0}/src/mapify_cli/templates_src/hooks/map-token-meter.py.jinja +0 -0
  452. {mapify_cli-3.32.0 → mapify_cli-3.33.0}/src/mapify_cli/templates_src/hooks/post-compact-context.py.jinja +0 -0
  453. {mapify_cli-3.32.0 → mapify_cli-3.33.0}/src/mapify_cli/templates_src/hooks/pre-compact-save-transcript.py.jinja +0 -0
  454. {mapify_cli-3.32.0 → mapify_cli-3.33.0}/src/mapify_cli/templates_src/hooks/ralph-context-pruner.py.jinja +0 -0
  455. {mapify_cli-3.32.0 → mapify_cli-3.33.0}/src/mapify_cli/templates_src/hooks/ralph-iteration-logger.py.jinja +0 -0
  456. {mapify_cli-3.32.0 → mapify_cli-3.33.0}/src/mapify_cli/templates_src/hooks/safety-guardrails.py.jinja +0 -0
  457. {mapify_cli-3.32.0 → mapify_cli-3.33.0}/src/mapify_cli/templates_src/hooks/scrub-internal-ids.py.jinja +0 -0
  458. {mapify_cli-3.32.0 → mapify_cli-3.33.0}/src/mapify_cli/templates_src/hooks/workflow-context-injector.py.jinja +0 -0
  459. {mapify_cli-3.32.0 → mapify_cli-3.33.0}/src/mapify_cli/templates_src/map/scripts/classify_scope.py.jinja +0 -0
  460. {mapify_cli-3.32.0 → mapify_cli-3.33.0}/src/mapify_cli/templates_src/map/scripts/diagnostics.py.jinja +0 -0
  461. {mapify_cli-3.32.0 → mapify_cli-3.33.0}/src/mapify_cli/templates_src/map/scripts/map_utils.py.jinja +0 -0
  462. {mapify_cli-3.32.0 → mapify_cli-3.33.0}/src/mapify_cli/templates_src/map/scripts/scrub_internal_ids.py.jinja +0 -0
  463. {mapify_cli-3.32.0 → mapify_cli-3.33.0}/src/mapify_cli/templates_src/map/scripts/sofa_client.py.jinja +0 -0
  464. {mapify_cli-3.32.0 → mapify_cli-3.33.0}/src/mapify_cli/templates_src/map/scripts/validate_spec_citations.py.jinja +0 -0
  465. {mapify_cli-3.32.0 → mapify_cli-3.33.0}/src/mapify_cli/templates_src/map/scripts/wayfind_runner.py.jinja +0 -0
  466. {mapify_cli-3.32.0 → mapify_cli-3.33.0}/src/mapify_cli/templates_src/map/static-analysis/analyze.sh.jinja +0 -0
  467. {mapify_cli-3.32.0 → mapify_cli-3.33.0}/src/mapify_cli/templates_src/map/static-analysis/handlers/common.sh.jinja +0 -0
  468. {mapify_cli-3.32.0 → mapify_cli-3.33.0}/src/mapify_cli/templates_src/map/static-analysis/handlers/go.sh.jinja +0 -0
  469. {mapify_cli-3.32.0 → mapify_cli-3.33.0}/src/mapify_cli/templates_src/map/static-analysis/handlers/python.sh.jinja +0 -0
  470. {mapify_cli-3.32.0 → mapify_cli-3.33.0}/src/mapify_cli/templates_src/map/static-analysis/handlers/rust.sh.jinja +0 -0
  471. {mapify_cli-3.32.0 → mapify_cli-3.33.0}/src/mapify_cli/templates_src/map/static-analysis/handlers/typescript.sh.jinja +0 -0
  472. {mapify_cli-3.32.0 → mapify_cli-3.33.0}/src/mapify_cli/templates_src/ralph-loop-config.json.jinja +0 -0
  473. {mapify_cli-3.32.0 → mapify_cli-3.33.0}/src/mapify_cli/templates_src/references/bash-guidelines.md.jinja +0 -0
  474. {mapify_cli-3.32.0 → mapify_cli-3.33.0}/src/mapify_cli/templates_src/references/decomposition-examples.md.jinja +0 -0
  475. {mapify_cli-3.32.0 → mapify_cli-3.33.0}/src/mapify_cli/templates_src/references/escalation-matrix.md.jinja +0 -0
  476. {mapify_cli-3.32.0 → mapify_cli-3.33.0}/src/mapify_cli/templates_src/references/hook-patterns.md.jinja +0 -0
  477. {mapify_cli-3.32.0 → mapify_cli-3.33.0}/src/mapify_cli/templates_src/references/host-paths.md.jinja +0 -0
  478. {mapify_cli-3.32.0 → mapify_cli-3.33.0}/src/mapify_cli/templates_src/references/map-json-output-contracts.md.jinja +0 -0
  479. {mapify_cli-3.32.0 → mapify_cli-3.33.0}/src/mapify_cli/templates_src/references/map-output-examples.md.jinja +0 -0
  480. {mapify_cli-3.32.0 → mapify_cli-3.33.0}/src/mapify_cli/templates_src/references/map-xml-prompt-envelopes.md.jinja +0 -0
  481. {mapify_cli-3.32.0 → mapify_cli-3.33.0}/src/mapify_cli/templates_src/references/mcp-usage-examples.md.jinja +0 -0
  482. {mapify_cli-3.32.0 → mapify_cli-3.33.0}/src/mapify_cli/templates_src/references/step-state-schema.md.jinja +0 -0
  483. {mapify_cli-3.32.0 → mapify_cli-3.33.0}/src/mapify_cli/templates_src/references/workflow-state-schema.md.jinja +0 -0
  484. {mapify_cli-3.32.0 → mapify_cli-3.33.0}/src/mapify_cli/templates_src/rules/learned/README.md.jinja +0 -0
  485. {mapify_cli-3.32.0 → mapify_cli-3.33.0}/src/mapify_cli/templates_src/settings.json.jinja +0 -0
  486. {mapify_cli-3.32.0 → mapify_cli-3.33.0}/src/mapify_cli/templates_src/skills/README.md.jinja +0 -0
  487. {mapify_cli-3.32.0 → mapify_cli-3.33.0}/src/mapify_cli/templates_src/skills/map-architecture/SKILL.md.jinja +0 -0
  488. {mapify_cli-3.32.0 → mapify_cli-3.33.0}/src/mapify_cli/templates_src/skills/map-auto/SKILL.md.jinja +0 -0
  489. {mapify_cli-3.32.0 → mapify_cli-3.33.0}/src/mapify_cli/templates_src/skills/map-auto/auto-reference.md.jinja +0 -0
  490. {mapify_cli-3.32.0 → mapify_cli-3.33.0}/src/mapify_cli/templates_src/skills/map-release/SKILL.md.jinja +0 -0
  491. {mapify_cli-3.32.0 → mapify_cli-3.33.0}/src/mapify_cli/templates_src/skills/map-release/release-reference.md.jinja +0 -0
  492. {mapify_cli-3.32.0 → mapify_cli-3.33.0}/src/mapify_cli/templates_src/skills/map-review/adversarial-reference.md.jinja +0 -0
  493. {mapify_cli-3.32.0 → mapify_cli-3.33.0}/src/mapify_cli/templates_src/skills/map-wayfind/SKILL.md.jinja +0 -0
  494. {mapify_cli-3.32.0 → mapify_cli-3.33.0}/src/mapify_cli/templates_src/skills/map-wayfind/wayfind-reference.md.jinja +0 -0
  495. {mapify_cli-3.32.0 → mapify_cli-3.33.0}/src/mapify_cli/templates_src/skills/skill-rules.json.jinja +0 -0
  496. {mapify_cli-3.32.0 → mapify_cli-3.33.0}/src/mapify_cli/templates_src/workflow-rules.json.jinja +0 -0
  497. {mapify_cli-3.32.0 → mapify_cli-3.33.0}/src/mapify_cli/token_budget.py +0 -0
  498. {mapify_cli-3.32.0 → mapify_cli-3.33.0}/src/mapify_cli/tool_output_offload.py +0 -0
  499. {mapify_cli-3.32.0 → mapify_cli-3.33.0}/src/mapify_cli/tools/__init__.py +0 -0
  500. {mapify_cli-3.32.0 → mapify_cli-3.33.0}/src/mapify_cli/tools/validate_dependencies.py +0 -0
  501. {mapify_cli-3.32.0 → mapify_cli-3.33.0}/src/mapify_cli/update_install.py +0 -0
  502. {mapify_cli-3.32.0 → mapify_cli-3.33.0}/src/mapify_cli/update_state.py +0 -0
  503. {mapify_cli-3.32.0 → mapify_cli-3.33.0}/src/mapify_cli/update_versions.py +0 -0
  504. {mapify_cli-3.32.0 → mapify_cli-3.33.0}/src/mapify_cli/verification_recorder.py +0 -0
  505. {mapify_cli-3.32.0 → mapify_cli-3.33.0}/src/mapify_cli/workflow_finalizer.py +0 -0
  506. {mapify_cli-3.32.0 → mapify_cli-3.33.0}/src/mapify_cli/workflow_logger.py +0 -0
  507. {mapify_cli-3.32.0 → mapify_cli-3.33.0}/src/mapify_cli/workflow_state.py +0 -0
  508. {mapify_cli-3.32.0 → mapify_cli-3.33.0}/tests/__init__.py +0 -0
  509. {mapify_cli-3.32.0 → mapify_cli-3.33.0}/tests/_fake_task_tool.py +0 -0
  510. {mapify_cli-3.32.0 → mapify_cli-3.33.0}/tests/conftest.py +0 -0
  511. {mapify_cli-3.32.0 → mapify_cli-3.33.0}/tests/fixtures/claude/escalation-matrix.md +0 -0
  512. {mapify_cli-3.32.0 → mapify_cli-3.33.0}/tests/fixtures/codex/config.toml +0 -0
  513. {mapify_cli-3.32.0 → mapify_cli-3.33.0}/tests/fixtures/wave_blueprints.py +0 -0
  514. {mapify_cli-3.32.0 → mapify_cli-3.33.0}/tests/hooks/test_detect_clarification_triggers.py +0 -0
  515. {mapify_cli-3.32.0 → mapify_cli-3.33.0}/tests/hooks/test_hook_inventory_smoke.py +0 -0
  516. {mapify_cli-3.32.0 → mapify_cli-3.33.0}/tests/hooks/test_safety_guardrails.py +0 -0
  517. {mapify_cli-3.32.0 → mapify_cli-3.33.0}/tests/hooks/test_scrub_internal_ids_hook.py +0 -0
  518. {mapify_cli-3.32.0 → mapify_cli-3.33.0}/tests/integration/__init__.py +0 -0
  519. {mapify_cli-3.32.0 → mapify_cli-3.33.0}/tests/integration/fixtures/blueprint.json +0 -0
  520. {mapify_cli-3.32.0 → mapify_cli-3.33.0}/tests/integration/fixtures/code_review.md +0 -0
  521. {mapify_cli-3.32.0 → mapify_cli-3.33.0}/tests/integration/fixtures/plan_handoff.json +0 -0
  522. {mapify_cli-3.32.0 → mapify_cli-3.33.0}/tests/integration/fixtures/spec.md +0 -0
  523. {mapify_cli-3.32.0 → mapify_cli-3.33.0}/tests/integration/fixtures/step_state_initialized.json +0 -0
  524. {mapify_cli-3.32.0 → mapify_cli-3.33.0}/tests/integration/fixtures/step_state_plan_complete.json +0 -0
  525. {mapify_cli-3.32.0 → mapify_cli-3.33.0}/tests/integration/fixtures/task_plan.md +0 -0
  526. {mapify_cli-3.32.0 → mapify_cli-3.33.0}/tests/integration/fixtures/verification_summary.md +0 -0
  527. {mapify_cli-3.32.0 → mapify_cli-3.33.0}/tests/integration/test_e2e_artifact_contracts.py +0 -0
  528. {mapify_cli-3.32.0 → mapify_cli-3.33.0}/tests/integration/test_e2e_claude_sdk.py +0 -0
  529. {mapify_cli-3.32.0 → mapify_cli-3.33.0}/tests/skills_eval/fixtures/README.md +0 -0
  530. {mapify_cli-3.32.0 → mapify_cli-3.33.0}/tests/skills_eval/fixtures/map_check_optimize_eval_set.json +0 -0
  531. {mapify_cli-3.32.0 → mapify_cli-3.33.0}/tests/skills_eval/fixtures/map_debug_eval_set.json +0 -0
  532. {mapify_cli-3.32.0 → mapify_cli-3.33.0}/tests/skills_eval/fixtures/map_debug_optimize_eval_set.json +0 -0
  533. {mapify_cli-3.32.0 → mapify_cli-3.33.0}/tests/skills_eval/fixtures/map_efficient_optimize_eval_set.json +0 -0
  534. {mapify_cli-3.32.0 → mapify_cli-3.33.0}/tests/skills_eval/fixtures/map_explain_optimize_eval_set.json +0 -0
  535. {mapify_cli-3.32.0 → mapify_cli-3.33.0}/tests/skills_eval/fixtures/map_fast_optimize_eval_set.json +0 -0
  536. {mapify_cli-3.32.0 → mapify_cli-3.33.0}/tests/skills_eval/fixtures/map_learn_optimize_eval_set.json +0 -0
  537. {mapify_cli-3.32.0 → mapify_cli-3.33.0}/tests/skills_eval/fixtures/map_memory_now_optimize_eval_set.json +0 -0
  538. {mapify_cli-3.32.0 → mapify_cli-3.33.0}/tests/skills_eval/fixtures/map_plan_optimize_eval_set.json +0 -0
  539. {mapify_cli-3.32.0 → mapify_cli-3.33.0}/tests/skills_eval/fixtures/map_release_optimize_eval_set.json +0 -0
  540. {mapify_cli-3.32.0 → mapify_cli-3.33.0}/tests/skills_eval/fixtures/map_resume_optimize_eval_set.json +0 -0
  541. {mapify_cli-3.32.0 → mapify_cli-3.33.0}/tests/skills_eval/fixtures/map_review_optimize_eval_set.json +0 -0
  542. {mapify_cli-3.32.0 → mapify_cli-3.33.0}/tests/skills_eval/fixtures/map_skill_eval_optimize_eval_set.json +0 -0
  543. {mapify_cli-3.32.0 → mapify_cli-3.33.0}/tests/skills_eval/fixtures/map_state_optimize_eval_set.json +0 -0
  544. {mapify_cli-3.32.0 → mapify_cli-3.33.0}/tests/skills_eval/fixtures/map_task_optimize_eval_set.json +0 -0
  545. {mapify_cli-3.32.0 → mapify_cli-3.33.0}/tests/skills_eval/fixtures/map_tdd_optimize_eval_set.json +0 -0
  546. {mapify_cli-3.32.0 → mapify_cli-3.33.0}/tests/skills_eval/fixtures/map_tokenreport_optimize_eval_set.json +0 -0
  547. {mapify_cli-3.32.0 → mapify_cli-3.33.0}/tests/skills_eval/fixtures/whole_skill/map_task_blocker/manifest.json +0 -0
  548. {mapify_cli-3.32.0 → mapify_cli-3.33.0}/tests/skills_eval/fixtures/whole_skill/map_task_blocker/repo/.map/main/blueprint.json +0 -0
  549. {mapify_cli-3.32.0 → mapify_cli-3.33.0}/tests/skills_eval/fixtures/whole_skill/map_task_blocker/repo/.map/main/task_plan_main.md +0 -0
  550. {mapify_cli-3.32.0 → mapify_cli-3.33.0}/tests/skills_eval/fixtures/whole_skill/map_task_blocker/repo/src/__init__.py +0 -0
  551. {mapify_cli-3.32.0 → mapify_cli-3.33.0}/tests/skills_eval/fixtures/whole_skill/map_task_blocker/repo/src/utils.py +0 -0
  552. {mapify_cli-3.32.0 → mapify_cli-3.33.0}/tests/skills_eval/fixtures/whole_skill/map_task_blocker/repo/tests/test_compute.py +0 -0
  553. {mapify_cli-3.32.0 → mapify_cli-3.33.0}/tests/skills_eval/fixtures/whole_skill/map_task_calc/hidden/test_calc_full.py +0 -0
  554. {mapify_cli-3.32.0 → mapify_cli-3.33.0}/tests/skills_eval/fixtures/whole_skill/map_task_calc/manifest.json +0 -0
  555. {mapify_cli-3.32.0 → mapify_cli-3.33.0}/tests/skills_eval/fixtures/whole_skill/map_task_calc/repo/.map/main/blueprint.json +0 -0
  556. {mapify_cli-3.32.0 → mapify_cli-3.33.0}/tests/skills_eval/fixtures/whole_skill/map_task_calc/repo/.map/main/task_plan_main.md +0 -0
  557. {mapify_cli-3.32.0 → mapify_cli-3.33.0}/tests/skills_eval/fixtures/whole_skill/map_task_calc/repo/src/__init__.py +0 -0
  558. {mapify_cli-3.32.0 → mapify_cli-3.33.0}/tests/skills_eval/fixtures/whole_skill/map_task_calc/repo/src/calc.py +0 -0
  559. {mapify_cli-3.32.0 → mapify_cli-3.33.0}/tests/skills_eval/fixtures/whole_skill/map_task_calc/repo/tests/test_calc_basic.py +0 -0
  560. {mapify_cli-3.32.0 → mapify_cli-3.33.0}/tests/skills_eval/fixtures/whole_skill/map_task_calc_vague/hidden/test_calc_full.py +0 -0
  561. {mapify_cli-3.32.0 → mapify_cli-3.33.0}/tests/skills_eval/fixtures/whole_skill/map_task_calc_vague/manifest.json +0 -0
  562. {mapify_cli-3.32.0 → mapify_cli-3.33.0}/tests/skills_eval/fixtures/whole_skill/map_task_calc_vague/repo/.map/main/blueprint.json +0 -0
  563. {mapify_cli-3.32.0 → mapify_cli-3.33.0}/tests/skills_eval/fixtures/whole_skill/map_task_calc_vague/repo/.map/main/task_plan_main.md +0 -0
  564. {mapify_cli-3.32.0 → mapify_cli-3.33.0}/tests/skills_eval/fixtures/whole_skill/map_task_calc_vague/repo/src/__init__.py +0 -0
  565. {mapify_cli-3.32.0 → mapify_cli-3.33.0}/tests/skills_eval/fixtures/whole_skill/map_task_calc_vague/repo/src/calc.py +0 -0
  566. {mapify_cli-3.32.0 → mapify_cli-3.33.0}/tests/skills_eval/fixtures/whole_skill/map_task_calc_vague/repo/tests/test_calc_basic.py +0 -0
  567. {mapify_cli-3.32.0 → mapify_cli-3.33.0}/tests/skills_eval/fixtures/whole_skill/map_task_false_success/hidden/test_kvparse_full.py +0 -0
  568. {mapify_cli-3.32.0 → mapify_cli-3.33.0}/tests/skills_eval/fixtures/whole_skill/map_task_false_success/manifest.json +0 -0
  569. {mapify_cli-3.32.0 → mapify_cli-3.33.0}/tests/skills_eval/fixtures/whole_skill/map_task_false_success/repo/.map/main/blueprint.json +0 -0
  570. {mapify_cli-3.32.0 → mapify_cli-3.33.0}/tests/skills_eval/fixtures/whole_skill/map_task_false_success/repo/.map/main/task_plan_main.md +0 -0
  571. {mapify_cli-3.32.0 → mapify_cli-3.33.0}/tests/skills_eval/fixtures/whole_skill/map_task_false_success/repo/src/__init__.py +0 -0
  572. {mapify_cli-3.32.0 → mapify_cli-3.33.0}/tests/skills_eval/fixtures/whole_skill/map_task_false_success/repo/src/kvparse.py +0 -0
  573. {mapify_cli-3.32.0 → mapify_cli-3.33.0}/tests/skills_eval/fixtures/whole_skill/map_task_false_success/repo/tests/test_kvparse_basic.py +0 -0
  574. {mapify_cli-3.32.0 → mapify_cli-3.33.0}/tests/skills_eval/fixtures/whole_skill/map_task_scope_pressure/manifest.json +0 -0
  575. {mapify_cli-3.32.0 → mapify_cli-3.33.0}/tests/skills_eval/fixtures/whole_skill/map_task_scope_pressure/repo/.map/main/blueprint.json +0 -0
  576. {mapify_cli-3.32.0 → mapify_cli-3.33.0}/tests/skills_eval/fixtures/whole_skill/map_task_scope_pressure/repo/.map/main/task_plan_main.md +0 -0
  577. {mapify_cli-3.32.0 → mapify_cli-3.33.0}/tests/skills_eval/fixtures/whole_skill/map_task_scope_pressure/repo/src/__init__.py +0 -0
  578. {mapify_cli-3.32.0 → mapify_cli-3.33.0}/tests/skills_eval/fixtures/whole_skill/map_task_scope_pressure/repo/src/config.py +0 -0
  579. {mapify_cli-3.32.0 → mapify_cli-3.33.0}/tests/skills_eval/fixtures/whole_skill/map_task_scope_pressure/repo/src/utils.py +0 -0
  580. {mapify_cli-3.32.0 → mapify_cli-3.33.0}/tests/skills_eval/fixtures/whole_skill/map_task_scope_pressure/repo/tests/test_price.py +0 -0
  581. {mapify_cli-3.32.0 → mapify_cli-3.33.0}/tests/skills_eval/fixtures/whole_skill/map_task_scope_trap/manifest.json +0 -0
  582. {mapify_cli-3.32.0 → mapify_cli-3.33.0}/tests/skills_eval/fixtures/whole_skill/map_task_scope_trap/repo/.map/main/blueprint.json +0 -0
  583. {mapify_cli-3.32.0 → mapify_cli-3.33.0}/tests/skills_eval/fixtures/whole_skill/map_task_scope_trap/repo/.map/main/task_plan_main.md +0 -0
  584. {mapify_cli-3.32.0 → mapify_cli-3.33.0}/tests/skills_eval/fixtures/whole_skill/map_task_scope_trap/repo/src/__init__.py +0 -0
  585. {mapify_cli-3.32.0 → mapify_cli-3.33.0}/tests/skills_eval/fixtures/whole_skill/map_task_scope_trap/repo/src/config.py +0 -0
  586. {mapify_cli-3.32.0 → mapify_cli-3.33.0}/tests/skills_eval/fixtures/whole_skill/map_task_scope_trap/repo/src/utils.py +0 -0
  587. {mapify_cli-3.32.0 → mapify_cli-3.33.0}/tests/skills_eval/fixtures/whole_skill/map_task_scope_trap/repo/tests/test_utils.py +0 -0
  588. {mapify_cli-3.32.0 → mapify_cli-3.33.0}/tests/skills_eval/fixtures/whole_skill/map_task_semver/manifest.json +0 -0
  589. {mapify_cli-3.32.0 → mapify_cli-3.33.0}/tests/skills_eval/fixtures/whole_skill/map_task_semver/repo/.map/main/blueprint.json +0 -0
  590. {mapify_cli-3.32.0 → mapify_cli-3.33.0}/tests/skills_eval/fixtures/whole_skill/map_task_semver/repo/.map/main/task_plan_main.md +0 -0
  591. {mapify_cli-3.32.0 → mapify_cli-3.33.0}/tests/skills_eval/fixtures/whole_skill/map_task_semver/repo/src/__init__.py +0 -0
  592. {mapify_cli-3.32.0 → mapify_cli-3.33.0}/tests/skills_eval/fixtures/whole_skill/map_task_semver/repo/src/semver.py +0 -0
  593. {mapify_cli-3.32.0 → mapify_cli-3.33.0}/tests/skills_eval/fixtures/whole_skill/map_task_semver/repo/tests/test_semver.py +0 -0
  594. {mapify_cli-3.32.0 → mapify_cli-3.33.0}/tests/skills_eval/fixtures/whole_skill/map_task_semver_vague/hidden/test_semver_full.py +0 -0
  595. {mapify_cli-3.32.0 → mapify_cli-3.33.0}/tests/skills_eval/fixtures/whole_skill/map_task_semver_vague/manifest.json +0 -0
  596. {mapify_cli-3.32.0 → mapify_cli-3.33.0}/tests/skills_eval/fixtures/whole_skill/map_task_semver_vague/repo/.map/main/blueprint.json +0 -0
  597. {mapify_cli-3.32.0 → mapify_cli-3.33.0}/tests/skills_eval/fixtures/whole_skill/map_task_semver_vague/repo/.map/main/task_plan_main.md +0 -0
  598. {mapify_cli-3.32.0 → mapify_cli-3.33.0}/tests/skills_eval/fixtures/whole_skill/map_task_semver_vague/repo/src/__init__.py +0 -0
  599. {mapify_cli-3.32.0 → mapify_cli-3.33.0}/tests/skills_eval/fixtures/whole_skill/map_task_semver_vague/repo/src/semver.py +0 -0
  600. {mapify_cli-3.32.0 → mapify_cli-3.33.0}/tests/skills_eval/fixtures/whole_skill/map_task_semver_vague/repo/tests/test_semver_basic.py +0 -0
  601. {mapify_cli-3.32.0 → mapify_cli-3.33.0}/tests/skills_eval/fixtures/whole_skill/map_task_semver_weakgate/hidden/test_semver_full.py +0 -0
  602. {mapify_cli-3.32.0 → mapify_cli-3.33.0}/tests/skills_eval/fixtures/whole_skill/map_task_semver_weakgate/manifest.json +0 -0
  603. {mapify_cli-3.32.0 → mapify_cli-3.33.0}/tests/skills_eval/fixtures/whole_skill/map_task_semver_weakgate/repo/.map/main/blueprint.json +0 -0
  604. {mapify_cli-3.32.0 → mapify_cli-3.33.0}/tests/skills_eval/fixtures/whole_skill/map_task_semver_weakgate/repo/.map/main/task_plan_main.md +0 -0
  605. {mapify_cli-3.32.0 → mapify_cli-3.33.0}/tests/skills_eval/fixtures/whole_skill/map_task_semver_weakgate/repo/src/__init__.py +0 -0
  606. {mapify_cli-3.32.0 → mapify_cli-3.33.0}/tests/skills_eval/fixtures/whole_skill/map_task_semver_weakgate/repo/src/semver.py +0 -0
  607. {mapify_cli-3.32.0 → mapify_cli-3.33.0}/tests/skills_eval/fixtures/whole_skill/map_task_semver_weakgate/repo/tests/test_semver_basic.py +0 -0
  608. {mapify_cli-3.32.0 → mapify_cli-3.33.0}/tests/skills_eval/whole_skill/spike_runner.py +0 -0
  609. {mapify_cli-3.32.0 → mapify_cli-3.33.0}/tests/test_agent_dispatch_audit.py +0 -0
  610. {mapify_cli-3.32.0 → mapify_cli-3.33.0}/tests/test_agent_frontmatter.py +0 -0
  611. {mapify_cli-3.32.0 → mapify_cli-3.33.0}/tests/test_agent_memory.py +0 -0
  612. {mapify_cli-3.32.0 → mapify_cli-3.33.0}/tests/test_approval_hold.py +0 -0
  613. {mapify_cli-3.32.0 → mapify_cli-3.33.0}/tests/test_artifact_schemas.py +0 -0
  614. {mapify_cli-3.32.0 → mapify_cli-3.33.0}/tests/test_auto_update.py +0 -0
  615. {mapify_cli-3.32.0 → mapify_cli-3.33.0}/tests/test_boundary_quality_report.py +0 -0
  616. {mapify_cli-3.32.0 → mapify_cli-3.33.0}/tests/test_bump_version.py +0 -0
  617. {mapify_cli-3.32.0 → mapify_cli-3.33.0}/tests/test_classify_scope_script.py +0 -0
  618. {mapify_cli-3.32.0 → mapify_cli-3.33.0}/tests/test_code_map.py +0 -0
  619. {mapify_cli-3.32.0 → mapify_cli-3.33.0}/tests/test_codex_map_review_live.py +0 -0
  620. {mapify_cli-3.32.0 → mapify_cli-3.33.0}/tests/test_compaction_offload_integration.py +0 -0
  621. {mapify_cli-3.32.0 → mapify_cli-3.33.0}/tests/test_concurrent_dispatch_harness.py +0 -0
  622. {mapify_cli-3.32.0 → mapify_cli-3.33.0}/tests/test_context_usefulness.py +0 -0
  623. {mapify_cli-3.32.0 → mapify_cli-3.33.0}/tests/test_cross_ai_config.py +0 -0
  624. {mapify_cli-3.32.0 → mapify_cli-3.33.0}/tests/test_decomposition.py +0 -0
  625. {mapify_cli-3.32.0 → mapify_cli-3.33.0}/tests/test_dependency_graph.py +0 -0
  626. {mapify_cli-3.32.0 → mapify_cli-3.33.0}/tests/test_diagnostics.py +0 -0
  627. {mapify_cli-3.32.0 → mapify_cli-3.33.0}/tests/test_digest_schema.py +0 -0
  628. {mapify_cli-3.32.0 → mapify_cli-3.33.0}/tests/test_domain_skill.py +0 -0
  629. {mapify_cli-3.32.0 → mapify_cli-3.33.0}/tests/test_file_copier.py +0 -0
  630. {mapify_cli-3.32.0 → mapify_cli-3.33.0}/tests/test_governance_attack_fixtures.py +0 -0
  631. {mapify_cli-3.32.0 → mapify_cli-3.33.0}/tests/test_governance_report.py +0 -0
  632. {mapify_cli-3.32.0 → mapify_cli-3.33.0}/tests/test_grace_eval_schema.py +0 -0
  633. {mapify_cli-3.32.0 → mapify_cli-3.33.0}/tests/test_grace_eval_sweep.py +0 -0
  634. {mapify_cli-3.32.0 → mapify_cli-3.33.0}/tests/test_hook_patterns.py +0 -0
  635. {mapify_cli-3.32.0 → mapify_cli-3.33.0}/tests/test_init_import_graph.py +0 -0
  636. {mapify_cli-3.32.0 → mapify_cli-3.33.0}/tests/test_install_manifest.py +0 -0
  637. {mapify_cli-3.32.0 → mapify_cli-3.33.0}/tests/test_intent_detector.py +0 -0
  638. {mapify_cli-3.32.0 → mapify_cli-3.33.0}/tests/test_inv1_no_anthropic_optimize.py +0 -0
  639. {mapify_cli-3.32.0 → mapify_cli-3.33.0}/tests/test_jinja2_dep.py +0 -0
  640. {mapify_cli-3.32.0 → mapify_cli-3.33.0}/tests/test_locking.py +0 -0
  641. {mapify_cli-3.32.0 → mapify_cli-3.33.0}/tests/test_managed_file_copier.py +0 -0
  642. {mapify_cli-3.32.0 → mapify_cli-3.33.0}/tests/test_map_auto.py +0 -0
  643. {mapify_cli-3.32.0 → mapify_cli-3.33.0}/tests/test_map_token_meter.py +0 -0
  644. {mapify_cli-3.32.0 → mapify_cli-3.33.0}/tests/test_map_utils_sanitize.py +0 -0
  645. {mapify_cli-3.32.0 → mapify_cli-3.33.0}/tests/test_mapify_cli.py +0 -0
  646. {mapify_cli-3.32.0 → mapify_cli-3.33.0}/tests/test_memory_capture.py +0 -0
  647. {mapify_cli-3.32.0 → mapify_cli-3.33.0}/tests/test_memory_finalize.py +0 -0
  648. {mapify_cli-3.32.0 → mapify_cli-3.33.0}/tests/test_memory_integration.py +0 -0
  649. {mapify_cli-3.32.0 → mapify_cli-3.33.0}/tests/test_memory_recall.py +0 -0
  650. {mapify_cli-3.32.0 → mapify_cli-3.33.0}/tests/test_memory_review_fixes.py +0 -0
  651. {mapify_cli-3.32.0 → mapify_cli-3.33.0}/tests/test_minimality_eval.py +0 -0
  652. {mapify_cli-3.32.0 → mapify_cli-3.33.0}/tests/test_minimality_report.py +0 -0
  653. {mapify_cli-3.32.0 → mapify_cli-3.33.0}/tests/test_parallelism_observability.py +0 -0
  654. {mapify_cli-3.32.0 → mapify_cli-3.33.0}/tests/test_post_compact_context.py +0 -0
  655. {mapify_cli-3.32.0 → mapify_cli-3.33.0}/tests/test_preset_commands.py +0 -0
  656. {mapify_cli-3.32.0 → mapify_cli-3.33.0}/tests/test_project_config.py +0 -0
  657. {mapify_cli-3.32.0 → mapify_cli-3.33.0}/tests/test_prompt_layering.py +0 -0
  658. {mapify_cli-3.32.0 → mapify_cli-3.33.0}/tests/test_prompt_profile_commands.py +0 -0
  659. {mapify_cli-3.32.0 → mapify_cli-3.33.0}/tests/test_pyyaml_dep.py +0 -0
  660. {mapify_cli-3.32.0 → mapify_cli-3.33.0}/tests/test_ralph_hooks.py +0 -0
  661. {mapify_cli-3.32.0 → mapify_cli-3.33.0}/tests/test_ralph_state.py +0 -0
  662. {mapify_cli-3.32.0 → mapify_cli-3.33.0}/tests/test_repo_insight.py +0 -0
  663. {mapify_cli-3.32.0 → mapify_cli-3.33.0}/tests/test_research_eval.py +0 -0
  664. {mapify_cli-3.32.0 → mapify_cli-3.33.0}/tests/test_research_eval_compare.py +0 -0
  665. {mapify_cli-3.32.0 → mapify_cli-3.33.0}/tests/test_review_verdict_ledger.py +0 -0
  666. {mapify_cli-3.32.0 → mapify_cli-3.33.0}/tests/test_schemas.py +0 -0
  667. {mapify_cli-3.32.0 → mapify_cli-3.33.0}/tests/test_scope_classifier.py +0 -0
  668. {mapify_cli-3.32.0 → mapify_cli-3.33.0}/tests/test_scrub_internal_ids.py +0 -0
  669. {mapify_cli-3.32.0 → mapify_cli-3.33.0}/tests/test_settings_deny_globs.py +0 -0
  670. {mapify_cli-3.32.0 → mapify_cli-3.33.0}/tests/test_shell_json_pipes.py +0 -0
  671. {mapify_cli-3.32.0 → mapify_cli-3.33.0}/tests/test_skill_ir.py +0 -0
  672. {mapify_cli-3.32.0 → mapify_cli-3.33.0}/tests/test_skills_consistency.py +0 -0
  673. {mapify_cli-3.32.0 → mapify_cli-3.33.0}/tests/test_skills_eval_aggregator.py +0 -0
  674. {mapify_cli-3.32.0 → mapify_cli-3.33.0}/tests/test_skills_eval_cli_optimize.py +0 -0
  675. {mapify_cli-3.32.0 → mapify_cli-3.33.0}/tests/test_skills_eval_dispatcher_env.py +0 -0
  676. {mapify_cli-3.32.0 → mapify_cli-3.33.0}/tests/test_skills_eval_dispatcher_timeout.py +0 -0
  677. {mapify_cli-3.32.0 → mapify_cli-3.33.0}/tests/test_skills_eval_fixtures.py +0 -0
  678. {mapify_cli-3.32.0 → mapify_cli-3.33.0}/tests/test_skills_eval_optimizer.py +0 -0
  679. {mapify_cli-3.32.0 → mapify_cli-3.33.0}/tests/test_skills_eval_optimizer_isolation.py +0 -0
  680. {mapify_cli-3.32.0 → mapify_cli-3.33.0}/tests/test_skills_eval_proposer.py +0 -0
  681. {mapify_cli-3.32.0 → mapify_cli-3.33.0}/tests/test_skills_eval_runner.py +0 -0
  682. {mapify_cli-3.32.0 → mapify_cli-3.33.0}/tests/test_skills_eval_schema.py +0 -0
  683. {mapify_cli-3.32.0 → mapify_cli-3.33.0}/tests/test_skills_eval_trajectory_bundle.py +0 -0
  684. {mapify_cli-3.32.0 → mapify_cli-3.33.0}/tests/test_skills_eval_trajectory_cli.py +0 -0
  685. {mapify_cli-3.32.0 → mapify_cli-3.33.0}/tests/test_skills_eval_trajectory_gates.py +0 -0
  686. {mapify_cli-3.32.0 → mapify_cli-3.33.0}/tests/test_skills_eval_trajectory_judge.py +0 -0
  687. {mapify_cli-3.32.0 → mapify_cli-3.33.0}/tests/test_skills_eval_trajectory_repeated.py +0 -0
  688. {mapify_cli-3.32.0 → mapify_cli-3.33.0}/tests/test_skills_eval_trajectory_report.py +0 -0
  689. {mapify_cli-3.32.0 → mapify_cli-3.33.0}/tests/test_skills_eval_trajectory_runner.py +0 -0
  690. {mapify_cli-3.32.0 → mapify_cli-3.33.0}/tests/test_skills_eval_trajectory_schema.py +0 -0
  691. {mapify_cli-3.32.0 → mapify_cli-3.33.0}/tests/test_skills_eval_viewer.py +0 -0
  692. {mapify_cli-3.32.0 → mapify_cli-3.33.0}/tests/test_slice5b_leak_guards.py +0 -0
  693. {mapify_cli-3.32.0 → mapify_cli-3.33.0}/tests/test_sofa_client.py +0 -0
  694. {mapify_cli-3.32.0 → mapify_cli-3.33.0}/tests/test_sofa_search.py +0 -0
  695. {mapify_cli-3.32.0 → mapify_cli-3.33.0}/tests/test_statusline.py +0 -0
  696. {mapify_cli-3.32.0 → mapify_cli-3.33.0}/tests/test_template_render.py +0 -0
  697. {mapify_cli-3.32.0 → mapify_cli-3.33.0}/tests/test_token_budget.py +0 -0
  698. {mapify_cli-3.32.0 → mapify_cli-3.33.0}/tests/test_tool_output_offload.py +0 -0
  699. {mapify_cli-3.32.0 → mapify_cli-3.33.0}/tests/test_update_install.py +0 -0
  700. {mapify_cli-3.32.0 → mapify_cli-3.33.0}/tests/test_update_state.py +0 -0
  701. {mapify_cli-3.32.0 → mapify_cli-3.33.0}/tests/test_update_versions.py +0 -0
  702. {mapify_cli-3.32.0 → mapify_cli-3.33.0}/tests/test_validate_dependencies.py +0 -0
  703. {mapify_cli-3.32.0 → mapify_cli-3.33.0}/tests/test_validate_spec_citations.py +0 -0
  704. {mapify_cli-3.32.0 → mapify_cli-3.33.0}/tests/test_verification_recorder.py +0 -0
  705. {mapify_cli-3.32.0 → mapify_cli-3.33.0}/tests/test_wave_eval_harness.py +0 -0
  706. {mapify_cli-3.32.0 → mapify_cli-3.33.0}/tests/test_wave_fixtures.py +0 -0
  707. {mapify_cli-3.32.0 → mapify_cli-3.33.0}/tests/test_wave_parallel_harness.py +0 -0
  708. {mapify_cli-3.32.0 → mapify_cli-3.33.0}/tests/test_wayfind_install.py +0 -0
  709. {mapify_cli-3.32.0 → mapify_cli-3.33.0}/tests/test_wayfind_research.py +0 -0
  710. {mapify_cli-3.32.0 → mapify_cli-3.33.0}/tests/test_wayfind_runner.py +0 -0
  711. {mapify_cli-3.32.0 → mapify_cli-3.33.0}/tests/test_workflow_context_injector.py +0 -0
  712. {mapify_cli-3.32.0 → mapify_cli-3.33.0}/tests/test_workflow_finalizer.py +0 -0
  713. {mapify_cli-3.32.0 → mapify_cli-3.33.0}/tests/test_workflow_gate.py +0 -0
  714. {mapify_cli-3.32.0 → mapify_cli-3.33.0}/tests/test_workflow_logger.py +0 -0
  715. {mapify_cli-3.32.0 → mapify_cli-3.33.0}/tests/test_workflow_state.py +0 -0
  716. {mapify_cli-3.32.0 → mapify_cli-3.33.0}/tests/test_worktree_isolation.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.5
2
2
  Name: mapify-cli
3
- Version: 3.32.0
3
+ Version: 3.33.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
@@ -72,6 +72,10 @@ Common failure modes MAP eliminates:
72
72
 
73
73
  MAP moves engineering judgment earlier: write down the behavior, split the work into small contracts, verify each stage, review against the spec, and save lessons for the next run.
74
74
 
75
+ Skill maintainers can use `mapify skill-eval optimize <skill> --provider claude|codex --apply`
76
+ to update only the selected provider's description in the shared template source;
77
+ the opposite provider stays unchanged ([details](docs/USAGE.md#skill-description-optimization)).
78
+
75
79
  ## Quick Start
76
80
 
77
81
  <p align="center">
@@ -91,10 +95,16 @@ Requires Python 3.11+, and `python3` on your `PATH` must be that interpreter —
91
95
  installed hooks and `.map/scripts/` runners execute through a `#!/usr/bin/env
92
96
  python3` shebang, not through the interpreter that ran `mapify`. `mapify init`
93
97
  checks it up front and tells you what to fix ([details](docs/INSTALL.md#why-python3-on-path-matters)).
98
+ For Go projects requiring build tags, set `checks.go.tags: integration,netgo` in
99
+ `.map/config.yaml` for the Stop hook's build check ([configuration](docs/USAGE.md#end-of-turnsh-stop)).
94
100
 
95
101
  **2. Initialize your project**
96
102
 
97
- Claude Code is the default provider:
103
+ Claude Code is the default provider. Cross-AI review compares explicit host and
104
+ reviewer adapter vendors; same-vendor or unknown provenance is not labeled
105
+ independent ([details](docs/USAGE.md#cross-ai-peer-review---cross-ai-runtime)).
106
+
107
+ Claude Code:
98
108
 
99
109
  ```bash
100
110
  cd your-project
@@ -211,19 +221,21 @@ The DevOpsConf 2026 case study applies this process to a production Kubernetes P
211
221
  - **Daily-driver speed** — optimized for repeated use, not occasional demos. Structured enough to prevent chaos, lightweight enough to keep token and time cost under control.
212
222
  - **Reviewable diffs** — `/map-plan` and `/map-efficient` require per-subtask size, concern, and constraint metadata, then validate `blueprint.json` *before* implementation, so oversized or mixed-concern plans fail early.
213
223
  - **Gates that check the plan, not vibes** — `/map-check` and `/map-review` validate against the spec, tests, and diff instead of asking whether code "looks fine".
214
- - **Clean-room review** — `/map-review` auto-bundles spec, plan, tests, verification, and coverage evidence into a single durable input (`.map/<branch>/review-bundle.json`); `--detached` opens a read-only worktree for inspection without touching your branch.
224
+ - **Clean-room review** — `/map-review` auto-bundles available spec, plan, tests, verification, and coverage evidence into a single durable input (`.map/<branch>/review-bundle.json`); standalone external-PR review needs no Actor blueprint. `--detached` opens a read-only worktree for inspection without touching your branch.
215
225
  - **Project memory** — `/map-learn` turns hard-won fixes and gotchas into reusable context, so the next session doesn't relearn them.
216
226
 
217
227
  <details>
218
228
  <summary><b>More under the hood</b> — calibrated effort, mutation boundaries, token budgets, retry quarantine, run-health diagnostics, skill IR audit</summary>
219
229
 
220
230
  - **Calibrated workflow effort** — each shipped slash skill declares a `thinking_policy` and `parallel_tool_policy`, so lightweight commands stay direct while planning, review, and release workflows reserve deeper reasoning and parallel fan-out for the stages that benefit.
221
- - **Mutation boundary constraints** — write-capable Claude and Codex surfaces tell agents not to edit unrelated files, add or upgrade dependencies, or refactor neighboring code unless the current subtask requires it.
231
+ - **Mutation boundary constraints** — write-capable Claude and Codex surfaces tell agents not to edit unrelated files, add or upgrade dependencies, or refactor neighboring code unless the current subtask requires it. With `worktree.isolation: off`, Actor write checks inspect main even when a recovery worktree remains on disk.
232
+ - **Live isolation dispatch gate** — before concurrent Actor fan-out, `auto` isolation falls back to sequential on dirty or unsupported checkouts; `required` isolation stops dispatch instead. Wave guidance forwards the live decision and warning.
222
233
  - **Context-first prompt envelopes** — high-context prompts wrap branch artifacts in XML-style `<documents>`, then state the `<task>` and `<expected_output>`, so specs, diffs, logs, and schemas stay separated for the model.
223
234
  - **Contract-sized subtasks** — blueprints require `expected_diff_size`, `concern_type`, `one_logical_step`, `hard_constraints`, `soft_constraints`, and `coverage_map`. Hard constraints must be owned in `coverage_map` and cited in the owning subtask.
224
235
  - **Token budget and research ROI reports** — Actor and review prompt builders append active-path budget decisions to `.map/<branch>/token_budget.json`, while `token_accounting.json` and `/map-tokenreport` separate research-agent/researcher cost from Actor/Monitor cost.
225
236
  - **Clean retry quarantine** — after repeated Monitor rejection, write-capable workflows switch the next attempt into clean-retry mode using `.map/<branch>/retry_quarantine.json` instead of raw failed-session context.
226
- - **Run health report** — workflows write `.map/<branch>/run_health_report.json` during closeout: terminal status, step progress, retry counters, artifact presence, hook-injection status, and advisory signals. CI can fail inconsistent closeouts with `python3 .map/scripts/map_step_runner.py validate_run_health_report`.
237
+ - **Run health report** — workflows write `.map/<branch>/run_health_report.json` during closeout: terminal status, step progress, retry counters, artifact presence, hook-injection status, and advisory signals. CI can fail inconsistent closeouts with `python3 .map/scripts/map_step_runner.py validate_run_health_report`. All runner subcommands support read-only `--help` / `-h`; for example, `python3 .map/scripts/map_step_runner.py write_run_health_report --help`.
238
+ - **Lossless serial blocker repair** — independently approved repairs run in a private checkout with their own Monitor and full gate, preserving the paused task's phase, results, retries and dirty files. Concurrent waves and overlapping repair paths fail closed; see [the repair protocol](docs/USAGE.md#independent-serial-blocker-repair).
227
239
  - **Compact recovery surface** — `/map-resume` keeps the active recovery flow short and moves low-frequency notes to `resume-reference.md`, so recovery after `/clear` or context exhaustion gives the next checkpoint action without loading the whole appendix.
228
240
  - **Skill IR audit** — release checks lower shipped Claude and Codex `SKILL.md` files into a typed `SkillIR`, verify content hashes, catch unsupported frontmatter, reject missing supporting-file links, and block injection-like instructions before `mapify init` copies surfaces into user repos.
229
241
 
@@ -27,6 +27,10 @@ Common failure modes MAP eliminates:
27
27
 
28
28
  MAP moves engineering judgment earlier: write down the behavior, split the work into small contracts, verify each stage, review against the spec, and save lessons for the next run.
29
29
 
30
+ Skill maintainers can use `mapify skill-eval optimize <skill> --provider claude|codex --apply`
31
+ to update only the selected provider's description in the shared template source;
32
+ the opposite provider stays unchanged ([details](docs/USAGE.md#skill-description-optimization)).
33
+
30
34
  ## Quick Start
31
35
 
32
36
  <p align="center">
@@ -46,10 +50,16 @@ Requires Python 3.11+, and `python3` on your `PATH` must be that interpreter —
46
50
  installed hooks and `.map/scripts/` runners execute through a `#!/usr/bin/env
47
51
  python3` shebang, not through the interpreter that ran `mapify`. `mapify init`
48
52
  checks it up front and tells you what to fix ([details](docs/INSTALL.md#why-python3-on-path-matters)).
53
+ For Go projects requiring build tags, set `checks.go.tags: integration,netgo` in
54
+ `.map/config.yaml` for the Stop hook's build check ([configuration](docs/USAGE.md#end-of-turnsh-stop)).
49
55
 
50
56
  **2. Initialize your project**
51
57
 
52
- Claude Code is the default provider:
58
+ Claude Code is the default provider. Cross-AI review compares explicit host and
59
+ reviewer adapter vendors; same-vendor or unknown provenance is not labeled
60
+ independent ([details](docs/USAGE.md#cross-ai-peer-review---cross-ai-runtime)).
61
+
62
+ Claude Code:
53
63
 
54
64
  ```bash
55
65
  cd your-project
@@ -166,19 +176,21 @@ The DevOpsConf 2026 case study applies this process to a production Kubernetes P
166
176
  - **Daily-driver speed** — optimized for repeated use, not occasional demos. Structured enough to prevent chaos, lightweight enough to keep token and time cost under control.
167
177
  - **Reviewable diffs** — `/map-plan` and `/map-efficient` require per-subtask size, concern, and constraint metadata, then validate `blueprint.json` *before* implementation, so oversized or mixed-concern plans fail early.
168
178
  - **Gates that check the plan, not vibes** — `/map-check` and `/map-review` validate against the spec, tests, and diff instead of asking whether code "looks fine".
169
- - **Clean-room review** — `/map-review` auto-bundles spec, plan, tests, verification, and coverage evidence into a single durable input (`.map/<branch>/review-bundle.json`); `--detached` opens a read-only worktree for inspection without touching your branch.
179
+ - **Clean-room review** — `/map-review` auto-bundles available spec, plan, tests, verification, and coverage evidence into a single durable input (`.map/<branch>/review-bundle.json`); standalone external-PR review needs no Actor blueprint. `--detached` opens a read-only worktree for inspection without touching your branch.
170
180
  - **Project memory** — `/map-learn` turns hard-won fixes and gotchas into reusable context, so the next session doesn't relearn them.
171
181
 
172
182
  <details>
173
183
  <summary><b>More under the hood</b> — calibrated effort, mutation boundaries, token budgets, retry quarantine, run-health diagnostics, skill IR audit</summary>
174
184
 
175
185
  - **Calibrated workflow effort** — each shipped slash skill declares a `thinking_policy` and `parallel_tool_policy`, so lightweight commands stay direct while planning, review, and release workflows reserve deeper reasoning and parallel fan-out for the stages that benefit.
176
- - **Mutation boundary constraints** — write-capable Claude and Codex surfaces tell agents not to edit unrelated files, add or upgrade dependencies, or refactor neighboring code unless the current subtask requires it.
186
+ - **Mutation boundary constraints** — write-capable Claude and Codex surfaces tell agents not to edit unrelated files, add or upgrade dependencies, or refactor neighboring code unless the current subtask requires it. With `worktree.isolation: off`, Actor write checks inspect main even when a recovery worktree remains on disk.
187
+ - **Live isolation dispatch gate** — before concurrent Actor fan-out, `auto` isolation falls back to sequential on dirty or unsupported checkouts; `required` isolation stops dispatch instead. Wave guidance forwards the live decision and warning.
177
188
  - **Context-first prompt envelopes** — high-context prompts wrap branch artifacts in XML-style `<documents>`, then state the `<task>` and `<expected_output>`, so specs, diffs, logs, and schemas stay separated for the model.
178
189
  - **Contract-sized subtasks** — blueprints require `expected_diff_size`, `concern_type`, `one_logical_step`, `hard_constraints`, `soft_constraints`, and `coverage_map`. Hard constraints must be owned in `coverage_map` and cited in the owning subtask.
179
190
  - **Token budget and research ROI reports** — Actor and review prompt builders append active-path budget decisions to `.map/<branch>/token_budget.json`, while `token_accounting.json` and `/map-tokenreport` separate research-agent/researcher cost from Actor/Monitor cost.
180
191
  - **Clean retry quarantine** — after repeated Monitor rejection, write-capable workflows switch the next attempt into clean-retry mode using `.map/<branch>/retry_quarantine.json` instead of raw failed-session context.
181
- - **Run health report** — workflows write `.map/<branch>/run_health_report.json` during closeout: terminal status, step progress, retry counters, artifact presence, hook-injection status, and advisory signals. CI can fail inconsistent closeouts with `python3 .map/scripts/map_step_runner.py validate_run_health_report`.
192
+ - **Run health report** — workflows write `.map/<branch>/run_health_report.json` during closeout: terminal status, step progress, retry counters, artifact presence, hook-injection status, and advisory signals. CI can fail inconsistent closeouts with `python3 .map/scripts/map_step_runner.py validate_run_health_report`. All runner subcommands support read-only `--help` / `-h`; for example, `python3 .map/scripts/map_step_runner.py write_run_health_report --help`.
193
+ - **Lossless serial blocker repair** — independently approved repairs run in a private checkout with their own Monitor and full gate, preserving the paused task's phase, results, retries and dirty files. Concurrent waves and overlapping repair paths fail closed; see [the repair protocol](docs/USAGE.md#independent-serial-blocker-repair).
182
194
  - **Compact recovery surface** — `/map-resume` keeps the active recovery flow short and moves low-frequency notes to `resume-reference.md`, so recovery after `/clear` or context exhaustion gives the next checkpoint action without loading the whole appendix.
183
195
  - **Skill IR audit** — release checks lower shipped Claude and Codex `SKILL.md` files into a typed `SkillIR`, verify content hashes, catch unsupported frontmatter, reject missing supporting-file links, and block injection-like instructions before `mapify init` copies surfaces into user repos.
184
196
 
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "mapify-cli"
3
- version = "3.32.0"
3
+ version = "3.33.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.32.0"
26
+ __version__ = "3.33.0"
27
27
 
28
28
  # MUST stay the first import: it turns "this interpreter is older than 3.11" into
29
29
  # a message that says so, instead of the ImportError raised by `from datetime
@@ -0,0 +1,277 @@
1
+ """Apply a provider-specific winner without modifying the opposite skill."""
2
+
3
+ from __future__ import annotations
4
+
5
+ import json
6
+ import os
7
+ import re
8
+ import shutil
9
+ import stat
10
+ import subprocess
11
+ import tempfile
12
+ from pathlib import Path
13
+ from typing import TypedDict
14
+
15
+
16
+ class _JournalEntry(TypedDict):
17
+ path: str
18
+ exists: bool
19
+ mode: int
20
+ backup: str
21
+
22
+
23
+ def _plain_description(text: str, winner: str) -> str:
24
+ """Replace one complete, supported YAML description scalar."""
25
+ if not text.startswith("---\n") or "\n---" not in text:
26
+ raise ValueError("No YAML frontmatter found or no closing '---'")
27
+ end = text.index("\n---", 4)
28
+ lines = text[4:end].splitlines(keepends=True)
29
+ starts = [i for i, line in enumerate(lines) if line.startswith("description:")]
30
+ if len(starts) != 1:
31
+ raise ValueError("Expected exactly one description key")
32
+ i = starts[0]
33
+ scalar = lines[i].split(":", 1)[1].strip()
34
+ if not scalar or scalar.startswith(("[", "{", "&", "*")):
35
+ raise ValueError("Unsupported description scalar")
36
+ j = i + 1
37
+ while j < len(lines) and (not lines[j].strip() or lines[j].startswith((" ", "\t"))):
38
+ j += 1
39
+ if j > i + 1 and scalar not in ("|", "|-", "|+", ">", ">-", ">+"):
40
+ raise ValueError("Unsupported multiline description scalar")
41
+ while j > i + 1 and not lines[j - 1].strip():
42
+ j -= 1
43
+ replacement = "description: |-\n" + "".join(" " + line + "\n" for line in winner.split("\n"))
44
+ header = "".join(lines[:i]) + replacement + "".join(lines[j:])
45
+ return "---\n" + header.rstrip("\n") + text[end:]
46
+
47
+
48
+ def patch_skill_description(skill_md_path: Path, new_description: str) -> None:
49
+ """Preserved plain YAML API; validate fully before the single write."""
50
+ text = skill_md_path.read_text(encoding="utf-8")
51
+ patched = _plain_description(text, new_description)
52
+ _atomic_bytes(skill_md_path, patched.encode(), stat.S_IMODE(skill_md_path.stat().st_mode))
53
+
54
+
55
+ def _provider_description(text: str, winner: str, provider: str) -> str:
56
+ """Bounded provider-header contract, not a general Jinja source parser."""
57
+ from mapify_cli.delivery.template_renderer import get_environment
58
+ from mapify_cli.skill_ir import parse_frontmatter
59
+
60
+ if not text.startswith("---\n") or "\n---\n" not in text:
61
+ raise ValueError("Unsupported description structure: missing frontmatter")
62
+ header, body = text[4:].split("\n---\n", 1)
63
+ for directive in re.findall(r"\[%.*?%\]", header, flags=re.DOTALL):
64
+ token = directive[2:-2].strip().strip("-").strip()
65
+ if token not in ("else", "endif") and not re.fullmatch(
66
+ r"if PROVIDER == ([\"'])(?:claude|codex)\1|set cmd = \"/\" if PROVIDER == \"claude\" else \"\$\"", token
67
+ ):
68
+ raise ValueError(f"Unsupported description directive: {directive}")
69
+ if re.search(r"<%(?!\s*cmd\s*%>)|\[#", header):
70
+ raise ValueError("Unsupported description expression")
71
+ if any(t in winner for t in ("[%", "<%", "[#")) or not winner.strip():
72
+ raise ValueError("Unsupported winner description")
73
+ env = get_environment()
74
+ rendered = env.from_string("---\n" + header + "\n---\n").render(PROVIDER=provider)
75
+ parse_frontmatter(rendered.split("---", 2)[1])
76
+ patched = _plain_description(rendered, winner)
77
+ parsed = parse_frontmatter(patched.split("---", 2)[1])
78
+ if parsed.get("description") != winner:
79
+ raise ValueError("Unsupported description structure: winner did not round-trip")
80
+ opposite = "codex" if provider == "claude" else "claude"
81
+ original_other = env.from_string("---\n" + header + "\n---\n").render(PROVIDER=opposite)
82
+ # Independent provider descriptions have unambiguous scalar spans. Edit
83
+ # only the selected block, retaining every other source byte.
84
+ branches = list(re.finditer(r'\[% if PROVIDER == ([\"\'])(claude|codex)\1 %\]description:', header))
85
+ for branch in branches:
86
+ stop = header.find("[% endif", branch.end())
87
+ alternate = header.find("[% else %]description:", branch.end(), stop)
88
+ if alternate < 0:
89
+ continue
90
+ first = branch.end() - len("description:")
91
+ second = alternate + len("[% else %]")
92
+ start, limit = (first, alternate) if provider == branch.group(2) else (second, stop)
93
+ segment = header[start:limit]
94
+ patched_segment = _plain_description("---\n" + segment + "\n---\n", winner)[4:-5]
95
+ if segment.endswith("\n"):
96
+ patched_segment += "\n"
97
+ candidate_header = header[:start] + patched_segment + header[limit:]
98
+ result = "---\n" + candidate_header + "\n---\n" + body
99
+ if env.from_string("---\n" + candidate_header + "\n---\n").render(PROVIDER=opposite) != original_other:
100
+ raise ValueError("Unsupported conditional description whitespace")
101
+ return result
102
+ binding = '[% set cmd = "/" if PROVIDER == "claude" else "$" -%]'
103
+ combined = ("---\n" + binding + f'[% if PROVIDER == "{provider}" %]'
104
+ + patched[4:-4] + "[% else %]" + original_other[4:-4] + "[% endif -%]\n---\n")
105
+ if env.from_string(combined).render(PROVIDER=opposite) != original_other:
106
+ raise ValueError("Unsupported description whitespace structure")
107
+ return combined + body
108
+
109
+
110
+ def _atomic_bytes(path: Path, data: bytes, mode: int) -> None:
111
+ path.parent.mkdir(parents=True, exist_ok=True)
112
+ fd, name = tempfile.mkstemp(prefix=".mapify-apply-", dir=path.parent)
113
+ try:
114
+ with os.fdopen(fd, "wb") as stream:
115
+ stream.write(data)
116
+ stream.flush()
117
+ os.fsync(stream.fileno())
118
+ os.chmod(name, mode)
119
+ os.replace(name, path)
120
+ directory_fd = os.open(path.parent, os.O_RDONLY)
121
+ try:
122
+ os.fsync(directory_fd)
123
+ finally:
124
+ os.close(directory_fd)
125
+ finally:
126
+ Path(name).unlink(missing_ok=True)
127
+
128
+
129
+ def _recover_transaction(root: Path) -> None:
130
+ journal = root / ".map/skill-eval-apply-transaction"
131
+ manifest = journal / "manifest.json"
132
+ if any(p.is_symlink() for p in (journal, journal.parent, manifest)):
133
+ raise ValueError(f"Unsafe apply recovery journal: {journal}")
134
+ if not manifest.exists():
135
+ return
136
+ entries = json.loads(manifest.read_text(encoding="utf-8"))
137
+ if not (journal / "complete").exists():
138
+ for entry in entries:
139
+ target = root / entry["path"]
140
+ backup = journal / entry["backup"]
141
+ if (not target.resolve().is_relative_to(root.resolve())
142
+ or not backup.resolve().is_relative_to(journal.resolve())
143
+ or any(p.is_symlink() for p in (target, *target.parents, backup))):
144
+ raise ValueError(f"Unsafe recovery path in {manifest}")
145
+ if entry["exists"]:
146
+ _atomic_bytes(target, (journal / entry["backup"]).read_bytes(), entry["mode"])
147
+ else:
148
+ target.unlink(missing_ok=True)
149
+ shutil.rmtree(journal)
150
+
151
+
152
+ def _commit_transaction(root: Path, updates: dict[Path, bytes]) -> list[Path]:
153
+ journal = root / ".map/skill-eval-apply-transaction"
154
+ for path in updates:
155
+ if any(p.is_symlink() for p in (path, *path.parents) if p != root.parent):
156
+ raise ValueError(f"Refusing symlink output: {path}")
157
+ if journal.exists():
158
+ raise ValueError(f"Incomplete apply journal requires inspection: {journal}")
159
+ journal.mkdir(parents=True, exist_ok=False)
160
+ entries: list[_JournalEntry] = []
161
+ for i, (path, data) in enumerate(updates.items()):
162
+ exists = path.exists()
163
+ if exists and path.read_bytes() == data:
164
+ continue
165
+ mode = stat.S_IMODE(path.stat().st_mode) if exists else 0o644
166
+ entry: _JournalEntry = {"path": str(path.relative_to(root)), "exists": exists, "mode": mode, "backup": str(i)}
167
+ if exists:
168
+ _atomic_bytes(journal / str(i), path.read_bytes(), 0o600)
169
+ entries.append(entry)
170
+ _atomic_bytes(journal / "manifest.json", json.dumps(entries).encode(), 0o600)
171
+ fd = os.open(journal, os.O_RDONLY)
172
+ try:
173
+ os.fsync(fd)
174
+ finally:
175
+ os.close(fd)
176
+ try:
177
+ for entry in entries:
178
+ path = root / str(entry["path"])
179
+ _atomic_bytes(path, updates[path], int(entry["mode"]))
180
+ _atomic_bytes(journal / "complete", b"complete", 0o600)
181
+ except BaseException:
182
+ _recover_transaction(root)
183
+ raise
184
+ shutil.rmtree(journal)
185
+ return [root / str(entry["path"]) for entry in entries]
186
+
187
+
188
+ def apply_optimized_description(
189
+ *, skill: str, winner: str, current_description: str, no_improvement: bool,
190
+ repo_root: Path, stage: bool = True, provider: str = "claude",
191
+ ) -> str:
192
+ """Serialize recovery/promotion across processes using the installer barrier."""
193
+ if no_improvement:
194
+ print("No improvement found: current description already optimal on held-out test")
195
+ return "no_improvement"
196
+ if winner == current_description:
197
+ print("Winner identical to current description; no file changes")
198
+ return "identical"
199
+ from mapify_cli.update_state import installer_process_lock
200
+
201
+ repo_root = repo_root.resolve()
202
+ with installer_process_lock(repo_root, timeout_s=30):
203
+ return _apply_optimized_description(
204
+ skill=skill, winner=winner, current_description=current_description,
205
+ no_improvement=no_improvement, repo_root=repo_root, stage=stage, provider=provider,
206
+ )
207
+
208
+
209
+ def _apply_optimized_description(
210
+ *, skill: str, winner: str, current_description: str, no_improvement: bool,
211
+ repo_root: Path, stage: bool = True, provider: str = "claude",
212
+ ) -> str:
213
+ """Render in isolation, then transactionally promote only selected skill files."""
214
+ if no_improvement:
215
+ print("No improvement found: current description already optimal on held-out test")
216
+ return "no_improvement"
217
+ if winner == current_description:
218
+ print("Winner identical to current description; no file changes")
219
+ return "identical"
220
+ if provider not in ("claude", "codex"):
221
+ raise ValueError(f"Unsupported provider: {provider}")
222
+ source_root = (repo_root / "src/mapify_cli/templates_src").resolve()
223
+ jinja = source_root / "skills" / skill / "SKILL.md.jinja"
224
+ if not jinja.resolve().is_relative_to(source_root) or ".git" in jinja.resolve().parts:
225
+ raise ValueError(f"Path safety violation outside templates_src or under .git: {jinja}")
226
+ _recover_transaction(repo_root)
227
+ original = jinja.read_text(encoding="utf-8")
228
+ candidate = _provider_description(original, winner, provider)
229
+ from mapify_cli.delivery.template_renderer import get_environment, render_repo_trees
230
+
231
+ with tempfile.TemporaryDirectory(prefix="mapify-apply-") as tmp:
232
+ sandbox = Path(tmp)
233
+ source = sandbox / "src/mapify_cli/templates_src"
234
+ shutil.copytree(source_root, source)
235
+ target = source / jinja.relative_to(source_root)
236
+ target.write_text(candidate, encoding="utf-8")
237
+ env = get_environment(source)
238
+ name = jinja.relative_to(source_root).as_posix()
239
+ opposite = "codex" if provider == "claude" else "claude"
240
+ before_env = get_environment(source_root)
241
+ if env.get_template(name).render(PROVIDER=opposite) != before_env.get_template(name).render(PROVIDER=opposite):
242
+ raise ValueError("Unsupported description structure: opposite provider changed")
243
+ from mapify_cli.skill_ir import parse_frontmatter
244
+
245
+ selected = env.get_template(name).render(PROVIDER=provider)
246
+ if parse_frontmatter(selected.split("---", 2)[1]).get("description") != winner:
247
+ raise ValueError("Unsupported description structure: selected winner mismatch")
248
+ for runtime in ("claude", "codex"):
249
+ render_repo_trees(runtime, repo_root=sandbox, templates_src_root=source)
250
+ roots = (".claude/skills", "src/mapify_cli/templates/skills") if provider == "claude" else (
251
+ ".agents/skills", "src/mapify_cli/templates/codex/skills"
252
+ )
253
+ updates = {jinja: target.read_bytes()}
254
+ for root in roots:
255
+ rel = Path(root) / skill / "SKILL.md"
256
+ rendered_bytes = (sandbox / rel).read_bytes()
257
+ generated_text = rendered_bytes.decode()
258
+ if parse_frontmatter(generated_text.split("---", 2)[1]).get("description") != winner:
259
+ raise ValueError("Unsupported provider source: generated winner differs from common source")
260
+ provider_template = ("codex/" if provider == "codex" else "") + name
261
+ baseline = before_env.get_template(provider_template).render(PROVIDER=provider)
262
+ destination = repo_root / rel
263
+ if destination.exists() and destination.read_bytes() != baseline.encode():
264
+ raise ValueError(f"Refusing modified or stale generated skill: {destination}; preserve your edits and render explicitly first")
265
+ if _plain_description(baseline, winner) != generated_text:
266
+ raise ValueError("Unsupported provider source: non-description generated content changed")
267
+ updates[repo_root / rel] = rendered_bytes
268
+ changed = _commit_transaction(repo_root, updates)
269
+ if stage and changed:
270
+ result = subprocess.run(
271
+ ["git", "add", "--", *(str(p.relative_to(repo_root)) for p in changed)],
272
+ cwd=repo_root, capture_output=True, text=True, check=False,
273
+ )
274
+ if result.returncode:
275
+ print(f"Warning: 'git add' failed (exit {result.returncode}): {result.stderr.strip()}")
276
+ print(f"Applied new description for '{skill}'. Note: skill-rules.json description is NOT auto-patched")
277
+ return "applied"
@@ -40,6 +40,27 @@ You are a **validation agent**, NOT a code editor. Your role:
40
40
 
41
41
  ---
42
42
 
43
+ ## Review context (MANDATORY)
44
+
45
+ - **Actor subtask validation:** When dispatched to validate an Actor subtask,
46
+ enforce its AAG contract and mutation boundary below. Missing or invalid
47
+ blueprint/subtask metadata is a blocking setup error, not a standalone review.
48
+ - **Standalone /map-review:** When dispatched to review a diff/PR using a review
49
+ bundle rather than validate an Actor subtask, assess correctness, security,
50
+ tests, regressions, and any supplied requirements against that diff.
51
+ Do not require an Actor AAG contract, blueprint, or subtask ID, and do not run
52
+ the Actor mutation-boundary command. Missing planning artifacts are context
53
+ limitations, not defects in the reviewed PR. Continue all applicable build,
54
+ test, and quality gates; report concrete defects with source evidence.
55
+ - Never infer standalone review from a missing blueprint. An explicit Actor
56
+ subtask validation assignment takes precedence over generic review wording.
57
+ If the assignment is ambiguous, ask the parent to clarify before a verdict.
58
+ Do not create a synthetic blueprint or reset/migrate workflow state to review.
59
+
60
+ The Actor-specific sequence and rejection rules below (AAG, allowed scope,
61
+ subtask metadata) apply only to Actor subtask validation, not standalone review.
62
+
63
+
43
64
  <Monitor_Contract_Verification_v2_9>
44
65
 
45
66
  ## Contract-Based Verification Protocol
@@ -31,6 +31,27 @@ Your output: JSON with valid: true|false and issues[] array.
31
31
 
32
32
  ---
33
33
 
34
+ ## Review context (MANDATORY)
35
+
36
+ - **Actor subtask validation:** When dispatched to validate an Actor subtask,
37
+ enforce its AAG contract and mutation boundary below. Missing or invalid
38
+ blueprint/subtask metadata is a blocking setup error, not a standalone review.
39
+ - **Standalone /map-review:** When dispatched to review a diff/PR using a review
40
+ bundle rather than validate an Actor subtask, assess correctness, security,
41
+ tests, regressions, and any supplied requirements against that diff.
42
+ Do not require an Actor AAG contract, blueprint, or subtask ID, and do not run
43
+ the Actor mutation-boundary command. Missing planning artifacts are context
44
+ limitations, not defects in the reviewed PR. Continue all applicable build,
45
+ test, and quality gates; report concrete defects with source evidence.
46
+ - Never infer standalone review from a missing blueprint. An explicit Actor
47
+ subtask validation assignment takes precedence over generic review wording.
48
+ If the assignment is ambiguous, ask the parent to clarify before a verdict.
49
+ Do not create a synthetic blueprint or reset/migrate workflow state to review.
50
+
51
+ The Actor-specific sequence and rejection rules below (AAG, allowed scope,
52
+ subtask metadata) apply only to Actor subtask validation, not standalone review.
53
+
54
+
34
55
  # Contract-Based Verification Protocol
35
56
 
36
57
  Primary Mission: Verify that Actor's implementation exactly matches the AAG contract
@@ -52,8 +73,19 @@ Verification sequence (execute in order):
52
73
 
53
74
  3. Verify Goal is achieved -- trace code path to confirm the stated outcome
54
75
  4. Verify Action is implemented -- check that the specified method/operation exists
55
- 5. Verify scope -- confirm changes stay within Actor's allowed_scope
56
- 6. Run quality gates below
76
+ 5. Verify mutation boundary (MANDATORY): Run
77
+ python3 .map/scripts/map_step_runner.py validate_mutation_boundary <branch> <subtask_id>
78
+ to compare the actual git diff against the subtask's declared affected_files.
79
+ - status="clean" -> continue.
80
+ - status="warning" -> record the unexpected files; do NOT auto-reject.
81
+ The CLI also appends to .map/<branch>/scope-violations.log for audit.
82
+ - status="violation" (MAP_STRICT_SCOPE=1) -> valid: false with the unexpected
83
+ list. The Actor must re-scope.
84
+ - status="error" (missing blueprint, unknown subtask, git failure, not a git
85
+ repo) -> valid: false with the returned message. The CLI exits non-zero;
86
+ repair the setup before re-running Monitor. Never silently skip this gate.
87
+ 6. Verify scope -- confirm changes stay within Actor's allowed_scope
88
+ 7. Run quality gates below
57
89
 
58
90
  Deterministic REJECT rule:
59
91
  If implementation deviates from the AAG contract -> valid: false -- regardless of how
@@ -65,7 +65,7 @@ import re, sys
65
65
  key, default = sys.argv[1], sys.argv[2]
66
66
  try:
67
67
  text = open('.map/config.yaml', encoding='utf-8').read()
68
- m = re.search(r'^\s*' + re.escape(key) + r'\s*:\s*(\S+)', text, re.MULTILINE)
68
+ m = re.search(r'^[ \t]*' + re.escape(key) + r'[ \t]*:[ \t]*(\S+)', text, re.MULTILINE)
69
69
  print(m.group(1).strip() if m else default)
70
70
  except Exception:
71
71
  print(default)
@@ -281,12 +281,20 @@ if command -v go &>/dev/null && [[ -f "go.mod" ]]; then
281
281
  # developed on macOS (e.g. projects using cgroups/eBPF/netlink).
282
282
  # Example config: checks.go.goos: linux
283
283
  _go_goos="${GOOS:-$(_read_map_config_value 'checks.go.goos' '')}"
284
+ # Optional comma-separated build tags; keep the entire value
285
+ # in one argv entry, never evaluate it as shell syntax.
286
+ _go_tags=$(_read_map_config_value 'checks.go.tags' '')
287
+ _go_build_args=(build)
288
+ if [[ -n "$_go_tags" ]]; then
289
+ _go_build_args+=(-tags "$_go_tags")
290
+ fi
291
+ _go_build_args+=(-o /dev/null ./...)
284
292
  _go_build_ok=true
285
293
  if [[ -n "$_go_goos" ]]; then
286
- GOOS="$_go_goos" go build -o /dev/null ./... 2>/dev/null \
294
+ GOOS="$_go_goos" go "${_go_build_args[@]}" 2>/dev/null \
287
295
  || _go_build_ok=false
288
296
  else
289
- go build -o /dev/null ./... 2>/dev/null || _go_build_ok=false
297
+ go "${_go_build_args[@]}" 2>/dev/null || _go_build_ok=false
290
298
  fi
291
299
  if [[ "$_go_build_ok" == "false" ]]; then
292
300
  add_critical "Go build errors detected (run 'go build ./...' for details)"
@@ -486,6 +486,77 @@ def get_branch_name() -> str:
486
486
  return "default"
487
487
 
488
488
 
489
+ def _has_active_interruption(branch: str) -> bool:
490
+ """The parent marker suspends writes; only the engine validates its journal."""
491
+ try:
492
+ state = json.loads(
493
+ (PROJECT_DIR / ".map" / branch / "step_state.json").read_text(encoding="utf-8")
494
+ )
495
+ except (OSError, UnicodeError, json.JSONDecodeError):
496
+ state = None # Ordinary corrupt state remains fail-open without repair evidence.
497
+ if isinstance(state, dict) and state.get("active_interruption") is not None:
498
+ return True
499
+ # Intent: durable repair intent still protects the parent after state corruption.
500
+ try:
501
+ for journal in (PROJECT_DIR / ".git/map-repairs").glob("repair-*/journal.json"):
502
+ if not re.fullmatch(r"repair-[0-9a-f]{24}", journal.parent.name):
503
+ continue
504
+ record = json.loads(journal.read_text(encoding="utf-8"))
505
+ if not isinstance(record, dict) or not all(
506
+ isinstance(record.get(key), str) and record[key] for key in ("branch", "stage")
507
+ ):
508
+ return True
509
+ if record.get("branch") == branch and record.get("stage") != "done":
510
+ return True
511
+ except (OSError, UnicodeError, json.JSONDecodeError):
512
+ return True
513
+ return False
514
+
515
+
516
+ def _interruption_allows_bash(command: str) -> bool:
517
+ """Accept explicit inspection/checks or the canonical runner, not a prefix."""
518
+ # Intent: opaque expansion and compound shell commands cannot prove read-only intent.
519
+ if _bash_write_targets(command) or any(character in command for character in "$`\n\r"):
520
+ return False
521
+ try:
522
+ lexer = shlex.shlex(command, posix=True, punctuation_chars=";&|<>()")
523
+ lexer.whitespace_split = True
524
+ lexer.commenters = ""
525
+ tokens = list(lexer)
526
+ except ValueError:
527
+ return False
528
+ if not tokens or any(token and all(character in ";&|<>()" for character in token)
529
+ for token in tokens):
530
+ return False
531
+ executable, args = tokens[0], tokens[1:]
532
+ if executable in {"python", "python3"}:
533
+ if not args:
534
+ return False
535
+ script = args[0]
536
+ for name in ("map_step_runner.py", "map_orchestrator.py"):
537
+ canonical = Path(".map/scripts") / name
538
+ if script in {str(canonical), str(PROJECT_DIR / canonical)}:
539
+ return len(args) > 1 and args[1] in {
540
+ "begin_repair", "verify_repair", "finish_repair", "repair_status",
541
+ "get_interruption_status",
542
+ }
543
+ return False
544
+ if executable == "git":
545
+ if not args:
546
+ return False
547
+ if args[0] in {"status", "rev-parse", "ls-files"}:
548
+ return not any(arg.startswith("--output") for arg in args)
549
+ if args == ["branch", "--show-current"]:
550
+ return True
551
+ if args[:2] == ["--no-pager", "diff"]:
552
+ options = args[:args.index("--")] if "--" in args else args
553
+ return {"--no-ext-diff", "--no-textconv"}.issubset(options) and not any(
554
+ arg.startswith(("--output", "--ext-diff", "--textconv")) for arg in args
555
+ )
556
+ return False
557
+ return executable in {"cat", "ls", "pwd", "grep", "head", "tail", "wc", "true"}
558
+
559
+
489
560
  def _current_phase_is_research(branch: str) -> bool:
490
561
  """Return True iff step_state's current phase is RESEARCH (2.2)."""
491
562
  step_file = PROJECT_DIR / ".map" / branch / "step_state.json"
@@ -866,13 +937,23 @@ def main() -> None:
866
937
  allow()
867
938
 
868
939
  target_paths = extract_target_file_paths(tool_call)
940
+ branch = get_branch_name()
941
+ interrupted = _has_active_interruption(branch)
942
+ if interrupted:
943
+ if tool_name == "Bash":
944
+ tool_input = tool_call.get("tool_input") or {}
945
+ command = tool_input.get("command") if isinstance(tool_input, dict) else None
946
+ if isinstance(command, str) and _interruption_allows_bash(command):
947
+ allow()
948
+ deny("Workflow suspended for blocker repair: main-checkout Bash writes are denied.")
949
+ if not target_paths or any(not is_exempt_path(p) for p in target_paths):
950
+ deny("Workflow suspended for blocker repair: edit application files in the private checkout.")
869
951
  # Opaque Bash (no extractable write target) is not gated — parity with
870
952
  # the Claude twin and the known #164 limitation. Denying it fail-closed
871
953
  # would also deny the orchestrator's own `VAR=$(...)` captures.
872
954
  if tool_name == "Bash" and not target_paths:
873
955
  allow()
874
956
 
875
- branch = get_branch_name()
876
957
  phase_allowed, phase_error = is_editing_phase(branch) # one state read
877
958
  if (
878
959
  tool_name == "Bash"
@@ -895,7 +976,7 @@ def main() -> None:
895
976
  # protected path alongside ordinary ones) denies as a whole — fail
896
977
  # closed on any protected target.
897
978
  tamper_paths = [p for p in target_paths if is_state_tamper_path(p)]
898
- if tamper_paths and _is_workflow_active(branch):
979
+ if tamper_paths and (interrupted or _is_workflow_active(branch)):
899
980
  attempted = tamper_paths[0]
900
981
  try:
901
982
  attempted = _to_repo_relative(tamper_paths[0]) or tamper_paths[0]