mapify-cli 3.25.0__tar.gz → 3.26.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.
- {mapify_cli-3.25.0 → mapify_cli-3.26.0}/PKG-INFO +3 -1
- {mapify_cli-3.25.0 → mapify_cli-3.26.0}/README.md +2 -0
- {mapify_cli-3.25.0 → mapify_cli-3.26.0}/pyproject.toml +1 -1
- {mapify_cli-3.25.0 → mapify_cli-3.26.0}/src/mapify_cli/__init__.py +1 -1
- {mapify_cli-3.25.0 → mapify_cli-3.26.0}/src/mapify_cli/schemas.py +184 -1
- {mapify_cli-3.25.0 → mapify_cli-3.26.0}/src/mapify_cli/templates/CLAUDE.md +7 -0
- {mapify_cli-3.25.0 → mapify_cli-3.26.0}/src/mapify_cli/templates/agents/final-verifier.md +15 -2
- {mapify_cli-3.25.0/src/mapify_cli/templates → mapify_cli-3.26.0/src/mapify_cli/templates/codex}/hooks/workflow-gate.py +159 -3
- {mapify_cli-3.25.0 → mapify_cli-3.26.0}/src/mapify_cli/templates/codex/skills/map-efficient/SKILL.md +14 -4
- {mapify_cli-3.25.0 → mapify_cli-3.26.0}/src/mapify_cli/templates/codex/skills/map-efficient/efficient-reference.md +40 -1
- {mapify_cli-3.25.0 → mapify_cli-3.26.0}/src/mapify_cli/templates/codex/skills/map-plan/SKILL.md +6 -1
- {mapify_cli-3.25.0 → mapify_cli-3.26.0}/src/mapify_cli/templates/codex/skills/map-review/SKILL.md +14 -2
- {mapify_cli-3.25.0 → mapify_cli-3.26.0}/src/mapify_cli/templates/codex/skills/map-review/review-reference.md +3 -3
- {mapify_cli-3.25.0 → mapify_cli-3.26.0}/src/mapify_cli/templates/hooks/safety-guardrails.py +155 -0
- {mapify_cli-3.25.0/src/mapify_cli/templates/codex → mapify_cli-3.26.0/src/mapify_cli/templates}/hooks/workflow-gate.py +159 -3
- {mapify_cli-3.25.0 → mapify_cli-3.26.0}/src/mapify_cli/templates/map/scripts/map_orchestrator.py +2 -2
- {mapify_cli-3.25.0 → mapify_cli-3.26.0}/src/mapify_cli/templates/map/scripts/map_step_runner.py +1531 -76
- {mapify_cli-3.25.0 → mapify_cli-3.26.0}/src/mapify_cli/templates/map/scripts/validate_spec_citations.py +1 -1
- {mapify_cli-3.25.0 → mapify_cli-3.26.0}/src/mapify_cli/templates/map/static-analysis/handlers/common.sh +3 -3
- {mapify_cli-3.25.0 → mapify_cli-3.26.0}/src/mapify_cli/templates/map/static-analysis/handlers/go.sh +3 -3
- {mapify_cli-3.25.0 → mapify_cli-3.26.0}/src/mapify_cli/templates/map/static-analysis/handlers/python.sh +2 -2
- {mapify_cli-3.25.0 → mapify_cli-3.26.0}/src/mapify_cli/templates/map/static-analysis/handlers/typescript.sh +2 -2
- {mapify_cli-3.25.0 → mapify_cli-3.26.0}/src/mapify_cli/templates/references/bash-guidelines.md +27 -0
- {mapify_cli-3.25.0 → mapify_cli-3.26.0}/src/mapify_cli/templates/settings.json +0 -22
- mapify_cli-3.26.0/src/mapify_cli/templates/skills/map-auto/SKILL.md +104 -0
- mapify_cli-3.26.0/src/mapify_cli/templates/skills/map-auto/auto-reference.md +78 -0
- {mapify_cli-3.25.0 → mapify_cli-3.26.0}/src/mapify_cli/templates/skills/map-check/SKILL.md +3 -3
- {mapify_cli-3.25.0 → mapify_cli-3.26.0}/src/mapify_cli/templates/skills/map-efficient/SKILL.md +13 -5
- {mapify_cli-3.25.0 → mapify_cli-3.26.0}/src/mapify_cli/templates/skills/map-efficient/efficient-reference.md +48 -9
- {mapify_cli-3.25.0 → mapify_cli-3.26.0}/src/mapify_cli/templates/skills/map-plan/SKILL.md +7 -2
- mapify_cli-3.26.0/src/mapify_cli/templates/skills/map-prd-review/SKILL.md +152 -0
- mapify_cli-3.26.0/src/mapify_cli/templates/skills/map-release/SKILL.md +179 -0
- mapify_cli-3.26.0/src/mapify_cli/templates/skills/map-release/release-reference.md +468 -0
- {mapify_cli-3.25.0 → mapify_cli-3.26.0}/src/mapify_cli/templates/skills/map-resume/SKILL.md +3 -3
- {mapify_cli-3.25.0 → mapify_cli-3.26.0}/src/mapify_cli/templates/skills/map-review/SKILL.md +21 -9
- {mapify_cli-3.25.0 → mapify_cli-3.26.0}/src/mapify_cli/templates/skills/map-task/SKILL.md +15 -7
- {mapify_cli-3.25.0 → mapify_cli-3.26.0}/src/mapify_cli/templates/skills/map-tdd/SKILL.md +3 -3
- {mapify_cli-3.25.0 → mapify_cli-3.26.0}/src/mapify_cli/templates/skills/skill-rules.json +44 -0
- {mapify_cli-3.25.0 → mapify_cli-3.26.0}/src/mapify_cli/templates_src/CLAUDE.md.jinja +7 -0
- {mapify_cli-3.25.0 → mapify_cli-3.26.0}/src/mapify_cli/templates_src/agents/final-verifier.md.jinja +15 -2
- {mapify_cli-3.25.0/src/mapify_cli/templates_src → mapify_cli-3.26.0/src/mapify_cli/templates_src/codex}/hooks/workflow-gate.py.jinja +159 -3
- {mapify_cli-3.25.0 → mapify_cli-3.26.0}/src/mapify_cli/templates_src/codex/skills/map-efficient/SKILL.md.jinja +14 -4
- {mapify_cli-3.25.0 → mapify_cli-3.26.0}/src/mapify_cli/templates_src/codex/skills/map-efficient/efficient-reference.md.jinja +40 -1
- {mapify_cli-3.25.0 → mapify_cli-3.26.0}/src/mapify_cli/templates_src/codex/skills/map-plan/SKILL.md.jinja +6 -1
- {mapify_cli-3.25.0 → mapify_cli-3.26.0}/src/mapify_cli/templates_src/codex/skills/map-review/SKILL.md.jinja +14 -2
- {mapify_cli-3.25.0 → mapify_cli-3.26.0}/src/mapify_cli/templates_src/codex/skills/map-review/review-reference.md.jinja +3 -3
- {mapify_cli-3.25.0 → mapify_cli-3.26.0}/src/mapify_cli/templates_src/hooks/safety-guardrails.py.jinja +155 -0
- {mapify_cli-3.25.0/src/mapify_cli/templates_src/codex → mapify_cli-3.26.0/src/mapify_cli/templates_src}/hooks/workflow-gate.py.jinja +159 -3
- {mapify_cli-3.25.0 → mapify_cli-3.26.0}/src/mapify_cli/templates_src/map/scripts/map_orchestrator.py.jinja +2 -2
- {mapify_cli-3.25.0 → mapify_cli-3.26.0}/src/mapify_cli/templates_src/map/scripts/map_step_runner.py.jinja +1531 -76
- {mapify_cli-3.25.0 → mapify_cli-3.26.0}/src/mapify_cli/templates_src/map/scripts/validate_spec_citations.py.jinja +1 -1
- {mapify_cli-3.25.0 → mapify_cli-3.26.0}/src/mapify_cli/templates_src/map/static-analysis/handlers/common.sh.jinja +3 -3
- {mapify_cli-3.25.0 → mapify_cli-3.26.0}/src/mapify_cli/templates_src/map/static-analysis/handlers/go.sh.jinja +3 -3
- {mapify_cli-3.25.0 → mapify_cli-3.26.0}/src/mapify_cli/templates_src/map/static-analysis/handlers/python.sh.jinja +2 -2
- {mapify_cli-3.25.0 → mapify_cli-3.26.0}/src/mapify_cli/templates_src/map/static-analysis/handlers/typescript.sh.jinja +2 -2
- {mapify_cli-3.25.0 → mapify_cli-3.26.0}/src/mapify_cli/templates_src/references/bash-guidelines.md.jinja +27 -0
- {mapify_cli-3.25.0 → mapify_cli-3.26.0}/src/mapify_cli/templates_src/settings.json.jinja +0 -22
- mapify_cli-3.26.0/src/mapify_cli/templates_src/skills/map-auto/SKILL.md.jinja +104 -0
- mapify_cli-3.26.0/src/mapify_cli/templates_src/skills/map-auto/auto-reference.md.jinja +78 -0
- {mapify_cli-3.25.0 → mapify_cli-3.26.0}/src/mapify_cli/templates_src/skills/map-check/SKILL.md.jinja +3 -3
- {mapify_cli-3.25.0 → mapify_cli-3.26.0}/src/mapify_cli/templates_src/skills/map-efficient/SKILL.md.jinja +13 -5
- {mapify_cli-3.25.0 → mapify_cli-3.26.0}/src/mapify_cli/templates_src/skills/map-efficient/efficient-reference.md.jinja +48 -9
- {mapify_cli-3.25.0 → mapify_cli-3.26.0}/src/mapify_cli/templates_src/skills/map-plan/SKILL.md.jinja +7 -2
- mapify_cli-3.26.0/src/mapify_cli/templates_src/skills/map-prd-review/SKILL.md.jinja +152 -0
- mapify_cli-3.26.0/src/mapify_cli/templates_src/skills/map-release/SKILL.md.jinja +179 -0
- mapify_cli-3.26.0/src/mapify_cli/templates_src/skills/map-release/release-reference.md.jinja +468 -0
- {mapify_cli-3.25.0 → mapify_cli-3.26.0}/src/mapify_cli/templates_src/skills/map-resume/SKILL.md.jinja +3 -3
- {mapify_cli-3.25.0 → mapify_cli-3.26.0}/src/mapify_cli/templates_src/skills/map-review/SKILL.md.jinja +21 -9
- {mapify_cli-3.25.0 → mapify_cli-3.26.0}/src/mapify_cli/templates_src/skills/map-task/SKILL.md.jinja +15 -7
- {mapify_cli-3.25.0 → mapify_cli-3.26.0}/src/mapify_cli/templates_src/skills/map-tdd/SKILL.md.jinja +3 -3
- {mapify_cli-3.25.0 → mapify_cli-3.26.0}/src/mapify_cli/templates_src/skills/skill-rules.json.jinja +44 -0
- {mapify_cli-3.25.0 → mapify_cli-3.26.0}/tests/hooks/test_safety_guardrails.py +194 -0
- {mapify_cli-3.25.0 → mapify_cli-3.26.0}/tests/test_agent_frontmatter.py +20 -4
- {mapify_cli-3.25.0 → mapify_cli-3.26.0}/tests/test_approval_hold.py +132 -3
- {mapify_cli-3.25.0 → mapify_cli-3.26.0}/tests/test_artifact_schemas.py +109 -0
- mapify_cli-3.26.0/tests/test_map_auto.py +148 -0
- {mapify_cli-3.25.0 → mapify_cli-3.26.0}/tests/test_map_step_runner.py +1807 -7
- {mapify_cli-3.25.0 → mapify_cli-3.26.0}/tests/test_settings_deny_globs.py +56 -97
- mapify_cli-3.26.0/tests/test_shell_json_pipes.py +125 -0
- {mapify_cli-3.25.0 → mapify_cli-3.26.0}/tests/test_skills.py +285 -1
- {mapify_cli-3.25.0 → mapify_cli-3.26.0}/tests/test_skills_consistency.py +17 -7
- {mapify_cli-3.25.0 → mapify_cli-3.26.0}/tests/test_validate_spec_citations.py +17 -0
- {mapify_cli-3.25.0 → mapify_cli-3.26.0}/tests/test_workflow_gate.py +409 -2
- {mapify_cli-3.25.0 → mapify_cli-3.26.0}/tests/test_worktree_isolation.py +244 -0
- mapify_cli-3.25.0/src/mapify_cli/templates/skills/map-release/SKILL.md +0 -1248
- mapify_cli-3.25.0/src/mapify_cli/templates_src/skills/map-release/SKILL.md.jinja +0 -1248
- {mapify_cli-3.25.0 → mapify_cli-3.26.0}/.claude/hooks/README.md +0 -0
- {mapify_cli-3.25.0 → mapify_cli-3.26.0}/.claude/skills/README.md +0 -0
- {mapify_cli-3.25.0 → mapify_cli-3.26.0}/.gitignore +0 -0
- {mapify_cli-3.25.0 → mapify_cli-3.26.0}/LICENSE +0 -0
- {mapify_cli-3.25.0 → mapify_cli-3.26.0}/src/mapify_cli/_locking.py +0 -0
- {mapify_cli-3.25.0 → mapify_cli-3.26.0}/src/mapify_cli/boundary_quality_report.py +0 -0
- {mapify_cli-3.25.0 → mapify_cli-3.26.0}/src/mapify_cli/cli_ui.py +0 -0
- {mapify_cli-3.25.0 → mapify_cli-3.26.0}/src/mapify_cli/code_map.py +0 -0
- {mapify_cli-3.25.0 → mapify_cli-3.26.0}/src/mapify_cli/config/__init__.py +0 -0
- {mapify_cli-3.25.0 → mapify_cli-3.26.0}/src/mapify_cli/config/mcp.py +0 -0
- {mapify_cli-3.25.0 → mapify_cli-3.26.0}/src/mapify_cli/config/project_config.py +0 -0
- {mapify_cli-3.25.0 → mapify_cli-3.26.0}/src/mapify_cli/config/settings.py +0 -0
- {mapify_cli-3.25.0 → mapify_cli-3.26.0}/src/mapify_cli/delivery/__init__.py +0 -0
- {mapify_cli-3.25.0 → mapify_cli-3.26.0}/src/mapify_cli/delivery/agent_generator.py +0 -0
- {mapify_cli-3.25.0 → mapify_cli-3.26.0}/src/mapify_cli/delivery/codex_copier.py +0 -0
- {mapify_cli-3.25.0 → mapify_cli-3.26.0}/src/mapify_cli/delivery/domain_skill.py +0 -0
- {mapify_cli-3.25.0 → mapify_cli-3.26.0}/src/mapify_cli/delivery/file_copier.py +0 -0
- {mapify_cli-3.25.0 → mapify_cli-3.26.0}/src/mapify_cli/delivery/governance_report.py +0 -0
- {mapify_cli-3.25.0 → mapify_cli-3.26.0}/src/mapify_cli/delivery/managed_file_copier.py +0 -0
- {mapify_cli-3.25.0 → mapify_cli-3.26.0}/src/mapify_cli/delivery/providers.py +0 -0
- {mapify_cli-3.25.0 → mapify_cli-3.26.0}/src/mapify_cli/delivery/template_renderer.py +0 -0
- {mapify_cli-3.25.0 → mapify_cli-3.26.0}/src/mapify_cli/dependency_graph.py +0 -0
- {mapify_cli-3.25.0 → mapify_cli-3.26.0}/src/mapify_cli/grace_eval/__init__.py +0 -0
- {mapify_cli-3.25.0 → mapify_cli-3.26.0}/src/mapify_cli/grace_eval/schema.py +0 -0
- {mapify_cli-3.25.0 → mapify_cli-3.26.0}/src/mapify_cli/grace_eval/sweep.py +0 -0
- {mapify_cli-3.25.0 → mapify_cli-3.26.0}/src/mapify_cli/install_manifest.py +0 -0
- {mapify_cli-3.25.0 → mapify_cli-3.26.0}/src/mapify_cli/intent_detector.py +0 -0
- {mapify_cli-3.25.0 → mapify_cli-3.26.0}/src/mapify_cli/memory/__init__.py +0 -0
- {mapify_cli-3.25.0 → mapify_cli-3.26.0}/src/mapify_cli/memory/capture.py +0 -0
- {mapify_cli-3.25.0 → mapify_cli-3.26.0}/src/mapify_cli/memory/digest_schema.py +0 -0
- {mapify_cli-3.25.0 → mapify_cli-3.26.0}/src/mapify_cli/memory/finalize.py +0 -0
- {mapify_cli-3.25.0 → mapify_cli-3.26.0}/src/mapify_cli/memory/recall.py +0 -0
- {mapify_cli-3.25.0 → mapify_cli-3.26.0}/src/mapify_cli/minimality_eval.py +0 -0
- {mapify_cli-3.25.0 → mapify_cli-3.26.0}/src/mapify_cli/minimality_report.py +0 -0
- {mapify_cli-3.25.0 → mapify_cli-3.26.0}/src/mapify_cli/parallelism_observability.py +0 -0
- {mapify_cli-3.25.0 → mapify_cli-3.26.0}/src/mapify_cli/ralph_state.py +0 -0
- {mapify_cli-3.25.0 → mapify_cli-3.26.0}/src/mapify_cli/repo_insight.py +0 -0
- {mapify_cli-3.25.0 → mapify_cli-3.26.0}/src/mapify_cli/research_eval.py +0 -0
- {mapify_cli-3.25.0 → mapify_cli-3.26.0}/src/mapify_cli/research_eval_compare.py +0 -0
- {mapify_cli-3.25.0 → mapify_cli-3.26.0}/src/mapify_cli/scope_classifier.py +0 -0
- {mapify_cli-3.25.0 → mapify_cli-3.26.0}/src/mapify_cli/skill_ir.py +0 -0
- {mapify_cli-3.25.0 → mapify_cli-3.26.0}/src/mapify_cli/skills_eval/__init__.py +0 -0
- {mapify_cli-3.25.0 → mapify_cli-3.26.0}/src/mapify_cli/skills_eval/aggregator.py +0 -0
- {mapify_cli-3.25.0 → mapify_cli-3.26.0}/src/mapify_cli/skills_eval/apply_patcher.py +0 -0
- {mapify_cli-3.25.0 → mapify_cli-3.26.0}/src/mapify_cli/skills_eval/assertions.py +0 -0
- {mapify_cli-3.25.0 → mapify_cli-3.26.0}/src/mapify_cli/skills_eval/description_optimizer.py +0 -0
- {mapify_cli-3.25.0 → mapify_cli-3.26.0}/src/mapify_cli/skills_eval/dispatcher.py +0 -0
- {mapify_cli-3.25.0 → mapify_cli-3.26.0}/src/mapify_cli/skills_eval/eval_schema.py +0 -0
- {mapify_cli-3.25.0 → mapify_cli-3.26.0}/src/mapify_cli/skills_eval/proposer.py +0 -0
- {mapify_cli-3.25.0 → mapify_cli-3.26.0}/src/mapify_cli/skills_eval/runner.py +0 -0
- {mapify_cli-3.25.0 → mapify_cli-3.26.0}/src/mapify_cli/skills_eval/trajectory/__init__.py +0 -0
- {mapify_cli-3.25.0 → mapify_cli-3.26.0}/src/mapify_cli/skills_eval/trajectory/bundle.py +0 -0
- {mapify_cli-3.25.0 → mapify_cli-3.26.0}/src/mapify_cli/skills_eval/trajectory/dispatcher.py +0 -0
- {mapify_cli-3.25.0 → mapify_cli-3.26.0}/src/mapify_cli/skills_eval/trajectory/eval_schema.py +0 -0
- {mapify_cli-3.25.0 → mapify_cli-3.26.0}/src/mapify_cli/skills_eval/trajectory/gates.py +0 -0
- {mapify_cli-3.25.0 → mapify_cli-3.26.0}/src/mapify_cli/skills_eval/trajectory/judge.py +0 -0
- {mapify_cli-3.25.0 → mapify_cli-3.26.0}/src/mapify_cli/skills_eval/trajectory/repeated.py +0 -0
- {mapify_cli-3.25.0 → mapify_cli-3.26.0}/src/mapify_cli/skills_eval/trajectory/report.py +0 -0
- {mapify_cli-3.25.0 → mapify_cli-3.26.0}/src/mapify_cli/skills_eval/trajectory/runner.py +0 -0
- {mapify_cli-3.25.0 → mapify_cli-3.26.0}/src/mapify_cli/skills_eval/trajectory/seeding.py +0 -0
- {mapify_cli-3.25.0 → mapify_cli-3.26.0}/src/mapify_cli/skills_eval/viewer.py +0 -0
- {mapify_cli-3.25.0 → mapify_cli-3.26.0}/src/mapify_cli/templates/.gitignore +0 -0
- {mapify_cli-3.25.0 → mapify_cli-3.26.0}/src/mapify_cli/templates/agents/actor.md +0 -0
- {mapify_cli-3.25.0 → mapify_cli-3.26.0}/src/mapify_cli/templates/agents/documentation-reviewer.md +0 -0
- {mapify_cli-3.25.0 → mapify_cli-3.26.0}/src/mapify_cli/templates/agents/evaluator.md +0 -0
- {mapify_cli-3.25.0 → mapify_cli-3.26.0}/src/mapify_cli/templates/agents/monitor.md +0 -0
- {mapify_cli-3.25.0 → mapify_cli-3.26.0}/src/mapify_cli/templates/agents/predictor.md +0 -0
- {mapify_cli-3.25.0 → mapify_cli-3.26.0}/src/mapify_cli/templates/agents/reflector.md +0 -0
- {mapify_cli-3.25.0 → mapify_cli-3.26.0}/src/mapify_cli/templates/agents/research-agent.md +0 -0
- {mapify_cli-3.25.0 → mapify_cli-3.26.0}/src/mapify_cli/templates/agents/task-decomposer.md +0 -0
- {mapify_cli-3.25.0 → mapify_cli-3.26.0}/src/mapify_cli/templates/codex/AGENTS.md +0 -0
- {mapify_cli-3.25.0 → mapify_cli-3.26.0}/src/mapify_cli/templates/codex/agents/decomposer.toml +0 -0
- {mapify_cli-3.25.0 → mapify_cli-3.26.0}/src/mapify_cli/templates/codex/agents/evaluator.toml +0 -0
- {mapify_cli-3.25.0 → mapify_cli-3.26.0}/src/mapify_cli/templates/codex/agents/monitor.toml +0 -0
- {mapify_cli-3.25.0 → mapify_cli-3.26.0}/src/mapify_cli/templates/codex/agents/predictor.toml +0 -0
- {mapify_cli-3.25.0 → mapify_cli-3.26.0}/src/mapify_cli/templates/codex/agents/researcher.toml +0 -0
- {mapify_cli-3.25.0 → mapify_cli-3.26.0}/src/mapify_cli/templates/codex/config.toml +0 -0
- {mapify_cli-3.25.0 → mapify_cli-3.26.0}/src/mapify_cli/templates/codex/hooks.json +0 -0
- {mapify_cli-3.25.0 → mapify_cli-3.26.0}/src/mapify_cli/templates/codex/skills/map-check/SKILL.md +0 -0
- {mapify_cli-3.25.0 → mapify_cli-3.26.0}/src/mapify_cli/templates/codex/skills/map-explain/SKILL.md +0 -0
- {mapify_cli-3.25.0 → mapify_cli-3.26.0}/src/mapify_cli/templates/codex/skills/map-fast/SKILL.md +0 -0
- {mapify_cli-3.25.0 → mapify_cli-3.26.0}/src/mapify_cli/templates/codex/skills/map-review/adversarial-reference.md +0 -0
- {mapify_cli-3.25.0 → mapify_cli-3.26.0}/src/mapify_cli/templates/codex/skills/map-understand/SKILL.md +0 -0
- {mapify_cli-3.25.0 → mapify_cli-3.26.0}/src/mapify_cli/templates/hooks/README.md +0 -0
- {mapify_cli-3.25.0 → mapify_cli-3.26.0}/src/mapify_cli/templates/hooks/context-meter.py +0 -0
- {mapify_cli-3.25.0 → mapify_cli-3.26.0}/src/mapify_cli/templates/hooks/detect-clarification-triggers.py +0 -0
- {mapify_cli-3.25.0 → mapify_cli-3.26.0}/src/mapify_cli/templates/hooks/end-of-turn.sh +0 -0
- {mapify_cli-3.25.0 → mapify_cli-3.26.0}/src/mapify_cli/templates/hooks/map-memory-capture.py +0 -0
- {mapify_cli-3.25.0 → mapify_cli-3.26.0}/src/mapify_cli/templates/hooks/map-memory-endmark.py +0 -0
- {mapify_cli-3.25.0 → mapify_cli-3.26.0}/src/mapify_cli/templates/hooks/map-memory-finalize.py +0 -0
- {mapify_cli-3.25.0 → mapify_cli-3.26.0}/src/mapify_cli/templates/hooks/map-memory-recall.py +0 -0
- {mapify_cli-3.25.0 → mapify_cli-3.26.0}/src/mapify_cli/templates/hooks/map-statusline.py +0 -0
- {mapify_cli-3.25.0 → mapify_cli-3.26.0}/src/mapify_cli/templates/hooks/map-token-meter.py +0 -0
- {mapify_cli-3.25.0 → mapify_cli-3.26.0}/src/mapify_cli/templates/hooks/post-compact-context.py +0 -0
- {mapify_cli-3.25.0 → mapify_cli-3.26.0}/src/mapify_cli/templates/hooks/pre-compact-save-transcript.py +0 -0
- {mapify_cli-3.25.0 → mapify_cli-3.26.0}/src/mapify_cli/templates/hooks/ralph-context-pruner.py +0 -0
- {mapify_cli-3.25.0 → mapify_cli-3.26.0}/src/mapify_cli/templates/hooks/ralph-iteration-logger.py +0 -0
- {mapify_cli-3.25.0 → mapify_cli-3.26.0}/src/mapify_cli/templates/hooks/scrub-internal-ids.py +0 -0
- {mapify_cli-3.25.0 → mapify_cli-3.26.0}/src/mapify_cli/templates/hooks/workflow-context-injector.py +0 -0
- {mapify_cli-3.25.0 → mapify_cli-3.26.0}/src/mapify_cli/templates/map/scripts/classify_scope.py +0 -0
- {mapify_cli-3.25.0 → mapify_cli-3.26.0}/src/mapify_cli/templates/map/scripts/diagnostics.py +0 -0
- {mapify_cli-3.25.0 → mapify_cli-3.26.0}/src/mapify_cli/templates/map/scripts/map_utils.py +0 -0
- {mapify_cli-3.25.0 → mapify_cli-3.26.0}/src/mapify_cli/templates/map/scripts/scrub_internal_ids.py +0 -0
- {mapify_cli-3.25.0 → mapify_cli-3.26.0}/src/mapify_cli/templates/map/scripts/sofa_client.py +0 -0
- {mapify_cli-3.25.0 → mapify_cli-3.26.0}/src/mapify_cli/templates/map/scripts/wayfind_runner.py +0 -0
- {mapify_cli-3.25.0 → mapify_cli-3.26.0}/src/mapify_cli/templates/map/static-analysis/analyze.sh +0 -0
- {mapify_cli-3.25.0 → mapify_cli-3.26.0}/src/mapify_cli/templates/map/static-analysis/handlers/rust.sh +0 -0
- {mapify_cli-3.25.0 → mapify_cli-3.26.0}/src/mapify_cli/templates/ralph-loop-config.json +0 -0
- {mapify_cli-3.25.0 → mapify_cli-3.26.0}/src/mapify_cli/templates/references/decomposition-examples.md +0 -0
- {mapify_cli-3.25.0 → mapify_cli-3.26.0}/src/mapify_cli/templates/references/escalation-matrix.md +0 -0
- {mapify_cli-3.25.0 → mapify_cli-3.26.0}/src/mapify_cli/templates/references/hook-patterns.md +0 -0
- {mapify_cli-3.25.0 → mapify_cli-3.26.0}/src/mapify_cli/templates/references/host-paths.md +0 -0
- {mapify_cli-3.25.0 → mapify_cli-3.26.0}/src/mapify_cli/templates/references/map-json-output-contracts.md +0 -0
- {mapify_cli-3.25.0 → mapify_cli-3.26.0}/src/mapify_cli/templates/references/map-output-examples.md +0 -0
- {mapify_cli-3.25.0 → mapify_cli-3.26.0}/src/mapify_cli/templates/references/map-xml-prompt-envelopes.md +0 -0
- {mapify_cli-3.25.0 → mapify_cli-3.26.0}/src/mapify_cli/templates/references/mcp-usage-examples.md +0 -0
- {mapify_cli-3.25.0 → mapify_cli-3.26.0}/src/mapify_cli/templates/references/step-state-schema.md +0 -0
- {mapify_cli-3.25.0 → mapify_cli-3.26.0}/src/mapify_cli/templates/references/workflow-state-schema.md +0 -0
- {mapify_cli-3.25.0 → mapify_cli-3.26.0}/src/mapify_cli/templates/rules/learned/README.md +0 -0
- {mapify_cli-3.25.0 → mapify_cli-3.26.0}/src/mapify_cli/templates/skills/README.md +0 -0
- {mapify_cli-3.25.0 → mapify_cli-3.26.0}/src/mapify_cli/templates/skills/map-architecture/SKILL.md +0 -0
- {mapify_cli-3.25.0 → mapify_cli-3.26.0}/src/mapify_cli/templates/skills/map-check/check-reference.md +0 -0
- {mapify_cli-3.25.0 → mapify_cli-3.26.0}/src/mapify_cli/templates/skills/map-debug/SKILL.md +0 -0
- {mapify_cli-3.25.0 → mapify_cli-3.26.0}/src/mapify_cli/templates/skills/map-explain/SKILL.md +0 -0
- {mapify_cli-3.25.0 → mapify_cli-3.26.0}/src/mapify_cli/templates/skills/map-fast/SKILL.md +0 -0
- {mapify_cli-3.25.0 → mapify_cli-3.26.0}/src/mapify_cli/templates/skills/map-learn/SKILL.md +0 -0
- {mapify_cli-3.25.0 → mapify_cli-3.26.0}/src/mapify_cli/templates/skills/map-learn/templates/example-rules.md +0 -0
- {mapify_cli-3.25.0 → mapify_cli-3.26.0}/src/mapify_cli/templates/skills/map-learn/templates/rules-unconditional.md +0 -0
- {mapify_cli-3.25.0 → mapify_cli-3.26.0}/src/mapify_cli/templates/skills/map-learn/templates/rules-with-paths.md +0 -0
- {mapify_cli-3.25.0 → mapify_cli-3.26.0}/src/mapify_cli/templates/skills/map-memory-now/SKILL.md +0 -0
- {mapify_cli-3.25.0 → mapify_cli-3.26.0}/src/mapify_cli/templates/skills/map-plan/plan-reference.md +0 -0
- {mapify_cli-3.25.0 → mapify_cli-3.26.0}/src/mapify_cli/templates/skills/map-resume/resume-reference.md +0 -0
- {mapify_cli-3.25.0 → mapify_cli-3.26.0}/src/mapify_cli/templates/skills/map-review/adversarial-reference.md +0 -0
- {mapify_cli-3.25.0 → mapify_cli-3.26.0}/src/mapify_cli/templates/skills/map-review/review-reference.md +0 -0
- {mapify_cli-3.25.0 → mapify_cli-3.26.0}/src/mapify_cli/templates/skills/map-skill-eval/SKILL.md +0 -0
- {mapify_cli-3.25.0 → mapify_cli-3.26.0}/src/mapify_cli/templates/skills/map-so-search/SKILL.md +0 -0
- {mapify_cli-3.25.0 → mapify_cli-3.26.0}/src/mapify_cli/templates/skills/map-so-search/scripts/sofa_search.py +0 -0
- {mapify_cli-3.25.0 → mapify_cli-3.26.0}/src/mapify_cli/templates/skills/map-state/SKILL.md +0 -0
- {mapify_cli-3.25.0 → mapify_cli-3.26.0}/src/mapify_cli/templates/skills/map-state/scripts/check-complete.sh +0 -0
- {mapify_cli-3.25.0 → mapify_cli-3.26.0}/src/mapify_cli/templates/skills/map-state/scripts/get-plan-path.sh +0 -0
- {mapify_cli-3.25.0 → mapify_cli-3.26.0}/src/mapify_cli/templates/skills/map-state/scripts/init-session.sh +0 -0
- {mapify_cli-3.25.0 → mapify_cli-3.26.0}/src/mapify_cli/templates/skills/map-state/scripts/show-focus.sh +0 -0
- {mapify_cli-3.25.0 → mapify_cli-3.26.0}/src/mapify_cli/templates/skills/map-state/templates/findings.md +0 -0
- {mapify_cli-3.25.0 → mapify_cli-3.26.0}/src/mapify_cli/templates/skills/map-state/templates/iteration_history.md +0 -0
- {mapify_cli-3.25.0 → mapify_cli-3.26.0}/src/mapify_cli/templates/skills/map-state/templates/progress.md +0 -0
- {mapify_cli-3.25.0 → mapify_cli-3.26.0}/src/mapify_cli/templates/skills/map-state/templates/task_plan.md +0 -0
- {mapify_cli-3.25.0 → mapify_cli-3.26.0}/src/mapify_cli/templates/skills/map-tokenreport/SKILL.md +0 -0
- {mapify_cli-3.25.0 → mapify_cli-3.26.0}/src/mapify_cli/templates/skills/map-understand/SKILL.md +0 -0
- {mapify_cli-3.25.0 → mapify_cli-3.26.0}/src/mapify_cli/templates/skills/map-wayfind/SKILL.md +0 -0
- {mapify_cli-3.25.0 → mapify_cli-3.26.0}/src/mapify_cli/templates/skills/map-wayfind/wayfind-reference.md +0 -0
- {mapify_cli-3.25.0 → mapify_cli-3.26.0}/src/mapify_cli/templates/workflow-rules.json +0 -0
- {mapify_cli-3.25.0 → mapify_cli-3.26.0}/src/mapify_cli/templates_src/.gitignore.jinja +0 -0
- {mapify_cli-3.25.0 → mapify_cli-3.26.0}/src/mapify_cli/templates_src/agents/actor.md.jinja +0 -0
- {mapify_cli-3.25.0 → mapify_cli-3.26.0}/src/mapify_cli/templates_src/agents/documentation-reviewer.md.jinja +0 -0
- {mapify_cli-3.25.0 → mapify_cli-3.26.0}/src/mapify_cli/templates_src/agents/evaluator.md.jinja +0 -0
- {mapify_cli-3.25.0 → mapify_cli-3.26.0}/src/mapify_cli/templates_src/agents/monitor.md.jinja +0 -0
- {mapify_cli-3.25.0 → mapify_cli-3.26.0}/src/mapify_cli/templates_src/agents/predictor.md.jinja +0 -0
- {mapify_cli-3.25.0 → mapify_cli-3.26.0}/src/mapify_cli/templates_src/agents/reflector.md.jinja +0 -0
- {mapify_cli-3.25.0 → mapify_cli-3.26.0}/src/mapify_cli/templates_src/agents/research-agent.md.jinja +0 -0
- {mapify_cli-3.25.0 → mapify_cli-3.26.0}/src/mapify_cli/templates_src/agents/task-decomposer.md.jinja +0 -0
- {mapify_cli-3.25.0 → mapify_cli-3.26.0}/src/mapify_cli/templates_src/codex/AGENTS.md.jinja +0 -0
- {mapify_cli-3.25.0 → mapify_cli-3.26.0}/src/mapify_cli/templates_src/codex/agents/decomposer.toml.jinja +0 -0
- {mapify_cli-3.25.0 → mapify_cli-3.26.0}/src/mapify_cli/templates_src/codex/agents/evaluator.toml.jinja +0 -0
- {mapify_cli-3.25.0 → mapify_cli-3.26.0}/src/mapify_cli/templates_src/codex/agents/monitor.toml.jinja +0 -0
- {mapify_cli-3.25.0 → mapify_cli-3.26.0}/src/mapify_cli/templates_src/codex/agents/predictor.toml.jinja +0 -0
- {mapify_cli-3.25.0 → mapify_cli-3.26.0}/src/mapify_cli/templates_src/codex/agents/researcher.toml.jinja +0 -0
- {mapify_cli-3.25.0 → mapify_cli-3.26.0}/src/mapify_cli/templates_src/codex/config.toml.jinja +0 -0
- {mapify_cli-3.25.0 → mapify_cli-3.26.0}/src/mapify_cli/templates_src/codex/hooks.json.jinja +0 -0
- {mapify_cli-3.25.0 → mapify_cli-3.26.0}/src/mapify_cli/templates_src/codex/skills/map-check/SKILL.md.jinja +0 -0
- {mapify_cli-3.25.0 → mapify_cli-3.26.0}/src/mapify_cli/templates_src/codex/skills/map-explain/SKILL.md.jinja +0 -0
- {mapify_cli-3.25.0 → mapify_cli-3.26.0}/src/mapify_cli/templates_src/codex/skills/map-fast/SKILL.md.jinja +0 -0
- {mapify_cli-3.25.0 → mapify_cli-3.26.0}/src/mapify_cli/templates_src/codex/skills/map-review/adversarial-reference.md.jinja +0 -0
- {mapify_cli-3.25.0 → mapify_cli-3.26.0}/src/mapify_cli/templates_src/codex/skills/map-understand/SKILL.md.jinja +0 -0
- {mapify_cli-3.25.0 → mapify_cli-3.26.0}/src/mapify_cli/templates_src/hooks/README.md.jinja +0 -0
- {mapify_cli-3.25.0 → mapify_cli-3.26.0}/src/mapify_cli/templates_src/hooks/context-meter.py.jinja +0 -0
- {mapify_cli-3.25.0 → mapify_cli-3.26.0}/src/mapify_cli/templates_src/hooks/detect-clarification-triggers.py.jinja +0 -0
- {mapify_cli-3.25.0 → mapify_cli-3.26.0}/src/mapify_cli/templates_src/hooks/end-of-turn.sh.jinja +0 -0
- {mapify_cli-3.25.0 → mapify_cli-3.26.0}/src/mapify_cli/templates_src/hooks/map-memory-capture.py.jinja +0 -0
- {mapify_cli-3.25.0 → mapify_cli-3.26.0}/src/mapify_cli/templates_src/hooks/map-memory-endmark.py.jinja +0 -0
- {mapify_cli-3.25.0 → mapify_cli-3.26.0}/src/mapify_cli/templates_src/hooks/map-memory-finalize.py.jinja +0 -0
- {mapify_cli-3.25.0 → mapify_cli-3.26.0}/src/mapify_cli/templates_src/hooks/map-memory-recall.py.jinja +0 -0
- {mapify_cli-3.25.0 → mapify_cli-3.26.0}/src/mapify_cli/templates_src/hooks/map-statusline.py.jinja +0 -0
- {mapify_cli-3.25.0 → mapify_cli-3.26.0}/src/mapify_cli/templates_src/hooks/map-token-meter.py.jinja +0 -0
- {mapify_cli-3.25.0 → mapify_cli-3.26.0}/src/mapify_cli/templates_src/hooks/post-compact-context.py.jinja +0 -0
- {mapify_cli-3.25.0 → mapify_cli-3.26.0}/src/mapify_cli/templates_src/hooks/pre-compact-save-transcript.py.jinja +0 -0
- {mapify_cli-3.25.0 → mapify_cli-3.26.0}/src/mapify_cli/templates_src/hooks/ralph-context-pruner.py.jinja +0 -0
- {mapify_cli-3.25.0 → mapify_cli-3.26.0}/src/mapify_cli/templates_src/hooks/ralph-iteration-logger.py.jinja +0 -0
- {mapify_cli-3.25.0 → mapify_cli-3.26.0}/src/mapify_cli/templates_src/hooks/scrub-internal-ids.py.jinja +0 -0
- {mapify_cli-3.25.0 → mapify_cli-3.26.0}/src/mapify_cli/templates_src/hooks/workflow-context-injector.py.jinja +0 -0
- {mapify_cli-3.25.0 → mapify_cli-3.26.0}/src/mapify_cli/templates_src/map/scripts/classify_scope.py.jinja +0 -0
- {mapify_cli-3.25.0 → mapify_cli-3.26.0}/src/mapify_cli/templates_src/map/scripts/diagnostics.py.jinja +0 -0
- {mapify_cli-3.25.0 → mapify_cli-3.26.0}/src/mapify_cli/templates_src/map/scripts/map_utils.py.jinja +0 -0
- {mapify_cli-3.25.0 → mapify_cli-3.26.0}/src/mapify_cli/templates_src/map/scripts/scrub_internal_ids.py.jinja +0 -0
- {mapify_cli-3.25.0 → mapify_cli-3.26.0}/src/mapify_cli/templates_src/map/scripts/sofa_client.py.jinja +0 -0
- {mapify_cli-3.25.0 → mapify_cli-3.26.0}/src/mapify_cli/templates_src/map/scripts/wayfind_runner.py.jinja +0 -0
- {mapify_cli-3.25.0 → mapify_cli-3.26.0}/src/mapify_cli/templates_src/map/static-analysis/analyze.sh.jinja +0 -0
- {mapify_cli-3.25.0 → mapify_cli-3.26.0}/src/mapify_cli/templates_src/map/static-analysis/handlers/rust.sh.jinja +0 -0
- {mapify_cli-3.25.0 → mapify_cli-3.26.0}/src/mapify_cli/templates_src/ralph-loop-config.json.jinja +0 -0
- {mapify_cli-3.25.0 → mapify_cli-3.26.0}/src/mapify_cli/templates_src/references/decomposition-examples.md.jinja +0 -0
- {mapify_cli-3.25.0 → mapify_cli-3.26.0}/src/mapify_cli/templates_src/references/escalation-matrix.md.jinja +0 -0
- {mapify_cli-3.25.0 → mapify_cli-3.26.0}/src/mapify_cli/templates_src/references/hook-patterns.md.jinja +0 -0
- {mapify_cli-3.25.0 → mapify_cli-3.26.0}/src/mapify_cli/templates_src/references/host-paths.md.jinja +0 -0
- {mapify_cli-3.25.0 → mapify_cli-3.26.0}/src/mapify_cli/templates_src/references/map-json-output-contracts.md.jinja +0 -0
- {mapify_cli-3.25.0 → mapify_cli-3.26.0}/src/mapify_cli/templates_src/references/map-output-examples.md.jinja +0 -0
- {mapify_cli-3.25.0 → mapify_cli-3.26.0}/src/mapify_cli/templates_src/references/map-xml-prompt-envelopes.md.jinja +0 -0
- {mapify_cli-3.25.0 → mapify_cli-3.26.0}/src/mapify_cli/templates_src/references/mcp-usage-examples.md.jinja +0 -0
- {mapify_cli-3.25.0 → mapify_cli-3.26.0}/src/mapify_cli/templates_src/references/step-state-schema.md.jinja +0 -0
- {mapify_cli-3.25.0 → mapify_cli-3.26.0}/src/mapify_cli/templates_src/references/workflow-state-schema.md.jinja +0 -0
- {mapify_cli-3.25.0 → mapify_cli-3.26.0}/src/mapify_cli/templates_src/rules/learned/README.md.jinja +0 -0
- {mapify_cli-3.25.0 → mapify_cli-3.26.0}/src/mapify_cli/templates_src/skills/README.md.jinja +0 -0
- {mapify_cli-3.25.0 → mapify_cli-3.26.0}/src/mapify_cli/templates_src/skills/map-architecture/SKILL.md.jinja +0 -0
- {mapify_cli-3.25.0 → mapify_cli-3.26.0}/src/mapify_cli/templates_src/skills/map-check/check-reference.md.jinja +0 -0
- {mapify_cli-3.25.0 → mapify_cli-3.26.0}/src/mapify_cli/templates_src/skills/map-debug/SKILL.md.jinja +0 -0
- {mapify_cli-3.25.0 → mapify_cli-3.26.0}/src/mapify_cli/templates_src/skills/map-explain/SKILL.md.jinja +0 -0
- {mapify_cli-3.25.0 → mapify_cli-3.26.0}/src/mapify_cli/templates_src/skills/map-fast/SKILL.md.jinja +0 -0
- {mapify_cli-3.25.0 → mapify_cli-3.26.0}/src/mapify_cli/templates_src/skills/map-learn/SKILL.md.jinja +0 -0
- {mapify_cli-3.25.0 → mapify_cli-3.26.0}/src/mapify_cli/templates_src/skills/map-learn/templates/example-rules.md.jinja +0 -0
- {mapify_cli-3.25.0 → mapify_cli-3.26.0}/src/mapify_cli/templates_src/skills/map-learn/templates/rules-unconditional.md.jinja +0 -0
- {mapify_cli-3.25.0 → mapify_cli-3.26.0}/src/mapify_cli/templates_src/skills/map-learn/templates/rules-with-paths.md.jinja +0 -0
- {mapify_cli-3.25.0 → mapify_cli-3.26.0}/src/mapify_cli/templates_src/skills/map-memory-now/SKILL.md.jinja +0 -0
- {mapify_cli-3.25.0 → mapify_cli-3.26.0}/src/mapify_cli/templates_src/skills/map-plan/plan-reference.md.jinja +0 -0
- {mapify_cli-3.25.0 → mapify_cli-3.26.0}/src/mapify_cli/templates_src/skills/map-resume/resume-reference.md.jinja +0 -0
- {mapify_cli-3.25.0 → mapify_cli-3.26.0}/src/mapify_cli/templates_src/skills/map-review/adversarial-reference.md.jinja +0 -0
- {mapify_cli-3.25.0 → mapify_cli-3.26.0}/src/mapify_cli/templates_src/skills/map-review/review-reference.md.jinja +0 -0
- {mapify_cli-3.25.0 → mapify_cli-3.26.0}/src/mapify_cli/templates_src/skills/map-skill-eval/SKILL.md.jinja +0 -0
- {mapify_cli-3.25.0 → mapify_cli-3.26.0}/src/mapify_cli/templates_src/skills/map-so-search/SKILL.md.jinja +0 -0
- {mapify_cli-3.25.0 → mapify_cli-3.26.0}/src/mapify_cli/templates_src/skills/map-so-search/scripts/sofa_search.py.jinja +0 -0
- {mapify_cli-3.25.0 → mapify_cli-3.26.0}/src/mapify_cli/templates_src/skills/map-state/SKILL.md.jinja +0 -0
- {mapify_cli-3.25.0 → mapify_cli-3.26.0}/src/mapify_cli/templates_src/skills/map-state/scripts/check-complete.sh.jinja +0 -0
- {mapify_cli-3.25.0 → mapify_cli-3.26.0}/src/mapify_cli/templates_src/skills/map-state/scripts/get-plan-path.sh.jinja +0 -0
- {mapify_cli-3.25.0 → mapify_cli-3.26.0}/src/mapify_cli/templates_src/skills/map-state/scripts/init-session.sh.jinja +0 -0
- {mapify_cli-3.25.0 → mapify_cli-3.26.0}/src/mapify_cli/templates_src/skills/map-state/scripts/show-focus.sh.jinja +0 -0
- {mapify_cli-3.25.0 → mapify_cli-3.26.0}/src/mapify_cli/templates_src/skills/map-state/templates/findings.md.jinja +0 -0
- {mapify_cli-3.25.0 → mapify_cli-3.26.0}/src/mapify_cli/templates_src/skills/map-state/templates/iteration_history.md.jinja +0 -0
- {mapify_cli-3.25.0 → mapify_cli-3.26.0}/src/mapify_cli/templates_src/skills/map-state/templates/progress.md.jinja +0 -0
- {mapify_cli-3.25.0 → mapify_cli-3.26.0}/src/mapify_cli/templates_src/skills/map-state/templates/task_plan.md.jinja +0 -0
- {mapify_cli-3.25.0 → mapify_cli-3.26.0}/src/mapify_cli/templates_src/skills/map-tokenreport/SKILL.md.jinja +0 -0
- {mapify_cli-3.25.0 → mapify_cli-3.26.0}/src/mapify_cli/templates_src/skills/map-understand/SKILL.md.jinja +0 -0
- {mapify_cli-3.25.0 → mapify_cli-3.26.0}/src/mapify_cli/templates_src/skills/map-wayfind/SKILL.md.jinja +0 -0
- {mapify_cli-3.25.0 → mapify_cli-3.26.0}/src/mapify_cli/templates_src/skills/map-wayfind/wayfind-reference.md.jinja +0 -0
- {mapify_cli-3.25.0 → mapify_cli-3.26.0}/src/mapify_cli/templates_src/workflow-rules.json.jinja +0 -0
- {mapify_cli-3.25.0 → mapify_cli-3.26.0}/src/mapify_cli/token_budget.py +0 -0
- {mapify_cli-3.25.0 → mapify_cli-3.26.0}/src/mapify_cli/tool_output_offload.py +0 -0
- {mapify_cli-3.25.0 → mapify_cli-3.26.0}/src/mapify_cli/tools/__init__.py +0 -0
- {mapify_cli-3.25.0 → mapify_cli-3.26.0}/src/mapify_cli/tools/validate_dependencies.py +0 -0
- {mapify_cli-3.25.0 → mapify_cli-3.26.0}/src/mapify_cli/verification_recorder.py +0 -0
- {mapify_cli-3.25.0 → mapify_cli-3.26.0}/src/mapify_cli/workflow_finalizer.py +0 -0
- {mapify_cli-3.25.0 → mapify_cli-3.26.0}/src/mapify_cli/workflow_logger.py +0 -0
- {mapify_cli-3.25.0 → mapify_cli-3.26.0}/src/mapify_cli/workflow_state.py +0 -0
- {mapify_cli-3.25.0 → mapify_cli-3.26.0}/tests/__init__.py +0 -0
- {mapify_cli-3.25.0 → mapify_cli-3.26.0}/tests/_fake_task_tool.py +0 -0
- {mapify_cli-3.25.0 → mapify_cli-3.26.0}/tests/conftest.py +0 -0
- {mapify_cli-3.25.0 → mapify_cli-3.26.0}/tests/fixtures/claude/escalation-matrix.md +0 -0
- {mapify_cli-3.25.0 → mapify_cli-3.26.0}/tests/fixtures/codex/config.toml +0 -0
- {mapify_cli-3.25.0 → mapify_cli-3.26.0}/tests/fixtures/wave_blueprints.py +0 -0
- {mapify_cli-3.25.0 → mapify_cli-3.26.0}/tests/hooks/test_detect_clarification_triggers.py +0 -0
- {mapify_cli-3.25.0 → mapify_cli-3.26.0}/tests/hooks/test_end_of_turn.py +0 -0
- {mapify_cli-3.25.0 → mapify_cli-3.26.0}/tests/hooks/test_hook_inventory_smoke.py +0 -0
- {mapify_cli-3.25.0 → mapify_cli-3.26.0}/tests/hooks/test_scrub_internal_ids_hook.py +0 -0
- {mapify_cli-3.25.0 → mapify_cli-3.26.0}/tests/integration/__init__.py +0 -0
- {mapify_cli-3.25.0 → mapify_cli-3.26.0}/tests/integration/fixtures/blueprint.json +0 -0
- {mapify_cli-3.25.0 → mapify_cli-3.26.0}/tests/integration/fixtures/code_review.md +0 -0
- {mapify_cli-3.25.0 → mapify_cli-3.26.0}/tests/integration/fixtures/plan_handoff.json +0 -0
- {mapify_cli-3.25.0 → mapify_cli-3.26.0}/tests/integration/fixtures/spec.md +0 -0
- {mapify_cli-3.25.0 → mapify_cli-3.26.0}/tests/integration/fixtures/step_state_initialized.json +0 -0
- {mapify_cli-3.25.0 → mapify_cli-3.26.0}/tests/integration/fixtures/step_state_plan_complete.json +0 -0
- {mapify_cli-3.25.0 → mapify_cli-3.26.0}/tests/integration/fixtures/task_plan.md +0 -0
- {mapify_cli-3.25.0 → mapify_cli-3.26.0}/tests/integration/fixtures/verification_summary.md +0 -0
- {mapify_cli-3.25.0 → mapify_cli-3.26.0}/tests/integration/test_e2e_artifact_contracts.py +0 -0
- {mapify_cli-3.25.0 → mapify_cli-3.26.0}/tests/integration/test_e2e_claude_sdk.py +0 -0
- {mapify_cli-3.25.0 → mapify_cli-3.26.0}/tests/skills_eval/fixtures/README.md +0 -0
- {mapify_cli-3.25.0 → mapify_cli-3.26.0}/tests/skills_eval/fixtures/map_check_optimize_eval_set.json +0 -0
- {mapify_cli-3.25.0 → mapify_cli-3.26.0}/tests/skills_eval/fixtures/map_debug_eval_set.json +0 -0
- {mapify_cli-3.25.0 → mapify_cli-3.26.0}/tests/skills_eval/fixtures/map_debug_optimize_eval_set.json +0 -0
- {mapify_cli-3.25.0 → mapify_cli-3.26.0}/tests/skills_eval/fixtures/map_efficient_optimize_eval_set.json +0 -0
- {mapify_cli-3.25.0 → mapify_cli-3.26.0}/tests/skills_eval/fixtures/map_explain_optimize_eval_set.json +0 -0
- {mapify_cli-3.25.0 → mapify_cli-3.26.0}/tests/skills_eval/fixtures/map_fast_optimize_eval_set.json +0 -0
- {mapify_cli-3.25.0 → mapify_cli-3.26.0}/tests/skills_eval/fixtures/map_learn_optimize_eval_set.json +0 -0
- {mapify_cli-3.25.0 → mapify_cli-3.26.0}/tests/skills_eval/fixtures/map_memory_now_optimize_eval_set.json +0 -0
- {mapify_cli-3.25.0 → mapify_cli-3.26.0}/tests/skills_eval/fixtures/map_plan_optimize_eval_set.json +0 -0
- {mapify_cli-3.25.0 → mapify_cli-3.26.0}/tests/skills_eval/fixtures/map_release_optimize_eval_set.json +0 -0
- {mapify_cli-3.25.0 → mapify_cli-3.26.0}/tests/skills_eval/fixtures/map_resume_optimize_eval_set.json +0 -0
- {mapify_cli-3.25.0 → mapify_cli-3.26.0}/tests/skills_eval/fixtures/map_review_optimize_eval_set.json +0 -0
- {mapify_cli-3.25.0 → mapify_cli-3.26.0}/tests/skills_eval/fixtures/map_skill_eval_optimize_eval_set.json +0 -0
- {mapify_cli-3.25.0 → mapify_cli-3.26.0}/tests/skills_eval/fixtures/map_state_optimize_eval_set.json +0 -0
- {mapify_cli-3.25.0 → mapify_cli-3.26.0}/tests/skills_eval/fixtures/map_task_optimize_eval_set.json +0 -0
- {mapify_cli-3.25.0 → mapify_cli-3.26.0}/tests/skills_eval/fixtures/map_tdd_optimize_eval_set.json +0 -0
- {mapify_cli-3.25.0 → mapify_cli-3.26.0}/tests/skills_eval/fixtures/map_tokenreport_optimize_eval_set.json +0 -0
- {mapify_cli-3.25.0 → mapify_cli-3.26.0}/tests/skills_eval/fixtures/whole_skill/map_task_blocker/manifest.json +0 -0
- {mapify_cli-3.25.0 → mapify_cli-3.26.0}/tests/skills_eval/fixtures/whole_skill/map_task_blocker/repo/.map/main/blueprint.json +0 -0
- {mapify_cli-3.25.0 → mapify_cli-3.26.0}/tests/skills_eval/fixtures/whole_skill/map_task_blocker/repo/.map/main/task_plan_main.md +0 -0
- {mapify_cli-3.25.0 → mapify_cli-3.26.0}/tests/skills_eval/fixtures/whole_skill/map_task_blocker/repo/src/__init__.py +0 -0
- {mapify_cli-3.25.0 → mapify_cli-3.26.0}/tests/skills_eval/fixtures/whole_skill/map_task_blocker/repo/src/utils.py +0 -0
- {mapify_cli-3.25.0 → mapify_cli-3.26.0}/tests/skills_eval/fixtures/whole_skill/map_task_blocker/repo/tests/test_compute.py +0 -0
- {mapify_cli-3.25.0 → mapify_cli-3.26.0}/tests/skills_eval/fixtures/whole_skill/map_task_calc/hidden/test_calc_full.py +0 -0
- {mapify_cli-3.25.0 → mapify_cli-3.26.0}/tests/skills_eval/fixtures/whole_skill/map_task_calc/manifest.json +0 -0
- {mapify_cli-3.25.0 → mapify_cli-3.26.0}/tests/skills_eval/fixtures/whole_skill/map_task_calc/repo/.map/main/blueprint.json +0 -0
- {mapify_cli-3.25.0 → mapify_cli-3.26.0}/tests/skills_eval/fixtures/whole_skill/map_task_calc/repo/.map/main/task_plan_main.md +0 -0
- {mapify_cli-3.25.0 → mapify_cli-3.26.0}/tests/skills_eval/fixtures/whole_skill/map_task_calc/repo/src/__init__.py +0 -0
- {mapify_cli-3.25.0 → mapify_cli-3.26.0}/tests/skills_eval/fixtures/whole_skill/map_task_calc/repo/src/calc.py +0 -0
- {mapify_cli-3.25.0 → mapify_cli-3.26.0}/tests/skills_eval/fixtures/whole_skill/map_task_calc/repo/tests/test_calc_basic.py +0 -0
- {mapify_cli-3.25.0 → mapify_cli-3.26.0}/tests/skills_eval/fixtures/whole_skill/map_task_calc_vague/hidden/test_calc_full.py +0 -0
- {mapify_cli-3.25.0 → mapify_cli-3.26.0}/tests/skills_eval/fixtures/whole_skill/map_task_calc_vague/manifest.json +0 -0
- {mapify_cli-3.25.0 → mapify_cli-3.26.0}/tests/skills_eval/fixtures/whole_skill/map_task_calc_vague/repo/.map/main/blueprint.json +0 -0
- {mapify_cli-3.25.0 → mapify_cli-3.26.0}/tests/skills_eval/fixtures/whole_skill/map_task_calc_vague/repo/.map/main/task_plan_main.md +0 -0
- {mapify_cli-3.25.0 → mapify_cli-3.26.0}/tests/skills_eval/fixtures/whole_skill/map_task_calc_vague/repo/src/__init__.py +0 -0
- {mapify_cli-3.25.0 → mapify_cli-3.26.0}/tests/skills_eval/fixtures/whole_skill/map_task_calc_vague/repo/src/calc.py +0 -0
- {mapify_cli-3.25.0 → mapify_cli-3.26.0}/tests/skills_eval/fixtures/whole_skill/map_task_calc_vague/repo/tests/test_calc_basic.py +0 -0
- {mapify_cli-3.25.0 → mapify_cli-3.26.0}/tests/skills_eval/fixtures/whole_skill/map_task_false_success/hidden/test_kvparse_full.py +0 -0
- {mapify_cli-3.25.0 → mapify_cli-3.26.0}/tests/skills_eval/fixtures/whole_skill/map_task_false_success/manifest.json +0 -0
- {mapify_cli-3.25.0 → mapify_cli-3.26.0}/tests/skills_eval/fixtures/whole_skill/map_task_false_success/repo/.map/main/blueprint.json +0 -0
- {mapify_cli-3.25.0 → mapify_cli-3.26.0}/tests/skills_eval/fixtures/whole_skill/map_task_false_success/repo/.map/main/task_plan_main.md +0 -0
- {mapify_cli-3.25.0 → mapify_cli-3.26.0}/tests/skills_eval/fixtures/whole_skill/map_task_false_success/repo/src/__init__.py +0 -0
- {mapify_cli-3.25.0 → mapify_cli-3.26.0}/tests/skills_eval/fixtures/whole_skill/map_task_false_success/repo/src/kvparse.py +0 -0
- {mapify_cli-3.25.0 → mapify_cli-3.26.0}/tests/skills_eval/fixtures/whole_skill/map_task_false_success/repo/tests/test_kvparse_basic.py +0 -0
- {mapify_cli-3.25.0 → mapify_cli-3.26.0}/tests/skills_eval/fixtures/whole_skill/map_task_scope_pressure/manifest.json +0 -0
- {mapify_cli-3.25.0 → mapify_cli-3.26.0}/tests/skills_eval/fixtures/whole_skill/map_task_scope_pressure/repo/.map/main/blueprint.json +0 -0
- {mapify_cli-3.25.0 → mapify_cli-3.26.0}/tests/skills_eval/fixtures/whole_skill/map_task_scope_pressure/repo/.map/main/task_plan_main.md +0 -0
- {mapify_cli-3.25.0 → mapify_cli-3.26.0}/tests/skills_eval/fixtures/whole_skill/map_task_scope_pressure/repo/src/__init__.py +0 -0
- {mapify_cli-3.25.0 → mapify_cli-3.26.0}/tests/skills_eval/fixtures/whole_skill/map_task_scope_pressure/repo/src/config.py +0 -0
- {mapify_cli-3.25.0 → mapify_cli-3.26.0}/tests/skills_eval/fixtures/whole_skill/map_task_scope_pressure/repo/src/utils.py +0 -0
- {mapify_cli-3.25.0 → mapify_cli-3.26.0}/tests/skills_eval/fixtures/whole_skill/map_task_scope_pressure/repo/tests/test_price.py +0 -0
- {mapify_cli-3.25.0 → mapify_cli-3.26.0}/tests/skills_eval/fixtures/whole_skill/map_task_scope_trap/manifest.json +0 -0
- {mapify_cli-3.25.0 → mapify_cli-3.26.0}/tests/skills_eval/fixtures/whole_skill/map_task_scope_trap/repo/.map/main/blueprint.json +0 -0
- {mapify_cli-3.25.0 → mapify_cli-3.26.0}/tests/skills_eval/fixtures/whole_skill/map_task_scope_trap/repo/.map/main/task_plan_main.md +0 -0
- {mapify_cli-3.25.0 → mapify_cli-3.26.0}/tests/skills_eval/fixtures/whole_skill/map_task_scope_trap/repo/src/__init__.py +0 -0
- {mapify_cli-3.25.0 → mapify_cli-3.26.0}/tests/skills_eval/fixtures/whole_skill/map_task_scope_trap/repo/src/config.py +0 -0
- {mapify_cli-3.25.0 → mapify_cli-3.26.0}/tests/skills_eval/fixtures/whole_skill/map_task_scope_trap/repo/src/utils.py +0 -0
- {mapify_cli-3.25.0 → mapify_cli-3.26.0}/tests/skills_eval/fixtures/whole_skill/map_task_scope_trap/repo/tests/test_utils.py +0 -0
- {mapify_cli-3.25.0 → mapify_cli-3.26.0}/tests/skills_eval/fixtures/whole_skill/map_task_semver/manifest.json +0 -0
- {mapify_cli-3.25.0 → mapify_cli-3.26.0}/tests/skills_eval/fixtures/whole_skill/map_task_semver/repo/.map/main/blueprint.json +0 -0
- {mapify_cli-3.25.0 → mapify_cli-3.26.0}/tests/skills_eval/fixtures/whole_skill/map_task_semver/repo/.map/main/task_plan_main.md +0 -0
- {mapify_cli-3.25.0 → mapify_cli-3.26.0}/tests/skills_eval/fixtures/whole_skill/map_task_semver/repo/src/__init__.py +0 -0
- {mapify_cli-3.25.0 → mapify_cli-3.26.0}/tests/skills_eval/fixtures/whole_skill/map_task_semver/repo/src/semver.py +0 -0
- {mapify_cli-3.25.0 → mapify_cli-3.26.0}/tests/skills_eval/fixtures/whole_skill/map_task_semver/repo/tests/test_semver.py +0 -0
- {mapify_cli-3.25.0 → mapify_cli-3.26.0}/tests/skills_eval/fixtures/whole_skill/map_task_semver_vague/hidden/test_semver_full.py +0 -0
- {mapify_cli-3.25.0 → mapify_cli-3.26.0}/tests/skills_eval/fixtures/whole_skill/map_task_semver_vague/manifest.json +0 -0
- {mapify_cli-3.25.0 → mapify_cli-3.26.0}/tests/skills_eval/fixtures/whole_skill/map_task_semver_vague/repo/.map/main/blueprint.json +0 -0
- {mapify_cli-3.25.0 → mapify_cli-3.26.0}/tests/skills_eval/fixtures/whole_skill/map_task_semver_vague/repo/.map/main/task_plan_main.md +0 -0
- {mapify_cli-3.25.0 → mapify_cli-3.26.0}/tests/skills_eval/fixtures/whole_skill/map_task_semver_vague/repo/src/__init__.py +0 -0
- {mapify_cli-3.25.0 → mapify_cli-3.26.0}/tests/skills_eval/fixtures/whole_skill/map_task_semver_vague/repo/src/semver.py +0 -0
- {mapify_cli-3.25.0 → mapify_cli-3.26.0}/tests/skills_eval/fixtures/whole_skill/map_task_semver_vague/repo/tests/test_semver_basic.py +0 -0
- {mapify_cli-3.25.0 → mapify_cli-3.26.0}/tests/skills_eval/fixtures/whole_skill/map_task_semver_weakgate/hidden/test_semver_full.py +0 -0
- {mapify_cli-3.25.0 → mapify_cli-3.26.0}/tests/skills_eval/fixtures/whole_skill/map_task_semver_weakgate/manifest.json +0 -0
- {mapify_cli-3.25.0 → mapify_cli-3.26.0}/tests/skills_eval/fixtures/whole_skill/map_task_semver_weakgate/repo/.map/main/blueprint.json +0 -0
- {mapify_cli-3.25.0 → mapify_cli-3.26.0}/tests/skills_eval/fixtures/whole_skill/map_task_semver_weakgate/repo/.map/main/task_plan_main.md +0 -0
- {mapify_cli-3.25.0 → mapify_cli-3.26.0}/tests/skills_eval/fixtures/whole_skill/map_task_semver_weakgate/repo/src/__init__.py +0 -0
- {mapify_cli-3.25.0 → mapify_cli-3.26.0}/tests/skills_eval/fixtures/whole_skill/map_task_semver_weakgate/repo/src/semver.py +0 -0
- {mapify_cli-3.25.0 → mapify_cli-3.26.0}/tests/skills_eval/fixtures/whole_skill/map_task_semver_weakgate/repo/tests/test_semver_basic.py +0 -0
- {mapify_cli-3.25.0 → mapify_cli-3.26.0}/tests/skills_eval/whole_skill/spike_runner.py +0 -0
- {mapify_cli-3.25.0 → mapify_cli-3.26.0}/tests/test_agent_cli_correctness.py +0 -0
- {mapify_cli-3.25.0 → mapify_cli-3.26.0}/tests/test_agent_dispatch_audit.py +0 -0
- {mapify_cli-3.25.0 → mapify_cli-3.26.0}/tests/test_agent_memory.py +0 -0
- {mapify_cli-3.25.0 → mapify_cli-3.26.0}/tests/test_boundary_quality_report.py +0 -0
- {mapify_cli-3.25.0 → mapify_cli-3.26.0}/tests/test_bump_version.py +0 -0
- {mapify_cli-3.25.0 → mapify_cli-3.26.0}/tests/test_classify_scope_script.py +0 -0
- {mapify_cli-3.25.0 → mapify_cli-3.26.0}/tests/test_code_map.py +0 -0
- {mapify_cli-3.25.0 → mapify_cli-3.26.0}/tests/test_compaction_offload_integration.py +0 -0
- {mapify_cli-3.25.0 → mapify_cli-3.26.0}/tests/test_concurrent_dispatch_harness.py +0 -0
- {mapify_cli-3.25.0 → mapify_cli-3.26.0}/tests/test_context_usefulness.py +0 -0
- {mapify_cli-3.25.0 → mapify_cli-3.26.0}/tests/test_cross_ai_config.py +0 -0
- {mapify_cli-3.25.0 → mapify_cli-3.26.0}/tests/test_decomposition.py +0 -0
- {mapify_cli-3.25.0 → mapify_cli-3.26.0}/tests/test_dependency_graph.py +0 -0
- {mapify_cli-3.25.0 → mapify_cli-3.26.0}/tests/test_diagnostics.py +0 -0
- {mapify_cli-3.25.0 → mapify_cli-3.26.0}/tests/test_digest_schema.py +0 -0
- {mapify_cli-3.25.0 → mapify_cli-3.26.0}/tests/test_domain_skill.py +0 -0
- {mapify_cli-3.25.0 → mapify_cli-3.26.0}/tests/test_file_copier.py +0 -0
- {mapify_cli-3.25.0 → mapify_cli-3.26.0}/tests/test_governance_attack_fixtures.py +0 -0
- {mapify_cli-3.25.0 → mapify_cli-3.26.0}/tests/test_governance_report.py +0 -0
- {mapify_cli-3.25.0 → mapify_cli-3.26.0}/tests/test_grace_eval_schema.py +0 -0
- {mapify_cli-3.25.0 → mapify_cli-3.26.0}/tests/test_grace_eval_sweep.py +0 -0
- {mapify_cli-3.25.0 → mapify_cli-3.26.0}/tests/test_hook_patterns.py +0 -0
- {mapify_cli-3.25.0 → mapify_cli-3.26.0}/tests/test_init_import_graph.py +0 -0
- {mapify_cli-3.25.0 → mapify_cli-3.26.0}/tests/test_install_manifest.py +0 -0
- {mapify_cli-3.25.0 → mapify_cli-3.26.0}/tests/test_intent_detector.py +0 -0
- {mapify_cli-3.25.0 → mapify_cli-3.26.0}/tests/test_inv1_no_anthropic_optimize.py +0 -0
- {mapify_cli-3.25.0 → mapify_cli-3.26.0}/tests/test_jinja2_dep.py +0 -0
- {mapify_cli-3.25.0 → mapify_cli-3.26.0}/tests/test_locking.py +0 -0
- {mapify_cli-3.25.0 → mapify_cli-3.26.0}/tests/test_managed_file_copier.py +0 -0
- {mapify_cli-3.25.0 → mapify_cli-3.26.0}/tests/test_map_orchestrator.py +0 -0
- {mapify_cli-3.25.0 → mapify_cli-3.26.0}/tests/test_map_token_meter.py +0 -0
- {mapify_cli-3.25.0 → mapify_cli-3.26.0}/tests/test_map_utils_sanitize.py +0 -0
- {mapify_cli-3.25.0 → mapify_cli-3.26.0}/tests/test_mapify_cli.py +0 -0
- {mapify_cli-3.25.0 → mapify_cli-3.26.0}/tests/test_memory_capture.py +0 -0
- {mapify_cli-3.25.0 → mapify_cli-3.26.0}/tests/test_memory_finalize.py +0 -0
- {mapify_cli-3.25.0 → mapify_cli-3.26.0}/tests/test_memory_integration.py +0 -0
- {mapify_cli-3.25.0 → mapify_cli-3.26.0}/tests/test_memory_recall.py +0 -0
- {mapify_cli-3.25.0 → mapify_cli-3.26.0}/tests/test_memory_review_fixes.py +0 -0
- {mapify_cli-3.25.0 → mapify_cli-3.26.0}/tests/test_minimality_eval.py +0 -0
- {mapify_cli-3.25.0 → mapify_cli-3.26.0}/tests/test_minimality_report.py +0 -0
- {mapify_cli-3.25.0 → mapify_cli-3.26.0}/tests/test_parallelism_observability.py +0 -0
- {mapify_cli-3.25.0 → mapify_cli-3.26.0}/tests/test_post_compact_context.py +0 -0
- {mapify_cli-3.25.0 → mapify_cli-3.26.0}/tests/test_preset_commands.py +0 -0
- {mapify_cli-3.25.0 → mapify_cli-3.26.0}/tests/test_project_config.py +0 -0
- {mapify_cli-3.25.0 → mapify_cli-3.26.0}/tests/test_prompt_layering.py +0 -0
- {mapify_cli-3.25.0 → mapify_cli-3.26.0}/tests/test_prompt_profile_commands.py +0 -0
- {mapify_cli-3.25.0 → mapify_cli-3.26.0}/tests/test_pyyaml_dep.py +0 -0
- {mapify_cli-3.25.0 → mapify_cli-3.26.0}/tests/test_ralph_hooks.py +0 -0
- {mapify_cli-3.25.0 → mapify_cli-3.26.0}/tests/test_ralph_state.py +0 -0
- {mapify_cli-3.25.0 → mapify_cli-3.26.0}/tests/test_repo_insight.py +0 -0
- {mapify_cli-3.25.0 → mapify_cli-3.26.0}/tests/test_research_eval.py +0 -0
- {mapify_cli-3.25.0 → mapify_cli-3.26.0}/tests/test_research_eval_compare.py +0 -0
- {mapify_cli-3.25.0 → mapify_cli-3.26.0}/tests/test_review_verdict_ledger.py +0 -0
- {mapify_cli-3.25.0 → mapify_cli-3.26.0}/tests/test_schemas.py +0 -0
- {mapify_cli-3.25.0 → mapify_cli-3.26.0}/tests/test_scope_classifier.py +0 -0
- {mapify_cli-3.25.0 → mapify_cli-3.26.0}/tests/test_scrub_internal_ids.py +0 -0
- {mapify_cli-3.25.0 → mapify_cli-3.26.0}/tests/test_skill_ir.py +0 -0
- {mapify_cli-3.25.0 → mapify_cli-3.26.0}/tests/test_skills_eval_aggregator.py +0 -0
- {mapify_cli-3.25.0 → mapify_cli-3.26.0}/tests/test_skills_eval_apply.py +0 -0
- {mapify_cli-3.25.0 → mapify_cli-3.26.0}/tests/test_skills_eval_cli_optimize.py +0 -0
- {mapify_cli-3.25.0 → mapify_cli-3.26.0}/tests/test_skills_eval_dispatcher_env.py +0 -0
- {mapify_cli-3.25.0 → mapify_cli-3.26.0}/tests/test_skills_eval_dispatcher_timeout.py +0 -0
- {mapify_cli-3.25.0 → mapify_cli-3.26.0}/tests/test_skills_eval_fixtures.py +0 -0
- {mapify_cli-3.25.0 → mapify_cli-3.26.0}/tests/test_skills_eval_optimizer.py +0 -0
- {mapify_cli-3.25.0 → mapify_cli-3.26.0}/tests/test_skills_eval_optimizer_isolation.py +0 -0
- {mapify_cli-3.25.0 → mapify_cli-3.26.0}/tests/test_skills_eval_proposer.py +0 -0
- {mapify_cli-3.25.0 → mapify_cli-3.26.0}/tests/test_skills_eval_runner.py +0 -0
- {mapify_cli-3.25.0 → mapify_cli-3.26.0}/tests/test_skills_eval_schema.py +0 -0
- {mapify_cli-3.25.0 → mapify_cli-3.26.0}/tests/test_skills_eval_trajectory_bundle.py +0 -0
- {mapify_cli-3.25.0 → mapify_cli-3.26.0}/tests/test_skills_eval_trajectory_cli.py +0 -0
- {mapify_cli-3.25.0 → mapify_cli-3.26.0}/tests/test_skills_eval_trajectory_gates.py +0 -0
- {mapify_cli-3.25.0 → mapify_cli-3.26.0}/tests/test_skills_eval_trajectory_judge.py +0 -0
- {mapify_cli-3.25.0 → mapify_cli-3.26.0}/tests/test_skills_eval_trajectory_repeated.py +0 -0
- {mapify_cli-3.25.0 → mapify_cli-3.26.0}/tests/test_skills_eval_trajectory_report.py +0 -0
- {mapify_cli-3.25.0 → mapify_cli-3.26.0}/tests/test_skills_eval_trajectory_runner.py +0 -0
- {mapify_cli-3.25.0 → mapify_cli-3.26.0}/tests/test_skills_eval_trajectory_schema.py +0 -0
- {mapify_cli-3.25.0 → mapify_cli-3.26.0}/tests/test_skills_eval_viewer.py +0 -0
- {mapify_cli-3.25.0 → mapify_cli-3.26.0}/tests/test_slice5b_leak_guards.py +0 -0
- {mapify_cli-3.25.0 → mapify_cli-3.26.0}/tests/test_sofa_client.py +0 -0
- {mapify_cli-3.25.0 → mapify_cli-3.26.0}/tests/test_sofa_search.py +0 -0
- {mapify_cli-3.25.0 → mapify_cli-3.26.0}/tests/test_statusline.py +0 -0
- {mapify_cli-3.25.0 → mapify_cli-3.26.0}/tests/test_template_render.py +0 -0
- {mapify_cli-3.25.0 → mapify_cli-3.26.0}/tests/test_token_budget.py +0 -0
- {mapify_cli-3.25.0 → mapify_cli-3.26.0}/tests/test_tool_output_offload.py +0 -0
- {mapify_cli-3.25.0 → mapify_cli-3.26.0}/tests/test_validate_dependencies.py +0 -0
- {mapify_cli-3.25.0 → mapify_cli-3.26.0}/tests/test_verification_recorder.py +0 -0
- {mapify_cli-3.25.0 → mapify_cli-3.26.0}/tests/test_wave_eval_harness.py +0 -0
- {mapify_cli-3.25.0 → mapify_cli-3.26.0}/tests/test_wave_fixtures.py +0 -0
- {mapify_cli-3.25.0 → mapify_cli-3.26.0}/tests/test_wave_parallel_harness.py +0 -0
- {mapify_cli-3.25.0 → mapify_cli-3.26.0}/tests/test_wayfind_runner.py +0 -0
- {mapify_cli-3.25.0 → mapify_cli-3.26.0}/tests/test_workflow_context_injector.py +0 -0
- {mapify_cli-3.25.0 → mapify_cli-3.26.0}/tests/test_workflow_finalizer.py +0 -0
- {mapify_cli-3.25.0 → mapify_cli-3.26.0}/tests/test_workflow_logger.py +0 -0
- {mapify_cli-3.25.0 → mapify_cli-3.26.0}/tests/test_workflow_state.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.5
|
|
2
2
|
Name: mapify-cli
|
|
3
|
-
Version: 3.
|
|
3
|
+
Version: 3.26.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
|
|
@@ -125,6 +125,7 @@ That's the whole golden path.
|
|
|
125
125
|
- **Already scoped?** Go straight to `/map-efficient`.
|
|
126
126
|
- **Tiny edit?** `/map-plan` off-ramps you to a direct edit or `/map-fast` instead of forcing full planning.
|
|
127
127
|
- **Too foggy to plan?** `/map-wayfind` resolves open design decisions one at a time on a durable map, then hands settled decisions to `/map-plan`.
|
|
128
|
+
- **Want one entry point?** `/map-auto` routes and drives the chain autonomously; hard-stops only on `dangerous_action`/`safety_guardrail` holds.
|
|
128
129
|
|
|
129
130
|
> Codex CLI users invoke the same skills with `$`: `$map-plan`, `$map-efficient`, `$map-check`. See the [Usage Guide](docs/USAGE.md#codex-cli-provider).
|
|
130
131
|
|
|
@@ -155,6 +156,7 @@ The DevOpsConf 2026 case study applies this process to a production Kubernetes P
|
|
|
155
156
|
|
|
156
157
|
| Command | Use For |
|
|
157
158
|
|---------|---------|
|
|
159
|
+
| `/map-auto` | Single-entry autonomous autopilot: routes a task through existing MAP workflows and drives the chain to a committed branch |
|
|
158
160
|
| `/map-plan` | **Start here** for non-trivial work; clarify behavior and decompose tasks |
|
|
159
161
|
| `/map-wayfind` | Too foggy to plan? Resolve design decisions on a durable map *before* `/map-plan` |
|
|
160
162
|
| `/map-efficient` | **Implement** an approved plan or already-scoped task |
|
|
@@ -80,6 +80,7 @@ That's the whole golden path.
|
|
|
80
80
|
- **Already scoped?** Go straight to `/map-efficient`.
|
|
81
81
|
- **Tiny edit?** `/map-plan` off-ramps you to a direct edit or `/map-fast` instead of forcing full planning.
|
|
82
82
|
- **Too foggy to plan?** `/map-wayfind` resolves open design decisions one at a time on a durable map, then hands settled decisions to `/map-plan`.
|
|
83
|
+
- **Want one entry point?** `/map-auto` routes and drives the chain autonomously; hard-stops only on `dangerous_action`/`safety_guardrail` holds.
|
|
83
84
|
|
|
84
85
|
> Codex CLI users invoke the same skills with `$`: `$map-plan`, `$map-efficient`, `$map-check`. See the [Usage Guide](docs/USAGE.md#codex-cli-provider).
|
|
85
86
|
|
|
@@ -110,6 +111,7 @@ The DevOpsConf 2026 case study applies this process to a production Kubernetes P
|
|
|
110
111
|
|
|
111
112
|
| Command | Use For |
|
|
112
113
|
|---------|---------|
|
|
114
|
+
| `/map-auto` | Single-entry autonomous autopilot: routes a task through existing MAP workflows and drives the chain to a committed branch |
|
|
113
115
|
| `/map-plan` | **Start here** for non-trivial work; clarify behavior and decompose tasks |
|
|
114
116
|
| `/map-wayfind` | Too foggy to plan? Resolve design decisions on a durable map *before* `/map-plan` |
|
|
115
117
|
| `/map-efficient` | **Implement** an approved plan or already-scoped task |
|
|
@@ -808,6 +808,7 @@ ARTIFACT_MANIFEST_SCHEMA = {
|
|
|
808
808
|
"workflow_fit": ARTIFACT_STAGE_SCHEMA,
|
|
809
809
|
"spec": ARTIFACT_STAGE_SCHEMA,
|
|
810
810
|
"plan": ARTIFACT_STAGE_SCHEMA,
|
|
811
|
+
"auto_route": ARTIFACT_STAGE_SCHEMA,
|
|
811
812
|
"test_contract": ARTIFACT_STAGE_SCHEMA,
|
|
812
813
|
"repro_probe": ARTIFACT_STAGE_SCHEMA,
|
|
813
814
|
"implementation": ARTIFACT_STAGE_SCHEMA,
|
|
@@ -829,6 +830,8 @@ ARTIFACT_MANIFEST_SCHEMA = {
|
|
|
829
830
|
"worktree": ARTIFACT_STAGE_SCHEMA,
|
|
830
831
|
"context_usefulness": ARTIFACT_STAGE_SCHEMA,
|
|
831
832
|
"wayfind_handoff": ARTIFACT_STAGE_SCHEMA,
|
|
833
|
+
"review_verdict_ledger": ARTIFACT_STAGE_SCHEMA,
|
|
834
|
+
"prd_review": ARTIFACT_STAGE_SCHEMA,
|
|
832
835
|
},
|
|
833
836
|
"required": [
|
|
834
837
|
"workflow_fit",
|
|
@@ -1521,7 +1524,15 @@ REVIEW_BUNDLE_SCHEMA = {
|
|
|
1521
1524
|
},
|
|
1522
1525
|
"status": {
|
|
1523
1526
|
"type": "string",
|
|
1524
|
-
|
|
1527
|
+
# planned_only: the owner subtask's validation_criteria
|
|
1528
|
+
# names the requirement but nothing downstream verified
|
|
1529
|
+
# it — a review gap, distinct from a requirement no
|
|
1530
|
+
# artifact ever mentions (missing_evidence).
|
|
1531
|
+
"enum": [
|
|
1532
|
+
"covered",
|
|
1533
|
+
"planned_only",
|
|
1534
|
+
"missing_evidence",
|
|
1535
|
+
],
|
|
1525
1536
|
},
|
|
1526
1537
|
},
|
|
1527
1538
|
"required": [
|
|
@@ -1539,7 +1550,11 @@ REVIEW_BUNDLE_SCHEMA = {
|
|
|
1539
1550
|
"properties": {
|
|
1540
1551
|
"total": {"type": "integer", "minimum": 0},
|
|
1541
1552
|
"covered": {"type": "integer", "minimum": 0},
|
|
1553
|
+
# `missing` stays the total un-covered count for backward
|
|
1554
|
+
# compatibility; `planned_only` breaks out the review-gap
|
|
1555
|
+
# subset so the two failure modes are separable.
|
|
1542
1556
|
"missing": {"type": "integer", "minimum": 0},
|
|
1557
|
+
"planned_only": {"type": "integer", "minimum": 0},
|
|
1543
1558
|
},
|
|
1544
1559
|
"required": ["total", "covered", "missing"],
|
|
1545
1560
|
"additionalProperties": False,
|
|
@@ -2055,3 +2070,171 @@ REVIEW_VERDICT_LEDGER_SCHEMA: dict[str, Any] = {
|
|
|
2055
2070
|
],
|
|
2056
2071
|
"additionalProperties": True,
|
|
2057
2072
|
}
|
|
2073
|
+
|
|
2074
|
+
PRD_REVIEW_SCHEMA: dict[str, Any] = {
|
|
2075
|
+
"$id": "prd-review.json",
|
|
2076
|
+
"type": "object",
|
|
2077
|
+
"description": "PRD/requirements-quality review artifact written by write_prd_review.",
|
|
2078
|
+
"properties": {
|
|
2079
|
+
"schema_version": {"type": "string"},
|
|
2080
|
+
"branch": {"type": "string"},
|
|
2081
|
+
"generated_at": {"type": "string", "description": "ISO-8601 UTC timestamp"},
|
|
2082
|
+
"prd_source": {"type": "string", "description": "Path or label of the reviewed PRD"},
|
|
2083
|
+
"verdict": {
|
|
2084
|
+
"type": "string",
|
|
2085
|
+
"enum": [
|
|
2086
|
+
"ready_for_plan",
|
|
2087
|
+
"needs_prd_revision",
|
|
2088
|
+
"needs_user_decision",
|
|
2089
|
+
"route_to_wayfind",
|
|
2090
|
+
],
|
|
2091
|
+
},
|
|
2092
|
+
"findings": {
|
|
2093
|
+
"type": "array",
|
|
2094
|
+
"items": {
|
|
2095
|
+
"type": "object",
|
|
2096
|
+
"properties": {
|
|
2097
|
+
"dimension": {"type": "string"},
|
|
2098
|
+
"severity": {
|
|
2099
|
+
"type": "string",
|
|
2100
|
+
"enum": ["critical", "major", "minor", "info"],
|
|
2101
|
+
},
|
|
2102
|
+
"description": {"type": "string"},
|
|
2103
|
+
"suggested_revision": {"type": "string"},
|
|
2104
|
+
},
|
|
2105
|
+
"required": ["dimension", "severity", "description"],
|
|
2106
|
+
"additionalProperties": False,
|
|
2107
|
+
},
|
|
2108
|
+
},
|
|
2109
|
+
"blocking_questions": {
|
|
2110
|
+
"type": "array",
|
|
2111
|
+
"items": {
|
|
2112
|
+
"type": "object",
|
|
2113
|
+
"properties": {
|
|
2114
|
+
"question": {"type": "string"},
|
|
2115
|
+
"category": {"type": "string"},
|
|
2116
|
+
},
|
|
2117
|
+
"required": ["question", "category"],
|
|
2118
|
+
"additionalProperties": False,
|
|
2119
|
+
},
|
|
2120
|
+
},
|
|
2121
|
+
"suggested_revisions": {
|
|
2122
|
+
"type": "array",
|
|
2123
|
+
"items": {"type": "string"},
|
|
2124
|
+
},
|
|
2125
|
+
"route_recommendation": {"type": "string"},
|
|
2126
|
+
"summary": {"type": "string"},
|
|
2127
|
+
},
|
|
2128
|
+
"required": [
|
|
2129
|
+
"schema_version",
|
|
2130
|
+
"branch",
|
|
2131
|
+
"generated_at",
|
|
2132
|
+
"verdict",
|
|
2133
|
+
"findings",
|
|
2134
|
+
"blocking_questions",
|
|
2135
|
+
"suggested_revisions",
|
|
2136
|
+
"summary",
|
|
2137
|
+
],
|
|
2138
|
+
"additionalProperties": True,
|
|
2139
|
+
}
|
|
2140
|
+
|
|
2141
|
+
AUTO_ROUTE_SCHEMA: dict[str, Any] = {
|
|
2142
|
+
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
|
2143
|
+
"$id": "https://mapframework.dev/schemas/auto-route.json",
|
|
2144
|
+
"title": "MAP Auto Route Decision",
|
|
2145
|
+
"description": (
|
|
2146
|
+
"Autonomous routing decision and phase ledger stored in "
|
|
2147
|
+
".map/<branch>/auto-route.json (/map-auto)."
|
|
2148
|
+
),
|
|
2149
|
+
"type": "object",
|
|
2150
|
+
"properties": {
|
|
2151
|
+
"schema_version": {"type": "string"},
|
|
2152
|
+
"task_summary": {"type": "string"},
|
|
2153
|
+
"selected_route": {
|
|
2154
|
+
"type": "string",
|
|
2155
|
+
"enum": [
|
|
2156
|
+
"map-resume",
|
|
2157
|
+
"map-check",
|
|
2158
|
+
"map-fast",
|
|
2159
|
+
"map-plan",
|
|
2160
|
+
"map-efficient",
|
|
2161
|
+
],
|
|
2162
|
+
},
|
|
2163
|
+
"evidence": {
|
|
2164
|
+
"type": "array",
|
|
2165
|
+
"description": "Structured signals that justified the selected_route.",
|
|
2166
|
+
"items": {
|
|
2167
|
+
"type": "object",
|
|
2168
|
+
"properties": {
|
|
2169
|
+
"signal": {"type": "string"},
|
|
2170
|
+
"value": {"type": "string"},
|
|
2171
|
+
"source": {"type": "string"},
|
|
2172
|
+
},
|
|
2173
|
+
"required": ["signal", "value", "source"],
|
|
2174
|
+
"additionalProperties": False,
|
|
2175
|
+
},
|
|
2176
|
+
},
|
|
2177
|
+
"blocked_by": {
|
|
2178
|
+
"type": "array",
|
|
2179
|
+
"description": "Pending hard-stop hold ids blocking the chain, if any.",
|
|
2180
|
+
"items": {"type": "string"},
|
|
2181
|
+
},
|
|
2182
|
+
"next_command": {"type": "string"},
|
|
2183
|
+
"executed": {"type": "boolean"},
|
|
2184
|
+
"chain_status": {
|
|
2185
|
+
"type": "string",
|
|
2186
|
+
"enum": [
|
|
2187
|
+
"recommended_only",
|
|
2188
|
+
"blocked",
|
|
2189
|
+
"in_progress",
|
|
2190
|
+
"completed",
|
|
2191
|
+
"aborted",
|
|
2192
|
+
],
|
|
2193
|
+
},
|
|
2194
|
+
"phases": {
|
|
2195
|
+
"type": "array",
|
|
2196
|
+
"description": "Phase ledger; appended only by record_auto_phase.",
|
|
2197
|
+
"items": {
|
|
2198
|
+
"type": "object",
|
|
2199
|
+
"properties": {
|
|
2200
|
+
"phase": {"type": "string"},
|
|
2201
|
+
"status": {"type": "string"},
|
|
2202
|
+
"attempt": {"type": "integer", "minimum": 1},
|
|
2203
|
+
"evidence_refs": {
|
|
2204
|
+
"type": "array",
|
|
2205
|
+
"items": {"type": "string"},
|
|
2206
|
+
},
|
|
2207
|
+
"reason": {"type": "string"},
|
|
2208
|
+
"recorded_at": {"type": "string", "format": "date-time"},
|
|
2209
|
+
},
|
|
2210
|
+
"required": [
|
|
2211
|
+
"phase",
|
|
2212
|
+
"status",
|
|
2213
|
+
"attempt",
|
|
2214
|
+
"evidence_refs",
|
|
2215
|
+
"reason",
|
|
2216
|
+
"recorded_at",
|
|
2217
|
+
],
|
|
2218
|
+
"additionalProperties": False,
|
|
2219
|
+
},
|
|
2220
|
+
},
|
|
2221
|
+
"route_history": {
|
|
2222
|
+
"type": "array",
|
|
2223
|
+
"description": "Prior selected_route values preserved across re-routes.",
|
|
2224
|
+
"items": {"type": "string"},
|
|
2225
|
+
},
|
|
2226
|
+
},
|
|
2227
|
+
"required": [
|
|
2228
|
+
"schema_version",
|
|
2229
|
+
"task_summary",
|
|
2230
|
+
"selected_route",
|
|
2231
|
+
"evidence",
|
|
2232
|
+
"blocked_by",
|
|
2233
|
+
"next_command",
|
|
2234
|
+
"executed",
|
|
2235
|
+
"chain_status",
|
|
2236
|
+
"phases",
|
|
2237
|
+
"route_history",
|
|
2238
|
+
],
|
|
2239
|
+
"additionalProperties": True,
|
|
2240
|
+
}
|
|
@@ -70,6 +70,13 @@ When you pipe through `head/tail/less/more`, the source command keeps running bu
|
|
|
70
70
|
|
|
71
71
|
**Exception:** Filtering pipes are OK (grep, awk, sed) because they process all input.
|
|
72
72
|
|
|
73
|
+
### Never pipe a captured variable through `echo`
|
|
74
|
+
|
|
75
|
+
zsh's builtin `echo` interprets backslash escapes, so piping `echo "$JSON"` into `jq`
|
|
76
|
+
turns the `\n` inside JSON string values into raw control bytes and jq aborts — inside
|
|
77
|
+
`$(...)` the failure is swallowed and the variable lands empty. Use
|
|
78
|
+
`printf '%s' "$VAR" | jq` (or `printf '%s\n'` when a `while read` loop consumes it).
|
|
79
|
+
|
|
73
80
|
**Full guidelines:** `.claude/references/bash-guidelines.md`
|
|
74
81
|
|
|
75
82
|
## Progressive disclosure pointers
|
|
@@ -5,8 +5,21 @@ description: Adversarial verifier with Root Cause Analysis (Ralph Loop)
|
|
|
5
5
|
# gate before merge — false negatives here ship bugs to production.
|
|
6
6
|
model: opus
|
|
7
7
|
effort: high
|
|
8
|
-
|
|
9
|
-
|
|
8
|
+
# 2026-08-14 (#424): a final-verifier run edited generated trees and committed
|
|
9
|
+
# them mid-audit, despite the prompt contract being APPROVED/REJECTED-only.
|
|
10
|
+
# Nested Agent is denied at the harness level. Edit/Write are NOT denied here:
|
|
11
|
+
# this agent's own contract requires an in-place append to
|
|
12
|
+
# .map/<branch>/progress_<branch>.md and a `[ ]` -> `[x]` update in the
|
|
13
|
+
# task-plan Acceptance Criteria table — forcing those through whole-file Write
|
|
14
|
+
# would drop surrounding content. The boundary is enforced by scope instead:
|
|
15
|
+
# the safety-guardrails PreToolUse hook keys on agent_type and confines every
|
|
16
|
+
# verifier Edit/Write/MultiEdit to `.map/` (normalized, so `.map/../src` cannot
|
|
17
|
+
# escape) while blocking all git-mutating Bash. Runner-owned state inside
|
|
18
|
+
# `.map/` stays protected for everyone by the workflow-gate tamper detector.
|
|
19
|
+
disallowedTools:
|
|
20
|
+
- Agent
|
|
21
|
+
version: 1.2.0
|
|
22
|
+
last_updated: 2026-08-14
|
|
10
23
|
---
|
|
11
24
|
|
|
12
25
|
# IDENTITY
|
|
@@ -55,6 +55,21 @@ EDITING_PHASES = {"ACTOR", "APPLY", "TEST_WRITER"}
|
|
|
55
55
|
DOCS_ONLY_EXTENSIONS = {".md", ".mdx", ".rst", ".txt", ".adoc"}
|
|
56
56
|
DOCS_ONLY_PATH_PREFIXES = ("docs/", "doc/", "documentation/", "CHANGELOG", "RELEASING", "README")
|
|
57
57
|
|
|
58
|
+
# State-tamper detector (D3): runner-owned MAP state basenames that are
|
|
59
|
+
# never hand-editable directly, even though the blanket `.map/` exemption
|
|
60
|
+
# below (is_exempt_path) would otherwise allow them. Planning artifacts
|
|
61
|
+
# (spec_*, task_plan_*, blueprint.json, research/, code-review-*,
|
|
62
|
+
# compacted/, approval_hold_*.md) are NOT in this set and stay exempt as
|
|
63
|
+
# today — only the runner's own durable state is protected.
|
|
64
|
+
STATE_TAMPER_PROTECTED_BASENAMES = frozenset(
|
|
65
|
+
{
|
|
66
|
+
"step_state.json",
|
|
67
|
+
"approval_holds.json",
|
|
68
|
+
"auto-route.json",
|
|
69
|
+
"artifact_manifest.json",
|
|
70
|
+
}
|
|
71
|
+
)
|
|
72
|
+
|
|
58
73
|
# TERMINAL_PHASES contains phases where the workflow is considered closed.
|
|
59
74
|
# Edits during COMPLETE are intentionally permissive because:
|
|
60
75
|
# 1. Post-workflow polish (doc tweaks, follow-up review fixes) must not be gated —
|
|
@@ -204,6 +219,44 @@ def is_exempt_path(file_path: str) -> bool:
|
|
|
204
219
|
)
|
|
205
220
|
|
|
206
221
|
|
|
222
|
+
def is_state_tamper_path(file_path: str) -> bool:
|
|
223
|
+
"""Return True if *file_path* is runner-owned MAP state protected from
|
|
224
|
+
direct hand-editing (the state-tamper detector, D3).
|
|
225
|
+
|
|
226
|
+
Mirrors is_exempt_path's PROJECT_DIR-relative resolution. Protected
|
|
227
|
+
under `.map/`:
|
|
228
|
+
- any path whose second segment is "scripts" (``.map/scripts/**`` —
|
|
229
|
+
the runner and its helper modules), or
|
|
230
|
+
- a basename in STATE_TAMPER_PROTECTED_BASENAMES anywhere under
|
|
231
|
+
`.map/` (branch-scoped durable state: `.map/<branch>/step_state.json`,
|
|
232
|
+
`approval_holds.json`, `auto-route.json`, `artifact_manifest.json`).
|
|
233
|
+
|
|
234
|
+
Everything else under `.map/` (spec_*, task_plan_*, blueprint.json,
|
|
235
|
+
research/, code-review-*, compacted/, approval_hold_*.md) is left
|
|
236
|
+
alone by this predicate — it stays exempt via is_exempt_path.
|
|
237
|
+
"""
|
|
238
|
+
if not isinstance(file_path, str) or not file_path.strip():
|
|
239
|
+
return False
|
|
240
|
+
|
|
241
|
+
candidate = Path(file_path)
|
|
242
|
+
resolved = (
|
|
243
|
+
candidate.resolve(strict=False)
|
|
244
|
+
if candidate.is_absolute()
|
|
245
|
+
else (PROJECT_DIR / candidate).resolve(strict=False)
|
|
246
|
+
)
|
|
247
|
+
try:
|
|
248
|
+
rel = resolved.relative_to(PROJECT_DIR)
|
|
249
|
+
except ValueError:
|
|
250
|
+
return False
|
|
251
|
+
|
|
252
|
+
parts = rel.parts
|
|
253
|
+
if not parts or parts[0] != ".map":
|
|
254
|
+
return False
|
|
255
|
+
if len(parts) >= 2 and parts[1] == "scripts":
|
|
256
|
+
return True
|
|
257
|
+
return rel.name in STATE_TAMPER_PROTECTED_BASENAMES
|
|
258
|
+
|
|
259
|
+
|
|
207
260
|
def sanitize_branch_name(branch: str) -> str:
|
|
208
261
|
"""Sanitize branch name for filesystem paths."""
|
|
209
262
|
sanitized = branch.replace("/", "-")
|
|
@@ -248,6 +301,27 @@ def _current_phase_is_research(branch: str) -> bool:
|
|
|
248
301
|
return isinstance(phase, str) and phase.upper() == "RESEARCH"
|
|
249
302
|
|
|
250
303
|
|
|
304
|
+
def _is_workflow_active(branch: str) -> bool:
|
|
305
|
+
"""Return True iff a MAP workflow is active on *branch*.
|
|
306
|
+
|
|
307
|
+
Active means `.map/<branch>/step_state.json` exists and its
|
|
308
|
+
`workflow_status` is not `WORKFLOW_COMPLETE`. Scopes the state-tamper
|
|
309
|
+
detector (D3): outside an active workflow — no step_state.json yet, a
|
|
310
|
+
corrupt/unreadable one, or a finished workflow — the detector no-ops
|
|
311
|
+
and today's exempt-path behavior applies unchanged.
|
|
312
|
+
"""
|
|
313
|
+
step_file = PROJECT_DIR / ".map" / branch / "step_state.json"
|
|
314
|
+
if not step_file.exists():
|
|
315
|
+
return False
|
|
316
|
+
try:
|
|
317
|
+
with open(step_file, "r", encoding="utf-8") as f:
|
|
318
|
+
state = json.load(f)
|
|
319
|
+
except (json.JSONDecodeError, OSError):
|
|
320
|
+
return False
|
|
321
|
+
status = str(state.get("workflow_status", "")).strip().upper()
|
|
322
|
+
return status != "WORKFLOW_COMPLETE"
|
|
323
|
+
|
|
324
|
+
|
|
251
325
|
def _load_blueprint_subtasks(branch: str) -> list | None:
|
|
252
326
|
"""Read blueprint.json subtasks for *branch* (stdlib-only, fail-soft).
|
|
253
327
|
|
|
@@ -510,6 +584,57 @@ def check_constraints(branch: str, target_paths: list[str]) -> str | None:
|
|
|
510
584
|
return None
|
|
511
585
|
|
|
512
586
|
|
|
587
|
+
def _create_safety_guardrail_hold(branch: str, rel_path: str) -> None:
|
|
588
|
+
"""Best-effort creation of a `safety_guardrail` approval hold recording
|
|
589
|
+
a denied direct edit of runner-owned MAP state.
|
|
590
|
+
|
|
591
|
+
INV-4: the caller wraps this call in its own try/except — hold creation
|
|
592
|
+
is best-effort and must NEVER convert a tamper deny into an allow. Any
|
|
593
|
+
failure here (missing runner script, non-zero exit, a raised exception)
|
|
594
|
+
is swallowed by the caller; deny() still fires and the outer fail-open
|
|
595
|
+
handler is never reached from this path. Idempotency comes from the
|
|
596
|
+
stable request_summary (naming rel_path) plus create_approval_hold's
|
|
597
|
+
own dedup-by-(kind, request_summary, pending).
|
|
598
|
+
"""
|
|
599
|
+
import subprocess
|
|
600
|
+
|
|
601
|
+
runner = PROJECT_DIR / ".map" / "scripts" / "map_step_runner.py"
|
|
602
|
+
reason = (
|
|
603
|
+
"Runner-owned MAP state must be mutated only through "
|
|
604
|
+
"map_step_runner.py subcommands; a direct Edit/Write bypasses "
|
|
605
|
+
"its validation and audit trail."
|
|
606
|
+
)
|
|
607
|
+
safe_continuation = (
|
|
608
|
+
"Revert the direct edit. Use the appropriate "
|
|
609
|
+
"`python3 .map/scripts/map_step_runner.py` subcommand instead "
|
|
610
|
+
"(e.g. record_step, create_approval_hold, decide_approval_hold)."
|
|
611
|
+
)
|
|
612
|
+
subprocess.run(
|
|
613
|
+
[
|
|
614
|
+
sys.executable,
|
|
615
|
+
str(runner),
|
|
616
|
+
"create_approval_hold",
|
|
617
|
+
"--kind",
|
|
618
|
+
"safety_guardrail",
|
|
619
|
+
"--reason",
|
|
620
|
+
reason,
|
|
621
|
+
"--request-summary",
|
|
622
|
+
f"Direct edit of runner-owned MAP state: {rel_path}",
|
|
623
|
+
"--source",
|
|
624
|
+
"workflow-gate",
|
|
625
|
+
"--safe-continuation",
|
|
626
|
+
safe_continuation,
|
|
627
|
+
"--branch",
|
|
628
|
+
branch,
|
|
629
|
+
],
|
|
630
|
+
capture_output=True,
|
|
631
|
+
text=True,
|
|
632
|
+
cwd=PROJECT_DIR,
|
|
633
|
+
timeout=5,
|
|
634
|
+
check=False,
|
|
635
|
+
)
|
|
636
|
+
|
|
637
|
+
|
|
513
638
|
def deny(reason: str) -> None:
|
|
514
639
|
"""Print deny response and exit."""
|
|
515
640
|
print(
|
|
@@ -541,13 +666,44 @@ def main() -> None:
|
|
|
541
666
|
if tool_name not in EDITING_TOOLS:
|
|
542
667
|
allow()
|
|
543
668
|
|
|
544
|
-
# Exempt paths (.map/, ~/.claude/memory/) → always allow
|
|
545
669
|
target_paths = extract_target_file_paths(tool_call)
|
|
670
|
+
branch = get_branch_name()
|
|
671
|
+
|
|
672
|
+
# State-tamper detector (D3): runner-owned MAP state
|
|
673
|
+
# (step_state.json, approval_holds.json, auto-route.json,
|
|
674
|
+
# artifact_manifest.json, and anything under .map/scripts/) is
|
|
675
|
+
# never hand-editable while a MAP workflow is active on this
|
|
676
|
+
# branch — even though the blanket `.map/` exemption below would
|
|
677
|
+
# otherwise allow it. Evaluated BEFORE is_exempt_path
|
|
678
|
+
# (blocklist-before-allowlist, per the learned security-pattern)
|
|
679
|
+
# so the exemption cannot mask tampering. A mixed batch (one
|
|
680
|
+
# protected path alongside ordinary ones) denies as a whole — fail
|
|
681
|
+
# closed on any protected target.
|
|
682
|
+
tamper_paths = [p for p in target_paths if is_state_tamper_path(p)]
|
|
683
|
+
if tamper_paths and _is_workflow_active(branch):
|
|
684
|
+
attempted = tamper_paths[0]
|
|
685
|
+
try:
|
|
686
|
+
attempted = _to_repo_relative(tamper_paths[0]) or tamper_paths[0]
|
|
687
|
+
_create_safety_guardrail_hold(branch, attempted)
|
|
688
|
+
except Exception: # noqa: BLE001, S110 -- INV-4: producer/display-path failure must still reach deny(), never escape to the fail-open outer handler
|
|
689
|
+
pass
|
|
690
|
+
deny(
|
|
691
|
+
"Workflow gate: runner-owned MAP state is not "
|
|
692
|
+
f"hand-editable ('{attempted}').\n"
|
|
693
|
+
"This path is written exclusively by "
|
|
694
|
+
".map/scripts/map_step_runner.py — use its CLI "
|
|
695
|
+
"subcommands (create_approval_hold, record_step, "
|
|
696
|
+
"decide_approval_hold, etc.) instead of editing it "
|
|
697
|
+
"directly.\n"
|
|
698
|
+
"A pending safety_guardrail approval hold has been "
|
|
699
|
+
"recorded for this attempt (best-effort; see "
|
|
700
|
+
f".map/{branch}/approval_holds.json)."
|
|
701
|
+
)
|
|
702
|
+
|
|
703
|
+
# Exempt paths (.map/, ~/.claude/memory/) → always allow
|
|
546
704
|
if target_paths and all(is_exempt_path(p) for p in target_paths):
|
|
547
705
|
allow()
|
|
548
706
|
|
|
549
|
-
branch = get_branch_name()
|
|
550
|
-
|
|
551
707
|
# Phase check (step_state.json)
|
|
552
708
|
allowed, error = is_editing_phase(branch)
|
|
553
709
|
if not allowed:
|
{mapify_cli-3.25.0 → mapify_cli-3.26.0}/src/mapify_cli/templates/codex/skills/map-efficient/SKILL.md
RENAMED
|
@@ -77,6 +77,16 @@ Empty `$TASK_ARGS` is a stop condition only when all of these are true:
|
|
|
77
77
|
|
|
78
78
|
Otherwise proceed to resume detection.
|
|
79
79
|
|
|
80
|
+
## Approval-hold preflight (MANDATORY — run BEFORE Step 0)
|
|
81
|
+
|
|
82
|
+
Resolve pending approval holds before `resume_from_plan` initializes any execution state — full recipe in [efficient-reference.md](efficient-reference.md#approval-hold-preflight).
|
|
83
|
+
|
|
84
|
+
```bash
|
|
85
|
+
python3 .map/scripts/map_step_runner.py list_approval_holds --state pending
|
|
86
|
+
```
|
|
87
|
+
|
|
88
|
+
A pending `plan_approval` requires an explicit operator approve/deny, recorded via `decide_approval_hold <hold-id> <approved|denied> --note "<operator note>"`: approved continues into Step 0, denied STOPS here — revise the plan and re-run `$map-plan` (no staleness re-check); an autonomous chain never reaches this ask because its pre-phase `auto_decide_holds` poll approves `plan_approval` first. A pending `dangerous_action`/`safety_guardrail` hold refuses to proceed instead — surface the hold's `reason` and stop.
|
|
89
|
+
|
|
80
90
|
## Step 0: Resume Existing State Or Plan
|
|
81
91
|
|
|
82
92
|
Run this before validating `$TASK_ARGS`.
|
|
@@ -90,7 +100,7 @@ if [ -f "$STATE_FILE" ]; then
|
|
|
90
100
|
echo "Existing step_state.json found; continuing with get_next_step."
|
|
91
101
|
elif [ -f "$PLAN_FILE" ]; then
|
|
92
102
|
RESUME_RESULT=$(python3 .map/scripts/map_orchestrator.py resume_from_plan)
|
|
93
|
-
RESUME_STATUS=$(
|
|
103
|
+
RESUME_STATUS=$(printf '%s' "$RESUME_RESULT" | jq -r '.status')
|
|
94
104
|
if [ "$RESUME_STATUS" != "success" ]; then
|
|
95
105
|
echo "resume_from_plan failed: $RESUME_RESULT" >&2
|
|
96
106
|
exit 1
|
|
@@ -110,9 +120,9 @@ fi
|
|
|
110
120
|
|
|
111
121
|
```bash
|
|
112
122
|
NEXT_STEP=$(python3 .map/scripts/map_orchestrator.py get_next_step)
|
|
113
|
-
STEP_ID=$(
|
|
114
|
-
PHASE=$(
|
|
115
|
-
IS_COMPLETE=$(
|
|
123
|
+
STEP_ID=$(printf '%s' "$NEXT_STEP" | jq -r '.step_id')
|
|
124
|
+
PHASE=$(printf '%s' "$NEXT_STEP" | jq -r '.phase')
|
|
125
|
+
IS_COMPLETE=$(printf '%s' "$NEXT_STEP" | jq -r '.is_complete')
|
|
116
126
|
echo "$NEXT_STEP"
|
|
117
127
|
```
|
|
118
128
|
|
|
@@ -3,6 +3,45 @@
|
|
|
3
3
|
This file holds lower-frequency details for the Codex `$map-efficient` skill.
|
|
4
4
|
Load only the section needed by the active phase.
|
|
5
5
|
|
|
6
|
+
## Approval-Hold Preflight
|
|
7
|
+
|
|
8
|
+
Resolve any pending approval hold BEFORE Step 0's `resume_from_plan`
|
|
9
|
+
bootstraps execution state — a hold left pending means execution has not
|
|
10
|
+
been explicitly authorized, and a denied plan must stop before any
|
|
11
|
+
`step_state.json` exists.
|
|
12
|
+
|
|
13
|
+
```bash
|
|
14
|
+
python3 .map/scripts/map_step_runner.py list_approval_holds --state pending
|
|
15
|
+
```
|
|
16
|
+
|
|
17
|
+
Each pending hold's `kind` decides the branch:
|
|
18
|
+
|
|
19
|
+
- **`plan_approval`** — the operator must explicitly approve or deny before
|
|
20
|
+
execution starts:
|
|
21
|
+
```bash
|
|
22
|
+
python3 .map/scripts/map_step_runner.py decide_approval_hold \
|
|
23
|
+
<hold-id> approved --note "approved by operator; proceeding with plan"
|
|
24
|
+
# or:
|
|
25
|
+
python3 .map/scripts/map_step_runner.py decide_approval_hold \
|
|
26
|
+
<hold-id> denied --note "<why the plan was denied>"
|
|
27
|
+
```
|
|
28
|
+
- **Approved** — continue into the pre-flight test baseline below.
|
|
29
|
+
- **Denied** — STOP. Tell the operator to revise the plan and re-run
|
|
30
|
+
`$map-plan`; there is no staleness re-check against the denied blueprint
|
|
31
|
+
— the operator who denied it is the same operator re-running
|
|
32
|
+
`$map-efficient`.
|
|
33
|
+
- **`dangerous_action` / `safety_guardrail`** (hard stops) — never decide
|
|
34
|
+
these from inside the preflight. Refuse to proceed: surface the hold's
|
|
35
|
+
`reason` and `request_summary`, and stop. The operator resolves the
|
|
36
|
+
underlying issue out of band and decides the hold via `decide_approval_hold`
|
|
37
|
+
before retrying.
|
|
38
|
+
|
|
39
|
+
An autonomous chain never reaches the interactive ask above: its pre-phase
|
|
40
|
+
`auto_decide_holds` poll auto-approves `plan_approval` before `$map-efficient`
|
|
41
|
+
starts, so the preflight here finds nothing pending. If the operator
|
|
42
|
+
already decided the hold manually (CLI) before starting `$map-efficient`, the
|
|
43
|
+
preflight likewise finds nothing pending and proceeds without asking.
|
|
44
|
+
|
|
6
45
|
## Pre-Monitor Gates
|
|
7
46
|
|
|
8
47
|
Before Monitor, verify that Actor output and repository state agree.
|
|
@@ -47,7 +86,7 @@ python3 .map/scripts/map_step_runner.py validate_flaky_test_triage
|
|
|
47
86
|
# Preferred close — the verdict path. Monitor emits valid:false plus
|
|
48
87
|
# disposition {kind: deferred_nondeterministic, check_id: ...}; close 2.4 with
|
|
49
88
|
# the same disposition piped through (see "Verdict-path route" below).
|
|
50
|
-
|
|
89
|
+
printf '%s' "$MONITOR_JSON" | python3 .map/scripts/map_orchestrator.py \
|
|
51
90
|
validate_step 2.4 --disposition deferred_nondeterministic \
|
|
52
91
|
--check-id "pytest::test_name" --monitor-envelope -
|
|
53
92
|
```
|
{mapify_cli-3.25.0 → mapify_cli-3.26.0}/src/mapify_cli/templates/codex/skills/map-plan/SKILL.md
RENAMED
|
@@ -699,9 +699,13 @@ Record artifacts in the manifest:
|
|
|
699
699
|
```
|
|
700
700
|
shell_command:
|
|
701
701
|
cmd: |
|
|
702
|
-
python3 .map/scripts/map_step_runner.py record_plan_artifacts
|
|
702
|
+
PLAN_ARTIFACTS_RESULT=$(python3 .map/scripts/map_step_runner.py record_plan_artifacts)
|
|
703
|
+
echo "$PLAN_ARTIFACTS_RESULT"
|
|
704
|
+
PLAN_APPROVAL_HOLD_ID=$(printf '%s' "$PLAN_ARTIFACTS_RESULT" | jq -r '.plan_approval_hold_id // empty')
|
|
703
705
|
```
|
|
704
706
|
|
|
707
|
+
`record_plan_artifacts` also opens a `plan_approval` hold at the plan-ready boundary and returns it as `plan_approval_hold_id` (idempotent — re-running finds the same pending hold instead of spamming a new one). Capture `PLAN_APPROVAL_HOLD_ID` for the Step 8 checkpoint. This hold does **not** block `$map-plan` itself: planning artifacts are written and Step 8 prints its checkpoint regardless of whether the hold is still pending. The decision (`decide_approval_hold <hold-id> approved|denied`) happens later, at the `$map-efficient` approval-hold preflight — or automatically via an autonomous chain's `auto_decide_holds` poll. If the result instead carries `plan_approval_hold_error: true`, the hold store failed — say so in the Step 8 checkpoint and have the operator create/decide the hold manually (`create_approval_hold --kind plan_approval ...`).
|
|
708
|
+
|
|
705
709
|
---
|
|
706
710
|
|
|
707
711
|
## Step 8: Output Checkpoint
|
|
@@ -726,6 +730,7 @@ shell_command:
|
|
|
726
730
|
echo "[ok] Plan written to .map/${BRANCH}/task_plan_${BRANCH}.md"
|
|
727
731
|
echo "[ok] artifact_manifest.json updated"
|
|
728
732
|
echo "[ok] Mode: [standard | light | deep]"
|
|
733
|
+
echo "[ok] Plan approval hold: ${PLAN_APPROVAL_HOLD_ID:-none} — decide via decide_approval_hold <hold-id> <approved|denied> --note \"<operator note>\" before \$map-efficient will proceed"
|
|
729
734
|
echo ""
|
|
730
735
|
echo "Next steps:"
|
|
731
736
|
echo " 1. Review .map/${BRANCH}/task_plan_${BRANCH}.md"
|
{mapify_cli-3.25.0 → mapify_cli-3.26.0}/src/mapify_cli/templates/codex/skills/map-review/SKILL.md
RENAMED
|
@@ -112,9 +112,21 @@ otherwise) and mode semantics.
|
|
|
112
112
|
|
|
113
113
|
### Step A.1: Gather changes
|
|
114
114
|
|
|
115
|
+
Diff against the **merge-base with the default branch**, not `HEAD`. On a
|
|
116
|
+
fully-committed branch — the normal `/map-check` → `/map-review` state —
|
|
117
|
+
`git diff HEAD` is empty and under-reports the review scope to zero (#426).
|
|
118
|
+
|
|
115
119
|
```bash
|
|
116
|
-
|
|
117
|
-
|
|
120
|
+
BASE=""
|
|
121
|
+
for ref in origin/main origin/master main master; do
|
|
122
|
+
git rev-parse --verify --quiet "$ref" >/dev/null && { BASE="$ref"; break; }
|
|
123
|
+
done
|
|
124
|
+
# No default-branch ref: diff the working tree. NEVER "HEAD...HEAD" — that range
|
|
125
|
+
# is always empty and re-creates the very bug this step fixes.
|
|
126
|
+
[ -n "$BASE" ] && RANGE="$BASE...HEAD" || RANGE="HEAD"
|
|
127
|
+
git --no-pager diff --stat "$RANGE"
|
|
128
|
+
git --no-pager diff "$RANGE"
|
|
129
|
+
git status # uncommitted work in progress — secondary signal
|
|
118
130
|
```
|
|
119
131
|
|
|
120
132
|
### Step A.1b: Load canonical review context (bundle + handoff)
|