mapify-cli 3.27.1__tar.gz → 3.28.0__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (542) hide show
  1. {mapify_cli-3.27.1 → mapify_cli-3.28.0}/PKG-INFO +1 -1
  2. {mapify_cli-3.27.1 → mapify_cli-3.28.0}/pyproject.toml +1 -1
  3. {mapify_cli-3.27.1 → mapify_cli-3.28.0}/src/mapify_cli/__init__.py +1 -1
  4. {mapify_cli-3.27.1 → mapify_cli-3.28.0}/src/mapify_cli/schemas.py +11 -2
  5. {mapify_cli-3.27.1 → mapify_cli-3.28.0}/src/mapify_cli/templates/codex/skills/map-review/SKILL.md +34 -8
  6. {mapify_cli-3.27.1 → mapify_cli-3.28.0}/src/mapify_cli/templates/codex/skills/map-review/adversarial-reference.md +53 -21
  7. {mapify_cli-3.27.1 → mapify_cli-3.28.0}/src/mapify_cli/templates/codex/skills/map-review/review-reference.md +95 -6
  8. {mapify_cli-3.27.1 → mapify_cli-3.28.0}/src/mapify_cli/templates/map/scripts/map_step_runner.py +751 -100
  9. {mapify_cli-3.27.1 → mapify_cli-3.28.0}/src/mapify_cli/templates/references/host-paths.md +1 -1
  10. {mapify_cli-3.27.1 → mapify_cli-3.28.0}/src/mapify_cli/templates/skills/map-review/SKILL.md +64 -21
  11. {mapify_cli-3.27.1 → mapify_cli-3.28.0}/src/mapify_cli/templates/skills/map-review/adversarial-reference.md +50 -17
  12. {mapify_cli-3.27.1 → mapify_cli-3.28.0}/src/mapify_cli/templates/skills/map-review/review-reference.md +109 -8
  13. {mapify_cli-3.27.1 → mapify_cli-3.28.0}/src/mapify_cli/templates_src/codex/skills/map-review/SKILL.md.jinja +34 -8
  14. {mapify_cli-3.27.1 → mapify_cli-3.28.0}/src/mapify_cli/templates_src/codex/skills/map-review/adversarial-reference.md.jinja +53 -21
  15. {mapify_cli-3.27.1 → mapify_cli-3.28.0}/src/mapify_cli/templates_src/codex/skills/map-review/review-reference.md.jinja +95 -6
  16. {mapify_cli-3.27.1 → mapify_cli-3.28.0}/src/mapify_cli/templates_src/map/scripts/map_step_runner.py.jinja +751 -100
  17. {mapify_cli-3.27.1 → mapify_cli-3.28.0}/src/mapify_cli/templates_src/references/host-paths.md.jinja +1 -1
  18. {mapify_cli-3.27.1 → mapify_cli-3.28.0}/src/mapify_cli/templates_src/skills/map-review/SKILL.md.jinja +64 -21
  19. {mapify_cli-3.27.1 → mapify_cli-3.28.0}/src/mapify_cli/templates_src/skills/map-review/adversarial-reference.md.jinja +50 -17
  20. {mapify_cli-3.27.1 → mapify_cli-3.28.0}/src/mapify_cli/templates_src/skills/map-review/review-reference.md.jinja +109 -8
  21. {mapify_cli-3.27.1 → mapify_cli-3.28.0}/tests/test_map_step_runner.py +226 -5
  22. {mapify_cli-3.27.1 → mapify_cli-3.28.0}/tests/test_review_verdict_ledger.py +434 -0
  23. {mapify_cli-3.27.1 → mapify_cli-3.28.0}/tests/test_skills.py +31 -8
  24. {mapify_cli-3.27.1 → mapify_cli-3.28.0}/.claude/hooks/README.md +0 -0
  25. {mapify_cli-3.27.1 → mapify_cli-3.28.0}/.claude/skills/README.md +0 -0
  26. {mapify_cli-3.27.1 → mapify_cli-3.28.0}/.gitignore +0 -0
  27. {mapify_cli-3.27.1 → mapify_cli-3.28.0}/LICENSE +0 -0
  28. {mapify_cli-3.27.1 → mapify_cli-3.28.0}/README.md +0 -0
  29. {mapify_cli-3.27.1 → mapify_cli-3.28.0}/src/mapify_cli/_locking.py +0 -0
  30. {mapify_cli-3.27.1 → mapify_cli-3.28.0}/src/mapify_cli/auto_update.py +0 -0
  31. {mapify_cli-3.27.1 → mapify_cli-3.28.0}/src/mapify_cli/boundary_quality_report.py +0 -0
  32. {mapify_cli-3.27.1 → mapify_cli-3.28.0}/src/mapify_cli/cli_ui.py +0 -0
  33. {mapify_cli-3.27.1 → mapify_cli-3.28.0}/src/mapify_cli/code_map.py +0 -0
  34. {mapify_cli-3.27.1 → mapify_cli-3.28.0}/src/mapify_cli/config/__init__.py +0 -0
  35. {mapify_cli-3.27.1 → mapify_cli-3.28.0}/src/mapify_cli/config/mcp.py +0 -0
  36. {mapify_cli-3.27.1 → mapify_cli-3.28.0}/src/mapify_cli/config/project_config.py +0 -0
  37. {mapify_cli-3.27.1 → mapify_cli-3.28.0}/src/mapify_cli/config/settings.py +0 -0
  38. {mapify_cli-3.27.1 → mapify_cli-3.28.0}/src/mapify_cli/delivery/__init__.py +0 -0
  39. {mapify_cli-3.27.1 → mapify_cli-3.28.0}/src/mapify_cli/delivery/agent_generator.py +0 -0
  40. {mapify_cli-3.27.1 → mapify_cli-3.28.0}/src/mapify_cli/delivery/codex_copier.py +0 -0
  41. {mapify_cli-3.27.1 → mapify_cli-3.28.0}/src/mapify_cli/delivery/domain_skill.py +0 -0
  42. {mapify_cli-3.27.1 → mapify_cli-3.28.0}/src/mapify_cli/delivery/file_copier.py +0 -0
  43. {mapify_cli-3.27.1 → mapify_cli-3.28.0}/src/mapify_cli/delivery/governance_report.py +0 -0
  44. {mapify_cli-3.27.1 → mapify_cli-3.28.0}/src/mapify_cli/delivery/managed_file_copier.py +0 -0
  45. {mapify_cli-3.27.1 → mapify_cli-3.28.0}/src/mapify_cli/delivery/providers.py +0 -0
  46. {mapify_cli-3.27.1 → mapify_cli-3.28.0}/src/mapify_cli/delivery/template_renderer.py +0 -0
  47. {mapify_cli-3.27.1 → mapify_cli-3.28.0}/src/mapify_cli/dependency_graph.py +0 -0
  48. {mapify_cli-3.27.1 → mapify_cli-3.28.0}/src/mapify_cli/grace_eval/__init__.py +0 -0
  49. {mapify_cli-3.27.1 → mapify_cli-3.28.0}/src/mapify_cli/grace_eval/schema.py +0 -0
  50. {mapify_cli-3.27.1 → mapify_cli-3.28.0}/src/mapify_cli/grace_eval/sweep.py +0 -0
  51. {mapify_cli-3.27.1 → mapify_cli-3.28.0}/src/mapify_cli/install_manifest.py +0 -0
  52. {mapify_cli-3.27.1 → mapify_cli-3.28.0}/src/mapify_cli/intent_detector.py +0 -0
  53. {mapify_cli-3.27.1 → mapify_cli-3.28.0}/src/mapify_cli/memory/__init__.py +0 -0
  54. {mapify_cli-3.27.1 → mapify_cli-3.28.0}/src/mapify_cli/memory/capture.py +0 -0
  55. {mapify_cli-3.27.1 → mapify_cli-3.28.0}/src/mapify_cli/memory/digest_schema.py +0 -0
  56. {mapify_cli-3.27.1 → mapify_cli-3.28.0}/src/mapify_cli/memory/finalize.py +0 -0
  57. {mapify_cli-3.27.1 → mapify_cli-3.28.0}/src/mapify_cli/memory/recall.py +0 -0
  58. {mapify_cli-3.27.1 → mapify_cli-3.28.0}/src/mapify_cli/minimality_eval.py +0 -0
  59. {mapify_cli-3.27.1 → mapify_cli-3.28.0}/src/mapify_cli/minimality_report.py +0 -0
  60. {mapify_cli-3.27.1 → mapify_cli-3.28.0}/src/mapify_cli/parallelism_observability.py +0 -0
  61. {mapify_cli-3.27.1 → mapify_cli-3.28.0}/src/mapify_cli/ralph_state.py +0 -0
  62. {mapify_cli-3.27.1 → mapify_cli-3.28.0}/src/mapify_cli/repo_insight.py +0 -0
  63. {mapify_cli-3.27.1 → mapify_cli-3.28.0}/src/mapify_cli/research_eval.py +0 -0
  64. {mapify_cli-3.27.1 → mapify_cli-3.28.0}/src/mapify_cli/research_eval_compare.py +0 -0
  65. {mapify_cli-3.27.1 → mapify_cli-3.28.0}/src/mapify_cli/scope_classifier.py +0 -0
  66. {mapify_cli-3.27.1 → mapify_cli-3.28.0}/src/mapify_cli/skill_ir.py +0 -0
  67. {mapify_cli-3.27.1 → mapify_cli-3.28.0}/src/mapify_cli/skills_eval/__init__.py +0 -0
  68. {mapify_cli-3.27.1 → mapify_cli-3.28.0}/src/mapify_cli/skills_eval/aggregator.py +0 -0
  69. {mapify_cli-3.27.1 → mapify_cli-3.28.0}/src/mapify_cli/skills_eval/apply_patcher.py +0 -0
  70. {mapify_cli-3.27.1 → mapify_cli-3.28.0}/src/mapify_cli/skills_eval/assertions.py +0 -0
  71. {mapify_cli-3.27.1 → mapify_cli-3.28.0}/src/mapify_cli/skills_eval/description_optimizer.py +0 -0
  72. {mapify_cli-3.27.1 → mapify_cli-3.28.0}/src/mapify_cli/skills_eval/dispatcher.py +0 -0
  73. {mapify_cli-3.27.1 → mapify_cli-3.28.0}/src/mapify_cli/skills_eval/eval_schema.py +0 -0
  74. {mapify_cli-3.27.1 → mapify_cli-3.28.0}/src/mapify_cli/skills_eval/proposer.py +0 -0
  75. {mapify_cli-3.27.1 → mapify_cli-3.28.0}/src/mapify_cli/skills_eval/runner.py +0 -0
  76. {mapify_cli-3.27.1 → mapify_cli-3.28.0}/src/mapify_cli/skills_eval/trajectory/__init__.py +0 -0
  77. {mapify_cli-3.27.1 → mapify_cli-3.28.0}/src/mapify_cli/skills_eval/trajectory/bundle.py +0 -0
  78. {mapify_cli-3.27.1 → mapify_cli-3.28.0}/src/mapify_cli/skills_eval/trajectory/dispatcher.py +0 -0
  79. {mapify_cli-3.27.1 → mapify_cli-3.28.0}/src/mapify_cli/skills_eval/trajectory/eval_schema.py +0 -0
  80. {mapify_cli-3.27.1 → mapify_cli-3.28.0}/src/mapify_cli/skills_eval/trajectory/gates.py +0 -0
  81. {mapify_cli-3.27.1 → mapify_cli-3.28.0}/src/mapify_cli/skills_eval/trajectory/judge.py +0 -0
  82. {mapify_cli-3.27.1 → mapify_cli-3.28.0}/src/mapify_cli/skills_eval/trajectory/repeated.py +0 -0
  83. {mapify_cli-3.27.1 → mapify_cli-3.28.0}/src/mapify_cli/skills_eval/trajectory/report.py +0 -0
  84. {mapify_cli-3.27.1 → mapify_cli-3.28.0}/src/mapify_cli/skills_eval/trajectory/runner.py +0 -0
  85. {mapify_cli-3.27.1 → mapify_cli-3.28.0}/src/mapify_cli/skills_eval/trajectory/seeding.py +0 -0
  86. {mapify_cli-3.27.1 → mapify_cli-3.28.0}/src/mapify_cli/skills_eval/viewer.py +0 -0
  87. {mapify_cli-3.27.1 → mapify_cli-3.28.0}/src/mapify_cli/templates/.gitignore +0 -0
  88. {mapify_cli-3.27.1 → mapify_cli-3.28.0}/src/mapify_cli/templates/CLAUDE.md +0 -0
  89. {mapify_cli-3.27.1 → mapify_cli-3.28.0}/src/mapify_cli/templates/agents/actor.md +0 -0
  90. {mapify_cli-3.27.1 → mapify_cli-3.28.0}/src/mapify_cli/templates/agents/documentation-reviewer.md +0 -0
  91. {mapify_cli-3.27.1 → mapify_cli-3.28.0}/src/mapify_cli/templates/agents/evaluator.md +0 -0
  92. {mapify_cli-3.27.1 → mapify_cli-3.28.0}/src/mapify_cli/templates/agents/final-verifier.md +0 -0
  93. {mapify_cli-3.27.1 → mapify_cli-3.28.0}/src/mapify_cli/templates/agents/monitor.md +0 -0
  94. {mapify_cli-3.27.1 → mapify_cli-3.28.0}/src/mapify_cli/templates/agents/predictor.md +0 -0
  95. {mapify_cli-3.27.1 → mapify_cli-3.28.0}/src/mapify_cli/templates/agents/reflector.md +0 -0
  96. {mapify_cli-3.27.1 → mapify_cli-3.28.0}/src/mapify_cli/templates/agents/research-agent.md +0 -0
  97. {mapify_cli-3.27.1 → mapify_cli-3.28.0}/src/mapify_cli/templates/agents/task-decomposer.md +0 -0
  98. {mapify_cli-3.27.1 → mapify_cli-3.28.0}/src/mapify_cli/templates/codex/AGENTS.md +0 -0
  99. {mapify_cli-3.27.1 → mapify_cli-3.28.0}/src/mapify_cli/templates/codex/agents/decomposer.toml +0 -0
  100. {mapify_cli-3.27.1 → mapify_cli-3.28.0}/src/mapify_cli/templates/codex/agents/evaluator.toml +0 -0
  101. {mapify_cli-3.27.1 → mapify_cli-3.28.0}/src/mapify_cli/templates/codex/agents/monitor.toml +0 -0
  102. {mapify_cli-3.27.1 → mapify_cli-3.28.0}/src/mapify_cli/templates/codex/agents/predictor.toml +0 -0
  103. {mapify_cli-3.27.1 → mapify_cli-3.28.0}/src/mapify_cli/templates/codex/agents/researcher.toml +0 -0
  104. {mapify_cli-3.27.1 → mapify_cli-3.28.0}/src/mapify_cli/templates/codex/config.toml +0 -0
  105. {mapify_cli-3.27.1 → mapify_cli-3.28.0}/src/mapify_cli/templates/codex/hooks/workflow-gate.py +0 -0
  106. {mapify_cli-3.27.1 → mapify_cli-3.28.0}/src/mapify_cli/templates/codex/hooks.json +0 -0
  107. {mapify_cli-3.27.1 → mapify_cli-3.28.0}/src/mapify_cli/templates/codex/skills/map-check/SKILL.md +0 -0
  108. {mapify_cli-3.27.1 → mapify_cli-3.28.0}/src/mapify_cli/templates/codex/skills/map-efficient/SKILL.md +0 -0
  109. {mapify_cli-3.27.1 → mapify_cli-3.28.0}/src/mapify_cli/templates/codex/skills/map-efficient/efficient-reference.md +0 -0
  110. {mapify_cli-3.27.1 → mapify_cli-3.28.0}/src/mapify_cli/templates/codex/skills/map-explain/SKILL.md +0 -0
  111. {mapify_cli-3.27.1 → mapify_cli-3.28.0}/src/mapify_cli/templates/codex/skills/map-fast/SKILL.md +0 -0
  112. {mapify_cli-3.27.1 → mapify_cli-3.28.0}/src/mapify_cli/templates/codex/skills/map-plan/SKILL.md +0 -0
  113. {mapify_cli-3.27.1 → mapify_cli-3.28.0}/src/mapify_cli/templates/codex/skills/map-understand/SKILL.md +0 -0
  114. {mapify_cli-3.27.1 → mapify_cli-3.28.0}/src/mapify_cli/templates/codex/skills/map-upgrade/SKILL.md +0 -0
  115. {mapify_cli-3.27.1 → mapify_cli-3.28.0}/src/mapify_cli/templates/hooks/README.md +0 -0
  116. {mapify_cli-3.27.1 → mapify_cli-3.28.0}/src/mapify_cli/templates/hooks/context-meter.py +0 -0
  117. {mapify_cli-3.27.1 → mapify_cli-3.28.0}/src/mapify_cli/templates/hooks/detect-clarification-triggers.py +0 -0
  118. {mapify_cli-3.27.1 → mapify_cli-3.28.0}/src/mapify_cli/templates/hooks/end-of-turn.sh +0 -0
  119. {mapify_cli-3.27.1 → mapify_cli-3.28.0}/src/mapify_cli/templates/hooks/map-memory-capture.py +0 -0
  120. {mapify_cli-3.27.1 → mapify_cli-3.28.0}/src/mapify_cli/templates/hooks/map-memory-endmark.py +0 -0
  121. {mapify_cli-3.27.1 → mapify_cli-3.28.0}/src/mapify_cli/templates/hooks/map-memory-finalize.py +0 -0
  122. {mapify_cli-3.27.1 → mapify_cli-3.28.0}/src/mapify_cli/templates/hooks/map-memory-recall.py +0 -0
  123. {mapify_cli-3.27.1 → mapify_cli-3.28.0}/src/mapify_cli/templates/hooks/map-statusline.py +0 -0
  124. {mapify_cli-3.27.1 → mapify_cli-3.28.0}/src/mapify_cli/templates/hooks/map-token-meter.py +0 -0
  125. {mapify_cli-3.27.1 → mapify_cli-3.28.0}/src/mapify_cli/templates/hooks/post-compact-context.py +0 -0
  126. {mapify_cli-3.27.1 → mapify_cli-3.28.0}/src/mapify_cli/templates/hooks/pre-compact-save-transcript.py +0 -0
  127. {mapify_cli-3.27.1 → mapify_cli-3.28.0}/src/mapify_cli/templates/hooks/ralph-context-pruner.py +0 -0
  128. {mapify_cli-3.27.1 → mapify_cli-3.28.0}/src/mapify_cli/templates/hooks/ralph-iteration-logger.py +0 -0
  129. {mapify_cli-3.27.1 → mapify_cli-3.28.0}/src/mapify_cli/templates/hooks/safety-guardrails.py +0 -0
  130. {mapify_cli-3.27.1 → mapify_cli-3.28.0}/src/mapify_cli/templates/hooks/scrub-internal-ids.py +0 -0
  131. {mapify_cli-3.27.1 → mapify_cli-3.28.0}/src/mapify_cli/templates/hooks/workflow-context-injector.py +0 -0
  132. {mapify_cli-3.27.1 → mapify_cli-3.28.0}/src/mapify_cli/templates/hooks/workflow-gate.py +0 -0
  133. {mapify_cli-3.27.1 → mapify_cli-3.28.0}/src/mapify_cli/templates/map/scripts/classify_scope.py +0 -0
  134. {mapify_cli-3.27.1 → mapify_cli-3.28.0}/src/mapify_cli/templates/map/scripts/diagnostics.py +0 -0
  135. {mapify_cli-3.27.1 → mapify_cli-3.28.0}/src/mapify_cli/templates/map/scripts/map_orchestrator.py +0 -0
  136. {mapify_cli-3.27.1 → mapify_cli-3.28.0}/src/mapify_cli/templates/map/scripts/map_utils.py +0 -0
  137. {mapify_cli-3.27.1 → mapify_cli-3.28.0}/src/mapify_cli/templates/map/scripts/scrub_internal_ids.py +0 -0
  138. {mapify_cli-3.27.1 → mapify_cli-3.28.0}/src/mapify_cli/templates/map/scripts/sofa_client.py +0 -0
  139. {mapify_cli-3.27.1 → mapify_cli-3.28.0}/src/mapify_cli/templates/map/scripts/validate_spec_citations.py +0 -0
  140. {mapify_cli-3.27.1 → mapify_cli-3.28.0}/src/mapify_cli/templates/map/scripts/wayfind_runner.py +0 -0
  141. {mapify_cli-3.27.1 → mapify_cli-3.28.0}/src/mapify_cli/templates/map/static-analysis/analyze.sh +0 -0
  142. {mapify_cli-3.27.1 → mapify_cli-3.28.0}/src/mapify_cli/templates/map/static-analysis/handlers/common.sh +0 -0
  143. {mapify_cli-3.27.1 → mapify_cli-3.28.0}/src/mapify_cli/templates/map/static-analysis/handlers/go.sh +0 -0
  144. {mapify_cli-3.27.1 → mapify_cli-3.28.0}/src/mapify_cli/templates/map/static-analysis/handlers/python.sh +0 -0
  145. {mapify_cli-3.27.1 → mapify_cli-3.28.0}/src/mapify_cli/templates/map/static-analysis/handlers/rust.sh +0 -0
  146. {mapify_cli-3.27.1 → mapify_cli-3.28.0}/src/mapify_cli/templates/map/static-analysis/handlers/typescript.sh +0 -0
  147. {mapify_cli-3.27.1 → mapify_cli-3.28.0}/src/mapify_cli/templates/ralph-loop-config.json +0 -0
  148. {mapify_cli-3.27.1 → mapify_cli-3.28.0}/src/mapify_cli/templates/references/bash-guidelines.md +0 -0
  149. {mapify_cli-3.27.1 → mapify_cli-3.28.0}/src/mapify_cli/templates/references/decomposition-examples.md +0 -0
  150. {mapify_cli-3.27.1 → mapify_cli-3.28.0}/src/mapify_cli/templates/references/escalation-matrix.md +0 -0
  151. {mapify_cli-3.27.1 → mapify_cli-3.28.0}/src/mapify_cli/templates/references/hook-patterns.md +0 -0
  152. {mapify_cli-3.27.1 → mapify_cli-3.28.0}/src/mapify_cli/templates/references/map-json-output-contracts.md +0 -0
  153. {mapify_cli-3.27.1 → mapify_cli-3.28.0}/src/mapify_cli/templates/references/map-output-examples.md +0 -0
  154. {mapify_cli-3.27.1 → mapify_cli-3.28.0}/src/mapify_cli/templates/references/map-xml-prompt-envelopes.md +0 -0
  155. {mapify_cli-3.27.1 → mapify_cli-3.28.0}/src/mapify_cli/templates/references/mcp-usage-examples.md +0 -0
  156. {mapify_cli-3.27.1 → mapify_cli-3.28.0}/src/mapify_cli/templates/references/step-state-schema.md +0 -0
  157. {mapify_cli-3.27.1 → mapify_cli-3.28.0}/src/mapify_cli/templates/references/workflow-state-schema.md +0 -0
  158. {mapify_cli-3.27.1 → mapify_cli-3.28.0}/src/mapify_cli/templates/rules/learned/README.md +0 -0
  159. {mapify_cli-3.27.1 → mapify_cli-3.28.0}/src/mapify_cli/templates/settings.json +0 -0
  160. {mapify_cli-3.27.1 → mapify_cli-3.28.0}/src/mapify_cli/templates/skills/README.md +0 -0
  161. {mapify_cli-3.27.1 → mapify_cli-3.28.0}/src/mapify_cli/templates/skills/map-architecture/SKILL.md +0 -0
  162. {mapify_cli-3.27.1 → mapify_cli-3.28.0}/src/mapify_cli/templates/skills/map-auto/SKILL.md +0 -0
  163. {mapify_cli-3.27.1 → mapify_cli-3.28.0}/src/mapify_cli/templates/skills/map-auto/auto-reference.md +0 -0
  164. {mapify_cli-3.27.1 → mapify_cli-3.28.0}/src/mapify_cli/templates/skills/map-check/SKILL.md +0 -0
  165. {mapify_cli-3.27.1 → mapify_cli-3.28.0}/src/mapify_cli/templates/skills/map-check/check-reference.md +0 -0
  166. {mapify_cli-3.27.1 → mapify_cli-3.28.0}/src/mapify_cli/templates/skills/map-debug/SKILL.md +0 -0
  167. {mapify_cli-3.27.1 → mapify_cli-3.28.0}/src/mapify_cli/templates/skills/map-efficient/SKILL.md +0 -0
  168. {mapify_cli-3.27.1 → mapify_cli-3.28.0}/src/mapify_cli/templates/skills/map-efficient/efficient-reference.md +0 -0
  169. {mapify_cli-3.27.1 → mapify_cli-3.28.0}/src/mapify_cli/templates/skills/map-explain/SKILL.md +0 -0
  170. {mapify_cli-3.27.1 → mapify_cli-3.28.0}/src/mapify_cli/templates/skills/map-fast/SKILL.md +0 -0
  171. {mapify_cli-3.27.1 → mapify_cli-3.28.0}/src/mapify_cli/templates/skills/map-learn/SKILL.md +0 -0
  172. {mapify_cli-3.27.1 → mapify_cli-3.28.0}/src/mapify_cli/templates/skills/map-learn/templates/example-rules.md +0 -0
  173. {mapify_cli-3.27.1 → mapify_cli-3.28.0}/src/mapify_cli/templates/skills/map-learn/templates/rules-unconditional.md +0 -0
  174. {mapify_cli-3.27.1 → mapify_cli-3.28.0}/src/mapify_cli/templates/skills/map-learn/templates/rules-with-paths.md +0 -0
  175. {mapify_cli-3.27.1 → mapify_cli-3.28.0}/src/mapify_cli/templates/skills/map-memory-now/SKILL.md +0 -0
  176. {mapify_cli-3.27.1 → mapify_cli-3.28.0}/src/mapify_cli/templates/skills/map-plan/SKILL.md +0 -0
  177. {mapify_cli-3.27.1 → mapify_cli-3.28.0}/src/mapify_cli/templates/skills/map-plan/plan-reference.md +0 -0
  178. {mapify_cli-3.27.1 → mapify_cli-3.28.0}/src/mapify_cli/templates/skills/map-prd-review/SKILL.md +0 -0
  179. {mapify_cli-3.27.1 → mapify_cli-3.28.0}/src/mapify_cli/templates/skills/map-release/SKILL.md +0 -0
  180. {mapify_cli-3.27.1 → mapify_cli-3.28.0}/src/mapify_cli/templates/skills/map-release/release-reference.md +0 -0
  181. {mapify_cli-3.27.1 → mapify_cli-3.28.0}/src/mapify_cli/templates/skills/map-resume/SKILL.md +0 -0
  182. {mapify_cli-3.27.1 → mapify_cli-3.28.0}/src/mapify_cli/templates/skills/map-resume/resume-reference.md +0 -0
  183. {mapify_cli-3.27.1 → mapify_cli-3.28.0}/src/mapify_cli/templates/skills/map-skill-eval/SKILL.md +0 -0
  184. {mapify_cli-3.27.1 → mapify_cli-3.28.0}/src/mapify_cli/templates/skills/map-so-search/SKILL.md +0 -0
  185. {mapify_cli-3.27.1 → mapify_cli-3.28.0}/src/mapify_cli/templates/skills/map-so-search/scripts/sofa_search.py +0 -0
  186. {mapify_cli-3.27.1 → mapify_cli-3.28.0}/src/mapify_cli/templates/skills/map-state/SKILL.md +0 -0
  187. {mapify_cli-3.27.1 → mapify_cli-3.28.0}/src/mapify_cli/templates/skills/map-state/scripts/check-complete.sh +0 -0
  188. {mapify_cli-3.27.1 → mapify_cli-3.28.0}/src/mapify_cli/templates/skills/map-state/scripts/get-plan-path.sh +0 -0
  189. {mapify_cli-3.27.1 → mapify_cli-3.28.0}/src/mapify_cli/templates/skills/map-state/scripts/init-session.sh +0 -0
  190. {mapify_cli-3.27.1 → mapify_cli-3.28.0}/src/mapify_cli/templates/skills/map-state/scripts/show-focus.sh +0 -0
  191. {mapify_cli-3.27.1 → mapify_cli-3.28.0}/src/mapify_cli/templates/skills/map-state/templates/findings.md +0 -0
  192. {mapify_cli-3.27.1 → mapify_cli-3.28.0}/src/mapify_cli/templates/skills/map-state/templates/iteration_history.md +0 -0
  193. {mapify_cli-3.27.1 → mapify_cli-3.28.0}/src/mapify_cli/templates/skills/map-state/templates/progress.md +0 -0
  194. {mapify_cli-3.27.1 → mapify_cli-3.28.0}/src/mapify_cli/templates/skills/map-state/templates/task_plan.md +0 -0
  195. {mapify_cli-3.27.1 → mapify_cli-3.28.0}/src/mapify_cli/templates/skills/map-task/SKILL.md +0 -0
  196. {mapify_cli-3.27.1 → mapify_cli-3.28.0}/src/mapify_cli/templates/skills/map-tdd/SKILL.md +0 -0
  197. {mapify_cli-3.27.1 → mapify_cli-3.28.0}/src/mapify_cli/templates/skills/map-tokenreport/SKILL.md +0 -0
  198. {mapify_cli-3.27.1 → mapify_cli-3.28.0}/src/mapify_cli/templates/skills/map-understand/SKILL.md +0 -0
  199. {mapify_cli-3.27.1 → mapify_cli-3.28.0}/src/mapify_cli/templates/skills/map-upgrade/SKILL.md +0 -0
  200. {mapify_cli-3.27.1 → mapify_cli-3.28.0}/src/mapify_cli/templates/skills/map-wayfind/SKILL.md +0 -0
  201. {mapify_cli-3.27.1 → mapify_cli-3.28.0}/src/mapify_cli/templates/skills/map-wayfind/wayfind-reference.md +0 -0
  202. {mapify_cli-3.27.1 → mapify_cli-3.28.0}/src/mapify_cli/templates/skills/skill-rules.json +0 -0
  203. {mapify_cli-3.27.1 → mapify_cli-3.28.0}/src/mapify_cli/templates/workflow-rules.json +0 -0
  204. {mapify_cli-3.27.1 → mapify_cli-3.28.0}/src/mapify_cli/templates_src/.gitignore.jinja +0 -0
  205. {mapify_cli-3.27.1 → mapify_cli-3.28.0}/src/mapify_cli/templates_src/CLAUDE.md.jinja +0 -0
  206. {mapify_cli-3.27.1 → mapify_cli-3.28.0}/src/mapify_cli/templates_src/_partials/auto-update-preflight.md.jinja +0 -0
  207. {mapify_cli-3.27.1 → mapify_cli-3.28.0}/src/mapify_cli/templates_src/_partials/manual-upgrade-flow.md.jinja +0 -0
  208. {mapify_cli-3.27.1 → mapify_cli-3.28.0}/src/mapify_cli/templates_src/agents/actor.md.jinja +0 -0
  209. {mapify_cli-3.27.1 → mapify_cli-3.28.0}/src/mapify_cli/templates_src/agents/documentation-reviewer.md.jinja +0 -0
  210. {mapify_cli-3.27.1 → mapify_cli-3.28.0}/src/mapify_cli/templates_src/agents/evaluator.md.jinja +0 -0
  211. {mapify_cli-3.27.1 → mapify_cli-3.28.0}/src/mapify_cli/templates_src/agents/final-verifier.md.jinja +0 -0
  212. {mapify_cli-3.27.1 → mapify_cli-3.28.0}/src/mapify_cli/templates_src/agents/monitor.md.jinja +0 -0
  213. {mapify_cli-3.27.1 → mapify_cli-3.28.0}/src/mapify_cli/templates_src/agents/predictor.md.jinja +0 -0
  214. {mapify_cli-3.27.1 → mapify_cli-3.28.0}/src/mapify_cli/templates_src/agents/reflector.md.jinja +0 -0
  215. {mapify_cli-3.27.1 → mapify_cli-3.28.0}/src/mapify_cli/templates_src/agents/research-agent.md.jinja +0 -0
  216. {mapify_cli-3.27.1 → mapify_cli-3.28.0}/src/mapify_cli/templates_src/agents/task-decomposer.md.jinja +0 -0
  217. {mapify_cli-3.27.1 → mapify_cli-3.28.0}/src/mapify_cli/templates_src/codex/AGENTS.md.jinja +0 -0
  218. {mapify_cli-3.27.1 → mapify_cli-3.28.0}/src/mapify_cli/templates_src/codex/agents/decomposer.toml.jinja +0 -0
  219. {mapify_cli-3.27.1 → mapify_cli-3.28.0}/src/mapify_cli/templates_src/codex/agents/evaluator.toml.jinja +0 -0
  220. {mapify_cli-3.27.1 → mapify_cli-3.28.0}/src/mapify_cli/templates_src/codex/agents/monitor.toml.jinja +0 -0
  221. {mapify_cli-3.27.1 → mapify_cli-3.28.0}/src/mapify_cli/templates_src/codex/agents/predictor.toml.jinja +0 -0
  222. {mapify_cli-3.27.1 → mapify_cli-3.28.0}/src/mapify_cli/templates_src/codex/agents/researcher.toml.jinja +0 -0
  223. {mapify_cli-3.27.1 → mapify_cli-3.28.0}/src/mapify_cli/templates_src/codex/config.toml.jinja +0 -0
  224. {mapify_cli-3.27.1 → mapify_cli-3.28.0}/src/mapify_cli/templates_src/codex/hooks/workflow-gate.py.jinja +0 -0
  225. {mapify_cli-3.27.1 → mapify_cli-3.28.0}/src/mapify_cli/templates_src/codex/hooks.json.jinja +0 -0
  226. {mapify_cli-3.27.1 → mapify_cli-3.28.0}/src/mapify_cli/templates_src/codex/skills/map-check/SKILL.md.jinja +0 -0
  227. {mapify_cli-3.27.1 → mapify_cli-3.28.0}/src/mapify_cli/templates_src/codex/skills/map-efficient/SKILL.md.jinja +0 -0
  228. {mapify_cli-3.27.1 → mapify_cli-3.28.0}/src/mapify_cli/templates_src/codex/skills/map-efficient/efficient-reference.md.jinja +0 -0
  229. {mapify_cli-3.27.1 → mapify_cli-3.28.0}/src/mapify_cli/templates_src/codex/skills/map-explain/SKILL.md.jinja +0 -0
  230. {mapify_cli-3.27.1 → mapify_cli-3.28.0}/src/mapify_cli/templates_src/codex/skills/map-fast/SKILL.md.jinja +0 -0
  231. {mapify_cli-3.27.1 → mapify_cli-3.28.0}/src/mapify_cli/templates_src/codex/skills/map-plan/SKILL.md.jinja +0 -0
  232. {mapify_cli-3.27.1 → mapify_cli-3.28.0}/src/mapify_cli/templates_src/codex/skills/map-understand/SKILL.md.jinja +0 -0
  233. {mapify_cli-3.27.1 → mapify_cli-3.28.0}/src/mapify_cli/templates_src/codex/skills/map-upgrade/SKILL.md.jinja +0 -0
  234. {mapify_cli-3.27.1 → mapify_cli-3.28.0}/src/mapify_cli/templates_src/hooks/README.md.jinja +0 -0
  235. {mapify_cli-3.27.1 → mapify_cli-3.28.0}/src/mapify_cli/templates_src/hooks/context-meter.py.jinja +0 -0
  236. {mapify_cli-3.27.1 → mapify_cli-3.28.0}/src/mapify_cli/templates_src/hooks/detect-clarification-triggers.py.jinja +0 -0
  237. {mapify_cli-3.27.1 → mapify_cli-3.28.0}/src/mapify_cli/templates_src/hooks/end-of-turn.sh.jinja +0 -0
  238. {mapify_cli-3.27.1 → mapify_cli-3.28.0}/src/mapify_cli/templates_src/hooks/map-memory-capture.py.jinja +0 -0
  239. {mapify_cli-3.27.1 → mapify_cli-3.28.0}/src/mapify_cli/templates_src/hooks/map-memory-endmark.py.jinja +0 -0
  240. {mapify_cli-3.27.1 → mapify_cli-3.28.0}/src/mapify_cli/templates_src/hooks/map-memory-finalize.py.jinja +0 -0
  241. {mapify_cli-3.27.1 → mapify_cli-3.28.0}/src/mapify_cli/templates_src/hooks/map-memory-recall.py.jinja +0 -0
  242. {mapify_cli-3.27.1 → mapify_cli-3.28.0}/src/mapify_cli/templates_src/hooks/map-statusline.py.jinja +0 -0
  243. {mapify_cli-3.27.1 → mapify_cli-3.28.0}/src/mapify_cli/templates_src/hooks/map-token-meter.py.jinja +0 -0
  244. {mapify_cli-3.27.1 → mapify_cli-3.28.0}/src/mapify_cli/templates_src/hooks/post-compact-context.py.jinja +0 -0
  245. {mapify_cli-3.27.1 → mapify_cli-3.28.0}/src/mapify_cli/templates_src/hooks/pre-compact-save-transcript.py.jinja +0 -0
  246. {mapify_cli-3.27.1 → mapify_cli-3.28.0}/src/mapify_cli/templates_src/hooks/ralph-context-pruner.py.jinja +0 -0
  247. {mapify_cli-3.27.1 → mapify_cli-3.28.0}/src/mapify_cli/templates_src/hooks/ralph-iteration-logger.py.jinja +0 -0
  248. {mapify_cli-3.27.1 → mapify_cli-3.28.0}/src/mapify_cli/templates_src/hooks/safety-guardrails.py.jinja +0 -0
  249. {mapify_cli-3.27.1 → mapify_cli-3.28.0}/src/mapify_cli/templates_src/hooks/scrub-internal-ids.py.jinja +0 -0
  250. {mapify_cli-3.27.1 → mapify_cli-3.28.0}/src/mapify_cli/templates_src/hooks/workflow-context-injector.py.jinja +0 -0
  251. {mapify_cli-3.27.1 → mapify_cli-3.28.0}/src/mapify_cli/templates_src/hooks/workflow-gate.py.jinja +0 -0
  252. {mapify_cli-3.27.1 → mapify_cli-3.28.0}/src/mapify_cli/templates_src/map/scripts/classify_scope.py.jinja +0 -0
  253. {mapify_cli-3.27.1 → mapify_cli-3.28.0}/src/mapify_cli/templates_src/map/scripts/diagnostics.py.jinja +0 -0
  254. {mapify_cli-3.27.1 → mapify_cli-3.28.0}/src/mapify_cli/templates_src/map/scripts/map_orchestrator.py.jinja +0 -0
  255. {mapify_cli-3.27.1 → mapify_cli-3.28.0}/src/mapify_cli/templates_src/map/scripts/map_utils.py.jinja +0 -0
  256. {mapify_cli-3.27.1 → mapify_cli-3.28.0}/src/mapify_cli/templates_src/map/scripts/scrub_internal_ids.py.jinja +0 -0
  257. {mapify_cli-3.27.1 → mapify_cli-3.28.0}/src/mapify_cli/templates_src/map/scripts/sofa_client.py.jinja +0 -0
  258. {mapify_cli-3.27.1 → mapify_cli-3.28.0}/src/mapify_cli/templates_src/map/scripts/validate_spec_citations.py.jinja +0 -0
  259. {mapify_cli-3.27.1 → mapify_cli-3.28.0}/src/mapify_cli/templates_src/map/scripts/wayfind_runner.py.jinja +0 -0
  260. {mapify_cli-3.27.1 → mapify_cli-3.28.0}/src/mapify_cli/templates_src/map/static-analysis/analyze.sh.jinja +0 -0
  261. {mapify_cli-3.27.1 → mapify_cli-3.28.0}/src/mapify_cli/templates_src/map/static-analysis/handlers/common.sh.jinja +0 -0
  262. {mapify_cli-3.27.1 → mapify_cli-3.28.0}/src/mapify_cli/templates_src/map/static-analysis/handlers/go.sh.jinja +0 -0
  263. {mapify_cli-3.27.1 → mapify_cli-3.28.0}/src/mapify_cli/templates_src/map/static-analysis/handlers/python.sh.jinja +0 -0
  264. {mapify_cli-3.27.1 → mapify_cli-3.28.0}/src/mapify_cli/templates_src/map/static-analysis/handlers/rust.sh.jinja +0 -0
  265. {mapify_cli-3.27.1 → mapify_cli-3.28.0}/src/mapify_cli/templates_src/map/static-analysis/handlers/typescript.sh.jinja +0 -0
  266. {mapify_cli-3.27.1 → mapify_cli-3.28.0}/src/mapify_cli/templates_src/ralph-loop-config.json.jinja +0 -0
  267. {mapify_cli-3.27.1 → mapify_cli-3.28.0}/src/mapify_cli/templates_src/references/bash-guidelines.md.jinja +0 -0
  268. {mapify_cli-3.27.1 → mapify_cli-3.28.0}/src/mapify_cli/templates_src/references/decomposition-examples.md.jinja +0 -0
  269. {mapify_cli-3.27.1 → mapify_cli-3.28.0}/src/mapify_cli/templates_src/references/escalation-matrix.md.jinja +0 -0
  270. {mapify_cli-3.27.1 → mapify_cli-3.28.0}/src/mapify_cli/templates_src/references/hook-patterns.md.jinja +0 -0
  271. {mapify_cli-3.27.1 → mapify_cli-3.28.0}/src/mapify_cli/templates_src/references/map-json-output-contracts.md.jinja +0 -0
  272. {mapify_cli-3.27.1 → mapify_cli-3.28.0}/src/mapify_cli/templates_src/references/map-output-examples.md.jinja +0 -0
  273. {mapify_cli-3.27.1 → mapify_cli-3.28.0}/src/mapify_cli/templates_src/references/map-xml-prompt-envelopes.md.jinja +0 -0
  274. {mapify_cli-3.27.1 → mapify_cli-3.28.0}/src/mapify_cli/templates_src/references/mcp-usage-examples.md.jinja +0 -0
  275. {mapify_cli-3.27.1 → mapify_cli-3.28.0}/src/mapify_cli/templates_src/references/step-state-schema.md.jinja +0 -0
  276. {mapify_cli-3.27.1 → mapify_cli-3.28.0}/src/mapify_cli/templates_src/references/workflow-state-schema.md.jinja +0 -0
  277. {mapify_cli-3.27.1 → mapify_cli-3.28.0}/src/mapify_cli/templates_src/rules/learned/README.md.jinja +0 -0
  278. {mapify_cli-3.27.1 → mapify_cli-3.28.0}/src/mapify_cli/templates_src/settings.json.jinja +0 -0
  279. {mapify_cli-3.27.1 → mapify_cli-3.28.0}/src/mapify_cli/templates_src/skills/README.md.jinja +0 -0
  280. {mapify_cli-3.27.1 → mapify_cli-3.28.0}/src/mapify_cli/templates_src/skills/map-architecture/SKILL.md.jinja +0 -0
  281. {mapify_cli-3.27.1 → mapify_cli-3.28.0}/src/mapify_cli/templates_src/skills/map-auto/SKILL.md.jinja +0 -0
  282. {mapify_cli-3.27.1 → mapify_cli-3.28.0}/src/mapify_cli/templates_src/skills/map-auto/auto-reference.md.jinja +0 -0
  283. {mapify_cli-3.27.1 → mapify_cli-3.28.0}/src/mapify_cli/templates_src/skills/map-check/SKILL.md.jinja +0 -0
  284. {mapify_cli-3.27.1 → mapify_cli-3.28.0}/src/mapify_cli/templates_src/skills/map-check/check-reference.md.jinja +0 -0
  285. {mapify_cli-3.27.1 → mapify_cli-3.28.0}/src/mapify_cli/templates_src/skills/map-debug/SKILL.md.jinja +0 -0
  286. {mapify_cli-3.27.1 → mapify_cli-3.28.0}/src/mapify_cli/templates_src/skills/map-efficient/SKILL.md.jinja +0 -0
  287. {mapify_cli-3.27.1 → mapify_cli-3.28.0}/src/mapify_cli/templates_src/skills/map-efficient/efficient-reference.md.jinja +0 -0
  288. {mapify_cli-3.27.1 → mapify_cli-3.28.0}/src/mapify_cli/templates_src/skills/map-explain/SKILL.md.jinja +0 -0
  289. {mapify_cli-3.27.1 → mapify_cli-3.28.0}/src/mapify_cli/templates_src/skills/map-fast/SKILL.md.jinja +0 -0
  290. {mapify_cli-3.27.1 → mapify_cli-3.28.0}/src/mapify_cli/templates_src/skills/map-learn/SKILL.md.jinja +0 -0
  291. {mapify_cli-3.27.1 → mapify_cli-3.28.0}/src/mapify_cli/templates_src/skills/map-learn/templates/example-rules.md.jinja +0 -0
  292. {mapify_cli-3.27.1 → mapify_cli-3.28.0}/src/mapify_cli/templates_src/skills/map-learn/templates/rules-unconditional.md.jinja +0 -0
  293. {mapify_cli-3.27.1 → mapify_cli-3.28.0}/src/mapify_cli/templates_src/skills/map-learn/templates/rules-with-paths.md.jinja +0 -0
  294. {mapify_cli-3.27.1 → mapify_cli-3.28.0}/src/mapify_cli/templates_src/skills/map-memory-now/SKILL.md.jinja +0 -0
  295. {mapify_cli-3.27.1 → mapify_cli-3.28.0}/src/mapify_cli/templates_src/skills/map-plan/SKILL.md.jinja +0 -0
  296. {mapify_cli-3.27.1 → mapify_cli-3.28.0}/src/mapify_cli/templates_src/skills/map-plan/plan-reference.md.jinja +0 -0
  297. {mapify_cli-3.27.1 → mapify_cli-3.28.0}/src/mapify_cli/templates_src/skills/map-prd-review/SKILL.md.jinja +0 -0
  298. {mapify_cli-3.27.1 → mapify_cli-3.28.0}/src/mapify_cli/templates_src/skills/map-release/SKILL.md.jinja +0 -0
  299. {mapify_cli-3.27.1 → mapify_cli-3.28.0}/src/mapify_cli/templates_src/skills/map-release/release-reference.md.jinja +0 -0
  300. {mapify_cli-3.27.1 → mapify_cli-3.28.0}/src/mapify_cli/templates_src/skills/map-resume/SKILL.md.jinja +0 -0
  301. {mapify_cli-3.27.1 → mapify_cli-3.28.0}/src/mapify_cli/templates_src/skills/map-resume/resume-reference.md.jinja +0 -0
  302. {mapify_cli-3.27.1 → mapify_cli-3.28.0}/src/mapify_cli/templates_src/skills/map-skill-eval/SKILL.md.jinja +0 -0
  303. {mapify_cli-3.27.1 → mapify_cli-3.28.0}/src/mapify_cli/templates_src/skills/map-so-search/SKILL.md.jinja +0 -0
  304. {mapify_cli-3.27.1 → mapify_cli-3.28.0}/src/mapify_cli/templates_src/skills/map-so-search/scripts/sofa_search.py.jinja +0 -0
  305. {mapify_cli-3.27.1 → mapify_cli-3.28.0}/src/mapify_cli/templates_src/skills/map-state/SKILL.md.jinja +0 -0
  306. {mapify_cli-3.27.1 → mapify_cli-3.28.0}/src/mapify_cli/templates_src/skills/map-state/scripts/check-complete.sh.jinja +0 -0
  307. {mapify_cli-3.27.1 → mapify_cli-3.28.0}/src/mapify_cli/templates_src/skills/map-state/scripts/get-plan-path.sh.jinja +0 -0
  308. {mapify_cli-3.27.1 → mapify_cli-3.28.0}/src/mapify_cli/templates_src/skills/map-state/scripts/init-session.sh.jinja +0 -0
  309. {mapify_cli-3.27.1 → mapify_cli-3.28.0}/src/mapify_cli/templates_src/skills/map-state/scripts/show-focus.sh.jinja +0 -0
  310. {mapify_cli-3.27.1 → mapify_cli-3.28.0}/src/mapify_cli/templates_src/skills/map-state/templates/findings.md.jinja +0 -0
  311. {mapify_cli-3.27.1 → mapify_cli-3.28.0}/src/mapify_cli/templates_src/skills/map-state/templates/iteration_history.md.jinja +0 -0
  312. {mapify_cli-3.27.1 → mapify_cli-3.28.0}/src/mapify_cli/templates_src/skills/map-state/templates/progress.md.jinja +0 -0
  313. {mapify_cli-3.27.1 → mapify_cli-3.28.0}/src/mapify_cli/templates_src/skills/map-state/templates/task_plan.md.jinja +0 -0
  314. {mapify_cli-3.27.1 → mapify_cli-3.28.0}/src/mapify_cli/templates_src/skills/map-task/SKILL.md.jinja +0 -0
  315. {mapify_cli-3.27.1 → mapify_cli-3.28.0}/src/mapify_cli/templates_src/skills/map-tdd/SKILL.md.jinja +0 -0
  316. {mapify_cli-3.27.1 → mapify_cli-3.28.0}/src/mapify_cli/templates_src/skills/map-tokenreport/SKILL.md.jinja +0 -0
  317. {mapify_cli-3.27.1 → mapify_cli-3.28.0}/src/mapify_cli/templates_src/skills/map-understand/SKILL.md.jinja +0 -0
  318. {mapify_cli-3.27.1 → mapify_cli-3.28.0}/src/mapify_cli/templates_src/skills/map-upgrade/SKILL.md.jinja +0 -0
  319. {mapify_cli-3.27.1 → mapify_cli-3.28.0}/src/mapify_cli/templates_src/skills/map-wayfind/SKILL.md.jinja +0 -0
  320. {mapify_cli-3.27.1 → mapify_cli-3.28.0}/src/mapify_cli/templates_src/skills/map-wayfind/wayfind-reference.md.jinja +0 -0
  321. {mapify_cli-3.27.1 → mapify_cli-3.28.0}/src/mapify_cli/templates_src/skills/skill-rules.json.jinja +0 -0
  322. {mapify_cli-3.27.1 → mapify_cli-3.28.0}/src/mapify_cli/templates_src/workflow-rules.json.jinja +0 -0
  323. {mapify_cli-3.27.1 → mapify_cli-3.28.0}/src/mapify_cli/token_budget.py +0 -0
  324. {mapify_cli-3.27.1 → mapify_cli-3.28.0}/src/mapify_cli/tool_output_offload.py +0 -0
  325. {mapify_cli-3.27.1 → mapify_cli-3.28.0}/src/mapify_cli/tools/__init__.py +0 -0
  326. {mapify_cli-3.27.1 → mapify_cli-3.28.0}/src/mapify_cli/tools/validate_dependencies.py +0 -0
  327. {mapify_cli-3.27.1 → mapify_cli-3.28.0}/src/mapify_cli/update_install.py +0 -0
  328. {mapify_cli-3.27.1 → mapify_cli-3.28.0}/src/mapify_cli/update_state.py +0 -0
  329. {mapify_cli-3.27.1 → mapify_cli-3.28.0}/src/mapify_cli/update_versions.py +0 -0
  330. {mapify_cli-3.27.1 → mapify_cli-3.28.0}/src/mapify_cli/verification_recorder.py +0 -0
  331. {mapify_cli-3.27.1 → mapify_cli-3.28.0}/src/mapify_cli/workflow_finalizer.py +0 -0
  332. {mapify_cli-3.27.1 → mapify_cli-3.28.0}/src/mapify_cli/workflow_logger.py +0 -0
  333. {mapify_cli-3.27.1 → mapify_cli-3.28.0}/src/mapify_cli/workflow_state.py +0 -0
  334. {mapify_cli-3.27.1 → mapify_cli-3.28.0}/tests/__init__.py +0 -0
  335. {mapify_cli-3.27.1 → mapify_cli-3.28.0}/tests/_fake_task_tool.py +0 -0
  336. {mapify_cli-3.27.1 → mapify_cli-3.28.0}/tests/conftest.py +0 -0
  337. {mapify_cli-3.27.1 → mapify_cli-3.28.0}/tests/fixtures/claude/escalation-matrix.md +0 -0
  338. {mapify_cli-3.27.1 → mapify_cli-3.28.0}/tests/fixtures/codex/config.toml +0 -0
  339. {mapify_cli-3.27.1 → mapify_cli-3.28.0}/tests/fixtures/wave_blueprints.py +0 -0
  340. {mapify_cli-3.27.1 → mapify_cli-3.28.0}/tests/hooks/test_detect_clarification_triggers.py +0 -0
  341. {mapify_cli-3.27.1 → mapify_cli-3.28.0}/tests/hooks/test_end_of_turn.py +0 -0
  342. {mapify_cli-3.27.1 → mapify_cli-3.28.0}/tests/hooks/test_hook_inventory_smoke.py +0 -0
  343. {mapify_cli-3.27.1 → mapify_cli-3.28.0}/tests/hooks/test_safety_guardrails.py +0 -0
  344. {mapify_cli-3.27.1 → mapify_cli-3.28.0}/tests/hooks/test_scrub_internal_ids_hook.py +0 -0
  345. {mapify_cli-3.27.1 → mapify_cli-3.28.0}/tests/integration/__init__.py +0 -0
  346. {mapify_cli-3.27.1 → mapify_cli-3.28.0}/tests/integration/fixtures/blueprint.json +0 -0
  347. {mapify_cli-3.27.1 → mapify_cli-3.28.0}/tests/integration/fixtures/code_review.md +0 -0
  348. {mapify_cli-3.27.1 → mapify_cli-3.28.0}/tests/integration/fixtures/plan_handoff.json +0 -0
  349. {mapify_cli-3.27.1 → mapify_cli-3.28.0}/tests/integration/fixtures/spec.md +0 -0
  350. {mapify_cli-3.27.1 → mapify_cli-3.28.0}/tests/integration/fixtures/step_state_initialized.json +0 -0
  351. {mapify_cli-3.27.1 → mapify_cli-3.28.0}/tests/integration/fixtures/step_state_plan_complete.json +0 -0
  352. {mapify_cli-3.27.1 → mapify_cli-3.28.0}/tests/integration/fixtures/task_plan.md +0 -0
  353. {mapify_cli-3.27.1 → mapify_cli-3.28.0}/tests/integration/fixtures/verification_summary.md +0 -0
  354. {mapify_cli-3.27.1 → mapify_cli-3.28.0}/tests/integration/test_e2e_artifact_contracts.py +0 -0
  355. {mapify_cli-3.27.1 → mapify_cli-3.28.0}/tests/integration/test_e2e_claude_sdk.py +0 -0
  356. {mapify_cli-3.27.1 → mapify_cli-3.28.0}/tests/skills_eval/fixtures/README.md +0 -0
  357. {mapify_cli-3.27.1 → mapify_cli-3.28.0}/tests/skills_eval/fixtures/map_check_optimize_eval_set.json +0 -0
  358. {mapify_cli-3.27.1 → mapify_cli-3.28.0}/tests/skills_eval/fixtures/map_debug_eval_set.json +0 -0
  359. {mapify_cli-3.27.1 → mapify_cli-3.28.0}/tests/skills_eval/fixtures/map_debug_optimize_eval_set.json +0 -0
  360. {mapify_cli-3.27.1 → mapify_cli-3.28.0}/tests/skills_eval/fixtures/map_efficient_optimize_eval_set.json +0 -0
  361. {mapify_cli-3.27.1 → mapify_cli-3.28.0}/tests/skills_eval/fixtures/map_explain_optimize_eval_set.json +0 -0
  362. {mapify_cli-3.27.1 → mapify_cli-3.28.0}/tests/skills_eval/fixtures/map_fast_optimize_eval_set.json +0 -0
  363. {mapify_cli-3.27.1 → mapify_cli-3.28.0}/tests/skills_eval/fixtures/map_learn_optimize_eval_set.json +0 -0
  364. {mapify_cli-3.27.1 → mapify_cli-3.28.0}/tests/skills_eval/fixtures/map_memory_now_optimize_eval_set.json +0 -0
  365. {mapify_cli-3.27.1 → mapify_cli-3.28.0}/tests/skills_eval/fixtures/map_plan_optimize_eval_set.json +0 -0
  366. {mapify_cli-3.27.1 → mapify_cli-3.28.0}/tests/skills_eval/fixtures/map_release_optimize_eval_set.json +0 -0
  367. {mapify_cli-3.27.1 → mapify_cli-3.28.0}/tests/skills_eval/fixtures/map_resume_optimize_eval_set.json +0 -0
  368. {mapify_cli-3.27.1 → mapify_cli-3.28.0}/tests/skills_eval/fixtures/map_review_optimize_eval_set.json +0 -0
  369. {mapify_cli-3.27.1 → mapify_cli-3.28.0}/tests/skills_eval/fixtures/map_skill_eval_optimize_eval_set.json +0 -0
  370. {mapify_cli-3.27.1 → mapify_cli-3.28.0}/tests/skills_eval/fixtures/map_state_optimize_eval_set.json +0 -0
  371. {mapify_cli-3.27.1 → mapify_cli-3.28.0}/tests/skills_eval/fixtures/map_task_optimize_eval_set.json +0 -0
  372. {mapify_cli-3.27.1 → mapify_cli-3.28.0}/tests/skills_eval/fixtures/map_tdd_optimize_eval_set.json +0 -0
  373. {mapify_cli-3.27.1 → mapify_cli-3.28.0}/tests/skills_eval/fixtures/map_tokenreport_optimize_eval_set.json +0 -0
  374. {mapify_cli-3.27.1 → mapify_cli-3.28.0}/tests/skills_eval/fixtures/whole_skill/map_task_blocker/manifest.json +0 -0
  375. {mapify_cli-3.27.1 → mapify_cli-3.28.0}/tests/skills_eval/fixtures/whole_skill/map_task_blocker/repo/.map/main/blueprint.json +0 -0
  376. {mapify_cli-3.27.1 → mapify_cli-3.28.0}/tests/skills_eval/fixtures/whole_skill/map_task_blocker/repo/.map/main/task_plan_main.md +0 -0
  377. {mapify_cli-3.27.1 → mapify_cli-3.28.0}/tests/skills_eval/fixtures/whole_skill/map_task_blocker/repo/src/__init__.py +0 -0
  378. {mapify_cli-3.27.1 → mapify_cli-3.28.0}/tests/skills_eval/fixtures/whole_skill/map_task_blocker/repo/src/utils.py +0 -0
  379. {mapify_cli-3.27.1 → mapify_cli-3.28.0}/tests/skills_eval/fixtures/whole_skill/map_task_blocker/repo/tests/test_compute.py +0 -0
  380. {mapify_cli-3.27.1 → mapify_cli-3.28.0}/tests/skills_eval/fixtures/whole_skill/map_task_calc/hidden/test_calc_full.py +0 -0
  381. {mapify_cli-3.27.1 → mapify_cli-3.28.0}/tests/skills_eval/fixtures/whole_skill/map_task_calc/manifest.json +0 -0
  382. {mapify_cli-3.27.1 → mapify_cli-3.28.0}/tests/skills_eval/fixtures/whole_skill/map_task_calc/repo/.map/main/blueprint.json +0 -0
  383. {mapify_cli-3.27.1 → mapify_cli-3.28.0}/tests/skills_eval/fixtures/whole_skill/map_task_calc/repo/.map/main/task_plan_main.md +0 -0
  384. {mapify_cli-3.27.1 → mapify_cli-3.28.0}/tests/skills_eval/fixtures/whole_skill/map_task_calc/repo/src/__init__.py +0 -0
  385. {mapify_cli-3.27.1 → mapify_cli-3.28.0}/tests/skills_eval/fixtures/whole_skill/map_task_calc/repo/src/calc.py +0 -0
  386. {mapify_cli-3.27.1 → mapify_cli-3.28.0}/tests/skills_eval/fixtures/whole_skill/map_task_calc/repo/tests/test_calc_basic.py +0 -0
  387. {mapify_cli-3.27.1 → mapify_cli-3.28.0}/tests/skills_eval/fixtures/whole_skill/map_task_calc_vague/hidden/test_calc_full.py +0 -0
  388. {mapify_cli-3.27.1 → mapify_cli-3.28.0}/tests/skills_eval/fixtures/whole_skill/map_task_calc_vague/manifest.json +0 -0
  389. {mapify_cli-3.27.1 → mapify_cli-3.28.0}/tests/skills_eval/fixtures/whole_skill/map_task_calc_vague/repo/.map/main/blueprint.json +0 -0
  390. {mapify_cli-3.27.1 → mapify_cli-3.28.0}/tests/skills_eval/fixtures/whole_skill/map_task_calc_vague/repo/.map/main/task_plan_main.md +0 -0
  391. {mapify_cli-3.27.1 → mapify_cli-3.28.0}/tests/skills_eval/fixtures/whole_skill/map_task_calc_vague/repo/src/__init__.py +0 -0
  392. {mapify_cli-3.27.1 → mapify_cli-3.28.0}/tests/skills_eval/fixtures/whole_skill/map_task_calc_vague/repo/src/calc.py +0 -0
  393. {mapify_cli-3.27.1 → mapify_cli-3.28.0}/tests/skills_eval/fixtures/whole_skill/map_task_calc_vague/repo/tests/test_calc_basic.py +0 -0
  394. {mapify_cli-3.27.1 → mapify_cli-3.28.0}/tests/skills_eval/fixtures/whole_skill/map_task_false_success/hidden/test_kvparse_full.py +0 -0
  395. {mapify_cli-3.27.1 → mapify_cli-3.28.0}/tests/skills_eval/fixtures/whole_skill/map_task_false_success/manifest.json +0 -0
  396. {mapify_cli-3.27.1 → mapify_cli-3.28.0}/tests/skills_eval/fixtures/whole_skill/map_task_false_success/repo/.map/main/blueprint.json +0 -0
  397. {mapify_cli-3.27.1 → mapify_cli-3.28.0}/tests/skills_eval/fixtures/whole_skill/map_task_false_success/repo/.map/main/task_plan_main.md +0 -0
  398. {mapify_cli-3.27.1 → mapify_cli-3.28.0}/tests/skills_eval/fixtures/whole_skill/map_task_false_success/repo/src/__init__.py +0 -0
  399. {mapify_cli-3.27.1 → mapify_cli-3.28.0}/tests/skills_eval/fixtures/whole_skill/map_task_false_success/repo/src/kvparse.py +0 -0
  400. {mapify_cli-3.27.1 → mapify_cli-3.28.0}/tests/skills_eval/fixtures/whole_skill/map_task_false_success/repo/tests/test_kvparse_basic.py +0 -0
  401. {mapify_cli-3.27.1 → mapify_cli-3.28.0}/tests/skills_eval/fixtures/whole_skill/map_task_scope_pressure/manifest.json +0 -0
  402. {mapify_cli-3.27.1 → mapify_cli-3.28.0}/tests/skills_eval/fixtures/whole_skill/map_task_scope_pressure/repo/.map/main/blueprint.json +0 -0
  403. {mapify_cli-3.27.1 → mapify_cli-3.28.0}/tests/skills_eval/fixtures/whole_skill/map_task_scope_pressure/repo/.map/main/task_plan_main.md +0 -0
  404. {mapify_cli-3.27.1 → mapify_cli-3.28.0}/tests/skills_eval/fixtures/whole_skill/map_task_scope_pressure/repo/src/__init__.py +0 -0
  405. {mapify_cli-3.27.1 → mapify_cli-3.28.0}/tests/skills_eval/fixtures/whole_skill/map_task_scope_pressure/repo/src/config.py +0 -0
  406. {mapify_cli-3.27.1 → mapify_cli-3.28.0}/tests/skills_eval/fixtures/whole_skill/map_task_scope_pressure/repo/src/utils.py +0 -0
  407. {mapify_cli-3.27.1 → mapify_cli-3.28.0}/tests/skills_eval/fixtures/whole_skill/map_task_scope_pressure/repo/tests/test_price.py +0 -0
  408. {mapify_cli-3.27.1 → mapify_cli-3.28.0}/tests/skills_eval/fixtures/whole_skill/map_task_scope_trap/manifest.json +0 -0
  409. {mapify_cli-3.27.1 → mapify_cli-3.28.0}/tests/skills_eval/fixtures/whole_skill/map_task_scope_trap/repo/.map/main/blueprint.json +0 -0
  410. {mapify_cli-3.27.1 → mapify_cli-3.28.0}/tests/skills_eval/fixtures/whole_skill/map_task_scope_trap/repo/.map/main/task_plan_main.md +0 -0
  411. {mapify_cli-3.27.1 → mapify_cli-3.28.0}/tests/skills_eval/fixtures/whole_skill/map_task_scope_trap/repo/src/__init__.py +0 -0
  412. {mapify_cli-3.27.1 → mapify_cli-3.28.0}/tests/skills_eval/fixtures/whole_skill/map_task_scope_trap/repo/src/config.py +0 -0
  413. {mapify_cli-3.27.1 → mapify_cli-3.28.0}/tests/skills_eval/fixtures/whole_skill/map_task_scope_trap/repo/src/utils.py +0 -0
  414. {mapify_cli-3.27.1 → mapify_cli-3.28.0}/tests/skills_eval/fixtures/whole_skill/map_task_scope_trap/repo/tests/test_utils.py +0 -0
  415. {mapify_cli-3.27.1 → mapify_cli-3.28.0}/tests/skills_eval/fixtures/whole_skill/map_task_semver/manifest.json +0 -0
  416. {mapify_cli-3.27.1 → mapify_cli-3.28.0}/tests/skills_eval/fixtures/whole_skill/map_task_semver/repo/.map/main/blueprint.json +0 -0
  417. {mapify_cli-3.27.1 → mapify_cli-3.28.0}/tests/skills_eval/fixtures/whole_skill/map_task_semver/repo/.map/main/task_plan_main.md +0 -0
  418. {mapify_cli-3.27.1 → mapify_cli-3.28.0}/tests/skills_eval/fixtures/whole_skill/map_task_semver/repo/src/__init__.py +0 -0
  419. {mapify_cli-3.27.1 → mapify_cli-3.28.0}/tests/skills_eval/fixtures/whole_skill/map_task_semver/repo/src/semver.py +0 -0
  420. {mapify_cli-3.27.1 → mapify_cli-3.28.0}/tests/skills_eval/fixtures/whole_skill/map_task_semver/repo/tests/test_semver.py +0 -0
  421. {mapify_cli-3.27.1 → mapify_cli-3.28.0}/tests/skills_eval/fixtures/whole_skill/map_task_semver_vague/hidden/test_semver_full.py +0 -0
  422. {mapify_cli-3.27.1 → mapify_cli-3.28.0}/tests/skills_eval/fixtures/whole_skill/map_task_semver_vague/manifest.json +0 -0
  423. {mapify_cli-3.27.1 → mapify_cli-3.28.0}/tests/skills_eval/fixtures/whole_skill/map_task_semver_vague/repo/.map/main/blueprint.json +0 -0
  424. {mapify_cli-3.27.1 → mapify_cli-3.28.0}/tests/skills_eval/fixtures/whole_skill/map_task_semver_vague/repo/.map/main/task_plan_main.md +0 -0
  425. {mapify_cli-3.27.1 → mapify_cli-3.28.0}/tests/skills_eval/fixtures/whole_skill/map_task_semver_vague/repo/src/__init__.py +0 -0
  426. {mapify_cli-3.27.1 → mapify_cli-3.28.0}/tests/skills_eval/fixtures/whole_skill/map_task_semver_vague/repo/src/semver.py +0 -0
  427. {mapify_cli-3.27.1 → mapify_cli-3.28.0}/tests/skills_eval/fixtures/whole_skill/map_task_semver_vague/repo/tests/test_semver_basic.py +0 -0
  428. {mapify_cli-3.27.1 → mapify_cli-3.28.0}/tests/skills_eval/fixtures/whole_skill/map_task_semver_weakgate/hidden/test_semver_full.py +0 -0
  429. {mapify_cli-3.27.1 → mapify_cli-3.28.0}/tests/skills_eval/fixtures/whole_skill/map_task_semver_weakgate/manifest.json +0 -0
  430. {mapify_cli-3.27.1 → mapify_cli-3.28.0}/tests/skills_eval/fixtures/whole_skill/map_task_semver_weakgate/repo/.map/main/blueprint.json +0 -0
  431. {mapify_cli-3.27.1 → mapify_cli-3.28.0}/tests/skills_eval/fixtures/whole_skill/map_task_semver_weakgate/repo/.map/main/task_plan_main.md +0 -0
  432. {mapify_cli-3.27.1 → mapify_cli-3.28.0}/tests/skills_eval/fixtures/whole_skill/map_task_semver_weakgate/repo/src/__init__.py +0 -0
  433. {mapify_cli-3.27.1 → mapify_cli-3.28.0}/tests/skills_eval/fixtures/whole_skill/map_task_semver_weakgate/repo/src/semver.py +0 -0
  434. {mapify_cli-3.27.1 → mapify_cli-3.28.0}/tests/skills_eval/fixtures/whole_skill/map_task_semver_weakgate/repo/tests/test_semver_basic.py +0 -0
  435. {mapify_cli-3.27.1 → mapify_cli-3.28.0}/tests/skills_eval/whole_skill/spike_runner.py +0 -0
  436. {mapify_cli-3.27.1 → mapify_cli-3.28.0}/tests/test_agent_cli_correctness.py +0 -0
  437. {mapify_cli-3.27.1 → mapify_cli-3.28.0}/tests/test_agent_dispatch_audit.py +0 -0
  438. {mapify_cli-3.27.1 → mapify_cli-3.28.0}/tests/test_agent_frontmatter.py +0 -0
  439. {mapify_cli-3.27.1 → mapify_cli-3.28.0}/tests/test_agent_memory.py +0 -0
  440. {mapify_cli-3.27.1 → mapify_cli-3.28.0}/tests/test_approval_hold.py +0 -0
  441. {mapify_cli-3.27.1 → mapify_cli-3.28.0}/tests/test_artifact_schemas.py +0 -0
  442. {mapify_cli-3.27.1 → mapify_cli-3.28.0}/tests/test_auto_update.py +0 -0
  443. {mapify_cli-3.27.1 → mapify_cli-3.28.0}/tests/test_boundary_quality_report.py +0 -0
  444. {mapify_cli-3.27.1 → mapify_cli-3.28.0}/tests/test_bump_version.py +0 -0
  445. {mapify_cli-3.27.1 → mapify_cli-3.28.0}/tests/test_classify_scope_script.py +0 -0
  446. {mapify_cli-3.27.1 → mapify_cli-3.28.0}/tests/test_code_map.py +0 -0
  447. {mapify_cli-3.27.1 → mapify_cli-3.28.0}/tests/test_compaction_offload_integration.py +0 -0
  448. {mapify_cli-3.27.1 → mapify_cli-3.28.0}/tests/test_concurrent_dispatch_harness.py +0 -0
  449. {mapify_cli-3.27.1 → mapify_cli-3.28.0}/tests/test_context_usefulness.py +0 -0
  450. {mapify_cli-3.27.1 → mapify_cli-3.28.0}/tests/test_cross_ai_config.py +0 -0
  451. {mapify_cli-3.27.1 → mapify_cli-3.28.0}/tests/test_decomposition.py +0 -0
  452. {mapify_cli-3.27.1 → mapify_cli-3.28.0}/tests/test_dependency_graph.py +0 -0
  453. {mapify_cli-3.27.1 → mapify_cli-3.28.0}/tests/test_diagnostics.py +0 -0
  454. {mapify_cli-3.27.1 → mapify_cli-3.28.0}/tests/test_digest_schema.py +0 -0
  455. {mapify_cli-3.27.1 → mapify_cli-3.28.0}/tests/test_domain_skill.py +0 -0
  456. {mapify_cli-3.27.1 → mapify_cli-3.28.0}/tests/test_file_copier.py +0 -0
  457. {mapify_cli-3.27.1 → mapify_cli-3.28.0}/tests/test_governance_attack_fixtures.py +0 -0
  458. {mapify_cli-3.27.1 → mapify_cli-3.28.0}/tests/test_governance_report.py +0 -0
  459. {mapify_cli-3.27.1 → mapify_cli-3.28.0}/tests/test_grace_eval_schema.py +0 -0
  460. {mapify_cli-3.27.1 → mapify_cli-3.28.0}/tests/test_grace_eval_sweep.py +0 -0
  461. {mapify_cli-3.27.1 → mapify_cli-3.28.0}/tests/test_hook_patterns.py +0 -0
  462. {mapify_cli-3.27.1 → mapify_cli-3.28.0}/tests/test_init_import_graph.py +0 -0
  463. {mapify_cli-3.27.1 → mapify_cli-3.28.0}/tests/test_install_manifest.py +0 -0
  464. {mapify_cli-3.27.1 → mapify_cli-3.28.0}/tests/test_intent_detector.py +0 -0
  465. {mapify_cli-3.27.1 → mapify_cli-3.28.0}/tests/test_inv1_no_anthropic_optimize.py +0 -0
  466. {mapify_cli-3.27.1 → mapify_cli-3.28.0}/tests/test_jinja2_dep.py +0 -0
  467. {mapify_cli-3.27.1 → mapify_cli-3.28.0}/tests/test_locking.py +0 -0
  468. {mapify_cli-3.27.1 → mapify_cli-3.28.0}/tests/test_managed_file_copier.py +0 -0
  469. {mapify_cli-3.27.1 → mapify_cli-3.28.0}/tests/test_map_auto.py +0 -0
  470. {mapify_cli-3.27.1 → mapify_cli-3.28.0}/tests/test_map_orchestrator.py +0 -0
  471. {mapify_cli-3.27.1 → mapify_cli-3.28.0}/tests/test_map_token_meter.py +0 -0
  472. {mapify_cli-3.27.1 → mapify_cli-3.28.0}/tests/test_map_utils_sanitize.py +0 -0
  473. {mapify_cli-3.27.1 → mapify_cli-3.28.0}/tests/test_mapify_cli.py +0 -0
  474. {mapify_cli-3.27.1 → mapify_cli-3.28.0}/tests/test_memory_capture.py +0 -0
  475. {mapify_cli-3.27.1 → mapify_cli-3.28.0}/tests/test_memory_finalize.py +0 -0
  476. {mapify_cli-3.27.1 → mapify_cli-3.28.0}/tests/test_memory_integration.py +0 -0
  477. {mapify_cli-3.27.1 → mapify_cli-3.28.0}/tests/test_memory_recall.py +0 -0
  478. {mapify_cli-3.27.1 → mapify_cli-3.28.0}/tests/test_memory_review_fixes.py +0 -0
  479. {mapify_cli-3.27.1 → mapify_cli-3.28.0}/tests/test_minimality_eval.py +0 -0
  480. {mapify_cli-3.27.1 → mapify_cli-3.28.0}/tests/test_minimality_report.py +0 -0
  481. {mapify_cli-3.27.1 → mapify_cli-3.28.0}/tests/test_parallelism_observability.py +0 -0
  482. {mapify_cli-3.27.1 → mapify_cli-3.28.0}/tests/test_post_compact_context.py +0 -0
  483. {mapify_cli-3.27.1 → mapify_cli-3.28.0}/tests/test_preset_commands.py +0 -0
  484. {mapify_cli-3.27.1 → mapify_cli-3.28.0}/tests/test_project_config.py +0 -0
  485. {mapify_cli-3.27.1 → mapify_cli-3.28.0}/tests/test_prompt_layering.py +0 -0
  486. {mapify_cli-3.27.1 → mapify_cli-3.28.0}/tests/test_prompt_profile_commands.py +0 -0
  487. {mapify_cli-3.27.1 → mapify_cli-3.28.0}/tests/test_pyyaml_dep.py +0 -0
  488. {mapify_cli-3.27.1 → mapify_cli-3.28.0}/tests/test_ralph_hooks.py +0 -0
  489. {mapify_cli-3.27.1 → mapify_cli-3.28.0}/tests/test_ralph_state.py +0 -0
  490. {mapify_cli-3.27.1 → mapify_cli-3.28.0}/tests/test_repo_insight.py +0 -0
  491. {mapify_cli-3.27.1 → mapify_cli-3.28.0}/tests/test_research_eval.py +0 -0
  492. {mapify_cli-3.27.1 → mapify_cli-3.28.0}/tests/test_research_eval_compare.py +0 -0
  493. {mapify_cli-3.27.1 → mapify_cli-3.28.0}/tests/test_schemas.py +0 -0
  494. {mapify_cli-3.27.1 → mapify_cli-3.28.0}/tests/test_scope_classifier.py +0 -0
  495. {mapify_cli-3.27.1 → mapify_cli-3.28.0}/tests/test_scrub_internal_ids.py +0 -0
  496. {mapify_cli-3.27.1 → mapify_cli-3.28.0}/tests/test_settings_deny_globs.py +0 -0
  497. {mapify_cli-3.27.1 → mapify_cli-3.28.0}/tests/test_shell_json_pipes.py +0 -0
  498. {mapify_cli-3.27.1 → mapify_cli-3.28.0}/tests/test_skill_ir.py +0 -0
  499. {mapify_cli-3.27.1 → mapify_cli-3.28.0}/tests/test_skills_consistency.py +0 -0
  500. {mapify_cli-3.27.1 → mapify_cli-3.28.0}/tests/test_skills_eval_aggregator.py +0 -0
  501. {mapify_cli-3.27.1 → mapify_cli-3.28.0}/tests/test_skills_eval_apply.py +0 -0
  502. {mapify_cli-3.27.1 → mapify_cli-3.28.0}/tests/test_skills_eval_cli_optimize.py +0 -0
  503. {mapify_cli-3.27.1 → mapify_cli-3.28.0}/tests/test_skills_eval_dispatcher_env.py +0 -0
  504. {mapify_cli-3.27.1 → mapify_cli-3.28.0}/tests/test_skills_eval_dispatcher_timeout.py +0 -0
  505. {mapify_cli-3.27.1 → mapify_cli-3.28.0}/tests/test_skills_eval_fixtures.py +0 -0
  506. {mapify_cli-3.27.1 → mapify_cli-3.28.0}/tests/test_skills_eval_optimizer.py +0 -0
  507. {mapify_cli-3.27.1 → mapify_cli-3.28.0}/tests/test_skills_eval_optimizer_isolation.py +0 -0
  508. {mapify_cli-3.27.1 → mapify_cli-3.28.0}/tests/test_skills_eval_proposer.py +0 -0
  509. {mapify_cli-3.27.1 → mapify_cli-3.28.0}/tests/test_skills_eval_runner.py +0 -0
  510. {mapify_cli-3.27.1 → mapify_cli-3.28.0}/tests/test_skills_eval_schema.py +0 -0
  511. {mapify_cli-3.27.1 → mapify_cli-3.28.0}/tests/test_skills_eval_trajectory_bundle.py +0 -0
  512. {mapify_cli-3.27.1 → mapify_cli-3.28.0}/tests/test_skills_eval_trajectory_cli.py +0 -0
  513. {mapify_cli-3.27.1 → mapify_cli-3.28.0}/tests/test_skills_eval_trajectory_gates.py +0 -0
  514. {mapify_cli-3.27.1 → mapify_cli-3.28.0}/tests/test_skills_eval_trajectory_judge.py +0 -0
  515. {mapify_cli-3.27.1 → mapify_cli-3.28.0}/tests/test_skills_eval_trajectory_repeated.py +0 -0
  516. {mapify_cli-3.27.1 → mapify_cli-3.28.0}/tests/test_skills_eval_trajectory_report.py +0 -0
  517. {mapify_cli-3.27.1 → mapify_cli-3.28.0}/tests/test_skills_eval_trajectory_runner.py +0 -0
  518. {mapify_cli-3.27.1 → mapify_cli-3.28.0}/tests/test_skills_eval_trajectory_schema.py +0 -0
  519. {mapify_cli-3.27.1 → mapify_cli-3.28.0}/tests/test_skills_eval_viewer.py +0 -0
  520. {mapify_cli-3.27.1 → mapify_cli-3.28.0}/tests/test_slice5b_leak_guards.py +0 -0
  521. {mapify_cli-3.27.1 → mapify_cli-3.28.0}/tests/test_sofa_client.py +0 -0
  522. {mapify_cli-3.27.1 → mapify_cli-3.28.0}/tests/test_sofa_search.py +0 -0
  523. {mapify_cli-3.27.1 → mapify_cli-3.28.0}/tests/test_statusline.py +0 -0
  524. {mapify_cli-3.27.1 → mapify_cli-3.28.0}/tests/test_template_render.py +0 -0
  525. {mapify_cli-3.27.1 → mapify_cli-3.28.0}/tests/test_token_budget.py +0 -0
  526. {mapify_cli-3.27.1 → mapify_cli-3.28.0}/tests/test_tool_output_offload.py +0 -0
  527. {mapify_cli-3.27.1 → mapify_cli-3.28.0}/tests/test_update_install.py +0 -0
  528. {mapify_cli-3.27.1 → mapify_cli-3.28.0}/tests/test_update_state.py +0 -0
  529. {mapify_cli-3.27.1 → mapify_cli-3.28.0}/tests/test_update_versions.py +0 -0
  530. {mapify_cli-3.27.1 → mapify_cli-3.28.0}/tests/test_validate_dependencies.py +0 -0
  531. {mapify_cli-3.27.1 → mapify_cli-3.28.0}/tests/test_validate_spec_citations.py +0 -0
  532. {mapify_cli-3.27.1 → mapify_cli-3.28.0}/tests/test_verification_recorder.py +0 -0
  533. {mapify_cli-3.27.1 → mapify_cli-3.28.0}/tests/test_wave_eval_harness.py +0 -0
  534. {mapify_cli-3.27.1 → mapify_cli-3.28.0}/tests/test_wave_fixtures.py +0 -0
  535. {mapify_cli-3.27.1 → mapify_cli-3.28.0}/tests/test_wave_parallel_harness.py +0 -0
  536. {mapify_cli-3.27.1 → mapify_cli-3.28.0}/tests/test_wayfind_runner.py +0 -0
  537. {mapify_cli-3.27.1 → mapify_cli-3.28.0}/tests/test_workflow_context_injector.py +0 -0
  538. {mapify_cli-3.27.1 → mapify_cli-3.28.0}/tests/test_workflow_finalizer.py +0 -0
  539. {mapify_cli-3.27.1 → mapify_cli-3.28.0}/tests/test_workflow_gate.py +0 -0
  540. {mapify_cli-3.27.1 → mapify_cli-3.28.0}/tests/test_workflow_logger.py +0 -0
  541. {mapify_cli-3.27.1 → mapify_cli-3.28.0}/tests/test_workflow_state.py +0 -0
  542. {mapify_cli-3.27.1 → mapify_cli-3.28.0}/tests/test_worktree_isolation.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.5
2
2
  Name: mapify-cli
3
- Version: 3.27.1
3
+ Version: 3.28.0
4
4
  Summary: MAP Framework installer - Modular Agentic Planner for Claude Code
5
5
  Project-URL: Homepage, https://github.com/azalio/map-framework
6
6
  Project-URL: Repository, https://github.com/azalio/map-framework.git
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "mapify-cli"
3
- version = "3.27.1"
3
+ version = "3.28.0"
4
4
  description = "MAP Framework installer - Modular Agentic Planner for Claude Code"
5
5
  authors = [{ name = "MAP Framework Contributors" }]
6
6
  readme = "README.md"
@@ -23,7 +23,7 @@ Or install globally:
23
23
  mapify check
24
24
  """
25
25
 
26
- __version__ = "3.27.1"
26
+ __version__ = "3.28.0"
27
27
 
28
28
  import contextlib
29
29
  import functools
@@ -1942,9 +1942,15 @@ REVIEW_VERDICT_LEDGER_SCHEMA: dict[str, Any] = {
1942
1942
  "id": {"type": "string"},
1943
1943
  "source_agent": {
1944
1944
  "type": "string",
1945
+ # Keep in sync with _LEDGER_SOURCE_AGENTS in
1946
+ # map_step_runner.py — the runner maps every
1947
+ # caller-supplied source through that frozenset, so a
1948
+ # value it accepts must be declared here or the ledger
1949
+ # fails its own schema. "role" covers the
1950
+ # user_experience / maintainer reviewers.
1945
1951
  "enum": [
1946
1952
  "monitor", "predictor", "evaluator",
1947
- "adversarial", "ordering", "operator",
1953
+ "adversarial", "ordering", "operator", "role",
1948
1954
  ],
1949
1955
  },
1950
1956
  "category": {
@@ -1981,7 +1987,10 @@ REVIEW_VERDICT_LEDGER_SCHEMA: dict[str, Any] = {
1981
1987
  "new_evidence", "quote_absent", "wrong_category",
1982
1988
  "different_version", "pre_existing_backlog",
1983
1989
  "human_escalation", "pressure_without_new_fact",
1984
- "input_integrity", "not_applicable", None,
1990
+ "input_integrity", "not_applicable",
1991
+ # A role finding that did not fill all five output
1992
+ # contract parts: tombstoned, never counted.
1993
+ "contract_incomplete", None,
1985
1994
  ],
1986
1995
  },
1987
1996
  "transition_evidence": {"type": ["string", "null"]},
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  name: map-review
3
- description: "Interactive 4-section code review using monitor, predictor, and evaluator agents on current changes. Use when reviewing a diff, PR, or staged work before merge. Do NOT use to plan or implement; use map-plan or map-efficient."
3
+ description: "Interactive 4-section code review using monitor, predictor, and evaluator agents plus the user and maintainer role reviewers on current changes. Use when reviewing a diff, PR, or staged work before merge. Do NOT use to plan or implement; use map-plan or map-efficient."
4
4
  ---
5
5
  ## MAP update preflight
6
6
 
@@ -12,7 +12,9 @@ For `updated`, re-read this invoked skill's installed `SKILL.md`, skip its alrea
12
12
  # $map-review - MAP Review Workflow
13
13
 
14
14
  Interactive, structured code review of current changes using monitor,
15
- predictor, and evaluator agents. This skill is the Codex counterpart to
15
+ predictor, and evaluator agents, plus two role reviewers `user_experience`
16
+ (did the already-shipped path get worse?) and `maintainer` (what rot survives
17
+ the merge?). This skill is the Codex counterpart to
16
18
  Claude `/map-review`: it uses Codex-native dispatch (`spawn_agent`) for
17
19
  independent reviewer passes, and the current Codex session drives bundle
18
20
  setup, verification gates, and presentation.
@@ -66,8 +68,9 @@ These constraints apply before any write-capable step:
66
68
  4. Build the review bundle before launching reviewer agents.
67
69
  5. Build bounded review prompts before launching reviewer agents.
68
70
  6. Launch each reviewer agent once per fan-out (full mode: monitor +
69
- predictor + evaluator; lightweight mode: monitor only) the single
70
- truncation retry in Step A.2b is the only exception.
71
+ predictor + evaluator + the `user_experience` and `maintainer` role
72
+ reviewers; lightweight mode: monitor only) the single truncation
73
+ retry in Step A.2b is the only exception.
71
74
  7. Monitor `valid=false` requires verification, not immediate publication —
72
75
  every finding needs evidence and must be introduced by this change
73
76
  before it reaches presentation.
@@ -162,7 +165,7 @@ Extract each role's prompt from `REVIEW_PROMPTS_JSON`, then dispatch with
162
165
  `spawn_agent(agent_type=...)` — see
163
166
  [review-reference.md](review-reference.md#dispatch) for the exact prompt
164
167
  extraction shell one-liners. Full mode runs monitor + predictor +
165
- evaluator; lightweight mode runs monitor only. When
168
+ evaluator + both role reviewers; lightweight mode runs monitor only. When
166
169
  `COMPLEXITY_LENS_ENABLED=true` (i.e. `.map/config.yaml` sets `minimality`
167
170
  to `lite`/`full`/`ultra`), also dispatch the complexity lens using the
168
171
  `evaluator` agent type with the `complexity_lens` prompt.
@@ -182,6 +185,18 @@ spawn_agent(
182
185
  agent_type="evaluator",
183
186
  message=EVALUATOR_PROMPT
184
187
  )
188
+ # Full mode only — role reviewers run with isolated context (diff + bundle).
189
+ # They reuse the `evaluator` agent type the same way the complexity lens does:
190
+ # the configured Codex agents are decomposer/monitor/researcher/predictor/
191
+ # evaluator, and what the pass does is defined by its prompt, not by the type.
192
+ spawn_agent(
193
+ agent_type="evaluator",
194
+ message=USER_EXPERIENCE_PROMPT
195
+ )
196
+ spawn_agent(
197
+ agent_type="evaluator",
198
+ message=MAINTAINER_PROMPT
199
+ )
185
200
  # When COMPLEXITY_LENS_ENABLED=true only:
186
201
  spawn_agent(
187
202
  agent_type="evaluator",
@@ -189,6 +204,16 @@ spawn_agent(
189
204
  )
190
205
  ```
191
206
 
207
+ The role reviewers read the repository (including `git show
208
+ <default-branch>:<file>` for the pre-change surface) and answer to the
209
+ five-part output contract — `problem`, `current_code`, `proposed_code`,
210
+ `why_better`, `cost`. A finding missing any part never gates the change and
211
+ never disappears: on the normal fan-out the ledger tombstones it as
212
+ `contract_incomplete` and names it in `not_verified`, and above `minor` it
213
+ also sets `escalation_required` so PROCEED is unavailable; under
214
+ `--adversarial` the aggregator drops it before the ledger and lists it under
215
+ `contract_incomplete` in the report.
216
+
192
217
  When enabled, the complexity lens is advisory only. It lists
193
218
  over-engineering as `delete:`, `stdlib:`, `native:`, `yagni:`, or `shrink:`
194
219
  findings, ends with `net: -<N> lines possible.` or `Lean already. Ship.`,
@@ -205,7 +230,8 @@ printf '%s' "$MONITOR_RESPONSE" | \
205
230
  python3 .map/scripts/map_step_runner.py detect_truncated_agent_output --agent review-monitor
206
231
  ```
207
232
 
208
- Use `--agent predictor` / `--agent evaluator` for the other roles. On
233
+ Use `--agent predictor` / `--agent evaluator` / `--agent user_experience` /
234
+ `--agent maintainer` for the other roles. On
209
235
  truncation, log the failure and re-invoke that reviewer once using the
210
236
  retry prompt built from the same stdin-piped pattern; if still malformed,
211
237
  stop with CLARIFICATION_NEEDED. See
@@ -375,5 +401,5 @@ detached, shuffle, and compare-ordering examples.
375
401
  ## Troubleshooting
376
402
 
377
403
  See [review-reference.md](review-reference.md#troubleshooting) for
378
- unavailable detached worktrees, missing review bundles, review prompt
379
- clipping, and ordering drift.
404
+ unavailable detached worktrees, missing review bundles, oversized reviewer
405
+ prompts, and ordering drift.
@@ -2,7 +2,7 @@
2
2
 
3
3
  Detailed workflow for `$map-review --adversarial`. See [SKILL.md](SKILL.md)
4
4
  for context and integration points. This is the Codex counterpart to Claude
5
- `--adversarial`: the same three-reviewer contract, run as three SEQUENTIAL
5
+ `--adversarial`: the same five-reviewer contract, run as SEQUENTIAL
6
6
  IN-SESSION passes by the current Codex session instead of a parallel agent
7
7
  fan-out.
8
8
 
@@ -19,7 +19,7 @@ registered Codex agent types.
19
19
  (one outside the five above) is an UNVERIFIED ASSUMPTION carried over from
20
20
  discovery, not a proven platform limitation.** This file deliberately does
21
21
  NOT resolve that assumption — it picks the simpler, verifiably-correct
22
- option instead: run the three reviewer passes sequentially in the current
22
+ option instead: run the five reviewer passes sequentially in the current
23
23
  Codex session, with the session itself switching context/persona between
24
24
  passes, rather than betting on an unconfirmed dispatch capability.
25
25
 
@@ -40,7 +40,7 @@ works today.
40
40
 
41
41
  ## Overview
42
42
 
43
- Three reviewer passes, each with only its permitted inputs, run ONE AFTER
43
+ Five reviewer passes, each with only its permitted inputs, run ONE AFTER
44
44
  ANOTHER in the current session (never in parallel, never via a new
45
45
  agent-dispatch primitive):
46
46
 
@@ -49,12 +49,22 @@ agent-dispatch primitive):
49
49
  | **Blind Hunter** | diff only | Typos, dead code, logic errors visible in isolation |
50
50
  | **Edge Case Hunter** | diff + repo read access | Null handling, boundary conditions, error paths, codebase consistency |
51
51
  | **Acceptance Auditor** | diff + spec + plan + artifacts | Missed requirements, spec violations, AC gaps, extra/unplanned work |
52
+ | **User (`user_experience`)** | diff + repo read access | Regressions in the already-shipped path: extra mandatory steps, confusable flags, an explicit value silently overridden |
53
+ | **Maintainer (`maintainer`)** | diff + repo read access | Branch-scoped litter in comments, implementation leaking into user-facing text, copy-paste, split sources of truth, version predicates by number, embedded foreign-language code |
52
54
 
53
- With `--quick`: skip the Edge Case Hunter pass (Blind + Acceptance only).
55
+ With `--quick`: skip the Edge Case Hunter pass (Blind + Acceptance + both
56
+ role passes).
57
+
58
+ The two role passes answer to the five-part output contract (`problem`,
59
+ `current_code`, `proposed_code`, `why_better`, `cost`); a finding that
60
+ cannot fill all five is dropped into `contract_incomplete` by the
61
+ aggregator — reported, never counted. See
62
+ [review-reference.md](review-reference.md#role-reviewers) for what each role
63
+ checks.
54
64
 
55
65
  Between passes, deliberately narrow the session's working context to match
56
66
  the pass's permitted inputs (e.g. do not consult the spec while running the
57
- Blind Hunter pass) so the three passes stay as independent as a sequential,
67
+ Blind Hunter pass) so the passes stay as independent as a sequential,
58
68
  single-session execution allows.
59
69
 
60
70
  ## Step B.adversarial.0: Build adversarial review prompts
@@ -75,25 +85,31 @@ EDGE_DESC=$(printf '%s' "$ADV_PROMPTS_JSON" | python3 -c 'import json,sys; d=jso
75
85
 
76
86
  ACCEPTANCE_PROMPT=$(printf '%s' "$ADV_PROMPTS_JSON" | python3 -c 'import json,sys; d=json.load(sys.stdin); print(d.get("prompts",{}).get("acceptance",{}).get("prompt",""))')
77
87
  ACCEPTANCE_DESC=$(printf '%s' "$ADV_PROMPTS_JSON" | python3 -c 'import json,sys; d=json.load(sys.stdin); print(d.get("prompts",{}).get("acceptance",{}).get("description",""))')
88
+
89
+ USER_EXPERIENCE_PROMPT=$(printf '%s' "$ADV_PROMPTS_JSON" | python3 -c 'import json,sys; d=json.load(sys.stdin); print(d.get("prompts",{}).get("user_experience",{}).get("prompt",""))')
90
+ MAINTAINER_PROMPT=$(printf '%s' "$ADV_PROMPTS_JSON" | python3 -c 'import json,sys; d=json.load(sys.stdin); print(d.get("prompts",{}).get("maintainer",{}).get("prompt",""))')
78
91
  ```
79
92
 
80
93
  `build_adversarial_review_prompts` is the exact same CLI verb the Claude
81
94
  port calls — payload flows out via stdout JSON only, never via argv, per
82
95
  the stdin-safe piping convention used throughout this skill.
83
96
 
84
- ## Step B.adversarial.1: Run all three passes sequentially, in-session
97
+ ## Step B.adversarial.1: Run all five passes sequentially, in-session
85
98
 
86
99
  ```text
87
- # Run the three adversarial reviewer passes ONE AFTER ANOTHER in the
100
+ # Run the five adversarial reviewer passes ONE AFTER ANOTHER in the
88
101
  # current Codex session. Do NOT call spawn_agent() for these passes and do
89
102
  # NOT invent a new agent-dispatch primitive — see "Design note" above for
90
103
  # why. Each pass consumes only its permitted context (BLIND_PROMPT /
91
- # EDGE_PROMPT / ACCEPTANCE_PROMPT) and produces its own JSON finding
92
- # report before the next pass begins.
104
+ # EDGE_PROMPT / ACCEPTANCE_PROMPT / USER_EXPERIENCE_PROMPT /
105
+ # MAINTAINER_PROMPT) and produces its own JSON finding report before the
106
+ # next pass begins.
93
107
 
94
108
  Pass 1 (Blind Hunter): execute BLIND_PROMPT in-session -> BLIND_OUTPUT
95
109
  Pass 2 (Edge Case Hunter): execute EDGE_PROMPT in-session -> EDGE_OUTPUT (skip if --quick)
96
110
  Pass 3 (Acceptance Auditor): execute ACCEPTANCE_PROMPT in-session -> ACCEPTANCE_OUTPUT
111
+ Pass 4 (User): execute USER_EXPERIENCE_PROMPT in-session -> USER_EXPERIENCE_OUTPUT
112
+ Pass 5 (Maintainer): execute MAINTAINER_PROMPT in-session -> MAINTAINER_OUTPUT
97
113
  ```
98
114
 
99
115
  ## Step B.adversarial.2: Validate reviewer outputs
@@ -119,24 +135,39 @@ Write each pass's raw JSON output to a temp file, then aggregate:
119
135
 
120
136
  ```bash
121
137
  printf '%s' "$BLIND_OUTPUT" > .map/$BRANCH/adversarial-blind.json
122
- printf '%s' "$EDGE_OUTPUT" > .map/$BRANCH/adversarial-edge.json
123
138
  printf '%s' "$ACCEPTANCE_OUTPUT" > .map/$BRANCH/adversarial-acceptance.json
139
+ printf '%s' "$USER_EXPERIENCE_OUTPUT" > .map/$BRANCH/adversarial-user-experience.json
140
+ printf '%s' "$MAINTAINER_OUTPUT" > .map/$BRANCH/adversarial-maintainer.json
141
+
142
+ # The Edge Case Hunter pass did not run under --quick. Writing its file
143
+ # anyway would leave an EMPTY payload (or a stale one from an earlier full
144
+ # run) that the `-f` test below happily forwards; the aggregator then
145
+ # reports edge_case as parse_error, or folds in findings from another
146
+ # review. Remove it, then write it only when the pass actually ran.
147
+ rm -f .map/$BRANCH/adversarial-edge.json
148
+ if [ "$QUICK_FLAG" != "true" ]; then
149
+ printf '%s' "$EDGE_OUTPUT" > .map/$BRANCH/adversarial-edge.json
150
+ fi
124
151
 
125
- BLIND_ARG=""
126
- EDGE_ARG=""
127
- ACCEPTANCE_ARG=""
152
+ ADV_ARGS=""
128
153
  if [ -f .map/$BRANCH/adversarial-blind.json ]; then
129
- BLIND_ARG="--blind .map/$BRANCH/adversarial-blind.json"
154
+ ADV_ARGS="$ADV_ARGS --blind .map/$BRANCH/adversarial-blind.json"
130
155
  fi
131
156
  if [ -f .map/$BRANCH/adversarial-edge.json ]; then
132
- EDGE_ARG="--edge-case .map/$BRANCH/adversarial-edge.json"
157
+ ADV_ARGS="$ADV_ARGS --edge-case .map/$BRANCH/adversarial-edge.json"
133
158
  fi
134
159
  if [ -f .map/$BRANCH/adversarial-acceptance.json ]; then
135
- ACCEPTANCE_ARG="--acceptance .map/$BRANCH/adversarial-acceptance.json"
160
+ ADV_ARGS="$ADV_ARGS --acceptance .map/$BRANCH/adversarial-acceptance.json"
161
+ fi
162
+ if [ -f .map/$BRANCH/adversarial-user-experience.json ]; then
163
+ ADV_ARGS="$ADV_ARGS --user-experience .map/$BRANCH/adversarial-user-experience.json"
164
+ fi
165
+ if [ -f .map/$BRANCH/adversarial-maintainer.json ]; then
166
+ ADV_ARGS="$ADV_ARGS --maintainer .map/$BRANCH/adversarial-maintainer.json"
136
167
  fi
137
168
 
138
169
  ADV_AGGREGATED=$(python3 .map/scripts/map_step_runner.py aggregate_adversarial_findings \
139
- $BLIND_ARG $EDGE_ARG $ACCEPTANCE_ARG)
170
+ $ADV_ARGS)
140
171
  ```
141
172
 
142
173
  `aggregate_adversarial_findings` is the exact same CLI verb the Claude port
@@ -153,8 +184,9 @@ Parse the aggregated JSON and present the report in this structure:
153
184
  ## Summary
154
185
  - Total findings: N (C CRITICAL, I IMPORTANT, M MINOR)
155
186
  - Corroborated (found by 2+ passes): K — highest confidence
156
- - Per-pass: Blind: B, Edge Case: E, Acceptance: A
187
+ - Per-pass: Blind: B, Edge Case: E, Acceptance: A, User: U, Maintainer: M
157
188
  - All-clear: [passes that reported all_clear=true]
189
+ - Dropped for an incomplete output contract: [contract_incomplete entries]
158
190
 
159
191
  ## CRITICAL
160
192
  [per finding: severity, category, file:line, failure_mode, evidence, reported_by, corroborated flag]
@@ -190,8 +222,8 @@ Artifacts.
190
222
  ## Flow summary for adversarial
191
223
 
192
224
  When `ADVERSARIAL_FLAG=true`, the workflow is:
193
- Phase A (all steps) → Phase B: Adversarial Review (3 sequential in-session
194
- passes) → Final Verdict → Handoff Artifacts. Do NOT run the normal
225
+ Phase A (all steps) → Phase B: Adversarial Review (5 sequential in-session
226
+ passes, 4 with `--quick`) → Final Verdict → Handoff Artifacts. Do NOT run the normal
195
227
  Monitor/Predictor/Evaluator fan-out or the 4-section walkthrough.
196
228
 
197
229
  ## Examples
@@ -205,7 +237,7 @@ See [review-reference.md](review-reference.md#examples) for adversarial examples
205
237
  Re-run that specific pass ONCE. If still invalid, record `parse_error` and
206
238
  continue — two valid passes are better than zero.
207
239
 
208
- ### All three passes fail
240
+ ### All passes fail
209
241
 
210
242
  Stop with CLARIFICATION_NEEDED. The diff may be too large or the context
211
243
  too complex for adversarial review.
@@ -32,7 +32,9 @@ with open(f".map/{branch}/review-mode.json", "w") as f:
32
32
  ```
33
33
 
34
34
  Mode semantics:
35
- - **`full`** (default): three reviewer fan-out, all four sections.
35
+ - **`full`** (default): five-reviewer fan-out in total — monitor, predictor,
36
+ evaluator + the two role passes (`user_experience`, `maintainer`), all four
37
+ sections. The complexity lens is advisory and extra.
36
38
  - **`lightweight`**: monitor only, diff-only, two sections (Code Quality +
37
39
  Tests), every finding must carry `reach_evidence`. Bundle is empty so
38
40
  reviewers have nothing to synthesize from — staying minimal prevents
@@ -105,6 +107,8 @@ PREDICTOR_PROMPT=$(printf '%s' "$REVIEW_PROMPTS_JSON" | python3 -c 'import json,
105
107
  EVALUATOR_PROMPT=$(printf '%s' "$REVIEW_PROMPTS_JSON" | python3 -c 'import json,sys; print(json.load(sys.stdin)["prompts"]["evaluator"]["prompt"])')
106
108
  COMPLEXITY_LENS_PROMPT=$(printf '%s' "$REVIEW_PROMPTS_JSON" | python3 -c 'import json,sys; data=json.load(sys.stdin); print(data.get("prompts",{}).get("complexity_lens",{}).get("prompt", ""))')
107
109
  COMPLEXITY_LENS_ENABLED=$(printf '%s' "$REVIEW_PROMPTS_JSON" | python3 -c 'import json,sys; data=json.load(sys.stdin); print("true" if data.get("prompts",{}).get("complexity_lens") else "false")')
110
+ USER_EXPERIENCE_PROMPT=$(printf '%s' "$REVIEW_PROMPTS_JSON" | python3 -c 'import json,sys; print(json.load(sys.stdin)["prompts"]["user_experience"]["prompt"])')
111
+ MAINTAINER_PROMPT=$(printf '%s' "$REVIEW_PROMPTS_JSON" | python3 -c 'import json,sys; print(json.load(sys.stdin)["prompts"]["maintainer"]["prompt"])')
108
112
  ```
109
113
 
110
114
  ```text
@@ -113,12 +117,20 @@ spawn_agent(agent_type="monitor", message=MONITOR_PROMPT)
113
117
  spawn_agent(agent_type="predictor", message=PREDICTOR_PROMPT)
114
118
  # Full mode only — skip in lightweight mode (monitor-only):
115
119
  spawn_agent(agent_type="evaluator", message=EVALUATOR_PROMPT)
120
+ # Full mode only — role reviewers. Isolated means: no other reviewer's
121
+ # output. They DO get read-only repo access on top of diff + bundle —
122
+ # both roles must run `git show <default-branch>:<file>` and grep the base.
123
+ spawn_agent(agent_type="evaluator", message=USER_EXPERIENCE_PROMPT)
124
+ spawn_agent(agent_type="evaluator", message=MAINTAINER_PROMPT)
116
125
  # When COMPLEXITY_LENS_ENABLED=true only:
117
126
  spawn_agent(agent_type="evaluator", message=COMPLEXITY_LENS_PROMPT)
118
127
  ```
119
128
 
120
- Full mode runs monitor + predictor + evaluator; lightweight mode runs
121
- monitor only. Reviewer prompts reference `review-bundle.json`,
129
+ Full mode runs monitor + predictor + evaluator + both role reviewers;
130
+ lightweight mode runs monitor only. The role reviewers reuse the
131
+ `evaluator` agent type exactly as the complexity lens does — the
132
+ configured Codex agents are decomposer/monitor/researcher/predictor/
133
+ evaluator, and what a pass does is defined by its prompt, not by the type. Reviewer prompts reference `review-bundle.json`,
122
134
  `review-bundle.md`, the raw diff as secondary context, and the expected
123
135
  output schema (Monitor evidence/valid/verdict/issues,
124
136
  Predictor evidence/risk_assessment/landmine_evidence, Evaluator
@@ -140,6 +152,10 @@ printf '%s' "$PREDICTOR_RESPONSE" | \
140
152
  python3 .map/scripts/map_step_runner.py detect_truncated_agent_output --agent predictor
141
153
  printf '%s' "$EVALUATOR_RESPONSE" | \
142
154
  python3 .map/scripts/map_step_runner.py detect_truncated_agent_output --agent evaluator
155
+ printf '%s' "$USER_EXPERIENCE_RESPONSE" | \
156
+ python3 .map/scripts/map_step_runner.py detect_truncated_agent_output --agent user_experience
157
+ printf '%s' "$MAINTAINER_RESPONSE" | \
158
+ python3 .map/scripts/map_step_runner.py detect_truncated_agent_output --agent maintainer
143
159
  ```
144
160
 
145
161
  On truncation: log via
@@ -169,6 +185,12 @@ walkthrough item:
169
185
  the twin.
170
186
  4. **Precheck duplication check.** If the finding matches a precheck error
171
187
  line, cite the precheck and stop — do NOT raise a second instance.
188
+ 4b. **Role contract check.** A `user_experience` / `maintainer` finding is
189
+ published only with all five contract parts filled (`problem`,
190
+ `current_code`, `proposed_code`, `why_better`, `cost`). An incomplete
191
+ one is not softened into an advisory: the ledger tombstones it as
192
+ `contract_incomplete` and names it in `not_verified` — and above `minor`
193
+ it escalates, so PROCEED is unavailable until a human rules on it.
172
194
  5. **Reachability check** (defensive branches): guard-branch patterns
173
195
  usually exist by convention and their absence of tests is not a
174
196
  "missing test" finding unless the surrounding logic actually depends
@@ -261,6 +283,72 @@ When `--compare-orderings` is set, collect one run with
261
283
  aggregate with `compare-review-runs`, then persist with
262
284
  `record-review-ordering`. Treat verdict drift as review evidence.
263
285
 
286
+ ## Role Reviewers
287
+
288
+ Two perspective roles run in BOTH review paths — the normal fan-out and
289
+ `--adversarial`. They answer questions nobody else in the fan-out is asked.
290
+
291
+ **`user_experience` — the person or script that CALLS this.** One question:
292
+ did the change make the ALREADY SHIPPED functionality harder or less
293
+ convenient?
294
+
295
+ - Convenience regression: do the pre-diff scenarios still take the same
296
+ number of steps? Did the old path gain a mandatory flag or ordering rule?
297
+ - Distinguishability: two confusable flags/options/fields (`--release` vs
298
+ `--from-release`)? Does the name alone say what it does?
299
+ - Explicit input beats a default: an explicitly supplied value that is
300
+ incompatible with the new mode must be REJECTED with a clear error, never
301
+ silently overridden.
302
+ - The current flag set is not a given — propose the ideal one when it confuses.
303
+ - Judged from two sub-roles: a human in a terminal, and a CI script.
304
+
305
+ **`maintainer` — the person extending this a quarter from now.** Checks:
306
+
307
+ | Class | What it hunts |
308
+ |---|---|
309
+ | A1 | Branch-scoped litter in comments (plan/tracker IDs, `.map/` paths, "step N") |
310
+ | A2 | Implementation vocabulary leaking into help/error/log/doc text |
311
+ | B | Copy-paste: near-identical logic in 2+ places that must change in sync |
312
+ | C | Single source of truth: one decision computed in more than one place |
313
+ | D | Overcomplication: twisted booleans, deep nesting, mixed responsibilities |
314
+ | E | Order of logic: validation / defaults / execution readable top to bottom |
315
+ | F | Dead or idle work: built-but-unused structures, duplicated guards |
316
+ | G | Extensibility: how many places the next similar case touches — exact N |
317
+ | H | Version/capability predicates: one module, named by capability not number, one comparison style — found by whole-base grep, not in the diff |
318
+ | I | Embedded shell/YAML/SQL/HCL inside string literals — unreviewable, untestable |
319
+
320
+ For B, C and H one site is not a finding: the finding is the number of sites
321
+ and the point where they collapse.
322
+
323
+ ### The output contract
324
+
325
+ Every role finding carries five parts, or it is not reported:
326
+
327
+ | Part | Requirement |
328
+ |---|---|
329
+ | `problem` | one line + exact `file:line` |
330
+ | `current_code` | the lines as they are, copied verbatim |
331
+ | `proposed_code` | applicable as a patch — the helper itself, not "extract a helper" |
332
+ | `why_better` | measurable delta ("3 edit sites -> 1", "-1 responsibility"); bare "cleaner" is rejected |
333
+ | `cost` | the downside of the fix, or `none` |
334
+
335
+ A finding missing any part is NOT softened into an advisory, but where it
336
+ lands depends on the path that ran: on the normal fan-out the ledger
337
+ tombstones it with `transition_reason: contract_incomplete` — at ANY
338
+ severity, and when that severity is above `minor` it also sets
339
+ `escalation_required`, so a CRITICAL dropped for a missing `cost` costs the
340
+ run its PROCEED instead of vanishing; under `--adversarial` the aggregator
341
+ removes it first, so it appears only under `contract_incomplete` in the
342
+ report and the ledger never sees it. Either way it cannot gate the change,
343
+ and it cannot disappear either.
344
+
345
+ Standalone prompt build (the normal fan-out builds these automatically):
346
+
347
+ ```bash
348
+ python3 .map/scripts/map_step_runner.py build_role_review_prompts \
349
+ [--roles user_experience,maintainer]
350
+ ```
351
+
264
352
  ## Cross-AI
265
353
 
266
354
  See the "Phase B: Cross-AI Peer Review" section in [SKILL.md](SKILL.md) for
@@ -361,7 +449,8 @@ $map-review --compare-orderings
361
449
  - Detached prep unavailable: continue from the in-place review bundle; do
362
450
  not mutate the source branch.
363
451
  - Missing bundle: rerun `create_review_bundle` before agents.
364
- - Prompt clipping: inspect `.map/<branch>/token_budget.json`, then raise
365
- `MAP_REVIEW_PROMPT_BUDGET_TOKENS` only when the bundle evidence is
366
- actually missing.
452
+ - Oversized reviewer prompt: nothing is clipped and no `token_budget.json`
453
+ entry is written for review `MAP_REVIEW_PROMPT_BUDGET_TOKENS` is
454
+ reported, not enforced. Reduce the input yourself (compact the session,
455
+ or split the change); raising the variable changes nothing.
367
456
  - Monitor invalid: treat as hard stop and record `REVISE` or `BLOCK`.