mapify-cli 3.31.4__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 (731) hide show
  1. {mapify_cli-3.31.4 → mapify_cli-3.33.0}/PKG-INFO +19 -7
  2. {mapify_cli-3.31.4 → mapify_cli-3.33.0}/README.md +18 -6
  3. {mapify_cli-3.31.4 → mapify_cli-3.33.0}/pyproject.toml +1 -1
  4. {mapify_cli-3.31.4 → 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.31.4 → mapify_cli-3.33.0}/src/mapify_cli/templates/agents/monitor.md +21 -0
  7. {mapify_cli-3.31.4 → mapify_cli-3.33.0}/src/mapify_cli/templates/codex/agents/monitor.toml +34 -2
  8. {mapify_cli-3.31.4 → mapify_cli-3.33.0}/src/mapify_cli/templates/codex/hooks/context-meter.py +3 -3
  9. {mapify_cli-3.31.4 → mapify_cli-3.33.0}/src/mapify_cli/templates/codex/hooks/detect-clarification-triggers.py +3 -3
  10. {mapify_cli-3.31.4 → mapify_cli-3.33.0}/src/mapify_cli/templates/codex/hooks/end-of-turn.sh +11 -3
  11. {mapify_cli-3.31.4 → mapify_cli-3.33.0}/src/mapify_cli/templates/codex/hooks/map-memory-capture.py +3 -3
  12. {mapify_cli-3.31.4 → mapify_cli-3.33.0}/src/mapify_cli/templates/codex/hooks/map-memory-endmark.py +3 -3
  13. {mapify_cli-3.31.4 → mapify_cli-3.33.0}/src/mapify_cli/templates/codex/hooks/map-memory-recall.py +3 -3
  14. {mapify_cli-3.31.4 → mapify_cli-3.33.0}/src/mapify_cli/templates/codex/hooks/map-memory-session.py +3 -3
  15. {mapify_cli-3.31.4 → mapify_cli-3.33.0}/src/mapify_cli/templates/codex/hooks/map-stop.py +3 -3
  16. {mapify_cli-3.31.4 → mapify_cli-3.33.0}/src/mapify_cli/templates/codex/hooks/map-token-meter.py +3 -3
  17. {mapify_cli-3.31.4/src/mapify_cli/templates → mapify_cli-3.33.0/src/mapify_cli/templates/codex}/hooks/post-compact-context.py +4 -3
  18. {mapify_cli-3.31.4 → mapify_cli-3.33.0}/src/mapify_cli/templates/codex/hooks/pre-compact-save-transcript.py +3 -3
  19. {mapify_cli-3.31.4 → mapify_cli-3.33.0}/src/mapify_cli/templates/codex/hooks/ralph-context-pruner.py +3 -3
  20. {mapify_cli-3.31.4 → mapify_cli-3.33.0}/src/mapify_cli/templates/codex/hooks/ralph-iteration-logger.py +3 -3
  21. {mapify_cli-3.31.4/src/mapify_cli/templates → mapify_cli-3.33.0/src/mapify_cli/templates/codex}/hooks/safety-guardrails.py +4 -3
  22. {mapify_cli-3.31.4 → mapify_cli-3.33.0}/src/mapify_cli/templates/codex/hooks/scrub-internal-ids.py +3 -3
  23. {mapify_cli-3.31.4/src/mapify_cli/templates → mapify_cli-3.33.0/src/mapify_cli/templates/codex}/hooks/workflow-context-injector.py +4 -3
  24. {mapify_cli-3.31.4 → mapify_cli-3.33.0}/src/mapify_cli/templates/codex/hooks/workflow-gate.py +86 -5
  25. {mapify_cli-3.31.4 → mapify_cli-3.33.0}/src/mapify_cli/templates/codex/skills/map-efficient/SKILL.md +54 -3
  26. {mapify_cli-3.31.4 → mapify_cli-3.33.0}/src/mapify_cli/templates/codex/skills/map-efficient/efficient-reference.md +71 -23
  27. {mapify_cli-3.31.4 → mapify_cli-3.33.0}/src/mapify_cli/templates/codex/skills/map-explain/SKILL.md +3 -1
  28. {mapify_cli-3.31.4 → mapify_cli-3.33.0}/src/mapify_cli/templates/codex/skills/map-learn/SKILL.md +5 -0
  29. {mapify_cli-3.31.4 → mapify_cli-3.33.0}/src/mapify_cli/templates/codex/skills/map-memory-now/SKILL.md +8 -8
  30. {mapify_cli-3.31.4 → mapify_cli-3.33.0}/src/mapify_cli/templates/codex/skills/map-plan/SKILL.md +12 -0
  31. {mapify_cli-3.31.4 → mapify_cli-3.33.0}/src/mapify_cli/templates/codex/skills/map-release/SKILL.md +23 -30
  32. {mapify_cli-3.31.4 → mapify_cli-3.33.0}/src/mapify_cli/templates/codex/skills/map-release/release-reference.md +145 -44
  33. {mapify_cli-3.31.4 → mapify_cli-3.33.0}/src/mapify_cli/templates/codex/skills/map-resume/SKILL.md +8 -0
  34. {mapify_cli-3.31.4 → mapify_cli-3.33.0}/src/mapify_cli/templates/codex/skills/map-resume/resume-reference.md +83 -0
  35. mapify_cli-3.33.0/src/mapify_cli/templates/codex/skills/map-review/SKILL.md +703 -0
  36. mapify_cli-3.33.0/src/mapify_cli/templates/codex/skills/map-review/adversarial-reference.md +183 -0
  37. mapify_cli-3.31.4/src/mapify_cli/templates_src/skills/map-review/review-reference.md.jinja → mapify_cli-3.33.0/src/mapify_cli/templates/codex/skills/map-review/review-reference.md +54 -38
  38. {mapify_cli-3.31.4 → mapify_cli-3.33.0}/src/mapify_cli/templates/codex/skills/map-skill-eval/SKILL.md +1 -1
  39. {mapify_cli-3.31.4 → mapify_cli-3.33.0}/src/mapify_cli/templates/codex/skills/map-wayfind/SKILL.md +20 -8
  40. mapify_cli-3.33.0/src/mapify_cli/templates/codex/skills/map-wayfind/wayfind-reference.md +262 -0
  41. {mapify_cli-3.31.4 → mapify_cli-3.33.0}/src/mapify_cli/templates/hooks/context-meter.py +3 -3
  42. {mapify_cli-3.31.4 → mapify_cli-3.33.0}/src/mapify_cli/templates/hooks/detect-clarification-triggers.py +3 -3
  43. {mapify_cli-3.31.4 → mapify_cli-3.33.0}/src/mapify_cli/templates/hooks/end-of-turn.sh +11 -3
  44. {mapify_cli-3.31.4 → mapify_cli-3.33.0}/src/mapify_cli/templates/hooks/map-memory-capture.py +3 -3
  45. {mapify_cli-3.31.4 → mapify_cli-3.33.0}/src/mapify_cli/templates/hooks/map-memory-endmark.py +3 -3
  46. {mapify_cli-3.31.4 → mapify_cli-3.33.0}/src/mapify_cli/templates/hooks/map-memory-finalize.py +3 -3
  47. {mapify_cli-3.31.4 → mapify_cli-3.33.0}/src/mapify_cli/templates/hooks/map-memory-recall.py +3 -3
  48. {mapify_cli-3.31.4 → mapify_cli-3.33.0}/src/mapify_cli/templates/hooks/map-statusline.py +3 -3
  49. {mapify_cli-3.31.4 → mapify_cli-3.33.0}/src/mapify_cli/templates/hooks/map-token-meter.py +3 -3
  50. {mapify_cli-3.31.4/src/mapify_cli/templates/codex → mapify_cli-3.33.0/src/mapify_cli/templates}/hooks/post-compact-context.py +3 -4
  51. {mapify_cli-3.31.4 → mapify_cli-3.33.0}/src/mapify_cli/templates/hooks/pre-compact-save-transcript.py +3 -3
  52. {mapify_cli-3.31.4 → mapify_cli-3.33.0}/src/mapify_cli/templates/hooks/ralph-context-pruner.py +3 -3
  53. {mapify_cli-3.31.4 → mapify_cli-3.33.0}/src/mapify_cli/templates/hooks/ralph-iteration-logger.py +3 -3
  54. {mapify_cli-3.31.4/src/mapify_cli/templates/codex → mapify_cli-3.33.0/src/mapify_cli/templates}/hooks/safety-guardrails.py +3 -4
  55. {mapify_cli-3.31.4 → mapify_cli-3.33.0}/src/mapify_cli/templates/hooks/scrub-internal-ids.py +3 -3
  56. {mapify_cli-3.31.4/src/mapify_cli/templates/codex → mapify_cli-3.33.0/src/mapify_cli/templates}/hooks/workflow-context-injector.py +3 -4
  57. {mapify_cli-3.31.4 → mapify_cli-3.33.0}/src/mapify_cli/templates/hooks/workflow-gate.py +90 -6
  58. mapify_cli-3.33.0/src/mapify_cli/templates/map/scripts/map_interruption.py +981 -0
  59. {mapify_cli-3.31.4 → mapify_cli-3.33.0}/src/mapify_cli/templates/map/scripts/map_orchestrator.py +224 -9
  60. {mapify_cli-3.31.4 → mapify_cli-3.33.0}/src/mapify_cli/templates/map/scripts/map_step_runner.py +979 -289
  61. {mapify_cli-3.31.4 → mapify_cli-3.33.0}/src/mapify_cli/templates/map/scripts/validate_spec_citations.py +3 -3
  62. {mapify_cli-3.31.4 → mapify_cli-3.33.0}/src/mapify_cli/templates/map/scripts/wayfind_runner.py +575 -4
  63. {mapify_cli-3.31.4 → mapify_cli-3.33.0}/src/mapify_cli/templates/skills/map-efficient/SKILL.md +5 -5
  64. {mapify_cli-3.31.4 → mapify_cli-3.33.0}/src/mapify_cli/templates/skills/map-efficient/efficient-reference.md +123 -18
  65. {mapify_cli-3.31.4 → mapify_cli-3.33.0}/src/mapify_cli/templates/skills/map-explain/SKILL.md +1 -1
  66. {mapify_cli-3.31.4 → mapify_cli-3.33.0}/src/mapify_cli/templates/skills/map-memory-now/SKILL.md +8 -8
  67. {mapify_cli-3.31.4 → mapify_cli-3.33.0}/src/mapify_cli/templates/skills/map-plan/SKILL.md +2 -0
  68. {mapify_cli-3.31.4 → mapify_cli-3.33.0}/src/mapify_cli/templates/skills/map-release/SKILL.md +22 -29
  69. {mapify_cli-3.31.4 → mapify_cli-3.33.0}/src/mapify_cli/templates/skills/map-release/release-reference.md +138 -52
  70. {mapify_cli-3.31.4 → mapify_cli-3.33.0}/src/mapify_cli/templates/skills/map-resume/SKILL.md +8 -0
  71. {mapify_cli-3.31.4 → mapify_cli-3.33.0}/src/mapify_cli/templates/skills/map-resume/resume-reference.md +83 -0
  72. {mapify_cli-3.31.4 → mapify_cli-3.33.0}/src/mapify_cli/templates/skills/map-review/SKILL.md +67 -67
  73. {mapify_cli-3.31.4 → mapify_cli-3.33.0}/src/mapify_cli/templates/skills/map-review/adversarial-reference.md +39 -41
  74. {mapify_cli-3.31.4 → mapify_cli-3.33.0}/src/mapify_cli/templates/skills/map-review/review-reference.md +48 -32
  75. {mapify_cli-3.31.4 → mapify_cli-3.33.0}/src/mapify_cli/templates/skills/map-wayfind/SKILL.md +19 -7
  76. mapify_cli-3.33.0/src/mapify_cli/templates/skills/map-wayfind/wayfind-reference.md +262 -0
  77. mapify_cli-3.33.0/src/mapify_cli/templates_src/_partials/monitor-review-context.md.jinja +19 -0
  78. {mapify_cli-3.31.4 → mapify_cli-3.33.0}/src/mapify_cli/templates_src/_partials/python-version-guard.py.jinja +3 -3
  79. mapify_cli-3.33.0/src/mapify_cli/templates_src/_partials/serial-blocker-repair.md.jinja +49 -0
  80. mapify_cli-3.33.0/src/mapify_cli/templates_src/_partials/stale-attribution-recovery.md.jinja +30 -0
  81. {mapify_cli-3.31.4 → mapify_cli-3.33.0}/src/mapify_cli/templates_src/agents/monitor.md.jinja +2 -0
  82. {mapify_cli-3.31.4 → mapify_cli-3.33.0}/src/mapify_cli/templates_src/codex/agents/monitor.toml.jinja +15 -2
  83. {mapify_cli-3.31.4 → mapify_cli-3.33.0}/src/mapify_cli/templates_src/codex/hooks/workflow-gate.py.jinja +83 -2
  84. mapify_cli-3.33.0/src/mapify_cli/templates_src/codex/skills/map-auto/auto-reference.md.jinja +1 -0
  85. mapify_cli-3.33.0/src/mapify_cli/templates_src/codex/skills/map-check/SKILL.md.jinja +1 -0
  86. mapify_cli-3.33.0/src/mapify_cli/templates_src/codex/skills/map-check/check-reference.md.jinja +1 -0
  87. mapify_cli-3.33.0/src/mapify_cli/templates_src/codex/skills/map-debug/SKILL.md.jinja +1 -0
  88. mapify_cli-3.33.0/src/mapify_cli/templates_src/codex/skills/map-efficient/SKILL.md.jinja +1 -0
  89. mapify_cli-3.33.0/src/mapify_cli/templates_src/codex/skills/map-efficient/efficient-reference.md.jinja +1 -0
  90. mapify_cli-3.33.0/src/mapify_cli/templates_src/codex/skills/map-explain/SKILL.md.jinja +1 -0
  91. mapify_cli-3.33.0/src/mapify_cli/templates_src/codex/skills/map-fast/SKILL.md.jinja +1 -0
  92. mapify_cli-3.33.0/src/mapify_cli/templates_src/codex/skills/map-learn/SKILL.md.jinja +1 -0
  93. mapify_cli-3.33.0/src/mapify_cli/templates_src/codex/skills/map-learn/templates/example-rules.md.jinja +1 -0
  94. mapify_cli-3.33.0/src/mapify_cli/templates_src/codex/skills/map-learn/templates/rules-unconditional.md.jinja +1 -0
  95. mapify_cli-3.33.0/src/mapify_cli/templates_src/codex/skills/map-learn/templates/rules-with-paths.md.jinja +1 -0
  96. mapify_cli-3.33.0/src/mapify_cli/templates_src/codex/skills/map-memory-now/SKILL.md.jinja +1 -0
  97. mapify_cli-3.33.0/src/mapify_cli/templates_src/codex/skills/map-plan/SKILL.md.jinja +1 -0
  98. mapify_cli-3.33.0/src/mapify_cli/templates_src/codex/skills/map-plan/plan-reference.md.jinja +1 -0
  99. mapify_cli-3.33.0/src/mapify_cli/templates_src/codex/skills/map-prd-review/SKILL.md.jinja +1 -0
  100. mapify_cli-3.33.0/src/mapify_cli/templates_src/codex/skills/map-release/SKILL.md.jinja +1 -0
  101. mapify_cli-3.33.0/src/mapify_cli/templates_src/codex/skills/map-release/release-reference.md.jinja +1 -0
  102. mapify_cli-3.33.0/src/mapify_cli/templates_src/codex/skills/map-resume/SKILL.md.jinja +1 -0
  103. mapify_cli-3.33.0/src/mapify_cli/templates_src/codex/skills/map-resume/resume-reference.md.jinja +1 -0
  104. mapify_cli-3.33.0/src/mapify_cli/templates_src/codex/skills/map-review/SKILL.md.jinja +1 -0
  105. mapify_cli-3.33.0/src/mapify_cli/templates_src/codex/skills/map-review/adversarial-reference.md.jinja +1 -0
  106. mapify_cli-3.33.0/src/mapify_cli/templates_src/codex/skills/map-review/review-reference.md.jinja +1 -0
  107. mapify_cli-3.33.0/src/mapify_cli/templates_src/codex/skills/map-skill-eval/SKILL.md.jinja +1 -0
  108. mapify_cli-3.33.0/src/mapify_cli/templates_src/codex/skills/map-so-search/SKILL.md.jinja +1 -0
  109. mapify_cli-3.33.0/src/mapify_cli/templates_src/codex/skills/map-so-search/scripts/sofa_search.py.jinja +1 -0
  110. mapify_cli-3.33.0/src/mapify_cli/templates_src/codex/skills/map-state/SKILL.md.jinja +1 -0
  111. mapify_cli-3.33.0/src/mapify_cli/templates_src/codex/skills/map-state/scripts/check-complete.sh.jinja +1 -0
  112. mapify_cli-3.33.0/src/mapify_cli/templates_src/codex/skills/map-state/scripts/get-plan-path.sh.jinja +1 -0
  113. mapify_cli-3.33.0/src/mapify_cli/templates_src/codex/skills/map-state/scripts/init-session.sh.jinja +1 -0
  114. mapify_cli-3.33.0/src/mapify_cli/templates_src/codex/skills/map-state/scripts/show-focus.sh.jinja +1 -0
  115. mapify_cli-3.33.0/src/mapify_cli/templates_src/codex/skills/map-state/templates/findings.md.jinja +1 -0
  116. mapify_cli-3.33.0/src/mapify_cli/templates_src/codex/skills/map-state/templates/iteration_history.md.jinja +1 -0
  117. mapify_cli-3.33.0/src/mapify_cli/templates_src/codex/skills/map-state/templates/progress.md.jinja +1 -0
  118. mapify_cli-3.33.0/src/mapify_cli/templates_src/codex/skills/map-state/templates/task_plan.md.jinja +1 -0
  119. mapify_cli-3.33.0/src/mapify_cli/templates_src/codex/skills/map-task/SKILL.md.jinja +1 -0
  120. mapify_cli-3.33.0/src/mapify_cli/templates_src/codex/skills/map-tdd/SKILL.md.jinja +1 -0
  121. mapify_cli-3.33.0/src/mapify_cli/templates_src/codex/skills/map-tokenreport/SKILL.md.jinja +1 -0
  122. mapify_cli-3.33.0/src/mapify_cli/templates_src/codex/skills/map-understand/SKILL.md.jinja +1 -0
  123. mapify_cli-3.33.0/src/mapify_cli/templates_src/codex/skills/map-upgrade/SKILL.md.jinja +1 -0
  124. mapify_cli-3.33.0/src/mapify_cli/templates_src/codex/skills/map-wayfind/SKILL.md.jinja +1 -0
  125. mapify_cli-3.33.0/src/mapify_cli/templates_src/codex/skills/map-wayfind/wayfind-reference.md.jinja +1 -0
  126. {mapify_cli-3.31.4 → mapify_cli-3.33.0}/src/mapify_cli/templates_src/hooks/end-of-turn.sh.jinja +11 -3
  127. {mapify_cli-3.31.4 → mapify_cli-3.33.0}/src/mapify_cli/templates_src/hooks/workflow-gate.py.jinja +87 -3
  128. mapify_cli-3.33.0/src/mapify_cli/templates_src/map/scripts/map_interruption.py.jinja +981 -0
  129. {mapify_cli-3.31.4 → mapify_cli-3.33.0}/src/mapify_cli/templates_src/map/scripts/map_orchestrator.py.jinja +221 -6
  130. {mapify_cli-3.31.4 → mapify_cli-3.33.0}/src/mapify_cli/templates_src/map/scripts/map_step_runner.py.jinja +976 -286
  131. {mapify_cli-3.31.4 → mapify_cli-3.33.0}/src/mapify_cli/templates_src/map/scripts/wayfind_runner.py.jinja +575 -4
  132. {mapify_cli-3.31.4/src/mapify_cli/templates_src/codex → mapify_cli-3.33.0/src/mapify_cli/templates_src}/skills/map-auto/auto-reference.md.jinja +9 -8
  133. {mapify_cli-3.31.4 → mapify_cli-3.33.0}/src/mapify_cli/templates_src/skills/map-check/SKILL.md.jinja +18 -12
  134. {mapify_cli-3.31.4/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
  135. {mapify_cli-3.31.4/src/mapify_cli/templates_src/codex → mapify_cli-3.33.0/src/mapify_cli/templates_src}/skills/map-debug/SKILL.md.jinja +76 -36
  136. {mapify_cli-3.31.4 → mapify_cli-3.33.0}/src/mapify_cli/templates_src/skills/map-efficient/SKILL.md.jinja +364 -110
  137. {mapify_cli-3.31.4 → mapify_cli-3.33.0}/src/mapify_cli/templates_src/skills/map-efficient/efficient-reference.md.jinja +373 -113
  138. {mapify_cli-3.31.4 → mapify_cli-3.33.0}/src/mapify_cli/templates_src/skills/map-explain/SKILL.md.jinja +125 -35
  139. {mapify_cli-3.31.4/src/mapify_cli/templates_src/codex → mapify_cli-3.33.0/src/mapify_cli/templates_src}/skills/map-fast/SKILL.md.jinja +35 -16
  140. {mapify_cli-3.31.4/src/mapify_cli/templates_src/codex → mapify_cli-3.33.0/src/mapify_cli/templates_src}/skills/map-learn/SKILL.md.jinja +94 -57
  141. {mapify_cli-3.31.4/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
  142. mapify_cli-3.33.0/src/mapify_cli/templates_src/skills/map-learn/templates/rules-unconditional.md.jinja +6 -0
  143. {mapify_cli-3.31.4/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
  144. {mapify_cli-3.31.4 → mapify_cli-3.33.0}/src/mapify_cli/templates_src/skills/map-memory-now/SKILL.md.jinja +35 -25
  145. mapify_cli-3.33.0/src/mapify_cli/templates_src/skills/map-plan/SKILL.md.jinja +1175 -0
  146. {mapify_cli-3.31.4/src/mapify_cli/templates_src/codex → mapify_cli-3.33.0/src/mapify_cli/templates_src}/skills/map-plan/plan-reference.md.jinja +5 -4
  147. {mapify_cli-3.31.4 → mapify_cli-3.33.0}/src/mapify_cli/templates_src/skills/map-prd-review/SKILL.md.jinja +88 -46
  148. {mapify_cli-3.31.4 → mapify_cli-3.33.0}/src/mapify_cli/templates_src/skills/map-release/SKILL.md.jinja +33 -33
  149. {mapify_cli-3.31.4 → mapify_cli-3.33.0}/src/mapify_cli/templates_src/skills/map-release/release-reference.md.jinja +154 -56
  150. {mapify_cli-3.31.4 → mapify_cli-3.33.0}/src/mapify_cli/templates_src/skills/map-resume/SKILL.md.jinja +28 -14
  151. {mapify_cli-3.31.4 → mapify_cli-3.33.0}/src/mapify_cli/templates_src/skills/map-resume/resume-reference.md.jinja +36 -26
  152. {mapify_cli-3.31.4 → mapify_cli-3.33.0}/src/mapify_cli/templates_src/skills/map-review/SKILL.md.jinja +116 -69
  153. {mapify_cli-3.31.4 → mapify_cli-3.33.0}/src/mapify_cli/templates_src/skills/map-review/adversarial-reference.md.jinja +62 -41
  154. mapify_cli-3.33.0/src/mapify_cli/templates_src/skills/map-review/review-reference.md.jinja +386 -0
  155. mapify_cli-3.33.0/src/mapify_cli/templates_src/skills/map-skill-eval/SKILL.md.jinja +201 -0
  156. {mapify_cli-3.31.4 → mapify_cli-3.33.0}/src/mapify_cli/templates_src/skills/map-so-search/SKILL.md.jinja +11 -9
  157. {mapify_cli-3.31.4 → mapify_cli-3.33.0}/src/mapify_cli/templates_src/skills/map-so-search/scripts/sofa_search.py.jinja +3 -3
  158. {mapify_cli-3.31.4 → mapify_cli-3.33.0}/src/mapify_cli/templates_src/skills/map-state/SKILL.md.jinja +20 -14
  159. {mapify_cli-3.31.4/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
  160. {mapify_cli-3.31.4 → mapify_cli-3.33.0}/src/mapify_cli/templates_src/skills/map-state/scripts/get-plan-path.sh.jinja +6 -4
  161. {mapify_cli-3.31.4/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
  162. {mapify_cli-3.31.4/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
  163. {mapify_cli-3.31.4/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
  164. {mapify_cli-3.31.4/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
  165. {mapify_cli-3.31.4/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
  166. {mapify_cli-3.31.4/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
  167. {mapify_cli-3.31.4 → mapify_cli-3.33.0}/src/mapify_cli/templates_src/skills/map-task/SKILL.md.jinja +42 -35
  168. {mapify_cli-3.31.4 → mapify_cli-3.33.0}/src/mapify_cli/templates_src/skills/map-tdd/SKILL.md.jinja +62 -38
  169. {mapify_cli-3.31.4 → mapify_cli-3.33.0}/src/mapify_cli/templates_src/skills/map-tokenreport/SKILL.md.jinja +25 -19
  170. mapify_cli-3.33.0/src/mapify_cli/templates_src/skills/map-understand/SKILL.md.jinja +174 -0
  171. {mapify_cli-3.31.4 → mapify_cli-3.33.0}/src/mapify_cli/templates_src/skills/map-upgrade/SKILL.md.jinja +3 -1
  172. mapify_cli-3.33.0/src/mapify_cli/templates_src/skills/map-wayfind/SKILL.md.jinja +147 -0
  173. mapify_cli-3.33.0/src/mapify_cli/templates_src/skills/map-wayfind/wayfind-reference.md.jinja +268 -0
  174. {mapify_cli-3.31.4 → mapify_cli-3.33.0}/src/mapify_cli/tools/validate_dependencies.py +5 -5
  175. {mapify_cli-3.31.4 → mapify_cli-3.33.0}/tests/hooks/test_end_of_turn.py +99 -0
  176. mapify_cli-3.33.0/tests/test_agent_cli_correctness.py +168 -0
  177. {mapify_cli-3.31.4 → mapify_cli-3.33.0}/tests/test_agent_dispatch_audit.py +20 -0
  178. mapify_cli-3.33.0/tests/test_codex_map_review_live.py +461 -0
  179. mapify_cli-3.33.0/tests/test_map_interruption.py +559 -0
  180. {mapify_cli-3.31.4 → mapify_cli-3.33.0}/tests/test_map_orchestrator.py +483 -3
  181. {mapify_cli-3.31.4 → mapify_cli-3.33.0}/tests/test_map_step_runner.py +279 -8
  182. {mapify_cli-3.31.4 → mapify_cli-3.33.0}/tests/test_mapify_cli.py +7 -2
  183. mapify_cli-3.33.0/tests/test_mutation_path_normalization.py +281 -0
  184. {mapify_cli-3.31.4 → mapify_cli-3.33.0}/tests/test_python_version_requirement.py +46 -25
  185. mapify_cli-3.33.0/tests/test_release_ci_gates.py +333 -0
  186. mapify_cli-3.33.0/tests/test_repair_attribution.py +876 -0
  187. mapify_cli-3.33.0/tests/test_repair_workflow_gate.py +171 -0
  188. {mapify_cli-3.31.4 → mapify_cli-3.33.0}/tests/test_review_verdict_ledger.py +256 -0
  189. {mapify_cli-3.31.4 → mapify_cli-3.33.0}/tests/test_shell_json_pipes.py +41 -0
  190. {mapify_cli-3.31.4 → mapify_cli-3.33.0}/tests/test_skills.py +930 -15
  191. {mapify_cli-3.31.4 → mapify_cli-3.33.0}/tests/test_skills_eval_apply.py +276 -0
  192. {mapify_cli-3.31.4 → mapify_cli-3.33.0}/tests/test_skills_eval_runner.py +30 -8
  193. {mapify_cli-3.31.4 → mapify_cli-3.33.0}/tests/test_sofa_client.py +64 -29
  194. {mapify_cli-3.31.4 → mapify_cli-3.33.0}/tests/test_update_state.py +42 -17
  195. {mapify_cli-3.31.4 → mapify_cli-3.33.0}/tests/test_validate_dependencies.py +25 -0
  196. mapify_cli-3.33.0/tests/test_wayfind_install.py +357 -0
  197. mapify_cli-3.33.0/tests/test_wayfind_research.py +386 -0
  198. {mapify_cli-3.31.4 → mapify_cli-3.33.0}/tests/test_wayfind_runner.py +25 -3
  199. mapify_cli-3.31.4/src/mapify_cli/skills_eval/apply_patcher.py +0 -238
  200. mapify_cli-3.31.4/src/mapify_cli/templates/codex/skills/map-review/SKILL.md +0 -417
  201. mapify_cli-3.31.4/src/mapify_cli/templates/codex/skills/map-review/adversarial-reference.md +0 -224
  202. mapify_cli-3.31.4/src/mapify_cli/templates/codex/skills/map-review/review-reference.md +0 -477
  203. mapify_cli-3.31.4/src/mapify_cli/templates/codex/skills/map-wayfind/wayfind-reference.md +0 -134
  204. mapify_cli-3.31.4/src/mapify_cli/templates/skills/map-wayfind/wayfind-reference.md +0 -134
  205. mapify_cli-3.31.4/src/mapify_cli/templates_src/codex/skills/map-check/SKILL.md.jinja +0 -309
  206. mapify_cli-3.31.4/src/mapify_cli/templates_src/codex/skills/map-efficient/SKILL.md.jinja +0 -357
  207. mapify_cli-3.31.4/src/mapify_cli/templates_src/codex/skills/map-efficient/efficient-reference.md.jinja +0 -351
  208. mapify_cli-3.31.4/src/mapify_cli/templates_src/codex/skills/map-explain/SKILL.md.jinja +0 -280
  209. mapify_cli-3.31.4/src/mapify_cli/templates_src/codex/skills/map-learn/templates/rules-unconditional.md.jinja +0 -5
  210. mapify_cli-3.31.4/src/mapify_cli/templates_src/codex/skills/map-memory-now/SKILL.md.jinja +0 -136
  211. mapify_cli-3.31.4/src/mapify_cli/templates_src/codex/skills/map-plan/SKILL.md.jinja +0 -827
  212. mapify_cli-3.31.4/src/mapify_cli/templates_src/codex/skills/map-prd-review/SKILL.md.jinja +0 -204
  213. mapify_cli-3.31.4/src/mapify_cli/templates_src/codex/skills/map-release/SKILL.md.jinja +0 -177
  214. mapify_cli-3.31.4/src/mapify_cli/templates_src/codex/skills/map-release/release-reference.md.jinja +0 -456
  215. mapify_cli-3.31.4/src/mapify_cli/templates_src/codex/skills/map-resume/SKILL.md.jinja +0 -294
  216. mapify_cli-3.31.4/src/mapify_cli/templates_src/codex/skills/map-resume/resume-reference.md.jinja +0 -218
  217. mapify_cli-3.31.4/src/mapify_cli/templates_src/codex/skills/map-review/SKILL.md.jinja +0 -412
  218. mapify_cli-3.31.4/src/mapify_cli/templates_src/codex/skills/map-review/adversarial-reference.md.jinja +0 -224
  219. mapify_cli-3.31.4/src/mapify_cli/templates_src/codex/skills/map-review/review-reference.md.jinja +0 -477
  220. mapify_cli-3.31.4/src/mapify_cli/templates_src/codex/skills/map-skill-eval/SKILL.md.jinja +0 -178
  221. mapify_cli-3.31.4/src/mapify_cli/templates_src/codex/skills/map-so-search/SKILL.md.jinja +0 -122
  222. mapify_cli-3.31.4/src/mapify_cli/templates_src/codex/skills/map-so-search/scripts/sofa_search.py.jinja +0 -573
  223. mapify_cli-3.31.4/src/mapify_cli/templates_src/codex/skills/map-state/SKILL.md.jinja +0 -217
  224. mapify_cli-3.31.4/src/mapify_cli/templates_src/codex/skills/map-state/scripts/get-plan-path.sh.jinja +0 -40
  225. mapify_cli-3.31.4/src/mapify_cli/templates_src/codex/skills/map-task/SKILL.md.jinja +0 -295
  226. mapify_cli-3.31.4/src/mapify_cli/templates_src/codex/skills/map-tdd/SKILL.md.jinja +0 -536
  227. mapify_cli-3.31.4/src/mapify_cli/templates_src/codex/skills/map-tokenreport/SKILL.md.jinja +0 -245
  228. mapify_cli-3.31.4/src/mapify_cli/templates_src/codex/skills/map-understand/SKILL.md.jinja +0 -113
  229. mapify_cli-3.31.4/src/mapify_cli/templates_src/codex/skills/map-upgrade/SKILL.md.jinja +0 -5
  230. mapify_cli-3.31.4/src/mapify_cli/templates_src/codex/skills/map-wayfind/SKILL.md.jinja +0 -129
  231. mapify_cli-3.31.4/src/mapify_cli/templates_src/codex/skills/map-wayfind/wayfind-reference.md.jinja +0 -134
  232. mapify_cli-3.31.4/src/mapify_cli/templates_src/skills/map-auto/auto-reference.md.jinja +0 -78
  233. mapify_cli-3.31.4/src/mapify_cli/templates_src/skills/map-check/check-reference.md.jinja +0 -70
  234. mapify_cli-3.31.4/src/mapify_cli/templates_src/skills/map-debug/SKILL.md.jinja +0 -405
  235. mapify_cli-3.31.4/src/mapify_cli/templates_src/skills/map-fast/SKILL.md.jinja +0 -190
  236. mapify_cli-3.31.4/src/mapify_cli/templates_src/skills/map-learn/SKILL.md.jinja +0 -404
  237. mapify_cli-3.31.4/src/mapify_cli/templates_src/skills/map-learn/templates/example-rules.md.jinja +0 -19
  238. mapify_cli-3.31.4/src/mapify_cli/templates_src/skills/map-learn/templates/rules-unconditional.md.jinja +0 -5
  239. mapify_cli-3.31.4/src/mapify_cli/templates_src/skills/map-learn/templates/rules-with-paths.md.jinja +0 -10
  240. mapify_cli-3.31.4/src/mapify_cli/templates_src/skills/map-plan/SKILL.md.jinja +0 -509
  241. mapify_cli-3.31.4/src/mapify_cli/templates_src/skills/map-plan/plan-reference.md.jinja +0 -226
  242. mapify_cli-3.31.4/src/mapify_cli/templates_src/skills/map-skill-eval/SKILL.md.jinja +0 -181
  243. mapify_cli-3.31.4/src/mapify_cli/templates_src/skills/map-state/scripts/check-complete.sh.jinja +0 -68
  244. mapify_cli-3.31.4/src/mapify_cli/templates_src/skills/map-state/scripts/init-session.sh.jinja +0 -78
  245. mapify_cli-3.31.4/src/mapify_cli/templates_src/skills/map-state/scripts/show-focus.sh.jinja +0 -62
  246. mapify_cli-3.31.4/src/mapify_cli/templates_src/skills/map-state/templates/findings.md.jinja +0 -62
  247. mapify_cli-3.31.4/src/mapify_cli/templates_src/skills/map-state/templates/iteration_history.md.jinja +0 -93
  248. mapify_cli-3.31.4/src/mapify_cli/templates_src/skills/map-state/templates/progress.md.jinja +0 -75
  249. mapify_cli-3.31.4/src/mapify_cli/templates_src/skills/map-state/templates/task_plan.md.jinja +0 -70
  250. mapify_cli-3.31.4/src/mapify_cli/templates_src/skills/map-understand/SKILL.md.jinja +0 -129
  251. mapify_cli-3.31.4/src/mapify_cli/templates_src/skills/map-wayfind/SKILL.md.jinja +0 -132
  252. mapify_cli-3.31.4/src/mapify_cli/templates_src/skills/map-wayfind/wayfind-reference.md.jinja +0 -134
  253. mapify_cli-3.31.4/tests/test_agent_cli_correctness.py +0 -91
  254. {mapify_cli-3.31.4 → mapify_cli-3.33.0}/.claude/hooks/README.md +0 -0
  255. {mapify_cli-3.31.4 → mapify_cli-3.33.0}/.claude/skills/README.md +0 -0
  256. {mapify_cli-3.31.4 → mapify_cli-3.33.0}/.gitignore +0 -0
  257. {mapify_cli-3.31.4 → mapify_cli-3.33.0}/LICENSE +0 -0
  258. {mapify_cli-3.31.4 → mapify_cli-3.33.0}/src/mapify_cli/__main__.py +0 -0
  259. {mapify_cli-3.31.4 → mapify_cli-3.33.0}/src/mapify_cli/_locking.py +0 -0
  260. {mapify_cli-3.31.4 → mapify_cli-3.33.0}/src/mapify_cli/_python_guard.py +0 -0
  261. {mapify_cli-3.31.4 → mapify_cli-3.33.0}/src/mapify_cli/auto_update.py +0 -0
  262. {mapify_cli-3.31.4 → mapify_cli-3.33.0}/src/mapify_cli/boundary_quality_report.py +0 -0
  263. {mapify_cli-3.31.4 → mapify_cli-3.33.0}/src/mapify_cli/cli_ui.py +0 -0
  264. {mapify_cli-3.31.4 → mapify_cli-3.33.0}/src/mapify_cli/code_map.py +0 -0
  265. {mapify_cli-3.31.4 → mapify_cli-3.33.0}/src/mapify_cli/codex_exec.py +0 -0
  266. {mapify_cli-3.31.4 → mapify_cli-3.33.0}/src/mapify_cli/config/__init__.py +0 -0
  267. {mapify_cli-3.31.4 → mapify_cli-3.33.0}/src/mapify_cli/config/mcp.py +0 -0
  268. {mapify_cli-3.31.4 → mapify_cli-3.33.0}/src/mapify_cli/config/project_config.py +0 -0
  269. {mapify_cli-3.31.4 → mapify_cli-3.33.0}/src/mapify_cli/config/settings.py +0 -0
  270. {mapify_cli-3.31.4 → mapify_cli-3.33.0}/src/mapify_cli/delivery/__init__.py +0 -0
  271. {mapify_cli-3.31.4 → mapify_cli-3.33.0}/src/mapify_cli/delivery/agent_generator.py +0 -0
  272. {mapify_cli-3.31.4 → mapify_cli-3.33.0}/src/mapify_cli/delivery/codex_copier.py +0 -0
  273. {mapify_cli-3.31.4 → mapify_cli-3.33.0}/src/mapify_cli/delivery/domain_skill.py +0 -0
  274. {mapify_cli-3.31.4 → mapify_cli-3.33.0}/src/mapify_cli/delivery/file_copier.py +0 -0
  275. {mapify_cli-3.31.4 → mapify_cli-3.33.0}/src/mapify_cli/delivery/governance_report.py +0 -0
  276. {mapify_cli-3.31.4 → mapify_cli-3.33.0}/src/mapify_cli/delivery/managed_file_copier.py +0 -0
  277. {mapify_cli-3.31.4 → mapify_cli-3.33.0}/src/mapify_cli/delivery/providers.py +0 -0
  278. {mapify_cli-3.31.4 → mapify_cli-3.33.0}/src/mapify_cli/delivery/template_renderer.py +0 -0
  279. {mapify_cli-3.31.4 → mapify_cli-3.33.0}/src/mapify_cli/dependency_graph.py +0 -0
  280. {mapify_cli-3.31.4 → mapify_cli-3.33.0}/src/mapify_cli/grace_eval/__init__.py +0 -0
  281. {mapify_cli-3.31.4 → mapify_cli-3.33.0}/src/mapify_cli/grace_eval/schema.py +0 -0
  282. {mapify_cli-3.31.4 → mapify_cli-3.33.0}/src/mapify_cli/grace_eval/sweep.py +0 -0
  283. {mapify_cli-3.31.4 → mapify_cli-3.33.0}/src/mapify_cli/install_manifest.py +0 -0
  284. {mapify_cli-3.31.4 → mapify_cli-3.33.0}/src/mapify_cli/intent_detector.py +0 -0
  285. {mapify_cli-3.31.4 → mapify_cli-3.33.0}/src/mapify_cli/memory/__init__.py +0 -0
  286. {mapify_cli-3.31.4 → mapify_cli-3.33.0}/src/mapify_cli/memory/capture.py +0 -0
  287. {mapify_cli-3.31.4 → mapify_cli-3.33.0}/src/mapify_cli/memory/digest_schema.py +0 -0
  288. {mapify_cli-3.31.4 → mapify_cli-3.33.0}/src/mapify_cli/memory/finalize.py +0 -0
  289. {mapify_cli-3.31.4 → mapify_cli-3.33.0}/src/mapify_cli/memory/recall.py +0 -0
  290. {mapify_cli-3.31.4 → mapify_cli-3.33.0}/src/mapify_cli/minimality_eval.py +0 -0
  291. {mapify_cli-3.31.4 → mapify_cli-3.33.0}/src/mapify_cli/minimality_report.py +0 -0
  292. {mapify_cli-3.31.4 → mapify_cli-3.33.0}/src/mapify_cli/parallelism_observability.py +0 -0
  293. {mapify_cli-3.31.4 → mapify_cli-3.33.0}/src/mapify_cli/provider_registry.py +0 -0
  294. {mapify_cli-3.31.4 → mapify_cli-3.33.0}/src/mapify_cli/python_runtime.py +0 -0
  295. {mapify_cli-3.31.4 → mapify_cli-3.33.0}/src/mapify_cli/ralph_state.py +0 -0
  296. {mapify_cli-3.31.4 → mapify_cli-3.33.0}/src/mapify_cli/repo_insight.py +0 -0
  297. {mapify_cli-3.31.4 → mapify_cli-3.33.0}/src/mapify_cli/research_eval.py +0 -0
  298. {mapify_cli-3.31.4 → mapify_cli-3.33.0}/src/mapify_cli/research_eval_compare.py +0 -0
  299. {mapify_cli-3.31.4 → mapify_cli-3.33.0}/src/mapify_cli/schemas.py +0 -0
  300. {mapify_cli-3.31.4 → mapify_cli-3.33.0}/src/mapify_cli/scope_classifier.py +0 -0
  301. {mapify_cli-3.31.4 → mapify_cli-3.33.0}/src/mapify_cli/skill_ir.py +0 -0
  302. {mapify_cli-3.31.4 → mapify_cli-3.33.0}/src/mapify_cli/skills_eval/__init__.py +0 -0
  303. {mapify_cli-3.31.4 → mapify_cli-3.33.0}/src/mapify_cli/skills_eval/aggregator.py +0 -0
  304. {mapify_cli-3.31.4 → mapify_cli-3.33.0}/src/mapify_cli/skills_eval/assertions.py +0 -0
  305. {mapify_cli-3.31.4 → mapify_cli-3.33.0}/src/mapify_cli/skills_eval/description_optimizer.py +0 -0
  306. {mapify_cli-3.31.4 → mapify_cli-3.33.0}/src/mapify_cli/skills_eval/dispatcher.py +0 -0
  307. {mapify_cli-3.31.4 → mapify_cli-3.33.0}/src/mapify_cli/skills_eval/eval_schema.py +0 -0
  308. {mapify_cli-3.31.4 → mapify_cli-3.33.0}/src/mapify_cli/skills_eval/proposer.py +0 -0
  309. {mapify_cli-3.31.4 → mapify_cli-3.33.0}/src/mapify_cli/skills_eval/runner.py +0 -0
  310. {mapify_cli-3.31.4 → mapify_cli-3.33.0}/src/mapify_cli/skills_eval/trajectory/__init__.py +0 -0
  311. {mapify_cli-3.31.4 → mapify_cli-3.33.0}/src/mapify_cli/skills_eval/trajectory/bundle.py +0 -0
  312. {mapify_cli-3.31.4 → mapify_cli-3.33.0}/src/mapify_cli/skills_eval/trajectory/dispatcher.py +0 -0
  313. {mapify_cli-3.31.4 → mapify_cli-3.33.0}/src/mapify_cli/skills_eval/trajectory/eval_schema.py +0 -0
  314. {mapify_cli-3.31.4 → mapify_cli-3.33.0}/src/mapify_cli/skills_eval/trajectory/gates.py +0 -0
  315. {mapify_cli-3.31.4 → mapify_cli-3.33.0}/src/mapify_cli/skills_eval/trajectory/judge.py +0 -0
  316. {mapify_cli-3.31.4 → mapify_cli-3.33.0}/src/mapify_cli/skills_eval/trajectory/repeated.py +0 -0
  317. {mapify_cli-3.31.4 → mapify_cli-3.33.0}/src/mapify_cli/skills_eval/trajectory/report.py +0 -0
  318. {mapify_cli-3.31.4 → mapify_cli-3.33.0}/src/mapify_cli/skills_eval/trajectory/runner.py +0 -0
  319. {mapify_cli-3.31.4 → mapify_cli-3.33.0}/src/mapify_cli/skills_eval/trajectory/seeding.py +0 -0
  320. {mapify_cli-3.31.4 → mapify_cli-3.33.0}/src/mapify_cli/skills_eval/viewer.py +0 -0
  321. {mapify_cli-3.31.4 → mapify_cli-3.33.0}/src/mapify_cli/templates/.gitignore +0 -0
  322. {mapify_cli-3.31.4 → mapify_cli-3.33.0}/src/mapify_cli/templates/CLAUDE.md +0 -0
  323. {mapify_cli-3.31.4 → mapify_cli-3.33.0}/src/mapify_cli/templates/agents/actor.md +0 -0
  324. {mapify_cli-3.31.4 → mapify_cli-3.33.0}/src/mapify_cli/templates/agents/documentation-reviewer.md +0 -0
  325. {mapify_cli-3.31.4 → mapify_cli-3.33.0}/src/mapify_cli/templates/agents/evaluator.md +0 -0
  326. {mapify_cli-3.31.4 → mapify_cli-3.33.0}/src/mapify_cli/templates/agents/final-verifier.md +0 -0
  327. {mapify_cli-3.31.4 → mapify_cli-3.33.0}/src/mapify_cli/templates/agents/predictor.md +0 -0
  328. {mapify_cli-3.31.4 → mapify_cli-3.33.0}/src/mapify_cli/templates/agents/reflector.md +0 -0
  329. {mapify_cli-3.31.4 → mapify_cli-3.33.0}/src/mapify_cli/templates/agents/research-agent.md +0 -0
  330. {mapify_cli-3.31.4 → mapify_cli-3.33.0}/src/mapify_cli/templates/agents/task-decomposer.md +0 -0
  331. {mapify_cli-3.31.4 → mapify_cli-3.33.0}/src/mapify_cli/templates/codex/AGENTS.md +0 -0
  332. {mapify_cli-3.31.4 → mapify_cli-3.33.0}/src/mapify_cli/templates/codex/agents/actor.toml +0 -0
  333. {mapify_cli-3.31.4 → mapify_cli-3.33.0}/src/mapify_cli/templates/codex/agents/decomposer.toml +0 -0
  334. {mapify_cli-3.31.4 → mapify_cli-3.33.0}/src/mapify_cli/templates/codex/agents/documentation-reviewer.toml +0 -0
  335. {mapify_cli-3.31.4 → mapify_cli-3.33.0}/src/mapify_cli/templates/codex/agents/evaluator.toml +0 -0
  336. {mapify_cli-3.31.4 → mapify_cli-3.33.0}/src/mapify_cli/templates/codex/agents/final-verifier.toml +0 -0
  337. {mapify_cli-3.31.4 → mapify_cli-3.33.0}/src/mapify_cli/templates/codex/agents/predictor.toml +0 -0
  338. {mapify_cli-3.31.4 → mapify_cli-3.33.0}/src/mapify_cli/templates/codex/agents/reflector.toml +0 -0
  339. {mapify_cli-3.31.4 → mapify_cli-3.33.0}/src/mapify_cli/templates/codex/agents/researcher.toml +0 -0
  340. {mapify_cli-3.31.4 → mapify_cli-3.33.0}/src/mapify_cli/templates/codex/config.toml +0 -0
  341. {mapify_cli-3.31.4 → mapify_cli-3.33.0}/src/mapify_cli/templates/codex/hooks.json +0 -0
  342. {mapify_cli-3.31.4 → mapify_cli-3.33.0}/src/mapify_cli/templates/codex/references/map-json-output-contracts.md +0 -0
  343. {mapify_cli-3.31.4 → mapify_cli-3.33.0}/src/mapify_cli/templates/codex/references/map-output-examples.md +0 -0
  344. {mapify_cli-3.31.4 → mapify_cli-3.33.0}/src/mapify_cli/templates/codex/references/map-xml-prompt-envelopes.md +0 -0
  345. {mapify_cli-3.31.4 → mapify_cli-3.33.0}/src/mapify_cli/templates/codex/skills/map-architecture/SKILL.md +0 -0
  346. {mapify_cli-3.31.4 → mapify_cli-3.33.0}/src/mapify_cli/templates/codex/skills/map-auto/SKILL.md +0 -0
  347. {mapify_cli-3.31.4 → mapify_cli-3.33.0}/src/mapify_cli/templates/codex/skills/map-auto/auto-reference.md +0 -0
  348. {mapify_cli-3.31.4 → mapify_cli-3.33.0}/src/mapify_cli/templates/codex/skills/map-check/SKILL.md +0 -0
  349. {mapify_cli-3.31.4 → mapify_cli-3.33.0}/src/mapify_cli/templates/codex/skills/map-check/check-reference.md +0 -0
  350. {mapify_cli-3.31.4 → mapify_cli-3.33.0}/src/mapify_cli/templates/codex/skills/map-debug/SKILL.md +0 -0
  351. {mapify_cli-3.31.4 → mapify_cli-3.33.0}/src/mapify_cli/templates/codex/skills/map-fast/SKILL.md +0 -0
  352. {mapify_cli-3.31.4 → mapify_cli-3.33.0}/src/mapify_cli/templates/codex/skills/map-learn/templates/example-rules.md +0 -0
  353. {mapify_cli-3.31.4 → mapify_cli-3.33.0}/src/mapify_cli/templates/codex/skills/map-learn/templates/rules-unconditional.md +0 -0
  354. {mapify_cli-3.31.4 → mapify_cli-3.33.0}/src/mapify_cli/templates/codex/skills/map-learn/templates/rules-with-paths.md +0 -0
  355. {mapify_cli-3.31.4 → mapify_cli-3.33.0}/src/mapify_cli/templates/codex/skills/map-plan/plan-reference.md +0 -0
  356. {mapify_cli-3.31.4 → mapify_cli-3.33.0}/src/mapify_cli/templates/codex/skills/map-prd-review/SKILL.md +0 -0
  357. {mapify_cli-3.31.4 → mapify_cli-3.33.0}/src/mapify_cli/templates/codex/skills/map-so-search/SKILL.md +0 -0
  358. {mapify_cli-3.31.4 → mapify_cli-3.33.0}/src/mapify_cli/templates/codex/skills/map-so-search/scripts/sofa_search.py +0 -0
  359. {mapify_cli-3.31.4 → mapify_cli-3.33.0}/src/mapify_cli/templates/codex/skills/map-state/SKILL.md +0 -0
  360. {mapify_cli-3.31.4 → mapify_cli-3.33.0}/src/mapify_cli/templates/codex/skills/map-state/scripts/check-complete.sh +0 -0
  361. {mapify_cli-3.31.4 → mapify_cli-3.33.0}/src/mapify_cli/templates/codex/skills/map-state/scripts/get-plan-path.sh +0 -0
  362. {mapify_cli-3.31.4 → mapify_cli-3.33.0}/src/mapify_cli/templates/codex/skills/map-state/scripts/init-session.sh +0 -0
  363. {mapify_cli-3.31.4 → mapify_cli-3.33.0}/src/mapify_cli/templates/codex/skills/map-state/scripts/show-focus.sh +0 -0
  364. {mapify_cli-3.31.4 → mapify_cli-3.33.0}/src/mapify_cli/templates/codex/skills/map-state/templates/findings.md +0 -0
  365. {mapify_cli-3.31.4 → mapify_cli-3.33.0}/src/mapify_cli/templates/codex/skills/map-state/templates/iteration_history.md +0 -0
  366. {mapify_cli-3.31.4 → mapify_cli-3.33.0}/src/mapify_cli/templates/codex/skills/map-state/templates/progress.md +0 -0
  367. {mapify_cli-3.31.4 → mapify_cli-3.33.0}/src/mapify_cli/templates/codex/skills/map-state/templates/task_plan.md +0 -0
  368. {mapify_cli-3.31.4 → mapify_cli-3.33.0}/src/mapify_cli/templates/codex/skills/map-task/SKILL.md +0 -0
  369. {mapify_cli-3.31.4 → mapify_cli-3.33.0}/src/mapify_cli/templates/codex/skills/map-tdd/SKILL.md +0 -0
  370. {mapify_cli-3.31.4 → mapify_cli-3.33.0}/src/mapify_cli/templates/codex/skills/map-tokenreport/SKILL.md +0 -0
  371. {mapify_cli-3.31.4 → mapify_cli-3.33.0}/src/mapify_cli/templates/codex/skills/map-understand/SKILL.md +0 -0
  372. {mapify_cli-3.31.4 → mapify_cli-3.33.0}/src/mapify_cli/templates/codex/skills/map-upgrade/SKILL.md +0 -0
  373. {mapify_cli-3.31.4 → mapify_cli-3.33.0}/src/mapify_cli/templates/hooks/README.md +0 -0
  374. {mapify_cli-3.31.4 → mapify_cli-3.33.0}/src/mapify_cli/templates/map/scripts/classify_scope.py +0 -0
  375. {mapify_cli-3.31.4 → mapify_cli-3.33.0}/src/mapify_cli/templates/map/scripts/diagnostics.py +0 -0
  376. {mapify_cli-3.31.4 → mapify_cli-3.33.0}/src/mapify_cli/templates/map/scripts/map_utils.py +0 -0
  377. {mapify_cli-3.31.4 → mapify_cli-3.33.0}/src/mapify_cli/templates/map/scripts/scrub_internal_ids.py +0 -0
  378. {mapify_cli-3.31.4 → mapify_cli-3.33.0}/src/mapify_cli/templates/map/scripts/sofa_client.py +0 -0
  379. {mapify_cli-3.31.4 → mapify_cli-3.33.0}/src/mapify_cli/templates/map/static-analysis/analyze.sh +0 -0
  380. {mapify_cli-3.31.4 → mapify_cli-3.33.0}/src/mapify_cli/templates/map/static-analysis/handlers/common.sh +0 -0
  381. {mapify_cli-3.31.4 → mapify_cli-3.33.0}/src/mapify_cli/templates/map/static-analysis/handlers/go.sh +0 -0
  382. {mapify_cli-3.31.4 → mapify_cli-3.33.0}/src/mapify_cli/templates/map/static-analysis/handlers/python.sh +0 -0
  383. {mapify_cli-3.31.4 → mapify_cli-3.33.0}/src/mapify_cli/templates/map/static-analysis/handlers/rust.sh +0 -0
  384. {mapify_cli-3.31.4 → mapify_cli-3.33.0}/src/mapify_cli/templates/map/static-analysis/handlers/typescript.sh +0 -0
  385. {mapify_cli-3.31.4 → mapify_cli-3.33.0}/src/mapify_cli/templates/ralph-loop-config.json +0 -0
  386. {mapify_cli-3.31.4 → mapify_cli-3.33.0}/src/mapify_cli/templates/references/bash-guidelines.md +0 -0
  387. {mapify_cli-3.31.4 → mapify_cli-3.33.0}/src/mapify_cli/templates/references/decomposition-examples.md +0 -0
  388. {mapify_cli-3.31.4 → mapify_cli-3.33.0}/src/mapify_cli/templates/references/escalation-matrix.md +0 -0
  389. {mapify_cli-3.31.4 → mapify_cli-3.33.0}/src/mapify_cli/templates/references/hook-patterns.md +0 -0
  390. {mapify_cli-3.31.4 → mapify_cli-3.33.0}/src/mapify_cli/templates/references/host-paths.md +0 -0
  391. {mapify_cli-3.31.4 → mapify_cli-3.33.0}/src/mapify_cli/templates/references/map-json-output-contracts.md +0 -0
  392. {mapify_cli-3.31.4 → mapify_cli-3.33.0}/src/mapify_cli/templates/references/map-output-examples.md +0 -0
  393. {mapify_cli-3.31.4 → mapify_cli-3.33.0}/src/mapify_cli/templates/references/map-xml-prompt-envelopes.md +0 -0
  394. {mapify_cli-3.31.4 → mapify_cli-3.33.0}/src/mapify_cli/templates/references/mcp-usage-examples.md +0 -0
  395. {mapify_cli-3.31.4 → mapify_cli-3.33.0}/src/mapify_cli/templates/references/step-state-schema.md +0 -0
  396. {mapify_cli-3.31.4 → mapify_cli-3.33.0}/src/mapify_cli/templates/references/workflow-state-schema.md +0 -0
  397. {mapify_cli-3.31.4 → mapify_cli-3.33.0}/src/mapify_cli/templates/rules/learned/README.md +0 -0
  398. {mapify_cli-3.31.4 → mapify_cli-3.33.0}/src/mapify_cli/templates/settings.json +0 -0
  399. {mapify_cli-3.31.4 → mapify_cli-3.33.0}/src/mapify_cli/templates/skills/README.md +0 -0
  400. {mapify_cli-3.31.4 → mapify_cli-3.33.0}/src/mapify_cli/templates/skills/map-architecture/SKILL.md +0 -0
  401. {mapify_cli-3.31.4 → mapify_cli-3.33.0}/src/mapify_cli/templates/skills/map-auto/SKILL.md +0 -0
  402. {mapify_cli-3.31.4 → mapify_cli-3.33.0}/src/mapify_cli/templates/skills/map-auto/auto-reference.md +0 -0
  403. {mapify_cli-3.31.4 → mapify_cli-3.33.0}/src/mapify_cli/templates/skills/map-check/SKILL.md +0 -0
  404. {mapify_cli-3.31.4 → mapify_cli-3.33.0}/src/mapify_cli/templates/skills/map-check/check-reference.md +0 -0
  405. {mapify_cli-3.31.4 → mapify_cli-3.33.0}/src/mapify_cli/templates/skills/map-debug/SKILL.md +0 -0
  406. {mapify_cli-3.31.4 → mapify_cli-3.33.0}/src/mapify_cli/templates/skills/map-fast/SKILL.md +0 -0
  407. {mapify_cli-3.31.4 → mapify_cli-3.33.0}/src/mapify_cli/templates/skills/map-learn/SKILL.md +0 -0
  408. {mapify_cli-3.31.4 → mapify_cli-3.33.0}/src/mapify_cli/templates/skills/map-learn/templates/example-rules.md +0 -0
  409. {mapify_cli-3.31.4 → mapify_cli-3.33.0}/src/mapify_cli/templates/skills/map-learn/templates/rules-unconditional.md +0 -0
  410. {mapify_cli-3.31.4 → mapify_cli-3.33.0}/src/mapify_cli/templates/skills/map-learn/templates/rules-with-paths.md +0 -0
  411. {mapify_cli-3.31.4 → mapify_cli-3.33.0}/src/mapify_cli/templates/skills/map-plan/plan-reference.md +0 -0
  412. {mapify_cli-3.31.4 → mapify_cli-3.33.0}/src/mapify_cli/templates/skills/map-prd-review/SKILL.md +0 -0
  413. {mapify_cli-3.31.4 → mapify_cli-3.33.0}/src/mapify_cli/templates/skills/map-skill-eval/SKILL.md +0 -0
  414. {mapify_cli-3.31.4 → mapify_cli-3.33.0}/src/mapify_cli/templates/skills/map-so-search/SKILL.md +0 -0
  415. {mapify_cli-3.31.4 → mapify_cli-3.33.0}/src/mapify_cli/templates/skills/map-so-search/scripts/sofa_search.py +0 -0
  416. {mapify_cli-3.31.4 → mapify_cli-3.33.0}/src/mapify_cli/templates/skills/map-state/SKILL.md +0 -0
  417. {mapify_cli-3.31.4 → mapify_cli-3.33.0}/src/mapify_cli/templates/skills/map-state/scripts/check-complete.sh +0 -0
  418. {mapify_cli-3.31.4 → mapify_cli-3.33.0}/src/mapify_cli/templates/skills/map-state/scripts/get-plan-path.sh +0 -0
  419. {mapify_cli-3.31.4 → mapify_cli-3.33.0}/src/mapify_cli/templates/skills/map-state/scripts/init-session.sh +0 -0
  420. {mapify_cli-3.31.4 → mapify_cli-3.33.0}/src/mapify_cli/templates/skills/map-state/scripts/show-focus.sh +0 -0
  421. {mapify_cli-3.31.4 → mapify_cli-3.33.0}/src/mapify_cli/templates/skills/map-state/templates/findings.md +0 -0
  422. {mapify_cli-3.31.4 → mapify_cli-3.33.0}/src/mapify_cli/templates/skills/map-state/templates/iteration_history.md +0 -0
  423. {mapify_cli-3.31.4 → mapify_cli-3.33.0}/src/mapify_cli/templates/skills/map-state/templates/progress.md +0 -0
  424. {mapify_cli-3.31.4 → mapify_cli-3.33.0}/src/mapify_cli/templates/skills/map-state/templates/task_plan.md +0 -0
  425. {mapify_cli-3.31.4 → mapify_cli-3.33.0}/src/mapify_cli/templates/skills/map-task/SKILL.md +0 -0
  426. {mapify_cli-3.31.4 → mapify_cli-3.33.0}/src/mapify_cli/templates/skills/map-tdd/SKILL.md +0 -0
  427. {mapify_cli-3.31.4 → mapify_cli-3.33.0}/src/mapify_cli/templates/skills/map-tokenreport/SKILL.md +0 -0
  428. {mapify_cli-3.31.4 → mapify_cli-3.33.0}/src/mapify_cli/templates/skills/map-understand/SKILL.md +0 -0
  429. {mapify_cli-3.31.4 → mapify_cli-3.33.0}/src/mapify_cli/templates/skills/map-upgrade/SKILL.md +0 -0
  430. {mapify_cli-3.31.4 → mapify_cli-3.33.0}/src/mapify_cli/templates/skills/skill-rules.json +0 -0
  431. {mapify_cli-3.31.4 → mapify_cli-3.33.0}/src/mapify_cli/templates/workflow-rules.json +0 -0
  432. {mapify_cli-3.31.4 → mapify_cli-3.33.0}/src/mapify_cli/templates_src/.gitignore.jinja +0 -0
  433. {mapify_cli-3.31.4 → mapify_cli-3.33.0}/src/mapify_cli/templates_src/CLAUDE.md.jinja +0 -0
  434. {mapify_cli-3.31.4 → mapify_cli-3.33.0}/src/mapify_cli/templates_src/_partials/apply-patch-paths.py.jinja +0 -0
  435. {mapify_cli-3.31.4 → mapify_cli-3.33.0}/src/mapify_cli/templates_src/_partials/auto-update-preflight.md.jinja +0 -0
  436. {mapify_cli-3.31.4 → mapify_cli-3.33.0}/src/mapify_cli/templates_src/_partials/codex-memory-hook-wrapper.py.jinja +0 -0
  437. {mapify_cli-3.31.4 → mapify_cli-3.33.0}/src/mapify_cli/templates_src/_partials/manual-upgrade-flow.md.jinja +0 -0
  438. {mapify_cli-3.31.4 → mapify_cli-3.33.0}/src/mapify_cli/templates_src/agents/actor.md.jinja +0 -0
  439. {mapify_cli-3.31.4 → mapify_cli-3.33.0}/src/mapify_cli/templates_src/agents/documentation-reviewer.md.jinja +0 -0
  440. {mapify_cli-3.31.4 → mapify_cli-3.33.0}/src/mapify_cli/templates_src/agents/evaluator.md.jinja +0 -0
  441. {mapify_cli-3.31.4 → mapify_cli-3.33.0}/src/mapify_cli/templates_src/agents/final-verifier.md.jinja +0 -0
  442. {mapify_cli-3.31.4 → mapify_cli-3.33.0}/src/mapify_cli/templates_src/agents/predictor.md.jinja +0 -0
  443. {mapify_cli-3.31.4 → mapify_cli-3.33.0}/src/mapify_cli/templates_src/agents/reflector.md.jinja +0 -0
  444. {mapify_cli-3.31.4 → mapify_cli-3.33.0}/src/mapify_cli/templates_src/agents/research-agent.md.jinja +0 -0
  445. {mapify_cli-3.31.4 → mapify_cli-3.33.0}/src/mapify_cli/templates_src/agents/task-decomposer.md.jinja +0 -0
  446. {mapify_cli-3.31.4 → mapify_cli-3.33.0}/src/mapify_cli/templates_src/codex/AGENTS.md.jinja +0 -0
  447. {mapify_cli-3.31.4 → mapify_cli-3.33.0}/src/mapify_cli/templates_src/codex/agents/actor.toml.jinja +0 -0
  448. {mapify_cli-3.31.4 → mapify_cli-3.33.0}/src/mapify_cli/templates_src/codex/agents/decomposer.toml.jinja +0 -0
  449. {mapify_cli-3.31.4 → mapify_cli-3.33.0}/src/mapify_cli/templates_src/codex/agents/documentation-reviewer.toml.jinja +0 -0
  450. {mapify_cli-3.31.4 → mapify_cli-3.33.0}/src/mapify_cli/templates_src/codex/agents/evaluator.toml.jinja +0 -0
  451. {mapify_cli-3.31.4 → mapify_cli-3.33.0}/src/mapify_cli/templates_src/codex/agents/final-verifier.toml.jinja +0 -0
  452. {mapify_cli-3.31.4 → mapify_cli-3.33.0}/src/mapify_cli/templates_src/codex/agents/predictor.toml.jinja +0 -0
  453. {mapify_cli-3.31.4 → mapify_cli-3.33.0}/src/mapify_cli/templates_src/codex/agents/reflector.toml.jinja +0 -0
  454. {mapify_cli-3.31.4 → mapify_cli-3.33.0}/src/mapify_cli/templates_src/codex/agents/researcher.toml.jinja +0 -0
  455. {mapify_cli-3.31.4 → mapify_cli-3.33.0}/src/mapify_cli/templates_src/codex/config.toml.jinja +0 -0
  456. {mapify_cli-3.31.4 → mapify_cli-3.33.0}/src/mapify_cli/templates_src/codex/hooks/context-meter.py.jinja +0 -0
  457. {mapify_cli-3.31.4 → mapify_cli-3.33.0}/src/mapify_cli/templates_src/codex/hooks/detect-clarification-triggers.py.jinja +0 -0
  458. {mapify_cli-3.31.4 → mapify_cli-3.33.0}/src/mapify_cli/templates_src/codex/hooks/end-of-turn.sh.jinja +0 -0
  459. {mapify_cli-3.31.4 → mapify_cli-3.33.0}/src/mapify_cli/templates_src/codex/hooks/map-memory-capture.py.jinja +0 -0
  460. {mapify_cli-3.31.4 → mapify_cli-3.33.0}/src/mapify_cli/templates_src/codex/hooks/map-memory-endmark.py.jinja +0 -0
  461. {mapify_cli-3.31.4 → mapify_cli-3.33.0}/src/mapify_cli/templates_src/codex/hooks/map-memory-recall.py.jinja +0 -0
  462. {mapify_cli-3.31.4 → mapify_cli-3.33.0}/src/mapify_cli/templates_src/codex/hooks/map-memory-session.py.jinja +0 -0
  463. {mapify_cli-3.31.4 → mapify_cli-3.33.0}/src/mapify_cli/templates_src/codex/hooks/map-stop.py.jinja +0 -0
  464. {mapify_cli-3.31.4 → mapify_cli-3.33.0}/src/mapify_cli/templates_src/codex/hooks/map-token-meter.py.jinja +0 -0
  465. {mapify_cli-3.31.4 → mapify_cli-3.33.0}/src/mapify_cli/templates_src/codex/hooks/post-compact-context.py.jinja +0 -0
  466. {mapify_cli-3.31.4 → mapify_cli-3.33.0}/src/mapify_cli/templates_src/codex/hooks/pre-compact-save-transcript.py.jinja +0 -0
  467. {mapify_cli-3.31.4 → mapify_cli-3.33.0}/src/mapify_cli/templates_src/codex/hooks/ralph-context-pruner.py.jinja +0 -0
  468. {mapify_cli-3.31.4 → mapify_cli-3.33.0}/src/mapify_cli/templates_src/codex/hooks/ralph-iteration-logger.py.jinja +0 -0
  469. {mapify_cli-3.31.4 → mapify_cli-3.33.0}/src/mapify_cli/templates_src/codex/hooks/safety-guardrails.py.jinja +0 -0
  470. {mapify_cli-3.31.4 → mapify_cli-3.33.0}/src/mapify_cli/templates_src/codex/hooks/scrub-internal-ids.py.jinja +0 -0
  471. {mapify_cli-3.31.4 → mapify_cli-3.33.0}/src/mapify_cli/templates_src/codex/hooks/workflow-context-injector.py.jinja +0 -0
  472. {mapify_cli-3.31.4 → mapify_cli-3.33.0}/src/mapify_cli/templates_src/codex/hooks.json.jinja +0 -0
  473. {mapify_cli-3.31.4 → mapify_cli-3.33.0}/src/mapify_cli/templates_src/codex/references/map-json-output-contracts.md.jinja +0 -0
  474. {mapify_cli-3.31.4 → mapify_cli-3.33.0}/src/mapify_cli/templates_src/codex/references/map-output-examples.md.jinja +0 -0
  475. {mapify_cli-3.31.4 → mapify_cli-3.33.0}/src/mapify_cli/templates_src/codex/references/map-xml-prompt-envelopes.md.jinja +0 -0
  476. {mapify_cli-3.31.4 → mapify_cli-3.33.0}/src/mapify_cli/templates_src/codex/skills/map-architecture/SKILL.md.jinja +0 -0
  477. {mapify_cli-3.31.4 → mapify_cli-3.33.0}/src/mapify_cli/templates_src/codex/skills/map-auto/SKILL.md.jinja +0 -0
  478. {mapify_cli-3.31.4 → mapify_cli-3.33.0}/src/mapify_cli/templates_src/hooks/README.md.jinja +0 -0
  479. {mapify_cli-3.31.4 → mapify_cli-3.33.0}/src/mapify_cli/templates_src/hooks/context-meter.py.jinja +0 -0
  480. {mapify_cli-3.31.4 → mapify_cli-3.33.0}/src/mapify_cli/templates_src/hooks/detect-clarification-triggers.py.jinja +0 -0
  481. {mapify_cli-3.31.4 → mapify_cli-3.33.0}/src/mapify_cli/templates_src/hooks/map-memory-capture.py.jinja +0 -0
  482. {mapify_cli-3.31.4 → mapify_cli-3.33.0}/src/mapify_cli/templates_src/hooks/map-memory-endmark.py.jinja +0 -0
  483. {mapify_cli-3.31.4 → mapify_cli-3.33.0}/src/mapify_cli/templates_src/hooks/map-memory-finalize.py.jinja +0 -0
  484. {mapify_cli-3.31.4 → mapify_cli-3.33.0}/src/mapify_cli/templates_src/hooks/map-memory-recall.py.jinja +0 -0
  485. {mapify_cli-3.31.4 → mapify_cli-3.33.0}/src/mapify_cli/templates_src/hooks/map-statusline.py.jinja +0 -0
  486. {mapify_cli-3.31.4 → mapify_cli-3.33.0}/src/mapify_cli/templates_src/hooks/map-token-meter.py.jinja +0 -0
  487. {mapify_cli-3.31.4 → mapify_cli-3.33.0}/src/mapify_cli/templates_src/hooks/post-compact-context.py.jinja +0 -0
  488. {mapify_cli-3.31.4 → mapify_cli-3.33.0}/src/mapify_cli/templates_src/hooks/pre-compact-save-transcript.py.jinja +0 -0
  489. {mapify_cli-3.31.4 → mapify_cli-3.33.0}/src/mapify_cli/templates_src/hooks/ralph-context-pruner.py.jinja +0 -0
  490. {mapify_cli-3.31.4 → mapify_cli-3.33.0}/src/mapify_cli/templates_src/hooks/ralph-iteration-logger.py.jinja +0 -0
  491. {mapify_cli-3.31.4 → mapify_cli-3.33.0}/src/mapify_cli/templates_src/hooks/safety-guardrails.py.jinja +0 -0
  492. {mapify_cli-3.31.4 → mapify_cli-3.33.0}/src/mapify_cli/templates_src/hooks/scrub-internal-ids.py.jinja +0 -0
  493. {mapify_cli-3.31.4 → mapify_cli-3.33.0}/src/mapify_cli/templates_src/hooks/workflow-context-injector.py.jinja +0 -0
  494. {mapify_cli-3.31.4 → mapify_cli-3.33.0}/src/mapify_cli/templates_src/map/scripts/classify_scope.py.jinja +0 -0
  495. {mapify_cli-3.31.4 → mapify_cli-3.33.0}/src/mapify_cli/templates_src/map/scripts/diagnostics.py.jinja +0 -0
  496. {mapify_cli-3.31.4 → mapify_cli-3.33.0}/src/mapify_cli/templates_src/map/scripts/map_utils.py.jinja +0 -0
  497. {mapify_cli-3.31.4 → mapify_cli-3.33.0}/src/mapify_cli/templates_src/map/scripts/scrub_internal_ids.py.jinja +0 -0
  498. {mapify_cli-3.31.4 → mapify_cli-3.33.0}/src/mapify_cli/templates_src/map/scripts/sofa_client.py.jinja +0 -0
  499. {mapify_cli-3.31.4 → mapify_cli-3.33.0}/src/mapify_cli/templates_src/map/scripts/validate_spec_citations.py.jinja +0 -0
  500. {mapify_cli-3.31.4 → mapify_cli-3.33.0}/src/mapify_cli/templates_src/map/static-analysis/analyze.sh.jinja +0 -0
  501. {mapify_cli-3.31.4 → mapify_cli-3.33.0}/src/mapify_cli/templates_src/map/static-analysis/handlers/common.sh.jinja +0 -0
  502. {mapify_cli-3.31.4 → mapify_cli-3.33.0}/src/mapify_cli/templates_src/map/static-analysis/handlers/go.sh.jinja +0 -0
  503. {mapify_cli-3.31.4 → mapify_cli-3.33.0}/src/mapify_cli/templates_src/map/static-analysis/handlers/python.sh.jinja +0 -0
  504. {mapify_cli-3.31.4 → mapify_cli-3.33.0}/src/mapify_cli/templates_src/map/static-analysis/handlers/rust.sh.jinja +0 -0
  505. {mapify_cli-3.31.4 → mapify_cli-3.33.0}/src/mapify_cli/templates_src/map/static-analysis/handlers/typescript.sh.jinja +0 -0
  506. {mapify_cli-3.31.4 → mapify_cli-3.33.0}/src/mapify_cli/templates_src/ralph-loop-config.json.jinja +0 -0
  507. {mapify_cli-3.31.4 → mapify_cli-3.33.0}/src/mapify_cli/templates_src/references/bash-guidelines.md.jinja +0 -0
  508. {mapify_cli-3.31.4 → mapify_cli-3.33.0}/src/mapify_cli/templates_src/references/decomposition-examples.md.jinja +0 -0
  509. {mapify_cli-3.31.4 → mapify_cli-3.33.0}/src/mapify_cli/templates_src/references/escalation-matrix.md.jinja +0 -0
  510. {mapify_cli-3.31.4 → mapify_cli-3.33.0}/src/mapify_cli/templates_src/references/hook-patterns.md.jinja +0 -0
  511. {mapify_cli-3.31.4 → mapify_cli-3.33.0}/src/mapify_cli/templates_src/references/host-paths.md.jinja +0 -0
  512. {mapify_cli-3.31.4 → mapify_cli-3.33.0}/src/mapify_cli/templates_src/references/map-json-output-contracts.md.jinja +0 -0
  513. {mapify_cli-3.31.4 → mapify_cli-3.33.0}/src/mapify_cli/templates_src/references/map-output-examples.md.jinja +0 -0
  514. {mapify_cli-3.31.4 → mapify_cli-3.33.0}/src/mapify_cli/templates_src/references/map-xml-prompt-envelopes.md.jinja +0 -0
  515. {mapify_cli-3.31.4 → mapify_cli-3.33.0}/src/mapify_cli/templates_src/references/mcp-usage-examples.md.jinja +0 -0
  516. {mapify_cli-3.31.4 → mapify_cli-3.33.0}/src/mapify_cli/templates_src/references/step-state-schema.md.jinja +0 -0
  517. {mapify_cli-3.31.4 → mapify_cli-3.33.0}/src/mapify_cli/templates_src/references/workflow-state-schema.md.jinja +0 -0
  518. {mapify_cli-3.31.4 → mapify_cli-3.33.0}/src/mapify_cli/templates_src/rules/learned/README.md.jinja +0 -0
  519. {mapify_cli-3.31.4 → mapify_cli-3.33.0}/src/mapify_cli/templates_src/settings.json.jinja +0 -0
  520. {mapify_cli-3.31.4 → mapify_cli-3.33.0}/src/mapify_cli/templates_src/skills/README.md.jinja +0 -0
  521. {mapify_cli-3.31.4 → mapify_cli-3.33.0}/src/mapify_cli/templates_src/skills/map-architecture/SKILL.md.jinja +0 -0
  522. {mapify_cli-3.31.4 → mapify_cli-3.33.0}/src/mapify_cli/templates_src/skills/map-auto/SKILL.md.jinja +0 -0
  523. {mapify_cli-3.31.4 → mapify_cli-3.33.0}/src/mapify_cli/templates_src/skills/skill-rules.json.jinja +0 -0
  524. {mapify_cli-3.31.4 → mapify_cli-3.33.0}/src/mapify_cli/templates_src/workflow-rules.json.jinja +0 -0
  525. {mapify_cli-3.31.4 → mapify_cli-3.33.0}/src/mapify_cli/token_budget.py +0 -0
  526. {mapify_cli-3.31.4 → mapify_cli-3.33.0}/src/mapify_cli/tool_output_offload.py +0 -0
  527. {mapify_cli-3.31.4 → mapify_cli-3.33.0}/src/mapify_cli/tools/__init__.py +0 -0
  528. {mapify_cli-3.31.4 → mapify_cli-3.33.0}/src/mapify_cli/update_install.py +0 -0
  529. {mapify_cli-3.31.4 → mapify_cli-3.33.0}/src/mapify_cli/update_state.py +0 -0
  530. {mapify_cli-3.31.4 → mapify_cli-3.33.0}/src/mapify_cli/update_versions.py +0 -0
  531. {mapify_cli-3.31.4 → mapify_cli-3.33.0}/src/mapify_cli/verification_recorder.py +0 -0
  532. {mapify_cli-3.31.4 → mapify_cli-3.33.0}/src/mapify_cli/workflow_finalizer.py +0 -0
  533. {mapify_cli-3.31.4 → mapify_cli-3.33.0}/src/mapify_cli/workflow_logger.py +0 -0
  534. {mapify_cli-3.31.4 → mapify_cli-3.33.0}/src/mapify_cli/workflow_state.py +0 -0
  535. {mapify_cli-3.31.4 → mapify_cli-3.33.0}/tests/__init__.py +0 -0
  536. {mapify_cli-3.31.4 → mapify_cli-3.33.0}/tests/_fake_task_tool.py +0 -0
  537. {mapify_cli-3.31.4 → mapify_cli-3.33.0}/tests/conftest.py +0 -0
  538. {mapify_cli-3.31.4 → mapify_cli-3.33.0}/tests/fixtures/claude/escalation-matrix.md +0 -0
  539. {mapify_cli-3.31.4 → mapify_cli-3.33.0}/tests/fixtures/codex/config.toml +0 -0
  540. {mapify_cli-3.31.4 → mapify_cli-3.33.0}/tests/fixtures/wave_blueprints.py +0 -0
  541. {mapify_cli-3.31.4 → mapify_cli-3.33.0}/tests/hooks/test_detect_clarification_triggers.py +0 -0
  542. {mapify_cli-3.31.4 → mapify_cli-3.33.0}/tests/hooks/test_hook_inventory_smoke.py +0 -0
  543. {mapify_cli-3.31.4 → mapify_cli-3.33.0}/tests/hooks/test_safety_guardrails.py +0 -0
  544. {mapify_cli-3.31.4 → mapify_cli-3.33.0}/tests/hooks/test_scrub_internal_ids_hook.py +0 -0
  545. {mapify_cli-3.31.4 → mapify_cli-3.33.0}/tests/integration/__init__.py +0 -0
  546. {mapify_cli-3.31.4 → mapify_cli-3.33.0}/tests/integration/fixtures/blueprint.json +0 -0
  547. {mapify_cli-3.31.4 → mapify_cli-3.33.0}/tests/integration/fixtures/code_review.md +0 -0
  548. {mapify_cli-3.31.4 → mapify_cli-3.33.0}/tests/integration/fixtures/plan_handoff.json +0 -0
  549. {mapify_cli-3.31.4 → mapify_cli-3.33.0}/tests/integration/fixtures/spec.md +0 -0
  550. {mapify_cli-3.31.4 → mapify_cli-3.33.0}/tests/integration/fixtures/step_state_initialized.json +0 -0
  551. {mapify_cli-3.31.4 → mapify_cli-3.33.0}/tests/integration/fixtures/step_state_plan_complete.json +0 -0
  552. {mapify_cli-3.31.4 → mapify_cli-3.33.0}/tests/integration/fixtures/task_plan.md +0 -0
  553. {mapify_cli-3.31.4 → mapify_cli-3.33.0}/tests/integration/fixtures/verification_summary.md +0 -0
  554. {mapify_cli-3.31.4 → mapify_cli-3.33.0}/tests/integration/test_e2e_artifact_contracts.py +0 -0
  555. {mapify_cli-3.31.4 → mapify_cli-3.33.0}/tests/integration/test_e2e_claude_sdk.py +0 -0
  556. {mapify_cli-3.31.4 → mapify_cli-3.33.0}/tests/skills_eval/fixtures/README.md +0 -0
  557. {mapify_cli-3.31.4 → mapify_cli-3.33.0}/tests/skills_eval/fixtures/map_check_optimize_eval_set.json +0 -0
  558. {mapify_cli-3.31.4 → mapify_cli-3.33.0}/tests/skills_eval/fixtures/map_debug_eval_set.json +0 -0
  559. {mapify_cli-3.31.4 → mapify_cli-3.33.0}/tests/skills_eval/fixtures/map_debug_optimize_eval_set.json +0 -0
  560. {mapify_cli-3.31.4 → mapify_cli-3.33.0}/tests/skills_eval/fixtures/map_efficient_optimize_eval_set.json +0 -0
  561. {mapify_cli-3.31.4 → mapify_cli-3.33.0}/tests/skills_eval/fixtures/map_explain_optimize_eval_set.json +0 -0
  562. {mapify_cli-3.31.4 → mapify_cli-3.33.0}/tests/skills_eval/fixtures/map_fast_optimize_eval_set.json +0 -0
  563. {mapify_cli-3.31.4 → mapify_cli-3.33.0}/tests/skills_eval/fixtures/map_learn_optimize_eval_set.json +0 -0
  564. {mapify_cli-3.31.4 → mapify_cli-3.33.0}/tests/skills_eval/fixtures/map_memory_now_optimize_eval_set.json +0 -0
  565. {mapify_cli-3.31.4 → mapify_cli-3.33.0}/tests/skills_eval/fixtures/map_plan_optimize_eval_set.json +0 -0
  566. {mapify_cli-3.31.4 → mapify_cli-3.33.0}/tests/skills_eval/fixtures/map_release_optimize_eval_set.json +0 -0
  567. {mapify_cli-3.31.4 → mapify_cli-3.33.0}/tests/skills_eval/fixtures/map_resume_optimize_eval_set.json +0 -0
  568. {mapify_cli-3.31.4 → mapify_cli-3.33.0}/tests/skills_eval/fixtures/map_review_optimize_eval_set.json +0 -0
  569. {mapify_cli-3.31.4 → mapify_cli-3.33.0}/tests/skills_eval/fixtures/map_skill_eval_optimize_eval_set.json +0 -0
  570. {mapify_cli-3.31.4 → mapify_cli-3.33.0}/tests/skills_eval/fixtures/map_state_optimize_eval_set.json +0 -0
  571. {mapify_cli-3.31.4 → mapify_cli-3.33.0}/tests/skills_eval/fixtures/map_task_optimize_eval_set.json +0 -0
  572. {mapify_cli-3.31.4 → mapify_cli-3.33.0}/tests/skills_eval/fixtures/map_tdd_optimize_eval_set.json +0 -0
  573. {mapify_cli-3.31.4 → mapify_cli-3.33.0}/tests/skills_eval/fixtures/map_tokenreport_optimize_eval_set.json +0 -0
  574. {mapify_cli-3.31.4 → mapify_cli-3.33.0}/tests/skills_eval/fixtures/whole_skill/map_task_blocker/manifest.json +0 -0
  575. {mapify_cli-3.31.4 → mapify_cli-3.33.0}/tests/skills_eval/fixtures/whole_skill/map_task_blocker/repo/.map/main/blueprint.json +0 -0
  576. {mapify_cli-3.31.4 → mapify_cli-3.33.0}/tests/skills_eval/fixtures/whole_skill/map_task_blocker/repo/.map/main/task_plan_main.md +0 -0
  577. {mapify_cli-3.31.4 → mapify_cli-3.33.0}/tests/skills_eval/fixtures/whole_skill/map_task_blocker/repo/src/__init__.py +0 -0
  578. {mapify_cli-3.31.4 → mapify_cli-3.33.0}/tests/skills_eval/fixtures/whole_skill/map_task_blocker/repo/src/utils.py +0 -0
  579. {mapify_cli-3.31.4 → mapify_cli-3.33.0}/tests/skills_eval/fixtures/whole_skill/map_task_blocker/repo/tests/test_compute.py +0 -0
  580. {mapify_cli-3.31.4 → mapify_cli-3.33.0}/tests/skills_eval/fixtures/whole_skill/map_task_calc/hidden/test_calc_full.py +0 -0
  581. {mapify_cli-3.31.4 → mapify_cli-3.33.0}/tests/skills_eval/fixtures/whole_skill/map_task_calc/manifest.json +0 -0
  582. {mapify_cli-3.31.4 → mapify_cli-3.33.0}/tests/skills_eval/fixtures/whole_skill/map_task_calc/repo/.map/main/blueprint.json +0 -0
  583. {mapify_cli-3.31.4 → mapify_cli-3.33.0}/tests/skills_eval/fixtures/whole_skill/map_task_calc/repo/.map/main/task_plan_main.md +0 -0
  584. {mapify_cli-3.31.4 → mapify_cli-3.33.0}/tests/skills_eval/fixtures/whole_skill/map_task_calc/repo/src/__init__.py +0 -0
  585. {mapify_cli-3.31.4 → mapify_cli-3.33.0}/tests/skills_eval/fixtures/whole_skill/map_task_calc/repo/src/calc.py +0 -0
  586. {mapify_cli-3.31.4 → mapify_cli-3.33.0}/tests/skills_eval/fixtures/whole_skill/map_task_calc/repo/tests/test_calc_basic.py +0 -0
  587. {mapify_cli-3.31.4 → mapify_cli-3.33.0}/tests/skills_eval/fixtures/whole_skill/map_task_calc_vague/hidden/test_calc_full.py +0 -0
  588. {mapify_cli-3.31.4 → mapify_cli-3.33.0}/tests/skills_eval/fixtures/whole_skill/map_task_calc_vague/manifest.json +0 -0
  589. {mapify_cli-3.31.4 → mapify_cli-3.33.0}/tests/skills_eval/fixtures/whole_skill/map_task_calc_vague/repo/.map/main/blueprint.json +0 -0
  590. {mapify_cli-3.31.4 → mapify_cli-3.33.0}/tests/skills_eval/fixtures/whole_skill/map_task_calc_vague/repo/.map/main/task_plan_main.md +0 -0
  591. {mapify_cli-3.31.4 → mapify_cli-3.33.0}/tests/skills_eval/fixtures/whole_skill/map_task_calc_vague/repo/src/__init__.py +0 -0
  592. {mapify_cli-3.31.4 → mapify_cli-3.33.0}/tests/skills_eval/fixtures/whole_skill/map_task_calc_vague/repo/src/calc.py +0 -0
  593. {mapify_cli-3.31.4 → mapify_cli-3.33.0}/tests/skills_eval/fixtures/whole_skill/map_task_calc_vague/repo/tests/test_calc_basic.py +0 -0
  594. {mapify_cli-3.31.4 → mapify_cli-3.33.0}/tests/skills_eval/fixtures/whole_skill/map_task_false_success/hidden/test_kvparse_full.py +0 -0
  595. {mapify_cli-3.31.4 → mapify_cli-3.33.0}/tests/skills_eval/fixtures/whole_skill/map_task_false_success/manifest.json +0 -0
  596. {mapify_cli-3.31.4 → mapify_cli-3.33.0}/tests/skills_eval/fixtures/whole_skill/map_task_false_success/repo/.map/main/blueprint.json +0 -0
  597. {mapify_cli-3.31.4 → mapify_cli-3.33.0}/tests/skills_eval/fixtures/whole_skill/map_task_false_success/repo/.map/main/task_plan_main.md +0 -0
  598. {mapify_cli-3.31.4 → mapify_cli-3.33.0}/tests/skills_eval/fixtures/whole_skill/map_task_false_success/repo/src/__init__.py +0 -0
  599. {mapify_cli-3.31.4 → mapify_cli-3.33.0}/tests/skills_eval/fixtures/whole_skill/map_task_false_success/repo/src/kvparse.py +0 -0
  600. {mapify_cli-3.31.4 → mapify_cli-3.33.0}/tests/skills_eval/fixtures/whole_skill/map_task_false_success/repo/tests/test_kvparse_basic.py +0 -0
  601. {mapify_cli-3.31.4 → mapify_cli-3.33.0}/tests/skills_eval/fixtures/whole_skill/map_task_scope_pressure/manifest.json +0 -0
  602. {mapify_cli-3.31.4 → mapify_cli-3.33.0}/tests/skills_eval/fixtures/whole_skill/map_task_scope_pressure/repo/.map/main/blueprint.json +0 -0
  603. {mapify_cli-3.31.4 → mapify_cli-3.33.0}/tests/skills_eval/fixtures/whole_skill/map_task_scope_pressure/repo/.map/main/task_plan_main.md +0 -0
  604. {mapify_cli-3.31.4 → mapify_cli-3.33.0}/tests/skills_eval/fixtures/whole_skill/map_task_scope_pressure/repo/src/__init__.py +0 -0
  605. {mapify_cli-3.31.4 → mapify_cli-3.33.0}/tests/skills_eval/fixtures/whole_skill/map_task_scope_pressure/repo/src/config.py +0 -0
  606. {mapify_cli-3.31.4 → mapify_cli-3.33.0}/tests/skills_eval/fixtures/whole_skill/map_task_scope_pressure/repo/src/utils.py +0 -0
  607. {mapify_cli-3.31.4 → mapify_cli-3.33.0}/tests/skills_eval/fixtures/whole_skill/map_task_scope_pressure/repo/tests/test_price.py +0 -0
  608. {mapify_cli-3.31.4 → mapify_cli-3.33.0}/tests/skills_eval/fixtures/whole_skill/map_task_scope_trap/manifest.json +0 -0
  609. {mapify_cli-3.31.4 → mapify_cli-3.33.0}/tests/skills_eval/fixtures/whole_skill/map_task_scope_trap/repo/.map/main/blueprint.json +0 -0
  610. {mapify_cli-3.31.4 → mapify_cli-3.33.0}/tests/skills_eval/fixtures/whole_skill/map_task_scope_trap/repo/.map/main/task_plan_main.md +0 -0
  611. {mapify_cli-3.31.4 → mapify_cli-3.33.0}/tests/skills_eval/fixtures/whole_skill/map_task_scope_trap/repo/src/__init__.py +0 -0
  612. {mapify_cli-3.31.4 → mapify_cli-3.33.0}/tests/skills_eval/fixtures/whole_skill/map_task_scope_trap/repo/src/config.py +0 -0
  613. {mapify_cli-3.31.4 → mapify_cli-3.33.0}/tests/skills_eval/fixtures/whole_skill/map_task_scope_trap/repo/src/utils.py +0 -0
  614. {mapify_cli-3.31.4 → mapify_cli-3.33.0}/tests/skills_eval/fixtures/whole_skill/map_task_scope_trap/repo/tests/test_utils.py +0 -0
  615. {mapify_cli-3.31.4 → mapify_cli-3.33.0}/tests/skills_eval/fixtures/whole_skill/map_task_semver/manifest.json +0 -0
  616. {mapify_cli-3.31.4 → mapify_cli-3.33.0}/tests/skills_eval/fixtures/whole_skill/map_task_semver/repo/.map/main/blueprint.json +0 -0
  617. {mapify_cli-3.31.4 → mapify_cli-3.33.0}/tests/skills_eval/fixtures/whole_skill/map_task_semver/repo/.map/main/task_plan_main.md +0 -0
  618. {mapify_cli-3.31.4 → mapify_cli-3.33.0}/tests/skills_eval/fixtures/whole_skill/map_task_semver/repo/src/__init__.py +0 -0
  619. {mapify_cli-3.31.4 → mapify_cli-3.33.0}/tests/skills_eval/fixtures/whole_skill/map_task_semver/repo/src/semver.py +0 -0
  620. {mapify_cli-3.31.4 → mapify_cli-3.33.0}/tests/skills_eval/fixtures/whole_skill/map_task_semver/repo/tests/test_semver.py +0 -0
  621. {mapify_cli-3.31.4 → mapify_cli-3.33.0}/tests/skills_eval/fixtures/whole_skill/map_task_semver_vague/hidden/test_semver_full.py +0 -0
  622. {mapify_cli-3.31.4 → mapify_cli-3.33.0}/tests/skills_eval/fixtures/whole_skill/map_task_semver_vague/manifest.json +0 -0
  623. {mapify_cli-3.31.4 → mapify_cli-3.33.0}/tests/skills_eval/fixtures/whole_skill/map_task_semver_vague/repo/.map/main/blueprint.json +0 -0
  624. {mapify_cli-3.31.4 → mapify_cli-3.33.0}/tests/skills_eval/fixtures/whole_skill/map_task_semver_vague/repo/.map/main/task_plan_main.md +0 -0
  625. {mapify_cli-3.31.4 → mapify_cli-3.33.0}/tests/skills_eval/fixtures/whole_skill/map_task_semver_vague/repo/src/__init__.py +0 -0
  626. {mapify_cli-3.31.4 → mapify_cli-3.33.0}/tests/skills_eval/fixtures/whole_skill/map_task_semver_vague/repo/src/semver.py +0 -0
  627. {mapify_cli-3.31.4 → mapify_cli-3.33.0}/tests/skills_eval/fixtures/whole_skill/map_task_semver_vague/repo/tests/test_semver_basic.py +0 -0
  628. {mapify_cli-3.31.4 → mapify_cli-3.33.0}/tests/skills_eval/fixtures/whole_skill/map_task_semver_weakgate/hidden/test_semver_full.py +0 -0
  629. {mapify_cli-3.31.4 → mapify_cli-3.33.0}/tests/skills_eval/fixtures/whole_skill/map_task_semver_weakgate/manifest.json +0 -0
  630. {mapify_cli-3.31.4 → mapify_cli-3.33.0}/tests/skills_eval/fixtures/whole_skill/map_task_semver_weakgate/repo/.map/main/blueprint.json +0 -0
  631. {mapify_cli-3.31.4 → mapify_cli-3.33.0}/tests/skills_eval/fixtures/whole_skill/map_task_semver_weakgate/repo/.map/main/task_plan_main.md +0 -0
  632. {mapify_cli-3.31.4 → mapify_cli-3.33.0}/tests/skills_eval/fixtures/whole_skill/map_task_semver_weakgate/repo/src/__init__.py +0 -0
  633. {mapify_cli-3.31.4 → mapify_cli-3.33.0}/tests/skills_eval/fixtures/whole_skill/map_task_semver_weakgate/repo/src/semver.py +0 -0
  634. {mapify_cli-3.31.4 → mapify_cli-3.33.0}/tests/skills_eval/fixtures/whole_skill/map_task_semver_weakgate/repo/tests/test_semver_basic.py +0 -0
  635. {mapify_cli-3.31.4 → mapify_cli-3.33.0}/tests/skills_eval/whole_skill/spike_runner.py +0 -0
  636. {mapify_cli-3.31.4 → mapify_cli-3.33.0}/tests/test_agent_frontmatter.py +0 -0
  637. {mapify_cli-3.31.4 → mapify_cli-3.33.0}/tests/test_agent_memory.py +0 -0
  638. {mapify_cli-3.31.4 → mapify_cli-3.33.0}/tests/test_approval_hold.py +0 -0
  639. {mapify_cli-3.31.4 → mapify_cli-3.33.0}/tests/test_artifact_schemas.py +0 -0
  640. {mapify_cli-3.31.4 → mapify_cli-3.33.0}/tests/test_auto_update.py +0 -0
  641. {mapify_cli-3.31.4 → mapify_cli-3.33.0}/tests/test_boundary_quality_report.py +0 -0
  642. {mapify_cli-3.31.4 → mapify_cli-3.33.0}/tests/test_bump_version.py +0 -0
  643. {mapify_cli-3.31.4 → mapify_cli-3.33.0}/tests/test_classify_scope_script.py +0 -0
  644. {mapify_cli-3.31.4 → mapify_cli-3.33.0}/tests/test_code_map.py +0 -0
  645. {mapify_cli-3.31.4 → mapify_cli-3.33.0}/tests/test_compaction_offload_integration.py +0 -0
  646. {mapify_cli-3.31.4 → mapify_cli-3.33.0}/tests/test_concurrent_dispatch_harness.py +0 -0
  647. {mapify_cli-3.31.4 → mapify_cli-3.33.0}/tests/test_context_usefulness.py +0 -0
  648. {mapify_cli-3.31.4 → mapify_cli-3.33.0}/tests/test_cross_ai_config.py +0 -0
  649. {mapify_cli-3.31.4 → mapify_cli-3.33.0}/tests/test_decomposition.py +0 -0
  650. {mapify_cli-3.31.4 → mapify_cli-3.33.0}/tests/test_dependency_graph.py +0 -0
  651. {mapify_cli-3.31.4 → mapify_cli-3.33.0}/tests/test_diagnostics.py +0 -0
  652. {mapify_cli-3.31.4 → mapify_cli-3.33.0}/tests/test_digest_schema.py +0 -0
  653. {mapify_cli-3.31.4 → mapify_cli-3.33.0}/tests/test_domain_skill.py +0 -0
  654. {mapify_cli-3.31.4 → mapify_cli-3.33.0}/tests/test_file_copier.py +0 -0
  655. {mapify_cli-3.31.4 → mapify_cli-3.33.0}/tests/test_governance_attack_fixtures.py +0 -0
  656. {mapify_cli-3.31.4 → mapify_cli-3.33.0}/tests/test_governance_report.py +0 -0
  657. {mapify_cli-3.31.4 → mapify_cli-3.33.0}/tests/test_grace_eval_schema.py +0 -0
  658. {mapify_cli-3.31.4 → mapify_cli-3.33.0}/tests/test_grace_eval_sweep.py +0 -0
  659. {mapify_cli-3.31.4 → mapify_cli-3.33.0}/tests/test_hook_patterns.py +0 -0
  660. {mapify_cli-3.31.4 → mapify_cli-3.33.0}/tests/test_init_import_graph.py +0 -0
  661. {mapify_cli-3.31.4 → mapify_cli-3.33.0}/tests/test_install_manifest.py +0 -0
  662. {mapify_cli-3.31.4 → mapify_cli-3.33.0}/tests/test_intent_detector.py +0 -0
  663. {mapify_cli-3.31.4 → mapify_cli-3.33.0}/tests/test_inv1_no_anthropic_optimize.py +0 -0
  664. {mapify_cli-3.31.4 → mapify_cli-3.33.0}/tests/test_jinja2_dep.py +0 -0
  665. {mapify_cli-3.31.4 → mapify_cli-3.33.0}/tests/test_locking.py +0 -0
  666. {mapify_cli-3.31.4 → mapify_cli-3.33.0}/tests/test_managed_file_copier.py +0 -0
  667. {mapify_cli-3.31.4 → mapify_cli-3.33.0}/tests/test_map_auto.py +0 -0
  668. {mapify_cli-3.31.4 → mapify_cli-3.33.0}/tests/test_map_token_meter.py +0 -0
  669. {mapify_cli-3.31.4 → mapify_cli-3.33.0}/tests/test_map_utils_sanitize.py +0 -0
  670. {mapify_cli-3.31.4 → mapify_cli-3.33.0}/tests/test_memory_capture.py +0 -0
  671. {mapify_cli-3.31.4 → mapify_cli-3.33.0}/tests/test_memory_finalize.py +0 -0
  672. {mapify_cli-3.31.4 → mapify_cli-3.33.0}/tests/test_memory_integration.py +0 -0
  673. {mapify_cli-3.31.4 → mapify_cli-3.33.0}/tests/test_memory_recall.py +0 -0
  674. {mapify_cli-3.31.4 → mapify_cli-3.33.0}/tests/test_memory_review_fixes.py +0 -0
  675. {mapify_cli-3.31.4 → mapify_cli-3.33.0}/tests/test_minimality_eval.py +0 -0
  676. {mapify_cli-3.31.4 → mapify_cli-3.33.0}/tests/test_minimality_report.py +0 -0
  677. {mapify_cli-3.31.4 → mapify_cli-3.33.0}/tests/test_parallelism_observability.py +0 -0
  678. {mapify_cli-3.31.4 → mapify_cli-3.33.0}/tests/test_post_compact_context.py +0 -0
  679. {mapify_cli-3.31.4 → mapify_cli-3.33.0}/tests/test_preset_commands.py +0 -0
  680. {mapify_cli-3.31.4 → mapify_cli-3.33.0}/tests/test_project_config.py +0 -0
  681. {mapify_cli-3.31.4 → mapify_cli-3.33.0}/tests/test_prompt_layering.py +0 -0
  682. {mapify_cli-3.31.4 → mapify_cli-3.33.0}/tests/test_prompt_profile_commands.py +0 -0
  683. {mapify_cli-3.31.4 → mapify_cli-3.33.0}/tests/test_pyyaml_dep.py +0 -0
  684. {mapify_cli-3.31.4 → mapify_cli-3.33.0}/tests/test_ralph_hooks.py +0 -0
  685. {mapify_cli-3.31.4 → mapify_cli-3.33.0}/tests/test_ralph_state.py +0 -0
  686. {mapify_cli-3.31.4 → mapify_cli-3.33.0}/tests/test_repo_insight.py +0 -0
  687. {mapify_cli-3.31.4 → mapify_cli-3.33.0}/tests/test_research_eval.py +0 -0
  688. {mapify_cli-3.31.4 → mapify_cli-3.33.0}/tests/test_research_eval_compare.py +0 -0
  689. {mapify_cli-3.31.4 → mapify_cli-3.33.0}/tests/test_schemas.py +0 -0
  690. {mapify_cli-3.31.4 → mapify_cli-3.33.0}/tests/test_scope_classifier.py +0 -0
  691. {mapify_cli-3.31.4 → mapify_cli-3.33.0}/tests/test_scrub_internal_ids.py +0 -0
  692. {mapify_cli-3.31.4 → mapify_cli-3.33.0}/tests/test_settings_deny_globs.py +0 -0
  693. {mapify_cli-3.31.4 → mapify_cli-3.33.0}/tests/test_skill_ir.py +0 -0
  694. {mapify_cli-3.31.4 → mapify_cli-3.33.0}/tests/test_skills_consistency.py +0 -0
  695. {mapify_cli-3.31.4 → mapify_cli-3.33.0}/tests/test_skills_eval_aggregator.py +0 -0
  696. {mapify_cli-3.31.4 → mapify_cli-3.33.0}/tests/test_skills_eval_cli_optimize.py +0 -0
  697. {mapify_cli-3.31.4 → mapify_cli-3.33.0}/tests/test_skills_eval_dispatcher_env.py +0 -0
  698. {mapify_cli-3.31.4 → mapify_cli-3.33.0}/tests/test_skills_eval_dispatcher_timeout.py +0 -0
  699. {mapify_cli-3.31.4 → mapify_cli-3.33.0}/tests/test_skills_eval_fixtures.py +0 -0
  700. {mapify_cli-3.31.4 → mapify_cli-3.33.0}/tests/test_skills_eval_optimizer.py +0 -0
  701. {mapify_cli-3.31.4 → mapify_cli-3.33.0}/tests/test_skills_eval_optimizer_isolation.py +0 -0
  702. {mapify_cli-3.31.4 → mapify_cli-3.33.0}/tests/test_skills_eval_proposer.py +0 -0
  703. {mapify_cli-3.31.4 → mapify_cli-3.33.0}/tests/test_skills_eval_schema.py +0 -0
  704. {mapify_cli-3.31.4 → mapify_cli-3.33.0}/tests/test_skills_eval_trajectory_bundle.py +0 -0
  705. {mapify_cli-3.31.4 → mapify_cli-3.33.0}/tests/test_skills_eval_trajectory_cli.py +0 -0
  706. {mapify_cli-3.31.4 → mapify_cli-3.33.0}/tests/test_skills_eval_trajectory_gates.py +0 -0
  707. {mapify_cli-3.31.4 → mapify_cli-3.33.0}/tests/test_skills_eval_trajectory_judge.py +0 -0
  708. {mapify_cli-3.31.4 → mapify_cli-3.33.0}/tests/test_skills_eval_trajectory_repeated.py +0 -0
  709. {mapify_cli-3.31.4 → mapify_cli-3.33.0}/tests/test_skills_eval_trajectory_report.py +0 -0
  710. {mapify_cli-3.31.4 → mapify_cli-3.33.0}/tests/test_skills_eval_trajectory_runner.py +0 -0
  711. {mapify_cli-3.31.4 → mapify_cli-3.33.0}/tests/test_skills_eval_trajectory_schema.py +0 -0
  712. {mapify_cli-3.31.4 → mapify_cli-3.33.0}/tests/test_skills_eval_viewer.py +0 -0
  713. {mapify_cli-3.31.4 → mapify_cli-3.33.0}/tests/test_slice5b_leak_guards.py +0 -0
  714. {mapify_cli-3.31.4 → mapify_cli-3.33.0}/tests/test_sofa_search.py +0 -0
  715. {mapify_cli-3.31.4 → mapify_cli-3.33.0}/tests/test_statusline.py +0 -0
  716. {mapify_cli-3.31.4 → mapify_cli-3.33.0}/tests/test_template_render.py +0 -0
  717. {mapify_cli-3.31.4 → mapify_cli-3.33.0}/tests/test_token_budget.py +0 -0
  718. {mapify_cli-3.31.4 → mapify_cli-3.33.0}/tests/test_tool_output_offload.py +0 -0
  719. {mapify_cli-3.31.4 → mapify_cli-3.33.0}/tests/test_update_install.py +0 -0
  720. {mapify_cli-3.31.4 → mapify_cli-3.33.0}/tests/test_update_versions.py +0 -0
  721. {mapify_cli-3.31.4 → mapify_cli-3.33.0}/tests/test_validate_spec_citations.py +0 -0
  722. {mapify_cli-3.31.4 → mapify_cli-3.33.0}/tests/test_verification_recorder.py +0 -0
  723. {mapify_cli-3.31.4 → mapify_cli-3.33.0}/tests/test_wave_eval_harness.py +0 -0
  724. {mapify_cli-3.31.4 → mapify_cli-3.33.0}/tests/test_wave_fixtures.py +0 -0
  725. {mapify_cli-3.31.4 → mapify_cli-3.33.0}/tests/test_wave_parallel_harness.py +0 -0
  726. {mapify_cli-3.31.4 → mapify_cli-3.33.0}/tests/test_workflow_context_injector.py +0 -0
  727. {mapify_cli-3.31.4 → mapify_cli-3.33.0}/tests/test_workflow_finalizer.py +0 -0
  728. {mapify_cli-3.31.4 → mapify_cli-3.33.0}/tests/test_workflow_gate.py +0 -0
  729. {mapify_cli-3.31.4 → mapify_cli-3.33.0}/tests/test_workflow_logger.py +0 -0
  730. {mapify_cli-3.31.4 → mapify_cli-3.33.0}/tests/test_workflow_state.py +0 -0
  731. {mapify_cli-3.31.4 → 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.31.4
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
@@ -134,7 +144,7 @@ That's the whole golden path.
134
144
  - **Starting from a PRD?** Run `/map-prd-review` directly, or accept `/map-plan`'s optional readiness preflight. A non-ready result shows the gaps and asks whether to revise or continue planning anyway.
135
145
  - **Already scoped?** Go straight to `/map-efficient`.
136
146
  - **Tiny edit?** `/map-plan` off-ramps you to a direct edit or `/map-fast` instead of forcing full planning.
137
- - **Too foggy to plan?** `/map-wayfind` resolves open design decisions one at a time on a durable map, then hands settled decisions to `/map-plan`.
147
+ - **Too foggy to plan?** `/map-wayfind` resolves open design decisions on a durable map. Evidence-first research is on by default: factual lookups stay light; uncertain decisions get independent investigations and targeted checks, with four attempts before asking to extend the budget. Research handoffs are checked before `/map-plan`; historical decisions retain explicit legacy provenance.
138
148
  - **Want one entry point?** `/map-auto` routes and drives the chain autonomously; hard-stops only on `dangerous_action`/`safety_guardrail` holds.
139
149
 
140
150
  > Codex CLI ships the same 23 MAP skill entry points and invokes them with `$`:
@@ -201,7 +211,7 @@ The DevOpsConf 2026 case study applies this process to a production Kubernetes P
201
211
  | `/map-debug` | Bug fixes and debugging |
202
212
  | `/map-task` | Execute a single subtask from an existing plan |
203
213
  | `/map-tdd` | Test-first implementation workflow |
204
- | `/map-release` | Package release workflow |
214
+ | `/map-release` | Package release workflow; Codex `$map-release` shares the same commit-bound CI gates |
205
215
  | `/map-resume` | Resume interrupted workflows |
206
216
 
207
217
  [Detailed usage and options →](docs/USAGE.md)
@@ -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
@@ -89,7 +99,7 @@ That's the whole golden path.
89
99
  - **Starting from a PRD?** Run `/map-prd-review` directly, or accept `/map-plan`'s optional readiness preflight. A non-ready result shows the gaps and asks whether to revise or continue planning anyway.
90
100
  - **Already scoped?** Go straight to `/map-efficient`.
91
101
  - **Tiny edit?** `/map-plan` off-ramps you to a direct edit or `/map-fast` instead of forcing full planning.
92
- - **Too foggy to plan?** `/map-wayfind` resolves open design decisions one at a time on a durable map, then hands settled decisions to `/map-plan`.
102
+ - **Too foggy to plan?** `/map-wayfind` resolves open design decisions on a durable map. Evidence-first research is on by default: factual lookups stay light; uncertain decisions get independent investigations and targeted checks, with four attempts before asking to extend the budget. Research handoffs are checked before `/map-plan`; historical decisions retain explicit legacy provenance.
93
103
  - **Want one entry point?** `/map-auto` routes and drives the chain autonomously; hard-stops only on `dangerous_action`/`safety_guardrail` holds.
94
104
 
95
105
  > Codex CLI ships the same 23 MAP skill entry points and invokes them with `$`:
@@ -156,7 +166,7 @@ The DevOpsConf 2026 case study applies this process to a production Kubernetes P
156
166
  | `/map-debug` | Bug fixes and debugging |
157
167
  | `/map-task` | Execute a single subtask from an existing plan |
158
168
  | `/map-tdd` | Test-first implementation workflow |
159
- | `/map-release` | Package release workflow |
169
+ | `/map-release` | Package release workflow; Codex `$map-release` shares the same commit-bound CI gates |
160
170
  | `/map-resume` | Resume interrupted workflows |
161
171
 
162
172
  [Detailed usage and options →](docs/USAGE.md)
@@ -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.31.4"
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.31.4"
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
@@ -36,13 +36,13 @@ import sys
36
36
  # evaluated annotations) fails with a message that never mentions the version.
37
37
  # Name the real cause instead. Kept in sync with
38
38
  # mapify_cli/python_runtime.MINIMUM_PYTHON.
39
- # UP036 is suppressed on purpose: the project targets 3.11, but the interpreter
40
- # executing this shipped file is the user's `python3`, not the project's.
39
+ # Compare the runtime tuple: the executing interpreter is the user's `python3`,
40
+ # not necessarily the Python version targeted by the project's static checker.
41
41
  #
42
42
  # FAIL-OPEN mode. Exit 1 is a non-blocking hook error for Claude Code (only
43
43
  # exit 2, or a JSON deny, blocks a tool call), so the reason reaches the user
44
44
  # and the session continues -- a broken interpreter is not a policy decision.
45
- if sys.version_info < (3, 11): # noqa: UP036
45
+ if tuple(sys.version_info) < (3, 11):
46
46
  _MAP_PYTHON_PROBLEM = (
47
47
  f"MAP requires Python 3.11 or newer, but {sys.executable} is "
48
48
  f"Python {sys.version_info[0]}.{sys.version_info[1]}.\n"
@@ -37,13 +37,13 @@ import sys
37
37
  # evaluated annotations) fails with a message that never mentions the version.
38
38
  # Name the real cause instead. Kept in sync with
39
39
  # mapify_cli/python_runtime.MINIMUM_PYTHON.
40
- # UP036 is suppressed on purpose: the project targets 3.11, but the interpreter
41
- # executing this shipped file is the user's `python3`, not the project's.
40
+ # Compare the runtime tuple: the executing interpreter is the user's `python3`,
41
+ # not necessarily the Python version targeted by the project's static checker.
42
42
  #
43
43
  # FAIL-OPEN mode. Exit 1 is a non-blocking hook error for Claude Code (only
44
44
  # exit 2, or a JSON deny, blocks a tool call), so the reason reaches the user
45
45
  # and the session continues -- a broken interpreter is not a policy decision.
46
- if sys.version_info < (3, 11): # noqa: UP036
46
+ if tuple(sys.version_info) < (3, 11):
47
47
  _MAP_PYTHON_PROBLEM = (
48
48
  f"MAP requires Python 3.11 or newer, but {sys.executable} is "
49
49
  f"Python {sys.version_info[0]}.{sys.version_info[1]}.\n"
@@ -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)"
@@ -10,13 +10,13 @@ import sys
10
10
  # evaluated annotations) fails with a message that never mentions the version.
11
11
  # Name the real cause instead. Kept in sync with
12
12
  # mapify_cli/python_runtime.MINIMUM_PYTHON.
13
- # UP036 is suppressed on purpose: the project targets 3.11, but the interpreter
14
- # executing this shipped file is the user's `python3`, not the project's.
13
+ # Compare the runtime tuple: the executing interpreter is the user's `python3`,
14
+ # not necessarily the Python version targeted by the project's static checker.
15
15
  #
16
16
  # FAIL-OPEN mode. Exit 1 is a non-blocking hook error for Claude Code (only
17
17
  # exit 2, or a JSON deny, blocks a tool call), so the reason reaches the user
18
18
  # and the session continues -- a broken interpreter is not a policy decision.
19
- if sys.version_info < (3, 11): # noqa: UP036
19
+ if tuple(sys.version_info) < (3, 11):
20
20
  _MAP_PYTHON_PROBLEM = (
21
21
  f"MAP requires Python 3.11 or newer, but {sys.executable} is "
22
22
  f"Python {sys.version_info[0]}.{sys.version_info[1]}.\n"