mapify-cli 3.15.0__tar.gz → 3.15.2__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 (409) hide show
  1. {mapify_cli-3.15.0 → mapify_cli-3.15.2}/PKG-INFO +1 -1
  2. {mapify_cli-3.15.0 → mapify_cli-3.15.2}/pyproject.toml +1 -1
  3. {mapify_cli-3.15.0 → mapify_cli-3.15.2}/src/mapify_cli/__init__.py +1 -1
  4. {mapify_cli-3.15.0 → mapify_cli-3.15.2}/src/mapify_cli/templates/codex/agents/researcher.toml +28 -14
  5. {mapify_cli-3.15.0 → mapify_cli-3.15.2}/src/mapify_cli/templates/codex/hooks/workflow-gate.py +12 -11
  6. {mapify_cli-3.15.0 → mapify_cli-3.15.2}/src/mapify_cli/templates/codex/skills/map-efficient/SKILL.md +7 -3
  7. {mapify_cli-3.15.0 → mapify_cli-3.15.2}/src/mapify_cli/templates/hooks/post-compact-context.py +1 -1
  8. {mapify_cli-3.15.0 → mapify_cli-3.15.2}/src/mapify_cli/templates/hooks/workflow-context-injector.py +1 -1
  9. {mapify_cli-3.15.0 → mapify_cli-3.15.2}/src/mapify_cli/templates/hooks/workflow-gate.py +12 -11
  10. {mapify_cli-3.15.0 → mapify_cli-3.15.2}/src/mapify_cli/templates/map/scripts/map_orchestrator.py +18 -11
  11. {mapify_cli-3.15.0 → mapify_cli-3.15.2}/src/mapify_cli/templates/references/step-state-schema.md +2 -3
  12. {mapify_cli-3.15.0 → mapify_cli-3.15.2}/src/mapify_cli/templates/skills/map-efficient/SKILL.md +5 -5
  13. {mapify_cli-3.15.0 → mapify_cli-3.15.2}/src/mapify_cli/templates/skills/map-task/SKILL.md +1 -1
  14. {mapify_cli-3.15.0 → mapify_cli-3.15.2}/src/mapify_cli/templates_src/codex/agents/researcher.toml.jinja +28 -14
  15. {mapify_cli-3.15.0/src/mapify_cli/templates_src → mapify_cli-3.15.2/src/mapify_cli/templates_src/codex}/hooks/workflow-gate.py.jinja +12 -11
  16. {mapify_cli-3.15.0 → mapify_cli-3.15.2}/src/mapify_cli/templates_src/codex/skills/map-efficient/SKILL.md.jinja +7 -3
  17. {mapify_cli-3.15.0 → mapify_cli-3.15.2}/src/mapify_cli/templates_src/hooks/post-compact-context.py.jinja +1 -1
  18. {mapify_cli-3.15.0 → mapify_cli-3.15.2}/src/mapify_cli/templates_src/hooks/workflow-context-injector.py.jinja +1 -1
  19. {mapify_cli-3.15.0/src/mapify_cli/templates_src/codex → mapify_cli-3.15.2/src/mapify_cli/templates_src}/hooks/workflow-gate.py.jinja +12 -11
  20. {mapify_cli-3.15.0 → mapify_cli-3.15.2}/src/mapify_cli/templates_src/map/scripts/map_orchestrator.py.jinja +18 -11
  21. {mapify_cli-3.15.0 → mapify_cli-3.15.2}/src/mapify_cli/templates_src/references/step-state-schema.md.jinja +2 -3
  22. {mapify_cli-3.15.0 → mapify_cli-3.15.2}/src/mapify_cli/templates_src/skills/map-efficient/SKILL.md.jinja +5 -5
  23. {mapify_cli-3.15.0 → mapify_cli-3.15.2}/src/mapify_cli/templates_src/skills/map-task/SKILL.md.jinja +1 -1
  24. {mapify_cli-3.15.0 → mapify_cli-3.15.2}/tests/test_skills.py +120 -0
  25. {mapify_cli-3.15.0 → mapify_cli-3.15.2}/.claude/hooks/README.md +0 -0
  26. {mapify_cli-3.15.0 → mapify_cli-3.15.2}/.claude/skills/README.md +0 -0
  27. {mapify_cli-3.15.0 → mapify_cli-3.15.2}/.gitignore +0 -0
  28. {mapify_cli-3.15.0 → mapify_cli-3.15.2}/LICENSE +0 -0
  29. {mapify_cli-3.15.0 → mapify_cli-3.15.2}/README.md +0 -0
  30. {mapify_cli-3.15.0 → mapify_cli-3.15.2}/src/mapify_cli/_locking.py +0 -0
  31. {mapify_cli-3.15.0 → mapify_cli-3.15.2}/src/mapify_cli/cli_ui.py +0 -0
  32. {mapify_cli-3.15.0 → mapify_cli-3.15.2}/src/mapify_cli/config/__init__.py +0 -0
  33. {mapify_cli-3.15.0 → mapify_cli-3.15.2}/src/mapify_cli/config/mcp.py +0 -0
  34. {mapify_cli-3.15.0 → mapify_cli-3.15.2}/src/mapify_cli/config/project_config.py +0 -0
  35. {mapify_cli-3.15.0 → mapify_cli-3.15.2}/src/mapify_cli/config/settings.py +0 -0
  36. {mapify_cli-3.15.0 → mapify_cli-3.15.2}/src/mapify_cli/delivery/__init__.py +0 -0
  37. {mapify_cli-3.15.0 → mapify_cli-3.15.2}/src/mapify_cli/delivery/agent_generator.py +0 -0
  38. {mapify_cli-3.15.0 → mapify_cli-3.15.2}/src/mapify_cli/delivery/codex_copier.py +0 -0
  39. {mapify_cli-3.15.0 → mapify_cli-3.15.2}/src/mapify_cli/delivery/file_copier.py +0 -0
  40. {mapify_cli-3.15.0 → mapify_cli-3.15.2}/src/mapify_cli/delivery/managed_file_copier.py +0 -0
  41. {mapify_cli-3.15.0 → mapify_cli-3.15.2}/src/mapify_cli/delivery/providers.py +0 -0
  42. {mapify_cli-3.15.0 → mapify_cli-3.15.2}/src/mapify_cli/delivery/template_renderer.py +0 -0
  43. {mapify_cli-3.15.0 → mapify_cli-3.15.2}/src/mapify_cli/dependency_graph.py +0 -0
  44. {mapify_cli-3.15.0 → mapify_cli-3.15.2}/src/mapify_cli/intent_detector.py +0 -0
  45. {mapify_cli-3.15.0 → mapify_cli-3.15.2}/src/mapify_cli/memory/__init__.py +0 -0
  46. {mapify_cli-3.15.0 → mapify_cli-3.15.2}/src/mapify_cli/memory/capture.py +0 -0
  47. {mapify_cli-3.15.0 → mapify_cli-3.15.2}/src/mapify_cli/memory/digest_schema.py +0 -0
  48. {mapify_cli-3.15.0 → mapify_cli-3.15.2}/src/mapify_cli/memory/finalize.py +0 -0
  49. {mapify_cli-3.15.0 → mapify_cli-3.15.2}/src/mapify_cli/memory/recall.py +0 -0
  50. {mapify_cli-3.15.0 → mapify_cli-3.15.2}/src/mapify_cli/ralph_state.py +0 -0
  51. {mapify_cli-3.15.0 → mapify_cli-3.15.2}/src/mapify_cli/repo_insight.py +0 -0
  52. {mapify_cli-3.15.0 → mapify_cli-3.15.2}/src/mapify_cli/schemas.py +0 -0
  53. {mapify_cli-3.15.0 → mapify_cli-3.15.2}/src/mapify_cli/skill_ir.py +0 -0
  54. {mapify_cli-3.15.0 → mapify_cli-3.15.2}/src/mapify_cli/skills_eval/__init__.py +0 -0
  55. {mapify_cli-3.15.0 → mapify_cli-3.15.2}/src/mapify_cli/skills_eval/aggregator.py +0 -0
  56. {mapify_cli-3.15.0 → mapify_cli-3.15.2}/src/mapify_cli/skills_eval/apply_patcher.py +0 -0
  57. {mapify_cli-3.15.0 → mapify_cli-3.15.2}/src/mapify_cli/skills_eval/assertions.py +0 -0
  58. {mapify_cli-3.15.0 → mapify_cli-3.15.2}/src/mapify_cli/skills_eval/description_optimizer.py +0 -0
  59. {mapify_cli-3.15.0 → mapify_cli-3.15.2}/src/mapify_cli/skills_eval/dispatcher.py +0 -0
  60. {mapify_cli-3.15.0 → mapify_cli-3.15.2}/src/mapify_cli/skills_eval/eval_schema.py +0 -0
  61. {mapify_cli-3.15.0 → mapify_cli-3.15.2}/src/mapify_cli/skills_eval/proposer.py +0 -0
  62. {mapify_cli-3.15.0 → mapify_cli-3.15.2}/src/mapify_cli/skills_eval/runner.py +0 -0
  63. {mapify_cli-3.15.0 → mapify_cli-3.15.2}/src/mapify_cli/skills_eval/viewer.py +0 -0
  64. {mapify_cli-3.15.0 → mapify_cli-3.15.2}/src/mapify_cli/templates/.gitignore +0 -0
  65. {mapify_cli-3.15.0 → mapify_cli-3.15.2}/src/mapify_cli/templates/CLAUDE.md +0 -0
  66. {mapify_cli-3.15.0 → mapify_cli-3.15.2}/src/mapify_cli/templates/agents/actor.md +0 -0
  67. {mapify_cli-3.15.0 → mapify_cli-3.15.2}/src/mapify_cli/templates/agents/debate-arbiter.md +0 -0
  68. {mapify_cli-3.15.0 → mapify_cli-3.15.2}/src/mapify_cli/templates/agents/documentation-reviewer.md +0 -0
  69. {mapify_cli-3.15.0 → mapify_cli-3.15.2}/src/mapify_cli/templates/agents/evaluator.md +0 -0
  70. {mapify_cli-3.15.0 → mapify_cli-3.15.2}/src/mapify_cli/templates/agents/final-verifier.md +0 -0
  71. {mapify_cli-3.15.0 → mapify_cli-3.15.2}/src/mapify_cli/templates/agents/monitor.md +0 -0
  72. {mapify_cli-3.15.0 → mapify_cli-3.15.2}/src/mapify_cli/templates/agents/predictor.md +0 -0
  73. {mapify_cli-3.15.0 → mapify_cli-3.15.2}/src/mapify_cli/templates/agents/reflector.md +0 -0
  74. {mapify_cli-3.15.0 → mapify_cli-3.15.2}/src/mapify_cli/templates/agents/research-agent.md +0 -0
  75. {mapify_cli-3.15.0 → mapify_cli-3.15.2}/src/mapify_cli/templates/agents/synthesizer.md +0 -0
  76. {mapify_cli-3.15.0 → mapify_cli-3.15.2}/src/mapify_cli/templates/agents/task-decomposer.md +0 -0
  77. {mapify_cli-3.15.0 → mapify_cli-3.15.2}/src/mapify_cli/templates/codex/AGENTS.md +0 -0
  78. {mapify_cli-3.15.0 → mapify_cli-3.15.2}/src/mapify_cli/templates/codex/agents/decomposer.toml +0 -0
  79. {mapify_cli-3.15.0 → mapify_cli-3.15.2}/src/mapify_cli/templates/codex/agents/monitor.toml +0 -0
  80. {mapify_cli-3.15.0 → mapify_cli-3.15.2}/src/mapify_cli/templates/codex/config.toml +0 -0
  81. {mapify_cli-3.15.0 → mapify_cli-3.15.2}/src/mapify_cli/templates/codex/hooks.json +0 -0
  82. {mapify_cli-3.15.0 → mapify_cli-3.15.2}/src/mapify_cli/templates/codex/skills/map-check/SKILL.md +0 -0
  83. {mapify_cli-3.15.0 → mapify_cli-3.15.2}/src/mapify_cli/templates/codex/skills/map-efficient/efficient-reference.md +0 -0
  84. {mapify_cli-3.15.0 → mapify_cli-3.15.2}/src/mapify_cli/templates/codex/skills/map-explain/SKILL.md +0 -0
  85. {mapify_cli-3.15.0 → mapify_cli-3.15.2}/src/mapify_cli/templates/codex/skills/map-fast/SKILL.md +0 -0
  86. {mapify_cli-3.15.0 → mapify_cli-3.15.2}/src/mapify_cli/templates/codex/skills/map-plan/SKILL.md +0 -0
  87. {mapify_cli-3.15.0 → mapify_cli-3.15.2}/src/mapify_cli/templates/hooks/README.md +0 -0
  88. {mapify_cli-3.15.0 → mapify_cli-3.15.2}/src/mapify_cli/templates/hooks/context-meter.py +0 -0
  89. {mapify_cli-3.15.0 → mapify_cli-3.15.2}/src/mapify_cli/templates/hooks/detect-clarification-triggers.py +0 -0
  90. {mapify_cli-3.15.0 → mapify_cli-3.15.2}/src/mapify_cli/templates/hooks/end-of-turn.sh +0 -0
  91. {mapify_cli-3.15.0 → mapify_cli-3.15.2}/src/mapify_cli/templates/hooks/map-memory-capture.py +0 -0
  92. {mapify_cli-3.15.0 → mapify_cli-3.15.2}/src/mapify_cli/templates/hooks/map-memory-endmark.py +0 -0
  93. {mapify_cli-3.15.0 → mapify_cli-3.15.2}/src/mapify_cli/templates/hooks/map-memory-finalize.py +0 -0
  94. {mapify_cli-3.15.0 → mapify_cli-3.15.2}/src/mapify_cli/templates/hooks/map-memory-recall.py +0 -0
  95. {mapify_cli-3.15.0 → mapify_cli-3.15.2}/src/mapify_cli/templates/hooks/map-token-meter.py +0 -0
  96. {mapify_cli-3.15.0 → mapify_cli-3.15.2}/src/mapify_cli/templates/hooks/pre-compact-save-transcript.py +0 -0
  97. {mapify_cli-3.15.0 → mapify_cli-3.15.2}/src/mapify_cli/templates/hooks/ralph-context-pruner.py +0 -0
  98. {mapify_cli-3.15.0 → mapify_cli-3.15.2}/src/mapify_cli/templates/hooks/ralph-iteration-logger.py +0 -0
  99. {mapify_cli-3.15.0 → mapify_cli-3.15.2}/src/mapify_cli/templates/hooks/safety-guardrails.py +0 -0
  100. {mapify_cli-3.15.0 → mapify_cli-3.15.2}/src/mapify_cli/templates/map/scripts/diagnostics.py +0 -0
  101. {mapify_cli-3.15.0 → mapify_cli-3.15.2}/src/mapify_cli/templates/map/scripts/map_step_runner.py +0 -0
  102. {mapify_cli-3.15.0 → mapify_cli-3.15.2}/src/mapify_cli/templates/map/scripts/map_utils.py +0 -0
  103. {mapify_cli-3.15.0 → mapify_cli-3.15.2}/src/mapify_cli/templates/map/scripts/sofa_client.py +0 -0
  104. {mapify_cli-3.15.0 → mapify_cli-3.15.2}/src/mapify_cli/templates/map/scripts/validate_spec_citations.py +0 -0
  105. {mapify_cli-3.15.0 → mapify_cli-3.15.2}/src/mapify_cli/templates/map/static-analysis/analyze.sh +0 -0
  106. {mapify_cli-3.15.0 → mapify_cli-3.15.2}/src/mapify_cli/templates/map/static-analysis/handlers/common.sh +0 -0
  107. {mapify_cli-3.15.0 → mapify_cli-3.15.2}/src/mapify_cli/templates/map/static-analysis/handlers/go.sh +0 -0
  108. {mapify_cli-3.15.0 → mapify_cli-3.15.2}/src/mapify_cli/templates/map/static-analysis/handlers/python.sh +0 -0
  109. {mapify_cli-3.15.0 → mapify_cli-3.15.2}/src/mapify_cli/templates/map/static-analysis/handlers/rust.sh +0 -0
  110. {mapify_cli-3.15.0 → mapify_cli-3.15.2}/src/mapify_cli/templates/map/static-analysis/handlers/typescript.sh +0 -0
  111. {mapify_cli-3.15.0 → mapify_cli-3.15.2}/src/mapify_cli/templates/ralph-loop-config.json +0 -0
  112. {mapify_cli-3.15.0 → mapify_cli-3.15.2}/src/mapify_cli/templates/references/bash-guidelines.md +0 -0
  113. {mapify_cli-3.15.0 → mapify_cli-3.15.2}/src/mapify_cli/templates/references/decomposition-examples.md +0 -0
  114. {mapify_cli-3.15.0 → mapify_cli-3.15.2}/src/mapify_cli/templates/references/escalation-matrix.md +0 -0
  115. {mapify_cli-3.15.0 → mapify_cli-3.15.2}/src/mapify_cli/templates/references/hook-patterns.md +0 -0
  116. {mapify_cli-3.15.0 → mapify_cli-3.15.2}/src/mapify_cli/templates/references/host-paths.md +0 -0
  117. {mapify_cli-3.15.0 → mapify_cli-3.15.2}/src/mapify_cli/templates/references/map-json-output-contracts.md +0 -0
  118. {mapify_cli-3.15.0 → mapify_cli-3.15.2}/src/mapify_cli/templates/references/map-output-examples.md +0 -0
  119. {mapify_cli-3.15.0 → mapify_cli-3.15.2}/src/mapify_cli/templates/references/map-xml-prompt-envelopes.md +0 -0
  120. {mapify_cli-3.15.0 → mapify_cli-3.15.2}/src/mapify_cli/templates/references/mcp-usage-examples.md +0 -0
  121. {mapify_cli-3.15.0 → mapify_cli-3.15.2}/src/mapify_cli/templates/references/workflow-state-schema.md +0 -0
  122. {mapify_cli-3.15.0 → mapify_cli-3.15.2}/src/mapify_cli/templates/rules/learned/README.md +0 -0
  123. {mapify_cli-3.15.0 → mapify_cli-3.15.2}/src/mapify_cli/templates/settings.json +0 -0
  124. {mapify_cli-3.15.0 → mapify_cli-3.15.2}/src/mapify_cli/templates/skills/README.md +0 -0
  125. {mapify_cli-3.15.0 → mapify_cli-3.15.2}/src/mapify_cli/templates/skills/map-check/SKILL.md +0 -0
  126. {mapify_cli-3.15.0 → mapify_cli-3.15.2}/src/mapify_cli/templates/skills/map-check/check-reference.md +0 -0
  127. {mapify_cli-3.15.0 → mapify_cli-3.15.2}/src/mapify_cli/templates/skills/map-debug/SKILL.md +0 -0
  128. {mapify_cli-3.15.0 → mapify_cli-3.15.2}/src/mapify_cli/templates/skills/map-efficient/efficient-reference.md +0 -0
  129. {mapify_cli-3.15.0 → mapify_cli-3.15.2}/src/mapify_cli/templates/skills/map-explain/SKILL.md +0 -0
  130. {mapify_cli-3.15.0 → mapify_cli-3.15.2}/src/mapify_cli/templates/skills/map-fast/SKILL.md +0 -0
  131. {mapify_cli-3.15.0 → mapify_cli-3.15.2}/src/mapify_cli/templates/skills/map-learn/SKILL.md +0 -0
  132. {mapify_cli-3.15.0 → mapify_cli-3.15.2}/src/mapify_cli/templates/skills/map-learn/templates/example-rules.md +0 -0
  133. {mapify_cli-3.15.0 → mapify_cli-3.15.2}/src/mapify_cli/templates/skills/map-learn/templates/rules-unconditional.md +0 -0
  134. {mapify_cli-3.15.0 → mapify_cli-3.15.2}/src/mapify_cli/templates/skills/map-learn/templates/rules-with-paths.md +0 -0
  135. {mapify_cli-3.15.0 → mapify_cli-3.15.2}/src/mapify_cli/templates/skills/map-memory-now/SKILL.md +0 -0
  136. {mapify_cli-3.15.0 → mapify_cli-3.15.2}/src/mapify_cli/templates/skills/map-plan/SKILL.md +0 -0
  137. {mapify_cli-3.15.0 → mapify_cli-3.15.2}/src/mapify_cli/templates/skills/map-plan/plan-reference.md +0 -0
  138. {mapify_cli-3.15.0 → mapify_cli-3.15.2}/src/mapify_cli/templates/skills/map-release/SKILL.md +0 -0
  139. {mapify_cli-3.15.0 → mapify_cli-3.15.2}/src/mapify_cli/templates/skills/map-resume/SKILL.md +0 -0
  140. {mapify_cli-3.15.0 → mapify_cli-3.15.2}/src/mapify_cli/templates/skills/map-resume/resume-reference.md +0 -0
  141. {mapify_cli-3.15.0 → mapify_cli-3.15.2}/src/mapify_cli/templates/skills/map-review/SKILL.md +0 -0
  142. {mapify_cli-3.15.0 → mapify_cli-3.15.2}/src/mapify_cli/templates/skills/map-review/review-reference.md +0 -0
  143. {mapify_cli-3.15.0 → mapify_cli-3.15.2}/src/mapify_cli/templates/skills/map-skill-eval/SKILL.md +0 -0
  144. {mapify_cli-3.15.0 → mapify_cli-3.15.2}/src/mapify_cli/templates/skills/map-so-search/SKILL.md +0 -0
  145. {mapify_cli-3.15.0 → mapify_cli-3.15.2}/src/mapify_cli/templates/skills/map-so-search/scripts/sofa_search.py +0 -0
  146. {mapify_cli-3.15.0 → mapify_cli-3.15.2}/src/mapify_cli/templates/skills/map-state/SKILL.md +0 -0
  147. {mapify_cli-3.15.0 → mapify_cli-3.15.2}/src/mapify_cli/templates/skills/map-state/scripts/check-complete.sh +0 -0
  148. {mapify_cli-3.15.0 → mapify_cli-3.15.2}/src/mapify_cli/templates/skills/map-state/scripts/get-plan-path.sh +0 -0
  149. {mapify_cli-3.15.0 → mapify_cli-3.15.2}/src/mapify_cli/templates/skills/map-state/scripts/init-session.sh +0 -0
  150. {mapify_cli-3.15.0 → mapify_cli-3.15.2}/src/mapify_cli/templates/skills/map-state/scripts/show-focus.sh +0 -0
  151. {mapify_cli-3.15.0 → mapify_cli-3.15.2}/src/mapify_cli/templates/skills/map-state/templates/findings.md +0 -0
  152. {mapify_cli-3.15.0 → mapify_cli-3.15.2}/src/mapify_cli/templates/skills/map-state/templates/iteration_history.md +0 -0
  153. {mapify_cli-3.15.0 → mapify_cli-3.15.2}/src/mapify_cli/templates/skills/map-state/templates/progress.md +0 -0
  154. {mapify_cli-3.15.0 → mapify_cli-3.15.2}/src/mapify_cli/templates/skills/map-state/templates/task_plan.md +0 -0
  155. {mapify_cli-3.15.0 → mapify_cli-3.15.2}/src/mapify_cli/templates/skills/map-tdd/SKILL.md +0 -0
  156. {mapify_cli-3.15.0 → mapify_cli-3.15.2}/src/mapify_cli/templates/skills/map-tokenreport/SKILL.md +0 -0
  157. {mapify_cli-3.15.0 → mapify_cli-3.15.2}/src/mapify_cli/templates/skills/skill-rules.json +0 -0
  158. {mapify_cli-3.15.0 → mapify_cli-3.15.2}/src/mapify_cli/templates/workflow-rules.json +0 -0
  159. {mapify_cli-3.15.0 → mapify_cli-3.15.2}/src/mapify_cli/templates_src/.gitignore.jinja +0 -0
  160. {mapify_cli-3.15.0 → mapify_cli-3.15.2}/src/mapify_cli/templates_src/CLAUDE.md.jinja +0 -0
  161. {mapify_cli-3.15.0 → mapify_cli-3.15.2}/src/mapify_cli/templates_src/agents/actor.md.jinja +0 -0
  162. {mapify_cli-3.15.0 → mapify_cli-3.15.2}/src/mapify_cli/templates_src/agents/debate-arbiter.md.jinja +0 -0
  163. {mapify_cli-3.15.0 → mapify_cli-3.15.2}/src/mapify_cli/templates_src/agents/documentation-reviewer.md.jinja +0 -0
  164. {mapify_cli-3.15.0 → mapify_cli-3.15.2}/src/mapify_cli/templates_src/agents/evaluator.md.jinja +0 -0
  165. {mapify_cli-3.15.0 → mapify_cli-3.15.2}/src/mapify_cli/templates_src/agents/final-verifier.md.jinja +0 -0
  166. {mapify_cli-3.15.0 → mapify_cli-3.15.2}/src/mapify_cli/templates_src/agents/monitor.md.jinja +0 -0
  167. {mapify_cli-3.15.0 → mapify_cli-3.15.2}/src/mapify_cli/templates_src/agents/predictor.md.jinja +0 -0
  168. {mapify_cli-3.15.0 → mapify_cli-3.15.2}/src/mapify_cli/templates_src/agents/reflector.md.jinja +0 -0
  169. {mapify_cli-3.15.0 → mapify_cli-3.15.2}/src/mapify_cli/templates_src/agents/research-agent.md.jinja +0 -0
  170. {mapify_cli-3.15.0 → mapify_cli-3.15.2}/src/mapify_cli/templates_src/agents/synthesizer.md.jinja +0 -0
  171. {mapify_cli-3.15.0 → mapify_cli-3.15.2}/src/mapify_cli/templates_src/agents/task-decomposer.md.jinja +0 -0
  172. {mapify_cli-3.15.0 → mapify_cli-3.15.2}/src/mapify_cli/templates_src/codex/AGENTS.md.jinja +0 -0
  173. {mapify_cli-3.15.0 → mapify_cli-3.15.2}/src/mapify_cli/templates_src/codex/agents/decomposer.toml.jinja +0 -0
  174. {mapify_cli-3.15.0 → mapify_cli-3.15.2}/src/mapify_cli/templates_src/codex/agents/monitor.toml.jinja +0 -0
  175. {mapify_cli-3.15.0 → mapify_cli-3.15.2}/src/mapify_cli/templates_src/codex/config.toml.jinja +0 -0
  176. {mapify_cli-3.15.0 → mapify_cli-3.15.2}/src/mapify_cli/templates_src/codex/hooks.json.jinja +0 -0
  177. {mapify_cli-3.15.0 → mapify_cli-3.15.2}/src/mapify_cli/templates_src/codex/skills/map-check/SKILL.md.jinja +0 -0
  178. {mapify_cli-3.15.0 → mapify_cli-3.15.2}/src/mapify_cli/templates_src/codex/skills/map-efficient/efficient-reference.md.jinja +0 -0
  179. {mapify_cli-3.15.0 → mapify_cli-3.15.2}/src/mapify_cli/templates_src/codex/skills/map-explain/SKILL.md.jinja +0 -0
  180. {mapify_cli-3.15.0 → mapify_cli-3.15.2}/src/mapify_cli/templates_src/codex/skills/map-fast/SKILL.md.jinja +0 -0
  181. {mapify_cli-3.15.0 → mapify_cli-3.15.2}/src/mapify_cli/templates_src/codex/skills/map-plan/SKILL.md.jinja +0 -0
  182. {mapify_cli-3.15.0 → mapify_cli-3.15.2}/src/mapify_cli/templates_src/hooks/README.md.jinja +0 -0
  183. {mapify_cli-3.15.0 → mapify_cli-3.15.2}/src/mapify_cli/templates_src/hooks/context-meter.py.jinja +0 -0
  184. {mapify_cli-3.15.0 → mapify_cli-3.15.2}/src/mapify_cli/templates_src/hooks/detect-clarification-triggers.py.jinja +0 -0
  185. {mapify_cli-3.15.0 → mapify_cli-3.15.2}/src/mapify_cli/templates_src/hooks/end-of-turn.sh.jinja +0 -0
  186. {mapify_cli-3.15.0 → mapify_cli-3.15.2}/src/mapify_cli/templates_src/hooks/map-memory-capture.py.jinja +0 -0
  187. {mapify_cli-3.15.0 → mapify_cli-3.15.2}/src/mapify_cli/templates_src/hooks/map-memory-endmark.py.jinja +0 -0
  188. {mapify_cli-3.15.0 → mapify_cli-3.15.2}/src/mapify_cli/templates_src/hooks/map-memory-finalize.py.jinja +0 -0
  189. {mapify_cli-3.15.0 → mapify_cli-3.15.2}/src/mapify_cli/templates_src/hooks/map-memory-recall.py.jinja +0 -0
  190. {mapify_cli-3.15.0 → mapify_cli-3.15.2}/src/mapify_cli/templates_src/hooks/map-token-meter.py.jinja +0 -0
  191. {mapify_cli-3.15.0 → mapify_cli-3.15.2}/src/mapify_cli/templates_src/hooks/pre-compact-save-transcript.py.jinja +0 -0
  192. {mapify_cli-3.15.0 → mapify_cli-3.15.2}/src/mapify_cli/templates_src/hooks/ralph-context-pruner.py.jinja +0 -0
  193. {mapify_cli-3.15.0 → mapify_cli-3.15.2}/src/mapify_cli/templates_src/hooks/ralph-iteration-logger.py.jinja +0 -0
  194. {mapify_cli-3.15.0 → mapify_cli-3.15.2}/src/mapify_cli/templates_src/hooks/safety-guardrails.py.jinja +0 -0
  195. {mapify_cli-3.15.0 → mapify_cli-3.15.2}/src/mapify_cli/templates_src/map/scripts/diagnostics.py.jinja +0 -0
  196. {mapify_cli-3.15.0 → mapify_cli-3.15.2}/src/mapify_cli/templates_src/map/scripts/map_step_runner.py.jinja +0 -0
  197. {mapify_cli-3.15.0 → mapify_cli-3.15.2}/src/mapify_cli/templates_src/map/scripts/map_utils.py.jinja +0 -0
  198. {mapify_cli-3.15.0 → mapify_cli-3.15.2}/src/mapify_cli/templates_src/map/scripts/sofa_client.py.jinja +0 -0
  199. {mapify_cli-3.15.0 → mapify_cli-3.15.2}/src/mapify_cli/templates_src/map/scripts/validate_spec_citations.py.jinja +0 -0
  200. {mapify_cli-3.15.0 → mapify_cli-3.15.2}/src/mapify_cli/templates_src/map/static-analysis/analyze.sh.jinja +0 -0
  201. {mapify_cli-3.15.0 → mapify_cli-3.15.2}/src/mapify_cli/templates_src/map/static-analysis/handlers/common.sh.jinja +0 -0
  202. {mapify_cli-3.15.0 → mapify_cli-3.15.2}/src/mapify_cli/templates_src/map/static-analysis/handlers/go.sh.jinja +0 -0
  203. {mapify_cli-3.15.0 → mapify_cli-3.15.2}/src/mapify_cli/templates_src/map/static-analysis/handlers/python.sh.jinja +0 -0
  204. {mapify_cli-3.15.0 → mapify_cli-3.15.2}/src/mapify_cli/templates_src/map/static-analysis/handlers/rust.sh.jinja +0 -0
  205. {mapify_cli-3.15.0 → mapify_cli-3.15.2}/src/mapify_cli/templates_src/map/static-analysis/handlers/typescript.sh.jinja +0 -0
  206. {mapify_cli-3.15.0 → mapify_cli-3.15.2}/src/mapify_cli/templates_src/ralph-loop-config.json.jinja +0 -0
  207. {mapify_cli-3.15.0 → mapify_cli-3.15.2}/src/mapify_cli/templates_src/references/bash-guidelines.md.jinja +0 -0
  208. {mapify_cli-3.15.0 → mapify_cli-3.15.2}/src/mapify_cli/templates_src/references/decomposition-examples.md.jinja +0 -0
  209. {mapify_cli-3.15.0 → mapify_cli-3.15.2}/src/mapify_cli/templates_src/references/escalation-matrix.md.jinja +0 -0
  210. {mapify_cli-3.15.0 → mapify_cli-3.15.2}/src/mapify_cli/templates_src/references/hook-patterns.md.jinja +0 -0
  211. {mapify_cli-3.15.0 → mapify_cli-3.15.2}/src/mapify_cli/templates_src/references/host-paths.md.jinja +0 -0
  212. {mapify_cli-3.15.0 → mapify_cli-3.15.2}/src/mapify_cli/templates_src/references/map-json-output-contracts.md.jinja +0 -0
  213. {mapify_cli-3.15.0 → mapify_cli-3.15.2}/src/mapify_cli/templates_src/references/map-output-examples.md.jinja +0 -0
  214. {mapify_cli-3.15.0 → mapify_cli-3.15.2}/src/mapify_cli/templates_src/references/map-xml-prompt-envelopes.md.jinja +0 -0
  215. {mapify_cli-3.15.0 → mapify_cli-3.15.2}/src/mapify_cli/templates_src/references/mcp-usage-examples.md.jinja +0 -0
  216. {mapify_cli-3.15.0 → mapify_cli-3.15.2}/src/mapify_cli/templates_src/references/workflow-state-schema.md.jinja +0 -0
  217. {mapify_cli-3.15.0 → mapify_cli-3.15.2}/src/mapify_cli/templates_src/rules/learned/README.md.jinja +0 -0
  218. {mapify_cli-3.15.0 → mapify_cli-3.15.2}/src/mapify_cli/templates_src/settings.json.jinja +0 -0
  219. {mapify_cli-3.15.0 → mapify_cli-3.15.2}/src/mapify_cli/templates_src/skills/README.md.jinja +0 -0
  220. {mapify_cli-3.15.0 → mapify_cli-3.15.2}/src/mapify_cli/templates_src/skills/map-check/SKILL.md.jinja +0 -0
  221. {mapify_cli-3.15.0 → mapify_cli-3.15.2}/src/mapify_cli/templates_src/skills/map-check/check-reference.md.jinja +0 -0
  222. {mapify_cli-3.15.0 → mapify_cli-3.15.2}/src/mapify_cli/templates_src/skills/map-debug/SKILL.md.jinja +0 -0
  223. {mapify_cli-3.15.0 → mapify_cli-3.15.2}/src/mapify_cli/templates_src/skills/map-efficient/efficient-reference.md.jinja +0 -0
  224. {mapify_cli-3.15.0 → mapify_cli-3.15.2}/src/mapify_cli/templates_src/skills/map-explain/SKILL.md.jinja +0 -0
  225. {mapify_cli-3.15.0 → mapify_cli-3.15.2}/src/mapify_cli/templates_src/skills/map-fast/SKILL.md.jinja +0 -0
  226. {mapify_cli-3.15.0 → mapify_cli-3.15.2}/src/mapify_cli/templates_src/skills/map-learn/SKILL.md.jinja +0 -0
  227. {mapify_cli-3.15.0 → mapify_cli-3.15.2}/src/mapify_cli/templates_src/skills/map-learn/templates/example-rules.md.jinja +0 -0
  228. {mapify_cli-3.15.0 → mapify_cli-3.15.2}/src/mapify_cli/templates_src/skills/map-learn/templates/rules-unconditional.md.jinja +0 -0
  229. {mapify_cli-3.15.0 → mapify_cli-3.15.2}/src/mapify_cli/templates_src/skills/map-learn/templates/rules-with-paths.md.jinja +0 -0
  230. {mapify_cli-3.15.0 → mapify_cli-3.15.2}/src/mapify_cli/templates_src/skills/map-memory-now/SKILL.md.jinja +0 -0
  231. {mapify_cli-3.15.0 → mapify_cli-3.15.2}/src/mapify_cli/templates_src/skills/map-plan/SKILL.md.jinja +0 -0
  232. {mapify_cli-3.15.0 → mapify_cli-3.15.2}/src/mapify_cli/templates_src/skills/map-plan/plan-reference.md.jinja +0 -0
  233. {mapify_cli-3.15.0 → mapify_cli-3.15.2}/src/mapify_cli/templates_src/skills/map-release/SKILL.md.jinja +0 -0
  234. {mapify_cli-3.15.0 → mapify_cli-3.15.2}/src/mapify_cli/templates_src/skills/map-resume/SKILL.md.jinja +0 -0
  235. {mapify_cli-3.15.0 → mapify_cli-3.15.2}/src/mapify_cli/templates_src/skills/map-resume/resume-reference.md.jinja +0 -0
  236. {mapify_cli-3.15.0 → mapify_cli-3.15.2}/src/mapify_cli/templates_src/skills/map-review/SKILL.md.jinja +0 -0
  237. {mapify_cli-3.15.0 → mapify_cli-3.15.2}/src/mapify_cli/templates_src/skills/map-review/review-reference.md.jinja +0 -0
  238. {mapify_cli-3.15.0 → mapify_cli-3.15.2}/src/mapify_cli/templates_src/skills/map-skill-eval/SKILL.md.jinja +0 -0
  239. {mapify_cli-3.15.0 → mapify_cli-3.15.2}/src/mapify_cli/templates_src/skills/map-so-search/SKILL.md.jinja +0 -0
  240. {mapify_cli-3.15.0 → mapify_cli-3.15.2}/src/mapify_cli/templates_src/skills/map-so-search/scripts/sofa_search.py.jinja +0 -0
  241. {mapify_cli-3.15.0 → mapify_cli-3.15.2}/src/mapify_cli/templates_src/skills/map-state/SKILL.md.jinja +0 -0
  242. {mapify_cli-3.15.0 → mapify_cli-3.15.2}/src/mapify_cli/templates_src/skills/map-state/scripts/check-complete.sh.jinja +0 -0
  243. {mapify_cli-3.15.0 → mapify_cli-3.15.2}/src/mapify_cli/templates_src/skills/map-state/scripts/get-plan-path.sh.jinja +0 -0
  244. {mapify_cli-3.15.0 → mapify_cli-3.15.2}/src/mapify_cli/templates_src/skills/map-state/scripts/init-session.sh.jinja +0 -0
  245. {mapify_cli-3.15.0 → mapify_cli-3.15.2}/src/mapify_cli/templates_src/skills/map-state/scripts/show-focus.sh.jinja +0 -0
  246. {mapify_cli-3.15.0 → mapify_cli-3.15.2}/src/mapify_cli/templates_src/skills/map-state/templates/findings.md.jinja +0 -0
  247. {mapify_cli-3.15.0 → mapify_cli-3.15.2}/src/mapify_cli/templates_src/skills/map-state/templates/iteration_history.md.jinja +0 -0
  248. {mapify_cli-3.15.0 → mapify_cli-3.15.2}/src/mapify_cli/templates_src/skills/map-state/templates/progress.md.jinja +0 -0
  249. {mapify_cli-3.15.0 → mapify_cli-3.15.2}/src/mapify_cli/templates_src/skills/map-state/templates/task_plan.md.jinja +0 -0
  250. {mapify_cli-3.15.0 → mapify_cli-3.15.2}/src/mapify_cli/templates_src/skills/map-tdd/SKILL.md.jinja +0 -0
  251. {mapify_cli-3.15.0 → mapify_cli-3.15.2}/src/mapify_cli/templates_src/skills/map-tokenreport/SKILL.md.jinja +0 -0
  252. {mapify_cli-3.15.0 → mapify_cli-3.15.2}/src/mapify_cli/templates_src/skills/skill-rules.json.jinja +0 -0
  253. {mapify_cli-3.15.0 → mapify_cli-3.15.2}/src/mapify_cli/templates_src/workflow-rules.json.jinja +0 -0
  254. {mapify_cli-3.15.0 → mapify_cli-3.15.2}/src/mapify_cli/token_budget.py +0 -0
  255. {mapify_cli-3.15.0 → mapify_cli-3.15.2}/src/mapify_cli/tools/__init__.py +0 -0
  256. {mapify_cli-3.15.0 → mapify_cli-3.15.2}/src/mapify_cli/tools/validate_dependencies.py +0 -0
  257. {mapify_cli-3.15.0 → mapify_cli-3.15.2}/src/mapify_cli/verification_recorder.py +0 -0
  258. {mapify_cli-3.15.0 → mapify_cli-3.15.2}/src/mapify_cli/workflow_finalizer.py +0 -0
  259. {mapify_cli-3.15.0 → mapify_cli-3.15.2}/src/mapify_cli/workflow_logger.py +0 -0
  260. {mapify_cli-3.15.0 → mapify_cli-3.15.2}/src/mapify_cli/workflow_state.py +0 -0
  261. {mapify_cli-3.15.0 → mapify_cli-3.15.2}/tests/__init__.py +0 -0
  262. {mapify_cli-3.15.0 → mapify_cli-3.15.2}/tests/conftest.py +0 -0
  263. {mapify_cli-3.15.0 → mapify_cli-3.15.2}/tests/fixtures/claude/escalation-matrix.md +0 -0
  264. {mapify_cli-3.15.0 → mapify_cli-3.15.2}/tests/fixtures/codex/config.toml +0 -0
  265. {mapify_cli-3.15.0 → mapify_cli-3.15.2}/tests/hooks/test_detect_clarification_triggers.py +0 -0
  266. {mapify_cli-3.15.0 → mapify_cli-3.15.2}/tests/hooks/test_end_of_turn.py +0 -0
  267. {mapify_cli-3.15.0 → mapify_cli-3.15.2}/tests/hooks/test_hook_inventory_smoke.py +0 -0
  268. {mapify_cli-3.15.0 → mapify_cli-3.15.2}/tests/hooks/test_safety_guardrails.py +0 -0
  269. {mapify_cli-3.15.0 → mapify_cli-3.15.2}/tests/integration/__init__.py +0 -0
  270. {mapify_cli-3.15.0 → mapify_cli-3.15.2}/tests/integration/fixtures/blueprint.json +0 -0
  271. {mapify_cli-3.15.0 → mapify_cli-3.15.2}/tests/integration/fixtures/code_review.md +0 -0
  272. {mapify_cli-3.15.0 → mapify_cli-3.15.2}/tests/integration/fixtures/plan_handoff.json +0 -0
  273. {mapify_cli-3.15.0 → mapify_cli-3.15.2}/tests/integration/fixtures/spec.md +0 -0
  274. {mapify_cli-3.15.0 → mapify_cli-3.15.2}/tests/integration/fixtures/step_state_initialized.json +0 -0
  275. {mapify_cli-3.15.0 → mapify_cli-3.15.2}/tests/integration/fixtures/step_state_plan_complete.json +0 -0
  276. {mapify_cli-3.15.0 → mapify_cli-3.15.2}/tests/integration/fixtures/task_plan.md +0 -0
  277. {mapify_cli-3.15.0 → mapify_cli-3.15.2}/tests/integration/fixtures/verification_summary.md +0 -0
  278. {mapify_cli-3.15.0 → mapify_cli-3.15.2}/tests/integration/test_e2e_artifact_contracts.py +0 -0
  279. {mapify_cli-3.15.0 → mapify_cli-3.15.2}/tests/integration/test_e2e_claude_sdk.py +0 -0
  280. {mapify_cli-3.15.0 → mapify_cli-3.15.2}/tests/skills_eval/fixtures/README.md +0 -0
  281. {mapify_cli-3.15.0 → mapify_cli-3.15.2}/tests/skills_eval/fixtures/map_check_optimize_eval_set.json +0 -0
  282. {mapify_cli-3.15.0 → mapify_cli-3.15.2}/tests/skills_eval/fixtures/map_debug_eval_set.json +0 -0
  283. {mapify_cli-3.15.0 → mapify_cli-3.15.2}/tests/skills_eval/fixtures/map_debug_optimize_eval_set.json +0 -0
  284. {mapify_cli-3.15.0 → mapify_cli-3.15.2}/tests/skills_eval/fixtures/map_efficient_optimize_eval_set.json +0 -0
  285. {mapify_cli-3.15.0 → mapify_cli-3.15.2}/tests/skills_eval/fixtures/map_explain_optimize_eval_set.json +0 -0
  286. {mapify_cli-3.15.0 → mapify_cli-3.15.2}/tests/skills_eval/fixtures/map_fast_optimize_eval_set.json +0 -0
  287. {mapify_cli-3.15.0 → mapify_cli-3.15.2}/tests/skills_eval/fixtures/map_learn_optimize_eval_set.json +0 -0
  288. {mapify_cli-3.15.0 → mapify_cli-3.15.2}/tests/skills_eval/fixtures/map_memory_now_optimize_eval_set.json +0 -0
  289. {mapify_cli-3.15.0 → mapify_cli-3.15.2}/tests/skills_eval/fixtures/map_plan_optimize_eval_set.json +0 -0
  290. {mapify_cli-3.15.0 → mapify_cli-3.15.2}/tests/skills_eval/fixtures/map_release_optimize_eval_set.json +0 -0
  291. {mapify_cli-3.15.0 → mapify_cli-3.15.2}/tests/skills_eval/fixtures/map_resume_optimize_eval_set.json +0 -0
  292. {mapify_cli-3.15.0 → mapify_cli-3.15.2}/tests/skills_eval/fixtures/map_review_optimize_eval_set.json +0 -0
  293. {mapify_cli-3.15.0 → mapify_cli-3.15.2}/tests/skills_eval/fixtures/map_skill_eval_optimize_eval_set.json +0 -0
  294. {mapify_cli-3.15.0 → mapify_cli-3.15.2}/tests/skills_eval/fixtures/map_state_optimize_eval_set.json +0 -0
  295. {mapify_cli-3.15.0 → mapify_cli-3.15.2}/tests/skills_eval/fixtures/map_task_optimize_eval_set.json +0 -0
  296. {mapify_cli-3.15.0 → mapify_cli-3.15.2}/tests/skills_eval/fixtures/map_tdd_optimize_eval_set.json +0 -0
  297. {mapify_cli-3.15.0 → mapify_cli-3.15.2}/tests/skills_eval/fixtures/map_tokenreport_optimize_eval_set.json +0 -0
  298. {mapify_cli-3.15.0 → mapify_cli-3.15.2}/tests/skills_eval/fixtures/whole_skill/map_task_blocker/manifest.json +0 -0
  299. {mapify_cli-3.15.0 → mapify_cli-3.15.2}/tests/skills_eval/fixtures/whole_skill/map_task_blocker/repo/.map/main/blueprint.json +0 -0
  300. {mapify_cli-3.15.0 → mapify_cli-3.15.2}/tests/skills_eval/fixtures/whole_skill/map_task_blocker/repo/.map/main/task_plan_main.md +0 -0
  301. {mapify_cli-3.15.0 → mapify_cli-3.15.2}/tests/skills_eval/fixtures/whole_skill/map_task_blocker/repo/src/__init__.py +0 -0
  302. {mapify_cli-3.15.0 → mapify_cli-3.15.2}/tests/skills_eval/fixtures/whole_skill/map_task_blocker/repo/src/utils.py +0 -0
  303. {mapify_cli-3.15.0 → mapify_cli-3.15.2}/tests/skills_eval/fixtures/whole_skill/map_task_blocker/repo/tests/test_compute.py +0 -0
  304. {mapify_cli-3.15.0 → mapify_cli-3.15.2}/tests/skills_eval/fixtures/whole_skill/map_task_calc/hidden/test_calc_full.py +0 -0
  305. {mapify_cli-3.15.0 → mapify_cli-3.15.2}/tests/skills_eval/fixtures/whole_skill/map_task_calc/manifest.json +0 -0
  306. {mapify_cli-3.15.0 → mapify_cli-3.15.2}/tests/skills_eval/fixtures/whole_skill/map_task_calc/repo/.map/main/blueprint.json +0 -0
  307. {mapify_cli-3.15.0 → mapify_cli-3.15.2}/tests/skills_eval/fixtures/whole_skill/map_task_calc/repo/.map/main/task_plan_main.md +0 -0
  308. {mapify_cli-3.15.0 → mapify_cli-3.15.2}/tests/skills_eval/fixtures/whole_skill/map_task_calc/repo/src/__init__.py +0 -0
  309. {mapify_cli-3.15.0 → mapify_cli-3.15.2}/tests/skills_eval/fixtures/whole_skill/map_task_calc/repo/src/calc.py +0 -0
  310. {mapify_cli-3.15.0 → mapify_cli-3.15.2}/tests/skills_eval/fixtures/whole_skill/map_task_calc/repo/tests/test_calc_basic.py +0 -0
  311. {mapify_cli-3.15.0 → mapify_cli-3.15.2}/tests/skills_eval/fixtures/whole_skill/map_task_calc_vague/hidden/test_calc_full.py +0 -0
  312. {mapify_cli-3.15.0 → mapify_cli-3.15.2}/tests/skills_eval/fixtures/whole_skill/map_task_calc_vague/manifest.json +0 -0
  313. {mapify_cli-3.15.0 → mapify_cli-3.15.2}/tests/skills_eval/fixtures/whole_skill/map_task_calc_vague/repo/.map/main/blueprint.json +0 -0
  314. {mapify_cli-3.15.0 → mapify_cli-3.15.2}/tests/skills_eval/fixtures/whole_skill/map_task_calc_vague/repo/.map/main/task_plan_main.md +0 -0
  315. {mapify_cli-3.15.0 → mapify_cli-3.15.2}/tests/skills_eval/fixtures/whole_skill/map_task_calc_vague/repo/src/__init__.py +0 -0
  316. {mapify_cli-3.15.0 → mapify_cli-3.15.2}/tests/skills_eval/fixtures/whole_skill/map_task_calc_vague/repo/src/calc.py +0 -0
  317. {mapify_cli-3.15.0 → mapify_cli-3.15.2}/tests/skills_eval/fixtures/whole_skill/map_task_calc_vague/repo/tests/test_calc_basic.py +0 -0
  318. {mapify_cli-3.15.0 → mapify_cli-3.15.2}/tests/skills_eval/fixtures/whole_skill/map_task_scope_pressure/manifest.json +0 -0
  319. {mapify_cli-3.15.0 → mapify_cli-3.15.2}/tests/skills_eval/fixtures/whole_skill/map_task_scope_pressure/repo/.map/main/blueprint.json +0 -0
  320. {mapify_cli-3.15.0 → mapify_cli-3.15.2}/tests/skills_eval/fixtures/whole_skill/map_task_scope_pressure/repo/.map/main/task_plan_main.md +0 -0
  321. {mapify_cli-3.15.0 → mapify_cli-3.15.2}/tests/skills_eval/fixtures/whole_skill/map_task_scope_pressure/repo/src/__init__.py +0 -0
  322. {mapify_cli-3.15.0 → mapify_cli-3.15.2}/tests/skills_eval/fixtures/whole_skill/map_task_scope_pressure/repo/src/config.py +0 -0
  323. {mapify_cli-3.15.0 → mapify_cli-3.15.2}/tests/skills_eval/fixtures/whole_skill/map_task_scope_pressure/repo/src/utils.py +0 -0
  324. {mapify_cli-3.15.0 → mapify_cli-3.15.2}/tests/skills_eval/fixtures/whole_skill/map_task_scope_pressure/repo/tests/test_price.py +0 -0
  325. {mapify_cli-3.15.0 → mapify_cli-3.15.2}/tests/skills_eval/fixtures/whole_skill/map_task_scope_trap/manifest.json +0 -0
  326. {mapify_cli-3.15.0 → mapify_cli-3.15.2}/tests/skills_eval/fixtures/whole_skill/map_task_scope_trap/repo/.map/main/blueprint.json +0 -0
  327. {mapify_cli-3.15.0 → mapify_cli-3.15.2}/tests/skills_eval/fixtures/whole_skill/map_task_scope_trap/repo/.map/main/task_plan_main.md +0 -0
  328. {mapify_cli-3.15.0 → mapify_cli-3.15.2}/tests/skills_eval/fixtures/whole_skill/map_task_scope_trap/repo/src/__init__.py +0 -0
  329. {mapify_cli-3.15.0 → mapify_cli-3.15.2}/tests/skills_eval/fixtures/whole_skill/map_task_scope_trap/repo/src/config.py +0 -0
  330. {mapify_cli-3.15.0 → mapify_cli-3.15.2}/tests/skills_eval/fixtures/whole_skill/map_task_scope_trap/repo/src/utils.py +0 -0
  331. {mapify_cli-3.15.0 → mapify_cli-3.15.2}/tests/skills_eval/fixtures/whole_skill/map_task_scope_trap/repo/tests/test_utils.py +0 -0
  332. {mapify_cli-3.15.0 → mapify_cli-3.15.2}/tests/skills_eval/fixtures/whole_skill/map_task_semver/manifest.json +0 -0
  333. {mapify_cli-3.15.0 → mapify_cli-3.15.2}/tests/skills_eval/fixtures/whole_skill/map_task_semver/repo/.map/main/blueprint.json +0 -0
  334. {mapify_cli-3.15.0 → mapify_cli-3.15.2}/tests/skills_eval/fixtures/whole_skill/map_task_semver/repo/.map/main/task_plan_main.md +0 -0
  335. {mapify_cli-3.15.0 → mapify_cli-3.15.2}/tests/skills_eval/fixtures/whole_skill/map_task_semver/repo/src/__init__.py +0 -0
  336. {mapify_cli-3.15.0 → mapify_cli-3.15.2}/tests/skills_eval/fixtures/whole_skill/map_task_semver/repo/src/semver.py +0 -0
  337. {mapify_cli-3.15.0 → mapify_cli-3.15.2}/tests/skills_eval/fixtures/whole_skill/map_task_semver/repo/tests/test_semver.py +0 -0
  338. {mapify_cli-3.15.0 → mapify_cli-3.15.2}/tests/skills_eval/fixtures/whole_skill/map_task_semver_vague/hidden/test_semver_full.py +0 -0
  339. {mapify_cli-3.15.0 → mapify_cli-3.15.2}/tests/skills_eval/fixtures/whole_skill/map_task_semver_vague/manifest.json +0 -0
  340. {mapify_cli-3.15.0 → mapify_cli-3.15.2}/tests/skills_eval/fixtures/whole_skill/map_task_semver_vague/repo/.map/main/blueprint.json +0 -0
  341. {mapify_cli-3.15.0 → mapify_cli-3.15.2}/tests/skills_eval/fixtures/whole_skill/map_task_semver_vague/repo/.map/main/task_plan_main.md +0 -0
  342. {mapify_cli-3.15.0 → mapify_cli-3.15.2}/tests/skills_eval/fixtures/whole_skill/map_task_semver_vague/repo/src/__init__.py +0 -0
  343. {mapify_cli-3.15.0 → mapify_cli-3.15.2}/tests/skills_eval/fixtures/whole_skill/map_task_semver_vague/repo/src/semver.py +0 -0
  344. {mapify_cli-3.15.0 → mapify_cli-3.15.2}/tests/skills_eval/fixtures/whole_skill/map_task_semver_vague/repo/tests/test_semver_basic.py +0 -0
  345. {mapify_cli-3.15.0 → mapify_cli-3.15.2}/tests/skills_eval/fixtures/whole_skill/map_task_semver_weakgate/hidden/test_semver_full.py +0 -0
  346. {mapify_cli-3.15.0 → mapify_cli-3.15.2}/tests/skills_eval/fixtures/whole_skill/map_task_semver_weakgate/manifest.json +0 -0
  347. {mapify_cli-3.15.0 → mapify_cli-3.15.2}/tests/skills_eval/fixtures/whole_skill/map_task_semver_weakgate/repo/.map/main/blueprint.json +0 -0
  348. {mapify_cli-3.15.0 → mapify_cli-3.15.2}/tests/skills_eval/fixtures/whole_skill/map_task_semver_weakgate/repo/.map/main/task_plan_main.md +0 -0
  349. {mapify_cli-3.15.0 → mapify_cli-3.15.2}/tests/skills_eval/fixtures/whole_skill/map_task_semver_weakgate/repo/src/__init__.py +0 -0
  350. {mapify_cli-3.15.0 → mapify_cli-3.15.2}/tests/skills_eval/fixtures/whole_skill/map_task_semver_weakgate/repo/src/semver.py +0 -0
  351. {mapify_cli-3.15.0 → mapify_cli-3.15.2}/tests/skills_eval/fixtures/whole_skill/map_task_semver_weakgate/repo/tests/test_semver_basic.py +0 -0
  352. {mapify_cli-3.15.0 → mapify_cli-3.15.2}/tests/skills_eval/whole_skill/spike_runner.py +0 -0
  353. {mapify_cli-3.15.0 → mapify_cli-3.15.2}/tests/test_agent_cli_correctness.py +0 -0
  354. {mapify_cli-3.15.0 → mapify_cli-3.15.2}/tests/test_agent_frontmatter.py +0 -0
  355. {mapify_cli-3.15.0 → mapify_cli-3.15.2}/tests/test_artifact_schemas.py +0 -0
  356. {mapify_cli-3.15.0 → mapify_cli-3.15.2}/tests/test_bump_version.py +0 -0
  357. {mapify_cli-3.15.0 → mapify_cli-3.15.2}/tests/test_decomposition.py +0 -0
  358. {mapify_cli-3.15.0 → mapify_cli-3.15.2}/tests/test_dependency_graph.py +0 -0
  359. {mapify_cli-3.15.0 → mapify_cli-3.15.2}/tests/test_diagnostics.py +0 -0
  360. {mapify_cli-3.15.0 → mapify_cli-3.15.2}/tests/test_digest_schema.py +0 -0
  361. {mapify_cli-3.15.0 → mapify_cli-3.15.2}/tests/test_file_copier.py +0 -0
  362. {mapify_cli-3.15.0 → mapify_cli-3.15.2}/tests/test_hook_patterns.py +0 -0
  363. {mapify_cli-3.15.0 → mapify_cli-3.15.2}/tests/test_init_import_graph.py +0 -0
  364. {mapify_cli-3.15.0 → mapify_cli-3.15.2}/tests/test_intent_detector.py +0 -0
  365. {mapify_cli-3.15.0 → mapify_cli-3.15.2}/tests/test_inv1_no_anthropic_optimize.py +0 -0
  366. {mapify_cli-3.15.0 → mapify_cli-3.15.2}/tests/test_jinja2_dep.py +0 -0
  367. {mapify_cli-3.15.0 → mapify_cli-3.15.2}/tests/test_locking.py +0 -0
  368. {mapify_cli-3.15.0 → mapify_cli-3.15.2}/tests/test_managed_file_copier.py +0 -0
  369. {mapify_cli-3.15.0 → mapify_cli-3.15.2}/tests/test_map_orchestrator.py +0 -0
  370. {mapify_cli-3.15.0 → mapify_cli-3.15.2}/tests/test_map_step_runner.py +0 -0
  371. {mapify_cli-3.15.0 → mapify_cli-3.15.2}/tests/test_map_token_meter.py +0 -0
  372. {mapify_cli-3.15.0 → mapify_cli-3.15.2}/tests/test_map_utils_sanitize.py +0 -0
  373. {mapify_cli-3.15.0 → mapify_cli-3.15.2}/tests/test_mapify_cli.py +0 -0
  374. {mapify_cli-3.15.0 → mapify_cli-3.15.2}/tests/test_memory_capture.py +0 -0
  375. {mapify_cli-3.15.0 → mapify_cli-3.15.2}/tests/test_memory_finalize.py +0 -0
  376. {mapify_cli-3.15.0 → mapify_cli-3.15.2}/tests/test_memory_integration.py +0 -0
  377. {mapify_cli-3.15.0 → mapify_cli-3.15.2}/tests/test_memory_recall.py +0 -0
  378. {mapify_cli-3.15.0 → mapify_cli-3.15.2}/tests/test_memory_review_fixes.py +0 -0
  379. {mapify_cli-3.15.0 → mapify_cli-3.15.2}/tests/test_post_compact_context.py +0 -0
  380. {mapify_cli-3.15.0 → mapify_cli-3.15.2}/tests/test_ralph_hooks.py +0 -0
  381. {mapify_cli-3.15.0 → mapify_cli-3.15.2}/tests/test_ralph_state.py +0 -0
  382. {mapify_cli-3.15.0 → mapify_cli-3.15.2}/tests/test_repo_insight.py +0 -0
  383. {mapify_cli-3.15.0 → mapify_cli-3.15.2}/tests/test_schemas.py +0 -0
  384. {mapify_cli-3.15.0 → mapify_cli-3.15.2}/tests/test_skill_ir.py +0 -0
  385. {mapify_cli-3.15.0 → mapify_cli-3.15.2}/tests/test_skills_consistency.py +0 -0
  386. {mapify_cli-3.15.0 → mapify_cli-3.15.2}/tests/test_skills_eval_aggregator.py +0 -0
  387. {mapify_cli-3.15.0 → mapify_cli-3.15.2}/tests/test_skills_eval_apply.py +0 -0
  388. {mapify_cli-3.15.0 → mapify_cli-3.15.2}/tests/test_skills_eval_cli_optimize.py +0 -0
  389. {mapify_cli-3.15.0 → mapify_cli-3.15.2}/tests/test_skills_eval_dispatcher_env.py +0 -0
  390. {mapify_cli-3.15.0 → mapify_cli-3.15.2}/tests/test_skills_eval_dispatcher_timeout.py +0 -0
  391. {mapify_cli-3.15.0 → mapify_cli-3.15.2}/tests/test_skills_eval_fixtures.py +0 -0
  392. {mapify_cli-3.15.0 → mapify_cli-3.15.2}/tests/test_skills_eval_optimizer.py +0 -0
  393. {mapify_cli-3.15.0 → mapify_cli-3.15.2}/tests/test_skills_eval_optimizer_isolation.py +0 -0
  394. {mapify_cli-3.15.0 → mapify_cli-3.15.2}/tests/test_skills_eval_proposer.py +0 -0
  395. {mapify_cli-3.15.0 → mapify_cli-3.15.2}/tests/test_skills_eval_runner.py +0 -0
  396. {mapify_cli-3.15.0 → mapify_cli-3.15.2}/tests/test_skills_eval_schema.py +0 -0
  397. {mapify_cli-3.15.0 → mapify_cli-3.15.2}/tests/test_skills_eval_viewer.py +0 -0
  398. {mapify_cli-3.15.0 → mapify_cli-3.15.2}/tests/test_sofa_client.py +0 -0
  399. {mapify_cli-3.15.0 → mapify_cli-3.15.2}/tests/test_sofa_search.py +0 -0
  400. {mapify_cli-3.15.0 → mapify_cli-3.15.2}/tests/test_template_render.py +0 -0
  401. {mapify_cli-3.15.0 → mapify_cli-3.15.2}/tests/test_token_budget.py +0 -0
  402. {mapify_cli-3.15.0 → mapify_cli-3.15.2}/tests/test_validate_dependencies.py +0 -0
  403. {mapify_cli-3.15.0 → mapify_cli-3.15.2}/tests/test_validate_spec_citations.py +0 -0
  404. {mapify_cli-3.15.0 → mapify_cli-3.15.2}/tests/test_verification_recorder.py +0 -0
  405. {mapify_cli-3.15.0 → mapify_cli-3.15.2}/tests/test_workflow_context_injector.py +0 -0
  406. {mapify_cli-3.15.0 → mapify_cli-3.15.2}/tests/test_workflow_finalizer.py +0 -0
  407. {mapify_cli-3.15.0 → mapify_cli-3.15.2}/tests/test_workflow_gate.py +0 -0
  408. {mapify_cli-3.15.0 → mapify_cli-3.15.2}/tests/test_workflow_logger.py +0 -0
  409. {mapify_cli-3.15.0 → mapify_cli-3.15.2}/tests/test_workflow_state.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: mapify-cli
3
- Version: 3.15.0
3
+ Version: 3.15.2
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.15.0"
3
+ version = "3.15.2"
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.15.0"
26
+ __version__ = "3.15.2"
27
27
 
28
28
  import os
29
29
  import subprocess
@@ -8,13 +8,18 @@ You are a research agent. Your job is to explore the codebase and gather actiona
8
8
  findings for downstream agents (decomposer, actor). You do NOT implement anything.
9
9
  You observe, summarize, and report.
10
10
 
11
- ## OUTPUT FORMAT (STRICT JSON)
11
+ ## OUTPUT FORMAT (STRICT RESEARCH EVIDENCE JSON)
12
12
 
13
- Write ONLY one JSON object to the findings file specified in your task. Do not
13
+ For `/map-efficient` subtask RESEARCH and any task that names `save_research`,
14
+ write ONLY one JSON object to the findings file specified in your task. Do not
14
15
  wrap it in markdown or prose. The downstream `validate_research` gate rejects
15
16
  malformed JSON, missing confidence, missing line ranges, unsafe paths, and more
16
17
  than 5 locations.
17
18
 
19
+ This is the same ResearchEvidence contract used by Claude `research-agent`.
20
+ Codex may use provider-specific commands to inspect files, but the saved
21
+ artifact has the same downstream semantics.
22
+
18
23
  ```
19
24
  {
20
25
  "confidence": 0.85,
@@ -42,6 +47,13 @@ than 5 locations.
42
47
 
43
48
  Status values: `OK`, `PARTIAL_RESULTS`, `NO_RESULTS`, `SEARCH_FAILED`.
44
49
 
50
+ Search method values: `glob_grep` or `grep_read`.
51
+
52
+ `search_stats` fields:
53
+ - `files_scanned`: total files examined during search.
54
+ - `total_matches_found`: all matches before truncating to the top locations.
55
+ - `results_truncated`: true if more results exist than returned.
56
+
45
57
  ## RULES
46
58
 
47
59
  1. Target: under 1500 tokens in the findings file.
@@ -52,21 +64,23 @@ Status values: `OK`, `PARTIAL_RESULTS`, `NO_RESULTS`, `SEARCH_FAILED`.
52
64
  6. Focus on WHAT EXISTS, not what should be built.
53
65
  7. If the task mentions external libraries, note their current usage patterns in the codebase.
54
66
  8. Write the findings file once at the end — do not stream partial results.
67
+ 9. Add `has_intent: true|false` for every location after checking the cited line range for `# Intent:` comments.
68
+ 10. If a planning task explicitly asks for a non-JSON discovery artifact, follow that task's requested format; do not reuse that markdown as a `save_research` artifact.
55
69
 
56
70
  ## SEARCH STRATEGY
57
71
 
58
- 1. Start broad: find relevant directories and entry points.
59
- - `find . -type f -name '*.py'` in likely directories
60
- - `rg -l 'keyword'` to locate mentions
61
- 2. Then narrow: read specific files that are most relevant.
62
- - Focus on function signatures, class definitions, imports
63
- - Note line numbers for everything you report
64
- 3. Look for:
65
- - Existing tests (to understand testing patterns)
66
- - Config files (pyproject.toml, setup.cfg, Makefile)
67
- - Similar implementations already in the codebase
68
- 4. Check git history for recent changes to relevant files:
69
- - `git log --oneline -n 5 -- path/to/file.py`
72
+ Use the provider-neutral Glob/Grep/Read search protocol even when Codex exposes
73
+ those operations through shell-backed commands:
74
+
75
+ 1. Glob-equivalent file discovery: find likely directories and file patterns.
76
+ 2. Grep-equivalent content search: locate exact symbols, imports, and keywords.
77
+ 3. Read-equivalent narrow inspection: open only the most relevant files and cite
78
+ function signatures, class definitions, imports, and inclusive line ranges.
79
+ 4. AAG-filter results against the requested Actor/Action/Goal when provided.
80
+ 5. Intent-inspect each returned range for `# Intent:` comments and set
81
+ `has_intent` accordingly.
82
+ 6. Use git history only when the task explicitly asks for recent-change or
83
+ regression context; never substitute history for file-line evidence.
70
84
 
71
85
  ## DO NOT
72
86
 
@@ -43,11 +43,12 @@ EDITING_PHASES = {"ACTOR", "APPLY", "TEST_WRITER"}
43
43
 
44
44
  # Docs-only file suffixes / path prefixes that are permitted during
45
45
  # RESEARCH (2.2). A docs-only subtask (runbook update, README tweak,
46
- # CHANGELOG line) doesn't benefit from research-agent investigation,
47
- # but the unconditional RESEARCH gate forced operators to save an
48
- # empty research stub before they could edit a .md file. Allowing
49
- # obvious docs surfaces during RESEARCH preserves the intent (block
50
- # code edits before research) without the friction.
46
+ # CHANGELOG line) usually doesn't need delegated research-agent
47
+ # investigation, but the unconditional RESEARCH edit gate forced
48
+ # operators to save an empty research stub before they could edit a .md
49
+ # file. Allowing obvious docs surfaces during RESEARCH preserves the
50
+ # intent (block code edits before research) without the friction; the
51
+ # state machine still requires a persisted artifact before Actor closes.
51
52
  DOCS_ONLY_EXTENSIONS = {".md", ".mdx", ".rst", ".txt", ".adoc"}
52
53
  DOCS_ONLY_PATH_PREFIXES = ("docs/", "doc/", "documentation/", "CHANGELOG", "RELEASING", "README")
53
54
 
@@ -120,12 +121,12 @@ def extract_target_file_paths(tool_call: dict) -> list[str]:
120
121
  def is_docs_only_path(file_path: str) -> bool:
121
122
  """Return True if path is documentation that may be edited during RESEARCH.
122
123
 
123
- RESEARCH (2.2) blocks Edit by default — research-agent must run
124
- before code mutation. Docs surfaces (README, runbook, CHANGELOG)
125
- don't benefit from research-agent, so the unconditional block
126
- forced operators to save an empty research stub. Allowing docs
127
- files during RESEARCH preserves the intent (no code edits before
128
- research) without the friction.
124
+ RESEARCH (2.2) blocks Edit by default — a persisted research
125
+ artifact must exist before code mutation. Docs surfaces (README,
126
+ runbook, CHANGELOG) usually don't need delegated research-agent, so
127
+ the unconditional edit block forced operators to save an empty
128
+ research stub. Allowing docs files during RESEARCH preserves the
129
+ intent (no code edits before research) without the friction.
129
130
  """
130
131
  if not isinstance(file_path, str) or not file_path.strip():
131
132
  return False
@@ -159,9 +159,13 @@ fi
159
159
 
160
160
  ### RESEARCH
161
161
 
162
- Use `researcher` when independent exploration is useful; otherwise research in
163
- the current session. Persist concise strict-JSON findings, validate the research
164
- contract, then close RESEARCH before Actor work:
162
+ Persist a RESEARCH artifact for every non-no-op subtask before Actor. Use
163
+ `researcher` when independent exploration is useful: cold-start repository
164
+ exploration, 3+ existing files, high risk, unclear locations, or failed direct
165
+ search. Otherwise research in the current session and save concise strict-JSON
166
+ findings. If the subtask truly needs no Actor/Monitor, use
167
+ `mark_subtask_complete --reason` instead of closing RESEARCH. Validate the
168
+ research contract, then close RESEARCH before Actor work:
165
169
 
166
170
  ```bash
167
171
  SUBTASK_ID=$(jq -r '.current_subtask_id' ".map/${BRANCH}/step_state.json")
@@ -24,7 +24,7 @@ REPRIME_LIMIT = 1200
24
24
  STEP_REQUIRED_ACTIONS = {
25
25
  "1.55": "Approve plan before execution state is initialized.",
26
26
  "1.56": "Choose execution mode before implementation.",
27
- "2.2": "Run research-agent before Actor if context gathering is required.",
27
+ "2.2": "Persist a RESEARCH artifact before Actor; delegate only when broad discovery is required.",
28
28
  "2.3": "Implement only the current subtask, then run Monitor.",
29
29
  "2.4": "Run Monitor and treat valid=false as a hard stop.",
30
30
  }
@@ -344,7 +344,7 @@ def required_action_for_step(step_id: str, step_phase: str) -> str | None:
344
344
  if step_id == "1.56":
345
345
  return "Choose mode (set_execution_mode step_by_step|batch)"
346
346
  if step_id == "2.2":
347
- return "Run research-agent (conditional: 3+ existing files or high risk)"
347
+ return "Persist RESEARCH artifact (research-agent only for broad/high-risk discovery)"
348
348
  if step_id == "2.3":
349
349
  return "Run Actor"
350
350
  if step_id == "2.4":
@@ -43,11 +43,12 @@ EDITING_PHASES = {"ACTOR", "APPLY", "TEST_WRITER"}
43
43
 
44
44
  # Docs-only file suffixes / path prefixes that are permitted during
45
45
  # RESEARCH (2.2). A docs-only subtask (runbook update, README tweak,
46
- # CHANGELOG line) doesn't benefit from research-agent investigation,
47
- # but the unconditional RESEARCH gate forced operators to save an
48
- # empty research stub before they could edit a .md file. Allowing
49
- # obvious docs surfaces during RESEARCH preserves the intent (block
50
- # code edits before research) without the friction.
46
+ # CHANGELOG line) usually doesn't need delegated research-agent
47
+ # investigation, but the unconditional RESEARCH edit gate forced
48
+ # operators to save an empty research stub before they could edit a .md
49
+ # file. Allowing obvious docs surfaces during RESEARCH preserves the
50
+ # intent (block code edits before research) without the friction; the
51
+ # state machine still requires a persisted artifact before Actor closes.
51
52
  DOCS_ONLY_EXTENSIONS = {".md", ".mdx", ".rst", ".txt", ".adoc"}
52
53
  DOCS_ONLY_PATH_PREFIXES = ("docs/", "doc/", "documentation/", "CHANGELOG", "RELEASING", "README")
53
54
 
@@ -120,12 +121,12 @@ def extract_target_file_paths(tool_call: dict) -> list[str]:
120
121
  def is_docs_only_path(file_path: str) -> bool:
121
122
  """Return True if path is documentation that may be edited during RESEARCH.
122
123
 
123
- RESEARCH (2.2) blocks Edit by default — research-agent must run
124
- before code mutation. Docs surfaces (README, runbook, CHANGELOG)
125
- don't benefit from research-agent, so the unconditional block
126
- forced operators to save an empty research stub. Allowing docs
127
- files during RESEARCH preserves the intent (no code edits before
128
- research) without the friction.
124
+ RESEARCH (2.2) blocks Edit by default — a persisted research
125
+ artifact must exist before code mutation. Docs surfaces (README,
126
+ runbook, CHANGELOG) usually don't need delegated research-agent, so
127
+ the unconditional edit block forced operators to save an empty
128
+ research stub. Allowing docs files during RESEARCH preserves the
129
+ intent (no code edits before research) without the friction.
129
130
  """
130
131
  if not isinstance(file_path, str) or not file_path.strip():
131
132
  return False
@@ -41,7 +41,7 @@ STEP PHASES (10 total, 8 standard + 2 TDD):
41
41
  1.55 REVIEW_PLAN - User review + explicit approval checkpoint
42
42
  1.56 CHOOSE_MODE - Auto-skipped (always batch mode)
43
43
  1.6 INIT_STATE - Create step_state.json (single source of truth)
44
- 2.2 RESEARCH - research-agent (mandatory for all subtasks)
44
+ 2.2 RESEARCH - persisted research artifact (mandatory; research-agent conditional)
45
45
  2.25 TEST_WRITER - TDD: write tests from spec (TDD mode only)
46
46
  2.26 TEST_FAIL_GATE - TDD: verify tests fail without impl (TDD mode only)
47
47
  2.3 ACTOR - Actor agent implementation
@@ -771,11 +771,13 @@ def get_step_instruction(step_id: str, state: StepState) -> str:
771
771
  "Single source of truth for workflow enforcement."
772
772
  ),
773
773
  "2.2": (
774
- "Call Task(subagent_type='research-agent') to research the subtask, "
775
- "then persist findings via "
774
+ "Persist RESEARCH findings for the subtask via "
776
775
  "`python3 .map/scripts/map_step_runner.py save_research <branch> "
777
- "<subtask_id>`. MANDATORY for all subtasks (validate_step 2.2 "
778
- "rejects when no research artifact exists). "
776
+ "<subtask_id>`. The artifact is MANDATORY for every non-no-op "
777
+ "subtask (validate_step 2.2 rejects when none exists); "
778
+ "Task(subagent_type='research-agent') is conditional for broad, "
779
+ "high-risk, or unclear discovery. If the target file/symbol is "
780
+ "already known, save direct current-session findings instead. "
779
781
  "Short-circuit hint: if this subtask is already done in a prior "
780
782
  "PR or is a pure no-op, skip the cycle with "
781
783
  "`python3 .map/scripts/map_orchestrator.py mark_subtask_complete "
@@ -1332,10 +1334,11 @@ def validate_step(
1332
1334
  ),
1333
1335
  "recommendation": normalized_rec,
1334
1336
  }
1335
- # RESEARCH (2.2) is documented MANDATORY for every subtask — enforce that
1336
- # save_research wrote a machine-checkable artifact before letting Actor
1337
- # proceed. Without this check, "MANDATORY" was prompt-text only and
1338
- # malformed markdown could be silently passed downstream.
1337
+ # RESEARCH (2.2) requires a persisted artifact for every non-no-op subtask.
1338
+ # The artifact can come from research-agent or direct current-session
1339
+ # findings; enforce the machine-checkable contract before Actor proceeds.
1340
+ # Without this check, "MANDATORY" was prompt-text only and malformed
1341
+ # markdown could be silently passed downstream.
1339
1342
  if step_id == "2.2" and state.current_subtask_id:
1340
1343
  try:
1341
1344
  from map_step_runner import validate_research # pyright: ignore[reportMissingImports]
@@ -1356,9 +1359,13 @@ def validate_step(
1356
1359
  "message": (
1357
1360
  f"RESEARCH artifact invalid for {state.current_subtask_id}: "
1358
1361
  f"{detail}. "
1362
+ "Use research-agent for broad/high-risk/unclear discovery, "
1363
+ "or save direct current-session findings when the target is known. "
1359
1364
  f"Run: python3 .map/scripts/map_step_runner.py save_research "
1360
- f"<branch> {state.current_subtask_id} (defaults kind=actor) "
1361
- "then validate_research before validate_step 2.2."
1365
+ f"<branch> {state.current_subtask_id} (defaults kind=actor), "
1366
+ "then validate_research before validate_step 2.2. If this "
1367
+ "subtask needs no Actor/Monitor, use mark_subtask_complete "
1368
+ "--reason instead."
1362
1369
  ),
1363
1370
  "research_report": research_report,
1364
1371
  }
@@ -53,14 +53,13 @@ Branch name is sanitized (e.g., `feature/foo` → `feature-foo`).
53
53
 
54
54
  ## Step IDs (map-efficient)
55
55
 
56
- Current step set (linear order; some are conditional):
56
+ Current step set (linear order; some phases use conditional subagents):
57
57
 
58
58
  1. `1.0` DECOMPOSE
59
59
  2. `1.5` INIT_PLAN
60
60
  3. `1.55` REVIEW_PLAN
61
61
  4. `1.56` CHOOSE_MODE
62
62
  5. `1.6` INIT_STATE
63
- 7. `2.2` RESEARCH (conditional)
63
+ 7. `2.2` RESEARCH (artifact required; research-agent conditional)
64
64
  9. `2.3` ACTOR
65
65
  10. `2.4` MONITOR
66
-
@@ -226,7 +226,7 @@ have ≥2 subtasks AND (b) the subtasks in that wave touch disjoint files
226
226
 
227
227
  ### No-op subtask short-circuit (before RESEARCH)
228
228
 
229
- Some subtasks are already-done historically (rename/refactor landed in a prior PR), or are docs-only and don't need the full research→actor→monitor cycle. Skip them up-front to save tokens:
229
+ Some subtasks are already-done historically (rename/refactor landed in a prior PR), or truly do not need Actor/Monitor because the requested work is already satisfied by repo state. Skip them up-front to save tokens:
230
230
 
231
231
  ```bash
232
232
  SUBTASK_ID=$(jq -r '.current_subtask_id' ".map/${BRANCH}/step_state.json")
@@ -236,14 +236,14 @@ python3 .map/scripts/map_orchestrator.py mark_subtask_complete "$SUBTASK_ID" \
236
236
 
237
237
  This records a synthetic subtask_result with status="no-op", marks the phase COMPLETE, and advances the cursor (or closes the workflow if it was the last). Always pass `--reason` so audits know why the work was skipped. If unsure, run RESEARCH first and decide based on its findings.
238
238
 
239
- ### Phase: RESEARCH (2.2) - Required
239
+ ### Phase: RESEARCH (2.2) - Required artifact; delegated agent conditional
240
240
 
241
- Call `research-agent` for the current subtask, then persist its concise strict-JSON findings via the canonical `save_research` API so Actor and Monitor consume them from the same path. Validate the machine-checkable research contract before closing the phase with the orchestrator.
241
+ Persist a RESEARCH artifact for every non-no-op subtask before Actor. `research-agent` is conditional: use it for cold-start repository exploration, 3+ existing files, high risk, unclear locations, or failed direct search. If the relevant file/symbol is already known, or the subtask is greenfield/new-file work, do narrow current-session research and save those concise strict-JSON findings via the canonical `save_research` API. Validate the machine-checkable research contract before closing the phase with the orchestrator.
242
242
 
243
243
  ```bash
244
244
  SUBTASK_ID=$(jq -r '.current_subtask_id' ".map/${BRANCH}/step_state.json")
245
245
  # RECOMMENDED: proactive refresh_blueprint_affected_files <branch>
246
- # <sid> [--dry-run] BEFORE research-agent (efficient-reference.md).
246
+ # <sid> [--dry-run] BEFORE delegated research (efficient-reference.md).
247
247
  printf '%s' "$RESEARCH_FINDINGS" | \
248
248
  python3 .map/scripts/map_step_runner.py save_research "$BRANCH" "$SUBTASK_ID"
249
249
  # (defaults kind=actor; pass a 4th arg like 'monitor' or 'decomposer' to partition)
@@ -256,7 +256,7 @@ Later phases read with:
256
256
  RESEARCH_FINDINGS=$(python3 .map/scripts/map_step_runner.py load_research "$BRANCH" "$SUBTASK_ID")
257
257
  ```
258
258
 
259
- The artifact lands under `.map/<branch>/research/<subtask_id>__<kind>.md` and must satisfy the research-agent JSON contract (`status`, `confidence`, `search_stats`, and at most 5 `relevant_locations` with safe relative paths and line ranges). Use `load_research` to fill the `{research_findings}` placeholder in Actor and Monitor prompts below.
259
+ The artifact lands under `.map/<branch>/research/<subtask_id>__<kind>.md` and must satisfy the research evidence JSON contract (`status`, `confidence`, `search_stats`, and at most 5 `relevant_locations` with safe relative paths and line ranges). Use `load_research` to fill the `{research_findings}` placeholder in Actor and Monitor prompts below.
260
260
 
261
261
  ### Phase: TEST_WRITER (2.25) - TDD Mode Only
262
262
 
@@ -122,7 +122,7 @@ PHASE=$(echo "$NEXT_STEP" | jq -r '.phase')
122
122
 
123
123
  Route to the appropriate executor based on `$PHASE`. All phases from `/map-efficient` work identically:
124
124
 
125
- - **RESEARCH (2.2)** — Required context gathering via research-agent.
125
+ - **RESEARCH (2.2)** — Required persisted research artifact; research-agent is conditional for broad/high-risk discovery.
126
126
  - **ACTOR (2.3)** — Implement the subtask
127
127
  - **MONITOR (2.4)** — Required validation before the subtask can complete.
128
128
 
@@ -8,13 +8,18 @@ You are a research agent. Your job is to explore the codebase and gather actiona
8
8
  findings for downstream agents (decomposer, actor). You do NOT implement anything.
9
9
  You observe, summarize, and report.
10
10
 
11
- ## OUTPUT FORMAT (STRICT JSON)
11
+ ## OUTPUT FORMAT (STRICT RESEARCH EVIDENCE JSON)
12
12
 
13
- Write ONLY one JSON object to the findings file specified in your task. Do not
13
+ For `/map-efficient` subtask RESEARCH and any task that names `save_research`,
14
+ write ONLY one JSON object to the findings file specified in your task. Do not
14
15
  wrap it in markdown or prose. The downstream `validate_research` gate rejects
15
16
  malformed JSON, missing confidence, missing line ranges, unsafe paths, and more
16
17
  than 5 locations.
17
18
 
19
+ This is the same ResearchEvidence contract used by Claude `research-agent`.
20
+ Codex may use provider-specific commands to inspect files, but the saved
21
+ artifact has the same downstream semantics.
22
+
18
23
  ```
19
24
  {
20
25
  "confidence": 0.85,
@@ -42,6 +47,13 @@ than 5 locations.
42
47
 
43
48
  Status values: `OK`, `PARTIAL_RESULTS`, `NO_RESULTS`, `SEARCH_FAILED`.
44
49
 
50
+ Search method values: `glob_grep` or `grep_read`.
51
+
52
+ `search_stats` fields:
53
+ - `files_scanned`: total files examined during search.
54
+ - `total_matches_found`: all matches before truncating to the top locations.
55
+ - `results_truncated`: true if more results exist than returned.
56
+
45
57
  ## RULES
46
58
 
47
59
  1. Target: under 1500 tokens in the findings file.
@@ -52,21 +64,23 @@ Status values: `OK`, `PARTIAL_RESULTS`, `NO_RESULTS`, `SEARCH_FAILED`.
52
64
  6. Focus on WHAT EXISTS, not what should be built.
53
65
  7. If the task mentions external libraries, note their current usage patterns in the codebase.
54
66
  8. Write the findings file once at the end — do not stream partial results.
67
+ 9. Add `has_intent: true|false` for every location after checking the cited line range for `# Intent:` comments.
68
+ 10. If a planning task explicitly asks for a non-JSON discovery artifact, follow that task's requested format; do not reuse that markdown as a `save_research` artifact.
55
69
 
56
70
  ## SEARCH STRATEGY
57
71
 
58
- 1. Start broad: find relevant directories and entry points.
59
- - `find . -type f -name '*.py'` in likely directories
60
- - `rg -l 'keyword'` to locate mentions
61
- 2. Then narrow: read specific files that are most relevant.
62
- - Focus on function signatures, class definitions, imports
63
- - Note line numbers for everything you report
64
- 3. Look for:
65
- - Existing tests (to understand testing patterns)
66
- - Config files (pyproject.toml, setup.cfg, Makefile)
67
- - Similar implementations already in the codebase
68
- 4. Check git history for recent changes to relevant files:
69
- - `git log --oneline -n 5 -- path/to/file.py`
72
+ Use the provider-neutral Glob/Grep/Read search protocol even when Codex exposes
73
+ those operations through shell-backed commands:
74
+
75
+ 1. Glob-equivalent file discovery: find likely directories and file patterns.
76
+ 2. Grep-equivalent content search: locate exact symbols, imports, and keywords.
77
+ 3. Read-equivalent narrow inspection: open only the most relevant files and cite
78
+ function signatures, class definitions, imports, and inclusive line ranges.
79
+ 4. AAG-filter results against the requested Actor/Action/Goal when provided.
80
+ 5. Intent-inspect each returned range for `# Intent:` comments and set
81
+ `has_intent` accordingly.
82
+ 6. Use git history only when the task explicitly asks for recent-change or
83
+ regression context; never substitute history for file-line evidence.
70
84
 
71
85
  ## DO NOT
72
86
 
@@ -43,11 +43,12 @@ EDITING_PHASES = {"ACTOR", "APPLY", "TEST_WRITER"}
43
43
 
44
44
  # Docs-only file suffixes / path prefixes that are permitted during
45
45
  # RESEARCH (2.2). A docs-only subtask (runbook update, README tweak,
46
- # CHANGELOG line) doesn't benefit from research-agent investigation,
47
- # but the unconditional RESEARCH gate forced operators to save an
48
- # empty research stub before they could edit a .md file. Allowing
49
- # obvious docs surfaces during RESEARCH preserves the intent (block
50
- # code edits before research) without the friction.
46
+ # CHANGELOG line) usually doesn't need delegated research-agent
47
+ # investigation, but the unconditional RESEARCH edit gate forced
48
+ # operators to save an empty research stub before they could edit a .md
49
+ # file. Allowing obvious docs surfaces during RESEARCH preserves the
50
+ # intent (block code edits before research) without the friction; the
51
+ # state machine still requires a persisted artifact before Actor closes.
51
52
  DOCS_ONLY_EXTENSIONS = {".md", ".mdx", ".rst", ".txt", ".adoc"}
52
53
  DOCS_ONLY_PATH_PREFIXES = ("docs/", "doc/", "documentation/", "CHANGELOG", "RELEASING", "README")
53
54
 
@@ -120,12 +121,12 @@ def extract_target_file_paths(tool_call: dict) -> list[str]:
120
121
  def is_docs_only_path(file_path: str) -> bool:
121
122
  """Return True if path is documentation that may be edited during RESEARCH.
122
123
 
123
- RESEARCH (2.2) blocks Edit by default — research-agent must run
124
- before code mutation. Docs surfaces (README, runbook, CHANGELOG)
125
- don't benefit from research-agent, so the unconditional block
126
- forced operators to save an empty research stub. Allowing docs
127
- files during RESEARCH preserves the intent (no code edits before
128
- research) without the friction.
124
+ RESEARCH (2.2) blocks Edit by default — a persisted research
125
+ artifact must exist before code mutation. Docs surfaces (README,
126
+ runbook, CHANGELOG) usually don't need delegated research-agent, so
127
+ the unconditional edit block forced operators to save an empty
128
+ research stub. Allowing docs files during RESEARCH preserves the
129
+ intent (no code edits before research) without the friction.
129
130
  """
130
131
  if not isinstance(file_path, str) or not file_path.strip():
131
132
  return False
@@ -159,9 +159,13 @@ fi
159
159
 
160
160
  ### RESEARCH
161
161
 
162
- Use `researcher` when independent exploration is useful; otherwise research in
163
- the current session. Persist concise strict-JSON findings, validate the research
164
- contract, then close RESEARCH before Actor work:
162
+ Persist a RESEARCH artifact for every non-no-op subtask before Actor. Use
163
+ `researcher` when independent exploration is useful: cold-start repository
164
+ exploration, 3+ existing files, high risk, unclear locations, or failed direct
165
+ search. Otherwise research in the current session and save concise strict-JSON
166
+ findings. If the subtask truly needs no Actor/Monitor, use
167
+ `mark_subtask_complete --reason` instead of closing RESEARCH. Validate the
168
+ research contract, then close RESEARCH before Actor work:
165
169
 
166
170
  ```bash
167
171
  SUBTASK_ID=$(jq -r '.current_subtask_id' ".map/${BRANCH}/step_state.json")
@@ -24,7 +24,7 @@ REPRIME_LIMIT = 1200
24
24
  STEP_REQUIRED_ACTIONS = {
25
25
  "1.55": "Approve plan before execution state is initialized.",
26
26
  "1.56": "Choose execution mode before implementation.",
27
- "2.2": "Run research-agent before Actor if context gathering is required.",
27
+ "2.2": "Persist a RESEARCH artifact before Actor; delegate only when broad discovery is required.",
28
28
  "2.3": "Implement only the current subtask, then run Monitor.",
29
29
  "2.4": "Run Monitor and treat valid=false as a hard stop.",
30
30
  }
@@ -344,7 +344,7 @@ def required_action_for_step(step_id: str, step_phase: str) -> str | None:
344
344
  if step_id == "1.56":
345
345
  return "Choose mode (set_execution_mode step_by_step|batch)"
346
346
  if step_id == "2.2":
347
- return "Run research-agent (conditional: 3+ existing files or high risk)"
347
+ return "Persist RESEARCH artifact (research-agent only for broad/high-risk discovery)"
348
348
  if step_id == "2.3":
349
349
  return "Run Actor"
350
350
  if step_id == "2.4":
@@ -43,11 +43,12 @@ EDITING_PHASES = {"ACTOR", "APPLY", "TEST_WRITER"}
43
43
 
44
44
  # Docs-only file suffixes / path prefixes that are permitted during
45
45
  # RESEARCH (2.2). A docs-only subtask (runbook update, README tweak,
46
- # CHANGELOG line) doesn't benefit from research-agent investigation,
47
- # but the unconditional RESEARCH gate forced operators to save an
48
- # empty research stub before they could edit a .md file. Allowing
49
- # obvious docs surfaces during RESEARCH preserves the intent (block
50
- # code edits before research) without the friction.
46
+ # CHANGELOG line) usually doesn't need delegated research-agent
47
+ # investigation, but the unconditional RESEARCH edit gate forced
48
+ # operators to save an empty research stub before they could edit a .md
49
+ # file. Allowing obvious docs surfaces during RESEARCH preserves the
50
+ # intent (block code edits before research) without the friction; the
51
+ # state machine still requires a persisted artifact before Actor closes.
51
52
  DOCS_ONLY_EXTENSIONS = {".md", ".mdx", ".rst", ".txt", ".adoc"}
52
53
  DOCS_ONLY_PATH_PREFIXES = ("docs/", "doc/", "documentation/", "CHANGELOG", "RELEASING", "README")
53
54
 
@@ -120,12 +121,12 @@ def extract_target_file_paths(tool_call: dict) -> list[str]:
120
121
  def is_docs_only_path(file_path: str) -> bool:
121
122
  """Return True if path is documentation that may be edited during RESEARCH.
122
123
 
123
- RESEARCH (2.2) blocks Edit by default — research-agent must run
124
- before code mutation. Docs surfaces (README, runbook, CHANGELOG)
125
- don't benefit from research-agent, so the unconditional block
126
- forced operators to save an empty research stub. Allowing docs
127
- files during RESEARCH preserves the intent (no code edits before
128
- research) without the friction.
124
+ RESEARCH (2.2) blocks Edit by default — a persisted research
125
+ artifact must exist before code mutation. Docs surfaces (README,
126
+ runbook, CHANGELOG) usually don't need delegated research-agent, so
127
+ the unconditional edit block forced operators to save an empty
128
+ research stub. Allowing docs files during RESEARCH preserves the
129
+ intent (no code edits before research) without the friction.
129
130
  """
130
131
  if not isinstance(file_path, str) or not file_path.strip():
131
132
  return False
@@ -41,7 +41,7 @@ STEP PHASES (10 total, 8 standard + 2 TDD):
41
41
  1.55 REVIEW_PLAN - User review + explicit approval checkpoint
42
42
  1.56 CHOOSE_MODE - Auto-skipped (always batch mode)
43
43
  1.6 INIT_STATE - Create step_state.json (single source of truth)
44
- 2.2 RESEARCH - research-agent (mandatory for all subtasks)
44
+ 2.2 RESEARCH - persisted research artifact (mandatory; research-agent conditional)
45
45
  2.25 TEST_WRITER - TDD: write tests from spec (TDD mode only)
46
46
  2.26 TEST_FAIL_GATE - TDD: verify tests fail without impl (TDD mode only)
47
47
  2.3 ACTOR - Actor agent implementation
@@ -771,11 +771,13 @@ def get_step_instruction(step_id: str, state: StepState) -> str:
771
771
  "Single source of truth for workflow enforcement."
772
772
  ),
773
773
  "2.2": (
774
- "Call Task(subagent_type='research-agent') to research the subtask, "
775
- "then persist findings via "
774
+ "Persist RESEARCH findings for the subtask via "
776
775
  "`python3 .map/scripts/map_step_runner.py save_research <branch> "
777
- "<subtask_id>`. MANDATORY for all subtasks (validate_step 2.2 "
778
- "rejects when no research artifact exists). "
776
+ "<subtask_id>`. The artifact is MANDATORY for every non-no-op "
777
+ "subtask (validate_step 2.2 rejects when none exists); "
778
+ "Task(subagent_type='research-agent') is conditional for broad, "
779
+ "high-risk, or unclear discovery. If the target file/symbol is "
780
+ "already known, save direct current-session findings instead. "
779
781
  "Short-circuit hint: if this subtask is already done in a prior "
780
782
  "PR or is a pure no-op, skip the cycle with "
781
783
  "`python3 .map/scripts/map_orchestrator.py mark_subtask_complete "
@@ -1332,10 +1334,11 @@ def validate_step(
1332
1334
  ),
1333
1335
  "recommendation": normalized_rec,
1334
1336
  }
1335
- # RESEARCH (2.2) is documented MANDATORY for every subtask — enforce that
1336
- # save_research wrote a machine-checkable artifact before letting Actor
1337
- # proceed. Without this check, "MANDATORY" was prompt-text only and
1338
- # malformed markdown could be silently passed downstream.
1337
+ # RESEARCH (2.2) requires a persisted artifact for every non-no-op subtask.
1338
+ # The artifact can come from research-agent or direct current-session
1339
+ # findings; enforce the machine-checkable contract before Actor proceeds.
1340
+ # Without this check, "MANDATORY" was prompt-text only and malformed
1341
+ # markdown could be silently passed downstream.
1339
1342
  if step_id == "2.2" and state.current_subtask_id:
1340
1343
  try:
1341
1344
  from map_step_runner import validate_research # pyright: ignore[reportMissingImports]
@@ -1356,9 +1359,13 @@ def validate_step(
1356
1359
  "message": (
1357
1360
  f"RESEARCH artifact invalid for {state.current_subtask_id}: "
1358
1361
  f"{detail}. "
1362
+ "Use research-agent for broad/high-risk/unclear discovery, "
1363
+ "or save direct current-session findings when the target is known. "
1359
1364
  f"Run: python3 .map/scripts/map_step_runner.py save_research "
1360
- f"<branch> {state.current_subtask_id} (defaults kind=actor) "
1361
- "then validate_research before validate_step 2.2."
1365
+ f"<branch> {state.current_subtask_id} (defaults kind=actor), "
1366
+ "then validate_research before validate_step 2.2. If this "
1367
+ "subtask needs no Actor/Monitor, use mark_subtask_complete "
1368
+ "--reason instead."
1362
1369
  ),
1363
1370
  "research_report": research_report,
1364
1371
  }
@@ -53,14 +53,13 @@ Branch name is sanitized (e.g., `feature/foo` → `feature-foo`).
53
53
 
54
54
  ## Step IDs (map-efficient)
55
55
 
56
- Current step set (linear order; some are conditional):
56
+ Current step set (linear order; some phases use conditional subagents):
57
57
 
58
58
  1. `1.0` DECOMPOSE
59
59
  2. `1.5` INIT_PLAN
60
60
  3. `1.55` REVIEW_PLAN
61
61
  4. `1.56` CHOOSE_MODE
62
62
  5. `1.6` INIT_STATE
63
- 7. `2.2` RESEARCH (conditional)
63
+ 7. `2.2` RESEARCH (artifact required; research-agent conditional)
64
64
  9. `2.3` ACTOR
65
65
  10. `2.4` MONITOR
66
-