mapify-cli 3.15.0__tar.gz → 3.15.1__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {mapify_cli-3.15.0 → mapify_cli-3.15.1}/PKG-INFO +1 -1
- {mapify_cli-3.15.0 → mapify_cli-3.15.1}/pyproject.toml +1 -1
- {mapify_cli-3.15.0 → mapify_cli-3.15.1}/src/mapify_cli/__init__.py +1 -1
- {mapify_cli-3.15.0 → mapify_cli-3.15.1}/src/mapify_cli/templates/codex/hooks/workflow-gate.py +12 -11
- {mapify_cli-3.15.0 → mapify_cli-3.15.1}/src/mapify_cli/templates/codex/skills/map-efficient/SKILL.md +7 -3
- {mapify_cli-3.15.0 → mapify_cli-3.15.1}/src/mapify_cli/templates/hooks/post-compact-context.py +1 -1
- {mapify_cli-3.15.0 → mapify_cli-3.15.1}/src/mapify_cli/templates/hooks/workflow-context-injector.py +1 -1
- {mapify_cli-3.15.0 → mapify_cli-3.15.1}/src/mapify_cli/templates/hooks/workflow-gate.py +12 -11
- {mapify_cli-3.15.0 → mapify_cli-3.15.1}/src/mapify_cli/templates/map/scripts/map_orchestrator.py +18 -11
- {mapify_cli-3.15.0 → mapify_cli-3.15.1}/src/mapify_cli/templates/references/step-state-schema.md +2 -3
- {mapify_cli-3.15.0 → mapify_cli-3.15.1}/src/mapify_cli/templates/skills/map-efficient/SKILL.md +5 -5
- {mapify_cli-3.15.0 → mapify_cli-3.15.1}/src/mapify_cli/templates/skills/map-task/SKILL.md +1 -1
- {mapify_cli-3.15.0/src/mapify_cli/templates_src → mapify_cli-3.15.1/src/mapify_cli/templates_src/codex}/hooks/workflow-gate.py.jinja +12 -11
- {mapify_cli-3.15.0 → mapify_cli-3.15.1}/src/mapify_cli/templates_src/codex/skills/map-efficient/SKILL.md.jinja +7 -3
- {mapify_cli-3.15.0 → mapify_cli-3.15.1}/src/mapify_cli/templates_src/hooks/post-compact-context.py.jinja +1 -1
- {mapify_cli-3.15.0 → mapify_cli-3.15.1}/src/mapify_cli/templates_src/hooks/workflow-context-injector.py.jinja +1 -1
- {mapify_cli-3.15.0/src/mapify_cli/templates_src/codex → mapify_cli-3.15.1/src/mapify_cli/templates_src}/hooks/workflow-gate.py.jinja +12 -11
- {mapify_cli-3.15.0 → mapify_cli-3.15.1}/src/mapify_cli/templates_src/map/scripts/map_orchestrator.py.jinja +18 -11
- {mapify_cli-3.15.0 → mapify_cli-3.15.1}/src/mapify_cli/templates_src/references/step-state-schema.md.jinja +2 -3
- {mapify_cli-3.15.0 → mapify_cli-3.15.1}/src/mapify_cli/templates_src/skills/map-efficient/SKILL.md.jinja +5 -5
- {mapify_cli-3.15.0 → mapify_cli-3.15.1}/src/mapify_cli/templates_src/skills/map-task/SKILL.md.jinja +1 -1
- {mapify_cli-3.15.0 → mapify_cli-3.15.1}/tests/test_skills.py +42 -0
- {mapify_cli-3.15.0 → mapify_cli-3.15.1}/.claude/hooks/README.md +0 -0
- {mapify_cli-3.15.0 → mapify_cli-3.15.1}/.claude/skills/README.md +0 -0
- {mapify_cli-3.15.0 → mapify_cli-3.15.1}/.gitignore +0 -0
- {mapify_cli-3.15.0 → mapify_cli-3.15.1}/LICENSE +0 -0
- {mapify_cli-3.15.0 → mapify_cli-3.15.1}/README.md +0 -0
- {mapify_cli-3.15.0 → mapify_cli-3.15.1}/src/mapify_cli/_locking.py +0 -0
- {mapify_cli-3.15.0 → mapify_cli-3.15.1}/src/mapify_cli/cli_ui.py +0 -0
- {mapify_cli-3.15.0 → mapify_cli-3.15.1}/src/mapify_cli/config/__init__.py +0 -0
- {mapify_cli-3.15.0 → mapify_cli-3.15.1}/src/mapify_cli/config/mcp.py +0 -0
- {mapify_cli-3.15.0 → mapify_cli-3.15.1}/src/mapify_cli/config/project_config.py +0 -0
- {mapify_cli-3.15.0 → mapify_cli-3.15.1}/src/mapify_cli/config/settings.py +0 -0
- {mapify_cli-3.15.0 → mapify_cli-3.15.1}/src/mapify_cli/delivery/__init__.py +0 -0
- {mapify_cli-3.15.0 → mapify_cli-3.15.1}/src/mapify_cli/delivery/agent_generator.py +0 -0
- {mapify_cli-3.15.0 → mapify_cli-3.15.1}/src/mapify_cli/delivery/codex_copier.py +0 -0
- {mapify_cli-3.15.0 → mapify_cli-3.15.1}/src/mapify_cli/delivery/file_copier.py +0 -0
- {mapify_cli-3.15.0 → mapify_cli-3.15.1}/src/mapify_cli/delivery/managed_file_copier.py +0 -0
- {mapify_cli-3.15.0 → mapify_cli-3.15.1}/src/mapify_cli/delivery/providers.py +0 -0
- {mapify_cli-3.15.0 → mapify_cli-3.15.1}/src/mapify_cli/delivery/template_renderer.py +0 -0
- {mapify_cli-3.15.0 → mapify_cli-3.15.1}/src/mapify_cli/dependency_graph.py +0 -0
- {mapify_cli-3.15.0 → mapify_cli-3.15.1}/src/mapify_cli/intent_detector.py +0 -0
- {mapify_cli-3.15.0 → mapify_cli-3.15.1}/src/mapify_cli/memory/__init__.py +0 -0
- {mapify_cli-3.15.0 → mapify_cli-3.15.1}/src/mapify_cli/memory/capture.py +0 -0
- {mapify_cli-3.15.0 → mapify_cli-3.15.1}/src/mapify_cli/memory/digest_schema.py +0 -0
- {mapify_cli-3.15.0 → mapify_cli-3.15.1}/src/mapify_cli/memory/finalize.py +0 -0
- {mapify_cli-3.15.0 → mapify_cli-3.15.1}/src/mapify_cli/memory/recall.py +0 -0
- {mapify_cli-3.15.0 → mapify_cli-3.15.1}/src/mapify_cli/ralph_state.py +0 -0
- {mapify_cli-3.15.0 → mapify_cli-3.15.1}/src/mapify_cli/repo_insight.py +0 -0
- {mapify_cli-3.15.0 → mapify_cli-3.15.1}/src/mapify_cli/schemas.py +0 -0
- {mapify_cli-3.15.0 → mapify_cli-3.15.1}/src/mapify_cli/skill_ir.py +0 -0
- {mapify_cli-3.15.0 → mapify_cli-3.15.1}/src/mapify_cli/skills_eval/__init__.py +0 -0
- {mapify_cli-3.15.0 → mapify_cli-3.15.1}/src/mapify_cli/skills_eval/aggregator.py +0 -0
- {mapify_cli-3.15.0 → mapify_cli-3.15.1}/src/mapify_cli/skills_eval/apply_patcher.py +0 -0
- {mapify_cli-3.15.0 → mapify_cli-3.15.1}/src/mapify_cli/skills_eval/assertions.py +0 -0
- {mapify_cli-3.15.0 → mapify_cli-3.15.1}/src/mapify_cli/skills_eval/description_optimizer.py +0 -0
- {mapify_cli-3.15.0 → mapify_cli-3.15.1}/src/mapify_cli/skills_eval/dispatcher.py +0 -0
- {mapify_cli-3.15.0 → mapify_cli-3.15.1}/src/mapify_cli/skills_eval/eval_schema.py +0 -0
- {mapify_cli-3.15.0 → mapify_cli-3.15.1}/src/mapify_cli/skills_eval/proposer.py +0 -0
- {mapify_cli-3.15.0 → mapify_cli-3.15.1}/src/mapify_cli/skills_eval/runner.py +0 -0
- {mapify_cli-3.15.0 → mapify_cli-3.15.1}/src/mapify_cli/skills_eval/viewer.py +0 -0
- {mapify_cli-3.15.0 → mapify_cli-3.15.1}/src/mapify_cli/templates/.gitignore +0 -0
- {mapify_cli-3.15.0 → mapify_cli-3.15.1}/src/mapify_cli/templates/CLAUDE.md +0 -0
- {mapify_cli-3.15.0 → mapify_cli-3.15.1}/src/mapify_cli/templates/agents/actor.md +0 -0
- {mapify_cli-3.15.0 → mapify_cli-3.15.1}/src/mapify_cli/templates/agents/debate-arbiter.md +0 -0
- {mapify_cli-3.15.0 → mapify_cli-3.15.1}/src/mapify_cli/templates/agents/documentation-reviewer.md +0 -0
- {mapify_cli-3.15.0 → mapify_cli-3.15.1}/src/mapify_cli/templates/agents/evaluator.md +0 -0
- {mapify_cli-3.15.0 → mapify_cli-3.15.1}/src/mapify_cli/templates/agents/final-verifier.md +0 -0
- {mapify_cli-3.15.0 → mapify_cli-3.15.1}/src/mapify_cli/templates/agents/monitor.md +0 -0
- {mapify_cli-3.15.0 → mapify_cli-3.15.1}/src/mapify_cli/templates/agents/predictor.md +0 -0
- {mapify_cli-3.15.0 → mapify_cli-3.15.1}/src/mapify_cli/templates/agents/reflector.md +0 -0
- {mapify_cli-3.15.0 → mapify_cli-3.15.1}/src/mapify_cli/templates/agents/research-agent.md +0 -0
- {mapify_cli-3.15.0 → mapify_cli-3.15.1}/src/mapify_cli/templates/agents/synthesizer.md +0 -0
- {mapify_cli-3.15.0 → mapify_cli-3.15.1}/src/mapify_cli/templates/agents/task-decomposer.md +0 -0
- {mapify_cli-3.15.0 → mapify_cli-3.15.1}/src/mapify_cli/templates/codex/AGENTS.md +0 -0
- {mapify_cli-3.15.0 → mapify_cli-3.15.1}/src/mapify_cli/templates/codex/agents/decomposer.toml +0 -0
- {mapify_cli-3.15.0 → mapify_cli-3.15.1}/src/mapify_cli/templates/codex/agents/monitor.toml +0 -0
- {mapify_cli-3.15.0 → mapify_cli-3.15.1}/src/mapify_cli/templates/codex/agents/researcher.toml +0 -0
- {mapify_cli-3.15.0 → mapify_cli-3.15.1}/src/mapify_cli/templates/codex/config.toml +0 -0
- {mapify_cli-3.15.0 → mapify_cli-3.15.1}/src/mapify_cli/templates/codex/hooks.json +0 -0
- {mapify_cli-3.15.0 → mapify_cli-3.15.1}/src/mapify_cli/templates/codex/skills/map-check/SKILL.md +0 -0
- {mapify_cli-3.15.0 → mapify_cli-3.15.1}/src/mapify_cli/templates/codex/skills/map-efficient/efficient-reference.md +0 -0
- {mapify_cli-3.15.0 → mapify_cli-3.15.1}/src/mapify_cli/templates/codex/skills/map-explain/SKILL.md +0 -0
- {mapify_cli-3.15.0 → mapify_cli-3.15.1}/src/mapify_cli/templates/codex/skills/map-fast/SKILL.md +0 -0
- {mapify_cli-3.15.0 → mapify_cli-3.15.1}/src/mapify_cli/templates/codex/skills/map-plan/SKILL.md +0 -0
- {mapify_cli-3.15.0 → mapify_cli-3.15.1}/src/mapify_cli/templates/hooks/README.md +0 -0
- {mapify_cli-3.15.0 → mapify_cli-3.15.1}/src/mapify_cli/templates/hooks/context-meter.py +0 -0
- {mapify_cli-3.15.0 → mapify_cli-3.15.1}/src/mapify_cli/templates/hooks/detect-clarification-triggers.py +0 -0
- {mapify_cli-3.15.0 → mapify_cli-3.15.1}/src/mapify_cli/templates/hooks/end-of-turn.sh +0 -0
- {mapify_cli-3.15.0 → mapify_cli-3.15.1}/src/mapify_cli/templates/hooks/map-memory-capture.py +0 -0
- {mapify_cli-3.15.0 → mapify_cli-3.15.1}/src/mapify_cli/templates/hooks/map-memory-endmark.py +0 -0
- {mapify_cli-3.15.0 → mapify_cli-3.15.1}/src/mapify_cli/templates/hooks/map-memory-finalize.py +0 -0
- {mapify_cli-3.15.0 → mapify_cli-3.15.1}/src/mapify_cli/templates/hooks/map-memory-recall.py +0 -0
- {mapify_cli-3.15.0 → mapify_cli-3.15.1}/src/mapify_cli/templates/hooks/map-token-meter.py +0 -0
- {mapify_cli-3.15.0 → mapify_cli-3.15.1}/src/mapify_cli/templates/hooks/pre-compact-save-transcript.py +0 -0
- {mapify_cli-3.15.0 → mapify_cli-3.15.1}/src/mapify_cli/templates/hooks/ralph-context-pruner.py +0 -0
- {mapify_cli-3.15.0 → mapify_cli-3.15.1}/src/mapify_cli/templates/hooks/ralph-iteration-logger.py +0 -0
- {mapify_cli-3.15.0 → mapify_cli-3.15.1}/src/mapify_cli/templates/hooks/safety-guardrails.py +0 -0
- {mapify_cli-3.15.0 → mapify_cli-3.15.1}/src/mapify_cli/templates/map/scripts/diagnostics.py +0 -0
- {mapify_cli-3.15.0 → mapify_cli-3.15.1}/src/mapify_cli/templates/map/scripts/map_step_runner.py +0 -0
- {mapify_cli-3.15.0 → mapify_cli-3.15.1}/src/mapify_cli/templates/map/scripts/map_utils.py +0 -0
- {mapify_cli-3.15.0 → mapify_cli-3.15.1}/src/mapify_cli/templates/map/scripts/sofa_client.py +0 -0
- {mapify_cli-3.15.0 → mapify_cli-3.15.1}/src/mapify_cli/templates/map/scripts/validate_spec_citations.py +0 -0
- {mapify_cli-3.15.0 → mapify_cli-3.15.1}/src/mapify_cli/templates/map/static-analysis/analyze.sh +0 -0
- {mapify_cli-3.15.0 → mapify_cli-3.15.1}/src/mapify_cli/templates/map/static-analysis/handlers/common.sh +0 -0
- {mapify_cli-3.15.0 → mapify_cli-3.15.1}/src/mapify_cli/templates/map/static-analysis/handlers/go.sh +0 -0
- {mapify_cli-3.15.0 → mapify_cli-3.15.1}/src/mapify_cli/templates/map/static-analysis/handlers/python.sh +0 -0
- {mapify_cli-3.15.0 → mapify_cli-3.15.1}/src/mapify_cli/templates/map/static-analysis/handlers/rust.sh +0 -0
- {mapify_cli-3.15.0 → mapify_cli-3.15.1}/src/mapify_cli/templates/map/static-analysis/handlers/typescript.sh +0 -0
- {mapify_cli-3.15.0 → mapify_cli-3.15.1}/src/mapify_cli/templates/ralph-loop-config.json +0 -0
- {mapify_cli-3.15.0 → mapify_cli-3.15.1}/src/mapify_cli/templates/references/bash-guidelines.md +0 -0
- {mapify_cli-3.15.0 → mapify_cli-3.15.1}/src/mapify_cli/templates/references/decomposition-examples.md +0 -0
- {mapify_cli-3.15.0 → mapify_cli-3.15.1}/src/mapify_cli/templates/references/escalation-matrix.md +0 -0
- {mapify_cli-3.15.0 → mapify_cli-3.15.1}/src/mapify_cli/templates/references/hook-patterns.md +0 -0
- {mapify_cli-3.15.0 → mapify_cli-3.15.1}/src/mapify_cli/templates/references/host-paths.md +0 -0
- {mapify_cli-3.15.0 → mapify_cli-3.15.1}/src/mapify_cli/templates/references/map-json-output-contracts.md +0 -0
- {mapify_cli-3.15.0 → mapify_cli-3.15.1}/src/mapify_cli/templates/references/map-output-examples.md +0 -0
- {mapify_cli-3.15.0 → mapify_cli-3.15.1}/src/mapify_cli/templates/references/map-xml-prompt-envelopes.md +0 -0
- {mapify_cli-3.15.0 → mapify_cli-3.15.1}/src/mapify_cli/templates/references/mcp-usage-examples.md +0 -0
- {mapify_cli-3.15.0 → mapify_cli-3.15.1}/src/mapify_cli/templates/references/workflow-state-schema.md +0 -0
- {mapify_cli-3.15.0 → mapify_cli-3.15.1}/src/mapify_cli/templates/rules/learned/README.md +0 -0
- {mapify_cli-3.15.0 → mapify_cli-3.15.1}/src/mapify_cli/templates/settings.json +0 -0
- {mapify_cli-3.15.0 → mapify_cli-3.15.1}/src/mapify_cli/templates/skills/README.md +0 -0
- {mapify_cli-3.15.0 → mapify_cli-3.15.1}/src/mapify_cli/templates/skills/map-check/SKILL.md +0 -0
- {mapify_cli-3.15.0 → mapify_cli-3.15.1}/src/mapify_cli/templates/skills/map-check/check-reference.md +0 -0
- {mapify_cli-3.15.0 → mapify_cli-3.15.1}/src/mapify_cli/templates/skills/map-debug/SKILL.md +0 -0
- {mapify_cli-3.15.0 → mapify_cli-3.15.1}/src/mapify_cli/templates/skills/map-efficient/efficient-reference.md +0 -0
- {mapify_cli-3.15.0 → mapify_cli-3.15.1}/src/mapify_cli/templates/skills/map-explain/SKILL.md +0 -0
- {mapify_cli-3.15.0 → mapify_cli-3.15.1}/src/mapify_cli/templates/skills/map-fast/SKILL.md +0 -0
- {mapify_cli-3.15.0 → mapify_cli-3.15.1}/src/mapify_cli/templates/skills/map-learn/SKILL.md +0 -0
- {mapify_cli-3.15.0 → mapify_cli-3.15.1}/src/mapify_cli/templates/skills/map-learn/templates/example-rules.md +0 -0
- {mapify_cli-3.15.0 → mapify_cli-3.15.1}/src/mapify_cli/templates/skills/map-learn/templates/rules-unconditional.md +0 -0
- {mapify_cli-3.15.0 → mapify_cli-3.15.1}/src/mapify_cli/templates/skills/map-learn/templates/rules-with-paths.md +0 -0
- {mapify_cli-3.15.0 → mapify_cli-3.15.1}/src/mapify_cli/templates/skills/map-memory-now/SKILL.md +0 -0
- {mapify_cli-3.15.0 → mapify_cli-3.15.1}/src/mapify_cli/templates/skills/map-plan/SKILL.md +0 -0
- {mapify_cli-3.15.0 → mapify_cli-3.15.1}/src/mapify_cli/templates/skills/map-plan/plan-reference.md +0 -0
- {mapify_cli-3.15.0 → mapify_cli-3.15.1}/src/mapify_cli/templates/skills/map-release/SKILL.md +0 -0
- {mapify_cli-3.15.0 → mapify_cli-3.15.1}/src/mapify_cli/templates/skills/map-resume/SKILL.md +0 -0
- {mapify_cli-3.15.0 → mapify_cli-3.15.1}/src/mapify_cli/templates/skills/map-resume/resume-reference.md +0 -0
- {mapify_cli-3.15.0 → mapify_cli-3.15.1}/src/mapify_cli/templates/skills/map-review/SKILL.md +0 -0
- {mapify_cli-3.15.0 → mapify_cli-3.15.1}/src/mapify_cli/templates/skills/map-review/review-reference.md +0 -0
- {mapify_cli-3.15.0 → mapify_cli-3.15.1}/src/mapify_cli/templates/skills/map-skill-eval/SKILL.md +0 -0
- {mapify_cli-3.15.0 → mapify_cli-3.15.1}/src/mapify_cli/templates/skills/map-so-search/SKILL.md +0 -0
- {mapify_cli-3.15.0 → mapify_cli-3.15.1}/src/mapify_cli/templates/skills/map-so-search/scripts/sofa_search.py +0 -0
- {mapify_cli-3.15.0 → mapify_cli-3.15.1}/src/mapify_cli/templates/skills/map-state/SKILL.md +0 -0
- {mapify_cli-3.15.0 → mapify_cli-3.15.1}/src/mapify_cli/templates/skills/map-state/scripts/check-complete.sh +0 -0
- {mapify_cli-3.15.0 → mapify_cli-3.15.1}/src/mapify_cli/templates/skills/map-state/scripts/get-plan-path.sh +0 -0
- {mapify_cli-3.15.0 → mapify_cli-3.15.1}/src/mapify_cli/templates/skills/map-state/scripts/init-session.sh +0 -0
- {mapify_cli-3.15.0 → mapify_cli-3.15.1}/src/mapify_cli/templates/skills/map-state/scripts/show-focus.sh +0 -0
- {mapify_cli-3.15.0 → mapify_cli-3.15.1}/src/mapify_cli/templates/skills/map-state/templates/findings.md +0 -0
- {mapify_cli-3.15.0 → mapify_cli-3.15.1}/src/mapify_cli/templates/skills/map-state/templates/iteration_history.md +0 -0
- {mapify_cli-3.15.0 → mapify_cli-3.15.1}/src/mapify_cli/templates/skills/map-state/templates/progress.md +0 -0
- {mapify_cli-3.15.0 → mapify_cli-3.15.1}/src/mapify_cli/templates/skills/map-state/templates/task_plan.md +0 -0
- {mapify_cli-3.15.0 → mapify_cli-3.15.1}/src/mapify_cli/templates/skills/map-tdd/SKILL.md +0 -0
- {mapify_cli-3.15.0 → mapify_cli-3.15.1}/src/mapify_cli/templates/skills/map-tokenreport/SKILL.md +0 -0
- {mapify_cli-3.15.0 → mapify_cli-3.15.1}/src/mapify_cli/templates/skills/skill-rules.json +0 -0
- {mapify_cli-3.15.0 → mapify_cli-3.15.1}/src/mapify_cli/templates/workflow-rules.json +0 -0
- {mapify_cli-3.15.0 → mapify_cli-3.15.1}/src/mapify_cli/templates_src/.gitignore.jinja +0 -0
- {mapify_cli-3.15.0 → mapify_cli-3.15.1}/src/mapify_cli/templates_src/CLAUDE.md.jinja +0 -0
- {mapify_cli-3.15.0 → mapify_cli-3.15.1}/src/mapify_cli/templates_src/agents/actor.md.jinja +0 -0
- {mapify_cli-3.15.0 → mapify_cli-3.15.1}/src/mapify_cli/templates_src/agents/debate-arbiter.md.jinja +0 -0
- {mapify_cli-3.15.0 → mapify_cli-3.15.1}/src/mapify_cli/templates_src/agents/documentation-reviewer.md.jinja +0 -0
- {mapify_cli-3.15.0 → mapify_cli-3.15.1}/src/mapify_cli/templates_src/agents/evaluator.md.jinja +0 -0
- {mapify_cli-3.15.0 → mapify_cli-3.15.1}/src/mapify_cli/templates_src/agents/final-verifier.md.jinja +0 -0
- {mapify_cli-3.15.0 → mapify_cli-3.15.1}/src/mapify_cli/templates_src/agents/monitor.md.jinja +0 -0
- {mapify_cli-3.15.0 → mapify_cli-3.15.1}/src/mapify_cli/templates_src/agents/predictor.md.jinja +0 -0
- {mapify_cli-3.15.0 → mapify_cli-3.15.1}/src/mapify_cli/templates_src/agents/reflector.md.jinja +0 -0
- {mapify_cli-3.15.0 → mapify_cli-3.15.1}/src/mapify_cli/templates_src/agents/research-agent.md.jinja +0 -0
- {mapify_cli-3.15.0 → mapify_cli-3.15.1}/src/mapify_cli/templates_src/agents/synthesizer.md.jinja +0 -0
- {mapify_cli-3.15.0 → mapify_cli-3.15.1}/src/mapify_cli/templates_src/agents/task-decomposer.md.jinja +0 -0
- {mapify_cli-3.15.0 → mapify_cli-3.15.1}/src/mapify_cli/templates_src/codex/AGENTS.md.jinja +0 -0
- {mapify_cli-3.15.0 → mapify_cli-3.15.1}/src/mapify_cli/templates_src/codex/agents/decomposer.toml.jinja +0 -0
- {mapify_cli-3.15.0 → mapify_cli-3.15.1}/src/mapify_cli/templates_src/codex/agents/monitor.toml.jinja +0 -0
- {mapify_cli-3.15.0 → mapify_cli-3.15.1}/src/mapify_cli/templates_src/codex/agents/researcher.toml.jinja +0 -0
- {mapify_cli-3.15.0 → mapify_cli-3.15.1}/src/mapify_cli/templates_src/codex/config.toml.jinja +0 -0
- {mapify_cli-3.15.0 → mapify_cli-3.15.1}/src/mapify_cli/templates_src/codex/hooks.json.jinja +0 -0
- {mapify_cli-3.15.0 → mapify_cli-3.15.1}/src/mapify_cli/templates_src/codex/skills/map-check/SKILL.md.jinja +0 -0
- {mapify_cli-3.15.0 → mapify_cli-3.15.1}/src/mapify_cli/templates_src/codex/skills/map-efficient/efficient-reference.md.jinja +0 -0
- {mapify_cli-3.15.0 → mapify_cli-3.15.1}/src/mapify_cli/templates_src/codex/skills/map-explain/SKILL.md.jinja +0 -0
- {mapify_cli-3.15.0 → mapify_cli-3.15.1}/src/mapify_cli/templates_src/codex/skills/map-fast/SKILL.md.jinja +0 -0
- {mapify_cli-3.15.0 → mapify_cli-3.15.1}/src/mapify_cli/templates_src/codex/skills/map-plan/SKILL.md.jinja +0 -0
- {mapify_cli-3.15.0 → mapify_cli-3.15.1}/src/mapify_cli/templates_src/hooks/README.md.jinja +0 -0
- {mapify_cli-3.15.0 → mapify_cli-3.15.1}/src/mapify_cli/templates_src/hooks/context-meter.py.jinja +0 -0
- {mapify_cli-3.15.0 → mapify_cli-3.15.1}/src/mapify_cli/templates_src/hooks/detect-clarification-triggers.py.jinja +0 -0
- {mapify_cli-3.15.0 → mapify_cli-3.15.1}/src/mapify_cli/templates_src/hooks/end-of-turn.sh.jinja +0 -0
- {mapify_cli-3.15.0 → mapify_cli-3.15.1}/src/mapify_cli/templates_src/hooks/map-memory-capture.py.jinja +0 -0
- {mapify_cli-3.15.0 → mapify_cli-3.15.1}/src/mapify_cli/templates_src/hooks/map-memory-endmark.py.jinja +0 -0
- {mapify_cli-3.15.0 → mapify_cli-3.15.1}/src/mapify_cli/templates_src/hooks/map-memory-finalize.py.jinja +0 -0
- {mapify_cli-3.15.0 → mapify_cli-3.15.1}/src/mapify_cli/templates_src/hooks/map-memory-recall.py.jinja +0 -0
- {mapify_cli-3.15.0 → mapify_cli-3.15.1}/src/mapify_cli/templates_src/hooks/map-token-meter.py.jinja +0 -0
- {mapify_cli-3.15.0 → mapify_cli-3.15.1}/src/mapify_cli/templates_src/hooks/pre-compact-save-transcript.py.jinja +0 -0
- {mapify_cli-3.15.0 → mapify_cli-3.15.1}/src/mapify_cli/templates_src/hooks/ralph-context-pruner.py.jinja +0 -0
- {mapify_cli-3.15.0 → mapify_cli-3.15.1}/src/mapify_cli/templates_src/hooks/ralph-iteration-logger.py.jinja +0 -0
- {mapify_cli-3.15.0 → mapify_cli-3.15.1}/src/mapify_cli/templates_src/hooks/safety-guardrails.py.jinja +0 -0
- {mapify_cli-3.15.0 → mapify_cli-3.15.1}/src/mapify_cli/templates_src/map/scripts/diagnostics.py.jinja +0 -0
- {mapify_cli-3.15.0 → mapify_cli-3.15.1}/src/mapify_cli/templates_src/map/scripts/map_step_runner.py.jinja +0 -0
- {mapify_cli-3.15.0 → mapify_cli-3.15.1}/src/mapify_cli/templates_src/map/scripts/map_utils.py.jinja +0 -0
- {mapify_cli-3.15.0 → mapify_cli-3.15.1}/src/mapify_cli/templates_src/map/scripts/sofa_client.py.jinja +0 -0
- {mapify_cli-3.15.0 → mapify_cli-3.15.1}/src/mapify_cli/templates_src/map/scripts/validate_spec_citations.py.jinja +0 -0
- {mapify_cli-3.15.0 → mapify_cli-3.15.1}/src/mapify_cli/templates_src/map/static-analysis/analyze.sh.jinja +0 -0
- {mapify_cli-3.15.0 → mapify_cli-3.15.1}/src/mapify_cli/templates_src/map/static-analysis/handlers/common.sh.jinja +0 -0
- {mapify_cli-3.15.0 → mapify_cli-3.15.1}/src/mapify_cli/templates_src/map/static-analysis/handlers/go.sh.jinja +0 -0
- {mapify_cli-3.15.0 → mapify_cli-3.15.1}/src/mapify_cli/templates_src/map/static-analysis/handlers/python.sh.jinja +0 -0
- {mapify_cli-3.15.0 → mapify_cli-3.15.1}/src/mapify_cli/templates_src/map/static-analysis/handlers/rust.sh.jinja +0 -0
- {mapify_cli-3.15.0 → mapify_cli-3.15.1}/src/mapify_cli/templates_src/map/static-analysis/handlers/typescript.sh.jinja +0 -0
- {mapify_cli-3.15.0 → mapify_cli-3.15.1}/src/mapify_cli/templates_src/ralph-loop-config.json.jinja +0 -0
- {mapify_cli-3.15.0 → mapify_cli-3.15.1}/src/mapify_cli/templates_src/references/bash-guidelines.md.jinja +0 -0
- {mapify_cli-3.15.0 → mapify_cli-3.15.1}/src/mapify_cli/templates_src/references/decomposition-examples.md.jinja +0 -0
- {mapify_cli-3.15.0 → mapify_cli-3.15.1}/src/mapify_cli/templates_src/references/escalation-matrix.md.jinja +0 -0
- {mapify_cli-3.15.0 → mapify_cli-3.15.1}/src/mapify_cli/templates_src/references/hook-patterns.md.jinja +0 -0
- {mapify_cli-3.15.0 → mapify_cli-3.15.1}/src/mapify_cli/templates_src/references/host-paths.md.jinja +0 -0
- {mapify_cli-3.15.0 → mapify_cli-3.15.1}/src/mapify_cli/templates_src/references/map-json-output-contracts.md.jinja +0 -0
- {mapify_cli-3.15.0 → mapify_cli-3.15.1}/src/mapify_cli/templates_src/references/map-output-examples.md.jinja +0 -0
- {mapify_cli-3.15.0 → mapify_cli-3.15.1}/src/mapify_cli/templates_src/references/map-xml-prompt-envelopes.md.jinja +0 -0
- {mapify_cli-3.15.0 → mapify_cli-3.15.1}/src/mapify_cli/templates_src/references/mcp-usage-examples.md.jinja +0 -0
- {mapify_cli-3.15.0 → mapify_cli-3.15.1}/src/mapify_cli/templates_src/references/workflow-state-schema.md.jinja +0 -0
- {mapify_cli-3.15.0 → mapify_cli-3.15.1}/src/mapify_cli/templates_src/rules/learned/README.md.jinja +0 -0
- {mapify_cli-3.15.0 → mapify_cli-3.15.1}/src/mapify_cli/templates_src/settings.json.jinja +0 -0
- {mapify_cli-3.15.0 → mapify_cli-3.15.1}/src/mapify_cli/templates_src/skills/README.md.jinja +0 -0
- {mapify_cli-3.15.0 → mapify_cli-3.15.1}/src/mapify_cli/templates_src/skills/map-check/SKILL.md.jinja +0 -0
- {mapify_cli-3.15.0 → mapify_cli-3.15.1}/src/mapify_cli/templates_src/skills/map-check/check-reference.md.jinja +0 -0
- {mapify_cli-3.15.0 → mapify_cli-3.15.1}/src/mapify_cli/templates_src/skills/map-debug/SKILL.md.jinja +0 -0
- {mapify_cli-3.15.0 → mapify_cli-3.15.1}/src/mapify_cli/templates_src/skills/map-efficient/efficient-reference.md.jinja +0 -0
- {mapify_cli-3.15.0 → mapify_cli-3.15.1}/src/mapify_cli/templates_src/skills/map-explain/SKILL.md.jinja +0 -0
- {mapify_cli-3.15.0 → mapify_cli-3.15.1}/src/mapify_cli/templates_src/skills/map-fast/SKILL.md.jinja +0 -0
- {mapify_cli-3.15.0 → mapify_cli-3.15.1}/src/mapify_cli/templates_src/skills/map-learn/SKILL.md.jinja +0 -0
- {mapify_cli-3.15.0 → mapify_cli-3.15.1}/src/mapify_cli/templates_src/skills/map-learn/templates/example-rules.md.jinja +0 -0
- {mapify_cli-3.15.0 → mapify_cli-3.15.1}/src/mapify_cli/templates_src/skills/map-learn/templates/rules-unconditional.md.jinja +0 -0
- {mapify_cli-3.15.0 → mapify_cli-3.15.1}/src/mapify_cli/templates_src/skills/map-learn/templates/rules-with-paths.md.jinja +0 -0
- {mapify_cli-3.15.0 → mapify_cli-3.15.1}/src/mapify_cli/templates_src/skills/map-memory-now/SKILL.md.jinja +0 -0
- {mapify_cli-3.15.0 → mapify_cli-3.15.1}/src/mapify_cli/templates_src/skills/map-plan/SKILL.md.jinja +0 -0
- {mapify_cli-3.15.0 → mapify_cli-3.15.1}/src/mapify_cli/templates_src/skills/map-plan/plan-reference.md.jinja +0 -0
- {mapify_cli-3.15.0 → mapify_cli-3.15.1}/src/mapify_cli/templates_src/skills/map-release/SKILL.md.jinja +0 -0
- {mapify_cli-3.15.0 → mapify_cli-3.15.1}/src/mapify_cli/templates_src/skills/map-resume/SKILL.md.jinja +0 -0
- {mapify_cli-3.15.0 → mapify_cli-3.15.1}/src/mapify_cli/templates_src/skills/map-resume/resume-reference.md.jinja +0 -0
- {mapify_cli-3.15.0 → mapify_cli-3.15.1}/src/mapify_cli/templates_src/skills/map-review/SKILL.md.jinja +0 -0
- {mapify_cli-3.15.0 → mapify_cli-3.15.1}/src/mapify_cli/templates_src/skills/map-review/review-reference.md.jinja +0 -0
- {mapify_cli-3.15.0 → mapify_cli-3.15.1}/src/mapify_cli/templates_src/skills/map-skill-eval/SKILL.md.jinja +0 -0
- {mapify_cli-3.15.0 → mapify_cli-3.15.1}/src/mapify_cli/templates_src/skills/map-so-search/SKILL.md.jinja +0 -0
- {mapify_cli-3.15.0 → mapify_cli-3.15.1}/src/mapify_cli/templates_src/skills/map-so-search/scripts/sofa_search.py.jinja +0 -0
- {mapify_cli-3.15.0 → mapify_cli-3.15.1}/src/mapify_cli/templates_src/skills/map-state/SKILL.md.jinja +0 -0
- {mapify_cli-3.15.0 → mapify_cli-3.15.1}/src/mapify_cli/templates_src/skills/map-state/scripts/check-complete.sh.jinja +0 -0
- {mapify_cli-3.15.0 → mapify_cli-3.15.1}/src/mapify_cli/templates_src/skills/map-state/scripts/get-plan-path.sh.jinja +0 -0
- {mapify_cli-3.15.0 → mapify_cli-3.15.1}/src/mapify_cli/templates_src/skills/map-state/scripts/init-session.sh.jinja +0 -0
- {mapify_cli-3.15.0 → mapify_cli-3.15.1}/src/mapify_cli/templates_src/skills/map-state/scripts/show-focus.sh.jinja +0 -0
- {mapify_cli-3.15.0 → mapify_cli-3.15.1}/src/mapify_cli/templates_src/skills/map-state/templates/findings.md.jinja +0 -0
- {mapify_cli-3.15.0 → mapify_cli-3.15.1}/src/mapify_cli/templates_src/skills/map-state/templates/iteration_history.md.jinja +0 -0
- {mapify_cli-3.15.0 → mapify_cli-3.15.1}/src/mapify_cli/templates_src/skills/map-state/templates/progress.md.jinja +0 -0
- {mapify_cli-3.15.0 → mapify_cli-3.15.1}/src/mapify_cli/templates_src/skills/map-state/templates/task_plan.md.jinja +0 -0
- {mapify_cli-3.15.0 → mapify_cli-3.15.1}/src/mapify_cli/templates_src/skills/map-tdd/SKILL.md.jinja +0 -0
- {mapify_cli-3.15.0 → mapify_cli-3.15.1}/src/mapify_cli/templates_src/skills/map-tokenreport/SKILL.md.jinja +0 -0
- {mapify_cli-3.15.0 → mapify_cli-3.15.1}/src/mapify_cli/templates_src/skills/skill-rules.json.jinja +0 -0
- {mapify_cli-3.15.0 → mapify_cli-3.15.1}/src/mapify_cli/templates_src/workflow-rules.json.jinja +0 -0
- {mapify_cli-3.15.0 → mapify_cli-3.15.1}/src/mapify_cli/token_budget.py +0 -0
- {mapify_cli-3.15.0 → mapify_cli-3.15.1}/src/mapify_cli/tools/__init__.py +0 -0
- {mapify_cli-3.15.0 → mapify_cli-3.15.1}/src/mapify_cli/tools/validate_dependencies.py +0 -0
- {mapify_cli-3.15.0 → mapify_cli-3.15.1}/src/mapify_cli/verification_recorder.py +0 -0
- {mapify_cli-3.15.0 → mapify_cli-3.15.1}/src/mapify_cli/workflow_finalizer.py +0 -0
- {mapify_cli-3.15.0 → mapify_cli-3.15.1}/src/mapify_cli/workflow_logger.py +0 -0
- {mapify_cli-3.15.0 → mapify_cli-3.15.1}/src/mapify_cli/workflow_state.py +0 -0
- {mapify_cli-3.15.0 → mapify_cli-3.15.1}/tests/__init__.py +0 -0
- {mapify_cli-3.15.0 → mapify_cli-3.15.1}/tests/conftest.py +0 -0
- {mapify_cli-3.15.0 → mapify_cli-3.15.1}/tests/fixtures/claude/escalation-matrix.md +0 -0
- {mapify_cli-3.15.0 → mapify_cli-3.15.1}/tests/fixtures/codex/config.toml +0 -0
- {mapify_cli-3.15.0 → mapify_cli-3.15.1}/tests/hooks/test_detect_clarification_triggers.py +0 -0
- {mapify_cli-3.15.0 → mapify_cli-3.15.1}/tests/hooks/test_end_of_turn.py +0 -0
- {mapify_cli-3.15.0 → mapify_cli-3.15.1}/tests/hooks/test_hook_inventory_smoke.py +0 -0
- {mapify_cli-3.15.0 → mapify_cli-3.15.1}/tests/hooks/test_safety_guardrails.py +0 -0
- {mapify_cli-3.15.0 → mapify_cli-3.15.1}/tests/integration/__init__.py +0 -0
- {mapify_cli-3.15.0 → mapify_cli-3.15.1}/tests/integration/fixtures/blueprint.json +0 -0
- {mapify_cli-3.15.0 → mapify_cli-3.15.1}/tests/integration/fixtures/code_review.md +0 -0
- {mapify_cli-3.15.0 → mapify_cli-3.15.1}/tests/integration/fixtures/plan_handoff.json +0 -0
- {mapify_cli-3.15.0 → mapify_cli-3.15.1}/tests/integration/fixtures/spec.md +0 -0
- {mapify_cli-3.15.0 → mapify_cli-3.15.1}/tests/integration/fixtures/step_state_initialized.json +0 -0
- {mapify_cli-3.15.0 → mapify_cli-3.15.1}/tests/integration/fixtures/step_state_plan_complete.json +0 -0
- {mapify_cli-3.15.0 → mapify_cli-3.15.1}/tests/integration/fixtures/task_plan.md +0 -0
- {mapify_cli-3.15.0 → mapify_cli-3.15.1}/tests/integration/fixtures/verification_summary.md +0 -0
- {mapify_cli-3.15.0 → mapify_cli-3.15.1}/tests/integration/test_e2e_artifact_contracts.py +0 -0
- {mapify_cli-3.15.0 → mapify_cli-3.15.1}/tests/integration/test_e2e_claude_sdk.py +0 -0
- {mapify_cli-3.15.0 → mapify_cli-3.15.1}/tests/skills_eval/fixtures/README.md +0 -0
- {mapify_cli-3.15.0 → mapify_cli-3.15.1}/tests/skills_eval/fixtures/map_check_optimize_eval_set.json +0 -0
- {mapify_cli-3.15.0 → mapify_cli-3.15.1}/tests/skills_eval/fixtures/map_debug_eval_set.json +0 -0
- {mapify_cli-3.15.0 → mapify_cli-3.15.1}/tests/skills_eval/fixtures/map_debug_optimize_eval_set.json +0 -0
- {mapify_cli-3.15.0 → mapify_cli-3.15.1}/tests/skills_eval/fixtures/map_efficient_optimize_eval_set.json +0 -0
- {mapify_cli-3.15.0 → mapify_cli-3.15.1}/tests/skills_eval/fixtures/map_explain_optimize_eval_set.json +0 -0
- {mapify_cli-3.15.0 → mapify_cli-3.15.1}/tests/skills_eval/fixtures/map_fast_optimize_eval_set.json +0 -0
- {mapify_cli-3.15.0 → mapify_cli-3.15.1}/tests/skills_eval/fixtures/map_learn_optimize_eval_set.json +0 -0
- {mapify_cli-3.15.0 → mapify_cli-3.15.1}/tests/skills_eval/fixtures/map_memory_now_optimize_eval_set.json +0 -0
- {mapify_cli-3.15.0 → mapify_cli-3.15.1}/tests/skills_eval/fixtures/map_plan_optimize_eval_set.json +0 -0
- {mapify_cli-3.15.0 → mapify_cli-3.15.1}/tests/skills_eval/fixtures/map_release_optimize_eval_set.json +0 -0
- {mapify_cli-3.15.0 → mapify_cli-3.15.1}/tests/skills_eval/fixtures/map_resume_optimize_eval_set.json +0 -0
- {mapify_cli-3.15.0 → mapify_cli-3.15.1}/tests/skills_eval/fixtures/map_review_optimize_eval_set.json +0 -0
- {mapify_cli-3.15.0 → mapify_cli-3.15.1}/tests/skills_eval/fixtures/map_skill_eval_optimize_eval_set.json +0 -0
- {mapify_cli-3.15.0 → mapify_cli-3.15.1}/tests/skills_eval/fixtures/map_state_optimize_eval_set.json +0 -0
- {mapify_cli-3.15.0 → mapify_cli-3.15.1}/tests/skills_eval/fixtures/map_task_optimize_eval_set.json +0 -0
- {mapify_cli-3.15.0 → mapify_cli-3.15.1}/tests/skills_eval/fixtures/map_tdd_optimize_eval_set.json +0 -0
- {mapify_cli-3.15.0 → mapify_cli-3.15.1}/tests/skills_eval/fixtures/map_tokenreport_optimize_eval_set.json +0 -0
- {mapify_cli-3.15.0 → mapify_cli-3.15.1}/tests/skills_eval/fixtures/whole_skill/map_task_blocker/manifest.json +0 -0
- {mapify_cli-3.15.0 → mapify_cli-3.15.1}/tests/skills_eval/fixtures/whole_skill/map_task_blocker/repo/.map/main/blueprint.json +0 -0
- {mapify_cli-3.15.0 → mapify_cli-3.15.1}/tests/skills_eval/fixtures/whole_skill/map_task_blocker/repo/.map/main/task_plan_main.md +0 -0
- {mapify_cli-3.15.0 → mapify_cli-3.15.1}/tests/skills_eval/fixtures/whole_skill/map_task_blocker/repo/src/__init__.py +0 -0
- {mapify_cli-3.15.0 → mapify_cli-3.15.1}/tests/skills_eval/fixtures/whole_skill/map_task_blocker/repo/src/utils.py +0 -0
- {mapify_cli-3.15.0 → mapify_cli-3.15.1}/tests/skills_eval/fixtures/whole_skill/map_task_blocker/repo/tests/test_compute.py +0 -0
- {mapify_cli-3.15.0 → mapify_cli-3.15.1}/tests/skills_eval/fixtures/whole_skill/map_task_calc/hidden/test_calc_full.py +0 -0
- {mapify_cli-3.15.0 → mapify_cli-3.15.1}/tests/skills_eval/fixtures/whole_skill/map_task_calc/manifest.json +0 -0
- {mapify_cli-3.15.0 → mapify_cli-3.15.1}/tests/skills_eval/fixtures/whole_skill/map_task_calc/repo/.map/main/blueprint.json +0 -0
- {mapify_cli-3.15.0 → mapify_cli-3.15.1}/tests/skills_eval/fixtures/whole_skill/map_task_calc/repo/.map/main/task_plan_main.md +0 -0
- {mapify_cli-3.15.0 → mapify_cli-3.15.1}/tests/skills_eval/fixtures/whole_skill/map_task_calc/repo/src/__init__.py +0 -0
- {mapify_cli-3.15.0 → mapify_cli-3.15.1}/tests/skills_eval/fixtures/whole_skill/map_task_calc/repo/src/calc.py +0 -0
- {mapify_cli-3.15.0 → mapify_cli-3.15.1}/tests/skills_eval/fixtures/whole_skill/map_task_calc/repo/tests/test_calc_basic.py +0 -0
- {mapify_cli-3.15.0 → mapify_cli-3.15.1}/tests/skills_eval/fixtures/whole_skill/map_task_calc_vague/hidden/test_calc_full.py +0 -0
- {mapify_cli-3.15.0 → mapify_cli-3.15.1}/tests/skills_eval/fixtures/whole_skill/map_task_calc_vague/manifest.json +0 -0
- {mapify_cli-3.15.0 → mapify_cli-3.15.1}/tests/skills_eval/fixtures/whole_skill/map_task_calc_vague/repo/.map/main/blueprint.json +0 -0
- {mapify_cli-3.15.0 → mapify_cli-3.15.1}/tests/skills_eval/fixtures/whole_skill/map_task_calc_vague/repo/.map/main/task_plan_main.md +0 -0
- {mapify_cli-3.15.0 → mapify_cli-3.15.1}/tests/skills_eval/fixtures/whole_skill/map_task_calc_vague/repo/src/__init__.py +0 -0
- {mapify_cli-3.15.0 → mapify_cli-3.15.1}/tests/skills_eval/fixtures/whole_skill/map_task_calc_vague/repo/src/calc.py +0 -0
- {mapify_cli-3.15.0 → mapify_cli-3.15.1}/tests/skills_eval/fixtures/whole_skill/map_task_calc_vague/repo/tests/test_calc_basic.py +0 -0
- {mapify_cli-3.15.0 → mapify_cli-3.15.1}/tests/skills_eval/fixtures/whole_skill/map_task_scope_pressure/manifest.json +0 -0
- {mapify_cli-3.15.0 → mapify_cli-3.15.1}/tests/skills_eval/fixtures/whole_skill/map_task_scope_pressure/repo/.map/main/blueprint.json +0 -0
- {mapify_cli-3.15.0 → mapify_cli-3.15.1}/tests/skills_eval/fixtures/whole_skill/map_task_scope_pressure/repo/.map/main/task_plan_main.md +0 -0
- {mapify_cli-3.15.0 → mapify_cli-3.15.1}/tests/skills_eval/fixtures/whole_skill/map_task_scope_pressure/repo/src/__init__.py +0 -0
- {mapify_cli-3.15.0 → mapify_cli-3.15.1}/tests/skills_eval/fixtures/whole_skill/map_task_scope_pressure/repo/src/config.py +0 -0
- {mapify_cli-3.15.0 → mapify_cli-3.15.1}/tests/skills_eval/fixtures/whole_skill/map_task_scope_pressure/repo/src/utils.py +0 -0
- {mapify_cli-3.15.0 → mapify_cli-3.15.1}/tests/skills_eval/fixtures/whole_skill/map_task_scope_pressure/repo/tests/test_price.py +0 -0
- {mapify_cli-3.15.0 → mapify_cli-3.15.1}/tests/skills_eval/fixtures/whole_skill/map_task_scope_trap/manifest.json +0 -0
- {mapify_cli-3.15.0 → mapify_cli-3.15.1}/tests/skills_eval/fixtures/whole_skill/map_task_scope_trap/repo/.map/main/blueprint.json +0 -0
- {mapify_cli-3.15.0 → mapify_cli-3.15.1}/tests/skills_eval/fixtures/whole_skill/map_task_scope_trap/repo/.map/main/task_plan_main.md +0 -0
- {mapify_cli-3.15.0 → mapify_cli-3.15.1}/tests/skills_eval/fixtures/whole_skill/map_task_scope_trap/repo/src/__init__.py +0 -0
- {mapify_cli-3.15.0 → mapify_cli-3.15.1}/tests/skills_eval/fixtures/whole_skill/map_task_scope_trap/repo/src/config.py +0 -0
- {mapify_cli-3.15.0 → mapify_cli-3.15.1}/tests/skills_eval/fixtures/whole_skill/map_task_scope_trap/repo/src/utils.py +0 -0
- {mapify_cli-3.15.0 → mapify_cli-3.15.1}/tests/skills_eval/fixtures/whole_skill/map_task_scope_trap/repo/tests/test_utils.py +0 -0
- {mapify_cli-3.15.0 → mapify_cli-3.15.1}/tests/skills_eval/fixtures/whole_skill/map_task_semver/manifest.json +0 -0
- {mapify_cli-3.15.0 → mapify_cli-3.15.1}/tests/skills_eval/fixtures/whole_skill/map_task_semver/repo/.map/main/blueprint.json +0 -0
- {mapify_cli-3.15.0 → mapify_cli-3.15.1}/tests/skills_eval/fixtures/whole_skill/map_task_semver/repo/.map/main/task_plan_main.md +0 -0
- {mapify_cli-3.15.0 → mapify_cli-3.15.1}/tests/skills_eval/fixtures/whole_skill/map_task_semver/repo/src/__init__.py +0 -0
- {mapify_cli-3.15.0 → mapify_cli-3.15.1}/tests/skills_eval/fixtures/whole_skill/map_task_semver/repo/src/semver.py +0 -0
- {mapify_cli-3.15.0 → mapify_cli-3.15.1}/tests/skills_eval/fixtures/whole_skill/map_task_semver/repo/tests/test_semver.py +0 -0
- {mapify_cli-3.15.0 → mapify_cli-3.15.1}/tests/skills_eval/fixtures/whole_skill/map_task_semver_vague/hidden/test_semver_full.py +0 -0
- {mapify_cli-3.15.0 → mapify_cli-3.15.1}/tests/skills_eval/fixtures/whole_skill/map_task_semver_vague/manifest.json +0 -0
- {mapify_cli-3.15.0 → mapify_cli-3.15.1}/tests/skills_eval/fixtures/whole_skill/map_task_semver_vague/repo/.map/main/blueprint.json +0 -0
- {mapify_cli-3.15.0 → mapify_cli-3.15.1}/tests/skills_eval/fixtures/whole_skill/map_task_semver_vague/repo/.map/main/task_plan_main.md +0 -0
- {mapify_cli-3.15.0 → mapify_cli-3.15.1}/tests/skills_eval/fixtures/whole_skill/map_task_semver_vague/repo/src/__init__.py +0 -0
- {mapify_cli-3.15.0 → mapify_cli-3.15.1}/tests/skills_eval/fixtures/whole_skill/map_task_semver_vague/repo/src/semver.py +0 -0
- {mapify_cli-3.15.0 → mapify_cli-3.15.1}/tests/skills_eval/fixtures/whole_skill/map_task_semver_vague/repo/tests/test_semver_basic.py +0 -0
- {mapify_cli-3.15.0 → mapify_cli-3.15.1}/tests/skills_eval/fixtures/whole_skill/map_task_semver_weakgate/hidden/test_semver_full.py +0 -0
- {mapify_cli-3.15.0 → mapify_cli-3.15.1}/tests/skills_eval/fixtures/whole_skill/map_task_semver_weakgate/manifest.json +0 -0
- {mapify_cli-3.15.0 → mapify_cli-3.15.1}/tests/skills_eval/fixtures/whole_skill/map_task_semver_weakgate/repo/.map/main/blueprint.json +0 -0
- {mapify_cli-3.15.0 → mapify_cli-3.15.1}/tests/skills_eval/fixtures/whole_skill/map_task_semver_weakgate/repo/.map/main/task_plan_main.md +0 -0
- {mapify_cli-3.15.0 → mapify_cli-3.15.1}/tests/skills_eval/fixtures/whole_skill/map_task_semver_weakgate/repo/src/__init__.py +0 -0
- {mapify_cli-3.15.0 → mapify_cli-3.15.1}/tests/skills_eval/fixtures/whole_skill/map_task_semver_weakgate/repo/src/semver.py +0 -0
- {mapify_cli-3.15.0 → mapify_cli-3.15.1}/tests/skills_eval/fixtures/whole_skill/map_task_semver_weakgate/repo/tests/test_semver_basic.py +0 -0
- {mapify_cli-3.15.0 → mapify_cli-3.15.1}/tests/skills_eval/whole_skill/spike_runner.py +0 -0
- {mapify_cli-3.15.0 → mapify_cli-3.15.1}/tests/test_agent_cli_correctness.py +0 -0
- {mapify_cli-3.15.0 → mapify_cli-3.15.1}/tests/test_agent_frontmatter.py +0 -0
- {mapify_cli-3.15.0 → mapify_cli-3.15.1}/tests/test_artifact_schemas.py +0 -0
- {mapify_cli-3.15.0 → mapify_cli-3.15.1}/tests/test_bump_version.py +0 -0
- {mapify_cli-3.15.0 → mapify_cli-3.15.1}/tests/test_decomposition.py +0 -0
- {mapify_cli-3.15.0 → mapify_cli-3.15.1}/tests/test_dependency_graph.py +0 -0
- {mapify_cli-3.15.0 → mapify_cli-3.15.1}/tests/test_diagnostics.py +0 -0
- {mapify_cli-3.15.0 → mapify_cli-3.15.1}/tests/test_digest_schema.py +0 -0
- {mapify_cli-3.15.0 → mapify_cli-3.15.1}/tests/test_file_copier.py +0 -0
- {mapify_cli-3.15.0 → mapify_cli-3.15.1}/tests/test_hook_patterns.py +0 -0
- {mapify_cli-3.15.0 → mapify_cli-3.15.1}/tests/test_init_import_graph.py +0 -0
- {mapify_cli-3.15.0 → mapify_cli-3.15.1}/tests/test_intent_detector.py +0 -0
- {mapify_cli-3.15.0 → mapify_cli-3.15.1}/tests/test_inv1_no_anthropic_optimize.py +0 -0
- {mapify_cli-3.15.0 → mapify_cli-3.15.1}/tests/test_jinja2_dep.py +0 -0
- {mapify_cli-3.15.0 → mapify_cli-3.15.1}/tests/test_locking.py +0 -0
- {mapify_cli-3.15.0 → mapify_cli-3.15.1}/tests/test_managed_file_copier.py +0 -0
- {mapify_cli-3.15.0 → mapify_cli-3.15.1}/tests/test_map_orchestrator.py +0 -0
- {mapify_cli-3.15.0 → mapify_cli-3.15.1}/tests/test_map_step_runner.py +0 -0
- {mapify_cli-3.15.0 → mapify_cli-3.15.1}/tests/test_map_token_meter.py +0 -0
- {mapify_cli-3.15.0 → mapify_cli-3.15.1}/tests/test_map_utils_sanitize.py +0 -0
- {mapify_cli-3.15.0 → mapify_cli-3.15.1}/tests/test_mapify_cli.py +0 -0
- {mapify_cli-3.15.0 → mapify_cli-3.15.1}/tests/test_memory_capture.py +0 -0
- {mapify_cli-3.15.0 → mapify_cli-3.15.1}/tests/test_memory_finalize.py +0 -0
- {mapify_cli-3.15.0 → mapify_cli-3.15.1}/tests/test_memory_integration.py +0 -0
- {mapify_cli-3.15.0 → mapify_cli-3.15.1}/tests/test_memory_recall.py +0 -0
- {mapify_cli-3.15.0 → mapify_cli-3.15.1}/tests/test_memory_review_fixes.py +0 -0
- {mapify_cli-3.15.0 → mapify_cli-3.15.1}/tests/test_post_compact_context.py +0 -0
- {mapify_cli-3.15.0 → mapify_cli-3.15.1}/tests/test_ralph_hooks.py +0 -0
- {mapify_cli-3.15.0 → mapify_cli-3.15.1}/tests/test_ralph_state.py +0 -0
- {mapify_cli-3.15.0 → mapify_cli-3.15.1}/tests/test_repo_insight.py +0 -0
- {mapify_cli-3.15.0 → mapify_cli-3.15.1}/tests/test_schemas.py +0 -0
- {mapify_cli-3.15.0 → mapify_cli-3.15.1}/tests/test_skill_ir.py +0 -0
- {mapify_cli-3.15.0 → mapify_cli-3.15.1}/tests/test_skills_consistency.py +0 -0
- {mapify_cli-3.15.0 → mapify_cli-3.15.1}/tests/test_skills_eval_aggregator.py +0 -0
- {mapify_cli-3.15.0 → mapify_cli-3.15.1}/tests/test_skills_eval_apply.py +0 -0
- {mapify_cli-3.15.0 → mapify_cli-3.15.1}/tests/test_skills_eval_cli_optimize.py +0 -0
- {mapify_cli-3.15.0 → mapify_cli-3.15.1}/tests/test_skills_eval_dispatcher_env.py +0 -0
- {mapify_cli-3.15.0 → mapify_cli-3.15.1}/tests/test_skills_eval_dispatcher_timeout.py +0 -0
- {mapify_cli-3.15.0 → mapify_cli-3.15.1}/tests/test_skills_eval_fixtures.py +0 -0
- {mapify_cli-3.15.0 → mapify_cli-3.15.1}/tests/test_skills_eval_optimizer.py +0 -0
- {mapify_cli-3.15.0 → mapify_cli-3.15.1}/tests/test_skills_eval_optimizer_isolation.py +0 -0
- {mapify_cli-3.15.0 → mapify_cli-3.15.1}/tests/test_skills_eval_proposer.py +0 -0
- {mapify_cli-3.15.0 → mapify_cli-3.15.1}/tests/test_skills_eval_runner.py +0 -0
- {mapify_cli-3.15.0 → mapify_cli-3.15.1}/tests/test_skills_eval_schema.py +0 -0
- {mapify_cli-3.15.0 → mapify_cli-3.15.1}/tests/test_skills_eval_viewer.py +0 -0
- {mapify_cli-3.15.0 → mapify_cli-3.15.1}/tests/test_sofa_client.py +0 -0
- {mapify_cli-3.15.0 → mapify_cli-3.15.1}/tests/test_sofa_search.py +0 -0
- {mapify_cli-3.15.0 → mapify_cli-3.15.1}/tests/test_template_render.py +0 -0
- {mapify_cli-3.15.0 → mapify_cli-3.15.1}/tests/test_token_budget.py +0 -0
- {mapify_cli-3.15.0 → mapify_cli-3.15.1}/tests/test_validate_dependencies.py +0 -0
- {mapify_cli-3.15.0 → mapify_cli-3.15.1}/tests/test_validate_spec_citations.py +0 -0
- {mapify_cli-3.15.0 → mapify_cli-3.15.1}/tests/test_verification_recorder.py +0 -0
- {mapify_cli-3.15.0 → mapify_cli-3.15.1}/tests/test_workflow_context_injector.py +0 -0
- {mapify_cli-3.15.0 → mapify_cli-3.15.1}/tests/test_workflow_finalizer.py +0 -0
- {mapify_cli-3.15.0 → mapify_cli-3.15.1}/tests/test_workflow_gate.py +0 -0
- {mapify_cli-3.15.0 → mapify_cli-3.15.1}/tests/test_workflow_logger.py +0 -0
- {mapify_cli-3.15.0 → mapify_cli-3.15.1}/tests/test_workflow_state.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: mapify-cli
|
|
3
|
-
Version: 3.15.
|
|
3
|
+
Version: 3.15.1
|
|
4
4
|
Summary: MAP Framework installer - Modular Agentic Planner for Claude Code
|
|
5
5
|
Project-URL: Homepage, https://github.com/azalio/map-framework
|
|
6
6
|
Project-URL: Repository, https://github.com/azalio/map-framework.git
|
{mapify_cli-3.15.0 → mapify_cli-3.15.1}/src/mapify_cli/templates/codex/hooks/workflow-gate.py
RENAMED
|
@@ -43,11 +43,12 @@ EDITING_PHASES = {"ACTOR", "APPLY", "TEST_WRITER"}
|
|
|
43
43
|
|
|
44
44
|
# Docs-only file suffixes / path prefixes that are permitted during
|
|
45
45
|
# RESEARCH (2.2). A docs-only subtask (runbook update, README tweak,
|
|
46
|
-
# CHANGELOG line) doesn't
|
|
47
|
-
# but the unconditional RESEARCH gate forced
|
|
48
|
-
# empty research stub before they could edit a .md
|
|
49
|
-
# obvious docs surfaces during RESEARCH preserves the
|
|
50
|
-
# code edits before research) without the friction
|
|
46
|
+
# CHANGELOG line) usually doesn't need delegated research-agent
|
|
47
|
+
# investigation, but the unconditional RESEARCH edit gate forced
|
|
48
|
+
# operators to save an empty research stub before they could edit a .md
|
|
49
|
+
# file. Allowing obvious docs surfaces during RESEARCH preserves the
|
|
50
|
+
# intent (block code edits before research) without the friction; the
|
|
51
|
+
# state machine still requires a persisted artifact before Actor closes.
|
|
51
52
|
DOCS_ONLY_EXTENSIONS = {".md", ".mdx", ".rst", ".txt", ".adoc"}
|
|
52
53
|
DOCS_ONLY_PATH_PREFIXES = ("docs/", "doc/", "documentation/", "CHANGELOG", "RELEASING", "README")
|
|
53
54
|
|
|
@@ -120,12 +121,12 @@ def extract_target_file_paths(tool_call: dict) -> list[str]:
|
|
|
120
121
|
def is_docs_only_path(file_path: str) -> bool:
|
|
121
122
|
"""Return True if path is documentation that may be edited during RESEARCH.
|
|
122
123
|
|
|
123
|
-
RESEARCH (2.2) blocks Edit by default —
|
|
124
|
-
before code mutation. Docs surfaces (README,
|
|
125
|
-
don't
|
|
126
|
-
forced operators to save an empty
|
|
127
|
-
files during RESEARCH preserves the
|
|
128
|
-
research) without the friction.
|
|
124
|
+
RESEARCH (2.2) blocks Edit by default — a persisted research
|
|
125
|
+
artifact must exist before code mutation. Docs surfaces (README,
|
|
126
|
+
runbook, CHANGELOG) usually don't need delegated research-agent, so
|
|
127
|
+
the unconditional edit block forced operators to save an empty
|
|
128
|
+
research stub. Allowing docs files during RESEARCH preserves the
|
|
129
|
+
intent (no code edits before research) without the friction.
|
|
129
130
|
"""
|
|
130
131
|
if not isinstance(file_path, str) or not file_path.strip():
|
|
131
132
|
return False
|
{mapify_cli-3.15.0 → mapify_cli-3.15.1}/src/mapify_cli/templates/codex/skills/map-efficient/SKILL.md
RENAMED
|
@@ -159,9 +159,13 @@ fi
|
|
|
159
159
|
|
|
160
160
|
### RESEARCH
|
|
161
161
|
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
162
|
+
Persist a RESEARCH artifact for every non-no-op subtask before Actor. Use
|
|
163
|
+
`researcher` when independent exploration is useful: cold-start repository
|
|
164
|
+
exploration, 3+ existing files, high risk, unclear locations, or failed direct
|
|
165
|
+
search. Otherwise research in the current session and save concise strict-JSON
|
|
166
|
+
findings. If the subtask truly needs no Actor/Monitor, use
|
|
167
|
+
`mark_subtask_complete --reason` instead of closing RESEARCH. Validate the
|
|
168
|
+
research contract, then close RESEARCH before Actor work:
|
|
165
169
|
|
|
166
170
|
```bash
|
|
167
171
|
SUBTASK_ID=$(jq -r '.current_subtask_id' ".map/${BRANCH}/step_state.json")
|
{mapify_cli-3.15.0 → mapify_cli-3.15.1}/src/mapify_cli/templates/hooks/post-compact-context.py
RENAMED
|
@@ -24,7 +24,7 @@ REPRIME_LIMIT = 1200
|
|
|
24
24
|
STEP_REQUIRED_ACTIONS = {
|
|
25
25
|
"1.55": "Approve plan before execution state is initialized.",
|
|
26
26
|
"1.56": "Choose execution mode before implementation.",
|
|
27
|
-
"2.2": "
|
|
27
|
+
"2.2": "Persist a RESEARCH artifact before Actor; delegate only when broad discovery is required.",
|
|
28
28
|
"2.3": "Implement only the current subtask, then run Monitor.",
|
|
29
29
|
"2.4": "Run Monitor and treat valid=false as a hard stop.",
|
|
30
30
|
}
|
{mapify_cli-3.15.0 → mapify_cli-3.15.1}/src/mapify_cli/templates/hooks/workflow-context-injector.py
RENAMED
|
@@ -344,7 +344,7 @@ def required_action_for_step(step_id: str, step_phase: str) -> str | None:
|
|
|
344
344
|
if step_id == "1.56":
|
|
345
345
|
return "Choose mode (set_execution_mode step_by_step|batch)"
|
|
346
346
|
if step_id == "2.2":
|
|
347
|
-
return "
|
|
347
|
+
return "Persist RESEARCH artifact (research-agent only for broad/high-risk discovery)"
|
|
348
348
|
if step_id == "2.3":
|
|
349
349
|
return "Run Actor"
|
|
350
350
|
if step_id == "2.4":
|
|
@@ -43,11 +43,12 @@ EDITING_PHASES = {"ACTOR", "APPLY", "TEST_WRITER"}
|
|
|
43
43
|
|
|
44
44
|
# Docs-only file suffixes / path prefixes that are permitted during
|
|
45
45
|
# RESEARCH (2.2). A docs-only subtask (runbook update, README tweak,
|
|
46
|
-
# CHANGELOG line) doesn't
|
|
47
|
-
# but the unconditional RESEARCH gate forced
|
|
48
|
-
# empty research stub before they could edit a .md
|
|
49
|
-
# obvious docs surfaces during RESEARCH preserves the
|
|
50
|
-
# code edits before research) without the friction
|
|
46
|
+
# CHANGELOG line) usually doesn't need delegated research-agent
|
|
47
|
+
# investigation, but the unconditional RESEARCH edit gate forced
|
|
48
|
+
# operators to save an empty research stub before they could edit a .md
|
|
49
|
+
# file. Allowing obvious docs surfaces during RESEARCH preserves the
|
|
50
|
+
# intent (block code edits before research) without the friction; the
|
|
51
|
+
# state machine still requires a persisted artifact before Actor closes.
|
|
51
52
|
DOCS_ONLY_EXTENSIONS = {".md", ".mdx", ".rst", ".txt", ".adoc"}
|
|
52
53
|
DOCS_ONLY_PATH_PREFIXES = ("docs/", "doc/", "documentation/", "CHANGELOG", "RELEASING", "README")
|
|
53
54
|
|
|
@@ -120,12 +121,12 @@ def extract_target_file_paths(tool_call: dict) -> list[str]:
|
|
|
120
121
|
def is_docs_only_path(file_path: str) -> bool:
|
|
121
122
|
"""Return True if path is documentation that may be edited during RESEARCH.
|
|
122
123
|
|
|
123
|
-
RESEARCH (2.2) blocks Edit by default —
|
|
124
|
-
before code mutation. Docs surfaces (README,
|
|
125
|
-
don't
|
|
126
|
-
forced operators to save an empty
|
|
127
|
-
files during RESEARCH preserves the
|
|
128
|
-
research) without the friction.
|
|
124
|
+
RESEARCH (2.2) blocks Edit by default — a persisted research
|
|
125
|
+
artifact must exist before code mutation. Docs surfaces (README,
|
|
126
|
+
runbook, CHANGELOG) usually don't need delegated research-agent, so
|
|
127
|
+
the unconditional edit block forced operators to save an empty
|
|
128
|
+
research stub. Allowing docs files during RESEARCH preserves the
|
|
129
|
+
intent (no code edits before research) without the friction.
|
|
129
130
|
"""
|
|
130
131
|
if not isinstance(file_path, str) or not file_path.strip():
|
|
131
132
|
return False
|
{mapify_cli-3.15.0 → mapify_cli-3.15.1}/src/mapify_cli/templates/map/scripts/map_orchestrator.py
RENAMED
|
@@ -41,7 +41,7 @@ STEP PHASES (10 total, 8 standard + 2 TDD):
|
|
|
41
41
|
1.55 REVIEW_PLAN - User review + explicit approval checkpoint
|
|
42
42
|
1.56 CHOOSE_MODE - Auto-skipped (always batch mode)
|
|
43
43
|
1.6 INIT_STATE - Create step_state.json (single source of truth)
|
|
44
|
-
2.2 RESEARCH - research
|
|
44
|
+
2.2 RESEARCH - persisted research artifact (mandatory; research-agent conditional)
|
|
45
45
|
2.25 TEST_WRITER - TDD: write tests from spec (TDD mode only)
|
|
46
46
|
2.26 TEST_FAIL_GATE - TDD: verify tests fail without impl (TDD mode only)
|
|
47
47
|
2.3 ACTOR - Actor agent implementation
|
|
@@ -771,11 +771,13 @@ def get_step_instruction(step_id: str, state: StepState) -> str:
|
|
|
771
771
|
"Single source of truth for workflow enforcement."
|
|
772
772
|
),
|
|
773
773
|
"2.2": (
|
|
774
|
-
"
|
|
775
|
-
"then persist findings via "
|
|
774
|
+
"Persist RESEARCH findings for the subtask via "
|
|
776
775
|
"`python3 .map/scripts/map_step_runner.py save_research <branch> "
|
|
777
|
-
"<subtask_id>`. MANDATORY for
|
|
778
|
-
"rejects when
|
|
776
|
+
"<subtask_id>`. The artifact is MANDATORY for every non-no-op "
|
|
777
|
+
"subtask (validate_step 2.2 rejects when none exists); "
|
|
778
|
+
"Task(subagent_type='research-agent') is conditional for broad, "
|
|
779
|
+
"high-risk, or unclear discovery. If the target file/symbol is "
|
|
780
|
+
"already known, save direct current-session findings instead. "
|
|
779
781
|
"Short-circuit hint: if this subtask is already done in a prior "
|
|
780
782
|
"PR or is a pure no-op, skip the cycle with "
|
|
781
783
|
"`python3 .map/scripts/map_orchestrator.py mark_subtask_complete "
|
|
@@ -1332,10 +1334,11 @@ def validate_step(
|
|
|
1332
1334
|
),
|
|
1333
1335
|
"recommendation": normalized_rec,
|
|
1334
1336
|
}
|
|
1335
|
-
# RESEARCH (2.2)
|
|
1336
|
-
#
|
|
1337
|
-
#
|
|
1338
|
-
#
|
|
1337
|
+
# RESEARCH (2.2) requires a persisted artifact for every non-no-op subtask.
|
|
1338
|
+
# The artifact can come from research-agent or direct current-session
|
|
1339
|
+
# findings; enforce the machine-checkable contract before Actor proceeds.
|
|
1340
|
+
# Without this check, "MANDATORY" was prompt-text only and malformed
|
|
1341
|
+
# markdown could be silently passed downstream.
|
|
1339
1342
|
if step_id == "2.2" and state.current_subtask_id:
|
|
1340
1343
|
try:
|
|
1341
1344
|
from map_step_runner import validate_research # pyright: ignore[reportMissingImports]
|
|
@@ -1356,9 +1359,13 @@ def validate_step(
|
|
|
1356
1359
|
"message": (
|
|
1357
1360
|
f"RESEARCH artifact invalid for {state.current_subtask_id}: "
|
|
1358
1361
|
f"{detail}. "
|
|
1362
|
+
"Use research-agent for broad/high-risk/unclear discovery, "
|
|
1363
|
+
"or save direct current-session findings when the target is known. "
|
|
1359
1364
|
f"Run: python3 .map/scripts/map_step_runner.py save_research "
|
|
1360
|
-
f"<branch> {state.current_subtask_id} (defaults kind=actor) "
|
|
1361
|
-
"then validate_research before validate_step 2.2."
|
|
1365
|
+
f"<branch> {state.current_subtask_id} (defaults kind=actor), "
|
|
1366
|
+
"then validate_research before validate_step 2.2. If this "
|
|
1367
|
+
"subtask needs no Actor/Monitor, use mark_subtask_complete "
|
|
1368
|
+
"--reason instead."
|
|
1362
1369
|
),
|
|
1363
1370
|
"research_report": research_report,
|
|
1364
1371
|
}
|
{mapify_cli-3.15.0 → mapify_cli-3.15.1}/src/mapify_cli/templates/references/step-state-schema.md
RENAMED
|
@@ -53,14 +53,13 @@ Branch name is sanitized (e.g., `feature/foo` → `feature-foo`).
|
|
|
53
53
|
|
|
54
54
|
## Step IDs (map-efficient)
|
|
55
55
|
|
|
56
|
-
Current step set (linear order; some
|
|
56
|
+
Current step set (linear order; some phases use conditional subagents):
|
|
57
57
|
|
|
58
58
|
1. `1.0` DECOMPOSE
|
|
59
59
|
2. `1.5` INIT_PLAN
|
|
60
60
|
3. `1.55` REVIEW_PLAN
|
|
61
61
|
4. `1.56` CHOOSE_MODE
|
|
62
62
|
5. `1.6` INIT_STATE
|
|
63
|
-
7. `2.2` RESEARCH (conditional)
|
|
63
|
+
7. `2.2` RESEARCH (artifact required; research-agent conditional)
|
|
64
64
|
9. `2.3` ACTOR
|
|
65
65
|
10. `2.4` MONITOR
|
|
66
|
-
|
{mapify_cli-3.15.0 → mapify_cli-3.15.1}/src/mapify_cli/templates/skills/map-efficient/SKILL.md
RENAMED
|
@@ -226,7 +226,7 @@ have ≥2 subtasks AND (b) the subtasks in that wave touch disjoint files
|
|
|
226
226
|
|
|
227
227
|
### No-op subtask short-circuit (before RESEARCH)
|
|
228
228
|
|
|
229
|
-
Some subtasks are already-done historically (rename/refactor landed in a prior PR), or
|
|
229
|
+
Some subtasks are already-done historically (rename/refactor landed in a prior PR), or truly do not need Actor/Monitor because the requested work is already satisfied by repo state. Skip them up-front to save tokens:
|
|
230
230
|
|
|
231
231
|
```bash
|
|
232
232
|
SUBTASK_ID=$(jq -r '.current_subtask_id' ".map/${BRANCH}/step_state.json")
|
|
@@ -236,14 +236,14 @@ python3 .map/scripts/map_orchestrator.py mark_subtask_complete "$SUBTASK_ID" \
|
|
|
236
236
|
|
|
237
237
|
This records a synthetic subtask_result with status="no-op", marks the phase COMPLETE, and advances the cursor (or closes the workflow if it was the last). Always pass `--reason` so audits know why the work was skipped. If unsure, run RESEARCH first and decide based on its findings.
|
|
238
238
|
|
|
239
|
-
### Phase: RESEARCH (2.2) - Required
|
|
239
|
+
### Phase: RESEARCH (2.2) - Required artifact; delegated agent conditional
|
|
240
240
|
|
|
241
|
-
|
|
241
|
+
Persist a RESEARCH artifact for every non-no-op subtask before Actor. `research-agent` is conditional: use it for cold-start repository exploration, 3+ existing files, high risk, unclear locations, or failed direct search. If the relevant file/symbol is already known, or the subtask is greenfield/new-file work, do narrow current-session research and save those concise strict-JSON findings via the canonical `save_research` API. Validate the machine-checkable research contract before closing the phase with the orchestrator.
|
|
242
242
|
|
|
243
243
|
```bash
|
|
244
244
|
SUBTASK_ID=$(jq -r '.current_subtask_id' ".map/${BRANCH}/step_state.json")
|
|
245
245
|
# RECOMMENDED: proactive refresh_blueprint_affected_files <branch>
|
|
246
|
-
# <sid> [--dry-run] BEFORE research
|
|
246
|
+
# <sid> [--dry-run] BEFORE delegated research (efficient-reference.md).
|
|
247
247
|
printf '%s' "$RESEARCH_FINDINGS" | \
|
|
248
248
|
python3 .map/scripts/map_step_runner.py save_research "$BRANCH" "$SUBTASK_ID"
|
|
249
249
|
# (defaults kind=actor; pass a 4th arg like 'monitor' or 'decomposer' to partition)
|
|
@@ -256,7 +256,7 @@ Later phases read with:
|
|
|
256
256
|
RESEARCH_FINDINGS=$(python3 .map/scripts/map_step_runner.py load_research "$BRANCH" "$SUBTASK_ID")
|
|
257
257
|
```
|
|
258
258
|
|
|
259
|
-
The artifact lands under `.map/<branch>/research/<subtask_id>__<kind>.md` and must satisfy the research
|
|
259
|
+
The artifact lands under `.map/<branch>/research/<subtask_id>__<kind>.md` and must satisfy the research evidence JSON contract (`status`, `confidence`, `search_stats`, and at most 5 `relevant_locations` with safe relative paths and line ranges). Use `load_research` to fill the `{research_findings}` placeholder in Actor and Monitor prompts below.
|
|
260
260
|
|
|
261
261
|
### Phase: TEST_WRITER (2.25) - TDD Mode Only
|
|
262
262
|
|
|
@@ -122,7 +122,7 @@ PHASE=$(echo "$NEXT_STEP" | jq -r '.phase')
|
|
|
122
122
|
|
|
123
123
|
Route to the appropriate executor based on `$PHASE`. All phases from `/map-efficient` work identically:
|
|
124
124
|
|
|
125
|
-
- **RESEARCH (2.2)** — Required
|
|
125
|
+
- **RESEARCH (2.2)** — Required persisted research artifact; research-agent is conditional for broad/high-risk discovery.
|
|
126
126
|
- **ACTOR (2.3)** — Implement the subtask
|
|
127
127
|
- **MONITOR (2.4)** — Required validation before the subtask can complete.
|
|
128
128
|
|
|
@@ -43,11 +43,12 @@ EDITING_PHASES = {"ACTOR", "APPLY", "TEST_WRITER"}
|
|
|
43
43
|
|
|
44
44
|
# Docs-only file suffixes / path prefixes that are permitted during
|
|
45
45
|
# RESEARCH (2.2). A docs-only subtask (runbook update, README tweak,
|
|
46
|
-
# CHANGELOG line) doesn't
|
|
47
|
-
# but the unconditional RESEARCH gate forced
|
|
48
|
-
# empty research stub before they could edit a .md
|
|
49
|
-
# obvious docs surfaces during RESEARCH preserves the
|
|
50
|
-
# code edits before research) without the friction
|
|
46
|
+
# CHANGELOG line) usually doesn't need delegated research-agent
|
|
47
|
+
# investigation, but the unconditional RESEARCH edit gate forced
|
|
48
|
+
# operators to save an empty research stub before they could edit a .md
|
|
49
|
+
# file. Allowing obvious docs surfaces during RESEARCH preserves the
|
|
50
|
+
# intent (block code edits before research) without the friction; the
|
|
51
|
+
# state machine still requires a persisted artifact before Actor closes.
|
|
51
52
|
DOCS_ONLY_EXTENSIONS = {".md", ".mdx", ".rst", ".txt", ".adoc"}
|
|
52
53
|
DOCS_ONLY_PATH_PREFIXES = ("docs/", "doc/", "documentation/", "CHANGELOG", "RELEASING", "README")
|
|
53
54
|
|
|
@@ -120,12 +121,12 @@ def extract_target_file_paths(tool_call: dict) -> list[str]:
|
|
|
120
121
|
def is_docs_only_path(file_path: str) -> bool:
|
|
121
122
|
"""Return True if path is documentation that may be edited during RESEARCH.
|
|
122
123
|
|
|
123
|
-
RESEARCH (2.2) blocks Edit by default —
|
|
124
|
-
before code mutation. Docs surfaces (README,
|
|
125
|
-
don't
|
|
126
|
-
forced operators to save an empty
|
|
127
|
-
files during RESEARCH preserves the
|
|
128
|
-
research) without the friction.
|
|
124
|
+
RESEARCH (2.2) blocks Edit by default — a persisted research
|
|
125
|
+
artifact must exist before code mutation. Docs surfaces (README,
|
|
126
|
+
runbook, CHANGELOG) usually don't need delegated research-agent, so
|
|
127
|
+
the unconditional edit block forced operators to save an empty
|
|
128
|
+
research stub. Allowing docs files during RESEARCH preserves the
|
|
129
|
+
intent (no code edits before research) without the friction.
|
|
129
130
|
"""
|
|
130
131
|
if not isinstance(file_path, str) or not file_path.strip():
|
|
131
132
|
return False
|
|
@@ -159,9 +159,13 @@ fi
|
|
|
159
159
|
|
|
160
160
|
### RESEARCH
|
|
161
161
|
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
162
|
+
Persist a RESEARCH artifact for every non-no-op subtask before Actor. Use
|
|
163
|
+
`researcher` when independent exploration is useful: cold-start repository
|
|
164
|
+
exploration, 3+ existing files, high risk, unclear locations, or failed direct
|
|
165
|
+
search. Otherwise research in the current session and save concise strict-JSON
|
|
166
|
+
findings. If the subtask truly needs no Actor/Monitor, use
|
|
167
|
+
`mark_subtask_complete --reason` instead of closing RESEARCH. Validate the
|
|
168
|
+
research contract, then close RESEARCH before Actor work:
|
|
165
169
|
|
|
166
170
|
```bash
|
|
167
171
|
SUBTASK_ID=$(jq -r '.current_subtask_id' ".map/${BRANCH}/step_state.json")
|
|
@@ -24,7 +24,7 @@ REPRIME_LIMIT = 1200
|
|
|
24
24
|
STEP_REQUIRED_ACTIONS = {
|
|
25
25
|
"1.55": "Approve plan before execution state is initialized.",
|
|
26
26
|
"1.56": "Choose execution mode before implementation.",
|
|
27
|
-
"2.2": "
|
|
27
|
+
"2.2": "Persist a RESEARCH artifact before Actor; delegate only when broad discovery is required.",
|
|
28
28
|
"2.3": "Implement only the current subtask, then run Monitor.",
|
|
29
29
|
"2.4": "Run Monitor and treat valid=false as a hard stop.",
|
|
30
30
|
}
|
|
@@ -344,7 +344,7 @@ def required_action_for_step(step_id: str, step_phase: str) -> str | None:
|
|
|
344
344
|
if step_id == "1.56":
|
|
345
345
|
return "Choose mode (set_execution_mode step_by_step|batch)"
|
|
346
346
|
if step_id == "2.2":
|
|
347
|
-
return "
|
|
347
|
+
return "Persist RESEARCH artifact (research-agent only for broad/high-risk discovery)"
|
|
348
348
|
if step_id == "2.3":
|
|
349
349
|
return "Run Actor"
|
|
350
350
|
if step_id == "2.4":
|
|
@@ -43,11 +43,12 @@ EDITING_PHASES = {"ACTOR", "APPLY", "TEST_WRITER"}
|
|
|
43
43
|
|
|
44
44
|
# Docs-only file suffixes / path prefixes that are permitted during
|
|
45
45
|
# RESEARCH (2.2). A docs-only subtask (runbook update, README tweak,
|
|
46
|
-
# CHANGELOG line) doesn't
|
|
47
|
-
# but the unconditional RESEARCH gate forced
|
|
48
|
-
# empty research stub before they could edit a .md
|
|
49
|
-
# obvious docs surfaces during RESEARCH preserves the
|
|
50
|
-
# code edits before research) without the friction
|
|
46
|
+
# CHANGELOG line) usually doesn't need delegated research-agent
|
|
47
|
+
# investigation, but the unconditional RESEARCH edit gate forced
|
|
48
|
+
# operators to save an empty research stub before they could edit a .md
|
|
49
|
+
# file. Allowing obvious docs surfaces during RESEARCH preserves the
|
|
50
|
+
# intent (block code edits before research) without the friction; the
|
|
51
|
+
# state machine still requires a persisted artifact before Actor closes.
|
|
51
52
|
DOCS_ONLY_EXTENSIONS = {".md", ".mdx", ".rst", ".txt", ".adoc"}
|
|
52
53
|
DOCS_ONLY_PATH_PREFIXES = ("docs/", "doc/", "documentation/", "CHANGELOG", "RELEASING", "README")
|
|
53
54
|
|
|
@@ -120,12 +121,12 @@ def extract_target_file_paths(tool_call: dict) -> list[str]:
|
|
|
120
121
|
def is_docs_only_path(file_path: str) -> bool:
|
|
121
122
|
"""Return True if path is documentation that may be edited during RESEARCH.
|
|
122
123
|
|
|
123
|
-
RESEARCH (2.2) blocks Edit by default —
|
|
124
|
-
before code mutation. Docs surfaces (README,
|
|
125
|
-
don't
|
|
126
|
-
forced operators to save an empty
|
|
127
|
-
files during RESEARCH preserves the
|
|
128
|
-
research) without the friction.
|
|
124
|
+
RESEARCH (2.2) blocks Edit by default — a persisted research
|
|
125
|
+
artifact must exist before code mutation. Docs surfaces (README,
|
|
126
|
+
runbook, CHANGELOG) usually don't need delegated research-agent, so
|
|
127
|
+
the unconditional edit block forced operators to save an empty
|
|
128
|
+
research stub. Allowing docs files during RESEARCH preserves the
|
|
129
|
+
intent (no code edits before research) without the friction.
|
|
129
130
|
"""
|
|
130
131
|
if not isinstance(file_path, str) or not file_path.strip():
|
|
131
132
|
return False
|
|
@@ -41,7 +41,7 @@ STEP PHASES (10 total, 8 standard + 2 TDD):
|
|
|
41
41
|
1.55 REVIEW_PLAN - User review + explicit approval checkpoint
|
|
42
42
|
1.56 CHOOSE_MODE - Auto-skipped (always batch mode)
|
|
43
43
|
1.6 INIT_STATE - Create step_state.json (single source of truth)
|
|
44
|
-
2.2 RESEARCH - research
|
|
44
|
+
2.2 RESEARCH - persisted research artifact (mandatory; research-agent conditional)
|
|
45
45
|
2.25 TEST_WRITER - TDD: write tests from spec (TDD mode only)
|
|
46
46
|
2.26 TEST_FAIL_GATE - TDD: verify tests fail without impl (TDD mode only)
|
|
47
47
|
2.3 ACTOR - Actor agent implementation
|
|
@@ -771,11 +771,13 @@ def get_step_instruction(step_id: str, state: StepState) -> str:
|
|
|
771
771
|
"Single source of truth for workflow enforcement."
|
|
772
772
|
),
|
|
773
773
|
"2.2": (
|
|
774
|
-
"
|
|
775
|
-
"then persist findings via "
|
|
774
|
+
"Persist RESEARCH findings for the subtask via "
|
|
776
775
|
"`python3 .map/scripts/map_step_runner.py save_research <branch> "
|
|
777
|
-
"<subtask_id>`. MANDATORY for
|
|
778
|
-
"rejects when
|
|
776
|
+
"<subtask_id>`. The artifact is MANDATORY for every non-no-op "
|
|
777
|
+
"subtask (validate_step 2.2 rejects when none exists); "
|
|
778
|
+
"Task(subagent_type='research-agent') is conditional for broad, "
|
|
779
|
+
"high-risk, or unclear discovery. If the target file/symbol is "
|
|
780
|
+
"already known, save direct current-session findings instead. "
|
|
779
781
|
"Short-circuit hint: if this subtask is already done in a prior "
|
|
780
782
|
"PR or is a pure no-op, skip the cycle with "
|
|
781
783
|
"`python3 .map/scripts/map_orchestrator.py mark_subtask_complete "
|
|
@@ -1332,10 +1334,11 @@ def validate_step(
|
|
|
1332
1334
|
),
|
|
1333
1335
|
"recommendation": normalized_rec,
|
|
1334
1336
|
}
|
|
1335
|
-
# RESEARCH (2.2)
|
|
1336
|
-
#
|
|
1337
|
-
#
|
|
1338
|
-
#
|
|
1337
|
+
# RESEARCH (2.2) requires a persisted artifact for every non-no-op subtask.
|
|
1338
|
+
# The artifact can come from research-agent or direct current-session
|
|
1339
|
+
# findings; enforce the machine-checkable contract before Actor proceeds.
|
|
1340
|
+
# Without this check, "MANDATORY" was prompt-text only and malformed
|
|
1341
|
+
# markdown could be silently passed downstream.
|
|
1339
1342
|
if step_id == "2.2" and state.current_subtask_id:
|
|
1340
1343
|
try:
|
|
1341
1344
|
from map_step_runner import validate_research # pyright: ignore[reportMissingImports]
|
|
@@ -1356,9 +1359,13 @@ def validate_step(
|
|
|
1356
1359
|
"message": (
|
|
1357
1360
|
f"RESEARCH artifact invalid for {state.current_subtask_id}: "
|
|
1358
1361
|
f"{detail}. "
|
|
1362
|
+
"Use research-agent for broad/high-risk/unclear discovery, "
|
|
1363
|
+
"or save direct current-session findings when the target is known. "
|
|
1359
1364
|
f"Run: python3 .map/scripts/map_step_runner.py save_research "
|
|
1360
|
-
f"<branch> {state.current_subtask_id} (defaults kind=actor) "
|
|
1361
|
-
"then validate_research before validate_step 2.2."
|
|
1365
|
+
f"<branch> {state.current_subtask_id} (defaults kind=actor), "
|
|
1366
|
+
"then validate_research before validate_step 2.2. If this "
|
|
1367
|
+
"subtask needs no Actor/Monitor, use mark_subtask_complete "
|
|
1368
|
+
"--reason instead."
|
|
1362
1369
|
),
|
|
1363
1370
|
"research_report": research_report,
|
|
1364
1371
|
}
|
|
@@ -53,14 +53,13 @@ Branch name is sanitized (e.g., `feature/foo` → `feature-foo`).
|
|
|
53
53
|
|
|
54
54
|
## Step IDs (map-efficient)
|
|
55
55
|
|
|
56
|
-
Current step set (linear order; some
|
|
56
|
+
Current step set (linear order; some phases use conditional subagents):
|
|
57
57
|
|
|
58
58
|
1. `1.0` DECOMPOSE
|
|
59
59
|
2. `1.5` INIT_PLAN
|
|
60
60
|
3. `1.55` REVIEW_PLAN
|
|
61
61
|
4. `1.56` CHOOSE_MODE
|
|
62
62
|
5. `1.6` INIT_STATE
|
|
63
|
-
7. `2.2` RESEARCH (conditional)
|
|
63
|
+
7. `2.2` RESEARCH (artifact required; research-agent conditional)
|
|
64
64
|
9. `2.3` ACTOR
|
|
65
65
|
10. `2.4` MONITOR
|
|
66
|
-
|
|
@@ -226,7 +226,7 @@ have ≥2 subtasks AND (b) the subtasks in that wave touch disjoint files
|
|
|
226
226
|
|
|
227
227
|
### No-op subtask short-circuit (before RESEARCH)
|
|
228
228
|
|
|
229
|
-
Some subtasks are already-done historically (rename/refactor landed in a prior PR), or
|
|
229
|
+
Some subtasks are already-done historically (rename/refactor landed in a prior PR), or truly do not need Actor/Monitor because the requested work is already satisfied by repo state. Skip them up-front to save tokens:
|
|
230
230
|
|
|
231
231
|
```bash
|
|
232
232
|
SUBTASK_ID=$(jq -r '.current_subtask_id' ".map/${BRANCH}/step_state.json")
|
|
@@ -236,14 +236,14 @@ python3 .map/scripts/map_orchestrator.py mark_subtask_complete "$SUBTASK_ID" \
|
|
|
236
236
|
|
|
237
237
|
This records a synthetic subtask_result with status="no-op", marks the phase COMPLETE, and advances the cursor (or closes the workflow if it was the last). Always pass `--reason` so audits know why the work was skipped. If unsure, run RESEARCH first and decide based on its findings.
|
|
238
238
|
|
|
239
|
-
### Phase: RESEARCH (2.2) - Required
|
|
239
|
+
### Phase: RESEARCH (2.2) - Required artifact; delegated agent conditional
|
|
240
240
|
|
|
241
|
-
|
|
241
|
+
Persist a RESEARCH artifact for every non-no-op subtask before Actor. `research-agent` is conditional: use it for cold-start repository exploration, 3+ existing files, high risk, unclear locations, or failed direct search. If the relevant file/symbol is already known, or the subtask is greenfield/new-file work, do narrow current-session research and save those concise strict-JSON findings via the canonical `save_research` API. Validate the machine-checkable research contract before closing the phase with the orchestrator.
|
|
242
242
|
|
|
243
243
|
```bash
|
|
244
244
|
SUBTASK_ID=$(jq -r '.current_subtask_id' ".map/${BRANCH}/step_state.json")
|
|
245
245
|
# RECOMMENDED: proactive refresh_blueprint_affected_files <branch>
|
|
246
|
-
# <sid> [--dry-run] BEFORE research
|
|
246
|
+
# <sid> [--dry-run] BEFORE delegated research (efficient-reference.md).
|
|
247
247
|
printf '%s' "$RESEARCH_FINDINGS" | \
|
|
248
248
|
python3 .map/scripts/map_step_runner.py save_research "$BRANCH" "$SUBTASK_ID"
|
|
249
249
|
# (defaults kind=actor; pass a 4th arg like 'monitor' or 'decomposer' to partition)
|
|
@@ -256,7 +256,7 @@ Later phases read with:
|
|
|
256
256
|
RESEARCH_FINDINGS=$(python3 .map/scripts/map_step_runner.py load_research "$BRANCH" "$SUBTASK_ID")
|
|
257
257
|
```
|
|
258
258
|
|
|
259
|
-
The artifact lands under `.map/<branch>/research/<subtask_id>__<kind>.md` and must satisfy the research
|
|
259
|
+
The artifact lands under `.map/<branch>/research/<subtask_id>__<kind>.md` and must satisfy the research evidence JSON contract (`status`, `confidence`, `search_stats`, and at most 5 `relevant_locations` with safe relative paths and line ranges). Use `load_research` to fill the `{research_findings}` placeholder in Actor and Monitor prompts below.
|
|
260
260
|
|
|
261
261
|
### Phase: TEST_WRITER (2.25) - TDD Mode Only
|
|
262
262
|
|
{mapify_cli-3.15.0 → mapify_cli-3.15.1}/src/mapify_cli/templates_src/skills/map-task/SKILL.md.jinja
RENAMED
|
@@ -122,7 +122,7 @@ PHASE=$(echo "$NEXT_STEP" | jq -r '.phase')
|
|
|
122
122
|
|
|
123
123
|
Route to the appropriate executor based on `$PHASE`. All phases from `/map-efficient` work identically:
|
|
124
124
|
|
|
125
|
-
- **RESEARCH (2.2)** — Required
|
|
125
|
+
- **RESEARCH (2.2)** — Required persisted research artifact; research-agent is conditional for broad/high-risk discovery.
|
|
126
126
|
- **ACTOR (2.3)** — Implement the subtask
|
|
127
127
|
- **MONITOR (2.4)** — Required validation before the subtask can complete.
|
|
128
128
|
|
|
@@ -2190,6 +2190,48 @@ class TestMapEfficientSaveResearchWiring:
|
|
|
2190
2190
|
"validate_step 2.2 so malformed research cannot reach Actor."
|
|
2191
2191
|
)
|
|
2192
2192
|
|
|
2193
|
+
def test_research_policy_distinguishes_artifact_from_subagent(
|
|
2194
|
+
self, skill_path: Path
|
|
2195
|
+
) -> None:
|
|
2196
|
+
content = skill_path.read_text(encoding="utf-8")
|
|
2197
|
+
assert "Persist a RESEARCH artifact" in content
|
|
2198
|
+
assert "`research-agent` is conditional" in content
|
|
2199
|
+
assert "Call `research-agent` for the current subtask" not in content
|
|
2200
|
+
|
|
2201
|
+
def test_codex_research_policy_matches_claude_contract(self) -> None:
|
|
2202
|
+
project_root = Path(__file__).parent.parent
|
|
2203
|
+
for relative_path in [
|
|
2204
|
+
Path(".agents/skills/map-efficient/SKILL.md"),
|
|
2205
|
+
Path("src/mapify_cli/templates/codex/skills/map-efficient/SKILL.md"),
|
|
2206
|
+
]:
|
|
2207
|
+
content = (project_root / relative_path).read_text(encoding="utf-8")
|
|
2208
|
+
assert "Persist a RESEARCH artifact" in content
|
|
2209
|
+
assert "Use" in content
|
|
2210
|
+
assert "`researcher`" in content
|
|
2211
|
+
assert "when independent exploration is useful" in content
|
|
2212
|
+
assert "If the subtask truly needs no Actor/Monitor" in content
|
|
2213
|
+
|
|
2214
|
+
def test_hook_hint_mentions_required_artifact_not_required_subagent(self) -> None:
|
|
2215
|
+
project_root = Path(__file__).parent.parent
|
|
2216
|
+
for relative_path in [
|
|
2217
|
+
Path(".claude/hooks/workflow-context-injector.py"),
|
|
2218
|
+
Path("src/mapify_cli/templates/hooks/workflow-context-injector.py"),
|
|
2219
|
+
]:
|
|
2220
|
+
content = (project_root / relative_path).read_text(encoding="utf-8")
|
|
2221
|
+
assert "Persist RESEARCH artifact" in content
|
|
2222
|
+
assert "Run research-agent (conditional" not in content
|
|
2223
|
+
|
|
2224
|
+
def test_orchestrator_error_offers_delegated_and_direct_research_paths(self) -> None:
|
|
2225
|
+
project_root = Path(__file__).parent.parent
|
|
2226
|
+
for relative_path in [
|
|
2227
|
+
Path(".map/scripts/map_orchestrator.py"),
|
|
2228
|
+
Path("src/mapify_cli/templates/map/scripts/map_orchestrator.py"),
|
|
2229
|
+
]:
|
|
2230
|
+
content = (project_root / relative_path).read_text(encoding="utf-8")
|
|
2231
|
+
assert "research-agent conditional" in content
|
|
2232
|
+
assert "Use research-agent for broad/high-risk/unclear discovery" in content
|
|
2233
|
+
assert "save direct current-session findings" in content
|
|
2234
|
+
|
|
2193
2235
|
|
|
2194
2236
|
class TestMapEfficientBuildContextBlockCli:
|
|
2195
2237
|
"""Regression: map-efficient must show the build_context_block CLI form.
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|