mapify-cli 3.35.2__tar.gz → 3.36.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 (750) hide show
  1. {mapify_cli-3.35.2 → mapify_cli-3.36.0}/PKG-INFO +1 -1
  2. {mapify_cli-3.35.2 → mapify_cli-3.36.0}/pyproject.toml +1 -1
  3. {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/__init__.py +1 -1
  4. {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/delivery/file_copier.py +137 -16
  5. {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/templates/agents/monitor.md +8 -1
  6. {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/templates/agents/task-decomposer.md +1 -0
  7. {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/templates/codex/agents/decomposer.toml +1 -0
  8. {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/templates/codex/agents/monitor.toml +6 -0
  9. {mapify_cli-3.35.2/src/mapify_cli/templates → mapify_cli-3.36.0/src/mapify_cli/templates/codex}/hooks/post-compact-context.py +21 -0
  10. {mapify_cli-3.35.2/src/mapify_cli/templates → mapify_cli-3.36.0/src/mapify_cli/templates/codex}/hooks/workflow-context-injector.py +32 -4
  11. {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/templates/codex/skills/map-review/SKILL.md +12 -12
  12. {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/templates/codex/skills/map-review/review-reference.md +75 -5
  13. {mapify_cli-3.35.2/src/mapify_cli/templates/codex → mapify_cli-3.36.0/src/mapify_cli/templates}/hooks/post-compact-context.py +20 -1
  14. {mapify_cli-3.35.2/src/mapify_cli/templates/codex → mapify_cli-3.36.0/src/mapify_cli/templates}/hooks/workflow-context-injector.py +31 -5
  15. {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/templates/map/scripts/codex_review_runner.py +55 -47
  16. {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/templates/map/scripts/map_step_runner.py +1334 -94
  17. {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/templates/map/scripts/sofa_client.py +6 -6
  18. {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/templates/skills/map-efficient/efficient-reference.md +5 -1
  19. {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/templates/skills/map-review/SKILL.md +16 -16
  20. {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/templates/skills/map-review/adversarial-reference.md +2 -2
  21. {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/templates/skills/map-review/review-reference.md +75 -5
  22. {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/templates_src/agents/monitor.md.jinja +8 -1
  23. {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/templates_src/agents/task-decomposer.md.jinja +1 -0
  24. {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/templates_src/codex/agents/decomposer.toml.jinja +1 -0
  25. {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/templates_src/codex/agents/monitor.toml.jinja +6 -0
  26. {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/templates_src/hooks/post-compact-context.py.jinja +20 -0
  27. {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/templates_src/hooks/workflow-context-injector.py.jinja +31 -4
  28. {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/templates_src/map/scripts/codex_review_runner.py.jinja +54 -46
  29. {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/templates_src/map/scripts/map_step_runner.py.jinja +1334 -94
  30. {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/templates_src/map/scripts/sofa_client.py.jinja +6 -6
  31. {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/templates_src/skills/map-efficient/efficient-reference.md.jinja +5 -1
  32. {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/templates_src/skills/map-review/SKILL.md.jinja +16 -16
  33. {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/templates_src/skills/map-review/adversarial-reference.md.jinja +2 -2
  34. {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/templates_src/skills/map-review/review-reference.md.jinja +75 -5
  35. {mapify_cli-3.35.2 → mapify_cli-3.36.0}/tests/review_context_helpers.py +23 -7
  36. {mapify_cli-3.35.2 → mapify_cli-3.36.0}/tests/test_codex_review_host.py +95 -3
  37. {mapify_cli-3.35.2 → mapify_cli-3.36.0}/tests/test_post_compact_context.py +30 -0
  38. {mapify_cli-3.35.2 → mapify_cli-3.36.0}/tests/test_review_attribution_receipts.py +16 -6
  39. mapify_cli-3.36.0/tests/test_review_changed_scope.py +1437 -0
  40. {mapify_cli-3.35.2 → mapify_cli-3.36.0}/tests/test_review_check_timeouts.py +27 -0
  41. {mapify_cli-3.35.2 → mapify_cli-3.36.0}/tests/test_review_context_transport.py +14 -5
  42. {mapify_cli-3.35.2 → mapify_cli-3.36.0}/tests/test_review_explicit_base.py +2 -2
  43. {mapify_cli-3.35.2 → mapify_cli-3.36.0}/tests/test_review_explicit_base_stale_readers.py +2 -2
  44. mapify_cli-3.36.0/tests/test_review_mapify_managed.py +223 -0
  45. {mapify_cli-3.35.2 → mapify_cli-3.36.0}/tests/test_review_pending_collection.py +1 -1
  46. mapify_cli-3.36.0/tests/test_review_shard_docs.py +21 -0
  47. {mapify_cli-3.35.2 → mapify_cli-3.36.0}/tests/test_review_verdict_ledger.py +3 -2
  48. mapify_cli-3.36.0/tests/test_runtime_info_exclude.py +188 -0
  49. {mapify_cli-3.35.2 → mapify_cli-3.36.0}/tests/test_runtime_privacy_ignores.py +2 -1
  50. {mapify_cli-3.35.2 → mapify_cli-3.36.0}/tests/test_skills.py +3 -2
  51. {mapify_cli-3.35.2 → mapify_cli-3.36.0}/tests/test_sofa_client.py +2 -2
  52. mapify_cli-3.36.0/tests/test_unrun_verification_contract.py +27 -0
  53. {mapify_cli-3.35.2 → mapify_cli-3.36.0}/tests/test_wave_abort_preservation.py +135 -0
  54. {mapify_cli-3.35.2 → mapify_cli-3.36.0}/tests/test_wave_parallel_harness.py +3 -3
  55. {mapify_cli-3.35.2 → mapify_cli-3.36.0}/tests/test_workflow_context_injector.py +33 -0
  56. {mapify_cli-3.35.2 → mapify_cli-3.36.0}/tests/test_worktree_isolation.py +23 -2
  57. mapify_cli-3.35.2/tests/test_review_changed_scope.py +0 -251
  58. {mapify_cli-3.35.2 → mapify_cli-3.36.0}/.claude/hooks/README.md +0 -0
  59. {mapify_cli-3.35.2 → mapify_cli-3.36.0}/.claude/skills/README.md +0 -0
  60. {mapify_cli-3.35.2 → mapify_cli-3.36.0}/.gitignore +0 -0
  61. {mapify_cli-3.35.2 → mapify_cli-3.36.0}/LICENSE +0 -0
  62. {mapify_cli-3.35.2 → mapify_cli-3.36.0}/README.md +0 -0
  63. {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/__main__.py +0 -0
  64. {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/_locking.py +0 -0
  65. {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/_python_guard.py +0 -0
  66. {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/auto_update.py +0 -0
  67. {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/boundary_quality_report.py +0 -0
  68. {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/cli_ui.py +0 -0
  69. {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/code_map.py +0 -0
  70. {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/codex_exec.py +0 -0
  71. {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/config/__init__.py +0 -0
  72. {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/config/mcp.py +0 -0
  73. {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/config/project_config.py +0 -0
  74. {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/config/settings.py +0 -0
  75. {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/delivery/__init__.py +0 -0
  76. {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/delivery/agent_generator.py +0 -0
  77. {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/delivery/codex_copier.py +0 -0
  78. {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/delivery/domain_skill.py +0 -0
  79. {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/delivery/governance_report.py +0 -0
  80. {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/delivery/managed_file_copier.py +0 -0
  81. {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/delivery/providers.py +0 -0
  82. {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/delivery/template_renderer.py +0 -0
  83. {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/dependency_graph.py +0 -0
  84. {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/grace_eval/__init__.py +0 -0
  85. {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/grace_eval/schema.py +0 -0
  86. {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/grace_eval/sweep.py +0 -0
  87. {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/install_manifest.py +0 -0
  88. {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/intent_detector.py +0 -0
  89. {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/memory/__init__.py +0 -0
  90. {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/memory/capture.py +0 -0
  91. {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/memory/digest_schema.py +0 -0
  92. {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/memory/evidence.py +0 -0
  93. {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/memory/finalize.py +0 -0
  94. {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/memory/recall.py +0 -0
  95. {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/minimality_eval.py +0 -0
  96. {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/minimality_report.py +0 -0
  97. {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/parallelism_observability.py +0 -0
  98. {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/provider_registry.py +0 -0
  99. {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/python_runtime.py +0 -0
  100. {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/ralph_state.py +0 -0
  101. {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/repo_insight.py +0 -0
  102. {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/research_eval.py +0 -0
  103. {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/research_eval_compare.py +0 -0
  104. {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/schemas.py +0 -0
  105. {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/scope_classifier.py +0 -0
  106. {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/skill_ir.py +0 -0
  107. {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/skills_eval/__init__.py +0 -0
  108. {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/skills_eval/aggregator.py +0 -0
  109. {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/skills_eval/apply_patcher.py +0 -0
  110. {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/skills_eval/assertions.py +0 -0
  111. {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/skills_eval/description_optimizer.py +0 -0
  112. {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/skills_eval/dispatcher.py +0 -0
  113. {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/skills_eval/eval_schema.py +0 -0
  114. {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/skills_eval/proposer.py +0 -0
  115. {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/skills_eval/review_corpus.py +0 -0
  116. {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/skills_eval/review_pilot.py +0 -0
  117. {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/skills_eval/runner.py +0 -0
  118. {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/skills_eval/trajectory/__init__.py +0 -0
  119. {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/skills_eval/trajectory/bundle.py +0 -0
  120. {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/skills_eval/trajectory/dispatcher.py +0 -0
  121. {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/skills_eval/trajectory/eval_schema.py +0 -0
  122. {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/skills_eval/trajectory/gates.py +0 -0
  123. {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/skills_eval/trajectory/judge.py +0 -0
  124. {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/skills_eval/trajectory/repeated.py +0 -0
  125. {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/skills_eval/trajectory/report.py +0 -0
  126. {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/skills_eval/trajectory/runner.py +0 -0
  127. {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/skills_eval/trajectory/seeding.py +0 -0
  128. {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/skills_eval/viewer.py +0 -0
  129. {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/templates/.gitignore +0 -0
  130. {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/templates/CLAUDE.md +0 -0
  131. {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/templates/agents/actor.md +0 -0
  132. {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/templates/agents/documentation-reviewer.md +0 -0
  133. {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/templates/agents/evaluator.md +0 -0
  134. {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/templates/agents/final-verifier.md +0 -0
  135. {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/templates/agents/predictor.md +0 -0
  136. {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/templates/agents/reflector.md +0 -0
  137. {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/templates/agents/research-agent.md +0 -0
  138. {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/templates/agents/review-reader.md +0 -0
  139. {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/templates/codex/AGENTS.md +0 -0
  140. {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/templates/codex/agents/actor.toml +0 -0
  141. {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/templates/codex/agents/documentation-reviewer.toml +0 -0
  142. {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/templates/codex/agents/evaluator.toml +0 -0
  143. {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/templates/codex/agents/final-verifier.toml +0 -0
  144. {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/templates/codex/agents/predictor.toml +0 -0
  145. {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/templates/codex/agents/reflector.toml +0 -0
  146. {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/templates/codex/agents/researcher.toml +0 -0
  147. {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/templates/codex/agents/review-reader.toml +0 -0
  148. {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/templates/codex/config.toml +0 -0
  149. {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/templates/codex/hooks/context-meter.py +0 -0
  150. {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/templates/codex/hooks/detect-clarification-triggers.py +0 -0
  151. {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/templates/codex/hooks/end-of-turn.sh +0 -0
  152. {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/templates/codex/hooks/map-memory-capture.py +0 -0
  153. {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/templates/codex/hooks/map-memory-endmark.py +0 -0
  154. {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/templates/codex/hooks/map-memory-recall.py +0 -0
  155. {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/templates/codex/hooks/map-memory-session.py +0 -0
  156. {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/templates/codex/hooks/map-stop.py +0 -0
  157. {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/templates/codex/hooks/map-token-meter.py +0 -0
  158. {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/templates/codex/hooks/pre-compact-save-transcript.py +0 -0
  159. {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/templates/codex/hooks/ralph-context-pruner.py +0 -0
  160. {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/templates/codex/hooks/ralph-iteration-logger.py +0 -0
  161. {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/templates/codex/hooks/safety-guardrails.py +0 -0
  162. {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/templates/codex/hooks/scrub-internal-ids.py +0 -0
  163. {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/templates/codex/hooks/workflow-gate.py +0 -0
  164. {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/templates/codex/hooks.json +0 -0
  165. {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/templates/codex/references/map-json-output-contracts.md +0 -0
  166. {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/templates/codex/references/map-output-examples.md +0 -0
  167. {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/templates/codex/references/map-xml-prompt-envelopes.md +0 -0
  168. {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/templates/codex/skills/map-architecture/SKILL.md +0 -0
  169. {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/templates/codex/skills/map-auto/SKILL.md +0 -0
  170. {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/templates/codex/skills/map-auto/auto-reference.md +0 -0
  171. {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/templates/codex/skills/map-check/SKILL.md +0 -0
  172. {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/templates/codex/skills/map-check/check-reference.md +0 -0
  173. {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/templates/codex/skills/map-debug/SKILL.md +0 -0
  174. {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/templates/codex/skills/map-efficient/SKILL.md +0 -0
  175. {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/templates/codex/skills/map-efficient/efficient-reference.md +0 -0
  176. {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/templates/codex/skills/map-explain/SKILL.md +0 -0
  177. {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/templates/codex/skills/map-fast/SKILL.md +0 -0
  178. {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/templates/codex/skills/map-learn/SKILL.md +0 -0
  179. {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/templates/codex/skills/map-learn/templates/example-rules.md +0 -0
  180. {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/templates/codex/skills/map-learn/templates/rules-unconditional.md +0 -0
  181. {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/templates/codex/skills/map-learn/templates/rules-with-paths.md +0 -0
  182. {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/templates/codex/skills/map-memory-now/SKILL.md +0 -0
  183. {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/templates/codex/skills/map-plan/SKILL.md +0 -0
  184. {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/templates/codex/skills/map-plan/plan-reference.md +0 -0
  185. {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/templates/codex/skills/map-prd-review/SKILL.md +0 -0
  186. {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/templates/codex/skills/map-release/SKILL.md +0 -0
  187. {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/templates/codex/skills/map-release/release-reference.md +0 -0
  188. {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/templates/codex/skills/map-resume/SKILL.md +0 -0
  189. {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/templates/codex/skills/map-resume/resume-reference.md +0 -0
  190. {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/templates/codex/skills/map-review/adversarial-reference.md +0 -0
  191. {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/templates/codex/skills/map-skill-eval/SKILL.md +0 -0
  192. {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/templates/codex/skills/map-so-search/SKILL.md +0 -0
  193. {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/templates/codex/skills/map-so-search/scripts/sofa_search.py +0 -0
  194. {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/templates/codex/skills/map-state/SKILL.md +0 -0
  195. {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/templates/codex/skills/map-state/scripts/check-complete.sh +0 -0
  196. {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/templates/codex/skills/map-state/scripts/get-plan-path.sh +0 -0
  197. {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/templates/codex/skills/map-state/scripts/init-session.sh +0 -0
  198. {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/templates/codex/skills/map-state/scripts/show-focus.sh +0 -0
  199. {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/templates/codex/skills/map-state/templates/findings.md +0 -0
  200. {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/templates/codex/skills/map-state/templates/iteration_history.md +0 -0
  201. {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/templates/codex/skills/map-state/templates/progress.md +0 -0
  202. {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/templates/codex/skills/map-state/templates/task_plan.md +0 -0
  203. {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/templates/codex/skills/map-task/SKILL.md +0 -0
  204. {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/templates/codex/skills/map-tdd/SKILL.md +0 -0
  205. {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/templates/codex/skills/map-tokenreport/SKILL.md +0 -0
  206. {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/templates/codex/skills/map-understand/SKILL.md +0 -0
  207. {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/templates/codex/skills/map-upgrade/SKILL.md +0 -0
  208. {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/templates/codex/skills/map-wayfind/SKILL.md +0 -0
  209. {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/templates/codex/skills/map-wayfind/wayfind-reference.md +0 -0
  210. {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/templates/hooks/README.md +0 -0
  211. {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/templates/hooks/context-meter.py +0 -0
  212. {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/templates/hooks/detect-clarification-triggers.py +0 -0
  213. {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/templates/hooks/end-of-turn.sh +0 -0
  214. {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/templates/hooks/map-memory-capture.py +0 -0
  215. {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/templates/hooks/map-memory-endmark.py +0 -0
  216. {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/templates/hooks/map-memory-finalize.py +0 -0
  217. {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/templates/hooks/map-memory-recall.py +0 -0
  218. {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/templates/hooks/map-statusline.py +0 -0
  219. {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/templates/hooks/map-token-meter.py +0 -0
  220. {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/templates/hooks/pre-compact-save-transcript.py +0 -0
  221. {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/templates/hooks/ralph-context-pruner.py +0 -0
  222. {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/templates/hooks/ralph-iteration-logger.py +0 -0
  223. {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/templates/hooks/safety-guardrails.py +0 -0
  224. {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/templates/hooks/scrub-internal-ids.py +0 -0
  225. {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/templates/hooks/workflow-gate.py +0 -0
  226. {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/templates/map/scripts/classify_scope.py +0 -0
  227. {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/templates/map/scripts/codex_review_host.py +0 -0
  228. {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/templates/map/scripts/diagnostics.py +0 -0
  229. {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/templates/map/scripts/map_interruption.py +0 -0
  230. {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/templates/map/scripts/map_orchestrator.py +0 -0
  231. {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/templates/map/scripts/map_utils.py +0 -0
  232. {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/templates/map/scripts/review_check_supervisor.py +0 -0
  233. {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/templates/map/scripts/scrub_internal_ids.py +0 -0
  234. {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/templates/map/scripts/validate_spec_citations.py +0 -0
  235. {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/templates/map/scripts/wayfind_runner.py +0 -0
  236. {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/templates/map/static-analysis/analyze.sh +0 -0
  237. {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/templates/map/static-analysis/handlers/common.sh +0 -0
  238. {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/templates/map/static-analysis/handlers/go.sh +0 -0
  239. {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/templates/map/static-analysis/handlers/python.sh +0 -0
  240. {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/templates/map/static-analysis/handlers/rust.sh +0 -0
  241. {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/templates/map/static-analysis/handlers/typescript.sh +0 -0
  242. {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/templates/ralph-loop-config.json +0 -0
  243. {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/templates/references/bash-guidelines.md +0 -0
  244. {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/templates/references/decomposition-examples.md +0 -0
  245. {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/templates/references/escalation-matrix.md +0 -0
  246. {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/templates/references/hook-patterns.md +0 -0
  247. {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/templates/references/host-paths.md +0 -0
  248. {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/templates/references/map-json-output-contracts.md +0 -0
  249. {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/templates/references/map-output-examples.md +0 -0
  250. {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/templates/references/map-xml-prompt-envelopes.md +0 -0
  251. {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/templates/references/mcp-usage-examples.md +0 -0
  252. {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/templates/references/step-state-schema.md +0 -0
  253. {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/templates/references/workflow-state-schema.md +0 -0
  254. {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/templates/rules/learned/README.md +0 -0
  255. {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/templates/settings.json +0 -0
  256. {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/templates/skills/README.md +0 -0
  257. {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/templates/skills/map-architecture/SKILL.md +0 -0
  258. {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/templates/skills/map-auto/SKILL.md +0 -0
  259. {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/templates/skills/map-auto/auto-reference.md +0 -0
  260. {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/templates/skills/map-check/SKILL.md +0 -0
  261. {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/templates/skills/map-check/check-reference.md +0 -0
  262. {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/templates/skills/map-debug/SKILL.md +0 -0
  263. {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/templates/skills/map-efficient/SKILL.md +0 -0
  264. {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/templates/skills/map-explain/SKILL.md +0 -0
  265. {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/templates/skills/map-fast/SKILL.md +0 -0
  266. {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/templates/skills/map-learn/SKILL.md +0 -0
  267. {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/templates/skills/map-learn/templates/example-rules.md +0 -0
  268. {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/templates/skills/map-learn/templates/rules-unconditional.md +0 -0
  269. {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/templates/skills/map-learn/templates/rules-with-paths.md +0 -0
  270. {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/templates/skills/map-memory-now/SKILL.md +0 -0
  271. {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/templates/skills/map-plan/SKILL.md +0 -0
  272. {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/templates/skills/map-plan/plan-reference.md +0 -0
  273. {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/templates/skills/map-prd-review/SKILL.md +0 -0
  274. {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/templates/skills/map-release/SKILL.md +0 -0
  275. {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/templates/skills/map-release/release-reference.md +0 -0
  276. {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/templates/skills/map-resume/SKILL.md +0 -0
  277. {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/templates/skills/map-resume/resume-reference.md +0 -0
  278. {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/templates/skills/map-skill-eval/SKILL.md +0 -0
  279. {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/templates/skills/map-so-search/SKILL.md +0 -0
  280. {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/templates/skills/map-so-search/scripts/sofa_search.py +0 -0
  281. {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/templates/skills/map-state/SKILL.md +0 -0
  282. {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/templates/skills/map-state/scripts/check-complete.sh +0 -0
  283. {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/templates/skills/map-state/scripts/get-plan-path.sh +0 -0
  284. {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/templates/skills/map-state/scripts/init-session.sh +0 -0
  285. {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/templates/skills/map-state/scripts/show-focus.sh +0 -0
  286. {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/templates/skills/map-state/templates/findings.md +0 -0
  287. {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/templates/skills/map-state/templates/iteration_history.md +0 -0
  288. {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/templates/skills/map-state/templates/progress.md +0 -0
  289. {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/templates/skills/map-state/templates/task_plan.md +0 -0
  290. {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/templates/skills/map-task/SKILL.md +0 -0
  291. {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/templates/skills/map-tdd/SKILL.md +0 -0
  292. {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/templates/skills/map-tokenreport/SKILL.md +0 -0
  293. {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/templates/skills/map-understand/SKILL.md +0 -0
  294. {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/templates/skills/map-upgrade/SKILL.md +0 -0
  295. {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/templates/skills/map-wayfind/SKILL.md +0 -0
  296. {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/templates/skills/map-wayfind/wayfind-reference.md +0 -0
  297. {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/templates/skills/skill-rules.json +0 -0
  298. {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/templates/workflow-rules.json +0 -0
  299. {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/templates_src/.gitignore.jinja +0 -0
  300. {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/templates_src/CLAUDE.md.jinja +0 -0
  301. {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/templates_src/_partials/acceptance-runtime.py.jinja +0 -0
  302. {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/templates_src/_partials/apply-patch-paths.py.jinja +0 -0
  303. {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/templates_src/_partials/auto-update-preflight.md.jinja +0 -0
  304. {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/templates_src/_partials/codex-memory-hook-wrapper.py.jinja +0 -0
  305. {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/templates_src/_partials/manual-upgrade-flow.md.jinja +0 -0
  306. {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/templates_src/_partials/monitor-review-context.md.jinja +0 -0
  307. {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/templates_src/_partials/python-version-guard.py.jinja +0 -0
  308. {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/templates_src/_partials/serial-blocker-repair.md.jinja +0 -0
  309. {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/templates_src/_partials/stale-attribution-recovery.md.jinja +0 -0
  310. {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/templates_src/_partials/vacuous-test-check.md.jinja +0 -0
  311. {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/templates_src/agents/actor.md.jinja +0 -0
  312. {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/templates_src/agents/documentation-reviewer.md.jinja +0 -0
  313. {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/templates_src/agents/evaluator.md.jinja +0 -0
  314. {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/templates_src/agents/final-verifier.md.jinja +0 -0
  315. {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/templates_src/agents/predictor.md.jinja +0 -0
  316. {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/templates_src/agents/reflector.md.jinja +0 -0
  317. {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/templates_src/agents/research-agent.md.jinja +0 -0
  318. {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/templates_src/agents/review-reader.md.jinja +0 -0
  319. {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/templates_src/codex/AGENTS.md.jinja +0 -0
  320. {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/templates_src/codex/agents/actor.toml.jinja +0 -0
  321. {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/templates_src/codex/agents/documentation-reviewer.toml.jinja +0 -0
  322. {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/templates_src/codex/agents/evaluator.toml.jinja +0 -0
  323. {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/templates_src/codex/agents/final-verifier.toml.jinja +0 -0
  324. {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/templates_src/codex/agents/predictor.toml.jinja +0 -0
  325. {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/templates_src/codex/agents/reflector.toml.jinja +0 -0
  326. {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/templates_src/codex/agents/researcher.toml.jinja +0 -0
  327. {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/templates_src/codex/agents/review-reader.toml.jinja +0 -0
  328. {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/templates_src/codex/config.toml.jinja +0 -0
  329. {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/templates_src/codex/hooks/context-meter.py.jinja +0 -0
  330. {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/templates_src/codex/hooks/detect-clarification-triggers.py.jinja +0 -0
  331. {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/templates_src/codex/hooks/end-of-turn.sh.jinja +0 -0
  332. {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/templates_src/codex/hooks/map-memory-capture.py.jinja +0 -0
  333. {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/templates_src/codex/hooks/map-memory-endmark.py.jinja +0 -0
  334. {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/templates_src/codex/hooks/map-memory-recall.py.jinja +0 -0
  335. {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/templates_src/codex/hooks/map-memory-session.py.jinja +0 -0
  336. {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/templates_src/codex/hooks/map-stop.py.jinja +0 -0
  337. {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/templates_src/codex/hooks/map-token-meter.py.jinja +0 -0
  338. {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/templates_src/codex/hooks/post-compact-context.py.jinja +0 -0
  339. {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/templates_src/codex/hooks/pre-compact-save-transcript.py.jinja +0 -0
  340. {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/templates_src/codex/hooks/ralph-context-pruner.py.jinja +0 -0
  341. {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/templates_src/codex/hooks/ralph-iteration-logger.py.jinja +0 -0
  342. {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/templates_src/codex/hooks/safety-guardrails.py.jinja +0 -0
  343. {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/templates_src/codex/hooks/scrub-internal-ids.py.jinja +0 -0
  344. {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/templates_src/codex/hooks/workflow-context-injector.py.jinja +0 -0
  345. {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/templates_src/codex/hooks/workflow-gate.py.jinja +0 -0
  346. {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/templates_src/codex/hooks.json.jinja +0 -0
  347. {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/templates_src/codex/references/map-json-output-contracts.md.jinja +0 -0
  348. {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/templates_src/codex/references/map-output-examples.md.jinja +0 -0
  349. {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/templates_src/codex/references/map-xml-prompt-envelopes.md.jinja +0 -0
  350. {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/templates_src/codex/skills/map-architecture/SKILL.md.jinja +0 -0
  351. {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/templates_src/codex/skills/map-auto/SKILL.md.jinja +0 -0
  352. {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/templates_src/codex/skills/map-auto/auto-reference.md.jinja +0 -0
  353. {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/templates_src/codex/skills/map-check/SKILL.md.jinja +0 -0
  354. {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/templates_src/codex/skills/map-check/check-reference.md.jinja +0 -0
  355. {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/templates_src/codex/skills/map-debug/SKILL.md.jinja +0 -0
  356. {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/templates_src/codex/skills/map-efficient/SKILL.md.jinja +0 -0
  357. {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/templates_src/codex/skills/map-efficient/efficient-reference.md.jinja +0 -0
  358. {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/templates_src/codex/skills/map-explain/SKILL.md.jinja +0 -0
  359. {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/templates_src/codex/skills/map-fast/SKILL.md.jinja +0 -0
  360. {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/templates_src/codex/skills/map-learn/SKILL.md.jinja +0 -0
  361. {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/templates_src/codex/skills/map-learn/templates/example-rules.md.jinja +0 -0
  362. {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/templates_src/codex/skills/map-learn/templates/rules-unconditional.md.jinja +0 -0
  363. {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/templates_src/codex/skills/map-learn/templates/rules-with-paths.md.jinja +0 -0
  364. {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/templates_src/codex/skills/map-memory-now/SKILL.md.jinja +0 -0
  365. {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/templates_src/codex/skills/map-plan/SKILL.md.jinja +0 -0
  366. {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/templates_src/codex/skills/map-plan/plan-reference.md.jinja +0 -0
  367. {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/templates_src/codex/skills/map-prd-review/SKILL.md.jinja +0 -0
  368. {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/templates_src/codex/skills/map-release/SKILL.md.jinja +0 -0
  369. {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/templates_src/codex/skills/map-release/release-reference.md.jinja +0 -0
  370. {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/templates_src/codex/skills/map-resume/SKILL.md.jinja +0 -0
  371. {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/templates_src/codex/skills/map-resume/resume-reference.md.jinja +0 -0
  372. {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/templates_src/codex/skills/map-review/SKILL.md.jinja +0 -0
  373. {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/templates_src/codex/skills/map-review/adversarial-reference.md.jinja +0 -0
  374. {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/templates_src/codex/skills/map-review/review-reference.md.jinja +0 -0
  375. {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/templates_src/codex/skills/map-skill-eval/SKILL.md.jinja +0 -0
  376. {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/templates_src/codex/skills/map-so-search/SKILL.md.jinja +0 -0
  377. {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/templates_src/codex/skills/map-so-search/scripts/sofa_search.py.jinja +0 -0
  378. {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/templates_src/codex/skills/map-state/SKILL.md.jinja +0 -0
  379. {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/templates_src/codex/skills/map-state/scripts/check-complete.sh.jinja +0 -0
  380. {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/templates_src/codex/skills/map-state/scripts/get-plan-path.sh.jinja +0 -0
  381. {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/templates_src/codex/skills/map-state/scripts/init-session.sh.jinja +0 -0
  382. {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/templates_src/codex/skills/map-state/scripts/show-focus.sh.jinja +0 -0
  383. {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/templates_src/codex/skills/map-state/templates/findings.md.jinja +0 -0
  384. {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/templates_src/codex/skills/map-state/templates/iteration_history.md.jinja +0 -0
  385. {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/templates_src/codex/skills/map-state/templates/progress.md.jinja +0 -0
  386. {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/templates_src/codex/skills/map-state/templates/task_plan.md.jinja +0 -0
  387. {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/templates_src/codex/skills/map-task/SKILL.md.jinja +0 -0
  388. {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/templates_src/codex/skills/map-tdd/SKILL.md.jinja +0 -0
  389. {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/templates_src/codex/skills/map-tokenreport/SKILL.md.jinja +0 -0
  390. {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/templates_src/codex/skills/map-understand/SKILL.md.jinja +0 -0
  391. {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/templates_src/codex/skills/map-upgrade/SKILL.md.jinja +0 -0
  392. {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/templates_src/codex/skills/map-wayfind/SKILL.md.jinja +0 -0
  393. {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/templates_src/codex/skills/map-wayfind/wayfind-reference.md.jinja +0 -0
  394. {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/templates_src/hooks/README.md.jinja +0 -0
  395. {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/templates_src/hooks/context-meter.py.jinja +0 -0
  396. {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/templates_src/hooks/detect-clarification-triggers.py.jinja +0 -0
  397. {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/templates_src/hooks/end-of-turn.sh.jinja +0 -0
  398. {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/templates_src/hooks/map-memory-capture.py.jinja +0 -0
  399. {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/templates_src/hooks/map-memory-endmark.py.jinja +0 -0
  400. {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/templates_src/hooks/map-memory-finalize.py.jinja +0 -0
  401. {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/templates_src/hooks/map-memory-recall.py.jinja +0 -0
  402. {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/templates_src/hooks/map-statusline.py.jinja +0 -0
  403. {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/templates_src/hooks/map-token-meter.py.jinja +0 -0
  404. {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/templates_src/hooks/pre-compact-save-transcript.py.jinja +0 -0
  405. {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/templates_src/hooks/ralph-context-pruner.py.jinja +0 -0
  406. {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/templates_src/hooks/ralph-iteration-logger.py.jinja +0 -0
  407. {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/templates_src/hooks/safety-guardrails.py.jinja +0 -0
  408. {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/templates_src/hooks/scrub-internal-ids.py.jinja +0 -0
  409. {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/templates_src/hooks/workflow-gate.py.jinja +0 -0
  410. {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/templates_src/map/scripts/classify_scope.py.jinja +0 -0
  411. {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/templates_src/map/scripts/codex_review_host.py.jinja +0 -0
  412. {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/templates_src/map/scripts/diagnostics.py.jinja +0 -0
  413. {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/templates_src/map/scripts/map_interruption.py.jinja +0 -0
  414. {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/templates_src/map/scripts/map_orchestrator.py.jinja +0 -0
  415. {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/templates_src/map/scripts/map_utils.py.jinja +0 -0
  416. {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/templates_src/map/scripts/review_check_supervisor.py.jinja +0 -0
  417. {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/templates_src/map/scripts/scrub_internal_ids.py.jinja +0 -0
  418. {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/templates_src/map/scripts/validate_spec_citations.py.jinja +0 -0
  419. {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/templates_src/map/scripts/wayfind_runner.py.jinja +0 -0
  420. {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/templates_src/map/static-analysis/analyze.sh.jinja +0 -0
  421. {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/templates_src/map/static-analysis/handlers/common.sh.jinja +0 -0
  422. {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/templates_src/map/static-analysis/handlers/go.sh.jinja +0 -0
  423. {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/templates_src/map/static-analysis/handlers/python.sh.jinja +0 -0
  424. {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/templates_src/map/static-analysis/handlers/rust.sh.jinja +0 -0
  425. {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/templates_src/map/static-analysis/handlers/typescript.sh.jinja +0 -0
  426. {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/templates_src/ralph-loop-config.json.jinja +0 -0
  427. {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/templates_src/references/bash-guidelines.md.jinja +0 -0
  428. {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/templates_src/references/decomposition-examples.md.jinja +0 -0
  429. {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/templates_src/references/escalation-matrix.md.jinja +0 -0
  430. {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/templates_src/references/hook-patterns.md.jinja +0 -0
  431. {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/templates_src/references/host-paths.md.jinja +0 -0
  432. {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/templates_src/references/map-json-output-contracts.md.jinja +0 -0
  433. {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/templates_src/references/map-output-examples.md.jinja +0 -0
  434. {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/templates_src/references/map-xml-prompt-envelopes.md.jinja +0 -0
  435. {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/templates_src/references/mcp-usage-examples.md.jinja +0 -0
  436. {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/templates_src/references/step-state-schema.md.jinja +0 -0
  437. {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/templates_src/references/workflow-state-schema.md.jinja +0 -0
  438. {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/templates_src/rules/learned/README.md.jinja +0 -0
  439. {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/templates_src/settings.json.jinja +0 -0
  440. {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/templates_src/skills/README.md.jinja +0 -0
  441. {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/templates_src/skills/map-architecture/SKILL.md.jinja +0 -0
  442. {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/templates_src/skills/map-auto/SKILL.md.jinja +0 -0
  443. {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/templates_src/skills/map-auto/auto-reference.md.jinja +0 -0
  444. {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/templates_src/skills/map-check/SKILL.md.jinja +0 -0
  445. {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/templates_src/skills/map-check/check-reference.md.jinja +0 -0
  446. {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/templates_src/skills/map-debug/SKILL.md.jinja +0 -0
  447. {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/templates_src/skills/map-efficient/SKILL.md.jinja +0 -0
  448. {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/templates_src/skills/map-explain/SKILL.md.jinja +0 -0
  449. {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/templates_src/skills/map-fast/SKILL.md.jinja +0 -0
  450. {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/templates_src/skills/map-learn/SKILL.md.jinja +0 -0
  451. {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/templates_src/skills/map-learn/templates/example-rules.md.jinja +0 -0
  452. {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/templates_src/skills/map-learn/templates/rules-unconditional.md.jinja +0 -0
  453. {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/templates_src/skills/map-learn/templates/rules-with-paths.md.jinja +0 -0
  454. {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/templates_src/skills/map-memory-now/SKILL.md.jinja +0 -0
  455. {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/templates_src/skills/map-plan/SKILL.md.jinja +0 -0
  456. {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/templates_src/skills/map-plan/plan-reference.md.jinja +0 -0
  457. {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/templates_src/skills/map-prd-review/SKILL.md.jinja +0 -0
  458. {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/templates_src/skills/map-release/SKILL.md.jinja +0 -0
  459. {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/templates_src/skills/map-release/release-reference.md.jinja +0 -0
  460. {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/templates_src/skills/map-resume/SKILL.md.jinja +0 -0
  461. {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/templates_src/skills/map-resume/resume-reference.md.jinja +0 -0
  462. {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/templates_src/skills/map-skill-eval/SKILL.md.jinja +0 -0
  463. {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/templates_src/skills/map-so-search/SKILL.md.jinja +0 -0
  464. {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/templates_src/skills/map-so-search/scripts/sofa_search.py.jinja +0 -0
  465. {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/templates_src/skills/map-state/SKILL.md.jinja +0 -0
  466. {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/templates_src/skills/map-state/scripts/check-complete.sh.jinja +0 -0
  467. {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/templates_src/skills/map-state/scripts/get-plan-path.sh.jinja +0 -0
  468. {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/templates_src/skills/map-state/scripts/init-session.sh.jinja +0 -0
  469. {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/templates_src/skills/map-state/scripts/show-focus.sh.jinja +0 -0
  470. {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/templates_src/skills/map-state/templates/findings.md.jinja +0 -0
  471. {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/templates_src/skills/map-state/templates/iteration_history.md.jinja +0 -0
  472. {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/templates_src/skills/map-state/templates/progress.md.jinja +0 -0
  473. {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/templates_src/skills/map-state/templates/task_plan.md.jinja +0 -0
  474. {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/templates_src/skills/map-task/SKILL.md.jinja +0 -0
  475. {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/templates_src/skills/map-tdd/SKILL.md.jinja +0 -0
  476. {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/templates_src/skills/map-tokenreport/SKILL.md.jinja +0 -0
  477. {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/templates_src/skills/map-understand/SKILL.md.jinja +0 -0
  478. {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/templates_src/skills/map-upgrade/SKILL.md.jinja +0 -0
  479. {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/templates_src/skills/map-wayfind/SKILL.md.jinja +0 -0
  480. {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/templates_src/skills/map-wayfind/wayfind-reference.md.jinja +0 -0
  481. {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/templates_src/skills/skill-rules.json.jinja +0 -0
  482. {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/templates_src/workflow-rules.json.jinja +0 -0
  483. {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/token_budget.py +0 -0
  484. {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/tool_output_offload.py +0 -0
  485. {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/tools/__init__.py +0 -0
  486. {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/tools/validate_dependencies.py +0 -0
  487. {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/update_install.py +0 -0
  488. {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/update_state.py +0 -0
  489. {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/update_versions.py +0 -0
  490. {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/verification_recorder.py +0 -0
  491. {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/workflow_finalizer.py +0 -0
  492. {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/workflow_logger.py +0 -0
  493. {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/workflow_state.py +0 -0
  494. {mapify_cli-3.35.2 → mapify_cli-3.36.0}/tests/__init__.py +0 -0
  495. {mapify_cli-3.35.2 → mapify_cli-3.36.0}/tests/_fake_task_tool.py +0 -0
  496. {mapify_cli-3.35.2 → mapify_cli-3.36.0}/tests/conftest.py +0 -0
  497. {mapify_cli-3.35.2 → mapify_cli-3.36.0}/tests/fixtures/claude/escalation-matrix.md +0 -0
  498. {mapify_cli-3.35.2 → mapify_cli-3.36.0}/tests/fixtures/codex/config.toml +0 -0
  499. {mapify_cli-3.35.2 → mapify_cli-3.36.0}/tests/fixtures/wave_blueprints.py +0 -0
  500. {mapify_cli-3.35.2 → mapify_cli-3.36.0}/tests/hooks/test_detect_clarification_triggers.py +0 -0
  501. {mapify_cli-3.35.2 → mapify_cli-3.36.0}/tests/hooks/test_end_of_turn.py +0 -0
  502. {mapify_cli-3.35.2 → mapify_cli-3.36.0}/tests/hooks/test_hook_inventory_smoke.py +0 -0
  503. {mapify_cli-3.35.2 → mapify_cli-3.36.0}/tests/hooks/test_safety_guardrails.py +0 -0
  504. {mapify_cli-3.35.2 → mapify_cli-3.36.0}/tests/hooks/test_scrub_internal_ids_hook.py +0 -0
  505. {mapify_cli-3.35.2 → mapify_cli-3.36.0}/tests/integration/__init__.py +0 -0
  506. {mapify_cli-3.35.2 → mapify_cli-3.36.0}/tests/integration/fixtures/blueprint.json +0 -0
  507. {mapify_cli-3.35.2 → mapify_cli-3.36.0}/tests/integration/fixtures/code_review.md +0 -0
  508. {mapify_cli-3.35.2 → mapify_cli-3.36.0}/tests/integration/fixtures/plan_handoff.json +0 -0
  509. {mapify_cli-3.35.2 → mapify_cli-3.36.0}/tests/integration/fixtures/spec.md +0 -0
  510. {mapify_cli-3.35.2 → mapify_cli-3.36.0}/tests/integration/fixtures/step_state_initialized.json +0 -0
  511. {mapify_cli-3.35.2 → mapify_cli-3.36.0}/tests/integration/fixtures/step_state_plan_complete.json +0 -0
  512. {mapify_cli-3.35.2 → mapify_cli-3.36.0}/tests/integration/fixtures/task_plan.md +0 -0
  513. {mapify_cli-3.35.2 → mapify_cli-3.36.0}/tests/integration/fixtures/verification_summary.md +0 -0
  514. {mapify_cli-3.35.2 → mapify_cli-3.36.0}/tests/integration/test_e2e_artifact_contracts.py +0 -0
  515. {mapify_cli-3.35.2 → mapify_cli-3.36.0}/tests/integration/test_e2e_claude_sdk.py +0 -0
  516. {mapify_cli-3.35.2 → mapify_cli-3.36.0}/tests/review_pilot_git_cache.py +0 -0
  517. {mapify_cli-3.35.2 → mapify_cli-3.36.0}/tests/review_process_lifecycle.py +0 -0
  518. {mapify_cli-3.35.2 → mapify_cli-3.36.0}/tests/skills_eval/fixtures/README.md +0 -0
  519. {mapify_cli-3.35.2 → mapify_cli-3.36.0}/tests/skills_eval/fixtures/map_check_optimize_eval_set.json +0 -0
  520. {mapify_cli-3.35.2 → mapify_cli-3.36.0}/tests/skills_eval/fixtures/map_debug_eval_set.json +0 -0
  521. {mapify_cli-3.35.2 → mapify_cli-3.36.0}/tests/skills_eval/fixtures/map_debug_optimize_eval_set.json +0 -0
  522. {mapify_cli-3.35.2 → mapify_cli-3.36.0}/tests/skills_eval/fixtures/map_efficient_optimize_eval_set.json +0 -0
  523. {mapify_cli-3.35.2 → mapify_cli-3.36.0}/tests/skills_eval/fixtures/map_explain_optimize_eval_set.json +0 -0
  524. {mapify_cli-3.35.2 → mapify_cli-3.36.0}/tests/skills_eval/fixtures/map_fast_optimize_eval_set.json +0 -0
  525. {mapify_cli-3.35.2 → mapify_cli-3.36.0}/tests/skills_eval/fixtures/map_learn_optimize_eval_set.json +0 -0
  526. {mapify_cli-3.35.2 → mapify_cli-3.36.0}/tests/skills_eval/fixtures/map_memory_now_optimize_eval_set.json +0 -0
  527. {mapify_cli-3.35.2 → mapify_cli-3.36.0}/tests/skills_eval/fixtures/map_plan_optimize_eval_set.json +0 -0
  528. {mapify_cli-3.35.2 → mapify_cli-3.36.0}/tests/skills_eval/fixtures/map_release_optimize_eval_set.json +0 -0
  529. {mapify_cli-3.35.2 → mapify_cli-3.36.0}/tests/skills_eval/fixtures/map_resume_optimize_eval_set.json +0 -0
  530. {mapify_cli-3.35.2 → mapify_cli-3.36.0}/tests/skills_eval/fixtures/map_review_optimize_eval_set.json +0 -0
  531. {mapify_cli-3.35.2 → mapify_cli-3.36.0}/tests/skills_eval/fixtures/map_skill_eval_optimize_eval_set.json +0 -0
  532. {mapify_cli-3.35.2 → mapify_cli-3.36.0}/tests/skills_eval/fixtures/map_state_optimize_eval_set.json +0 -0
  533. {mapify_cli-3.35.2 → mapify_cli-3.36.0}/tests/skills_eval/fixtures/map_task_optimize_eval_set.json +0 -0
  534. {mapify_cli-3.35.2 → mapify_cli-3.36.0}/tests/skills_eval/fixtures/map_tdd_optimize_eval_set.json +0 -0
  535. {mapify_cli-3.35.2 → mapify_cli-3.36.0}/tests/skills_eval/fixtures/map_tokenreport_optimize_eval_set.json +0 -0
  536. {mapify_cli-3.35.2 → mapify_cli-3.36.0}/tests/skills_eval/fixtures/whole_skill/map_task_blocker/manifest.json +0 -0
  537. {mapify_cli-3.35.2 → mapify_cli-3.36.0}/tests/skills_eval/fixtures/whole_skill/map_task_blocker/repo/.map/main/blueprint.json +0 -0
  538. {mapify_cli-3.35.2 → mapify_cli-3.36.0}/tests/skills_eval/fixtures/whole_skill/map_task_blocker/repo/.map/main/task_plan_main.md +0 -0
  539. {mapify_cli-3.35.2 → mapify_cli-3.36.0}/tests/skills_eval/fixtures/whole_skill/map_task_blocker/repo/src/__init__.py +0 -0
  540. {mapify_cli-3.35.2 → mapify_cli-3.36.0}/tests/skills_eval/fixtures/whole_skill/map_task_blocker/repo/src/utils.py +0 -0
  541. {mapify_cli-3.35.2 → mapify_cli-3.36.0}/tests/skills_eval/fixtures/whole_skill/map_task_blocker/repo/tests/test_compute.py +0 -0
  542. {mapify_cli-3.35.2 → mapify_cli-3.36.0}/tests/skills_eval/fixtures/whole_skill/map_task_calc/hidden/test_calc_full.py +0 -0
  543. {mapify_cli-3.35.2 → mapify_cli-3.36.0}/tests/skills_eval/fixtures/whole_skill/map_task_calc/manifest.json +0 -0
  544. {mapify_cli-3.35.2 → mapify_cli-3.36.0}/tests/skills_eval/fixtures/whole_skill/map_task_calc/repo/.map/main/blueprint.json +0 -0
  545. {mapify_cli-3.35.2 → mapify_cli-3.36.0}/tests/skills_eval/fixtures/whole_skill/map_task_calc/repo/.map/main/task_plan_main.md +0 -0
  546. {mapify_cli-3.35.2 → mapify_cli-3.36.0}/tests/skills_eval/fixtures/whole_skill/map_task_calc/repo/src/__init__.py +0 -0
  547. {mapify_cli-3.35.2 → mapify_cli-3.36.0}/tests/skills_eval/fixtures/whole_skill/map_task_calc/repo/src/calc.py +0 -0
  548. {mapify_cli-3.35.2 → mapify_cli-3.36.0}/tests/skills_eval/fixtures/whole_skill/map_task_calc/repo/tests/test_calc_basic.py +0 -0
  549. {mapify_cli-3.35.2 → mapify_cli-3.36.0}/tests/skills_eval/fixtures/whole_skill/map_task_calc_vague/hidden/test_calc_full.py +0 -0
  550. {mapify_cli-3.35.2 → mapify_cli-3.36.0}/tests/skills_eval/fixtures/whole_skill/map_task_calc_vague/manifest.json +0 -0
  551. {mapify_cli-3.35.2 → mapify_cli-3.36.0}/tests/skills_eval/fixtures/whole_skill/map_task_calc_vague/repo/.map/main/blueprint.json +0 -0
  552. {mapify_cli-3.35.2 → mapify_cli-3.36.0}/tests/skills_eval/fixtures/whole_skill/map_task_calc_vague/repo/.map/main/task_plan_main.md +0 -0
  553. {mapify_cli-3.35.2 → mapify_cli-3.36.0}/tests/skills_eval/fixtures/whole_skill/map_task_calc_vague/repo/src/__init__.py +0 -0
  554. {mapify_cli-3.35.2 → mapify_cli-3.36.0}/tests/skills_eval/fixtures/whole_skill/map_task_calc_vague/repo/src/calc.py +0 -0
  555. {mapify_cli-3.35.2 → mapify_cli-3.36.0}/tests/skills_eval/fixtures/whole_skill/map_task_calc_vague/repo/tests/test_calc_basic.py +0 -0
  556. {mapify_cli-3.35.2 → mapify_cli-3.36.0}/tests/skills_eval/fixtures/whole_skill/map_task_false_success/hidden/test_kvparse_full.py +0 -0
  557. {mapify_cli-3.35.2 → mapify_cli-3.36.0}/tests/skills_eval/fixtures/whole_skill/map_task_false_success/manifest.json +0 -0
  558. {mapify_cli-3.35.2 → mapify_cli-3.36.0}/tests/skills_eval/fixtures/whole_skill/map_task_false_success/repo/.map/main/blueprint.json +0 -0
  559. {mapify_cli-3.35.2 → mapify_cli-3.36.0}/tests/skills_eval/fixtures/whole_skill/map_task_false_success/repo/.map/main/task_plan_main.md +0 -0
  560. {mapify_cli-3.35.2 → mapify_cli-3.36.0}/tests/skills_eval/fixtures/whole_skill/map_task_false_success/repo/src/__init__.py +0 -0
  561. {mapify_cli-3.35.2 → mapify_cli-3.36.0}/tests/skills_eval/fixtures/whole_skill/map_task_false_success/repo/src/kvparse.py +0 -0
  562. {mapify_cli-3.35.2 → mapify_cli-3.36.0}/tests/skills_eval/fixtures/whole_skill/map_task_false_success/repo/tests/test_kvparse_basic.py +0 -0
  563. {mapify_cli-3.35.2 → mapify_cli-3.36.0}/tests/skills_eval/fixtures/whole_skill/map_task_scope_pressure/manifest.json +0 -0
  564. {mapify_cli-3.35.2 → mapify_cli-3.36.0}/tests/skills_eval/fixtures/whole_skill/map_task_scope_pressure/repo/.map/main/blueprint.json +0 -0
  565. {mapify_cli-3.35.2 → mapify_cli-3.36.0}/tests/skills_eval/fixtures/whole_skill/map_task_scope_pressure/repo/.map/main/task_plan_main.md +0 -0
  566. {mapify_cli-3.35.2 → mapify_cli-3.36.0}/tests/skills_eval/fixtures/whole_skill/map_task_scope_pressure/repo/src/__init__.py +0 -0
  567. {mapify_cli-3.35.2 → mapify_cli-3.36.0}/tests/skills_eval/fixtures/whole_skill/map_task_scope_pressure/repo/src/config.py +0 -0
  568. {mapify_cli-3.35.2 → mapify_cli-3.36.0}/tests/skills_eval/fixtures/whole_skill/map_task_scope_pressure/repo/src/utils.py +0 -0
  569. {mapify_cli-3.35.2 → mapify_cli-3.36.0}/tests/skills_eval/fixtures/whole_skill/map_task_scope_pressure/repo/tests/test_price.py +0 -0
  570. {mapify_cli-3.35.2 → mapify_cli-3.36.0}/tests/skills_eval/fixtures/whole_skill/map_task_scope_trap/manifest.json +0 -0
  571. {mapify_cli-3.35.2 → mapify_cli-3.36.0}/tests/skills_eval/fixtures/whole_skill/map_task_scope_trap/repo/.map/main/blueprint.json +0 -0
  572. {mapify_cli-3.35.2 → mapify_cli-3.36.0}/tests/skills_eval/fixtures/whole_skill/map_task_scope_trap/repo/.map/main/task_plan_main.md +0 -0
  573. {mapify_cli-3.35.2 → mapify_cli-3.36.0}/tests/skills_eval/fixtures/whole_skill/map_task_scope_trap/repo/src/__init__.py +0 -0
  574. {mapify_cli-3.35.2 → mapify_cli-3.36.0}/tests/skills_eval/fixtures/whole_skill/map_task_scope_trap/repo/src/config.py +0 -0
  575. {mapify_cli-3.35.2 → mapify_cli-3.36.0}/tests/skills_eval/fixtures/whole_skill/map_task_scope_trap/repo/src/utils.py +0 -0
  576. {mapify_cli-3.35.2 → mapify_cli-3.36.0}/tests/skills_eval/fixtures/whole_skill/map_task_scope_trap/repo/tests/test_utils.py +0 -0
  577. {mapify_cli-3.35.2 → mapify_cli-3.36.0}/tests/skills_eval/fixtures/whole_skill/map_task_semver/manifest.json +0 -0
  578. {mapify_cli-3.35.2 → mapify_cli-3.36.0}/tests/skills_eval/fixtures/whole_skill/map_task_semver/repo/.map/main/blueprint.json +0 -0
  579. {mapify_cli-3.35.2 → mapify_cli-3.36.0}/tests/skills_eval/fixtures/whole_skill/map_task_semver/repo/.map/main/task_plan_main.md +0 -0
  580. {mapify_cli-3.35.2 → mapify_cli-3.36.0}/tests/skills_eval/fixtures/whole_skill/map_task_semver/repo/src/__init__.py +0 -0
  581. {mapify_cli-3.35.2 → mapify_cli-3.36.0}/tests/skills_eval/fixtures/whole_skill/map_task_semver/repo/src/semver.py +0 -0
  582. {mapify_cli-3.35.2 → mapify_cli-3.36.0}/tests/skills_eval/fixtures/whole_skill/map_task_semver/repo/tests/test_semver.py +0 -0
  583. {mapify_cli-3.35.2 → mapify_cli-3.36.0}/tests/skills_eval/fixtures/whole_skill/map_task_semver_vague/hidden/test_semver_full.py +0 -0
  584. {mapify_cli-3.35.2 → mapify_cli-3.36.0}/tests/skills_eval/fixtures/whole_skill/map_task_semver_vague/manifest.json +0 -0
  585. {mapify_cli-3.35.2 → mapify_cli-3.36.0}/tests/skills_eval/fixtures/whole_skill/map_task_semver_vague/repo/.map/main/blueprint.json +0 -0
  586. {mapify_cli-3.35.2 → mapify_cli-3.36.0}/tests/skills_eval/fixtures/whole_skill/map_task_semver_vague/repo/.map/main/task_plan_main.md +0 -0
  587. {mapify_cli-3.35.2 → mapify_cli-3.36.0}/tests/skills_eval/fixtures/whole_skill/map_task_semver_vague/repo/src/__init__.py +0 -0
  588. {mapify_cli-3.35.2 → mapify_cli-3.36.0}/tests/skills_eval/fixtures/whole_skill/map_task_semver_vague/repo/src/semver.py +0 -0
  589. {mapify_cli-3.35.2 → mapify_cli-3.36.0}/tests/skills_eval/fixtures/whole_skill/map_task_semver_vague/repo/tests/test_semver_basic.py +0 -0
  590. {mapify_cli-3.35.2 → mapify_cli-3.36.0}/tests/skills_eval/fixtures/whole_skill/map_task_semver_weakgate/hidden/test_semver_full.py +0 -0
  591. {mapify_cli-3.35.2 → mapify_cli-3.36.0}/tests/skills_eval/fixtures/whole_skill/map_task_semver_weakgate/manifest.json +0 -0
  592. {mapify_cli-3.35.2 → mapify_cli-3.36.0}/tests/skills_eval/fixtures/whole_skill/map_task_semver_weakgate/repo/.map/main/blueprint.json +0 -0
  593. {mapify_cli-3.35.2 → mapify_cli-3.36.0}/tests/skills_eval/fixtures/whole_skill/map_task_semver_weakgate/repo/.map/main/task_plan_main.md +0 -0
  594. {mapify_cli-3.35.2 → mapify_cli-3.36.0}/tests/skills_eval/fixtures/whole_skill/map_task_semver_weakgate/repo/src/__init__.py +0 -0
  595. {mapify_cli-3.35.2 → mapify_cli-3.36.0}/tests/skills_eval/fixtures/whole_skill/map_task_semver_weakgate/repo/src/semver.py +0 -0
  596. {mapify_cli-3.35.2 → mapify_cli-3.36.0}/tests/skills_eval/fixtures/whole_skill/map_task_semver_weakgate/repo/tests/test_semver_basic.py +0 -0
  597. {mapify_cli-3.35.2 → mapify_cli-3.36.0}/tests/skills_eval/review_corpus/corpus.json +0 -0
  598. {mapify_cli-3.35.2 → mapify_cli-3.36.0}/tests/skills_eval/review_corpus/evidence/adjudication.json +0 -0
  599. {mapify_cli-3.35.2 → mapify_cli-3.36.0}/tests/skills_eval/review_corpus/evidence/control-audit.json +0 -0
  600. {mapify_cli-3.35.2 → mapify_cli-3.36.0}/tests/skills_eval/review_corpus/evidence/manual-run.json +0 -0
  601. {mapify_cli-3.35.2 → mapify_cli-3.36.0}/tests/skills_eval/review_corpus/evidence/manual-run.log +0 -0
  602. {mapify_cli-3.35.2 → mapify_cli-3.36.0}/tests/skills_eval/review_corpus/evidence/manual_repro.py +0 -0
  603. {mapify_cli-3.35.2 → mapify_cli-3.36.0}/tests/skills_eval/review_pilot_error_max_budget.sanitized.json +0 -0
  604. {mapify_cli-3.35.2 → mapify_cli-3.36.0}/tests/skills_eval/whole_skill/spike_runner.py +0 -0
  605. {mapify_cli-3.35.2 → mapify_cli-3.36.0}/tests/test_acceptance_additive_revision.py +0 -0
  606. {mapify_cli-3.35.2 → mapify_cli-3.36.0}/tests/test_acceptance_additive_revision_review.py +0 -0
  607. {mapify_cli-3.35.2 → mapify_cli-3.36.0}/tests/test_acceptance_proofs.py +0 -0
  608. {mapify_cli-3.35.2 → mapify_cli-3.36.0}/tests/test_agent_cli_correctness.py +0 -0
  609. {mapify_cli-3.35.2 → mapify_cli-3.36.0}/tests/test_agent_dispatch_audit.py +0 -0
  610. {mapify_cli-3.35.2 → mapify_cli-3.36.0}/tests/test_agent_frontmatter.py +0 -0
  611. {mapify_cli-3.35.2 → mapify_cli-3.36.0}/tests/test_agent_memory.py +0 -0
  612. {mapify_cli-3.35.2 → mapify_cli-3.36.0}/tests/test_approval_hold.py +0 -0
  613. {mapify_cli-3.35.2 → mapify_cli-3.36.0}/tests/test_approved_baseline_gate_contract.py +0 -0
  614. {mapify_cli-3.35.2 → mapify_cli-3.36.0}/tests/test_artifact_schemas.py +0 -0
  615. {mapify_cli-3.35.2 → mapify_cli-3.36.0}/tests/test_auto_update.py +0 -0
  616. {mapify_cli-3.35.2 → mapify_cli-3.36.0}/tests/test_boundary_quality_report.py +0 -0
  617. {mapify_cli-3.35.2 → mapify_cli-3.36.0}/tests/test_bump_version.py +0 -0
  618. {mapify_cli-3.35.2 → mapify_cli-3.36.0}/tests/test_classify_scope_script.py +0 -0
  619. {mapify_cli-3.35.2 → mapify_cli-3.36.0}/tests/test_code_map.py +0 -0
  620. {mapify_cli-3.35.2 → mapify_cli-3.36.0}/tests/test_codex_map_review_live.py +0 -0
  621. {mapify_cli-3.35.2 → mapify_cli-3.36.0}/tests/test_codex_review_native.py +0 -0
  622. {mapify_cli-3.35.2 → mapify_cli-3.36.0}/tests/test_compaction_offload_integration.py +0 -0
  623. {mapify_cli-3.35.2 → mapify_cli-3.36.0}/tests/test_concurrent_dispatch_harness.py +0 -0
  624. {mapify_cli-3.35.2 → mapify_cli-3.36.0}/tests/test_context_usefulness.py +0 -0
  625. {mapify_cli-3.35.2 → mapify_cli-3.36.0}/tests/test_cross_ai_config.py +0 -0
  626. {mapify_cli-3.35.2 → mapify_cli-3.36.0}/tests/test_debug_reference_install.py +0 -0
  627. {mapify_cli-3.35.2 → mapify_cli-3.36.0}/tests/test_decomposition.py +0 -0
  628. {mapify_cli-3.35.2 → mapify_cli-3.36.0}/tests/test_dependency_graph.py +0 -0
  629. {mapify_cli-3.35.2 → mapify_cli-3.36.0}/tests/test_diagnostics.py +0 -0
  630. {mapify_cli-3.35.2 → mapify_cli-3.36.0}/tests/test_digest_schema.py +0 -0
  631. {mapify_cli-3.35.2 → mapify_cli-3.36.0}/tests/test_domain_skill.py +0 -0
  632. {mapify_cli-3.35.2 → mapify_cli-3.36.0}/tests/test_file_copier.py +0 -0
  633. {mapify_cli-3.35.2 → mapify_cli-3.36.0}/tests/test_governance_attack_fixtures.py +0 -0
  634. {mapify_cli-3.35.2 → mapify_cli-3.36.0}/tests/test_governance_report.py +0 -0
  635. {mapify_cli-3.35.2 → mapify_cli-3.36.0}/tests/test_grace_eval_schema.py +0 -0
  636. {mapify_cli-3.35.2 → mapify_cli-3.36.0}/tests/test_grace_eval_sweep.py +0 -0
  637. {mapify_cli-3.35.2 → mapify_cli-3.36.0}/tests/test_hook_patterns.py +0 -0
  638. {mapify_cli-3.35.2 → mapify_cli-3.36.0}/tests/test_init_import_graph.py +0 -0
  639. {mapify_cli-3.35.2 → mapify_cli-3.36.0}/tests/test_install_manifest.py +0 -0
  640. {mapify_cli-3.35.2 → mapify_cli-3.36.0}/tests/test_intent_detector.py +0 -0
  641. {mapify_cli-3.35.2 → mapify_cli-3.36.0}/tests/test_inv1_no_anthropic_optimize.py +0 -0
  642. {mapify_cli-3.35.2 → mapify_cli-3.36.0}/tests/test_jinja2_dep.py +0 -0
  643. {mapify_cli-3.35.2 → mapify_cli-3.36.0}/tests/test_locking.py +0 -0
  644. {mapify_cli-3.35.2 → mapify_cli-3.36.0}/tests/test_managed_file_copier.py +0 -0
  645. {mapify_cli-3.35.2 → mapify_cli-3.36.0}/tests/test_map_auto.py +0 -0
  646. {mapify_cli-3.35.2 → mapify_cli-3.36.0}/tests/test_map_interruption.py +0 -0
  647. {mapify_cli-3.35.2 → mapify_cli-3.36.0}/tests/test_map_orchestrator.py +0 -0
  648. {mapify_cli-3.35.2 → mapify_cli-3.36.0}/tests/test_map_step_runner.py +0 -0
  649. {mapify_cli-3.35.2 → mapify_cli-3.36.0}/tests/test_map_token_meter.py +0 -0
  650. {mapify_cli-3.35.2 → mapify_cli-3.36.0}/tests/test_map_utils_sanitize.py +0 -0
  651. {mapify_cli-3.35.2 → mapify_cli-3.36.0}/tests/test_mapify_cli.py +0 -0
  652. {mapify_cli-3.35.2 → mapify_cli-3.36.0}/tests/test_memory_capture.py +0 -0
  653. {mapify_cli-3.35.2 → mapify_cli-3.36.0}/tests/test_memory_events.py +0 -0
  654. {mapify_cli-3.35.2 → mapify_cli-3.36.0}/tests/test_memory_events_compat.py +0 -0
  655. {mapify_cli-3.35.2 → mapify_cli-3.36.0}/tests/test_memory_events_exit_status.py +0 -0
  656. {mapify_cli-3.35.2 → mapify_cli-3.36.0}/tests/test_memory_events_privacy.py +0 -0
  657. {mapify_cli-3.35.2 → mapify_cli-3.36.0}/tests/test_memory_events_review.py +0 -0
  658. {mapify_cli-3.35.2 → mapify_cli-3.36.0}/tests/test_memory_events_tools.py +0 -0
  659. {mapify_cli-3.35.2 → mapify_cli-3.36.0}/tests/test_memory_finalize.py +0 -0
  660. {mapify_cli-3.35.2 → mapify_cli-3.36.0}/tests/test_memory_integration.py +0 -0
  661. {mapify_cli-3.35.2 → mapify_cli-3.36.0}/tests/test_memory_recall.py +0 -0
  662. {mapify_cli-3.35.2 → mapify_cli-3.36.0}/tests/test_memory_review_fixes.py +0 -0
  663. {mapify_cli-3.35.2 → mapify_cli-3.36.0}/tests/test_minimality_eval.py +0 -0
  664. {mapify_cli-3.35.2 → mapify_cli-3.36.0}/tests/test_minimality_report.py +0 -0
  665. {mapify_cli-3.35.2 → mapify_cli-3.36.0}/tests/test_model_invocable_skills.py +0 -0
  666. {mapify_cli-3.35.2 → mapify_cli-3.36.0}/tests/test_monitor_worktree_context.py +0 -0
  667. {mapify_cli-3.35.2 → mapify_cli-3.36.0}/tests/test_mutation_path_normalization.py +0 -0
  668. {mapify_cli-3.35.2 → mapify_cli-3.36.0}/tests/test_orchestrator_acceptance.py +0 -0
  669. {mapify_cli-3.35.2 → mapify_cli-3.36.0}/tests/test_parallelism_observability.py +0 -0
  670. {mapify_cli-3.35.2 → mapify_cli-3.36.0}/tests/test_preset_commands.py +0 -0
  671. {mapify_cli-3.35.2 → mapify_cli-3.36.0}/tests/test_project_config.py +0 -0
  672. {mapify_cli-3.35.2 → mapify_cli-3.36.0}/tests/test_prompt_layering.py +0 -0
  673. {mapify_cli-3.35.2 → mapify_cli-3.36.0}/tests/test_prompt_profile_commands.py +0 -0
  674. {mapify_cli-3.35.2 → mapify_cli-3.36.0}/tests/test_python_version_requirement.py +0 -0
  675. {mapify_cli-3.35.2 → mapify_cli-3.36.0}/tests/test_pyyaml_dep.py +0 -0
  676. {mapify_cli-3.35.2 → mapify_cli-3.36.0}/tests/test_ralph_hooks.py +0 -0
  677. {mapify_cli-3.35.2 → mapify_cli-3.36.0}/tests/test_ralph_response_types.py +0 -0
  678. {mapify_cli-3.35.2 → mapify_cli-3.36.0}/tests/test_ralph_state.py +0 -0
  679. {mapify_cli-3.35.2 → mapify_cli-3.36.0}/tests/test_release_ci_gates.py +0 -0
  680. {mapify_cli-3.35.2 → mapify_cli-3.36.0}/tests/test_repair_attribution.py +0 -0
  681. {mapify_cli-3.35.2 → mapify_cli-3.36.0}/tests/test_repair_workflow_gate.py +0 -0
  682. {mapify_cli-3.35.2 → mapify_cli-3.36.0}/tests/test_repo_insight.py +0 -0
  683. {mapify_cli-3.35.2 → mapify_cli-3.36.0}/tests/test_research_eval.py +0 -0
  684. {mapify_cli-3.35.2 → mapify_cli-3.36.0}/tests/test_research_eval_compare.py +0 -0
  685. {mapify_cli-3.35.2 → mapify_cli-3.36.0}/tests/test_resequence_pending.py +0 -0
  686. {mapify_cli-3.35.2 → mapify_cli-3.36.0}/tests/test_review_branch_receipts.py +0 -0
  687. {mapify_cli-3.35.2 → mapify_cli-3.36.0}/tests/test_review_context_delivery.py +0 -0
  688. {mapify_cli-3.35.2 → mapify_cli-3.36.0}/tests/test_review_corpus.py +0 -0
  689. {mapify_cli-3.35.2 → mapify_cli-3.36.0}/tests/test_review_explicit_base_legacy_override.py +0 -0
  690. {mapify_cli-3.35.2 → mapify_cli-3.36.0}/tests/test_review_finding_validation.py +0 -0
  691. {mapify_cli-3.35.2 → mapify_cli-3.36.0}/tests/test_review_pilot.py +0 -0
  692. {mapify_cli-3.35.2 → mapify_cli-3.36.0}/tests/test_review_pilot_git_cache.py +0 -0
  693. {mapify_cli-3.35.2 → mapify_cli-3.36.0}/tests/test_review_process_lifecycle.py +0 -0
  694. {mapify_cli-3.35.2 → mapify_cli-3.36.0}/tests/test_review_reader_capabilities.py +0 -0
  695. {mapify_cli-3.35.2 → mapify_cli-3.36.0}/tests/test_review_receipt_edge_cases.py +0 -0
  696. {mapify_cli-3.35.2 → mapify_cli-3.36.0}/tests/test_review_security_gates.py +0 -0
  697. {mapify_cli-3.35.2 → mapify_cli-3.36.0}/tests/test_review_trusted_policy.py +0 -0
  698. {mapify_cli-3.35.2 → mapify_cli-3.36.0}/tests/test_role_coverage_receipts.py +0 -0
  699. {mapify_cli-3.35.2 → mapify_cli-3.36.0}/tests/test_schemas.py +0 -0
  700. {mapify_cli-3.35.2 → mapify_cli-3.36.0}/tests/test_scope_classifier.py +0 -0
  701. {mapify_cli-3.35.2 → mapify_cli-3.36.0}/tests/test_scrub_internal_ids.py +0 -0
  702. {mapify_cli-3.35.2 → mapify_cli-3.36.0}/tests/test_settings_deny_globs.py +0 -0
  703. {mapify_cli-3.35.2 → mapify_cli-3.36.0}/tests/test_shell_json_pipes.py +0 -0
  704. {mapify_cli-3.35.2 → mapify_cli-3.36.0}/tests/test_skill_ir.py +0 -0
  705. {mapify_cli-3.35.2 → mapify_cli-3.36.0}/tests/test_skills_consistency.py +0 -0
  706. {mapify_cli-3.35.2 → mapify_cli-3.36.0}/tests/test_skills_eval_aggregator.py +0 -0
  707. {mapify_cli-3.35.2 → mapify_cli-3.36.0}/tests/test_skills_eval_apply.py +0 -0
  708. {mapify_cli-3.35.2 → mapify_cli-3.36.0}/tests/test_skills_eval_cli_optimize.py +0 -0
  709. {mapify_cli-3.35.2 → mapify_cli-3.36.0}/tests/test_skills_eval_dispatcher_env.py +0 -0
  710. {mapify_cli-3.35.2 → mapify_cli-3.36.0}/tests/test_skills_eval_dispatcher_timeout.py +0 -0
  711. {mapify_cli-3.35.2 → mapify_cli-3.36.0}/tests/test_skills_eval_fixtures.py +0 -0
  712. {mapify_cli-3.35.2 → mapify_cli-3.36.0}/tests/test_skills_eval_optimizer.py +0 -0
  713. {mapify_cli-3.35.2 → mapify_cli-3.36.0}/tests/test_skills_eval_optimizer_isolation.py +0 -0
  714. {mapify_cli-3.35.2 → mapify_cli-3.36.0}/tests/test_skills_eval_proposer.py +0 -0
  715. {mapify_cli-3.35.2 → mapify_cli-3.36.0}/tests/test_skills_eval_runner.py +0 -0
  716. {mapify_cli-3.35.2 → mapify_cli-3.36.0}/tests/test_skills_eval_schema.py +0 -0
  717. {mapify_cli-3.35.2 → mapify_cli-3.36.0}/tests/test_skills_eval_trajectory_bundle.py +0 -0
  718. {mapify_cli-3.35.2 → mapify_cli-3.36.0}/tests/test_skills_eval_trajectory_cli.py +0 -0
  719. {mapify_cli-3.35.2 → mapify_cli-3.36.0}/tests/test_skills_eval_trajectory_gates.py +0 -0
  720. {mapify_cli-3.35.2 → mapify_cli-3.36.0}/tests/test_skills_eval_trajectory_judge.py +0 -0
  721. {mapify_cli-3.35.2 → mapify_cli-3.36.0}/tests/test_skills_eval_trajectory_repeated.py +0 -0
  722. {mapify_cli-3.35.2 → mapify_cli-3.36.0}/tests/test_skills_eval_trajectory_report.py +0 -0
  723. {mapify_cli-3.35.2 → mapify_cli-3.36.0}/tests/test_skills_eval_trajectory_runner.py +0 -0
  724. {mapify_cli-3.35.2 → mapify_cli-3.36.0}/tests/test_skills_eval_trajectory_schema.py +0 -0
  725. {mapify_cli-3.35.2 → mapify_cli-3.36.0}/tests/test_skills_eval_viewer.py +0 -0
  726. {mapify_cli-3.35.2 → mapify_cli-3.36.0}/tests/test_slice5b_leak_guards.py +0 -0
  727. {mapify_cli-3.35.2 → mapify_cli-3.36.0}/tests/test_sofa_search.py +0 -0
  728. {mapify_cli-3.35.2 → mapify_cli-3.36.0}/tests/test_static_analysis_bash.py +0 -0
  729. {mapify_cli-3.35.2 → mapify_cli-3.36.0}/tests/test_statusline.py +0 -0
  730. {mapify_cli-3.35.2 → mapify_cli-3.36.0}/tests/test_template_render.py +0 -0
  731. {mapify_cli-3.35.2 → mapify_cli-3.36.0}/tests/test_token_budget.py +0 -0
  732. {mapify_cli-3.35.2 → mapify_cli-3.36.0}/tests/test_tool_output_offload.py +0 -0
  733. {mapify_cli-3.35.2 → mapify_cli-3.36.0}/tests/test_unborn_branch_scope.py +0 -0
  734. {mapify_cli-3.35.2 → mapify_cli-3.36.0}/tests/test_update_install.py +0 -0
  735. {mapify_cli-3.35.2 → mapify_cli-3.36.0}/tests/test_update_state.py +0 -0
  736. {mapify_cli-3.35.2 → mapify_cli-3.36.0}/tests/test_update_versions.py +0 -0
  737. {mapify_cli-3.35.2 → mapify_cli-3.36.0}/tests/test_vacuous_test_check.py +0 -0
  738. {mapify_cli-3.35.2 → mapify_cli-3.36.0}/tests/test_validate_dependencies.py +0 -0
  739. {mapify_cli-3.35.2 → mapify_cli-3.36.0}/tests/test_validate_spec_citations.py +0 -0
  740. {mapify_cli-3.35.2 → mapify_cli-3.36.0}/tests/test_verification_recorder.py +0 -0
  741. {mapify_cli-3.35.2 → mapify_cli-3.36.0}/tests/test_wave_eval_harness.py +0 -0
  742. {mapify_cli-3.35.2 → mapify_cli-3.36.0}/tests/test_wave_fixtures.py +0 -0
  743. {mapify_cli-3.35.2 → mapify_cli-3.36.0}/tests/test_wayfind_install.py +0 -0
  744. {mapify_cli-3.35.2 → mapify_cli-3.36.0}/tests/test_wayfind_research.py +0 -0
  745. {mapify_cli-3.35.2 → mapify_cli-3.36.0}/tests/test_wayfind_runner.py +0 -0
  746. {mapify_cli-3.35.2 → mapify_cli-3.36.0}/tests/test_workflow_finalizer.py +0 -0
  747. {mapify_cli-3.35.2 → mapify_cli-3.36.0}/tests/test_workflow_gate.py +0 -0
  748. {mapify_cli-3.35.2 → mapify_cli-3.36.0}/tests/test_workflow_logger.py +0 -0
  749. {mapify_cli-3.35.2 → mapify_cli-3.36.0}/tests/test_workflow_state.py +0 -0
  750. {mapify_cli-3.35.2 → mapify_cli-3.36.0}/tests/test_worktree_commit_hooks.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.5
2
2
  Name: mapify-cli
3
- Version: 3.35.2
3
+ Version: 3.36.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.35.2"
3
+ version = "3.36.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.35.2"
26
+ __version__ = "3.36.0"
27
27
 
28
28
  # MUST stay the first import: it turns "this interpreter is older than 3.11" into
29
29
  # a message that says so, instead of the ImportError raised by `from datetime
@@ -13,9 +13,10 @@ import os
13
13
  import secrets
14
14
  import shutil
15
15
  import stat
16
+ import subprocess
16
17
  import tempfile
17
18
  import time
18
- from collections.abc import Iterator
19
+ from collections.abc import Generator
19
20
  from dataclasses import dataclass
20
21
  from fnmatch import fnmatchcase
21
22
  from pathlib import Path
@@ -608,7 +609,7 @@ def _windows_gitignore_mutex_name(project_stat: os.stat_result) -> str:
608
609
  @contextlib.contextmanager
609
610
  def _windows_project_gitignore_mutex(
610
611
  project_stat: os.stat_result,
611
- ) -> Iterator[None]:
612
+ ) -> Generator[None, None, None]:
612
613
  """Acquire a process-shared Windows mutex without a filesystem artifact."""
613
614
  ctypes: Any = importlib.import_module("ctypes")
614
615
  wintypes: Any = importlib.import_module("ctypes.wintypes")
@@ -672,7 +673,7 @@ def _windows_project_gitignore_mutex(
672
673
  def _windows_pinned_project_root(
673
674
  project_root: Path,
674
675
  project_original: os.stat_result,
675
- ) -> Iterator[None]:
676
+ ) -> Generator[None, None, None]:
676
677
  """Prevent replacement of a Windows project directory during mutation."""
677
678
  ctypes: Any = importlib.import_module("ctypes")
678
679
  wintypes: Any = importlib.import_module("ctypes.wintypes")
@@ -726,7 +727,7 @@ def _windows_pinned_project_root(
726
727
  def _pinned_project_root(
727
728
  project_root: Path,
728
729
  project_original: os.stat_result,
729
- ) -> Iterator[int | None]:
730
+ ) -> Generator[int | None, None, None]:
730
731
  """Pin the project identity used by every relative .gitignore operation."""
731
732
  if os.name == "nt":
732
733
  with _windows_pinned_project_root(project_root, project_original):
@@ -765,14 +766,6 @@ def _pinned_project_root(
765
766
  os.close(descriptor)
766
767
 
767
768
 
768
- def _gitignore_lock_path(project_root: Path) -> Path:
769
- """Resolve the shared lock from stable filesystem identity, not spelling."""
770
- return _gitignore_lock_path_for_stat(
771
- project_root,
772
- _validated_project_root_stat(project_root),
773
- )
774
-
775
-
776
769
  def _unsafe_gitignore_lock(lock_path: Path, reason: str) -> NoReturn:
777
770
  raise UpdateRuntimeGitignoreSecurityError(
778
771
  f"unsafe MAP .gitignore lock at {lock_path}: {reason}"
@@ -900,7 +893,7 @@ def _unlock_descriptor(descriptor: int) -> None:
900
893
  @contextlib.contextmanager
901
894
  def _project_gitignore_lock(
902
895
  project_root: Path,
903
- ) -> Iterator[tuple[int | None, os.stat_result]]:
896
+ ) -> Generator[tuple[int | None, os.stat_result], None, None]:
904
897
  """Serialize a complete MAP-owned root .gitignore transaction."""
905
898
  project_original = _validated_project_root_stat(project_root)
906
899
  with _pinned_project_root(project_root, project_original) as directory_fd:
@@ -1220,11 +1213,106 @@ def _has_effective_gitignore_path(lines: list[bytes], required_path: str) -> boo
1220
1213
  )
1221
1214
 
1222
1215
 
1216
+ def _git_info_exclude_path(project_root: Path) -> Path | None:
1217
+ """Return ``<git-common-dir>/info/exclude`` for a repo rooted at *project_root*.
1218
+
1219
+ ``info/exclude`` patterns anchor at the repository top level, so a project
1220
+ root that is merely a subdirectory of a repo (or not a repo at all, or git
1221
+ is unavailable) returns None and the caller keeps the tracked ``.gitignore``.
1222
+ Linked worktrees share the common dir, hence one exclude file per clone.
1223
+ """
1224
+ try:
1225
+ proc = subprocess.run(
1226
+ ["git", "rev-parse", "--show-toplevel", "--git-common-dir"],
1227
+ cwd=project_root,
1228
+ capture_output=True,
1229
+ text=True,
1230
+ timeout=10,
1231
+ check=False,
1232
+ )
1233
+ except (OSError, subprocess.SubprocessError):
1234
+ return None
1235
+ lines = proc.stdout.splitlines()
1236
+ if proc.returncode != 0 or len(lines) != 2:
1237
+ return None
1238
+ toplevel, common = Path(lines[0]), Path(lines[1])
1239
+ try:
1240
+ if toplevel.resolve() != project_root.resolve():
1241
+ return None
1242
+ except OSError:
1243
+ return None
1244
+ if not common.is_absolute():
1245
+ common = project_root / common
1246
+ return common / "info" / "exclude"
1247
+
1248
+
1249
+ def _prepare_info_exclude_directory(exclude: Path) -> None:
1250
+ """Create ``info/`` when missing and require it to be a direct directory."""
1251
+ try:
1252
+ exclude.parent.mkdir(parents=True, exist_ok=True)
1253
+ current = os.lstat(exclude.parent)
1254
+ except OSError as exc:
1255
+ _unsafe_project_gitignore(
1256
+ exclude, f"could not prepare {exclude.parent} ({exc})"
1257
+ )
1258
+ if stat.S_ISLNK(current.st_mode) or not stat.S_ISDIR(current.st_mode):
1259
+ _unsafe_project_gitignore(
1260
+ exclude, "the info directory must be a direct directory"
1261
+ )
1262
+
1263
+
1223
1264
  def _has_gitignore_marker(lines: list[bytes], marker: str) -> bool:
1224
1265
  encoded = marker.encode()
1225
1266
  return any(line == encoded or line.startswith(encoded + b" ") for line in lines)
1226
1267
 
1227
1268
 
1269
+ def _merge_runtime_exclude(
1270
+ exclude: Path,
1271
+ gitignore_lines: list[bytes],
1272
+ project_root: Path,
1273
+ project_original: os.stat_result,
1274
+ ) -> bool | None:
1275
+ """Append missing runtime paths to the git exclude file.
1276
+
1277
+ Presence in either file counts (OR). Returns True when the exclude file
1278
+ was rewritten, False when nothing was needed, and None when a ``.gitignore``
1279
+ negation (which outranks ``info/exclude``) defeats an exclude entry, so the
1280
+ caller must repair the tracked ``.gitignore`` instead.
1281
+ """
1282
+ existing, original = _read_safe_gitignore(exclude, None)
1283
+ exclude_lines = existing.splitlines()
1284
+ # .gitignore outranks info/exclude: evaluate exclude rules first.
1285
+ combined = exclude_lines + gitignore_lines
1286
+ missing = [
1287
+ path
1288
+ for path in _UPDATE_RUNTIME_GITIGNORE_PATHS
1289
+ if not _has_effective_gitignore_path(combined, path)
1290
+ ]
1291
+ if not missing:
1292
+ return False
1293
+ if any(
1294
+ line.startswith(b"!") and _negation_targets_path(line, path.encode())
1295
+ for path in missing
1296
+ for line in gitignore_lines
1297
+ ):
1298
+ return None
1299
+ _prepare_info_exclude_directory(exclude)
1300
+ block: list[bytes] = []
1301
+ if not _has_gitignore_marker(exclude_lines, _UPDATE_RUNTIME_GITIGNORE_MARKER):
1302
+ block.append(_UPDATE_RUNTIME_GITIGNORE_MARKER.encode())
1303
+ block.extend(path.encode() for path in missing)
1304
+ separator = b"" if not existing or existing.endswith(b"\n") else b"\n"
1305
+ _atomic_replace_gitignore(
1306
+ exclude,
1307
+ existing + separator + b"\n".join(block) + b"\n",
1308
+ original,
1309
+ None,
1310
+ project_root,
1311
+ project_original,
1312
+ )
1313
+ return True
1314
+
1315
+
1228
1316
  def _merge_project_gitignore_locked(
1229
1317
  project_root: Path,
1230
1318
  directory_fd: int | None,
@@ -1234,20 +1322,39 @@ def _merge_project_gitignore_locked(
1234
1322
  include_sofa: bool = False,
1235
1323
  include_agent_memory_local: bool = False,
1236
1324
  include_settings_local: bool = False,
1325
+ runtime_exclude: Path | None = None,
1237
1326
  ) -> int:
1238
- """Append selected MAP-owned blocks while the shared lock is held."""
1327
+ """Append selected MAP-owned blocks while the shared lock is held.
1328
+
1329
+ With ``runtime_exclude`` set, the runtime block goes to that git exclude
1330
+ file instead of the tracked ``.gitignore``; privacy blocks always stay in
1331
+ ``.gitignore``.
1332
+ """
1239
1333
  gitignore = project_root / ".gitignore"
1240
1334
  existing, original = _read_safe_gitignore(gitignore, directory_fd)
1241
1335
  _validate_project_root_unchanged(project_root, project_original)
1242
1336
  existing_lines = existing.splitlines()
1243
1337
 
1244
1338
  additions: list[bytes] = []
1339
+ exclude_changed = False
1245
1340
  if include_runtime:
1246
1341
  missing_runtime_paths = [
1247
1342
  path
1248
1343
  for path in _UPDATE_RUNTIME_GITIGNORE_PATHS
1249
1344
  if not _has_effective_gitignore_path(existing_lines, path)
1250
1345
  ]
1346
+ if runtime_exclude is not None:
1347
+ outcome = _merge_runtime_exclude(
1348
+ runtime_exclude,
1349
+ existing_lines,
1350
+ project_root,
1351
+ project_original,
1352
+ )
1353
+ # None: a .gitignore negation outranks info/exclude, so the
1354
+ # tracked-file repair below still applies.
1355
+ if outcome is not None:
1356
+ exclude_changed = outcome
1357
+ missing_runtime_paths = []
1251
1358
  if missing_runtime_paths:
1252
1359
  runtime_lines: list[bytes] = []
1253
1360
  marker = _UPDATE_RUNTIME_GITIGNORE_MARKER.encode()
@@ -1291,7 +1398,7 @@ def _merge_project_gitignore_locked(
1291
1398
 
1292
1399
  if not additions:
1293
1400
  _validate_gitignore_unchanged(gitignore, original, directory_fd)
1294
- return 0
1401
+ return 1 if exclude_changed else 0
1295
1402
  separator = b"" if not existing or existing.endswith(b"\n") else b"\n"
1296
1403
  replacement = existing + separator + b"".join(additions)
1297
1404
  _atomic_replace_gitignore(
@@ -1312,11 +1419,17 @@ def _merge_project_gitignore(
1312
1419
  include_sofa: bool = False,
1313
1420
  include_agent_memory_local: bool = False,
1314
1421
  include_settings_local: bool = False,
1422
+ runtime_to_git_exclude: bool = False,
1315
1423
  ) -> int:
1316
1424
  """Safely, atomically, and serially append MAP-owned ignore blocks."""
1317
1425
  project_root = project_path.resolve(strict=True)
1318
1426
  if not project_root.is_dir():
1319
1427
  raise NotADirectoryError(f"MAP project root is not a directory: {project_root}")
1428
+ runtime_exclude = (
1429
+ _git_info_exclude_path(project_root)
1430
+ if include_runtime and runtime_to_git_exclude
1431
+ else None
1432
+ )
1320
1433
  with _project_gitignore_lock(project_root) as (directory_fd, project_original):
1321
1434
  return _merge_project_gitignore_locked(
1322
1435
  project_root,
@@ -1326,6 +1439,7 @@ def _merge_project_gitignore(
1326
1439
  include_sofa=include_sofa,
1327
1440
  include_agent_memory_local=include_agent_memory_local,
1328
1441
  include_settings_local=include_settings_local,
1442
+ runtime_exclude=runtime_exclude,
1329
1443
  )
1330
1444
 
1331
1445
 
@@ -1336,10 +1450,17 @@ def merge_update_runtime_gitignore(
1336
1450
  agent_memory_local: bool = False,
1337
1451
  settings_local: bool = False,
1338
1452
  ) -> int:
1339
- """Atomically establish runtime and requested privacy ignore entries."""
1453
+ """Atomically establish runtime and requested privacy ignore entries.
1454
+
1455
+ The runtime block is local state, so in a git repo rooted at *project_path*
1456
+ it goes to ``<git-common-dir>/info/exclude`` and leaves the tracked
1457
+ ``.gitignore`` clean; elsewhere it falls back to ``.gitignore``. Privacy
1458
+ blocks are repo policy and always go to ``.gitignore``.
1459
+ """
1340
1460
  return _merge_project_gitignore(
1341
1461
  project_path,
1342
1462
  include_runtime=True,
1463
+ runtime_to_git_exclude=True,
1343
1464
  include_sofa=sofa,
1344
1465
  include_agent_memory_local=agent_memory_local,
1345
1466
  include_settings_local=settings_local,
@@ -136,6 +136,10 @@ state-changing orchestration continues in its original checkout. A standalone
136
136
  Only a diagnostic satisfying every condition in “Explicitly approved
137
137
  baseline gate failures” may be excluded from the scoped verdict; keep
138
138
  the full build gate failed and continue the other checks.
139
+ **VERIFICATION EXECUTION GATE (MANDATORY — same weight as BUILD GATE):** an applicable check (the lint/type/test target the repo's CI or Makefile runs for the touched code) that could NOT execute — tool missing, check skipped, a Makefile target that prints "skipped" and exits 0 — is NOT a pass.
140
+ - Set `valid: false` with issue `verification not executed: <tool> (<reason>)`.
141
+ - List the tool in `tools_run` with status `unavailable` or `skipped`; never omit it.
142
+ - Allowed remedies: install the tool or run the repo's tools target, then re-run; or explicit user deferral recorded in the conversation.
139
143
  3. Verify Goal is achieved — trace code path to confirm the stated outcome
140
144
  4. Verify Action is implemented — check that the specified method/operation exists
141
145
  5. **Verify mutation boundary (MANDATORY):** Run
@@ -329,7 +333,7 @@ All language handlers produce a standardized JSON format:
329
333
  "findings": [
330
334
  { "tool": "ruff", "file": "src/main.py", "line": 42, "severity": "error", "code": "F821", "message": "Undefined name" }
331
335
  ],
332
- "tools_run": ["ruff", "mypy"]
336
+ "tools_run": ["ruff", "mypy", {"tool": "golangci-lint", "status": "unavailable"}]
333
337
  }
334
338
  ```
335
339
 
@@ -1741,6 +1745,9 @@ GOOD: "suggestion": "Use path\\to\\file"
1741
1745
  Before returning JSON, verify:
1742
1746
 
1743
1747
  ```
1748
+ □ 0. VERIFICATION EXECUTION GATE: every applicable lint/type/test check actually ran;
1749
+ any that could not run is an issue (`verification not executed: <tool> (<reason>)`) → valid=false
1750
+
1744
1751
  □ 1. All required fields present:
1745
1752
  valid, summary, issues, passed_checks, failed_checks,
1746
1753
  feedback_for_actor, estimated_fix_time, mcp_tools_used
@@ -342,6 +342,7 @@ Return **ONLY** valid JSON in this exact structure:
342
342
  - Example: "Use existing RateLimiter middleware, configure for /api/* routes"
343
343
  **subtasks[].test_strategy**: Required object with unit/integration/e2e keys plus `scenario_dimensions`. Use "N/A" for levels not applicable.
344
344
  - **scenario_dimensions** (required): Object with four keys — `happy_path`, `error`, `edge_case`, `security`. Each describes at least one planned test covering that dimension. Use "N/A" for dimensions not relevant to the subtask. Testing-heavy subtasks must cover at minimum 4 dimensions.
345
+ - **Repo lint/type gate (MANDATORY for code subtasks)**: when the repo has a lint/type target (Makefile `lint`/`check`, CI lint or type-check step), the subtask's verification MUST include the repo's lint/type target for the touched code, not only build/vet. If the tool may be absent locally, name the install/tools target in the verification step.
345
346
  - MUST map `validation_criteria` → tests:
346
347
  - For each `VCn:` criterion, include at least one planned test name that covers it.
347
348
  - Recommended naming: include `vc<n>` in the test name (e.g., `test_vc1_*`, `TestVC1*`) for deterministic grep-ability.
@@ -307,6 +307,7 @@ Return **ONLY** valid JSON in this exact structure:
307
307
  - Example: "Use existing RateLimiter middleware, configure for /api/* routes"
308
308
  **subtasks[].test_strategy**: Required object with unit/integration/e2e keys plus `scenario_dimensions`. Use "N/A" for levels not applicable.
309
309
  - **scenario_dimensions** (required): Object with four keys — `happy_path`, `error`, `edge_case`, `security`. Each describes at least one planned test covering that dimension. Use "N/A" for dimensions not relevant to the subtask. Testing-heavy subtasks must cover at minimum 4 dimensions.
310
+ - **Repo lint/type gate (MANDATORY for code subtasks)**: when the repo has a lint/type target (Makefile `lint`/`check`, CI lint or type-check step), the subtask's verification MUST include the repo's lint/type target for the touched code, not only build/vet. If the tool may be absent locally, name the install/tools target in the verification step.
310
311
  - MUST map `validation_criteria` → tests:
311
312
  - For each `VCn:` criterion, include at least one planned test name that covers it.
312
313
  - Recommended naming: include `vc<n>` in the test name (e.g., `test_vc1_*`, `TestVC1*`) for deterministic grep-ability.
@@ -127,6 +127,11 @@ Verification sequence (execute in order):
127
127
  If build/compile fails -> valid: false immediately with compilation errors.
128
128
  Do NOT proceed to other checks.
129
129
 
130
+ VERIFICATION EXECUTION GATE (MANDATORY -- same weight as BUILD GATE): an applicable check (the lint/type/test target the repo's CI or Makefile runs for the touched code) that could NOT execute -- tool missing, check skipped, a Makefile target that prints "skipped" and exits 0 -- is NOT a pass.
131
+ - Set valid: false with issue `verification not executed: <tool> (<reason>)`.
132
+ - List the tool in tools_run with status `unavailable` or `skipped`; never omit it.
133
+ - Allowed remedies: install the tool or run the repo's tools target, then re-run; or explicit user deferral recorded in the conversation.
134
+
130
135
  3. Verify Goal is achieved -- trace code path to confirm the stated outcome
131
136
  4. Verify Action is implemented -- check that the specified method/operation exists
132
137
  5. Verify mutation boundary (MANDATORY): Run
@@ -1260,6 +1265,7 @@ Expected output:
1260
1265
 
1261
1266
  Before returning your review JSON:
1262
1267
  1. Did I run the BUILD GATE (build/compile command)?
1268
+ 1a. Did I run the VERIFICATION EXECUTION GATE (every applicable lint/type/test check executed, none unavailable/skipped)?
1263
1269
  2. Did I check all 11 validation dimensions systematically?
1264
1270
  3. Did I verify documentation against source of truth (if applicable)?
1265
1271
  4. Are all issues specific with location and actionable suggestions?
@@ -110,6 +110,19 @@ def state_string(state: dict, key: str, default: str = "") -> str:
110
110
  return default
111
111
 
112
112
 
113
+ def active_wave_bits(state: dict) -> list[str]:
114
+ """Return ``wave=i/n`` and ``phases=...`` bits when the wave loop is engaged."""
115
+ waves = state.get("execution_waves")
116
+ phases = state.get("subtask_phases")
117
+ wave_idx = state.get("current_wave_index", 0)
118
+ if not (isinstance(waves, list) and waves and isinstance(phases, dict) and phases):
119
+ return []
120
+ if not isinstance(wave_idx, int) or isinstance(wave_idx, bool):
121
+ return []
122
+ per_subtask = " ".join(f"{sid}:{phase}" for sid, phase in phases.items())
123
+ return [f"wave={wave_idx + 1}/{len(waves)}", f"phases=[{per_subtask}]"]
124
+
125
+
113
126
  def load_json(path: Path) -> dict | None:
114
127
  try:
115
128
  data = json.loads(path.read_text(encoding="utf-8"))
@@ -209,10 +222,17 @@ def build_reprime(branch: str, branch_dir: Path) -> str | None:
209
222
  step_id = state_string(state, "current_step_id")
210
223
  subtask_id = state_string(state, "current_subtask_id")
211
224
 
225
+ wave_bits = active_wave_bits(state)
226
+ if wave_bits:
227
+ # Wave loop engaged: current_step_*/current_subtask_id are stale
228
+ # sequential leftovers; subtask_phases is the live progress record.
229
+ phase = step_id = subtask_id = ""
230
+
212
231
  lines = ["MAP RE-PRIME after compaction:"]
213
232
  state_bits = []
214
233
  if workflow:
215
234
  state_bits.append(f"workflow={workflow}")
235
+ state_bits.extend(wave_bits)
216
236
  if step_id:
217
237
  state_bits.append(f"step={step_id}")
218
238
  if phase:
@@ -335,3 +355,4 @@ def main() -> None:
335
355
 
336
356
  if __name__ == "__main__":
337
357
  main()
358
+
@@ -501,6 +501,24 @@ def state_string(state: dict, key: str, default: str = "") -> str:
501
501
  return default
502
502
 
503
503
 
504
+ def active_wave_label(state: dict) -> str | None:
505
+ """Return ``WAVE i/n [ST-x:phase ...]`` when the wave loop is engaged.
506
+
507
+ Waves track progress only in ``subtask_phases``; ``current_step_*`` is a
508
+ stale sequential leftover (advance_wave resets it to 2.2/RESEARCH), so it
509
+ must not drive the banner while the wave loop is active.
510
+ """
511
+ waves = state.get("execution_waves")
512
+ phases = state.get("subtask_phases")
513
+ wave_idx = state.get("current_wave_index", 0)
514
+ if not (isinstance(waves, list) and waves and isinstance(phases, dict) and phases):
515
+ return None
516
+ if not isinstance(wave_idx, int) or isinstance(wave_idx, bool):
517
+ return None
518
+ per_subtask = " ".join(f"{sid}:{phase}" for sid, phase in phases.items())
519
+ return f"WAVE {wave_idx + 1}/{len(waves)} [{per_subtask}]"
520
+
521
+
504
522
  def required_action_for_step(step_id: str, step_phase: str) -> str | None:
505
523
  """Return a short required-next-action hint for common steps."""
506
524
  if step_id == "1.55":
@@ -713,6 +731,15 @@ def format_reminder(
713
731
  mode = "batch:parallel"
714
732
 
715
733
  required = required_action_for_step(step_id, step_phase)
734
+ step_label = f"{step_id} {step_phase}"
735
+ wave_label = active_wave_label(state)
736
+ if wave_label:
737
+ # Wave loop engaged: current_step_*/current_subtask_id are stale
738
+ # sequential leftovers, so show per-subtask phases instead.
739
+ step_label = wave_label
740
+ wave_hint = ""
741
+ subtask_id = "-"
742
+ required = None
716
743
 
717
744
  diag_hint = ""
718
745
  diag_file = (
@@ -738,7 +765,7 @@ def format_reminder(
738
765
  if len(current_files) > 5:
739
766
  files_hint += f" +{len(current_files) - 5}"
740
767
 
741
- if not step_id and not step_phase:
768
+ if not step_id and not step_phase and not wave_label:
742
769
  return None
743
770
 
744
771
  # Context-aware: add goal and subtask title
@@ -772,15 +799,15 @@ def format_reminder(
772
799
  except OSError:
773
800
  pass
774
801
  ts_hint = f" @ {now_utc.strftime('%H:%M:%S.%f')[:-3]}Z (state {state_age_str})"
775
- base = f"[MAP]{ts_hint} {step_id} {step_phase}{goal_hint} | ST: {subtask_id}{title_hint} ({progress}) | plan:{plan_ok} mode:{mode}{wave_hint}{diag_hint}{files_hint}{hard_hint}{tag_hint}{authority_hint}"
802
+ base = f"[MAP]{ts_hint} {step_label}{goal_hint} | ST: {subtask_id}{title_hint} ({progress}) | plan:{plan_ok} mode:{mode}{wave_hint}{diag_hint}{files_hint}{hard_hint}{tag_hint}{authority_hint}"
776
803
 
777
804
  # Enforce limit: trim goal first, then constraint detail, then word-boundary truncate.
778
805
  if len(base) > REMINDER_LIMIT:
779
806
  goal_hint = ""
780
- base = f"[MAP]{ts_hint} {step_id} {step_phase} | ST: {subtask_id}{title_hint} ({progress}) | plan:{plan_ok} mode:{mode}{wave_hint}{diag_hint}{files_hint}{hard_hint}{tag_hint}{authority_hint}"
807
+ base = f"[MAP]{ts_hint} {step_label} | ST: {subtask_id}{title_hint} ({progress}) | plan:{plan_ok} mode:{mode}{wave_hint}{diag_hint}{files_hint}{hard_hint}{tag_hint}{authority_hint}"
781
808
  if len(base) > REMINDER_LIMIT:
782
809
  hard_hint = ""
783
- base = f"[MAP]{ts_hint} {step_id} {step_phase} | ST: {subtask_id}{title_hint} ({progress}) | plan:{plan_ok} mode:{mode}{wave_hint}{diag_hint}{files_hint}{tag_hint}{authority_hint}"
810
+ base = f"[MAP]{ts_hint} {step_label} | ST: {subtask_id}{title_hint} ({progress}) | plan:{plan_ok} mode:{mode}{wave_hint}{diag_hint}{files_hint}{tag_hint}{authority_hint}"
784
811
  if len(base) > REMINDER_LIMIT:
785
812
  base = _truncate_at_word(base, REMINDER_LIMIT)
786
813
 
@@ -1126,3 +1153,4 @@ def main() -> None:
1126
1153
 
1127
1154
  if __name__ == "__main__":
1128
1155
  main()
1156
+
@@ -218,26 +218,24 @@ contradict a clean precheck require evidence stronger than narrative
218
218
  ```bash
219
219
  BRANCH=$(python3 .map/scripts/map_utils.py branch)
220
220
  BRANCH_DIR=".map/$BRANCH"
221
- REVIEW_MODE="full"
221
+ WORKFLOW_MODE="full" # --mode, echoed as `mode`; `review_mode` (normal/adversarial/...) is separate
222
222
  # Empty / placeholder review-bundle.md ⇒ lightweight.
223
223
  if [ -f ".map/$BRANCH/review-bundle.md" ] && \
224
224
  grep -qE 'MISSING|^- $|^—$' ".map/$BRANCH/review-bundle.md" && \
225
225
  ! grep -qE '^\s*##' ".map/$BRANCH/review-bundle.md"; then
226
- REVIEW_MODE="lightweight"
226
+ WORKFLOW_MODE="lightweight"
227
227
  fi
228
228
  # "twin of X", "sibling controller", "mirror of Y" in commit or PR body
229
229
  # ⇒ sibling-aware (operator probably wants comparison, not synthesis).
230
230
  SIBLING_HINT=""
231
231
  if git log -1 --format=%B | grep -iE 'twin of |sibling |mirror of |port of ' >/dev/null; then
232
- REVIEW_MODE="sibling-aware"
232
+ WORKFLOW_MODE="sibling-aware"
233
233
  SIBLING_HINT=$(git log -1 --format=%B | grep -oiE '(twin of|sibling|mirror of|port of)[^.]*' | sed -n '1p')
234
234
  fi
235
- # Include only documented project checks as {"<id>":[argv...]}; never invent placeholder passes.
236
- # Record absent automation as a limitation in the review summary; use {} if no checks exist.
235
+ # Only documented project checks as {"<id>":[argv...]}; no placeholder passes; {} if none (state the limitation).
237
236
  : "${CHECK_SPECS_JSON:?Set CHECK_SPECS_JSON to documented project check argv specifications}"
238
- # Optional positive seconds per admitted check; default 300.
239
- if [ -z "${CHECK_TIMEOUTS_JSON:-}" ]; then CHECK_TIMEOUTS_JSON='{}'; fi
240
- python3 - "$CHECK_SPECS_JSON" "$REVIEW_MODE" "$ARGUMENTS" "$SIBLING_HINT" "$CHECK_TIMEOUTS_JSON" <<'PY'
237
+ if [ -z "${CHECK_TIMEOUTS_JSON:-}" ]; then CHECK_TIMEOUTS_JSON='{}'; fi # optional seconds per check; default 300
238
+ python3 - "$CHECK_SPECS_JSON" "$WORKFLOW_MODE" "$ARGUMENTS" "$SIBLING_HINT" "$CHECK_TIMEOUTS_JSON" <<'PY'
241
239
  import json
242
240
  import subprocess
243
241
  import sys
@@ -269,19 +267,21 @@ print(admission.stdout, end="")
269
267
  if json.loads(admission.stdout).get("completed"):
270
268
  raise SystemExit("Review already completed; do not dispatch reviewers")
271
269
  for check_id in specs:
272
- subprocess.run(runner + ["run_test_gate", "--check-id", check_id], check=True)
270
+ gate = subprocess.run(runner + ["run_test_gate", "--check-id", check_id], capture_output=True, text=True)
271
+ print("CHECK", check_id, *(f"{k}={json.loads(gate.stdout or '{}').get(k)}" for k in ("passed", "exit_code", "output_artifact")))
272
+ if gate.returncode: raise SystemExit(f"Check {check_id} failed; read $BRANCH_DIR/<artifact> before any fix")
273
273
  PY
274
274
  [ "$?" -eq 0 ] || exit 1
275
275
  ```
276
276
 
277
- Start before any capture or fan-out. Abort on a start error; in particular
277
+ Start before any capture or fan-out. Stdout is a compact summary (full rows stay in the ledger); for `human_consent` `enforcement` see [review-reference.md](review-reference.md#sensitive-and-unknown-review-gates). Abort on a start error; in particular
278
278
  `reconsider_approach` means STOP and request reconsideration, never approval or a
279
279
  fourth automatic round. A round is a review/fix iteration, not a reviewer/tool
280
280
  retry or an ordering collection. Pending admission restores its identity and inferred mode; all other inputs must still match.
281
281
  Completed rounds are immutable. Use `--round-id <stored-id>` for an explicit retry.
282
- Do not dispatch reviewers when admission reports `completed: true`. For a stale pending round,
282
+ Do not dispatch reviewers when admission reports `completed: true`. For a stale pending round or one whose reviewers could not run,
283
283
  explicitly run `abandon_review_round <round-id> --reason "<why>"` through the runner before new admission;
284
- abandonment preserves audit/findings and consumes an unsuccessful attempt, never resets the cap.
284
+ abandonment preserves audit/findings and consumes an unsuccessful attempt, never resets the cap (out-of-harness review: see reference).
285
285
  After the initial full review, verified baseline/static impact enables incremental
286
286
  prioritization of delta + affected dependencies + unresolved findings, not exemption
287
287
  from admitted required_files coverage. Unknown impact retains full-scope fallback.
@@ -10,6 +10,12 @@ Human consent is a separate snapshot/policy/action-bound `review_consent` hold i
10
10
 
11
11
  Shadow consent-store errors are reported in admission output and persisted in the review ledger when writable; they do not deny admission or ready. Never reset a corrupt hold store: existing generic hold blockers remain enforced. Strict consent-store errors still fail closed. Gate configuration is read from the pinned trusted revision independently of `REVIEW.md` content validation; invalid root/area policy cannot downgrade a strict configuration.
12
12
 
13
+ Admission reports the hold as `human_consent: {status, hold_id, reason, enforcement}`. `enforcement: "shadow"` is informational: it blocks nothing and there is nothing to resolve yet. `enforcement: "strict"` stops at review-ready until verified human consent exists (#523). `status: "not_required"` means the change is not sensitive.
14
+
15
+ Admission and `run_test_gate` stdout are compact: the target omits trusted-policy file contents and lists `context_files_count` instead of the repository inventory, and a check reports `target_unchanged` instead of full `before`/`after` targets. Full rows stay in `review-verdict-ledger.json`.
16
+
17
+ If reviewers could not run for an admitted round, `abandon_review_round` it. A review then done outside the harness is reported as such in the summary; it never produces a ledger verdict or approval.
18
+
13
19
  ## Section Rubrics
14
20
 
15
21
  - Architecture: boundaries, lifecycle, coupling, public API behavior, stage consumption.
@@ -21,9 +27,72 @@ Shadow consent-store errors are reported in admission output and persisted in th
21
27
 
22
28
  Required coverage is the admitted `required_files`: changed paths against the selected base,
23
29
  including staged/unstaged/untracked inputs, deletions and both rename sides. The full
24
- `context_files` inventory remains snapshot-bound and available for dependency checks.
30
+ `context_files` inventory remains snapshot-bound; unchanged files are fetched lazily as
31
+ resource `repo:<path>` (frozen on first fetch) and are never listed in the manifest.
25
32
  Unread or explicitly skipped optional context does not make review incomplete.
26
33
 
34
+ Generated files are excluded from `required_files` and recorded in `row.coverage_skips`
35
+ (`snapshot.coverage_skips`, ledger `completeness.skipped_scope`) only when matched by a file
36
+ name pattern (`*.pb.go`, `*.pb.cc`, `*.pb.h`, `*_pb2.py`, `*_pb2_grpc.py`, `zz_generated*`), a
37
+ trusted `review.generated_patterns` entry (gitattributes-style: a pattern with a leading or inner slash is
38
+ anchored to the repository root, one without a slash matches the base name at any depth, `*` and `?` never cross
39
+ `/`, and `**/`, `/**`, `/**/` span directories), or `linguist-generated` in the root `.gitattributes`
40
+ of the trusted default revision. A `Code generated` header never skips a file, lockfiles stay
41
+ required, and strict `review.security_gates` disables every skip. Their diff hunks appear as
42
+ one-line stubs. `review.exclude_generated: false` turns skipping off.
43
+
44
+ Unmodified installed MAP files are skipped too (`rule: mapify-managed`, listed in `skipped_scope`):
45
+ a file whose embedded `MAP-MANAGED` header has a `template_hash` equal to the hash of its own payload
46
+ (fully managed files, and fenced files whose fence is intact with no user tail). Edited payloads,
47
+ user tails, missing or malformed headers and files whose JSON was reformatted stay required.
48
+ **Trust trade-off:** the header is self-attested. A PR author can add a self-consistent header to
49
+ any file and it is skipped (visibly, in `skipped_scope`). Use strict `review.security_gates` when PR
50
+ authors are untrusted; it disables this skip. `review.exclude_mapify_managed: false` opts out.
51
+
52
+ ## Sharded Rounds
53
+
54
+ When the required scope does not fit one reviewer's budget, admission plans `row.shards`
55
+ (deterministic, directory-aware, disjoint; at most `review.max_shards`, default 8) and returns
56
+ `shard_ids`. A single file above the per-shard capacity or more than `max_shards` shards fails
57
+ admission with `review_context_budget_exceeded` (`reason: file_too_large | too_many_shards`).
58
+ Unsharded rounds never see any of this.
59
+
60
+ - Every scheduled role reviews every shard; there is no per-role coverage exemption. Loop
61
+ ordering, then shard, then role. `--adversarial` and `--compare-orderings` work unchanged
62
+ per shard (orderings x shards x roles).
63
+ - Build with `--shard <id>` (`build_review_prompts`, `build_role_review_prompts`,
64
+ `build_adversarial_review_prompts`). Without it a sharded round returns
65
+ `{status: "sharded", shard_ids}`. A shard context carries only that shard's source resources and
66
+ diff; other shards' files are optional `repo:<path>` context. Delivery, finalization token and
67
+ `context_receipt` are per shard (`ordering:reviewer#sNN`); bind/serve/ack are unchanged.
68
+ - Capture with `capture_review_output --shard <id>`. Shard captures are stored under
69
+ `review-shards/` (outside the `review-agent-*` namespace). Once every shard of an
70
+ (ordering, reviewer) is captured the runner writes the canonical `review-agent-<reviewer>.json`:
71
+ worst-of verdict fields (`verdict`, `risk_assessment`, `recommendation`, minimum scores and
72
+ confidence), concatenated findings/issues (reviewer finding IDs kept unique; the ledger still
73
+ keys findings by fingerprint, never by shard), unioned receipts and `context_receipts` per
74
+ shard. Adversarial aggregates are re-aggregated from the merged per-reviewer outputs. A partial
75
+ set of shards leaves the round INCOMPLETE.
76
+ - Completeness checks each shard capture's hash, delivery proof and own-file coverage, so a
77
+ reviewer claiming other shards' files cannot hide an unread shard. The complexity lens is
78
+ advisory and runs per shard; report its per-shard lines together.
79
+
80
+ ## Context Budget
81
+
82
+ Admission sizes each path the way its resource is serialized (ASCII-escaped JSON or base64 for sources,
83
+ raw text for the diff, plus the manifest entry), so non-ASCII changes are sharded at admission instead of
84
+ failing at prompt build; the plan and budget check run for every new round, not only the first. Execution-check
85
+ logs longer than 16 Ki characters are shortened in the prompt; the full log is the optional resource
86
+ `check:<id>` (fetched like `repo:<path>`). A changed generated file fetched through `repo:<path>` is served
87
+ with its real base and current content (`status: changed_generated_skipped`).
88
+
89
+ Each reviewer's required context (manifest, prompt, `diff`, inventory, sources, artifacts) must
90
+ fit `review.context_budget_bytes` (trusted config; env `MAP_REVIEW_CONTEXT_BUDGET_BYTES`; default
91
+ 384 KiB). `begin_review_run` estimates it before consent and returns
92
+ `stop_reason: review_context_budget_exceeded` with `total`, `budget`, `top_paths` and `hints`
93
+ without consuming a round; the prompt builders recheck exact bytes and return no partial prompts.
94
+ Split the change, exclude generated files or raise the budget.
95
+
27
96
  ## Compare Orderings
28
97
 
29
98
  For supported Codex reviews, `codex_review_runner.py` performs binding, delivery,
@@ -152,7 +221,7 @@ Either way it cannot gate the change, and it cannot disappear either.
152
221
  Standalone prompt build (the normal fan-out builds these automatically):
153
222
 
154
223
  ```bash
155
- python3 .map/scripts/map_step_runner.py build_role_review_prompts \
224
+ python3 .map/scripts/map_step_runner.py build_role_review_prompts ${SHARD:+--shard "$SHARD"} \
156
225
  [--roles user_experience,maintainer]
157
226
  ```
158
227
 
@@ -297,8 +366,9 @@ retries, both ordering collections and the advisory complexity lens:
297
366
  For an early final response, retain no final capture: create the same request
298
367
  shape from the status's next `remaining` resource/offset and continue delivery.
299
368
  Required resources include the manifest, full original prompt (unless initially
300
- inline), inventory and source resources marked `required`. Unchanged sources
301
- are optional dependency context; fetch them only when needed. Blind stays diff-only.
369
+ inline), the `diff` resource, inventory and source resources marked `required`. Unchanged
370
+ repository files are optional: fetch `repo:<path>` only when needed. Blind stays diff-only
371
+ (prompt and `diff` only).
302
372
  2. Store the exact returned chunk JSON in a session-specific pending file under
303
373
  `.map/<branch>/review-context-delivery/<session-id>/`, then pass that JSON
304
374
  verbatim to the **same agent**:
@@ -356,7 +426,7 @@ BRANCH=$(python3 .map/scripts/map_utils.py branch)
356
426
  BRANCH_DIR=".map/$BRANCH"
357
427
  REVIEW_ROUND_ID=$(python3 -c 'import json,sys; print(json.load(open(sys.argv[1]))["round_id"])' "$BRANCH_DIR/review-mode.json")
358
428
  python3 .map/scripts/map_step_runner.py capture_review_output --reviewer monitor \
359
- --round-id "$REVIEW_ROUND_ID" --ordering "${ORDERING_LABEL:-}" <<'MONITOR_EOF'
429
+ --round-id "$REVIEW_ROUND_ID" --ordering "${ORDERING_LABEL:-}" ${SHARD:+--shard "$SHARD"} <<'MONITOR_EOF'
360
430
  <paste the Monitor JSON envelope verbatim>
361
431
  MONITOR_EOF
362
432
  ```