mapify-cli 3.34.2__tar.gz → 3.35.1__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 (747) hide show
  1. {mapify_cli-3.34.2 → mapify_cli-3.35.1}/PKG-INFO +23 -4
  2. {mapify_cli-3.34.2 → mapify_cli-3.35.1}/README.md +22 -3
  3. {mapify_cli-3.34.2 → mapify_cli-3.35.1}/pyproject.toml +3 -1
  4. {mapify_cli-3.34.2 → mapify_cli-3.35.1}/src/mapify_cli/__init__.py +6 -5
  5. {mapify_cli-3.34.2 → mapify_cli-3.35.1}/src/mapify_cli/delivery/file_copier.py +48 -0
  6. {mapify_cli-3.34.2 → mapify_cli-3.35.1}/src/mapify_cli/memory/capture.py +2 -1
  7. {mapify_cli-3.34.2 → mapify_cli-3.35.1}/src/mapify_cli/ralph_state.py +2 -1
  8. {mapify_cli-3.34.2 → mapify_cli-3.35.1}/src/mapify_cli/schemas.py +8 -0
  9. {mapify_cli-3.34.2 → mapify_cli-3.35.1}/src/mapify_cli/templates/agents/actor.md +27 -0
  10. {mapify_cli-3.34.2 → mapify_cli-3.35.1}/src/mapify_cli/templates/agents/evaluator.md +26 -0
  11. {mapify_cli-3.34.2 → mapify_cli-3.35.1}/src/mapify_cli/templates/agents/monitor.md +51 -0
  12. {mapify_cli-3.34.2 → mapify_cli-3.35.1}/src/mapify_cli/templates/agents/review-reader.md +10 -1
  13. {mapify_cli-3.34.2 → mapify_cli-3.35.1}/src/mapify_cli/templates/codex/agents/actor.toml +26 -0
  14. {mapify_cli-3.34.2 → mapify_cli-3.35.1}/src/mapify_cli/templates/codex/agents/evaluator.toml +25 -0
  15. {mapify_cli-3.34.2 → mapify_cli-3.35.1}/src/mapify_cli/templates/codex/agents/monitor.toml +49 -0
  16. {mapify_cli-3.34.2 → mapify_cli-3.35.1}/src/mapify_cli/templates/codex/agents/review-reader.toml +13 -1
  17. {mapify_cli-3.34.2/src/mapify_cli/templates → mapify_cli-3.35.1/src/mapify_cli/templates/codex}/hooks/context-meter.py +21 -9
  18. {mapify_cli-3.34.2/src/mapify_cli/templates → mapify_cli-3.35.1/src/mapify_cli/templates/codex}/hooks/map-token-meter.py +21 -9
  19. {mapify_cli-3.34.2/src/mapify_cli/templates → mapify_cli-3.35.1/src/mapify_cli/templates/codex}/hooks/post-compact-context.py +20 -9
  20. {mapify_cli-3.34.2/src/mapify_cli/templates → mapify_cli-3.35.1/src/mapify_cli/templates/codex}/hooks/pre-compact-save-transcript.py +20 -9
  21. {mapify_cli-3.34.2/src/mapify_cli/templates → mapify_cli-3.35.1/src/mapify_cli/templates/codex}/hooks/ralph-context-pruner.py +20 -9
  22. {mapify_cli-3.34.2/src/mapify_cli/templates → mapify_cli-3.35.1/src/mapify_cli/templates/codex}/hooks/ralph-iteration-logger.py +23 -11
  23. {mapify_cli-3.34.2/src/mapify_cli/templates → mapify_cli-3.35.1/src/mapify_cli/templates/codex}/hooks/scrub-internal-ids.py +19 -7
  24. {mapify_cli-3.34.2/src/mapify_cli/templates → mapify_cli-3.35.1/src/mapify_cli/templates/codex}/hooks/workflow-context-injector.py +20 -9
  25. {mapify_cli-3.34.2 → mapify_cli-3.35.1}/src/mapify_cli/templates/codex/hooks/workflow-gate.py +19 -9
  26. {mapify_cli-3.34.2 → mapify_cli-3.35.1}/src/mapify_cli/templates/codex/skills/map-architecture/SKILL.md +2 -2
  27. {mapify_cli-3.34.2 → mapify_cli-3.35.1}/src/mapify_cli/templates/codex/skills/map-check/SKILL.md +2 -2
  28. {mapify_cli-3.34.2 → mapify_cli-3.35.1}/src/mapify_cli/templates/codex/skills/map-efficient/SKILL.md +15 -5
  29. {mapify_cli-3.34.2 → mapify_cli-3.35.1}/src/mapify_cli/templates/codex/skills/map-efficient/efficient-reference.md +41 -11
  30. {mapify_cli-3.34.2 → mapify_cli-3.35.1}/src/mapify_cli/templates/codex/skills/map-explain/SKILL.md +1 -1
  31. {mapify_cli-3.34.2 → mapify_cli-3.35.1}/src/mapify_cli/templates/codex/skills/map-plan/SKILL.md +7 -7
  32. {mapify_cli-3.34.2 → mapify_cli-3.35.1}/src/mapify_cli/templates/codex/skills/map-release/release-reference.md +16 -7
  33. {mapify_cli-3.34.2 → mapify_cli-3.35.1}/src/mapify_cli/templates/codex/skills/map-resume/SKILL.md +3 -3
  34. {mapify_cli-3.34.2 → mapify_cli-3.35.1}/src/mapify_cli/templates/codex/skills/map-review/SKILL.md +45 -131
  35. mapify_cli-3.35.1/src/mapify_cli/templates/codex/skills/map-review/adversarial-reference.md +110 -0
  36. {mapify_cli-3.34.2 → mapify_cli-3.35.1}/src/mapify_cli/templates/codex/skills/map-review/review-reference.md +117 -5
  37. {mapify_cli-3.34.2 → mapify_cli-3.35.1}/src/mapify_cli/templates/codex/skills/map-state/scripts/get-plan-path.sh +5 -17
  38. {mapify_cli-3.34.2 → mapify_cli-3.35.1}/src/mapify_cli/templates/codex/skills/map-state/scripts/init-session.sh +3 -12
  39. {mapify_cli-3.34.2 → mapify_cli-3.35.1}/src/mapify_cli/templates/codex/skills/map-task/SKILL.md +2 -2
  40. {mapify_cli-3.34.2 → mapify_cli-3.35.1}/src/mapify_cli/templates/codex/skills/map-tdd/SKILL.md +5 -4
  41. {mapify_cli-3.34.2 → mapify_cli-3.35.1}/src/mapify_cli/templates/codex/skills/map-tokenreport/SKILL.md +1 -1
  42. {mapify_cli-3.34.2 → mapify_cli-3.35.1}/src/mapify_cli/templates/codex/skills/map-wayfind/wayfind-reference.md +9 -2
  43. {mapify_cli-3.34.2/src/mapify_cli/templates/codex → mapify_cli-3.35.1/src/mapify_cli/templates}/hooks/context-meter.py +20 -10
  44. {mapify_cli-3.34.2 → mapify_cli-3.35.1}/src/mapify_cli/templates/hooks/map-statusline.py +2 -1
  45. {mapify_cli-3.34.2/src/mapify_cli/templates/codex → mapify_cli-3.35.1/src/mapify_cli/templates}/hooks/map-token-meter.py +20 -10
  46. {mapify_cli-3.34.2/src/mapify_cli/templates/codex → mapify_cli-3.35.1/src/mapify_cli/templates}/hooks/post-compact-context.py +19 -10
  47. {mapify_cli-3.34.2/src/mapify_cli/templates/codex → mapify_cli-3.35.1/src/mapify_cli/templates}/hooks/pre-compact-save-transcript.py +19 -10
  48. {mapify_cli-3.34.2/src/mapify_cli/templates/codex → mapify_cli-3.35.1/src/mapify_cli/templates}/hooks/ralph-context-pruner.py +19 -10
  49. {mapify_cli-3.34.2/src/mapify_cli/templates/codex → mapify_cli-3.35.1/src/mapify_cli/templates}/hooks/ralph-iteration-logger.py +22 -12
  50. {mapify_cli-3.34.2/src/mapify_cli/templates/codex → mapify_cli-3.35.1/src/mapify_cli/templates}/hooks/scrub-internal-ids.py +18 -8
  51. {mapify_cli-3.34.2/src/mapify_cli/templates/codex → mapify_cli-3.35.1/src/mapify_cli/templates}/hooks/workflow-context-injector.py +19 -10
  52. {mapify_cli-3.34.2 → mapify_cli-3.35.1}/src/mapify_cli/templates/hooks/workflow-gate.py +19 -9
  53. mapify_cli-3.35.1/src/mapify_cli/templates/map/scripts/codex_review_host.py +381 -0
  54. mapify_cli-3.35.1/src/mapify_cli/templates/map/scripts/codex_review_runner.py +335 -0
  55. {mapify_cli-3.34.2 → mapify_cli-3.35.1}/src/mapify_cli/templates/map/scripts/diagnostics.py +20 -8
  56. {mapify_cli-3.34.2 → mapify_cli-3.35.1}/src/mapify_cli/templates/map/scripts/map_step_runner.py +1602 -243
  57. {mapify_cli-3.34.2 → mapify_cli-3.35.1}/src/mapify_cli/templates/map/scripts/map_utils.py +37 -15
  58. {mapify_cli-3.34.2 → mapify_cli-3.35.1}/src/mapify_cli/templates/map/scripts/scrub_internal_ids.py +110 -74
  59. {mapify_cli-3.34.2 → mapify_cli-3.35.1}/src/mapify_cli/templates/map/scripts/sofa_client.py +46 -0
  60. {mapify_cli-3.34.2 → mapify_cli-3.35.1}/src/mapify_cli/templates/map/scripts/validate_spec_citations.py +17 -6
  61. {mapify_cli-3.34.2 → mapify_cli-3.35.1}/src/mapify_cli/templates/map/scripts/wayfind_runner.py +6 -3
  62. {mapify_cli-3.34.2 → mapify_cli-3.35.1}/src/mapify_cli/templates/skills/map-architecture/SKILL.md +2 -2
  63. {mapify_cli-3.34.2 → mapify_cli-3.35.1}/src/mapify_cli/templates/skills/map-check/SKILL.md +2 -2
  64. {mapify_cli-3.34.2 → mapify_cli-3.35.1}/src/mapify_cli/templates/skills/map-efficient/SKILL.md +5 -4
  65. {mapify_cli-3.34.2 → mapify_cli-3.35.1}/src/mapify_cli/templates/skills/map-efficient/efficient-reference.md +51 -10
  66. {mapify_cli-3.34.2 → mapify_cli-3.35.1}/src/mapify_cli/templates/skills/map-explain/SKILL.md +1 -1
  67. {mapify_cli-3.34.2 → mapify_cli-3.35.1}/src/mapify_cli/templates/skills/map-plan/SKILL.md +1 -1
  68. {mapify_cli-3.34.2 → mapify_cli-3.35.1}/src/mapify_cli/templates/skills/map-release/release-reference.md +16 -7
  69. {mapify_cli-3.34.2 → mapify_cli-3.35.1}/src/mapify_cli/templates/skills/map-resume/SKILL.md +3 -3
  70. {mapify_cli-3.34.2 → mapify_cli-3.35.1}/src/mapify_cli/templates/skills/map-review/SKILL.md +16 -16
  71. {mapify_cli-3.34.2 → mapify_cli-3.35.1}/src/mapify_cli/templates/skills/map-review/adversarial-reference.md +10 -4
  72. {mapify_cli-3.34.2 → mapify_cli-3.35.1}/src/mapify_cli/templates/skills/map-review/review-reference.md +105 -5
  73. {mapify_cli-3.34.2 → mapify_cli-3.35.1}/src/mapify_cli/templates/skills/map-state/scripts/get-plan-path.sh +5 -17
  74. {mapify_cli-3.34.2 → mapify_cli-3.35.1}/src/mapify_cli/templates/skills/map-state/scripts/init-session.sh +3 -12
  75. {mapify_cli-3.34.2 → mapify_cli-3.35.1}/src/mapify_cli/templates/skills/map-task/SKILL.md +2 -2
  76. {mapify_cli-3.34.2 → mapify_cli-3.35.1}/src/mapify_cli/templates/skills/map-tdd/SKILL.md +5 -4
  77. {mapify_cli-3.34.2 → mapify_cli-3.35.1}/src/mapify_cli/templates/skills/map-tokenreport/SKILL.md +1 -1
  78. {mapify_cli-3.34.2 → mapify_cli-3.35.1}/src/mapify_cli/templates/skills/map-wayfind/wayfind-reference.md +9 -2
  79. {mapify_cli-3.34.2 → mapify_cli-3.35.1}/src/mapify_cli/templates/skills/skill-rules.json +1 -1
  80. {mapify_cli-3.34.2 → mapify_cli-3.35.1}/src/mapify_cli/templates_src/_partials/monitor-review-context.md.jinja +20 -0
  81. mapify_cli-3.35.1/src/mapify_cli/templates_src/_partials/vacuous-test-check.md.jinja +21 -0
  82. {mapify_cli-3.34.2 → mapify_cli-3.35.1}/src/mapify_cli/templates_src/agents/actor.md.jinja +6 -0
  83. {mapify_cli-3.34.2 → mapify_cli-3.35.1}/src/mapify_cli/templates_src/agents/evaluator.md.jinja +5 -0
  84. {mapify_cli-3.34.2 → mapify_cli-3.35.1}/src/mapify_cli/templates_src/agents/monitor.md.jinja +10 -0
  85. {mapify_cli-3.34.2 → mapify_cli-3.35.1}/src/mapify_cli/templates_src/agents/review-reader.md.jinja +10 -1
  86. {mapify_cli-3.34.2 → mapify_cli-3.35.1}/src/mapify_cli/templates_src/codex/agents/actor.toml.jinja +5 -0
  87. {mapify_cli-3.34.2 → mapify_cli-3.35.1}/src/mapify_cli/templates_src/codex/agents/evaluator.toml.jinja +4 -0
  88. {mapify_cli-3.34.2 → mapify_cli-3.35.1}/src/mapify_cli/templates_src/codex/agents/monitor.toml.jinja +8 -0
  89. {mapify_cli-3.34.2 → mapify_cli-3.35.1}/src/mapify_cli/templates_src/codex/agents/review-reader.toml.jinja +13 -1
  90. {mapify_cli-3.34.2 → mapify_cli-3.35.1}/src/mapify_cli/templates_src/codex/hooks/workflow-gate.py.jinja +19 -9
  91. {mapify_cli-3.34.2 → mapify_cli-3.35.1}/src/mapify_cli/templates_src/hooks/context-meter.py.jinja +20 -9
  92. {mapify_cli-3.34.2 → mapify_cli-3.35.1}/src/mapify_cli/templates_src/hooks/map-statusline.py.jinja +2 -1
  93. {mapify_cli-3.34.2 → mapify_cli-3.35.1}/src/mapify_cli/templates_src/hooks/map-token-meter.py.jinja +20 -9
  94. {mapify_cli-3.34.2 → mapify_cli-3.35.1}/src/mapify_cli/templates_src/hooks/post-compact-context.py.jinja +19 -9
  95. {mapify_cli-3.34.2 → mapify_cli-3.35.1}/src/mapify_cli/templates_src/hooks/pre-compact-save-transcript.py.jinja +19 -9
  96. {mapify_cli-3.34.2 → mapify_cli-3.35.1}/src/mapify_cli/templates_src/hooks/ralph-context-pruner.py.jinja +19 -9
  97. {mapify_cli-3.34.2 → mapify_cli-3.35.1}/src/mapify_cli/templates_src/hooks/ralph-iteration-logger.py.jinja +22 -11
  98. {mapify_cli-3.34.2 → mapify_cli-3.35.1}/src/mapify_cli/templates_src/hooks/scrub-internal-ids.py.jinja +18 -7
  99. {mapify_cli-3.34.2 → mapify_cli-3.35.1}/src/mapify_cli/templates_src/hooks/workflow-context-injector.py.jinja +19 -9
  100. {mapify_cli-3.34.2 → mapify_cli-3.35.1}/src/mapify_cli/templates_src/hooks/workflow-gate.py.jinja +19 -9
  101. mapify_cli-3.35.1/src/mapify_cli/templates_src/map/scripts/codex_review_host.py.jinja +381 -0
  102. mapify_cli-3.35.1/src/mapify_cli/templates_src/map/scripts/codex_review_runner.py.jinja +313 -0
  103. {mapify_cli-3.34.2 → mapify_cli-3.35.1}/src/mapify_cli/templates_src/map/scripts/diagnostics.py.jinja +20 -8
  104. {mapify_cli-3.34.2 → mapify_cli-3.35.1}/src/mapify_cli/templates_src/map/scripts/map_step_runner.py.jinja +1602 -243
  105. {mapify_cli-3.34.2 → mapify_cli-3.35.1}/src/mapify_cli/templates_src/map/scripts/map_utils.py.jinja +37 -15
  106. {mapify_cli-3.34.2 → mapify_cli-3.35.1}/src/mapify_cli/templates_src/map/scripts/scrub_internal_ids.py.jinja +110 -74
  107. {mapify_cli-3.34.2 → mapify_cli-3.35.1}/src/mapify_cli/templates_src/map/scripts/sofa_client.py.jinja +46 -0
  108. {mapify_cli-3.34.2 → mapify_cli-3.35.1}/src/mapify_cli/templates_src/map/scripts/validate_spec_citations.py.jinja +17 -6
  109. {mapify_cli-3.34.2 → mapify_cli-3.35.1}/src/mapify_cli/templates_src/map/scripts/wayfind_runner.py.jinja +6 -3
  110. {mapify_cli-3.34.2 → mapify_cli-3.35.1}/src/mapify_cli/templates_src/skills/map-architecture/SKILL.md.jinja +2 -2
  111. {mapify_cli-3.34.2 → mapify_cli-3.35.1}/src/mapify_cli/templates_src/skills/map-check/SKILL.md.jinja +2 -2
  112. {mapify_cli-3.34.2 → mapify_cli-3.35.1}/src/mapify_cli/templates_src/skills/map-efficient/SKILL.md.jinja +19 -8
  113. {mapify_cli-3.34.2 → mapify_cli-3.35.1}/src/mapify_cli/templates_src/skills/map-efficient/efficient-reference.md.jinja +65 -21
  114. {mapify_cli-3.34.2 → mapify_cli-3.35.1}/src/mapify_cli/templates_src/skills/map-explain/SKILL.md.jinja +2 -2
  115. {mapify_cli-3.34.2 → mapify_cli-3.35.1}/src/mapify_cli/templates_src/skills/map-plan/SKILL.md.jinja +8 -8
  116. {mapify_cli-3.34.2 → mapify_cli-3.35.1}/src/mapify_cli/templates_src/skills/map-release/release-reference.md.jinja +16 -7
  117. {mapify_cli-3.34.2 → mapify_cli-3.35.1}/src/mapify_cli/templates_src/skills/map-resume/SKILL.md.jinja +3 -3
  118. {mapify_cli-3.34.2 → mapify_cli-3.35.1}/src/mapify_cli/templates_src/skills/map-review/SKILL.md.jinja +76 -26
  119. {mapify_cli-3.34.2 → mapify_cli-3.35.1}/src/mapify_cli/templates_src/skills/map-review/adversarial-reference.md.jinja +35 -5
  120. {mapify_cli-3.34.2 → mapify_cli-3.35.1}/src/mapify_cli/templates_src/skills/map-review/review-reference.md.jinja +125 -5
  121. mapify_cli-3.35.1/src/mapify_cli/templates_src/skills/map-state/scripts/get-plan-path.sh.jinja +29 -0
  122. {mapify_cli-3.34.2 → mapify_cli-3.35.1}/src/mapify_cli/templates_src/skills/map-state/scripts/init-session.sh.jinja +3 -13
  123. {mapify_cli-3.34.2 → mapify_cli-3.35.1}/src/mapify_cli/templates_src/skills/map-task/SKILL.md.jinja +2 -2
  124. {mapify_cli-3.34.2 → mapify_cli-3.35.1}/src/mapify_cli/templates_src/skills/map-tdd/SKILL.md.jinja +5 -4
  125. {mapify_cli-3.34.2 → mapify_cli-3.35.1}/src/mapify_cli/templates_src/skills/map-tokenreport/SKILL.md.jinja +1 -1
  126. {mapify_cli-3.34.2 → mapify_cli-3.35.1}/src/mapify_cli/templates_src/skills/map-wayfind/wayfind-reference.md.jinja +9 -2
  127. {mapify_cli-3.34.2 → mapify_cli-3.35.1}/src/mapify_cli/templates_src/skills/skill-rules.json.jinja +1 -1
  128. {mapify_cli-3.34.2 → mapify_cli-3.35.1}/src/mapify_cli/verification_recorder.py +2 -1
  129. {mapify_cli-3.34.2 → mapify_cli-3.35.1}/tests/hooks/test_scrub_internal_ids_hook.py +57 -9
  130. mapify_cli-3.35.1/tests/review_context_helpers.py +29 -0
  131. {mapify_cli-3.34.2 → mapify_cli-3.35.1}/tests/test_agent_dispatch_audit.py +4 -3
  132. {mapify_cli-3.34.2 → mapify_cli-3.35.1}/tests/test_codex_map_review_live.py +68 -50
  133. mapify_cli-3.35.1/tests/test_codex_review_host.py +337 -0
  134. mapify_cli-3.35.1/tests/test_codex_review_native.py +90 -0
  135. {mapify_cli-3.34.2 → mapify_cli-3.35.1}/tests/test_map_step_runner.py +175 -57
  136. {mapify_cli-3.34.2 → mapify_cli-3.35.1}/tests/test_map_utils_sanitize.py +1 -1
  137. {mapify_cli-3.34.2 → mapify_cli-3.35.1}/tests/test_mapify_cli.py +2 -0
  138. mapify_cli-3.35.1/tests/test_monitor_worktree_context.py +249 -0
  139. {mapify_cli-3.34.2 → mapify_cli-3.35.1}/tests/test_post_compact_context.py +8 -3
  140. mapify_cli-3.35.1/tests/test_ralph_response_types.py +72 -0
  141. {mapify_cli-3.34.2 → mapify_cli-3.35.1}/tests/test_ralph_state.py +1 -1
  142. {mapify_cli-3.34.2 → mapify_cli-3.35.1}/tests/test_release_ci_gates.py +36 -1
  143. {mapify_cli-3.34.2 → mapify_cli-3.35.1}/tests/test_review_attribution_receipts.py +3 -2
  144. mapify_cli-3.35.1/tests/test_review_changed_scope.py +251 -0
  145. mapify_cli-3.35.1/tests/test_review_context_delivery.py +323 -0
  146. mapify_cli-3.35.1/tests/test_review_context_transport.py +359 -0
  147. {mapify_cli-3.34.2 → mapify_cli-3.35.1}/tests/test_review_explicit_base.py +10 -4
  148. {mapify_cli-3.34.2 → mapify_cli-3.35.1}/tests/test_review_explicit_base_stale_readers.py +15 -3
  149. {mapify_cli-3.34.2 → mapify_cli-3.35.1}/tests/test_review_finding_validation.py +11 -4
  150. mapify_cli-3.35.1/tests/test_review_pending_collection.py +148 -0
  151. {mapify_cli-3.34.2 → mapify_cli-3.35.1}/tests/test_review_reader_capabilities.py +9 -2
  152. {mapify_cli-3.34.2 → mapify_cli-3.35.1}/tests/test_review_receipt_edge_cases.py +19 -5
  153. {mapify_cli-3.34.2 → mapify_cli-3.35.1}/tests/test_review_security_gates.py +138 -12
  154. {mapify_cli-3.34.2 → mapify_cli-3.35.1}/tests/test_review_trusted_policy.py +9 -4
  155. {mapify_cli-3.34.2 → mapify_cli-3.35.1}/tests/test_review_verdict_ledger.py +136 -33
  156. mapify_cli-3.35.1/tests/test_role_coverage_receipts.py +271 -0
  157. mapify_cli-3.35.1/tests/test_runtime_privacy_ignores.py +101 -0
  158. {mapify_cli-3.34.2 → mapify_cli-3.35.1}/tests/test_scrub_internal_ids.py +111 -0
  159. {mapify_cli-3.34.2 → mapify_cli-3.35.1}/tests/test_skills.py +29 -46
  160. mapify_cli-3.35.1/tests/test_unborn_branch_scope.py +295 -0
  161. mapify_cli-3.35.1/tests/test_vacuous_test_check.py +179 -0
  162. {mapify_cli-3.34.2 → mapify_cli-3.35.1}/tests/test_validate_spec_citations.py +4 -1
  163. mapify_cli-3.35.1/tests/test_wave_abort_preservation.py +619 -0
  164. {mapify_cli-3.34.2 → mapify_cli-3.35.1}/tests/test_wayfind_research.py +79 -0
  165. {mapify_cli-3.34.2 → mapify_cli-3.35.1}/tests/test_workflow_context_injector.py +27 -22
  166. mapify_cli-3.35.1/tests/test_worktree_commit_hooks.py +540 -0
  167. mapify_cli-3.34.2/src/mapify_cli/templates/codex/skills/map-review/adversarial-reference.md +0 -186
  168. mapify_cli-3.34.2/src/mapify_cli/templates_src/skills/map-state/scripts/get-plan-path.sh.jinja +0 -42
  169. {mapify_cli-3.34.2 → mapify_cli-3.35.1}/.claude/hooks/README.md +0 -0
  170. {mapify_cli-3.34.2 → mapify_cli-3.35.1}/.claude/skills/README.md +0 -0
  171. {mapify_cli-3.34.2 → mapify_cli-3.35.1}/.gitignore +0 -0
  172. {mapify_cli-3.34.2 → mapify_cli-3.35.1}/LICENSE +0 -0
  173. {mapify_cli-3.34.2 → mapify_cli-3.35.1}/src/mapify_cli/__main__.py +0 -0
  174. {mapify_cli-3.34.2 → mapify_cli-3.35.1}/src/mapify_cli/_locking.py +0 -0
  175. {mapify_cli-3.34.2 → mapify_cli-3.35.1}/src/mapify_cli/_python_guard.py +0 -0
  176. {mapify_cli-3.34.2 → mapify_cli-3.35.1}/src/mapify_cli/auto_update.py +0 -0
  177. {mapify_cli-3.34.2 → mapify_cli-3.35.1}/src/mapify_cli/boundary_quality_report.py +0 -0
  178. {mapify_cli-3.34.2 → mapify_cli-3.35.1}/src/mapify_cli/cli_ui.py +0 -0
  179. {mapify_cli-3.34.2 → mapify_cli-3.35.1}/src/mapify_cli/code_map.py +0 -0
  180. {mapify_cli-3.34.2 → mapify_cli-3.35.1}/src/mapify_cli/codex_exec.py +0 -0
  181. {mapify_cli-3.34.2 → mapify_cli-3.35.1}/src/mapify_cli/config/__init__.py +0 -0
  182. {mapify_cli-3.34.2 → mapify_cli-3.35.1}/src/mapify_cli/config/mcp.py +0 -0
  183. {mapify_cli-3.34.2 → mapify_cli-3.35.1}/src/mapify_cli/config/project_config.py +0 -0
  184. {mapify_cli-3.34.2 → mapify_cli-3.35.1}/src/mapify_cli/config/settings.py +0 -0
  185. {mapify_cli-3.34.2 → mapify_cli-3.35.1}/src/mapify_cli/delivery/__init__.py +0 -0
  186. {mapify_cli-3.34.2 → mapify_cli-3.35.1}/src/mapify_cli/delivery/agent_generator.py +0 -0
  187. {mapify_cli-3.34.2 → mapify_cli-3.35.1}/src/mapify_cli/delivery/codex_copier.py +0 -0
  188. {mapify_cli-3.34.2 → mapify_cli-3.35.1}/src/mapify_cli/delivery/domain_skill.py +0 -0
  189. {mapify_cli-3.34.2 → mapify_cli-3.35.1}/src/mapify_cli/delivery/governance_report.py +0 -0
  190. {mapify_cli-3.34.2 → mapify_cli-3.35.1}/src/mapify_cli/delivery/managed_file_copier.py +0 -0
  191. {mapify_cli-3.34.2 → mapify_cli-3.35.1}/src/mapify_cli/delivery/providers.py +0 -0
  192. {mapify_cli-3.34.2 → mapify_cli-3.35.1}/src/mapify_cli/delivery/template_renderer.py +0 -0
  193. {mapify_cli-3.34.2 → mapify_cli-3.35.1}/src/mapify_cli/dependency_graph.py +0 -0
  194. {mapify_cli-3.34.2 → mapify_cli-3.35.1}/src/mapify_cli/grace_eval/__init__.py +0 -0
  195. {mapify_cli-3.34.2 → mapify_cli-3.35.1}/src/mapify_cli/grace_eval/schema.py +0 -0
  196. {mapify_cli-3.34.2 → mapify_cli-3.35.1}/src/mapify_cli/grace_eval/sweep.py +0 -0
  197. {mapify_cli-3.34.2 → mapify_cli-3.35.1}/src/mapify_cli/install_manifest.py +0 -0
  198. {mapify_cli-3.34.2 → mapify_cli-3.35.1}/src/mapify_cli/intent_detector.py +0 -0
  199. {mapify_cli-3.34.2 → mapify_cli-3.35.1}/src/mapify_cli/memory/__init__.py +0 -0
  200. {mapify_cli-3.34.2 → mapify_cli-3.35.1}/src/mapify_cli/memory/digest_schema.py +0 -0
  201. {mapify_cli-3.34.2 → mapify_cli-3.35.1}/src/mapify_cli/memory/evidence.py +0 -0
  202. {mapify_cli-3.34.2 → mapify_cli-3.35.1}/src/mapify_cli/memory/finalize.py +0 -0
  203. {mapify_cli-3.34.2 → mapify_cli-3.35.1}/src/mapify_cli/memory/recall.py +0 -0
  204. {mapify_cli-3.34.2 → mapify_cli-3.35.1}/src/mapify_cli/minimality_eval.py +0 -0
  205. {mapify_cli-3.34.2 → mapify_cli-3.35.1}/src/mapify_cli/minimality_report.py +0 -0
  206. {mapify_cli-3.34.2 → mapify_cli-3.35.1}/src/mapify_cli/parallelism_observability.py +0 -0
  207. {mapify_cli-3.34.2 → mapify_cli-3.35.1}/src/mapify_cli/provider_registry.py +0 -0
  208. {mapify_cli-3.34.2 → mapify_cli-3.35.1}/src/mapify_cli/python_runtime.py +0 -0
  209. {mapify_cli-3.34.2 → mapify_cli-3.35.1}/src/mapify_cli/repo_insight.py +0 -0
  210. {mapify_cli-3.34.2 → mapify_cli-3.35.1}/src/mapify_cli/research_eval.py +0 -0
  211. {mapify_cli-3.34.2 → mapify_cli-3.35.1}/src/mapify_cli/research_eval_compare.py +0 -0
  212. {mapify_cli-3.34.2 → mapify_cli-3.35.1}/src/mapify_cli/scope_classifier.py +0 -0
  213. {mapify_cli-3.34.2 → mapify_cli-3.35.1}/src/mapify_cli/skill_ir.py +0 -0
  214. {mapify_cli-3.34.2 → mapify_cli-3.35.1}/src/mapify_cli/skills_eval/__init__.py +0 -0
  215. {mapify_cli-3.34.2 → mapify_cli-3.35.1}/src/mapify_cli/skills_eval/aggregator.py +0 -0
  216. {mapify_cli-3.34.2 → mapify_cli-3.35.1}/src/mapify_cli/skills_eval/apply_patcher.py +0 -0
  217. {mapify_cli-3.34.2 → mapify_cli-3.35.1}/src/mapify_cli/skills_eval/assertions.py +0 -0
  218. {mapify_cli-3.34.2 → mapify_cli-3.35.1}/src/mapify_cli/skills_eval/description_optimizer.py +0 -0
  219. {mapify_cli-3.34.2 → mapify_cli-3.35.1}/src/mapify_cli/skills_eval/dispatcher.py +0 -0
  220. {mapify_cli-3.34.2 → mapify_cli-3.35.1}/src/mapify_cli/skills_eval/eval_schema.py +0 -0
  221. {mapify_cli-3.34.2 → mapify_cli-3.35.1}/src/mapify_cli/skills_eval/proposer.py +0 -0
  222. {mapify_cli-3.34.2 → mapify_cli-3.35.1}/src/mapify_cli/skills_eval/review_corpus.py +0 -0
  223. {mapify_cli-3.34.2 → mapify_cli-3.35.1}/src/mapify_cli/skills_eval/review_pilot.py +0 -0
  224. {mapify_cli-3.34.2 → mapify_cli-3.35.1}/src/mapify_cli/skills_eval/runner.py +0 -0
  225. {mapify_cli-3.34.2 → mapify_cli-3.35.1}/src/mapify_cli/skills_eval/trajectory/__init__.py +0 -0
  226. {mapify_cli-3.34.2 → mapify_cli-3.35.1}/src/mapify_cli/skills_eval/trajectory/bundle.py +0 -0
  227. {mapify_cli-3.34.2 → mapify_cli-3.35.1}/src/mapify_cli/skills_eval/trajectory/dispatcher.py +0 -0
  228. {mapify_cli-3.34.2 → mapify_cli-3.35.1}/src/mapify_cli/skills_eval/trajectory/eval_schema.py +0 -0
  229. {mapify_cli-3.34.2 → mapify_cli-3.35.1}/src/mapify_cli/skills_eval/trajectory/gates.py +0 -0
  230. {mapify_cli-3.34.2 → mapify_cli-3.35.1}/src/mapify_cli/skills_eval/trajectory/judge.py +0 -0
  231. {mapify_cli-3.34.2 → mapify_cli-3.35.1}/src/mapify_cli/skills_eval/trajectory/repeated.py +0 -0
  232. {mapify_cli-3.34.2 → mapify_cli-3.35.1}/src/mapify_cli/skills_eval/trajectory/report.py +0 -0
  233. {mapify_cli-3.34.2 → mapify_cli-3.35.1}/src/mapify_cli/skills_eval/trajectory/runner.py +0 -0
  234. {mapify_cli-3.34.2 → mapify_cli-3.35.1}/src/mapify_cli/skills_eval/trajectory/seeding.py +0 -0
  235. {mapify_cli-3.34.2 → mapify_cli-3.35.1}/src/mapify_cli/skills_eval/viewer.py +0 -0
  236. {mapify_cli-3.34.2 → mapify_cli-3.35.1}/src/mapify_cli/templates/.gitignore +0 -0
  237. {mapify_cli-3.34.2 → mapify_cli-3.35.1}/src/mapify_cli/templates/CLAUDE.md +0 -0
  238. {mapify_cli-3.34.2 → mapify_cli-3.35.1}/src/mapify_cli/templates/agents/documentation-reviewer.md +0 -0
  239. {mapify_cli-3.34.2 → mapify_cli-3.35.1}/src/mapify_cli/templates/agents/final-verifier.md +0 -0
  240. {mapify_cli-3.34.2 → mapify_cli-3.35.1}/src/mapify_cli/templates/agents/predictor.md +0 -0
  241. {mapify_cli-3.34.2 → mapify_cli-3.35.1}/src/mapify_cli/templates/agents/reflector.md +0 -0
  242. {mapify_cli-3.34.2 → mapify_cli-3.35.1}/src/mapify_cli/templates/agents/research-agent.md +0 -0
  243. {mapify_cli-3.34.2 → mapify_cli-3.35.1}/src/mapify_cli/templates/agents/task-decomposer.md +0 -0
  244. {mapify_cli-3.34.2 → mapify_cli-3.35.1}/src/mapify_cli/templates/codex/AGENTS.md +0 -0
  245. {mapify_cli-3.34.2 → mapify_cli-3.35.1}/src/mapify_cli/templates/codex/agents/decomposer.toml +0 -0
  246. {mapify_cli-3.34.2 → mapify_cli-3.35.1}/src/mapify_cli/templates/codex/agents/documentation-reviewer.toml +0 -0
  247. {mapify_cli-3.34.2 → mapify_cli-3.35.1}/src/mapify_cli/templates/codex/agents/final-verifier.toml +0 -0
  248. {mapify_cli-3.34.2 → mapify_cli-3.35.1}/src/mapify_cli/templates/codex/agents/predictor.toml +0 -0
  249. {mapify_cli-3.34.2 → mapify_cli-3.35.1}/src/mapify_cli/templates/codex/agents/reflector.toml +0 -0
  250. {mapify_cli-3.34.2 → mapify_cli-3.35.1}/src/mapify_cli/templates/codex/agents/researcher.toml +0 -0
  251. {mapify_cli-3.34.2 → mapify_cli-3.35.1}/src/mapify_cli/templates/codex/config.toml +0 -0
  252. {mapify_cli-3.34.2 → mapify_cli-3.35.1}/src/mapify_cli/templates/codex/hooks/detect-clarification-triggers.py +0 -0
  253. {mapify_cli-3.34.2 → mapify_cli-3.35.1}/src/mapify_cli/templates/codex/hooks/end-of-turn.sh +0 -0
  254. {mapify_cli-3.34.2 → mapify_cli-3.35.1}/src/mapify_cli/templates/codex/hooks/map-memory-capture.py +0 -0
  255. {mapify_cli-3.34.2 → mapify_cli-3.35.1}/src/mapify_cli/templates/codex/hooks/map-memory-endmark.py +0 -0
  256. {mapify_cli-3.34.2 → mapify_cli-3.35.1}/src/mapify_cli/templates/codex/hooks/map-memory-recall.py +0 -0
  257. {mapify_cli-3.34.2 → mapify_cli-3.35.1}/src/mapify_cli/templates/codex/hooks/map-memory-session.py +0 -0
  258. {mapify_cli-3.34.2 → mapify_cli-3.35.1}/src/mapify_cli/templates/codex/hooks/map-stop.py +0 -0
  259. {mapify_cli-3.34.2 → mapify_cli-3.35.1}/src/mapify_cli/templates/codex/hooks/safety-guardrails.py +0 -0
  260. {mapify_cli-3.34.2 → mapify_cli-3.35.1}/src/mapify_cli/templates/codex/hooks.json +0 -0
  261. {mapify_cli-3.34.2 → mapify_cli-3.35.1}/src/mapify_cli/templates/codex/references/map-json-output-contracts.md +0 -0
  262. {mapify_cli-3.34.2 → mapify_cli-3.35.1}/src/mapify_cli/templates/codex/references/map-output-examples.md +0 -0
  263. {mapify_cli-3.34.2 → mapify_cli-3.35.1}/src/mapify_cli/templates/codex/references/map-xml-prompt-envelopes.md +0 -0
  264. {mapify_cli-3.34.2 → mapify_cli-3.35.1}/src/mapify_cli/templates/codex/skills/map-auto/SKILL.md +0 -0
  265. {mapify_cli-3.34.2 → mapify_cli-3.35.1}/src/mapify_cli/templates/codex/skills/map-auto/auto-reference.md +0 -0
  266. {mapify_cli-3.34.2 → mapify_cli-3.35.1}/src/mapify_cli/templates/codex/skills/map-check/check-reference.md +0 -0
  267. {mapify_cli-3.34.2 → mapify_cli-3.35.1}/src/mapify_cli/templates/codex/skills/map-debug/SKILL.md +0 -0
  268. {mapify_cli-3.34.2 → mapify_cli-3.35.1}/src/mapify_cli/templates/codex/skills/map-fast/SKILL.md +0 -0
  269. {mapify_cli-3.34.2 → mapify_cli-3.35.1}/src/mapify_cli/templates/codex/skills/map-learn/SKILL.md +0 -0
  270. {mapify_cli-3.34.2 → mapify_cli-3.35.1}/src/mapify_cli/templates/codex/skills/map-learn/templates/example-rules.md +0 -0
  271. {mapify_cli-3.34.2 → mapify_cli-3.35.1}/src/mapify_cli/templates/codex/skills/map-learn/templates/rules-unconditional.md +0 -0
  272. {mapify_cli-3.34.2 → mapify_cli-3.35.1}/src/mapify_cli/templates/codex/skills/map-learn/templates/rules-with-paths.md +0 -0
  273. {mapify_cli-3.34.2 → mapify_cli-3.35.1}/src/mapify_cli/templates/codex/skills/map-memory-now/SKILL.md +0 -0
  274. {mapify_cli-3.34.2 → mapify_cli-3.35.1}/src/mapify_cli/templates/codex/skills/map-plan/plan-reference.md +0 -0
  275. {mapify_cli-3.34.2 → mapify_cli-3.35.1}/src/mapify_cli/templates/codex/skills/map-prd-review/SKILL.md +0 -0
  276. {mapify_cli-3.34.2 → mapify_cli-3.35.1}/src/mapify_cli/templates/codex/skills/map-release/SKILL.md +0 -0
  277. {mapify_cli-3.34.2 → mapify_cli-3.35.1}/src/mapify_cli/templates/codex/skills/map-resume/resume-reference.md +0 -0
  278. {mapify_cli-3.34.2 → mapify_cli-3.35.1}/src/mapify_cli/templates/codex/skills/map-skill-eval/SKILL.md +0 -0
  279. {mapify_cli-3.34.2 → mapify_cli-3.35.1}/src/mapify_cli/templates/codex/skills/map-so-search/SKILL.md +0 -0
  280. {mapify_cli-3.34.2 → mapify_cli-3.35.1}/src/mapify_cli/templates/codex/skills/map-so-search/scripts/sofa_search.py +0 -0
  281. {mapify_cli-3.34.2 → mapify_cli-3.35.1}/src/mapify_cli/templates/codex/skills/map-state/SKILL.md +0 -0
  282. {mapify_cli-3.34.2 → mapify_cli-3.35.1}/src/mapify_cli/templates/codex/skills/map-state/scripts/check-complete.sh +0 -0
  283. {mapify_cli-3.34.2 → mapify_cli-3.35.1}/src/mapify_cli/templates/codex/skills/map-state/scripts/show-focus.sh +0 -0
  284. {mapify_cli-3.34.2 → mapify_cli-3.35.1}/src/mapify_cli/templates/codex/skills/map-state/templates/findings.md +0 -0
  285. {mapify_cli-3.34.2 → mapify_cli-3.35.1}/src/mapify_cli/templates/codex/skills/map-state/templates/iteration_history.md +0 -0
  286. {mapify_cli-3.34.2 → mapify_cli-3.35.1}/src/mapify_cli/templates/codex/skills/map-state/templates/progress.md +0 -0
  287. {mapify_cli-3.34.2 → mapify_cli-3.35.1}/src/mapify_cli/templates/codex/skills/map-state/templates/task_plan.md +0 -0
  288. {mapify_cli-3.34.2 → mapify_cli-3.35.1}/src/mapify_cli/templates/codex/skills/map-understand/SKILL.md +0 -0
  289. {mapify_cli-3.34.2 → mapify_cli-3.35.1}/src/mapify_cli/templates/codex/skills/map-upgrade/SKILL.md +0 -0
  290. {mapify_cli-3.34.2 → mapify_cli-3.35.1}/src/mapify_cli/templates/codex/skills/map-wayfind/SKILL.md +0 -0
  291. {mapify_cli-3.34.2 → mapify_cli-3.35.1}/src/mapify_cli/templates/hooks/README.md +0 -0
  292. {mapify_cli-3.34.2 → mapify_cli-3.35.1}/src/mapify_cli/templates/hooks/detect-clarification-triggers.py +0 -0
  293. {mapify_cli-3.34.2 → mapify_cli-3.35.1}/src/mapify_cli/templates/hooks/end-of-turn.sh +0 -0
  294. {mapify_cli-3.34.2 → mapify_cli-3.35.1}/src/mapify_cli/templates/hooks/map-memory-capture.py +0 -0
  295. {mapify_cli-3.34.2 → mapify_cli-3.35.1}/src/mapify_cli/templates/hooks/map-memory-endmark.py +0 -0
  296. {mapify_cli-3.34.2 → mapify_cli-3.35.1}/src/mapify_cli/templates/hooks/map-memory-finalize.py +0 -0
  297. {mapify_cli-3.34.2 → mapify_cli-3.35.1}/src/mapify_cli/templates/hooks/map-memory-recall.py +0 -0
  298. {mapify_cli-3.34.2 → mapify_cli-3.35.1}/src/mapify_cli/templates/hooks/safety-guardrails.py +0 -0
  299. {mapify_cli-3.34.2 → mapify_cli-3.35.1}/src/mapify_cli/templates/map/scripts/classify_scope.py +0 -0
  300. {mapify_cli-3.34.2 → mapify_cli-3.35.1}/src/mapify_cli/templates/map/scripts/map_interruption.py +0 -0
  301. {mapify_cli-3.34.2 → mapify_cli-3.35.1}/src/mapify_cli/templates/map/scripts/map_orchestrator.py +0 -0
  302. {mapify_cli-3.34.2 → mapify_cli-3.35.1}/src/mapify_cli/templates/map/scripts/review_check_supervisor.py +0 -0
  303. {mapify_cli-3.34.2 → mapify_cli-3.35.1}/src/mapify_cli/templates/map/static-analysis/analyze.sh +0 -0
  304. {mapify_cli-3.34.2 → mapify_cli-3.35.1}/src/mapify_cli/templates/map/static-analysis/handlers/common.sh +0 -0
  305. {mapify_cli-3.34.2 → mapify_cli-3.35.1}/src/mapify_cli/templates/map/static-analysis/handlers/go.sh +0 -0
  306. {mapify_cli-3.34.2 → mapify_cli-3.35.1}/src/mapify_cli/templates/map/static-analysis/handlers/python.sh +0 -0
  307. {mapify_cli-3.34.2 → mapify_cli-3.35.1}/src/mapify_cli/templates/map/static-analysis/handlers/rust.sh +0 -0
  308. {mapify_cli-3.34.2 → mapify_cli-3.35.1}/src/mapify_cli/templates/map/static-analysis/handlers/typescript.sh +0 -0
  309. {mapify_cli-3.34.2 → mapify_cli-3.35.1}/src/mapify_cli/templates/ralph-loop-config.json +0 -0
  310. {mapify_cli-3.34.2 → mapify_cli-3.35.1}/src/mapify_cli/templates/references/bash-guidelines.md +0 -0
  311. {mapify_cli-3.34.2 → mapify_cli-3.35.1}/src/mapify_cli/templates/references/decomposition-examples.md +0 -0
  312. {mapify_cli-3.34.2 → mapify_cli-3.35.1}/src/mapify_cli/templates/references/escalation-matrix.md +0 -0
  313. {mapify_cli-3.34.2 → mapify_cli-3.35.1}/src/mapify_cli/templates/references/hook-patterns.md +0 -0
  314. {mapify_cli-3.34.2 → mapify_cli-3.35.1}/src/mapify_cli/templates/references/host-paths.md +0 -0
  315. {mapify_cli-3.34.2 → mapify_cli-3.35.1}/src/mapify_cli/templates/references/map-json-output-contracts.md +0 -0
  316. {mapify_cli-3.34.2 → mapify_cli-3.35.1}/src/mapify_cli/templates/references/map-output-examples.md +0 -0
  317. {mapify_cli-3.34.2 → mapify_cli-3.35.1}/src/mapify_cli/templates/references/map-xml-prompt-envelopes.md +0 -0
  318. {mapify_cli-3.34.2 → mapify_cli-3.35.1}/src/mapify_cli/templates/references/mcp-usage-examples.md +0 -0
  319. {mapify_cli-3.34.2 → mapify_cli-3.35.1}/src/mapify_cli/templates/references/step-state-schema.md +0 -0
  320. {mapify_cli-3.34.2 → mapify_cli-3.35.1}/src/mapify_cli/templates/references/workflow-state-schema.md +0 -0
  321. {mapify_cli-3.34.2 → mapify_cli-3.35.1}/src/mapify_cli/templates/rules/learned/README.md +0 -0
  322. {mapify_cli-3.34.2 → mapify_cli-3.35.1}/src/mapify_cli/templates/settings.json +0 -0
  323. {mapify_cli-3.34.2 → mapify_cli-3.35.1}/src/mapify_cli/templates/skills/README.md +0 -0
  324. {mapify_cli-3.34.2 → mapify_cli-3.35.1}/src/mapify_cli/templates/skills/map-auto/SKILL.md +0 -0
  325. {mapify_cli-3.34.2 → mapify_cli-3.35.1}/src/mapify_cli/templates/skills/map-auto/auto-reference.md +0 -0
  326. {mapify_cli-3.34.2 → mapify_cli-3.35.1}/src/mapify_cli/templates/skills/map-check/check-reference.md +0 -0
  327. {mapify_cli-3.34.2 → mapify_cli-3.35.1}/src/mapify_cli/templates/skills/map-debug/SKILL.md +0 -0
  328. {mapify_cli-3.34.2 → mapify_cli-3.35.1}/src/mapify_cli/templates/skills/map-fast/SKILL.md +0 -0
  329. {mapify_cli-3.34.2 → mapify_cli-3.35.1}/src/mapify_cli/templates/skills/map-learn/SKILL.md +0 -0
  330. {mapify_cli-3.34.2 → mapify_cli-3.35.1}/src/mapify_cli/templates/skills/map-learn/templates/example-rules.md +0 -0
  331. {mapify_cli-3.34.2 → mapify_cli-3.35.1}/src/mapify_cli/templates/skills/map-learn/templates/rules-unconditional.md +0 -0
  332. {mapify_cli-3.34.2 → mapify_cli-3.35.1}/src/mapify_cli/templates/skills/map-learn/templates/rules-with-paths.md +0 -0
  333. {mapify_cli-3.34.2 → mapify_cli-3.35.1}/src/mapify_cli/templates/skills/map-memory-now/SKILL.md +0 -0
  334. {mapify_cli-3.34.2 → mapify_cli-3.35.1}/src/mapify_cli/templates/skills/map-plan/plan-reference.md +0 -0
  335. {mapify_cli-3.34.2 → mapify_cli-3.35.1}/src/mapify_cli/templates/skills/map-prd-review/SKILL.md +0 -0
  336. {mapify_cli-3.34.2 → mapify_cli-3.35.1}/src/mapify_cli/templates/skills/map-release/SKILL.md +0 -0
  337. {mapify_cli-3.34.2 → mapify_cli-3.35.1}/src/mapify_cli/templates/skills/map-resume/resume-reference.md +0 -0
  338. {mapify_cli-3.34.2 → mapify_cli-3.35.1}/src/mapify_cli/templates/skills/map-skill-eval/SKILL.md +0 -0
  339. {mapify_cli-3.34.2 → mapify_cli-3.35.1}/src/mapify_cli/templates/skills/map-so-search/SKILL.md +0 -0
  340. {mapify_cli-3.34.2 → mapify_cli-3.35.1}/src/mapify_cli/templates/skills/map-so-search/scripts/sofa_search.py +0 -0
  341. {mapify_cli-3.34.2 → mapify_cli-3.35.1}/src/mapify_cli/templates/skills/map-state/SKILL.md +0 -0
  342. {mapify_cli-3.34.2 → mapify_cli-3.35.1}/src/mapify_cli/templates/skills/map-state/scripts/check-complete.sh +0 -0
  343. {mapify_cli-3.34.2 → mapify_cli-3.35.1}/src/mapify_cli/templates/skills/map-state/scripts/show-focus.sh +0 -0
  344. {mapify_cli-3.34.2 → mapify_cli-3.35.1}/src/mapify_cli/templates/skills/map-state/templates/findings.md +0 -0
  345. {mapify_cli-3.34.2 → mapify_cli-3.35.1}/src/mapify_cli/templates/skills/map-state/templates/iteration_history.md +0 -0
  346. {mapify_cli-3.34.2 → mapify_cli-3.35.1}/src/mapify_cli/templates/skills/map-state/templates/progress.md +0 -0
  347. {mapify_cli-3.34.2 → mapify_cli-3.35.1}/src/mapify_cli/templates/skills/map-state/templates/task_plan.md +0 -0
  348. {mapify_cli-3.34.2 → mapify_cli-3.35.1}/src/mapify_cli/templates/skills/map-understand/SKILL.md +0 -0
  349. {mapify_cli-3.34.2 → mapify_cli-3.35.1}/src/mapify_cli/templates/skills/map-upgrade/SKILL.md +0 -0
  350. {mapify_cli-3.34.2 → mapify_cli-3.35.1}/src/mapify_cli/templates/skills/map-wayfind/SKILL.md +0 -0
  351. {mapify_cli-3.34.2 → mapify_cli-3.35.1}/src/mapify_cli/templates/workflow-rules.json +0 -0
  352. {mapify_cli-3.34.2 → mapify_cli-3.35.1}/src/mapify_cli/templates_src/.gitignore.jinja +0 -0
  353. {mapify_cli-3.34.2 → mapify_cli-3.35.1}/src/mapify_cli/templates_src/CLAUDE.md.jinja +0 -0
  354. {mapify_cli-3.34.2 → mapify_cli-3.35.1}/src/mapify_cli/templates_src/_partials/acceptance-runtime.py.jinja +0 -0
  355. {mapify_cli-3.34.2 → mapify_cli-3.35.1}/src/mapify_cli/templates_src/_partials/apply-patch-paths.py.jinja +0 -0
  356. {mapify_cli-3.34.2 → mapify_cli-3.35.1}/src/mapify_cli/templates_src/_partials/auto-update-preflight.md.jinja +0 -0
  357. {mapify_cli-3.34.2 → mapify_cli-3.35.1}/src/mapify_cli/templates_src/_partials/codex-memory-hook-wrapper.py.jinja +0 -0
  358. {mapify_cli-3.34.2 → mapify_cli-3.35.1}/src/mapify_cli/templates_src/_partials/manual-upgrade-flow.md.jinja +0 -0
  359. {mapify_cli-3.34.2 → mapify_cli-3.35.1}/src/mapify_cli/templates_src/_partials/python-version-guard.py.jinja +0 -0
  360. {mapify_cli-3.34.2 → mapify_cli-3.35.1}/src/mapify_cli/templates_src/_partials/serial-blocker-repair.md.jinja +0 -0
  361. {mapify_cli-3.34.2 → mapify_cli-3.35.1}/src/mapify_cli/templates_src/_partials/stale-attribution-recovery.md.jinja +0 -0
  362. {mapify_cli-3.34.2 → mapify_cli-3.35.1}/src/mapify_cli/templates_src/agents/documentation-reviewer.md.jinja +0 -0
  363. {mapify_cli-3.34.2 → mapify_cli-3.35.1}/src/mapify_cli/templates_src/agents/final-verifier.md.jinja +0 -0
  364. {mapify_cli-3.34.2 → mapify_cli-3.35.1}/src/mapify_cli/templates_src/agents/predictor.md.jinja +0 -0
  365. {mapify_cli-3.34.2 → mapify_cli-3.35.1}/src/mapify_cli/templates_src/agents/reflector.md.jinja +0 -0
  366. {mapify_cli-3.34.2 → mapify_cli-3.35.1}/src/mapify_cli/templates_src/agents/research-agent.md.jinja +0 -0
  367. {mapify_cli-3.34.2 → mapify_cli-3.35.1}/src/mapify_cli/templates_src/agents/task-decomposer.md.jinja +0 -0
  368. {mapify_cli-3.34.2 → mapify_cli-3.35.1}/src/mapify_cli/templates_src/codex/AGENTS.md.jinja +0 -0
  369. {mapify_cli-3.34.2 → mapify_cli-3.35.1}/src/mapify_cli/templates_src/codex/agents/decomposer.toml.jinja +0 -0
  370. {mapify_cli-3.34.2 → mapify_cli-3.35.1}/src/mapify_cli/templates_src/codex/agents/documentation-reviewer.toml.jinja +0 -0
  371. {mapify_cli-3.34.2 → mapify_cli-3.35.1}/src/mapify_cli/templates_src/codex/agents/final-verifier.toml.jinja +0 -0
  372. {mapify_cli-3.34.2 → mapify_cli-3.35.1}/src/mapify_cli/templates_src/codex/agents/predictor.toml.jinja +0 -0
  373. {mapify_cli-3.34.2 → mapify_cli-3.35.1}/src/mapify_cli/templates_src/codex/agents/reflector.toml.jinja +0 -0
  374. {mapify_cli-3.34.2 → mapify_cli-3.35.1}/src/mapify_cli/templates_src/codex/agents/researcher.toml.jinja +0 -0
  375. {mapify_cli-3.34.2 → mapify_cli-3.35.1}/src/mapify_cli/templates_src/codex/config.toml.jinja +0 -0
  376. {mapify_cli-3.34.2 → mapify_cli-3.35.1}/src/mapify_cli/templates_src/codex/hooks/context-meter.py.jinja +0 -0
  377. {mapify_cli-3.34.2 → mapify_cli-3.35.1}/src/mapify_cli/templates_src/codex/hooks/detect-clarification-triggers.py.jinja +0 -0
  378. {mapify_cli-3.34.2 → mapify_cli-3.35.1}/src/mapify_cli/templates_src/codex/hooks/end-of-turn.sh.jinja +0 -0
  379. {mapify_cli-3.34.2 → mapify_cli-3.35.1}/src/mapify_cli/templates_src/codex/hooks/map-memory-capture.py.jinja +0 -0
  380. {mapify_cli-3.34.2 → mapify_cli-3.35.1}/src/mapify_cli/templates_src/codex/hooks/map-memory-endmark.py.jinja +0 -0
  381. {mapify_cli-3.34.2 → mapify_cli-3.35.1}/src/mapify_cli/templates_src/codex/hooks/map-memory-recall.py.jinja +0 -0
  382. {mapify_cli-3.34.2 → mapify_cli-3.35.1}/src/mapify_cli/templates_src/codex/hooks/map-memory-session.py.jinja +0 -0
  383. {mapify_cli-3.34.2 → mapify_cli-3.35.1}/src/mapify_cli/templates_src/codex/hooks/map-stop.py.jinja +0 -0
  384. {mapify_cli-3.34.2 → mapify_cli-3.35.1}/src/mapify_cli/templates_src/codex/hooks/map-token-meter.py.jinja +0 -0
  385. {mapify_cli-3.34.2 → mapify_cli-3.35.1}/src/mapify_cli/templates_src/codex/hooks/post-compact-context.py.jinja +0 -0
  386. {mapify_cli-3.34.2 → mapify_cli-3.35.1}/src/mapify_cli/templates_src/codex/hooks/pre-compact-save-transcript.py.jinja +0 -0
  387. {mapify_cli-3.34.2 → mapify_cli-3.35.1}/src/mapify_cli/templates_src/codex/hooks/ralph-context-pruner.py.jinja +0 -0
  388. {mapify_cli-3.34.2 → mapify_cli-3.35.1}/src/mapify_cli/templates_src/codex/hooks/ralph-iteration-logger.py.jinja +0 -0
  389. {mapify_cli-3.34.2 → mapify_cli-3.35.1}/src/mapify_cli/templates_src/codex/hooks/safety-guardrails.py.jinja +0 -0
  390. {mapify_cli-3.34.2 → mapify_cli-3.35.1}/src/mapify_cli/templates_src/codex/hooks/scrub-internal-ids.py.jinja +0 -0
  391. {mapify_cli-3.34.2 → mapify_cli-3.35.1}/src/mapify_cli/templates_src/codex/hooks/workflow-context-injector.py.jinja +0 -0
  392. {mapify_cli-3.34.2 → mapify_cli-3.35.1}/src/mapify_cli/templates_src/codex/hooks.json.jinja +0 -0
  393. {mapify_cli-3.34.2 → mapify_cli-3.35.1}/src/mapify_cli/templates_src/codex/references/map-json-output-contracts.md.jinja +0 -0
  394. {mapify_cli-3.34.2 → mapify_cli-3.35.1}/src/mapify_cli/templates_src/codex/references/map-output-examples.md.jinja +0 -0
  395. {mapify_cli-3.34.2 → mapify_cli-3.35.1}/src/mapify_cli/templates_src/codex/references/map-xml-prompt-envelopes.md.jinja +0 -0
  396. {mapify_cli-3.34.2 → mapify_cli-3.35.1}/src/mapify_cli/templates_src/codex/skills/map-architecture/SKILL.md.jinja +0 -0
  397. {mapify_cli-3.34.2 → mapify_cli-3.35.1}/src/mapify_cli/templates_src/codex/skills/map-auto/SKILL.md.jinja +0 -0
  398. {mapify_cli-3.34.2 → mapify_cli-3.35.1}/src/mapify_cli/templates_src/codex/skills/map-auto/auto-reference.md.jinja +0 -0
  399. {mapify_cli-3.34.2 → mapify_cli-3.35.1}/src/mapify_cli/templates_src/codex/skills/map-check/SKILL.md.jinja +0 -0
  400. {mapify_cli-3.34.2 → mapify_cli-3.35.1}/src/mapify_cli/templates_src/codex/skills/map-check/check-reference.md.jinja +0 -0
  401. {mapify_cli-3.34.2 → mapify_cli-3.35.1}/src/mapify_cli/templates_src/codex/skills/map-debug/SKILL.md.jinja +0 -0
  402. {mapify_cli-3.34.2 → mapify_cli-3.35.1}/src/mapify_cli/templates_src/codex/skills/map-efficient/SKILL.md.jinja +0 -0
  403. {mapify_cli-3.34.2 → mapify_cli-3.35.1}/src/mapify_cli/templates_src/codex/skills/map-efficient/efficient-reference.md.jinja +0 -0
  404. {mapify_cli-3.34.2 → mapify_cli-3.35.1}/src/mapify_cli/templates_src/codex/skills/map-explain/SKILL.md.jinja +0 -0
  405. {mapify_cli-3.34.2 → mapify_cli-3.35.1}/src/mapify_cli/templates_src/codex/skills/map-fast/SKILL.md.jinja +0 -0
  406. {mapify_cli-3.34.2 → mapify_cli-3.35.1}/src/mapify_cli/templates_src/codex/skills/map-learn/SKILL.md.jinja +0 -0
  407. {mapify_cli-3.34.2 → mapify_cli-3.35.1}/src/mapify_cli/templates_src/codex/skills/map-learn/templates/example-rules.md.jinja +0 -0
  408. {mapify_cli-3.34.2 → mapify_cli-3.35.1}/src/mapify_cli/templates_src/codex/skills/map-learn/templates/rules-unconditional.md.jinja +0 -0
  409. {mapify_cli-3.34.2 → mapify_cli-3.35.1}/src/mapify_cli/templates_src/codex/skills/map-learn/templates/rules-with-paths.md.jinja +0 -0
  410. {mapify_cli-3.34.2 → mapify_cli-3.35.1}/src/mapify_cli/templates_src/codex/skills/map-memory-now/SKILL.md.jinja +0 -0
  411. {mapify_cli-3.34.2 → mapify_cli-3.35.1}/src/mapify_cli/templates_src/codex/skills/map-plan/SKILL.md.jinja +0 -0
  412. {mapify_cli-3.34.2 → mapify_cli-3.35.1}/src/mapify_cli/templates_src/codex/skills/map-plan/plan-reference.md.jinja +0 -0
  413. {mapify_cli-3.34.2 → mapify_cli-3.35.1}/src/mapify_cli/templates_src/codex/skills/map-prd-review/SKILL.md.jinja +0 -0
  414. {mapify_cli-3.34.2 → mapify_cli-3.35.1}/src/mapify_cli/templates_src/codex/skills/map-release/SKILL.md.jinja +0 -0
  415. {mapify_cli-3.34.2 → mapify_cli-3.35.1}/src/mapify_cli/templates_src/codex/skills/map-release/release-reference.md.jinja +0 -0
  416. {mapify_cli-3.34.2 → mapify_cli-3.35.1}/src/mapify_cli/templates_src/codex/skills/map-resume/SKILL.md.jinja +0 -0
  417. {mapify_cli-3.34.2 → mapify_cli-3.35.1}/src/mapify_cli/templates_src/codex/skills/map-resume/resume-reference.md.jinja +0 -0
  418. {mapify_cli-3.34.2 → mapify_cli-3.35.1}/src/mapify_cli/templates_src/codex/skills/map-review/SKILL.md.jinja +0 -0
  419. {mapify_cli-3.34.2 → mapify_cli-3.35.1}/src/mapify_cli/templates_src/codex/skills/map-review/adversarial-reference.md.jinja +0 -0
  420. {mapify_cli-3.34.2 → mapify_cli-3.35.1}/src/mapify_cli/templates_src/codex/skills/map-review/review-reference.md.jinja +0 -0
  421. {mapify_cli-3.34.2 → mapify_cli-3.35.1}/src/mapify_cli/templates_src/codex/skills/map-skill-eval/SKILL.md.jinja +0 -0
  422. {mapify_cli-3.34.2 → mapify_cli-3.35.1}/src/mapify_cli/templates_src/codex/skills/map-so-search/SKILL.md.jinja +0 -0
  423. {mapify_cli-3.34.2 → mapify_cli-3.35.1}/src/mapify_cli/templates_src/codex/skills/map-so-search/scripts/sofa_search.py.jinja +0 -0
  424. {mapify_cli-3.34.2 → mapify_cli-3.35.1}/src/mapify_cli/templates_src/codex/skills/map-state/SKILL.md.jinja +0 -0
  425. {mapify_cli-3.34.2 → mapify_cli-3.35.1}/src/mapify_cli/templates_src/codex/skills/map-state/scripts/check-complete.sh.jinja +0 -0
  426. {mapify_cli-3.34.2 → mapify_cli-3.35.1}/src/mapify_cli/templates_src/codex/skills/map-state/scripts/get-plan-path.sh.jinja +0 -0
  427. {mapify_cli-3.34.2 → mapify_cli-3.35.1}/src/mapify_cli/templates_src/codex/skills/map-state/scripts/init-session.sh.jinja +0 -0
  428. {mapify_cli-3.34.2 → mapify_cli-3.35.1}/src/mapify_cli/templates_src/codex/skills/map-state/scripts/show-focus.sh.jinja +0 -0
  429. {mapify_cli-3.34.2 → mapify_cli-3.35.1}/src/mapify_cli/templates_src/codex/skills/map-state/templates/findings.md.jinja +0 -0
  430. {mapify_cli-3.34.2 → mapify_cli-3.35.1}/src/mapify_cli/templates_src/codex/skills/map-state/templates/iteration_history.md.jinja +0 -0
  431. {mapify_cli-3.34.2 → mapify_cli-3.35.1}/src/mapify_cli/templates_src/codex/skills/map-state/templates/progress.md.jinja +0 -0
  432. {mapify_cli-3.34.2 → mapify_cli-3.35.1}/src/mapify_cli/templates_src/codex/skills/map-state/templates/task_plan.md.jinja +0 -0
  433. {mapify_cli-3.34.2 → mapify_cli-3.35.1}/src/mapify_cli/templates_src/codex/skills/map-task/SKILL.md.jinja +0 -0
  434. {mapify_cli-3.34.2 → mapify_cli-3.35.1}/src/mapify_cli/templates_src/codex/skills/map-tdd/SKILL.md.jinja +0 -0
  435. {mapify_cli-3.34.2 → mapify_cli-3.35.1}/src/mapify_cli/templates_src/codex/skills/map-tokenreport/SKILL.md.jinja +0 -0
  436. {mapify_cli-3.34.2 → mapify_cli-3.35.1}/src/mapify_cli/templates_src/codex/skills/map-understand/SKILL.md.jinja +0 -0
  437. {mapify_cli-3.34.2 → mapify_cli-3.35.1}/src/mapify_cli/templates_src/codex/skills/map-upgrade/SKILL.md.jinja +0 -0
  438. {mapify_cli-3.34.2 → mapify_cli-3.35.1}/src/mapify_cli/templates_src/codex/skills/map-wayfind/SKILL.md.jinja +0 -0
  439. {mapify_cli-3.34.2 → mapify_cli-3.35.1}/src/mapify_cli/templates_src/codex/skills/map-wayfind/wayfind-reference.md.jinja +0 -0
  440. {mapify_cli-3.34.2 → mapify_cli-3.35.1}/src/mapify_cli/templates_src/hooks/README.md.jinja +0 -0
  441. {mapify_cli-3.34.2 → mapify_cli-3.35.1}/src/mapify_cli/templates_src/hooks/detect-clarification-triggers.py.jinja +0 -0
  442. {mapify_cli-3.34.2 → mapify_cli-3.35.1}/src/mapify_cli/templates_src/hooks/end-of-turn.sh.jinja +0 -0
  443. {mapify_cli-3.34.2 → mapify_cli-3.35.1}/src/mapify_cli/templates_src/hooks/map-memory-capture.py.jinja +0 -0
  444. {mapify_cli-3.34.2 → mapify_cli-3.35.1}/src/mapify_cli/templates_src/hooks/map-memory-endmark.py.jinja +0 -0
  445. {mapify_cli-3.34.2 → mapify_cli-3.35.1}/src/mapify_cli/templates_src/hooks/map-memory-finalize.py.jinja +0 -0
  446. {mapify_cli-3.34.2 → mapify_cli-3.35.1}/src/mapify_cli/templates_src/hooks/map-memory-recall.py.jinja +0 -0
  447. {mapify_cli-3.34.2 → mapify_cli-3.35.1}/src/mapify_cli/templates_src/hooks/safety-guardrails.py.jinja +0 -0
  448. {mapify_cli-3.34.2 → mapify_cli-3.35.1}/src/mapify_cli/templates_src/map/scripts/classify_scope.py.jinja +0 -0
  449. {mapify_cli-3.34.2 → mapify_cli-3.35.1}/src/mapify_cli/templates_src/map/scripts/map_interruption.py.jinja +0 -0
  450. {mapify_cli-3.34.2 → mapify_cli-3.35.1}/src/mapify_cli/templates_src/map/scripts/map_orchestrator.py.jinja +0 -0
  451. {mapify_cli-3.34.2 → mapify_cli-3.35.1}/src/mapify_cli/templates_src/map/scripts/review_check_supervisor.py.jinja +0 -0
  452. {mapify_cli-3.34.2 → mapify_cli-3.35.1}/src/mapify_cli/templates_src/map/static-analysis/analyze.sh.jinja +0 -0
  453. {mapify_cli-3.34.2 → mapify_cli-3.35.1}/src/mapify_cli/templates_src/map/static-analysis/handlers/common.sh.jinja +0 -0
  454. {mapify_cli-3.34.2 → mapify_cli-3.35.1}/src/mapify_cli/templates_src/map/static-analysis/handlers/go.sh.jinja +0 -0
  455. {mapify_cli-3.34.2 → mapify_cli-3.35.1}/src/mapify_cli/templates_src/map/static-analysis/handlers/python.sh.jinja +0 -0
  456. {mapify_cli-3.34.2 → mapify_cli-3.35.1}/src/mapify_cli/templates_src/map/static-analysis/handlers/rust.sh.jinja +0 -0
  457. {mapify_cli-3.34.2 → mapify_cli-3.35.1}/src/mapify_cli/templates_src/map/static-analysis/handlers/typescript.sh.jinja +0 -0
  458. {mapify_cli-3.34.2 → mapify_cli-3.35.1}/src/mapify_cli/templates_src/ralph-loop-config.json.jinja +0 -0
  459. {mapify_cli-3.34.2 → mapify_cli-3.35.1}/src/mapify_cli/templates_src/references/bash-guidelines.md.jinja +0 -0
  460. {mapify_cli-3.34.2 → mapify_cli-3.35.1}/src/mapify_cli/templates_src/references/decomposition-examples.md.jinja +0 -0
  461. {mapify_cli-3.34.2 → mapify_cli-3.35.1}/src/mapify_cli/templates_src/references/escalation-matrix.md.jinja +0 -0
  462. {mapify_cli-3.34.2 → mapify_cli-3.35.1}/src/mapify_cli/templates_src/references/hook-patterns.md.jinja +0 -0
  463. {mapify_cli-3.34.2 → mapify_cli-3.35.1}/src/mapify_cli/templates_src/references/host-paths.md.jinja +0 -0
  464. {mapify_cli-3.34.2 → mapify_cli-3.35.1}/src/mapify_cli/templates_src/references/map-json-output-contracts.md.jinja +0 -0
  465. {mapify_cli-3.34.2 → mapify_cli-3.35.1}/src/mapify_cli/templates_src/references/map-output-examples.md.jinja +0 -0
  466. {mapify_cli-3.34.2 → mapify_cli-3.35.1}/src/mapify_cli/templates_src/references/map-xml-prompt-envelopes.md.jinja +0 -0
  467. {mapify_cli-3.34.2 → mapify_cli-3.35.1}/src/mapify_cli/templates_src/references/mcp-usage-examples.md.jinja +0 -0
  468. {mapify_cli-3.34.2 → mapify_cli-3.35.1}/src/mapify_cli/templates_src/references/step-state-schema.md.jinja +0 -0
  469. {mapify_cli-3.34.2 → mapify_cli-3.35.1}/src/mapify_cli/templates_src/references/workflow-state-schema.md.jinja +0 -0
  470. {mapify_cli-3.34.2 → mapify_cli-3.35.1}/src/mapify_cli/templates_src/rules/learned/README.md.jinja +0 -0
  471. {mapify_cli-3.34.2 → mapify_cli-3.35.1}/src/mapify_cli/templates_src/settings.json.jinja +0 -0
  472. {mapify_cli-3.34.2 → mapify_cli-3.35.1}/src/mapify_cli/templates_src/skills/README.md.jinja +0 -0
  473. {mapify_cli-3.34.2 → mapify_cli-3.35.1}/src/mapify_cli/templates_src/skills/map-auto/SKILL.md.jinja +0 -0
  474. {mapify_cli-3.34.2 → mapify_cli-3.35.1}/src/mapify_cli/templates_src/skills/map-auto/auto-reference.md.jinja +0 -0
  475. {mapify_cli-3.34.2 → mapify_cli-3.35.1}/src/mapify_cli/templates_src/skills/map-check/check-reference.md.jinja +0 -0
  476. {mapify_cli-3.34.2 → mapify_cli-3.35.1}/src/mapify_cli/templates_src/skills/map-debug/SKILL.md.jinja +0 -0
  477. {mapify_cli-3.34.2 → mapify_cli-3.35.1}/src/mapify_cli/templates_src/skills/map-fast/SKILL.md.jinja +0 -0
  478. {mapify_cli-3.34.2 → mapify_cli-3.35.1}/src/mapify_cli/templates_src/skills/map-learn/SKILL.md.jinja +0 -0
  479. {mapify_cli-3.34.2 → mapify_cli-3.35.1}/src/mapify_cli/templates_src/skills/map-learn/templates/example-rules.md.jinja +0 -0
  480. {mapify_cli-3.34.2 → mapify_cli-3.35.1}/src/mapify_cli/templates_src/skills/map-learn/templates/rules-unconditional.md.jinja +0 -0
  481. {mapify_cli-3.34.2 → mapify_cli-3.35.1}/src/mapify_cli/templates_src/skills/map-learn/templates/rules-with-paths.md.jinja +0 -0
  482. {mapify_cli-3.34.2 → mapify_cli-3.35.1}/src/mapify_cli/templates_src/skills/map-memory-now/SKILL.md.jinja +0 -0
  483. {mapify_cli-3.34.2 → mapify_cli-3.35.1}/src/mapify_cli/templates_src/skills/map-plan/plan-reference.md.jinja +0 -0
  484. {mapify_cli-3.34.2 → mapify_cli-3.35.1}/src/mapify_cli/templates_src/skills/map-prd-review/SKILL.md.jinja +0 -0
  485. {mapify_cli-3.34.2 → mapify_cli-3.35.1}/src/mapify_cli/templates_src/skills/map-release/SKILL.md.jinja +0 -0
  486. {mapify_cli-3.34.2 → mapify_cli-3.35.1}/src/mapify_cli/templates_src/skills/map-resume/resume-reference.md.jinja +0 -0
  487. {mapify_cli-3.34.2 → mapify_cli-3.35.1}/src/mapify_cli/templates_src/skills/map-skill-eval/SKILL.md.jinja +0 -0
  488. {mapify_cli-3.34.2 → mapify_cli-3.35.1}/src/mapify_cli/templates_src/skills/map-so-search/SKILL.md.jinja +0 -0
  489. {mapify_cli-3.34.2 → mapify_cli-3.35.1}/src/mapify_cli/templates_src/skills/map-so-search/scripts/sofa_search.py.jinja +0 -0
  490. {mapify_cli-3.34.2 → mapify_cli-3.35.1}/src/mapify_cli/templates_src/skills/map-state/SKILL.md.jinja +0 -0
  491. {mapify_cli-3.34.2 → mapify_cli-3.35.1}/src/mapify_cli/templates_src/skills/map-state/scripts/check-complete.sh.jinja +0 -0
  492. {mapify_cli-3.34.2 → mapify_cli-3.35.1}/src/mapify_cli/templates_src/skills/map-state/scripts/show-focus.sh.jinja +0 -0
  493. {mapify_cli-3.34.2 → mapify_cli-3.35.1}/src/mapify_cli/templates_src/skills/map-state/templates/findings.md.jinja +0 -0
  494. {mapify_cli-3.34.2 → mapify_cli-3.35.1}/src/mapify_cli/templates_src/skills/map-state/templates/iteration_history.md.jinja +0 -0
  495. {mapify_cli-3.34.2 → mapify_cli-3.35.1}/src/mapify_cli/templates_src/skills/map-state/templates/progress.md.jinja +0 -0
  496. {mapify_cli-3.34.2 → mapify_cli-3.35.1}/src/mapify_cli/templates_src/skills/map-state/templates/task_plan.md.jinja +0 -0
  497. {mapify_cli-3.34.2 → mapify_cli-3.35.1}/src/mapify_cli/templates_src/skills/map-understand/SKILL.md.jinja +0 -0
  498. {mapify_cli-3.34.2 → mapify_cli-3.35.1}/src/mapify_cli/templates_src/skills/map-upgrade/SKILL.md.jinja +0 -0
  499. {mapify_cli-3.34.2 → mapify_cli-3.35.1}/src/mapify_cli/templates_src/skills/map-wayfind/SKILL.md.jinja +0 -0
  500. {mapify_cli-3.34.2 → mapify_cli-3.35.1}/src/mapify_cli/templates_src/workflow-rules.json.jinja +0 -0
  501. {mapify_cli-3.34.2 → mapify_cli-3.35.1}/src/mapify_cli/token_budget.py +0 -0
  502. {mapify_cli-3.34.2 → mapify_cli-3.35.1}/src/mapify_cli/tool_output_offload.py +0 -0
  503. {mapify_cli-3.34.2 → mapify_cli-3.35.1}/src/mapify_cli/tools/__init__.py +0 -0
  504. {mapify_cli-3.34.2 → mapify_cli-3.35.1}/src/mapify_cli/tools/validate_dependencies.py +0 -0
  505. {mapify_cli-3.34.2 → mapify_cli-3.35.1}/src/mapify_cli/update_install.py +0 -0
  506. {mapify_cli-3.34.2 → mapify_cli-3.35.1}/src/mapify_cli/update_state.py +0 -0
  507. {mapify_cli-3.34.2 → mapify_cli-3.35.1}/src/mapify_cli/update_versions.py +0 -0
  508. {mapify_cli-3.34.2 → mapify_cli-3.35.1}/src/mapify_cli/workflow_finalizer.py +0 -0
  509. {mapify_cli-3.34.2 → mapify_cli-3.35.1}/src/mapify_cli/workflow_logger.py +0 -0
  510. {mapify_cli-3.34.2 → mapify_cli-3.35.1}/src/mapify_cli/workflow_state.py +0 -0
  511. {mapify_cli-3.34.2 → mapify_cli-3.35.1}/tests/__init__.py +0 -0
  512. {mapify_cli-3.34.2 → mapify_cli-3.35.1}/tests/_fake_task_tool.py +0 -0
  513. {mapify_cli-3.34.2 → mapify_cli-3.35.1}/tests/conftest.py +0 -0
  514. {mapify_cli-3.34.2 → mapify_cli-3.35.1}/tests/fixtures/claude/escalation-matrix.md +0 -0
  515. {mapify_cli-3.34.2 → mapify_cli-3.35.1}/tests/fixtures/codex/config.toml +0 -0
  516. {mapify_cli-3.34.2 → mapify_cli-3.35.1}/tests/fixtures/wave_blueprints.py +0 -0
  517. {mapify_cli-3.34.2 → mapify_cli-3.35.1}/tests/hooks/test_detect_clarification_triggers.py +0 -0
  518. {mapify_cli-3.34.2 → mapify_cli-3.35.1}/tests/hooks/test_end_of_turn.py +0 -0
  519. {mapify_cli-3.34.2 → mapify_cli-3.35.1}/tests/hooks/test_hook_inventory_smoke.py +0 -0
  520. {mapify_cli-3.34.2 → mapify_cli-3.35.1}/tests/hooks/test_safety_guardrails.py +0 -0
  521. {mapify_cli-3.34.2 → mapify_cli-3.35.1}/tests/integration/__init__.py +0 -0
  522. {mapify_cli-3.34.2 → mapify_cli-3.35.1}/tests/integration/fixtures/blueprint.json +0 -0
  523. {mapify_cli-3.34.2 → mapify_cli-3.35.1}/tests/integration/fixtures/code_review.md +0 -0
  524. {mapify_cli-3.34.2 → mapify_cli-3.35.1}/tests/integration/fixtures/plan_handoff.json +0 -0
  525. {mapify_cli-3.34.2 → mapify_cli-3.35.1}/tests/integration/fixtures/spec.md +0 -0
  526. {mapify_cli-3.34.2 → mapify_cli-3.35.1}/tests/integration/fixtures/step_state_initialized.json +0 -0
  527. {mapify_cli-3.34.2 → mapify_cli-3.35.1}/tests/integration/fixtures/step_state_plan_complete.json +0 -0
  528. {mapify_cli-3.34.2 → mapify_cli-3.35.1}/tests/integration/fixtures/task_plan.md +0 -0
  529. {mapify_cli-3.34.2 → mapify_cli-3.35.1}/tests/integration/fixtures/verification_summary.md +0 -0
  530. {mapify_cli-3.34.2 → mapify_cli-3.35.1}/tests/integration/test_e2e_artifact_contracts.py +0 -0
  531. {mapify_cli-3.34.2 → mapify_cli-3.35.1}/tests/integration/test_e2e_claude_sdk.py +0 -0
  532. {mapify_cli-3.34.2 → mapify_cli-3.35.1}/tests/review_pilot_git_cache.py +0 -0
  533. {mapify_cli-3.34.2 → mapify_cli-3.35.1}/tests/review_process_lifecycle.py +0 -0
  534. {mapify_cli-3.34.2 → mapify_cli-3.35.1}/tests/skills_eval/fixtures/README.md +0 -0
  535. {mapify_cli-3.34.2 → mapify_cli-3.35.1}/tests/skills_eval/fixtures/map_check_optimize_eval_set.json +0 -0
  536. {mapify_cli-3.34.2 → mapify_cli-3.35.1}/tests/skills_eval/fixtures/map_debug_eval_set.json +0 -0
  537. {mapify_cli-3.34.2 → mapify_cli-3.35.1}/tests/skills_eval/fixtures/map_debug_optimize_eval_set.json +0 -0
  538. {mapify_cli-3.34.2 → mapify_cli-3.35.1}/tests/skills_eval/fixtures/map_efficient_optimize_eval_set.json +0 -0
  539. {mapify_cli-3.34.2 → mapify_cli-3.35.1}/tests/skills_eval/fixtures/map_explain_optimize_eval_set.json +0 -0
  540. {mapify_cli-3.34.2 → mapify_cli-3.35.1}/tests/skills_eval/fixtures/map_fast_optimize_eval_set.json +0 -0
  541. {mapify_cli-3.34.2 → mapify_cli-3.35.1}/tests/skills_eval/fixtures/map_learn_optimize_eval_set.json +0 -0
  542. {mapify_cli-3.34.2 → mapify_cli-3.35.1}/tests/skills_eval/fixtures/map_memory_now_optimize_eval_set.json +0 -0
  543. {mapify_cli-3.34.2 → mapify_cli-3.35.1}/tests/skills_eval/fixtures/map_plan_optimize_eval_set.json +0 -0
  544. {mapify_cli-3.34.2 → mapify_cli-3.35.1}/tests/skills_eval/fixtures/map_release_optimize_eval_set.json +0 -0
  545. {mapify_cli-3.34.2 → mapify_cli-3.35.1}/tests/skills_eval/fixtures/map_resume_optimize_eval_set.json +0 -0
  546. {mapify_cli-3.34.2 → mapify_cli-3.35.1}/tests/skills_eval/fixtures/map_review_optimize_eval_set.json +0 -0
  547. {mapify_cli-3.34.2 → mapify_cli-3.35.1}/tests/skills_eval/fixtures/map_skill_eval_optimize_eval_set.json +0 -0
  548. {mapify_cli-3.34.2 → mapify_cli-3.35.1}/tests/skills_eval/fixtures/map_state_optimize_eval_set.json +0 -0
  549. {mapify_cli-3.34.2 → mapify_cli-3.35.1}/tests/skills_eval/fixtures/map_task_optimize_eval_set.json +0 -0
  550. {mapify_cli-3.34.2 → mapify_cli-3.35.1}/tests/skills_eval/fixtures/map_tdd_optimize_eval_set.json +0 -0
  551. {mapify_cli-3.34.2 → mapify_cli-3.35.1}/tests/skills_eval/fixtures/map_tokenreport_optimize_eval_set.json +0 -0
  552. {mapify_cli-3.34.2 → mapify_cli-3.35.1}/tests/skills_eval/fixtures/whole_skill/map_task_blocker/manifest.json +0 -0
  553. {mapify_cli-3.34.2 → mapify_cli-3.35.1}/tests/skills_eval/fixtures/whole_skill/map_task_blocker/repo/.map/main/blueprint.json +0 -0
  554. {mapify_cli-3.34.2 → mapify_cli-3.35.1}/tests/skills_eval/fixtures/whole_skill/map_task_blocker/repo/.map/main/task_plan_main.md +0 -0
  555. {mapify_cli-3.34.2 → mapify_cli-3.35.1}/tests/skills_eval/fixtures/whole_skill/map_task_blocker/repo/src/__init__.py +0 -0
  556. {mapify_cli-3.34.2 → mapify_cli-3.35.1}/tests/skills_eval/fixtures/whole_skill/map_task_blocker/repo/src/utils.py +0 -0
  557. {mapify_cli-3.34.2 → mapify_cli-3.35.1}/tests/skills_eval/fixtures/whole_skill/map_task_blocker/repo/tests/test_compute.py +0 -0
  558. {mapify_cli-3.34.2 → mapify_cli-3.35.1}/tests/skills_eval/fixtures/whole_skill/map_task_calc/hidden/test_calc_full.py +0 -0
  559. {mapify_cli-3.34.2 → mapify_cli-3.35.1}/tests/skills_eval/fixtures/whole_skill/map_task_calc/manifest.json +0 -0
  560. {mapify_cli-3.34.2 → mapify_cli-3.35.1}/tests/skills_eval/fixtures/whole_skill/map_task_calc/repo/.map/main/blueprint.json +0 -0
  561. {mapify_cli-3.34.2 → mapify_cli-3.35.1}/tests/skills_eval/fixtures/whole_skill/map_task_calc/repo/.map/main/task_plan_main.md +0 -0
  562. {mapify_cli-3.34.2 → mapify_cli-3.35.1}/tests/skills_eval/fixtures/whole_skill/map_task_calc/repo/src/__init__.py +0 -0
  563. {mapify_cli-3.34.2 → mapify_cli-3.35.1}/tests/skills_eval/fixtures/whole_skill/map_task_calc/repo/src/calc.py +0 -0
  564. {mapify_cli-3.34.2 → mapify_cli-3.35.1}/tests/skills_eval/fixtures/whole_skill/map_task_calc/repo/tests/test_calc_basic.py +0 -0
  565. {mapify_cli-3.34.2 → mapify_cli-3.35.1}/tests/skills_eval/fixtures/whole_skill/map_task_calc_vague/hidden/test_calc_full.py +0 -0
  566. {mapify_cli-3.34.2 → mapify_cli-3.35.1}/tests/skills_eval/fixtures/whole_skill/map_task_calc_vague/manifest.json +0 -0
  567. {mapify_cli-3.34.2 → mapify_cli-3.35.1}/tests/skills_eval/fixtures/whole_skill/map_task_calc_vague/repo/.map/main/blueprint.json +0 -0
  568. {mapify_cli-3.34.2 → mapify_cli-3.35.1}/tests/skills_eval/fixtures/whole_skill/map_task_calc_vague/repo/.map/main/task_plan_main.md +0 -0
  569. {mapify_cli-3.34.2 → mapify_cli-3.35.1}/tests/skills_eval/fixtures/whole_skill/map_task_calc_vague/repo/src/__init__.py +0 -0
  570. {mapify_cli-3.34.2 → mapify_cli-3.35.1}/tests/skills_eval/fixtures/whole_skill/map_task_calc_vague/repo/src/calc.py +0 -0
  571. {mapify_cli-3.34.2 → mapify_cli-3.35.1}/tests/skills_eval/fixtures/whole_skill/map_task_calc_vague/repo/tests/test_calc_basic.py +0 -0
  572. {mapify_cli-3.34.2 → mapify_cli-3.35.1}/tests/skills_eval/fixtures/whole_skill/map_task_false_success/hidden/test_kvparse_full.py +0 -0
  573. {mapify_cli-3.34.2 → mapify_cli-3.35.1}/tests/skills_eval/fixtures/whole_skill/map_task_false_success/manifest.json +0 -0
  574. {mapify_cli-3.34.2 → mapify_cli-3.35.1}/tests/skills_eval/fixtures/whole_skill/map_task_false_success/repo/.map/main/blueprint.json +0 -0
  575. {mapify_cli-3.34.2 → mapify_cli-3.35.1}/tests/skills_eval/fixtures/whole_skill/map_task_false_success/repo/.map/main/task_plan_main.md +0 -0
  576. {mapify_cli-3.34.2 → mapify_cli-3.35.1}/tests/skills_eval/fixtures/whole_skill/map_task_false_success/repo/src/__init__.py +0 -0
  577. {mapify_cli-3.34.2 → mapify_cli-3.35.1}/tests/skills_eval/fixtures/whole_skill/map_task_false_success/repo/src/kvparse.py +0 -0
  578. {mapify_cli-3.34.2 → mapify_cli-3.35.1}/tests/skills_eval/fixtures/whole_skill/map_task_false_success/repo/tests/test_kvparse_basic.py +0 -0
  579. {mapify_cli-3.34.2 → mapify_cli-3.35.1}/tests/skills_eval/fixtures/whole_skill/map_task_scope_pressure/manifest.json +0 -0
  580. {mapify_cli-3.34.2 → mapify_cli-3.35.1}/tests/skills_eval/fixtures/whole_skill/map_task_scope_pressure/repo/.map/main/blueprint.json +0 -0
  581. {mapify_cli-3.34.2 → mapify_cli-3.35.1}/tests/skills_eval/fixtures/whole_skill/map_task_scope_pressure/repo/.map/main/task_plan_main.md +0 -0
  582. {mapify_cli-3.34.2 → mapify_cli-3.35.1}/tests/skills_eval/fixtures/whole_skill/map_task_scope_pressure/repo/src/__init__.py +0 -0
  583. {mapify_cli-3.34.2 → mapify_cli-3.35.1}/tests/skills_eval/fixtures/whole_skill/map_task_scope_pressure/repo/src/config.py +0 -0
  584. {mapify_cli-3.34.2 → mapify_cli-3.35.1}/tests/skills_eval/fixtures/whole_skill/map_task_scope_pressure/repo/src/utils.py +0 -0
  585. {mapify_cli-3.34.2 → mapify_cli-3.35.1}/tests/skills_eval/fixtures/whole_skill/map_task_scope_pressure/repo/tests/test_price.py +0 -0
  586. {mapify_cli-3.34.2 → mapify_cli-3.35.1}/tests/skills_eval/fixtures/whole_skill/map_task_scope_trap/manifest.json +0 -0
  587. {mapify_cli-3.34.2 → mapify_cli-3.35.1}/tests/skills_eval/fixtures/whole_skill/map_task_scope_trap/repo/.map/main/blueprint.json +0 -0
  588. {mapify_cli-3.34.2 → mapify_cli-3.35.1}/tests/skills_eval/fixtures/whole_skill/map_task_scope_trap/repo/.map/main/task_plan_main.md +0 -0
  589. {mapify_cli-3.34.2 → mapify_cli-3.35.1}/tests/skills_eval/fixtures/whole_skill/map_task_scope_trap/repo/src/__init__.py +0 -0
  590. {mapify_cli-3.34.2 → mapify_cli-3.35.1}/tests/skills_eval/fixtures/whole_skill/map_task_scope_trap/repo/src/config.py +0 -0
  591. {mapify_cli-3.34.2 → mapify_cli-3.35.1}/tests/skills_eval/fixtures/whole_skill/map_task_scope_trap/repo/src/utils.py +0 -0
  592. {mapify_cli-3.34.2 → mapify_cli-3.35.1}/tests/skills_eval/fixtures/whole_skill/map_task_scope_trap/repo/tests/test_utils.py +0 -0
  593. {mapify_cli-3.34.2 → mapify_cli-3.35.1}/tests/skills_eval/fixtures/whole_skill/map_task_semver/manifest.json +0 -0
  594. {mapify_cli-3.34.2 → mapify_cli-3.35.1}/tests/skills_eval/fixtures/whole_skill/map_task_semver/repo/.map/main/blueprint.json +0 -0
  595. {mapify_cli-3.34.2 → mapify_cli-3.35.1}/tests/skills_eval/fixtures/whole_skill/map_task_semver/repo/.map/main/task_plan_main.md +0 -0
  596. {mapify_cli-3.34.2 → mapify_cli-3.35.1}/tests/skills_eval/fixtures/whole_skill/map_task_semver/repo/src/__init__.py +0 -0
  597. {mapify_cli-3.34.2 → mapify_cli-3.35.1}/tests/skills_eval/fixtures/whole_skill/map_task_semver/repo/src/semver.py +0 -0
  598. {mapify_cli-3.34.2 → mapify_cli-3.35.1}/tests/skills_eval/fixtures/whole_skill/map_task_semver/repo/tests/test_semver.py +0 -0
  599. {mapify_cli-3.34.2 → mapify_cli-3.35.1}/tests/skills_eval/fixtures/whole_skill/map_task_semver_vague/hidden/test_semver_full.py +0 -0
  600. {mapify_cli-3.34.2 → mapify_cli-3.35.1}/tests/skills_eval/fixtures/whole_skill/map_task_semver_vague/manifest.json +0 -0
  601. {mapify_cli-3.34.2 → mapify_cli-3.35.1}/tests/skills_eval/fixtures/whole_skill/map_task_semver_vague/repo/.map/main/blueprint.json +0 -0
  602. {mapify_cli-3.34.2 → mapify_cli-3.35.1}/tests/skills_eval/fixtures/whole_skill/map_task_semver_vague/repo/.map/main/task_plan_main.md +0 -0
  603. {mapify_cli-3.34.2 → mapify_cli-3.35.1}/tests/skills_eval/fixtures/whole_skill/map_task_semver_vague/repo/src/__init__.py +0 -0
  604. {mapify_cli-3.34.2 → mapify_cli-3.35.1}/tests/skills_eval/fixtures/whole_skill/map_task_semver_vague/repo/src/semver.py +0 -0
  605. {mapify_cli-3.34.2 → mapify_cli-3.35.1}/tests/skills_eval/fixtures/whole_skill/map_task_semver_vague/repo/tests/test_semver_basic.py +0 -0
  606. {mapify_cli-3.34.2 → mapify_cli-3.35.1}/tests/skills_eval/fixtures/whole_skill/map_task_semver_weakgate/hidden/test_semver_full.py +0 -0
  607. {mapify_cli-3.34.2 → mapify_cli-3.35.1}/tests/skills_eval/fixtures/whole_skill/map_task_semver_weakgate/manifest.json +0 -0
  608. {mapify_cli-3.34.2 → mapify_cli-3.35.1}/tests/skills_eval/fixtures/whole_skill/map_task_semver_weakgate/repo/.map/main/blueprint.json +0 -0
  609. {mapify_cli-3.34.2 → mapify_cli-3.35.1}/tests/skills_eval/fixtures/whole_skill/map_task_semver_weakgate/repo/.map/main/task_plan_main.md +0 -0
  610. {mapify_cli-3.34.2 → mapify_cli-3.35.1}/tests/skills_eval/fixtures/whole_skill/map_task_semver_weakgate/repo/src/__init__.py +0 -0
  611. {mapify_cli-3.34.2 → mapify_cli-3.35.1}/tests/skills_eval/fixtures/whole_skill/map_task_semver_weakgate/repo/src/semver.py +0 -0
  612. {mapify_cli-3.34.2 → mapify_cli-3.35.1}/tests/skills_eval/fixtures/whole_skill/map_task_semver_weakgate/repo/tests/test_semver_basic.py +0 -0
  613. {mapify_cli-3.34.2 → mapify_cli-3.35.1}/tests/skills_eval/review_corpus/corpus.json +0 -0
  614. {mapify_cli-3.34.2 → mapify_cli-3.35.1}/tests/skills_eval/review_corpus/evidence/adjudication.json +0 -0
  615. {mapify_cli-3.34.2 → mapify_cli-3.35.1}/tests/skills_eval/review_corpus/evidence/control-audit.json +0 -0
  616. {mapify_cli-3.34.2 → mapify_cli-3.35.1}/tests/skills_eval/review_corpus/evidence/manual-run.json +0 -0
  617. {mapify_cli-3.34.2 → mapify_cli-3.35.1}/tests/skills_eval/review_corpus/evidence/manual-run.log +0 -0
  618. {mapify_cli-3.34.2 → mapify_cli-3.35.1}/tests/skills_eval/review_corpus/evidence/manual_repro.py +0 -0
  619. {mapify_cli-3.34.2 → mapify_cli-3.35.1}/tests/skills_eval/review_pilot_error_max_budget.sanitized.json +0 -0
  620. {mapify_cli-3.34.2 → mapify_cli-3.35.1}/tests/skills_eval/whole_skill/spike_runner.py +0 -0
  621. {mapify_cli-3.34.2 → mapify_cli-3.35.1}/tests/test_acceptance_additive_revision.py +0 -0
  622. {mapify_cli-3.34.2 → mapify_cli-3.35.1}/tests/test_acceptance_additive_revision_review.py +0 -0
  623. {mapify_cli-3.34.2 → mapify_cli-3.35.1}/tests/test_acceptance_proofs.py +0 -0
  624. {mapify_cli-3.34.2 → mapify_cli-3.35.1}/tests/test_agent_cli_correctness.py +0 -0
  625. {mapify_cli-3.34.2 → mapify_cli-3.35.1}/tests/test_agent_frontmatter.py +0 -0
  626. {mapify_cli-3.34.2 → mapify_cli-3.35.1}/tests/test_agent_memory.py +0 -0
  627. {mapify_cli-3.34.2 → mapify_cli-3.35.1}/tests/test_approval_hold.py +0 -0
  628. {mapify_cli-3.34.2 → mapify_cli-3.35.1}/tests/test_approved_baseline_gate_contract.py +0 -0
  629. {mapify_cli-3.34.2 → mapify_cli-3.35.1}/tests/test_artifact_schemas.py +0 -0
  630. {mapify_cli-3.34.2 → mapify_cli-3.35.1}/tests/test_auto_update.py +0 -0
  631. {mapify_cli-3.34.2 → mapify_cli-3.35.1}/tests/test_boundary_quality_report.py +0 -0
  632. {mapify_cli-3.34.2 → mapify_cli-3.35.1}/tests/test_bump_version.py +0 -0
  633. {mapify_cli-3.34.2 → mapify_cli-3.35.1}/tests/test_classify_scope_script.py +0 -0
  634. {mapify_cli-3.34.2 → mapify_cli-3.35.1}/tests/test_code_map.py +0 -0
  635. {mapify_cli-3.34.2 → mapify_cli-3.35.1}/tests/test_compaction_offload_integration.py +0 -0
  636. {mapify_cli-3.34.2 → mapify_cli-3.35.1}/tests/test_concurrent_dispatch_harness.py +0 -0
  637. {mapify_cli-3.34.2 → mapify_cli-3.35.1}/tests/test_context_usefulness.py +0 -0
  638. {mapify_cli-3.34.2 → mapify_cli-3.35.1}/tests/test_cross_ai_config.py +0 -0
  639. {mapify_cli-3.34.2 → mapify_cli-3.35.1}/tests/test_debug_reference_install.py +0 -0
  640. {mapify_cli-3.34.2 → mapify_cli-3.35.1}/tests/test_decomposition.py +0 -0
  641. {mapify_cli-3.34.2 → mapify_cli-3.35.1}/tests/test_dependency_graph.py +0 -0
  642. {mapify_cli-3.34.2 → mapify_cli-3.35.1}/tests/test_diagnostics.py +0 -0
  643. {mapify_cli-3.34.2 → mapify_cli-3.35.1}/tests/test_digest_schema.py +0 -0
  644. {mapify_cli-3.34.2 → mapify_cli-3.35.1}/tests/test_domain_skill.py +0 -0
  645. {mapify_cli-3.34.2 → mapify_cli-3.35.1}/tests/test_file_copier.py +0 -0
  646. {mapify_cli-3.34.2 → mapify_cli-3.35.1}/tests/test_governance_attack_fixtures.py +0 -0
  647. {mapify_cli-3.34.2 → mapify_cli-3.35.1}/tests/test_governance_report.py +0 -0
  648. {mapify_cli-3.34.2 → mapify_cli-3.35.1}/tests/test_grace_eval_schema.py +0 -0
  649. {mapify_cli-3.34.2 → mapify_cli-3.35.1}/tests/test_grace_eval_sweep.py +0 -0
  650. {mapify_cli-3.34.2 → mapify_cli-3.35.1}/tests/test_hook_patterns.py +0 -0
  651. {mapify_cli-3.34.2 → mapify_cli-3.35.1}/tests/test_init_import_graph.py +0 -0
  652. {mapify_cli-3.34.2 → mapify_cli-3.35.1}/tests/test_install_manifest.py +0 -0
  653. {mapify_cli-3.34.2 → mapify_cli-3.35.1}/tests/test_intent_detector.py +0 -0
  654. {mapify_cli-3.34.2 → mapify_cli-3.35.1}/tests/test_inv1_no_anthropic_optimize.py +0 -0
  655. {mapify_cli-3.34.2 → mapify_cli-3.35.1}/tests/test_jinja2_dep.py +0 -0
  656. {mapify_cli-3.34.2 → mapify_cli-3.35.1}/tests/test_locking.py +0 -0
  657. {mapify_cli-3.34.2 → mapify_cli-3.35.1}/tests/test_managed_file_copier.py +0 -0
  658. {mapify_cli-3.34.2 → mapify_cli-3.35.1}/tests/test_map_auto.py +0 -0
  659. {mapify_cli-3.34.2 → mapify_cli-3.35.1}/tests/test_map_interruption.py +0 -0
  660. {mapify_cli-3.34.2 → mapify_cli-3.35.1}/tests/test_map_orchestrator.py +0 -0
  661. {mapify_cli-3.34.2 → mapify_cli-3.35.1}/tests/test_map_token_meter.py +0 -0
  662. {mapify_cli-3.34.2 → mapify_cli-3.35.1}/tests/test_memory_capture.py +0 -0
  663. {mapify_cli-3.34.2 → mapify_cli-3.35.1}/tests/test_memory_events.py +0 -0
  664. {mapify_cli-3.34.2 → mapify_cli-3.35.1}/tests/test_memory_events_compat.py +0 -0
  665. {mapify_cli-3.34.2 → mapify_cli-3.35.1}/tests/test_memory_events_exit_status.py +0 -0
  666. {mapify_cli-3.34.2 → mapify_cli-3.35.1}/tests/test_memory_events_privacy.py +0 -0
  667. {mapify_cli-3.34.2 → mapify_cli-3.35.1}/tests/test_memory_events_review.py +0 -0
  668. {mapify_cli-3.34.2 → mapify_cli-3.35.1}/tests/test_memory_events_tools.py +0 -0
  669. {mapify_cli-3.34.2 → mapify_cli-3.35.1}/tests/test_memory_finalize.py +0 -0
  670. {mapify_cli-3.34.2 → mapify_cli-3.35.1}/tests/test_memory_integration.py +0 -0
  671. {mapify_cli-3.34.2 → mapify_cli-3.35.1}/tests/test_memory_recall.py +0 -0
  672. {mapify_cli-3.34.2 → mapify_cli-3.35.1}/tests/test_memory_review_fixes.py +0 -0
  673. {mapify_cli-3.34.2 → mapify_cli-3.35.1}/tests/test_minimality_eval.py +0 -0
  674. {mapify_cli-3.34.2 → mapify_cli-3.35.1}/tests/test_minimality_report.py +0 -0
  675. {mapify_cli-3.34.2 → mapify_cli-3.35.1}/tests/test_model_invocable_skills.py +0 -0
  676. {mapify_cli-3.34.2 → mapify_cli-3.35.1}/tests/test_mutation_path_normalization.py +0 -0
  677. {mapify_cli-3.34.2 → mapify_cli-3.35.1}/tests/test_orchestrator_acceptance.py +0 -0
  678. {mapify_cli-3.34.2 → mapify_cli-3.35.1}/tests/test_parallelism_observability.py +0 -0
  679. {mapify_cli-3.34.2 → mapify_cli-3.35.1}/tests/test_preset_commands.py +0 -0
  680. {mapify_cli-3.34.2 → mapify_cli-3.35.1}/tests/test_project_config.py +0 -0
  681. {mapify_cli-3.34.2 → mapify_cli-3.35.1}/tests/test_prompt_layering.py +0 -0
  682. {mapify_cli-3.34.2 → mapify_cli-3.35.1}/tests/test_prompt_profile_commands.py +0 -0
  683. {mapify_cli-3.34.2 → mapify_cli-3.35.1}/tests/test_python_version_requirement.py +0 -0
  684. {mapify_cli-3.34.2 → mapify_cli-3.35.1}/tests/test_pyyaml_dep.py +0 -0
  685. {mapify_cli-3.34.2 → mapify_cli-3.35.1}/tests/test_ralph_hooks.py +0 -0
  686. {mapify_cli-3.34.2 → mapify_cli-3.35.1}/tests/test_repair_attribution.py +0 -0
  687. {mapify_cli-3.34.2 → mapify_cli-3.35.1}/tests/test_repair_workflow_gate.py +0 -0
  688. {mapify_cli-3.34.2 → mapify_cli-3.35.1}/tests/test_repo_insight.py +0 -0
  689. {mapify_cli-3.34.2 → mapify_cli-3.35.1}/tests/test_research_eval.py +0 -0
  690. {mapify_cli-3.34.2 → mapify_cli-3.35.1}/tests/test_research_eval_compare.py +0 -0
  691. {mapify_cli-3.34.2 → mapify_cli-3.35.1}/tests/test_resequence_pending.py +0 -0
  692. {mapify_cli-3.34.2 → mapify_cli-3.35.1}/tests/test_review_branch_receipts.py +0 -0
  693. {mapify_cli-3.34.2 → mapify_cli-3.35.1}/tests/test_review_check_timeouts.py +0 -0
  694. {mapify_cli-3.34.2 → mapify_cli-3.35.1}/tests/test_review_corpus.py +0 -0
  695. {mapify_cli-3.34.2 → mapify_cli-3.35.1}/tests/test_review_explicit_base_legacy_override.py +0 -0
  696. {mapify_cli-3.34.2 → mapify_cli-3.35.1}/tests/test_review_pilot.py +0 -0
  697. {mapify_cli-3.34.2 → mapify_cli-3.35.1}/tests/test_review_pilot_git_cache.py +0 -0
  698. {mapify_cli-3.34.2 → mapify_cli-3.35.1}/tests/test_review_process_lifecycle.py +0 -0
  699. {mapify_cli-3.34.2 → mapify_cli-3.35.1}/tests/test_schemas.py +0 -0
  700. {mapify_cli-3.34.2 → mapify_cli-3.35.1}/tests/test_scope_classifier.py +0 -0
  701. {mapify_cli-3.34.2 → mapify_cli-3.35.1}/tests/test_settings_deny_globs.py +0 -0
  702. {mapify_cli-3.34.2 → mapify_cli-3.35.1}/tests/test_shell_json_pipes.py +0 -0
  703. {mapify_cli-3.34.2 → mapify_cli-3.35.1}/tests/test_skill_ir.py +0 -0
  704. {mapify_cli-3.34.2 → mapify_cli-3.35.1}/tests/test_skills_consistency.py +0 -0
  705. {mapify_cli-3.34.2 → mapify_cli-3.35.1}/tests/test_skills_eval_aggregator.py +0 -0
  706. {mapify_cli-3.34.2 → mapify_cli-3.35.1}/tests/test_skills_eval_apply.py +0 -0
  707. {mapify_cli-3.34.2 → mapify_cli-3.35.1}/tests/test_skills_eval_cli_optimize.py +0 -0
  708. {mapify_cli-3.34.2 → mapify_cli-3.35.1}/tests/test_skills_eval_dispatcher_env.py +0 -0
  709. {mapify_cli-3.34.2 → mapify_cli-3.35.1}/tests/test_skills_eval_dispatcher_timeout.py +0 -0
  710. {mapify_cli-3.34.2 → mapify_cli-3.35.1}/tests/test_skills_eval_fixtures.py +0 -0
  711. {mapify_cli-3.34.2 → mapify_cli-3.35.1}/tests/test_skills_eval_optimizer.py +0 -0
  712. {mapify_cli-3.34.2 → mapify_cli-3.35.1}/tests/test_skills_eval_optimizer_isolation.py +0 -0
  713. {mapify_cli-3.34.2 → mapify_cli-3.35.1}/tests/test_skills_eval_proposer.py +0 -0
  714. {mapify_cli-3.34.2 → mapify_cli-3.35.1}/tests/test_skills_eval_runner.py +0 -0
  715. {mapify_cli-3.34.2 → mapify_cli-3.35.1}/tests/test_skills_eval_schema.py +0 -0
  716. {mapify_cli-3.34.2 → mapify_cli-3.35.1}/tests/test_skills_eval_trajectory_bundle.py +0 -0
  717. {mapify_cli-3.34.2 → mapify_cli-3.35.1}/tests/test_skills_eval_trajectory_cli.py +0 -0
  718. {mapify_cli-3.34.2 → mapify_cli-3.35.1}/tests/test_skills_eval_trajectory_gates.py +0 -0
  719. {mapify_cli-3.34.2 → mapify_cli-3.35.1}/tests/test_skills_eval_trajectory_judge.py +0 -0
  720. {mapify_cli-3.34.2 → mapify_cli-3.35.1}/tests/test_skills_eval_trajectory_repeated.py +0 -0
  721. {mapify_cli-3.34.2 → mapify_cli-3.35.1}/tests/test_skills_eval_trajectory_report.py +0 -0
  722. {mapify_cli-3.34.2 → mapify_cli-3.35.1}/tests/test_skills_eval_trajectory_runner.py +0 -0
  723. {mapify_cli-3.34.2 → mapify_cli-3.35.1}/tests/test_skills_eval_trajectory_schema.py +0 -0
  724. {mapify_cli-3.34.2 → mapify_cli-3.35.1}/tests/test_skills_eval_viewer.py +0 -0
  725. {mapify_cli-3.34.2 → mapify_cli-3.35.1}/tests/test_slice5b_leak_guards.py +0 -0
  726. {mapify_cli-3.34.2 → mapify_cli-3.35.1}/tests/test_sofa_client.py +0 -0
  727. {mapify_cli-3.34.2 → mapify_cli-3.35.1}/tests/test_sofa_search.py +0 -0
  728. {mapify_cli-3.34.2 → mapify_cli-3.35.1}/tests/test_static_analysis_bash.py +0 -0
  729. {mapify_cli-3.34.2 → mapify_cli-3.35.1}/tests/test_statusline.py +0 -0
  730. {mapify_cli-3.34.2 → mapify_cli-3.35.1}/tests/test_template_render.py +0 -0
  731. {mapify_cli-3.34.2 → mapify_cli-3.35.1}/tests/test_token_budget.py +0 -0
  732. {mapify_cli-3.34.2 → mapify_cli-3.35.1}/tests/test_tool_output_offload.py +0 -0
  733. {mapify_cli-3.34.2 → mapify_cli-3.35.1}/tests/test_update_install.py +0 -0
  734. {mapify_cli-3.34.2 → mapify_cli-3.35.1}/tests/test_update_state.py +0 -0
  735. {mapify_cli-3.34.2 → mapify_cli-3.35.1}/tests/test_update_versions.py +0 -0
  736. {mapify_cli-3.34.2 → mapify_cli-3.35.1}/tests/test_validate_dependencies.py +0 -0
  737. {mapify_cli-3.34.2 → mapify_cli-3.35.1}/tests/test_verification_recorder.py +0 -0
  738. {mapify_cli-3.34.2 → mapify_cli-3.35.1}/tests/test_wave_eval_harness.py +0 -0
  739. {mapify_cli-3.34.2 → mapify_cli-3.35.1}/tests/test_wave_fixtures.py +0 -0
  740. {mapify_cli-3.34.2 → mapify_cli-3.35.1}/tests/test_wave_parallel_harness.py +0 -0
  741. {mapify_cli-3.34.2 → mapify_cli-3.35.1}/tests/test_wayfind_install.py +0 -0
  742. {mapify_cli-3.34.2 → mapify_cli-3.35.1}/tests/test_wayfind_runner.py +0 -0
  743. {mapify_cli-3.34.2 → mapify_cli-3.35.1}/tests/test_workflow_finalizer.py +0 -0
  744. {mapify_cli-3.34.2 → mapify_cli-3.35.1}/tests/test_workflow_gate.py +0 -0
  745. {mapify_cli-3.34.2 → mapify_cli-3.35.1}/tests/test_workflow_logger.py +0 -0
  746. {mapify_cli-3.34.2 → mapify_cli-3.35.1}/tests/test_workflow_state.py +0 -0
  747. {mapify_cli-3.34.2 → mapify_cli-3.35.1}/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.34.2
3
+ Version: 3.35.1
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
@@ -221,7 +221,7 @@ The DevOpsConf 2026 case study applies this process to a production Kubernetes P
221
221
  | `/map-auto` | Single-entry autonomous autopilot: routes a task through existing MAP workflows and drives the chain to a committed branch |
222
222
  | `/map-plan` | **Start here** for non-trivial work; clarify behavior and decompose tasks |
223
223
  | `/map-prd-review` | Review a PRD with a 0-10 readiness score, strengths, risks, and uncovered edge cases |
224
- | `/map-wayfind` | Too foggy to plan? Resolve design decisions on a durable map *before* `/map-plan` |
224
+ | `/map-wayfind` | Too foggy to plan? Resolve design decisions on a durable map *before* `/map-plan`; cite HTTP(S) docs, repo sources or hashed ticket-local observations |
225
225
  | `/map-efficient` | **Implement** an approved plan or already-scoped task |
226
226
  | `/map-fast` | Small, low-risk changes where full planning is overhead |
227
227
  | `/map-check` | Quality gates, verification, and artifact checks |
@@ -236,6 +236,8 @@ The DevOpsConf 2026 case study applies this process to a production Kubernetes P
236
236
 
237
237
  For stacked PRs, use `/map-review --base-ref runtime` (Codex: `$map-review --base-ref runtime`) to review only the child branch's changes against its parent's merge-base, including dirty work. Trusted review policy still comes from the default branch.
238
238
 
239
+ `/map-review` requires coverage of changed paths against the selected base, including local edits. Unchanged repository files remain optional, snapshot-bound dependency context. Codex `$map-review` uses a runner-owned app-server connection to deliver evidence directly to independent readers; the parent no longer copies every chunk. Interrupted collection resumes its saved threads and offsets. Runtime host probes, intact delivery acknowledgments and post-delivery finalization tokens are required before a Codex review can complete; the legacy native reader remains unverified.
240
+
239
241
  [Detailed usage and options →](docs/USAGE.md)
240
242
 
241
243
  ## Why Engineers Stick With It
@@ -245,9 +247,10 @@ For stacked PRs, use `/map-review --base-ref runtime` (Codex: `$map-review --bas
245
247
  - **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".
246
248
  - **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.
247
249
  - **Bounded review/fix cycles** — `/map-review` retains round history and unresolved findings across restarts, suppresses acknowledged repeat publications, and stops after three unsuccessful attempts for reconsideration—not approval. Explicit abandonment recovers stale pending rounds without resetting that budget. Incremental re-review falls back to full review when baseline or dependency coverage is uncertain.
248
- - **Snapshot-bound review receipts** — review completeness, code approval, runner-executed checks and human consent are separate records. Missing reviewers, scope gaps or stale evidence cannot approve a changed snapshot. Read-only reviewers receive base/current source and attribution in the bundle; Codex findings remain available with explicit `INCOMPLETE` status until capability enforcement is verified.
250
+ - **Snapshot-bound review receipts** — review completeness, code approval, runner-executed checks and human consent are separate records. Role-reviewer schemas require coverage receipts, and malformed receipts are rejected before capture. Missing reviewers, scope gaps or stale evidence cannot approve a changed snapshot. Incomplete or blocked collection stays pending in the same round until evidence is completed or the operator explicitly abandons it. Read-only reviewers receive base/current source and attribution in the bundle; Codex findings remain available with explicit `INCOMPLETE` status until capability enforcement is verified.
249
251
  - **Trusted review policy (shadow rollout)** — root and applicable ancestor `REVIEW.md` guidance comes from pinned default-branch Git objects, not proposed head content. Its hash joins the existing runtime/capability fingerprint; unknown authority prevents approval. New security/consent gates default to **shadow**: record diagnostics and pending snapshot/policy/action-bound holds without new blockers or weakening existing checks. Opt into **strict** with `review: {security_gates: strict}` in trusted-default `.map/config.yaml`; sensitive/unknown changes then require full coverage and independent security receipts regardless of auto/quick or disabled ledger enforcement. Human provenance is not yet verifiable: holds never become consent, and strict review-ready stays blocked. Corpus and evaluated promotion remain later #523 stages.
250
252
  - **Evidence-backed findings** — the existing Step A.3 separates confirmed defects, refuted claims and insufficient evidence. Validation checks the failure scenario, reachability and baseline; remediation searches a bounded scope for the same bug class. Adversarial agreement requires independent evidence-backed validations, not votes. Author reactions cannot close findings on their own.
253
+ - **Comment cleanup at workflow close** — internal IDs are removed from run-changed comments while preserving documentation delimiters and surrounding code. Ambiguous prose stays intact for manual review; cleanup is left unstaged for your normal commit process ([details](docs/USAGE.md)).
251
254
  - **Project memory** — `/map-learn` turns hard-won fixes and gotchas into reusable context, so the next session doesn't relearn them. Automatic session memory also records bounded, redacted prompt topics and conservative tool observations, even outside a MAP workflow; observed references are not proof of successful outcomes. See [session memory](docs/USAGE.md#session-memory) for limits and recovery behavior.
252
255
 
253
256
  <details>
@@ -256,8 +259,9 @@ For stacked PRs, use `/map-review --base-ref runtime` (Codex: `$map-review --bas
256
259
  - **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.
257
260
  - **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.
258
261
  - **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.
262
+ - **Monitor in managed worktrees** — Actor gates read authoritative parent metadata while checking the registered candidate diff from its creation SHA. Dispatch carries explicit metadata and worktree paths; no mutable runtime snapshot needs to be copied into candidates.
259
263
  - **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.
260
- - **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.
264
+ - **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. Soft constraints need coverage or a tradeoff rationale. File-drift checks recognize files that earlier dependencies explicitly create.
261
265
  - **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.
262
266
  - **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.
263
267
  - **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`.
@@ -288,12 +292,20 @@ command-driven dynamic status-line renderer. Codex supports project-level
288
292
  `[tui].status_line`, but only as an ordered list of built-in item identifiers,
289
293
  so MAP does not install the Claude renderer there.
290
294
 
295
+ The shared iteration logger accepts textual tool responses from either provider
296
+ without interrupting logging; effectiveness uses structured indicators when available.
297
+
291
298
  MAP is inspired by the [MAP cognitive architecture](https://github.com/Shanka123/MAP) (Nature Communications, 2025), which reported a 74% improvement on planning tasks. The CLI turns that idea into a practical software-development workflow.
292
299
 
293
300
  [Architecture deep-dive →](docs/ARCHITECTURE.md)
294
301
 
295
302
  ## What Success Looks Like
296
303
 
304
+ Planning and handoff manifest registration work before the first commit: a branch such as `feat/new-project` uses `.map/feat-new-project/`. Isolated Actor worktrees still require an initial commit.
305
+
306
+ `mapify init` keeps session logs, memory digests and Python bytecode out of Git
307
+ by adding runtime ignore rules. Specs and planning artifacts remain shareable.
308
+
297
309
  After a good first workflow, you should see:
298
310
 
299
311
  - a written plan or spec before implementation starts;
@@ -304,6 +316,13 @@ After a good first workflow, you should see:
304
316
 
305
317
  MAP review is useful, but it is not a replacement for engineering judgment. Serious changes still need human review. The goal is to make that review smaller, earlier, and better grounded.
306
318
 
319
+ Concurrent worktree groups must fit `execution.max_actors` (default 4, maximum 8).
320
+ Create later batches after earlier batches merge. Aborting a group preserves
321
+ recovery patches before deleting its worktrees.
322
+
323
+ Candidate and acceptance commits run the project's Git hooks. A hook rejection
324
+ blocks acceptance; configured verification checks also validate the merged result.
325
+
307
326
  ## Options
308
327
 
309
328
  <details>
@@ -176,7 +176,7 @@ The DevOpsConf 2026 case study applies this process to a production Kubernetes P
176
176
  | `/map-auto` | Single-entry autonomous autopilot: routes a task through existing MAP workflows and drives the chain to a committed branch |
177
177
  | `/map-plan` | **Start here** for non-trivial work; clarify behavior and decompose tasks |
178
178
  | `/map-prd-review` | Review a PRD with a 0-10 readiness score, strengths, risks, and uncovered edge cases |
179
- | `/map-wayfind` | Too foggy to plan? Resolve design decisions on a durable map *before* `/map-plan` |
179
+ | `/map-wayfind` | Too foggy to plan? Resolve design decisions on a durable map *before* `/map-plan`; cite HTTP(S) docs, repo sources or hashed ticket-local observations |
180
180
  | `/map-efficient` | **Implement** an approved plan or already-scoped task |
181
181
  | `/map-fast` | Small, low-risk changes where full planning is overhead |
182
182
  | `/map-check` | Quality gates, verification, and artifact checks |
@@ -191,6 +191,8 @@ The DevOpsConf 2026 case study applies this process to a production Kubernetes P
191
191
 
192
192
  For stacked PRs, use `/map-review --base-ref runtime` (Codex: `$map-review --base-ref runtime`) to review only the child branch's changes against its parent's merge-base, including dirty work. Trusted review policy still comes from the default branch.
193
193
 
194
+ `/map-review` requires coverage of changed paths against the selected base, including local edits. Unchanged repository files remain optional, snapshot-bound dependency context. Codex `$map-review` uses a runner-owned app-server connection to deliver evidence directly to independent readers; the parent no longer copies every chunk. Interrupted collection resumes its saved threads and offsets. Runtime host probes, intact delivery acknowledgments and post-delivery finalization tokens are required before a Codex review can complete; the legacy native reader remains unverified.
195
+
194
196
  [Detailed usage and options →](docs/USAGE.md)
195
197
 
196
198
  ## Why Engineers Stick With It
@@ -200,9 +202,10 @@ For stacked PRs, use `/map-review --base-ref runtime` (Codex: `$map-review --bas
200
202
  - **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".
201
203
  - **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.
202
204
  - **Bounded review/fix cycles** — `/map-review` retains round history and unresolved findings across restarts, suppresses acknowledged repeat publications, and stops after three unsuccessful attempts for reconsideration—not approval. Explicit abandonment recovers stale pending rounds without resetting that budget. Incremental re-review falls back to full review when baseline or dependency coverage is uncertain.
203
- - **Snapshot-bound review receipts** — review completeness, code approval, runner-executed checks and human consent are separate records. Missing reviewers, scope gaps or stale evidence cannot approve a changed snapshot. Read-only reviewers receive base/current source and attribution in the bundle; Codex findings remain available with explicit `INCOMPLETE` status until capability enforcement is verified.
205
+ - **Snapshot-bound review receipts** — review completeness, code approval, runner-executed checks and human consent are separate records. Role-reviewer schemas require coverage receipts, and malformed receipts are rejected before capture. Missing reviewers, scope gaps or stale evidence cannot approve a changed snapshot. Incomplete or blocked collection stays pending in the same round until evidence is completed or the operator explicitly abandons it. Read-only reviewers receive base/current source and attribution in the bundle; Codex findings remain available with explicit `INCOMPLETE` status until capability enforcement is verified.
204
206
  - **Trusted review policy (shadow rollout)** — root and applicable ancestor `REVIEW.md` guidance comes from pinned default-branch Git objects, not proposed head content. Its hash joins the existing runtime/capability fingerprint; unknown authority prevents approval. New security/consent gates default to **shadow**: record diagnostics and pending snapshot/policy/action-bound holds without new blockers or weakening existing checks. Opt into **strict** with `review: {security_gates: strict}` in trusted-default `.map/config.yaml`; sensitive/unknown changes then require full coverage and independent security receipts regardless of auto/quick or disabled ledger enforcement. Human provenance is not yet verifiable: holds never become consent, and strict review-ready stays blocked. Corpus and evaluated promotion remain later #523 stages.
205
207
  - **Evidence-backed findings** — the existing Step A.3 separates confirmed defects, refuted claims and insufficient evidence. Validation checks the failure scenario, reachability and baseline; remediation searches a bounded scope for the same bug class. Adversarial agreement requires independent evidence-backed validations, not votes. Author reactions cannot close findings on their own.
208
+ - **Comment cleanup at workflow close** — internal IDs are removed from run-changed comments while preserving documentation delimiters and surrounding code. Ambiguous prose stays intact for manual review; cleanup is left unstaged for your normal commit process ([details](docs/USAGE.md)).
206
209
  - **Project memory** — `/map-learn` turns hard-won fixes and gotchas into reusable context, so the next session doesn't relearn them. Automatic session memory also records bounded, redacted prompt topics and conservative tool observations, even outside a MAP workflow; observed references are not proof of successful outcomes. See [session memory](docs/USAGE.md#session-memory) for limits and recovery behavior.
207
210
 
208
211
  <details>
@@ -211,8 +214,9 @@ For stacked PRs, use `/map-review --base-ref runtime` (Codex: `$map-review --bas
211
214
  - **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.
212
215
  - **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.
213
216
  - **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.
217
+ - **Monitor in managed worktrees** — Actor gates read authoritative parent metadata while checking the registered candidate diff from its creation SHA. Dispatch carries explicit metadata and worktree paths; no mutable runtime snapshot needs to be copied into candidates.
214
218
  - **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.
215
- - **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.
219
+ - **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. Soft constraints need coverage or a tradeoff rationale. File-drift checks recognize files that earlier dependencies explicitly create.
216
220
  - **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.
217
221
  - **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.
218
222
  - **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`.
@@ -243,12 +247,20 @@ command-driven dynamic status-line renderer. Codex supports project-level
243
247
  `[tui].status_line`, but only as an ordered list of built-in item identifiers,
244
248
  so MAP does not install the Claude renderer there.
245
249
 
250
+ The shared iteration logger accepts textual tool responses from either provider
251
+ without interrupting logging; effectiveness uses structured indicators when available.
252
+
246
253
  MAP is inspired by the [MAP cognitive architecture](https://github.com/Shanka123/MAP) (Nature Communications, 2025), which reported a 74% improvement on planning tasks. The CLI turns that idea into a practical software-development workflow.
247
254
 
248
255
  [Architecture deep-dive →](docs/ARCHITECTURE.md)
249
256
 
250
257
  ## What Success Looks Like
251
258
 
259
+ Planning and handoff manifest registration work before the first commit: a branch such as `feat/new-project` uses `.map/feat-new-project/`. Isolated Actor worktrees still require an initial commit.
260
+
261
+ `mapify init` keeps session logs, memory digests and Python bytecode out of Git
262
+ by adding runtime ignore rules. Specs and planning artifacts remain shareable.
263
+
252
264
  After a good first workflow, you should see:
253
265
 
254
266
  - a written plan or spec before implementation starts;
@@ -259,6 +271,13 @@ After a good first workflow, you should see:
259
271
 
260
272
  MAP review is useful, but it is not a replacement for engineering judgment. Serious changes still need human review. The goal is to make that review smaller, earlier, and better grounded.
261
273
 
274
+ Concurrent worktree groups must fit `execution.max_actors` (default 4, maximum 8).
275
+ Create later batches after earlier batches merge. Aborting a group preserves
276
+ recovery patches before deleting its worktrees.
277
+
278
+ Candidate and acceptance commits run the project's Git hooks. A hook rejection
279
+ blocks acceptance; configured verification checks also validate the merged result.
280
+
262
281
  ## Options
263
282
 
264
283
  <details>
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "mapify-cli"
3
- version = "3.34.2"
3
+ version = "3.35.1"
4
4
  description = "MAP Framework installer - Modular Agentic Planner for Claude Code"
5
5
  authors = [{ name = "MAP Framework Contributors" }]
6
6
  readme = "README.md"
@@ -114,6 +114,8 @@ exclude = [
114
114
  # that otherwise ignores .venv and spuriously reports unresolved imports).
115
115
  venvPath = "."
116
116
  venv = ".venv"
117
+ # Installed runtime scripts import their siblings when invoked directly.
118
+ extraPaths = ["src/mapify_cli/templates/map/scripts"]
117
119
  exclude = [
118
120
  "**/node_modules",
119
121
  "**/__pycache__",
@@ -23,7 +23,7 @@ Or install globally:
23
23
  mapify check
24
24
  """
25
25
 
26
- __version__ = "3.34.2"
26
+ __version__ = "3.35.1"
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
@@ -144,6 +144,7 @@ from mapify_cli.provider_registry import (
144
144
  SUPPORTED_PROVIDERS,
145
145
  skill_dir,
146
146
  )
147
+ from mapify_cli.ralph_state import sanitize_branch_name
147
148
 
148
149
  if TYPE_CHECKING:
149
150
  from mapify_cli.install_manifest import InstallManifest
@@ -434,7 +435,7 @@ def _detect_provider(project_path: Path) -> str:
434
435
  def get_project_health(project_path: Path) -> dict[str, Any]:
435
436
  """Collect project health diagnostics for check/doctor commands."""
436
437
  agent_exclude = {"README.md", "CHANGELOG.md", "MCP-PATTERNS.md"}
437
- current_branch = sanitize_identifier(get_current_branch_name())
438
+ current_branch = sanitize_branch_name(get_current_branch_name())
438
439
  branch_dir = project_path / ".map" / current_branch
439
440
  detected = _detect_provider(project_path)
440
441
 
@@ -548,7 +549,7 @@ def get_current_branch_name() -> str:
548
549
 
549
550
  def get_branch_workspace_dir(project_path: Path, branch: str | None = None) -> Path:
550
551
  """Return the branch-scoped MAP workspace directory."""
551
- branch_name = sanitize_identifier(branch or get_current_branch_name())
552
+ branch_name = sanitize_branch_name(branch or get_current_branch_name())
552
553
  return project_path / ".map" / branch_name
553
554
 
554
555
 
@@ -563,7 +564,7 @@ def get_branch_artifact_templates() -> dict[str, str]:
563
564
 
564
565
  def initialize_branch_workspace(project_path: Path, branch: str | None = None) -> Path:
565
566
  """Create branch-scoped planning artifacts inside `.map/<branch>/`."""
566
- branch_name = sanitize_identifier(branch or get_current_branch_name())
567
+ branch_name = sanitize_branch_name(branch or get_current_branch_name())
567
568
  workspace_dir = get_branch_workspace_dir(project_path, branch_name)
568
569
  workspace_dir.mkdir(parents=True, exist_ok=True)
569
570
 
@@ -579,7 +580,7 @@ def get_branch_workspace_status(
579
580
  project_path: Path, branch: str | None = None
580
581
  ) -> dict[str, Any]:
581
582
  """Collect status information for branch-scoped planning artifacts."""
582
- branch_name = sanitize_identifier(branch or get_current_branch_name())
583
+ branch_name = sanitize_branch_name(branch or get_current_branch_name())
583
584
  workspace_dir = get_branch_workspace_dir(project_path, branch_name)
584
585
  expected_files = list(get_branch_artifact_templates().keys())
585
586
  existing_files = (
@@ -511,6 +511,8 @@ _UPDATE_RUNTIME_GITIGNORE_PATHS = (
511
511
  ".map/provider-refresh.lock",
512
512
  ".map/installer.lock",
513
513
  ".map/gitignore.lock",
514
+ ".map/**/sessions/",
515
+ "**/__pycache__/",
514
516
  ".claude/worktrees/",
515
517
  )
516
518
  _WINDOWS_GITIGNORE_MUTEX_TIMEOUT_MS = 30_000
@@ -1135,6 +1137,48 @@ def _gitignore_pattern_matches(pattern: bytes, path: bytes) -> bool:
1135
1137
  return match(0, 0)
1136
1138
 
1137
1139
 
1140
+ def _gitignore_patterns_may_overlap(left: bytes, right: bytes) -> bool:
1141
+ """Conservatively intersect patterns, including recursive directory rules.
1142
+
1143
+ Unlike matching a concrete path, either side can contain wildcards. Two
1144
+ wildcard-bearing segments may overlap; literal segments still constrain the
1145
+ result so unrelated negations do not cause repeated ignore-file growth.
1146
+ """
1147
+ def parts(pattern: bytes) -> list[bytes]:
1148
+ stripped = pattern.rstrip(b"/")
1149
+ segments = stripped.lstrip(b"/").split(b"/")
1150
+ return [b"**", *segments] if b"/" not in stripped else segments
1151
+
1152
+ a, b = parts(left), parts(right)
1153
+ pending = [(0, 0)]
1154
+ seen: set[tuple[int, int]] = set()
1155
+ while pending:
1156
+ i, j = pending.pop()
1157
+ if (i, j) in seen:
1158
+ continue
1159
+ seen.add((i, j))
1160
+ if i == len(a) and j == len(b):
1161
+ return True
1162
+ if i < len(a) and a[i] == b"**":
1163
+ pending.append((i + 1, j))
1164
+ if j < len(b):
1165
+ pending.append((i, j + 1))
1166
+ elif j < len(b) and b[j] == b"**":
1167
+ pending.append((i, j + 1))
1168
+ if i < len(a):
1169
+ pending.append((i + 1, j))
1170
+ elif i < len(a) and j < len(b):
1171
+ a_glob = any(char in a[i] for char in (b"*", b"?", b"["))
1172
+ b_glob = any(char in b[j] for char in (b"*", b"?", b"["))
1173
+ if (
1174
+ (a_glob and b_glob)
1175
+ or fnmatchcase(a[i], b[j])
1176
+ or fnmatchcase(b[j], a[i])
1177
+ ):
1178
+ pending.append((i + 1, j + 1))
1179
+ return False
1180
+
1181
+
1138
1182
  def _negation_targets_path(negation: bytes, required: bytes) -> bool:
1139
1183
  """Return whether a later ``!`` rule can plausibly re-include *required*.
1140
1184
 
@@ -1148,6 +1192,10 @@ def _negation_targets_path(negation: bytes, required: bytes) -> bool:
1148
1192
  if not pattern:
1149
1193
  return False
1150
1194
  base = required.rstrip(b"/")
1195
+ if b"*" in base and _gitignore_patterns_may_overlap(
1196
+ pattern, required
1197
+ ):
1198
+ return True
1151
1199
  if _gitignore_pattern_matches(pattern, base):
1152
1200
  return True
1153
1201
  pattern_base = pattern.rstrip(b"/")
@@ -55,7 +55,8 @@ def _sanitize_branch(name: str) -> str:
55
55
  rest of MAP (a path-traversal hardening applied there is inherited here).
56
56
  Behaviour: replaces every character not in [a-zA-Z0-9_.-] with '-',
57
57
  collapses consecutive '-', strips leading/trailing '-', and falls back to
58
- "default" on empty result or path-traversal indicators.
58
+ "default" on empty input or path-traversal indicators. Non-empty names
59
+ stripped entirely by normalization use a deterministic SHA-256 scope.
59
60
  """
60
61
  return sanitize_branch_name(name)
61
62
 
@@ -10,6 +10,7 @@ State persisted to .map/<branch>/ralph_state.json
10
10
  Circuit breaker config source: .claude/ralph-loop-config.json
11
11
  """
12
12
 
13
+ import hashlib
13
14
  import json
14
15
  import re
15
16
  from dataclasses import dataclass, field
@@ -299,7 +300,7 @@ def sanitize_branch_name(branch: str) -> str:
299
300
  # Prevent path traversal attempts
300
301
  if ".." in sanitized or sanitized.startswith("."):
301
302
  return "default"
302
- return sanitized or "default"
303
+ return sanitized or ("branch-" + hashlib.sha256(branch.encode("utf-8")).hexdigest() if branch else "default")
303
304
 
304
305
 
305
306
  @dataclass
@@ -1426,6 +1426,14 @@ REVIEW_BUNDLE_SCHEMA = {
1426
1426
  "files": {"type": "array", "items": {"type": "object"}},
1427
1427
  }, "required": ["status", "files"], "additionalProperties": True,
1428
1428
  },
1429
+ "context_artifacts": {
1430
+ "type": "object", "additionalProperties": {
1431
+ "type": "array", "items": {
1432
+ "type": "object", "properties": {"path": {"type": "string"}, "content": {"type": "string"}},
1433
+ "required": ["path", "content"], "additionalProperties": False,
1434
+ },
1435
+ },
1436
+ },
1429
1437
  "generated_at": {"type": "string"},
1430
1438
  "artifacts": {
1431
1439
  "type": "object",
@@ -289,6 +289,7 @@ Rules:
289
289
  8. Do NOT add temporal comments about test failure status (e.g., "currently FAILS",
290
290
  "expected to FAIL", "will PASS once fix is applied"). Write tests as permanent,
291
291
  clean code — the Red/Green state is transient and must not leak into comments.
292
+ 9. Every test must pass the vacuous-test check in section 5 (Testing Considerations).
292
293
 
293
294
  Output:
294
295
  - Test files created via Write tool
@@ -395,6 +396,31 @@ Document key decisions using this structure:
395
396
  - For each `VCn:` item in `validation_criteria`, implement or update at least one automated test that would fail without your change and pass with it.
396
397
  - Prefer naming tests with `vc<n>` (e.g., `test_vc1_*`, `TestVC1*`) so Monitor can deterministically confirm coverage.
397
398
 
399
+ **Vacuous-test check (do-nothing implementation).** For every new or changed
400
+ test, name the assertion that would FAIL if the code under test were replaced by
401
+ a do-nothing implementation: each function returns the empty value of its return
402
+ type (`None`, `[]`, `{}`, `""`, `0`, `False`) and performs no side effect (no
403
+ write, no call, no state change). No such assertion means the test is
404
+ **vacuous**: it stays green when the code does nothing, so it verifies no behavior.
405
+
406
+ Typical vacuous shapes:
407
+ - no assertion at all: `process(data)`
408
+ - only a type/shape check an empty value satisfies: `assert isinstance(parse("a,b"), list)`
409
+ - only `is not None` / truthiness of a value an empty implementation also returns: `assert load({"x": 1}) is not None`
410
+ - only checks values the test set up itself, never calling the code under test: `repo.get.return_value = item; assert repo.get(1) == item`
411
+ - expects an exception the test itself raises, not the code under test: `with pytest.raises(KeyError): load({"x": 1})["missing"]`
412
+
413
+ Not vacuous: `assert parse("a,b") == ["a", "b"]`; expected-exception tests
414
+ (`pytest.raises`, `assertRaises`, `toThrow`) whose exception is raised by the code
415
+ under test, because a do-nothing implementation does not raise it; and, for code
416
+ whose job is a side effect, assertions on that
417
+ effect (written content, persisted row, a call with the expected arguments).
418
+ This check catches tests that verify nothing; it does not prove a test checks the
419
+ right thing (that needs mutation testing).
420
+
421
+ Self-check before handoff: rewrite or drop any vacuous test. Monitor counts it as
422
+ no coverage.
423
+
398
424
  **Format**:
399
425
  ```text
400
426
  1. test_[function]_[scenario]_[expected]
@@ -484,6 +510,7 @@ exhaustive test matrices by default.
484
510
  - [ ] Trade-offs documented with alternatives
485
511
  - [ ] Test cases cover happy + edge + error paths
486
512
  - [ ] Each `validation_criteria` item has at least one automated test (or explicit N/A with reason)
513
+ - [ ] No vacuous tests: each new or changed test fails against a do-nothing implementation
487
514
  - [ ] Template variables `{{...}}` preserved in generated code
488
515
 
489
516
  ### Hallucination Guard
@@ -624,6 +624,32 @@ Untested code is broken code waiting to happen. Testability indicates design qua
624
624
  - [ ] Happy path + error cases tested?
625
625
  - [ ] Edge cases covered?
626
626
  - [ ] Tests are deterministic (not flaky)?
627
+ - [ ] Every new or changed test fails against a do-nothing implementation?
628
+
629
+ **Vacuous-test check (do-nothing implementation).** For every new or changed
630
+ test, name the assertion that would FAIL if the code under test were replaced by
631
+ a do-nothing implementation: each function returns the empty value of its return
632
+ type (`None`, `[]`, `{}`, `""`, `0`, `False`) and performs no side effect (no
633
+ write, no call, no state change). No such assertion means the test is
634
+ **vacuous**: it stays green when the code does nothing, so it verifies no behavior.
635
+
636
+ Typical vacuous shapes:
637
+ - no assertion at all: `process(data)`
638
+ - only a type/shape check an empty value satisfies: `assert isinstance(parse("a,b"), list)`
639
+ - only `is not None` / truthiness of a value an empty implementation also returns: `assert load({"x": 1}) is not None`
640
+ - only checks values the test set up itself, never calling the code under test: `repo.get.return_value = item; assert repo.get(1) == item`
641
+ - expects an exception the test itself raises, not the code under test: `with pytest.raises(KeyError): load({"x": 1})["missing"]`
642
+
643
+ Not vacuous: `assert parse("a,b") == ["a", "b"]`; expected-exception tests
644
+ (`pytest.raises`, `assertRaises`, `toThrow`) whose exception is raised by the code
645
+ under test, because a do-nothing implementation does not raise it; and, for code
646
+ whose job is a side effect, assertions on that
647
+ effect (written content, persisted row, a call with the expected arguments).
648
+ This check catches tests that verify nothing; it does not prove a test checks the
649
+ right thing (that needs mutation testing).
650
+
651
+ Score vacuous tests as absent: they add nothing to test coverage or test
652
+ quality, and code covered only by vacuous tests is scored as untested.
627
653
 
628
654
  <example type="score_9">
629
655
  **Code**: Dependency injection, 95% coverage, tests for happy path + 5 error cases + 3 edge cases, mocked external APIs, isolated tests.
@@ -62,6 +62,26 @@ subtask metadata) apply only to Actor subtask validation, not standalone review.
62
62
 
63
63
  ### Actor runtime preflight in linked worktrees
64
64
 
65
+ **Managed Actor worktree:** use the `monitor_instruction` returned by
66
+ `create_subtask_worktree` (also included by `build_context_block` after creation).
67
+ It names the parent metadata root, candidate checkout, and two absolute runner
68
+ commands with **both** `--metadata-root <parent>` and `--worktree <candidate>`.
69
+ Run those commands instead of the checkout-local commands below. The runner
70
+ verifies the registered subtask/path and shared Git repository, reads the
71
+ blueprint and prior results from the parent, and computes the candidate diff
72
+ against its registered creation SHA. Parent dirty baselines never filter this
73
+ diff. Read AAG/research/state from the supplied parent branch directory; run
74
+ source inspection, builds, and tests in the candidate. Do not copy or symlink
75
+ mutable `.map/` artifacts into managed candidates, and do not globally redirect
76
+ `CLAUDE_PROJECT_DIR` to the parent. Explicit roots apply only to these gates.
77
+ Missing/mismatched registration, metadata, or runner is a blocking setup error:
78
+ report `valid: false`, `recommendation: "block"`; never fall back to the parent
79
+ diff or silently use the checkout-local gates. Unset inherited Git directory
80
+ and index variables for independent source/test commands as well.
81
+
82
+ **Unmanaged checkout without explicit managed context:** use the existing
83
+ checkout-local preflight below. A standalone `/map-review` skips both variants.
84
+
65
85
  Before invoking either Actor-specific `.map/scripts/map_step_runner.py` gate,
66
86
  clear inherited `GIT_DIR`, `GIT_WORK_TREE`, `GIT_COMMON_DIR`, and
67
87
  `GIT_INDEX_FILE` in a subshell before resolving the checkout being reviewed
@@ -1263,18 +1283,49 @@ for user in users:
1263
1283
  2. Check if external calls can be mocked
1264
1284
  3. Review included tests for coverage
1265
1285
  4. Validate test assertions are specific
1286
+ 5. Apply the vacuous-test check below to every new or changed test
1287
+
1288
+ **Vacuous-test check (do-nothing implementation).** For every new or changed
1289
+ test, name the assertion that would FAIL if the code under test were replaced by
1290
+ a do-nothing implementation: each function returns the empty value of its return
1291
+ type (`None`, `[]`, `{}`, `""`, `0`, `False`) and performs no side effect (no
1292
+ write, no call, no state change). No such assertion means the test is
1293
+ **vacuous**: it stays green when the code does nothing, so it verifies no behavior.
1294
+
1295
+ Typical vacuous shapes:
1296
+ - no assertion at all: `process(data)`
1297
+ - only a type/shape check an empty value satisfies: `assert isinstance(parse("a,b"), list)`
1298
+ - only `is not None` / truthiness of a value an empty implementation also returns: `assert load({"x": 1}) is not None`
1299
+ - only checks values the test set up itself, never calling the code under test: `repo.get.return_value = item; assert repo.get(1) == item`
1300
+ - expects an exception the test itself raises, not the code under test: `with pytest.raises(KeyError): load({"x": 1})["missing"]`
1301
+
1302
+ Not vacuous: `assert parse("a,b") == ["a", "b"]`; expected-exception tests
1303
+ (`pytest.raises`, `assertRaises`, `toThrow`) whose exception is raised by the code
1304
+ under test, because a do-nothing implementation does not raise it; and, for code
1305
+ whose job is a side effect, assertions on that
1306
+ effect (written content, persisted row, a call with the expected arguments).
1307
+ This check catches tests that verify nothing; it does not prove a test checks the
1308
+ right thing (that needs mutation testing).
1309
+
1310
+ A vacuous test does not count as coverage: a `VCn` or requirement covered only
1311
+ by vacuous tests has `test_coverage != PASS` and falls under the contract
1312
+ Decision Rule. Report each one as a `testability` issue titled
1313
+ `Vacuous test: <test id>` that names the missing assertion; severity HIGH when it
1314
+ is the only test for a requirement, otherwise MEDIUM.
1266
1315
 
1267
1316
  #### Pass Criteria
1268
1317
  - Dependencies injected, not hardcoded
1269
1318
  - Tests cover happy path and errors
1270
1319
  - Tests are deterministic and isolated
1271
1320
  - Assertions validate specific behaviors
1321
+ - Every new or changed test fails against a do-nothing implementation
1272
1322
 
1273
1323
  #### Common Failures
1274
1324
  - Hardcoded external dependencies
1275
1325
  - Missing tests for error cases
1276
1326
  - Flaky tests (time-dependent, order-dependent)
1277
1327
  - Generic assertions (assertTrue without specifics)
1328
+ - Vacuous tests that stay green against a do-nothing implementation
1278
1329
 
1279
1330
  #### Severity Mapping
1280
1331
  - **Critical**: Untestable design blocking all testing
@@ -28,7 +28,16 @@ changed-hunk attribution instead of shell commands. A line existing at base does
28
28
  not prove a behavioral defect is pre-existing; require supporting context or mark
29
29
  attribution unknown. Request missing bundle content from the parent, never shell.
30
30
 
31
- Return the role's envelope with an additional receipt object:
31
+ When the prompt provides parent-served context, return its exact context_request
32
+ JSON and consume context_chunk continuations in this same session. Follow
33
+ next_offset through eof and check offsets, total size and hash metadata against the manifest before using it. Request
34
+ permitted resources from the parent, never read context object paths directly.
35
+ These intermediate responses are not findings or final review envelopes.
36
+ Wait for the parent's post-delivery finalization request before returning a final
37
+ review. In structured final envelopes, echo its session_id and finalization_token
38
+ in a context_receipt object.
39
+ Delivery is parent_acknowledged; it does not prove inspection or capability.
40
+ After receiving needed evidence, return the role's envelope with an additional receipt object:
32
41
  `receipt={covered_files:[],skipped_files:[],denied_access:[],check_evidence:[check_id]}`.
33
42
  List only paths actually inspected in covered_files; report skipped scope and denied
34
43
  required access honestly. Reading claims are self_reported, not tool_witnessed.
@@ -22,6 +22,32 @@ changes, never revert unrelated work, and adapt to concurrent edits.
22
22
  6. Never edit generated MAP trees directly when repository instructions designate a
23
23
  template source; edit the source and run the documented renderer.
24
24
  7. Do not commit, publish, delete broad paths, or expand scope without explicit authority.
25
+ 8. Before reporting, apply the vacuous-test check below to every test you wrote or
26
+ changed; rewrite or drop any vacuous test. Monitor counts it as no coverage.
27
+
28
+ # Vacuous tests
29
+
30
+ **Vacuous-test check (do-nothing implementation).** For every new or changed
31
+ test, name the assertion that would FAIL if the code under test were replaced by
32
+ a do-nothing implementation: each function returns the empty value of its return
33
+ type (`None`, `[]`, `{}`, `""`, `0`, `False`) and performs no side effect (no
34
+ write, no call, no state change). No such assertion means the test is
35
+ **vacuous**: it stays green when the code does nothing, so it verifies no behavior.
36
+
37
+ Typical vacuous shapes:
38
+ - no assertion at all: `process(data)`
39
+ - only a type/shape check an empty value satisfies: `assert isinstance(parse("a,b"), list)`
40
+ - only `is not None` / truthiness of a value an empty implementation also returns: `assert load({"x": 1}) is not None`
41
+ - only checks values the test set up itself, never calling the code under test: `repo.get.return_value = item; assert repo.get(1) == item`
42
+ - expects an exception the test itself raises, not the code under test: `with pytest.raises(KeyError): load({"x": 1})["missing"]`
43
+
44
+ Not vacuous: `assert parse("a,b") == ["a", "b"]`; expected-exception tests
45
+ (`pytest.raises`, `assertRaises`, `toThrow`) whose exception is raised by the code
46
+ under test, because a do-nothing implementation does not raise it; and, for code
47
+ whose job is a side effect, assertions on that
48
+ effect (written content, persisted row, a call with the expected arguments).
49
+ This check catches tests that verify nothing; it does not prove a test checks the
50
+ right thing (that needs mutation testing).
25
51
 
26
52
  # Output
27
53
 
@@ -88,6 +88,31 @@ Weighting: readability 40%, maintainability 30%, idioms 30%.
88
88
  0-1: hardcoded dependencies, no test consideration.
89
89
  Weighting: test coverage 40%, test quality 30%, design for testability 30%.
90
90
 
91
+ **Vacuous-test check (do-nothing implementation).** For every new or changed
92
+ test, name the assertion that would FAIL if the code under test were replaced by
93
+ a do-nothing implementation: each function returns the empty value of its return
94
+ type (`None`, `[]`, `{}`, `""`, `0`, `False`) and performs no side effect (no
95
+ write, no call, no state change). No such assertion means the test is
96
+ **vacuous**: it stays green when the code does nothing, so it verifies no behavior.
97
+
98
+ Typical vacuous shapes:
99
+ - no assertion at all: `process(data)`
100
+ - only a type/shape check an empty value satisfies: `assert isinstance(parse("a,b"), list)`
101
+ - only `is not None` / truthiness of a value an empty implementation also returns: `assert load({"x": 1}) is not None`
102
+ - only checks values the test set up itself, never calling the code under test: `repo.get.return_value = item; assert repo.get(1) == item`
103
+ - expects an exception the test itself raises, not the code under test: `with pytest.raises(KeyError): load({"x": 1})["missing"]`
104
+
105
+ Not vacuous: `assert parse("a,b") == ["a", "b"]`; expected-exception tests
106
+ (`pytest.raises`, `assertRaises`, `toThrow`) whose exception is raised by the code
107
+ under test, because a do-nothing implementation does not raise it; and, for code
108
+ whose job is a side effect, assertions on that
109
+ effect (written content, persisted row, a call with the expected arguments).
110
+ This check catches tests that verify nothing; it does not prove a test checks the
111
+ right thing (that needs mutation testing).
112
+
113
+ Score vacuous tests as absent: they add nothing to test coverage or test
114
+ quality, and code covered only by vacuous tests is scored as untested.
115
+
91
116
  ## 6. Performance (0-10)
92
117
  10: efficient algorithms, appropriate data structures, handles scale.
93
118
  8-9: reasonable complexity, minor optimizations possible.