mapify-cli 3.16.0__tar.gz → 3.17.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.16.0 → mapify_cli-3.17.0}/PKG-INFO +5 -2
- {mapify_cli-3.16.0 → mapify_cli-3.17.0}/README.md +4 -1
- {mapify_cli-3.16.0 → mapify_cli-3.17.0}/pyproject.toml +4 -1
- {mapify_cli-3.16.0 → mapify_cli-3.17.0}/src/mapify_cli/__init__.py +260 -2
- mapify_cli-3.17.0/src/mapify_cli/minimality_report.py +372 -0
- mapify_cli-3.17.0/src/mapify_cli/research_eval.py +480 -0
- {mapify_cli-3.16.0 → mapify_cli-3.17.0}/src/mapify_cli/schemas.py +51 -0
- {mapify_cli-3.16.0 → mapify_cli-3.17.0}/src/mapify_cli/templates/agents/actor.md +18 -10
- {mapify_cli-3.16.0 → mapify_cli-3.17.0}/src/mapify_cli/templates/agents/monitor.md +2 -0
- {mapify_cli-3.16.0 → mapify_cli-3.17.0}/src/mapify_cli/templates/agents/research-agent.md +4 -4
- {mapify_cli-3.16.0 → mapify_cli-3.17.0}/src/mapify_cli/templates/agents/task-decomposer.md +38 -0
- {mapify_cli-3.16.0 → mapify_cli-3.17.0}/src/mapify_cli/templates/codex/agents/decomposer.toml +38 -0
- {mapify_cli-3.16.0 → mapify_cli-3.17.0}/src/mapify_cli/templates/codex/agents/monitor.toml +9 -0
- {mapify_cli-3.16.0 → mapify_cli-3.17.0}/src/mapify_cli/templates/codex/skills/map-efficient/SKILL.md +22 -5
- mapify_cli-3.17.0/src/mapify_cli/templates/codex/skills/map-explain/SKILL.md +211 -0
- {mapify_cli-3.16.0 → mapify_cli-3.17.0}/src/mapify_cli/templates/codex/skills/map-plan/SKILL.md +10 -11
- mapify_cli-3.17.0/src/mapify_cli/templates/codex/skills/map-understand/SKILL.md +112 -0
- {mapify_cli-3.16.0 → mapify_cli-3.17.0}/src/mapify_cli/templates/map/scripts/map_orchestrator.py +219 -2
- {mapify_cli-3.16.0 → mapify_cli-3.17.0}/src/mapify_cli/templates/map/scripts/map_step_runner.py +571 -2
- {mapify_cli-3.16.0 → mapify_cli-3.17.0}/src/mapify_cli/templates/map/scripts/validate_spec_citations.py +1 -1
- {mapify_cli-3.16.0 → mapify_cli-3.17.0}/src/mapify_cli/templates/skills/map-efficient/SKILL.md +3 -3
- mapify_cli-3.17.0/src/mapify_cli/templates/skills/map-explain/SKILL.md +190 -0
- {mapify_cli-3.16.0 → mapify_cli-3.17.0}/src/mapify_cli/templates/skills/map-plan/SKILL.md +13 -8
- {mapify_cli-3.16.0 → mapify_cli-3.17.0}/src/mapify_cli/templates/skills/map-state/SKILL.md +4 -3
- {mapify_cli-3.16.0 → mapify_cli-3.17.0}/src/mapify_cli/templates/skills/map-state/scripts/init-session.sh +4 -3
- {mapify_cli-3.16.0 → mapify_cli-3.17.0}/src/mapify_cli/templates/skills/map-state/templates/findings.md +1 -1
- mapify_cli-3.17.0/src/mapify_cli/templates/skills/map-understand/SKILL.md +128 -0
- {mapify_cli-3.16.0 → mapify_cli-3.17.0}/src/mapify_cli/templates/skills/skill-rules.json +23 -0
- {mapify_cli-3.16.0 → mapify_cli-3.17.0}/src/mapify_cli/templates_src/agents/actor.md.jinja +18 -10
- {mapify_cli-3.16.0 → mapify_cli-3.17.0}/src/mapify_cli/templates_src/agents/monitor.md.jinja +2 -0
- {mapify_cli-3.16.0 → mapify_cli-3.17.0}/src/mapify_cli/templates_src/agents/research-agent.md.jinja +4 -4
- {mapify_cli-3.16.0 → mapify_cli-3.17.0}/src/mapify_cli/templates_src/agents/task-decomposer.md.jinja +38 -0
- {mapify_cli-3.16.0 → mapify_cli-3.17.0}/src/mapify_cli/templates_src/codex/agents/decomposer.toml.jinja +38 -0
- {mapify_cli-3.16.0 → mapify_cli-3.17.0}/src/mapify_cli/templates_src/codex/agents/monitor.toml.jinja +9 -0
- {mapify_cli-3.16.0 → mapify_cli-3.17.0}/src/mapify_cli/templates_src/codex/skills/map-efficient/SKILL.md.jinja +22 -5
- mapify_cli-3.17.0/src/mapify_cli/templates_src/codex/skills/map-explain/SKILL.md.jinja +211 -0
- {mapify_cli-3.16.0 → mapify_cli-3.17.0}/src/mapify_cli/templates_src/codex/skills/map-plan/SKILL.md.jinja +10 -11
- mapify_cli-3.17.0/src/mapify_cli/templates_src/codex/skills/map-understand/SKILL.md.jinja +112 -0
- {mapify_cli-3.16.0 → mapify_cli-3.17.0}/src/mapify_cli/templates_src/map/scripts/map_orchestrator.py.jinja +219 -2
- {mapify_cli-3.16.0 → mapify_cli-3.17.0}/src/mapify_cli/templates_src/map/scripts/map_step_runner.py.jinja +571 -2
- {mapify_cli-3.16.0 → mapify_cli-3.17.0}/src/mapify_cli/templates_src/map/scripts/validate_spec_citations.py.jinja +1 -1
- {mapify_cli-3.16.0 → mapify_cli-3.17.0}/src/mapify_cli/templates_src/skills/map-efficient/SKILL.md.jinja +3 -3
- mapify_cli-3.17.0/src/mapify_cli/templates_src/skills/map-explain/SKILL.md.jinja +190 -0
- {mapify_cli-3.16.0 → mapify_cli-3.17.0}/src/mapify_cli/templates_src/skills/map-plan/SKILL.md.jinja +13 -8
- {mapify_cli-3.16.0 → mapify_cli-3.17.0}/src/mapify_cli/templates_src/skills/map-state/SKILL.md.jinja +4 -3
- {mapify_cli-3.16.0 → mapify_cli-3.17.0}/src/mapify_cli/templates_src/skills/map-state/scripts/init-session.sh.jinja +4 -3
- {mapify_cli-3.16.0 → mapify_cli-3.17.0}/src/mapify_cli/templates_src/skills/map-state/templates/findings.md.jinja +1 -1
- mapify_cli-3.17.0/src/mapify_cli/templates_src/skills/map-understand/SKILL.md.jinja +128 -0
- {mapify_cli-3.16.0 → mapify_cli-3.17.0}/src/mapify_cli/templates_src/skills/skill-rules.json.jinja +23 -0
- {mapify_cli-3.16.0 → mapify_cli-3.17.0}/tests/integration/test_e2e_artifact_contracts.py +72 -0
- {mapify_cli-3.16.0 → mapify_cli-3.17.0}/tests/test_artifact_schemas.py +62 -0
- {mapify_cli-3.16.0 → mapify_cli-3.17.0}/tests/test_map_orchestrator.py +133 -0
- {mapify_cli-3.16.0 → mapify_cli-3.17.0}/tests/test_map_step_runner.py +276 -0
- mapify_cli-3.17.0/tests/test_minimality_report.py +222 -0
- mapify_cli-3.17.0/tests/test_research_eval.py +161 -0
- {mapify_cli-3.16.0 → mapify_cli-3.17.0}/tests/test_skills.py +133 -0
- {mapify_cli-3.16.0 → mapify_cli-3.17.0}/tests/test_skills_consistency.py +4 -4
- {mapify_cli-3.16.0 → mapify_cli-3.17.0}/tests/test_validate_spec_citations.py +10 -0
- mapify_cli-3.16.0/src/mapify_cli/templates/codex/skills/map-explain/SKILL.md +0 -166
- mapify_cli-3.16.0/src/mapify_cli/templates/skills/map-explain/SKILL.md +0 -147
- mapify_cli-3.16.0/src/mapify_cli/templates_src/codex/skills/map-explain/SKILL.md.jinja +0 -166
- mapify_cli-3.16.0/src/mapify_cli/templates_src/skills/map-explain/SKILL.md.jinja +0 -147
- {mapify_cli-3.16.0 → mapify_cli-3.17.0}/.claude/hooks/README.md +0 -0
- {mapify_cli-3.16.0 → mapify_cli-3.17.0}/.claude/skills/README.md +0 -0
- {mapify_cli-3.16.0 → mapify_cli-3.17.0}/.gitignore +0 -0
- {mapify_cli-3.16.0 → mapify_cli-3.17.0}/LICENSE +0 -0
- {mapify_cli-3.16.0 → mapify_cli-3.17.0}/src/mapify_cli/_locking.py +0 -0
- {mapify_cli-3.16.0 → mapify_cli-3.17.0}/src/mapify_cli/cli_ui.py +0 -0
- {mapify_cli-3.16.0 → mapify_cli-3.17.0}/src/mapify_cli/config/__init__.py +0 -0
- {mapify_cli-3.16.0 → mapify_cli-3.17.0}/src/mapify_cli/config/mcp.py +0 -0
- {mapify_cli-3.16.0 → mapify_cli-3.17.0}/src/mapify_cli/config/project_config.py +0 -0
- {mapify_cli-3.16.0 → mapify_cli-3.17.0}/src/mapify_cli/config/settings.py +0 -0
- {mapify_cli-3.16.0 → mapify_cli-3.17.0}/src/mapify_cli/delivery/__init__.py +0 -0
- {mapify_cli-3.16.0 → mapify_cli-3.17.0}/src/mapify_cli/delivery/agent_generator.py +0 -0
- {mapify_cli-3.16.0 → mapify_cli-3.17.0}/src/mapify_cli/delivery/codex_copier.py +0 -0
- {mapify_cli-3.16.0 → mapify_cli-3.17.0}/src/mapify_cli/delivery/file_copier.py +0 -0
- {mapify_cli-3.16.0 → mapify_cli-3.17.0}/src/mapify_cli/delivery/managed_file_copier.py +0 -0
- {mapify_cli-3.16.0 → mapify_cli-3.17.0}/src/mapify_cli/delivery/providers.py +0 -0
- {mapify_cli-3.16.0 → mapify_cli-3.17.0}/src/mapify_cli/delivery/template_renderer.py +0 -0
- {mapify_cli-3.16.0 → mapify_cli-3.17.0}/src/mapify_cli/dependency_graph.py +0 -0
- {mapify_cli-3.16.0 → mapify_cli-3.17.0}/src/mapify_cli/intent_detector.py +0 -0
- {mapify_cli-3.16.0 → mapify_cli-3.17.0}/src/mapify_cli/memory/__init__.py +0 -0
- {mapify_cli-3.16.0 → mapify_cli-3.17.0}/src/mapify_cli/memory/capture.py +0 -0
- {mapify_cli-3.16.0 → mapify_cli-3.17.0}/src/mapify_cli/memory/digest_schema.py +0 -0
- {mapify_cli-3.16.0 → mapify_cli-3.17.0}/src/mapify_cli/memory/finalize.py +0 -0
- {mapify_cli-3.16.0 → mapify_cli-3.17.0}/src/mapify_cli/memory/recall.py +0 -0
- {mapify_cli-3.16.0 → mapify_cli-3.17.0}/src/mapify_cli/ralph_state.py +0 -0
- {mapify_cli-3.16.0 → mapify_cli-3.17.0}/src/mapify_cli/repo_insight.py +0 -0
- {mapify_cli-3.16.0 → mapify_cli-3.17.0}/src/mapify_cli/skill_ir.py +0 -0
- {mapify_cli-3.16.0 → mapify_cli-3.17.0}/src/mapify_cli/skills_eval/__init__.py +0 -0
- {mapify_cli-3.16.0 → mapify_cli-3.17.0}/src/mapify_cli/skills_eval/aggregator.py +0 -0
- {mapify_cli-3.16.0 → mapify_cli-3.17.0}/src/mapify_cli/skills_eval/apply_patcher.py +0 -0
- {mapify_cli-3.16.0 → mapify_cli-3.17.0}/src/mapify_cli/skills_eval/assertions.py +0 -0
- {mapify_cli-3.16.0 → mapify_cli-3.17.0}/src/mapify_cli/skills_eval/description_optimizer.py +0 -0
- {mapify_cli-3.16.0 → mapify_cli-3.17.0}/src/mapify_cli/skills_eval/dispatcher.py +0 -0
- {mapify_cli-3.16.0 → mapify_cli-3.17.0}/src/mapify_cli/skills_eval/eval_schema.py +0 -0
- {mapify_cli-3.16.0 → mapify_cli-3.17.0}/src/mapify_cli/skills_eval/proposer.py +0 -0
- {mapify_cli-3.16.0 → mapify_cli-3.17.0}/src/mapify_cli/skills_eval/runner.py +0 -0
- {mapify_cli-3.16.0 → mapify_cli-3.17.0}/src/mapify_cli/skills_eval/viewer.py +0 -0
- {mapify_cli-3.16.0 → mapify_cli-3.17.0}/src/mapify_cli/templates/.gitignore +0 -0
- {mapify_cli-3.16.0 → mapify_cli-3.17.0}/src/mapify_cli/templates/CLAUDE.md +0 -0
- {mapify_cli-3.16.0 → mapify_cli-3.17.0}/src/mapify_cli/templates/agents/debate-arbiter.md +0 -0
- {mapify_cli-3.16.0 → mapify_cli-3.17.0}/src/mapify_cli/templates/agents/documentation-reviewer.md +0 -0
- {mapify_cli-3.16.0 → mapify_cli-3.17.0}/src/mapify_cli/templates/agents/evaluator.md +0 -0
- {mapify_cli-3.16.0 → mapify_cli-3.17.0}/src/mapify_cli/templates/agents/final-verifier.md +0 -0
- {mapify_cli-3.16.0 → mapify_cli-3.17.0}/src/mapify_cli/templates/agents/predictor.md +0 -0
- {mapify_cli-3.16.0 → mapify_cli-3.17.0}/src/mapify_cli/templates/agents/reflector.md +0 -0
- {mapify_cli-3.16.0 → mapify_cli-3.17.0}/src/mapify_cli/templates/agents/synthesizer.md +0 -0
- {mapify_cli-3.16.0 → mapify_cli-3.17.0}/src/mapify_cli/templates/codex/AGENTS.md +0 -0
- {mapify_cli-3.16.0 → mapify_cli-3.17.0}/src/mapify_cli/templates/codex/agents/researcher.toml +0 -0
- {mapify_cli-3.16.0 → mapify_cli-3.17.0}/src/mapify_cli/templates/codex/config.toml +0 -0
- {mapify_cli-3.16.0 → mapify_cli-3.17.0}/src/mapify_cli/templates/codex/hooks/workflow-gate.py +0 -0
- {mapify_cli-3.16.0 → mapify_cli-3.17.0}/src/mapify_cli/templates/codex/hooks.json +0 -0
- {mapify_cli-3.16.0 → mapify_cli-3.17.0}/src/mapify_cli/templates/codex/skills/map-check/SKILL.md +0 -0
- {mapify_cli-3.16.0 → mapify_cli-3.17.0}/src/mapify_cli/templates/codex/skills/map-efficient/efficient-reference.md +0 -0
- {mapify_cli-3.16.0 → mapify_cli-3.17.0}/src/mapify_cli/templates/codex/skills/map-fast/SKILL.md +0 -0
- {mapify_cli-3.16.0 → mapify_cli-3.17.0}/src/mapify_cli/templates/hooks/README.md +0 -0
- {mapify_cli-3.16.0 → mapify_cli-3.17.0}/src/mapify_cli/templates/hooks/context-meter.py +0 -0
- {mapify_cli-3.16.0 → mapify_cli-3.17.0}/src/mapify_cli/templates/hooks/detect-clarification-triggers.py +0 -0
- {mapify_cli-3.16.0 → mapify_cli-3.17.0}/src/mapify_cli/templates/hooks/end-of-turn.sh +0 -0
- {mapify_cli-3.16.0 → mapify_cli-3.17.0}/src/mapify_cli/templates/hooks/map-memory-capture.py +0 -0
- {mapify_cli-3.16.0 → mapify_cli-3.17.0}/src/mapify_cli/templates/hooks/map-memory-endmark.py +0 -0
- {mapify_cli-3.16.0 → mapify_cli-3.17.0}/src/mapify_cli/templates/hooks/map-memory-finalize.py +0 -0
- {mapify_cli-3.16.0 → mapify_cli-3.17.0}/src/mapify_cli/templates/hooks/map-memory-recall.py +0 -0
- {mapify_cli-3.16.0 → mapify_cli-3.17.0}/src/mapify_cli/templates/hooks/map-token-meter.py +0 -0
- {mapify_cli-3.16.0 → mapify_cli-3.17.0}/src/mapify_cli/templates/hooks/post-compact-context.py +0 -0
- {mapify_cli-3.16.0 → mapify_cli-3.17.0}/src/mapify_cli/templates/hooks/pre-compact-save-transcript.py +0 -0
- {mapify_cli-3.16.0 → mapify_cli-3.17.0}/src/mapify_cli/templates/hooks/ralph-context-pruner.py +0 -0
- {mapify_cli-3.16.0 → mapify_cli-3.17.0}/src/mapify_cli/templates/hooks/ralph-iteration-logger.py +0 -0
- {mapify_cli-3.16.0 → mapify_cli-3.17.0}/src/mapify_cli/templates/hooks/safety-guardrails.py +0 -0
- {mapify_cli-3.16.0 → mapify_cli-3.17.0}/src/mapify_cli/templates/hooks/workflow-context-injector.py +0 -0
- {mapify_cli-3.16.0 → mapify_cli-3.17.0}/src/mapify_cli/templates/hooks/workflow-gate.py +0 -0
- {mapify_cli-3.16.0 → mapify_cli-3.17.0}/src/mapify_cli/templates/map/scripts/diagnostics.py +0 -0
- {mapify_cli-3.16.0 → mapify_cli-3.17.0}/src/mapify_cli/templates/map/scripts/map_utils.py +0 -0
- {mapify_cli-3.16.0 → mapify_cli-3.17.0}/src/mapify_cli/templates/map/scripts/sofa_client.py +0 -0
- {mapify_cli-3.16.0 → mapify_cli-3.17.0}/src/mapify_cli/templates/map/static-analysis/analyze.sh +0 -0
- {mapify_cli-3.16.0 → mapify_cli-3.17.0}/src/mapify_cli/templates/map/static-analysis/handlers/common.sh +0 -0
- {mapify_cli-3.16.0 → mapify_cli-3.17.0}/src/mapify_cli/templates/map/static-analysis/handlers/go.sh +0 -0
- {mapify_cli-3.16.0 → mapify_cli-3.17.0}/src/mapify_cli/templates/map/static-analysis/handlers/python.sh +0 -0
- {mapify_cli-3.16.0 → mapify_cli-3.17.0}/src/mapify_cli/templates/map/static-analysis/handlers/rust.sh +0 -0
- {mapify_cli-3.16.0 → mapify_cli-3.17.0}/src/mapify_cli/templates/map/static-analysis/handlers/typescript.sh +0 -0
- {mapify_cli-3.16.0 → mapify_cli-3.17.0}/src/mapify_cli/templates/ralph-loop-config.json +0 -0
- {mapify_cli-3.16.0 → mapify_cli-3.17.0}/src/mapify_cli/templates/references/bash-guidelines.md +0 -0
- {mapify_cli-3.16.0 → mapify_cli-3.17.0}/src/mapify_cli/templates/references/decomposition-examples.md +0 -0
- {mapify_cli-3.16.0 → mapify_cli-3.17.0}/src/mapify_cli/templates/references/escalation-matrix.md +0 -0
- {mapify_cli-3.16.0 → mapify_cli-3.17.0}/src/mapify_cli/templates/references/hook-patterns.md +0 -0
- {mapify_cli-3.16.0 → mapify_cli-3.17.0}/src/mapify_cli/templates/references/host-paths.md +0 -0
- {mapify_cli-3.16.0 → mapify_cli-3.17.0}/src/mapify_cli/templates/references/map-json-output-contracts.md +0 -0
- {mapify_cli-3.16.0 → mapify_cli-3.17.0}/src/mapify_cli/templates/references/map-output-examples.md +0 -0
- {mapify_cli-3.16.0 → mapify_cli-3.17.0}/src/mapify_cli/templates/references/map-xml-prompt-envelopes.md +0 -0
- {mapify_cli-3.16.0 → mapify_cli-3.17.0}/src/mapify_cli/templates/references/mcp-usage-examples.md +0 -0
- {mapify_cli-3.16.0 → mapify_cli-3.17.0}/src/mapify_cli/templates/references/step-state-schema.md +0 -0
- {mapify_cli-3.16.0 → mapify_cli-3.17.0}/src/mapify_cli/templates/references/workflow-state-schema.md +0 -0
- {mapify_cli-3.16.0 → mapify_cli-3.17.0}/src/mapify_cli/templates/rules/learned/README.md +0 -0
- {mapify_cli-3.16.0 → mapify_cli-3.17.0}/src/mapify_cli/templates/settings.json +0 -0
- {mapify_cli-3.16.0 → mapify_cli-3.17.0}/src/mapify_cli/templates/skills/README.md +0 -0
- {mapify_cli-3.16.0 → mapify_cli-3.17.0}/src/mapify_cli/templates/skills/map-check/SKILL.md +0 -0
- {mapify_cli-3.16.0 → mapify_cli-3.17.0}/src/mapify_cli/templates/skills/map-check/check-reference.md +0 -0
- {mapify_cli-3.16.0 → mapify_cli-3.17.0}/src/mapify_cli/templates/skills/map-debug/SKILL.md +0 -0
- {mapify_cli-3.16.0 → mapify_cli-3.17.0}/src/mapify_cli/templates/skills/map-efficient/efficient-reference.md +0 -0
- {mapify_cli-3.16.0 → mapify_cli-3.17.0}/src/mapify_cli/templates/skills/map-fast/SKILL.md +0 -0
- {mapify_cli-3.16.0 → mapify_cli-3.17.0}/src/mapify_cli/templates/skills/map-learn/SKILL.md +0 -0
- {mapify_cli-3.16.0 → mapify_cli-3.17.0}/src/mapify_cli/templates/skills/map-learn/templates/example-rules.md +0 -0
- {mapify_cli-3.16.0 → mapify_cli-3.17.0}/src/mapify_cli/templates/skills/map-learn/templates/rules-unconditional.md +0 -0
- {mapify_cli-3.16.0 → mapify_cli-3.17.0}/src/mapify_cli/templates/skills/map-learn/templates/rules-with-paths.md +0 -0
- {mapify_cli-3.16.0 → mapify_cli-3.17.0}/src/mapify_cli/templates/skills/map-memory-now/SKILL.md +0 -0
- {mapify_cli-3.16.0 → mapify_cli-3.17.0}/src/mapify_cli/templates/skills/map-plan/plan-reference.md +0 -0
- {mapify_cli-3.16.0 → mapify_cli-3.17.0}/src/mapify_cli/templates/skills/map-release/SKILL.md +0 -0
- {mapify_cli-3.16.0 → mapify_cli-3.17.0}/src/mapify_cli/templates/skills/map-resume/SKILL.md +0 -0
- {mapify_cli-3.16.0 → mapify_cli-3.17.0}/src/mapify_cli/templates/skills/map-resume/resume-reference.md +0 -0
- {mapify_cli-3.16.0 → mapify_cli-3.17.0}/src/mapify_cli/templates/skills/map-review/SKILL.md +0 -0
- {mapify_cli-3.16.0 → mapify_cli-3.17.0}/src/mapify_cli/templates/skills/map-review/review-reference.md +0 -0
- {mapify_cli-3.16.0 → mapify_cli-3.17.0}/src/mapify_cli/templates/skills/map-skill-eval/SKILL.md +0 -0
- {mapify_cli-3.16.0 → mapify_cli-3.17.0}/src/mapify_cli/templates/skills/map-so-search/SKILL.md +0 -0
- {mapify_cli-3.16.0 → mapify_cli-3.17.0}/src/mapify_cli/templates/skills/map-so-search/scripts/sofa_search.py +0 -0
- {mapify_cli-3.16.0 → mapify_cli-3.17.0}/src/mapify_cli/templates/skills/map-state/scripts/check-complete.sh +0 -0
- {mapify_cli-3.16.0 → mapify_cli-3.17.0}/src/mapify_cli/templates/skills/map-state/scripts/get-plan-path.sh +0 -0
- {mapify_cli-3.16.0 → mapify_cli-3.17.0}/src/mapify_cli/templates/skills/map-state/scripts/show-focus.sh +0 -0
- {mapify_cli-3.16.0 → mapify_cli-3.17.0}/src/mapify_cli/templates/skills/map-state/templates/iteration_history.md +0 -0
- {mapify_cli-3.16.0 → mapify_cli-3.17.0}/src/mapify_cli/templates/skills/map-state/templates/progress.md +0 -0
- {mapify_cli-3.16.0 → mapify_cli-3.17.0}/src/mapify_cli/templates/skills/map-state/templates/task_plan.md +0 -0
- {mapify_cli-3.16.0 → mapify_cli-3.17.0}/src/mapify_cli/templates/skills/map-task/SKILL.md +0 -0
- {mapify_cli-3.16.0 → mapify_cli-3.17.0}/src/mapify_cli/templates/skills/map-tdd/SKILL.md +0 -0
- {mapify_cli-3.16.0 → mapify_cli-3.17.0}/src/mapify_cli/templates/skills/map-tokenreport/SKILL.md +0 -0
- {mapify_cli-3.16.0 → mapify_cli-3.17.0}/src/mapify_cli/templates/workflow-rules.json +0 -0
- {mapify_cli-3.16.0 → mapify_cli-3.17.0}/src/mapify_cli/templates_src/.gitignore.jinja +0 -0
- {mapify_cli-3.16.0 → mapify_cli-3.17.0}/src/mapify_cli/templates_src/CLAUDE.md.jinja +0 -0
- {mapify_cli-3.16.0 → mapify_cli-3.17.0}/src/mapify_cli/templates_src/agents/debate-arbiter.md.jinja +0 -0
- {mapify_cli-3.16.0 → mapify_cli-3.17.0}/src/mapify_cli/templates_src/agents/documentation-reviewer.md.jinja +0 -0
- {mapify_cli-3.16.0 → mapify_cli-3.17.0}/src/mapify_cli/templates_src/agents/evaluator.md.jinja +0 -0
- {mapify_cli-3.16.0 → mapify_cli-3.17.0}/src/mapify_cli/templates_src/agents/final-verifier.md.jinja +0 -0
- {mapify_cli-3.16.0 → mapify_cli-3.17.0}/src/mapify_cli/templates_src/agents/predictor.md.jinja +0 -0
- {mapify_cli-3.16.0 → mapify_cli-3.17.0}/src/mapify_cli/templates_src/agents/reflector.md.jinja +0 -0
- {mapify_cli-3.16.0 → mapify_cli-3.17.0}/src/mapify_cli/templates_src/agents/synthesizer.md.jinja +0 -0
- {mapify_cli-3.16.0 → mapify_cli-3.17.0}/src/mapify_cli/templates_src/codex/AGENTS.md.jinja +0 -0
- {mapify_cli-3.16.0 → mapify_cli-3.17.0}/src/mapify_cli/templates_src/codex/agents/researcher.toml.jinja +0 -0
- {mapify_cli-3.16.0 → mapify_cli-3.17.0}/src/mapify_cli/templates_src/codex/config.toml.jinja +0 -0
- {mapify_cli-3.16.0 → mapify_cli-3.17.0}/src/mapify_cli/templates_src/codex/hooks/workflow-gate.py.jinja +0 -0
- {mapify_cli-3.16.0 → mapify_cli-3.17.0}/src/mapify_cli/templates_src/codex/hooks.json.jinja +0 -0
- {mapify_cli-3.16.0 → mapify_cli-3.17.0}/src/mapify_cli/templates_src/codex/skills/map-check/SKILL.md.jinja +0 -0
- {mapify_cli-3.16.0 → mapify_cli-3.17.0}/src/mapify_cli/templates_src/codex/skills/map-efficient/efficient-reference.md.jinja +0 -0
- {mapify_cli-3.16.0 → mapify_cli-3.17.0}/src/mapify_cli/templates_src/codex/skills/map-fast/SKILL.md.jinja +0 -0
- {mapify_cli-3.16.0 → mapify_cli-3.17.0}/src/mapify_cli/templates_src/hooks/README.md.jinja +0 -0
- {mapify_cli-3.16.0 → mapify_cli-3.17.0}/src/mapify_cli/templates_src/hooks/context-meter.py.jinja +0 -0
- {mapify_cli-3.16.0 → mapify_cli-3.17.0}/src/mapify_cli/templates_src/hooks/detect-clarification-triggers.py.jinja +0 -0
- {mapify_cli-3.16.0 → mapify_cli-3.17.0}/src/mapify_cli/templates_src/hooks/end-of-turn.sh.jinja +0 -0
- {mapify_cli-3.16.0 → mapify_cli-3.17.0}/src/mapify_cli/templates_src/hooks/map-memory-capture.py.jinja +0 -0
- {mapify_cli-3.16.0 → mapify_cli-3.17.0}/src/mapify_cli/templates_src/hooks/map-memory-endmark.py.jinja +0 -0
- {mapify_cli-3.16.0 → mapify_cli-3.17.0}/src/mapify_cli/templates_src/hooks/map-memory-finalize.py.jinja +0 -0
- {mapify_cli-3.16.0 → mapify_cli-3.17.0}/src/mapify_cli/templates_src/hooks/map-memory-recall.py.jinja +0 -0
- {mapify_cli-3.16.0 → mapify_cli-3.17.0}/src/mapify_cli/templates_src/hooks/map-token-meter.py.jinja +0 -0
- {mapify_cli-3.16.0 → mapify_cli-3.17.0}/src/mapify_cli/templates_src/hooks/post-compact-context.py.jinja +0 -0
- {mapify_cli-3.16.0 → mapify_cli-3.17.0}/src/mapify_cli/templates_src/hooks/pre-compact-save-transcript.py.jinja +0 -0
- {mapify_cli-3.16.0 → mapify_cli-3.17.0}/src/mapify_cli/templates_src/hooks/ralph-context-pruner.py.jinja +0 -0
- {mapify_cli-3.16.0 → mapify_cli-3.17.0}/src/mapify_cli/templates_src/hooks/ralph-iteration-logger.py.jinja +0 -0
- {mapify_cli-3.16.0 → mapify_cli-3.17.0}/src/mapify_cli/templates_src/hooks/safety-guardrails.py.jinja +0 -0
- {mapify_cli-3.16.0 → mapify_cli-3.17.0}/src/mapify_cli/templates_src/hooks/workflow-context-injector.py.jinja +0 -0
- {mapify_cli-3.16.0 → mapify_cli-3.17.0}/src/mapify_cli/templates_src/hooks/workflow-gate.py.jinja +0 -0
- {mapify_cli-3.16.0 → mapify_cli-3.17.0}/src/mapify_cli/templates_src/map/scripts/diagnostics.py.jinja +0 -0
- {mapify_cli-3.16.0 → mapify_cli-3.17.0}/src/mapify_cli/templates_src/map/scripts/map_utils.py.jinja +0 -0
- {mapify_cli-3.16.0 → mapify_cli-3.17.0}/src/mapify_cli/templates_src/map/scripts/sofa_client.py.jinja +0 -0
- {mapify_cli-3.16.0 → mapify_cli-3.17.0}/src/mapify_cli/templates_src/map/static-analysis/analyze.sh.jinja +0 -0
- {mapify_cli-3.16.0 → mapify_cli-3.17.0}/src/mapify_cli/templates_src/map/static-analysis/handlers/common.sh.jinja +0 -0
- {mapify_cli-3.16.0 → mapify_cli-3.17.0}/src/mapify_cli/templates_src/map/static-analysis/handlers/go.sh.jinja +0 -0
- {mapify_cli-3.16.0 → mapify_cli-3.17.0}/src/mapify_cli/templates_src/map/static-analysis/handlers/python.sh.jinja +0 -0
- {mapify_cli-3.16.0 → mapify_cli-3.17.0}/src/mapify_cli/templates_src/map/static-analysis/handlers/rust.sh.jinja +0 -0
- {mapify_cli-3.16.0 → mapify_cli-3.17.0}/src/mapify_cli/templates_src/map/static-analysis/handlers/typescript.sh.jinja +0 -0
- {mapify_cli-3.16.0 → mapify_cli-3.17.0}/src/mapify_cli/templates_src/ralph-loop-config.json.jinja +0 -0
- {mapify_cli-3.16.0 → mapify_cli-3.17.0}/src/mapify_cli/templates_src/references/bash-guidelines.md.jinja +0 -0
- {mapify_cli-3.16.0 → mapify_cli-3.17.0}/src/mapify_cli/templates_src/references/decomposition-examples.md.jinja +0 -0
- {mapify_cli-3.16.0 → mapify_cli-3.17.0}/src/mapify_cli/templates_src/references/escalation-matrix.md.jinja +0 -0
- {mapify_cli-3.16.0 → mapify_cli-3.17.0}/src/mapify_cli/templates_src/references/hook-patterns.md.jinja +0 -0
- {mapify_cli-3.16.0 → mapify_cli-3.17.0}/src/mapify_cli/templates_src/references/host-paths.md.jinja +0 -0
- {mapify_cli-3.16.0 → mapify_cli-3.17.0}/src/mapify_cli/templates_src/references/map-json-output-contracts.md.jinja +0 -0
- {mapify_cli-3.16.0 → mapify_cli-3.17.0}/src/mapify_cli/templates_src/references/map-output-examples.md.jinja +0 -0
- {mapify_cli-3.16.0 → mapify_cli-3.17.0}/src/mapify_cli/templates_src/references/map-xml-prompt-envelopes.md.jinja +0 -0
- {mapify_cli-3.16.0 → mapify_cli-3.17.0}/src/mapify_cli/templates_src/references/mcp-usage-examples.md.jinja +0 -0
- {mapify_cli-3.16.0 → mapify_cli-3.17.0}/src/mapify_cli/templates_src/references/step-state-schema.md.jinja +0 -0
- {mapify_cli-3.16.0 → mapify_cli-3.17.0}/src/mapify_cli/templates_src/references/workflow-state-schema.md.jinja +0 -0
- {mapify_cli-3.16.0 → mapify_cli-3.17.0}/src/mapify_cli/templates_src/rules/learned/README.md.jinja +0 -0
- {mapify_cli-3.16.0 → mapify_cli-3.17.0}/src/mapify_cli/templates_src/settings.json.jinja +0 -0
- {mapify_cli-3.16.0 → mapify_cli-3.17.0}/src/mapify_cli/templates_src/skills/README.md.jinja +0 -0
- {mapify_cli-3.16.0 → mapify_cli-3.17.0}/src/mapify_cli/templates_src/skills/map-check/SKILL.md.jinja +0 -0
- {mapify_cli-3.16.0 → mapify_cli-3.17.0}/src/mapify_cli/templates_src/skills/map-check/check-reference.md.jinja +0 -0
- {mapify_cli-3.16.0 → mapify_cli-3.17.0}/src/mapify_cli/templates_src/skills/map-debug/SKILL.md.jinja +0 -0
- {mapify_cli-3.16.0 → mapify_cli-3.17.0}/src/mapify_cli/templates_src/skills/map-efficient/efficient-reference.md.jinja +0 -0
- {mapify_cli-3.16.0 → mapify_cli-3.17.0}/src/mapify_cli/templates_src/skills/map-fast/SKILL.md.jinja +0 -0
- {mapify_cli-3.16.0 → mapify_cli-3.17.0}/src/mapify_cli/templates_src/skills/map-learn/SKILL.md.jinja +0 -0
- {mapify_cli-3.16.0 → mapify_cli-3.17.0}/src/mapify_cli/templates_src/skills/map-learn/templates/example-rules.md.jinja +0 -0
- {mapify_cli-3.16.0 → mapify_cli-3.17.0}/src/mapify_cli/templates_src/skills/map-learn/templates/rules-unconditional.md.jinja +0 -0
- {mapify_cli-3.16.0 → mapify_cli-3.17.0}/src/mapify_cli/templates_src/skills/map-learn/templates/rules-with-paths.md.jinja +0 -0
- {mapify_cli-3.16.0 → mapify_cli-3.17.0}/src/mapify_cli/templates_src/skills/map-memory-now/SKILL.md.jinja +0 -0
- {mapify_cli-3.16.0 → mapify_cli-3.17.0}/src/mapify_cli/templates_src/skills/map-plan/plan-reference.md.jinja +0 -0
- {mapify_cli-3.16.0 → mapify_cli-3.17.0}/src/mapify_cli/templates_src/skills/map-release/SKILL.md.jinja +0 -0
- {mapify_cli-3.16.0 → mapify_cli-3.17.0}/src/mapify_cli/templates_src/skills/map-resume/SKILL.md.jinja +0 -0
- {mapify_cli-3.16.0 → mapify_cli-3.17.0}/src/mapify_cli/templates_src/skills/map-resume/resume-reference.md.jinja +0 -0
- {mapify_cli-3.16.0 → mapify_cli-3.17.0}/src/mapify_cli/templates_src/skills/map-review/SKILL.md.jinja +0 -0
- {mapify_cli-3.16.0 → mapify_cli-3.17.0}/src/mapify_cli/templates_src/skills/map-review/review-reference.md.jinja +0 -0
- {mapify_cli-3.16.0 → mapify_cli-3.17.0}/src/mapify_cli/templates_src/skills/map-skill-eval/SKILL.md.jinja +0 -0
- {mapify_cli-3.16.0 → mapify_cli-3.17.0}/src/mapify_cli/templates_src/skills/map-so-search/SKILL.md.jinja +0 -0
- {mapify_cli-3.16.0 → mapify_cli-3.17.0}/src/mapify_cli/templates_src/skills/map-so-search/scripts/sofa_search.py.jinja +0 -0
- {mapify_cli-3.16.0 → mapify_cli-3.17.0}/src/mapify_cli/templates_src/skills/map-state/scripts/check-complete.sh.jinja +0 -0
- {mapify_cli-3.16.0 → mapify_cli-3.17.0}/src/mapify_cli/templates_src/skills/map-state/scripts/get-plan-path.sh.jinja +0 -0
- {mapify_cli-3.16.0 → mapify_cli-3.17.0}/src/mapify_cli/templates_src/skills/map-state/scripts/show-focus.sh.jinja +0 -0
- {mapify_cli-3.16.0 → mapify_cli-3.17.0}/src/mapify_cli/templates_src/skills/map-state/templates/iteration_history.md.jinja +0 -0
- {mapify_cli-3.16.0 → mapify_cli-3.17.0}/src/mapify_cli/templates_src/skills/map-state/templates/progress.md.jinja +0 -0
- {mapify_cli-3.16.0 → mapify_cli-3.17.0}/src/mapify_cli/templates_src/skills/map-state/templates/task_plan.md.jinja +0 -0
- {mapify_cli-3.16.0 → mapify_cli-3.17.0}/src/mapify_cli/templates_src/skills/map-task/SKILL.md.jinja +0 -0
- {mapify_cli-3.16.0 → mapify_cli-3.17.0}/src/mapify_cli/templates_src/skills/map-tdd/SKILL.md.jinja +0 -0
- {mapify_cli-3.16.0 → mapify_cli-3.17.0}/src/mapify_cli/templates_src/skills/map-tokenreport/SKILL.md.jinja +0 -0
- {mapify_cli-3.16.0 → mapify_cli-3.17.0}/src/mapify_cli/templates_src/workflow-rules.json.jinja +0 -0
- {mapify_cli-3.16.0 → mapify_cli-3.17.0}/src/mapify_cli/token_budget.py +0 -0
- {mapify_cli-3.16.0 → mapify_cli-3.17.0}/src/mapify_cli/tools/__init__.py +0 -0
- {mapify_cli-3.16.0 → mapify_cli-3.17.0}/src/mapify_cli/tools/validate_dependencies.py +0 -0
- {mapify_cli-3.16.0 → mapify_cli-3.17.0}/src/mapify_cli/verification_recorder.py +0 -0
- {mapify_cli-3.16.0 → mapify_cli-3.17.0}/src/mapify_cli/workflow_finalizer.py +0 -0
- {mapify_cli-3.16.0 → mapify_cli-3.17.0}/src/mapify_cli/workflow_logger.py +0 -0
- {mapify_cli-3.16.0 → mapify_cli-3.17.0}/src/mapify_cli/workflow_state.py +0 -0
- {mapify_cli-3.16.0 → mapify_cli-3.17.0}/tests/__init__.py +0 -0
- {mapify_cli-3.16.0 → mapify_cli-3.17.0}/tests/conftest.py +0 -0
- {mapify_cli-3.16.0 → mapify_cli-3.17.0}/tests/fixtures/claude/escalation-matrix.md +0 -0
- {mapify_cli-3.16.0 → mapify_cli-3.17.0}/tests/fixtures/codex/config.toml +0 -0
- {mapify_cli-3.16.0 → mapify_cli-3.17.0}/tests/hooks/test_detect_clarification_triggers.py +0 -0
- {mapify_cli-3.16.0 → mapify_cli-3.17.0}/tests/hooks/test_end_of_turn.py +0 -0
- {mapify_cli-3.16.0 → mapify_cli-3.17.0}/tests/hooks/test_hook_inventory_smoke.py +0 -0
- {mapify_cli-3.16.0 → mapify_cli-3.17.0}/tests/hooks/test_safety_guardrails.py +0 -0
- {mapify_cli-3.16.0 → mapify_cli-3.17.0}/tests/integration/__init__.py +0 -0
- {mapify_cli-3.16.0 → mapify_cli-3.17.0}/tests/integration/fixtures/blueprint.json +0 -0
- {mapify_cli-3.16.0 → mapify_cli-3.17.0}/tests/integration/fixtures/code_review.md +0 -0
- {mapify_cli-3.16.0 → mapify_cli-3.17.0}/tests/integration/fixtures/plan_handoff.json +0 -0
- {mapify_cli-3.16.0 → mapify_cli-3.17.0}/tests/integration/fixtures/spec.md +0 -0
- {mapify_cli-3.16.0 → mapify_cli-3.17.0}/tests/integration/fixtures/step_state_initialized.json +0 -0
- {mapify_cli-3.16.0 → mapify_cli-3.17.0}/tests/integration/fixtures/step_state_plan_complete.json +0 -0
- {mapify_cli-3.16.0 → mapify_cli-3.17.0}/tests/integration/fixtures/task_plan.md +0 -0
- {mapify_cli-3.16.0 → mapify_cli-3.17.0}/tests/integration/fixtures/verification_summary.md +0 -0
- {mapify_cli-3.16.0 → mapify_cli-3.17.0}/tests/integration/test_e2e_claude_sdk.py +0 -0
- {mapify_cli-3.16.0 → mapify_cli-3.17.0}/tests/skills_eval/fixtures/README.md +0 -0
- {mapify_cli-3.16.0 → mapify_cli-3.17.0}/tests/skills_eval/fixtures/map_check_optimize_eval_set.json +0 -0
- {mapify_cli-3.16.0 → mapify_cli-3.17.0}/tests/skills_eval/fixtures/map_debug_eval_set.json +0 -0
- {mapify_cli-3.16.0 → mapify_cli-3.17.0}/tests/skills_eval/fixtures/map_debug_optimize_eval_set.json +0 -0
- {mapify_cli-3.16.0 → mapify_cli-3.17.0}/tests/skills_eval/fixtures/map_efficient_optimize_eval_set.json +0 -0
- {mapify_cli-3.16.0 → mapify_cli-3.17.0}/tests/skills_eval/fixtures/map_explain_optimize_eval_set.json +0 -0
- {mapify_cli-3.16.0 → mapify_cli-3.17.0}/tests/skills_eval/fixtures/map_fast_optimize_eval_set.json +0 -0
- {mapify_cli-3.16.0 → mapify_cli-3.17.0}/tests/skills_eval/fixtures/map_learn_optimize_eval_set.json +0 -0
- {mapify_cli-3.16.0 → mapify_cli-3.17.0}/tests/skills_eval/fixtures/map_memory_now_optimize_eval_set.json +0 -0
- {mapify_cli-3.16.0 → mapify_cli-3.17.0}/tests/skills_eval/fixtures/map_plan_optimize_eval_set.json +0 -0
- {mapify_cli-3.16.0 → mapify_cli-3.17.0}/tests/skills_eval/fixtures/map_release_optimize_eval_set.json +0 -0
- {mapify_cli-3.16.0 → mapify_cli-3.17.0}/tests/skills_eval/fixtures/map_resume_optimize_eval_set.json +0 -0
- {mapify_cli-3.16.0 → mapify_cli-3.17.0}/tests/skills_eval/fixtures/map_review_optimize_eval_set.json +0 -0
- {mapify_cli-3.16.0 → mapify_cli-3.17.0}/tests/skills_eval/fixtures/map_skill_eval_optimize_eval_set.json +0 -0
- {mapify_cli-3.16.0 → mapify_cli-3.17.0}/tests/skills_eval/fixtures/map_state_optimize_eval_set.json +0 -0
- {mapify_cli-3.16.0 → mapify_cli-3.17.0}/tests/skills_eval/fixtures/map_task_optimize_eval_set.json +0 -0
- {mapify_cli-3.16.0 → mapify_cli-3.17.0}/tests/skills_eval/fixtures/map_tdd_optimize_eval_set.json +0 -0
- {mapify_cli-3.16.0 → mapify_cli-3.17.0}/tests/skills_eval/fixtures/map_tokenreport_optimize_eval_set.json +0 -0
- {mapify_cli-3.16.0 → mapify_cli-3.17.0}/tests/skills_eval/fixtures/whole_skill/map_task_blocker/manifest.json +0 -0
- {mapify_cli-3.16.0 → mapify_cli-3.17.0}/tests/skills_eval/fixtures/whole_skill/map_task_blocker/repo/.map/main/blueprint.json +0 -0
- {mapify_cli-3.16.0 → mapify_cli-3.17.0}/tests/skills_eval/fixtures/whole_skill/map_task_blocker/repo/.map/main/task_plan_main.md +0 -0
- {mapify_cli-3.16.0 → mapify_cli-3.17.0}/tests/skills_eval/fixtures/whole_skill/map_task_blocker/repo/src/__init__.py +0 -0
- {mapify_cli-3.16.0 → mapify_cli-3.17.0}/tests/skills_eval/fixtures/whole_skill/map_task_blocker/repo/src/utils.py +0 -0
- {mapify_cli-3.16.0 → mapify_cli-3.17.0}/tests/skills_eval/fixtures/whole_skill/map_task_blocker/repo/tests/test_compute.py +0 -0
- {mapify_cli-3.16.0 → mapify_cli-3.17.0}/tests/skills_eval/fixtures/whole_skill/map_task_calc/hidden/test_calc_full.py +0 -0
- {mapify_cli-3.16.0 → mapify_cli-3.17.0}/tests/skills_eval/fixtures/whole_skill/map_task_calc/manifest.json +0 -0
- {mapify_cli-3.16.0 → mapify_cli-3.17.0}/tests/skills_eval/fixtures/whole_skill/map_task_calc/repo/.map/main/blueprint.json +0 -0
- {mapify_cli-3.16.0 → mapify_cli-3.17.0}/tests/skills_eval/fixtures/whole_skill/map_task_calc/repo/.map/main/task_plan_main.md +0 -0
- {mapify_cli-3.16.0 → mapify_cli-3.17.0}/tests/skills_eval/fixtures/whole_skill/map_task_calc/repo/src/__init__.py +0 -0
- {mapify_cli-3.16.0 → mapify_cli-3.17.0}/tests/skills_eval/fixtures/whole_skill/map_task_calc/repo/src/calc.py +0 -0
- {mapify_cli-3.16.0 → mapify_cli-3.17.0}/tests/skills_eval/fixtures/whole_skill/map_task_calc/repo/tests/test_calc_basic.py +0 -0
- {mapify_cli-3.16.0 → mapify_cli-3.17.0}/tests/skills_eval/fixtures/whole_skill/map_task_calc_vague/hidden/test_calc_full.py +0 -0
- {mapify_cli-3.16.0 → mapify_cli-3.17.0}/tests/skills_eval/fixtures/whole_skill/map_task_calc_vague/manifest.json +0 -0
- {mapify_cli-3.16.0 → mapify_cli-3.17.0}/tests/skills_eval/fixtures/whole_skill/map_task_calc_vague/repo/.map/main/blueprint.json +0 -0
- {mapify_cli-3.16.0 → mapify_cli-3.17.0}/tests/skills_eval/fixtures/whole_skill/map_task_calc_vague/repo/.map/main/task_plan_main.md +0 -0
- {mapify_cli-3.16.0 → mapify_cli-3.17.0}/tests/skills_eval/fixtures/whole_skill/map_task_calc_vague/repo/src/__init__.py +0 -0
- {mapify_cli-3.16.0 → mapify_cli-3.17.0}/tests/skills_eval/fixtures/whole_skill/map_task_calc_vague/repo/src/calc.py +0 -0
- {mapify_cli-3.16.0 → mapify_cli-3.17.0}/tests/skills_eval/fixtures/whole_skill/map_task_calc_vague/repo/tests/test_calc_basic.py +0 -0
- {mapify_cli-3.16.0 → mapify_cli-3.17.0}/tests/skills_eval/fixtures/whole_skill/map_task_scope_pressure/manifest.json +0 -0
- {mapify_cli-3.16.0 → mapify_cli-3.17.0}/tests/skills_eval/fixtures/whole_skill/map_task_scope_pressure/repo/.map/main/blueprint.json +0 -0
- {mapify_cli-3.16.0 → mapify_cli-3.17.0}/tests/skills_eval/fixtures/whole_skill/map_task_scope_pressure/repo/.map/main/task_plan_main.md +0 -0
- {mapify_cli-3.16.0 → mapify_cli-3.17.0}/tests/skills_eval/fixtures/whole_skill/map_task_scope_pressure/repo/src/__init__.py +0 -0
- {mapify_cli-3.16.0 → mapify_cli-3.17.0}/tests/skills_eval/fixtures/whole_skill/map_task_scope_pressure/repo/src/config.py +0 -0
- {mapify_cli-3.16.0 → mapify_cli-3.17.0}/tests/skills_eval/fixtures/whole_skill/map_task_scope_pressure/repo/src/utils.py +0 -0
- {mapify_cli-3.16.0 → mapify_cli-3.17.0}/tests/skills_eval/fixtures/whole_skill/map_task_scope_pressure/repo/tests/test_price.py +0 -0
- {mapify_cli-3.16.0 → mapify_cli-3.17.0}/tests/skills_eval/fixtures/whole_skill/map_task_scope_trap/manifest.json +0 -0
- {mapify_cli-3.16.0 → mapify_cli-3.17.0}/tests/skills_eval/fixtures/whole_skill/map_task_scope_trap/repo/.map/main/blueprint.json +0 -0
- {mapify_cli-3.16.0 → mapify_cli-3.17.0}/tests/skills_eval/fixtures/whole_skill/map_task_scope_trap/repo/.map/main/task_plan_main.md +0 -0
- {mapify_cli-3.16.0 → mapify_cli-3.17.0}/tests/skills_eval/fixtures/whole_skill/map_task_scope_trap/repo/src/__init__.py +0 -0
- {mapify_cli-3.16.0 → mapify_cli-3.17.0}/tests/skills_eval/fixtures/whole_skill/map_task_scope_trap/repo/src/config.py +0 -0
- {mapify_cli-3.16.0 → mapify_cli-3.17.0}/tests/skills_eval/fixtures/whole_skill/map_task_scope_trap/repo/src/utils.py +0 -0
- {mapify_cli-3.16.0 → mapify_cli-3.17.0}/tests/skills_eval/fixtures/whole_skill/map_task_scope_trap/repo/tests/test_utils.py +0 -0
- {mapify_cli-3.16.0 → mapify_cli-3.17.0}/tests/skills_eval/fixtures/whole_skill/map_task_semver/manifest.json +0 -0
- {mapify_cli-3.16.0 → mapify_cli-3.17.0}/tests/skills_eval/fixtures/whole_skill/map_task_semver/repo/.map/main/blueprint.json +0 -0
- {mapify_cli-3.16.0 → mapify_cli-3.17.0}/tests/skills_eval/fixtures/whole_skill/map_task_semver/repo/.map/main/task_plan_main.md +0 -0
- {mapify_cli-3.16.0 → mapify_cli-3.17.0}/tests/skills_eval/fixtures/whole_skill/map_task_semver/repo/src/__init__.py +0 -0
- {mapify_cli-3.16.0 → mapify_cli-3.17.0}/tests/skills_eval/fixtures/whole_skill/map_task_semver/repo/src/semver.py +0 -0
- {mapify_cli-3.16.0 → mapify_cli-3.17.0}/tests/skills_eval/fixtures/whole_skill/map_task_semver/repo/tests/test_semver.py +0 -0
- {mapify_cli-3.16.0 → mapify_cli-3.17.0}/tests/skills_eval/fixtures/whole_skill/map_task_semver_vague/hidden/test_semver_full.py +0 -0
- {mapify_cli-3.16.0 → mapify_cli-3.17.0}/tests/skills_eval/fixtures/whole_skill/map_task_semver_vague/manifest.json +0 -0
- {mapify_cli-3.16.0 → mapify_cli-3.17.0}/tests/skills_eval/fixtures/whole_skill/map_task_semver_vague/repo/.map/main/blueprint.json +0 -0
- {mapify_cli-3.16.0 → mapify_cli-3.17.0}/tests/skills_eval/fixtures/whole_skill/map_task_semver_vague/repo/.map/main/task_plan_main.md +0 -0
- {mapify_cli-3.16.0 → mapify_cli-3.17.0}/tests/skills_eval/fixtures/whole_skill/map_task_semver_vague/repo/src/__init__.py +0 -0
- {mapify_cli-3.16.0 → mapify_cli-3.17.0}/tests/skills_eval/fixtures/whole_skill/map_task_semver_vague/repo/src/semver.py +0 -0
- {mapify_cli-3.16.0 → mapify_cli-3.17.0}/tests/skills_eval/fixtures/whole_skill/map_task_semver_vague/repo/tests/test_semver_basic.py +0 -0
- {mapify_cli-3.16.0 → mapify_cli-3.17.0}/tests/skills_eval/fixtures/whole_skill/map_task_semver_weakgate/hidden/test_semver_full.py +0 -0
- {mapify_cli-3.16.0 → mapify_cli-3.17.0}/tests/skills_eval/fixtures/whole_skill/map_task_semver_weakgate/manifest.json +0 -0
- {mapify_cli-3.16.0 → mapify_cli-3.17.0}/tests/skills_eval/fixtures/whole_skill/map_task_semver_weakgate/repo/.map/main/blueprint.json +0 -0
- {mapify_cli-3.16.0 → mapify_cli-3.17.0}/tests/skills_eval/fixtures/whole_skill/map_task_semver_weakgate/repo/.map/main/task_plan_main.md +0 -0
- {mapify_cli-3.16.0 → mapify_cli-3.17.0}/tests/skills_eval/fixtures/whole_skill/map_task_semver_weakgate/repo/src/__init__.py +0 -0
- {mapify_cli-3.16.0 → mapify_cli-3.17.0}/tests/skills_eval/fixtures/whole_skill/map_task_semver_weakgate/repo/src/semver.py +0 -0
- {mapify_cli-3.16.0 → mapify_cli-3.17.0}/tests/skills_eval/fixtures/whole_skill/map_task_semver_weakgate/repo/tests/test_semver_basic.py +0 -0
- {mapify_cli-3.16.0 → mapify_cli-3.17.0}/tests/skills_eval/whole_skill/spike_runner.py +0 -0
- {mapify_cli-3.16.0 → mapify_cli-3.17.0}/tests/test_agent_cli_correctness.py +0 -0
- {mapify_cli-3.16.0 → mapify_cli-3.17.0}/tests/test_agent_frontmatter.py +0 -0
- {mapify_cli-3.16.0 → mapify_cli-3.17.0}/tests/test_bump_version.py +0 -0
- {mapify_cli-3.16.0 → mapify_cli-3.17.0}/tests/test_decomposition.py +0 -0
- {mapify_cli-3.16.0 → mapify_cli-3.17.0}/tests/test_dependency_graph.py +0 -0
- {mapify_cli-3.16.0 → mapify_cli-3.17.0}/tests/test_diagnostics.py +0 -0
- {mapify_cli-3.16.0 → mapify_cli-3.17.0}/tests/test_digest_schema.py +0 -0
- {mapify_cli-3.16.0 → mapify_cli-3.17.0}/tests/test_file_copier.py +0 -0
- {mapify_cli-3.16.0 → mapify_cli-3.17.0}/tests/test_hook_patterns.py +0 -0
- {mapify_cli-3.16.0 → mapify_cli-3.17.0}/tests/test_init_import_graph.py +0 -0
- {mapify_cli-3.16.0 → mapify_cli-3.17.0}/tests/test_intent_detector.py +0 -0
- {mapify_cli-3.16.0 → mapify_cli-3.17.0}/tests/test_inv1_no_anthropic_optimize.py +0 -0
- {mapify_cli-3.16.0 → mapify_cli-3.17.0}/tests/test_jinja2_dep.py +0 -0
- {mapify_cli-3.16.0 → mapify_cli-3.17.0}/tests/test_locking.py +0 -0
- {mapify_cli-3.16.0 → mapify_cli-3.17.0}/tests/test_managed_file_copier.py +0 -0
- {mapify_cli-3.16.0 → mapify_cli-3.17.0}/tests/test_map_token_meter.py +0 -0
- {mapify_cli-3.16.0 → mapify_cli-3.17.0}/tests/test_map_utils_sanitize.py +0 -0
- {mapify_cli-3.16.0 → mapify_cli-3.17.0}/tests/test_mapify_cli.py +0 -0
- {mapify_cli-3.16.0 → mapify_cli-3.17.0}/tests/test_memory_capture.py +0 -0
- {mapify_cli-3.16.0 → mapify_cli-3.17.0}/tests/test_memory_finalize.py +0 -0
- {mapify_cli-3.16.0 → mapify_cli-3.17.0}/tests/test_memory_integration.py +0 -0
- {mapify_cli-3.16.0 → mapify_cli-3.17.0}/tests/test_memory_recall.py +0 -0
- {mapify_cli-3.16.0 → mapify_cli-3.17.0}/tests/test_memory_review_fixes.py +0 -0
- {mapify_cli-3.16.0 → mapify_cli-3.17.0}/tests/test_post_compact_context.py +0 -0
- {mapify_cli-3.16.0 → mapify_cli-3.17.0}/tests/test_ralph_hooks.py +0 -0
- {mapify_cli-3.16.0 → mapify_cli-3.17.0}/tests/test_ralph_state.py +0 -0
- {mapify_cli-3.16.0 → mapify_cli-3.17.0}/tests/test_repo_insight.py +0 -0
- {mapify_cli-3.16.0 → mapify_cli-3.17.0}/tests/test_schemas.py +0 -0
- {mapify_cli-3.16.0 → mapify_cli-3.17.0}/tests/test_skill_ir.py +0 -0
- {mapify_cli-3.16.0 → mapify_cli-3.17.0}/tests/test_skills_eval_aggregator.py +0 -0
- {mapify_cli-3.16.0 → mapify_cli-3.17.0}/tests/test_skills_eval_apply.py +0 -0
- {mapify_cli-3.16.0 → mapify_cli-3.17.0}/tests/test_skills_eval_cli_optimize.py +0 -0
- {mapify_cli-3.16.0 → mapify_cli-3.17.0}/tests/test_skills_eval_dispatcher_env.py +0 -0
- {mapify_cli-3.16.0 → mapify_cli-3.17.0}/tests/test_skills_eval_dispatcher_timeout.py +0 -0
- {mapify_cli-3.16.0 → mapify_cli-3.17.0}/tests/test_skills_eval_fixtures.py +0 -0
- {mapify_cli-3.16.0 → mapify_cli-3.17.0}/tests/test_skills_eval_optimizer.py +0 -0
- {mapify_cli-3.16.0 → mapify_cli-3.17.0}/tests/test_skills_eval_optimizer_isolation.py +0 -0
- {mapify_cli-3.16.0 → mapify_cli-3.17.0}/tests/test_skills_eval_proposer.py +0 -0
- {mapify_cli-3.16.0 → mapify_cli-3.17.0}/tests/test_skills_eval_runner.py +0 -0
- {mapify_cli-3.16.0 → mapify_cli-3.17.0}/tests/test_skills_eval_schema.py +0 -0
- {mapify_cli-3.16.0 → mapify_cli-3.17.0}/tests/test_skills_eval_viewer.py +0 -0
- {mapify_cli-3.16.0 → mapify_cli-3.17.0}/tests/test_sofa_client.py +0 -0
- {mapify_cli-3.16.0 → mapify_cli-3.17.0}/tests/test_sofa_search.py +0 -0
- {mapify_cli-3.16.0 → mapify_cli-3.17.0}/tests/test_template_render.py +0 -0
- {mapify_cli-3.16.0 → mapify_cli-3.17.0}/tests/test_token_budget.py +0 -0
- {mapify_cli-3.16.0 → mapify_cli-3.17.0}/tests/test_validate_dependencies.py +0 -0
- {mapify_cli-3.16.0 → mapify_cli-3.17.0}/tests/test_verification_recorder.py +0 -0
- {mapify_cli-3.16.0 → mapify_cli-3.17.0}/tests/test_workflow_context_injector.py +0 -0
- {mapify_cli-3.16.0 → mapify_cli-3.17.0}/tests/test_workflow_finalizer.py +0 -0
- {mapify_cli-3.16.0 → mapify_cli-3.17.0}/tests/test_workflow_gate.py +0 -0
- {mapify_cli-3.16.0 → mapify_cli-3.17.0}/tests/test_workflow_logger.py +0 -0
- {mapify_cli-3.16.0 → mapify_cli-3.17.0}/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.
|
|
3
|
+
Version: 3.17.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
|
|
@@ -70,6 +70,7 @@ You drive the whole loop with two core commands plus three gates:
|
|
|
70
70
|
/map-check # 3. CHECK — quality gates against the plan
|
|
71
71
|
/map-review # 4. REVIEW — semantic review vs spec, tests, and diff
|
|
72
72
|
/map-learn # 5. LEARN — save the gotchas for next session
|
|
73
|
+
/map-understand # optional - teach and quiz until the workflow makes sense
|
|
73
74
|
```
|
|
74
75
|
|
|
75
76
|
- **Start with `/map-plan`** for anything non-trivial — it clarifies behavior and splits the work into contract-sized subtasks.
|
|
@@ -117,6 +118,7 @@ Then enable the Codex hook manually: run `/hooks`, select `PreToolUse`, press `t
|
|
|
117
118
|
/map-check
|
|
118
119
|
/map-review
|
|
119
120
|
/map-learn
|
|
121
|
+
/map-understand # optional learning/quiz mode
|
|
120
122
|
```
|
|
121
123
|
|
|
122
124
|
That's the whole golden path. Everything below explains *why* it works and *when* to reach for it.
|
|
@@ -180,6 +182,7 @@ The DevOpsConf 2026 case study applies this process to a production Kubernetes P
|
|
|
180
182
|
| `/map-check` | Quality gates, verification, and artifact checks |
|
|
181
183
|
| `/map-review` | Pre-commit semantic review against the plan, tests, and diff |
|
|
182
184
|
| `/map-learn` | Capture project memory and reusable lessons |
|
|
185
|
+
| `/map-understand` | Interactive teaching and quiz mode for code, diffs, and workflow results |
|
|
183
186
|
| `/map-debug` | Bug fixes and debugging |
|
|
184
187
|
| `/map-task` | Execute a single subtask from an existing plan |
|
|
185
188
|
| `/map-tdd` | Test-first implementation workflow |
|
|
@@ -249,7 +252,7 @@ MAP is inspired by the [MAP cognitive architecture](https://github.com/Shanka123
|
|
|
249
252
|
minimality: lite # new installs default to lite; existing repos without the key stay off
|
|
250
253
|
```
|
|
251
254
|
|
|
252
|
-
Allowed values: `off`, `lite`, `full`, `ultra`. Phase 1 ships conservative `lite` defaults: Actor prefers the fewest moving parts, Monitor blocks scope drift only when it affects required behavior, and Evaluator scores simplicity without letting it hide missing required work. `/map-review` also adds an advisory what-to-delete lens when minimality is not `off`; its `net: -N` estimate is informational, not a gate.
|
|
255
|
+
Allowed values: `off`, `lite`, `full`, `ultra`. Phase 1 ships conservative `lite` defaults: Actor prefers the fewest moving parts, Monitor blocks scope drift only when it affects required behavior, and Evaluator scores simplicity without letting it hide missing required work. `/map-review` also adds an advisory what-to-delete lens when minimality is not `off`; its `net: -N` estimate is informational, not a gate. In `full`/`ultra`, the decomposer may place speculative omissions in `blueprint.deferred_yagni`; those items must be shown during plan approval and can be restored before execution with `python3 .map/scripts/map_orchestrator.py restore_deferred_yagni YG-NNN`. Maintainers can inspect local rollout readiness with `mapify minimality-report --json`, which compares complete `off` and opt-in run-health samples before considering the Phase 3 default flip, reports missing sample gaps and cohort branch names, lists the next telemetry actions, and emits a candidate-only `manual_review_gate` with opt-in branches plus a clarity/underscope checklist before promotion.
|
|
253
256
|
|
|
254
257
|
**Context-compression policy** (controls the `/compact` nudge; default `never` — opt-in):
|
|
255
258
|
|
|
@@ -26,6 +26,7 @@ You drive the whole loop with two core commands plus three gates:
|
|
|
26
26
|
/map-check # 3. CHECK — quality gates against the plan
|
|
27
27
|
/map-review # 4. REVIEW — semantic review vs spec, tests, and diff
|
|
28
28
|
/map-learn # 5. LEARN — save the gotchas for next session
|
|
29
|
+
/map-understand # optional - teach and quiz until the workflow makes sense
|
|
29
30
|
```
|
|
30
31
|
|
|
31
32
|
- **Start with `/map-plan`** for anything non-trivial — it clarifies behavior and splits the work into contract-sized subtasks.
|
|
@@ -73,6 +74,7 @@ Then enable the Codex hook manually: run `/hooks`, select `PreToolUse`, press `t
|
|
|
73
74
|
/map-check
|
|
74
75
|
/map-review
|
|
75
76
|
/map-learn
|
|
77
|
+
/map-understand # optional learning/quiz mode
|
|
76
78
|
```
|
|
77
79
|
|
|
78
80
|
That's the whole golden path. Everything below explains *why* it works and *when* to reach for it.
|
|
@@ -136,6 +138,7 @@ The DevOpsConf 2026 case study applies this process to a production Kubernetes P
|
|
|
136
138
|
| `/map-check` | Quality gates, verification, and artifact checks |
|
|
137
139
|
| `/map-review` | Pre-commit semantic review against the plan, tests, and diff |
|
|
138
140
|
| `/map-learn` | Capture project memory and reusable lessons |
|
|
141
|
+
| `/map-understand` | Interactive teaching and quiz mode for code, diffs, and workflow results |
|
|
139
142
|
| `/map-debug` | Bug fixes and debugging |
|
|
140
143
|
| `/map-task` | Execute a single subtask from an existing plan |
|
|
141
144
|
| `/map-tdd` | Test-first implementation workflow |
|
|
@@ -205,7 +208,7 @@ MAP is inspired by the [MAP cognitive architecture](https://github.com/Shanka123
|
|
|
205
208
|
minimality: lite # new installs default to lite; existing repos without the key stay off
|
|
206
209
|
```
|
|
207
210
|
|
|
208
|
-
Allowed values: `off`, `lite`, `full`, `ultra`. Phase 1 ships conservative `lite` defaults: Actor prefers the fewest moving parts, Monitor blocks scope drift only when it affects required behavior, and Evaluator scores simplicity without letting it hide missing required work. `/map-review` also adds an advisory what-to-delete lens when minimality is not `off`; its `net: -N` estimate is informational, not a gate.
|
|
211
|
+
Allowed values: `off`, `lite`, `full`, `ultra`. Phase 1 ships conservative `lite` defaults: Actor prefers the fewest moving parts, Monitor blocks scope drift only when it affects required behavior, and Evaluator scores simplicity without letting it hide missing required work. `/map-review` also adds an advisory what-to-delete lens when minimality is not `off`; its `net: -N` estimate is informational, not a gate. In `full`/`ultra`, the decomposer may place speculative omissions in `blueprint.deferred_yagni`; those items must be shown during plan approval and can be restored before execution with `python3 .map/scripts/map_orchestrator.py restore_deferred_yagni YG-NNN`. Maintainers can inspect local rollout readiness with `mapify minimality-report --json`, which compares complete `off` and opt-in run-health samples before considering the Phase 3 default flip, reports missing sample gaps and cohort branch names, lists the next telemetry actions, and emits a candidate-only `manual_review_gate` with opt-in branches plus a clarity/underscope checklist before promotion.
|
|
209
212
|
|
|
210
213
|
**Context-compression policy** (controls the `/compact` nudge; default `never` — opt-in):
|
|
211
214
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
[project]
|
|
2
2
|
name = "mapify-cli"
|
|
3
|
-
version = "3.
|
|
3
|
+
version = "3.17.0"
|
|
4
4
|
description = "MAP Framework installer - Modular Agentic Planner for Claude Code"
|
|
5
5
|
authors = [{ name = "MAP Framework Contributors" }]
|
|
6
6
|
readme = "README.md"
|
|
@@ -114,6 +114,9 @@ exclude = [
|
|
|
114
114
|
[tool.ruff]
|
|
115
115
|
extend-exclude = ["tests/skills_eval/fixtures/whole_skill"]
|
|
116
116
|
|
|
117
|
+
[tool.black]
|
|
118
|
+
target-version = ["py311"]
|
|
119
|
+
|
|
117
120
|
[[tool.mypy.overrides]]
|
|
118
121
|
module = "yaml"
|
|
119
122
|
ignore_missing_imports = true
|
|
@@ -23,7 +23,7 @@ Or install globally:
|
|
|
23
23
|
mapify check
|
|
24
24
|
"""
|
|
25
25
|
|
|
26
|
-
__version__ = "3.
|
|
26
|
+
__version__ = "3.17.0"
|
|
27
27
|
|
|
28
28
|
import os
|
|
29
29
|
import subprocess
|
|
@@ -32,7 +32,7 @@ import shutil
|
|
|
32
32
|
import ssl
|
|
33
33
|
from datetime import datetime
|
|
34
34
|
from pathlib import Path
|
|
35
|
-
from typing import Optional, List, Dict, Any
|
|
35
|
+
from typing import Optional, List, Dict, Any, Mapping
|
|
36
36
|
|
|
37
37
|
import typer
|
|
38
38
|
import httpx
|
|
@@ -145,6 +145,13 @@ skill_eval_app = typer.Typer(
|
|
|
145
145
|
|
|
146
146
|
app.add_typer(skill_eval_app, name="skill-eval")
|
|
147
147
|
|
|
148
|
+
research_eval_app = typer.Typer(
|
|
149
|
+
name="research-eval",
|
|
150
|
+
help="Evaluate research-agent localization quality without provider calls",
|
|
151
|
+
)
|
|
152
|
+
|
|
153
|
+
app.add_typer(research_eval_app, name="research-eval")
|
|
154
|
+
|
|
148
155
|
|
|
149
156
|
def version_callback(value: bool):
|
|
150
157
|
"""Callback to show version and exit."""
|
|
@@ -1265,6 +1272,150 @@ def doctor(debug: bool = typer.Option(False, "--debug", help="Enable debug loggi
|
|
|
1265
1272
|
console.print(f" • {path_name}")
|
|
1266
1273
|
|
|
1267
1274
|
|
|
1275
|
+
def _format_percent(value: Any) -> str:
|
|
1276
|
+
if value is None:
|
|
1277
|
+
return "n/a"
|
|
1278
|
+
try:
|
|
1279
|
+
return f"{float(value):.1%}"
|
|
1280
|
+
except (TypeError, ValueError):
|
|
1281
|
+
return "n/a"
|
|
1282
|
+
|
|
1283
|
+
|
|
1284
|
+
def _render_minimality_report(report: Mapping[str, Any]) -> None:
|
|
1285
|
+
summary = report.get("summary")
|
|
1286
|
+
if not isinstance(summary, Mapping):
|
|
1287
|
+
summary = {}
|
|
1288
|
+
branches = report.get("branches")
|
|
1289
|
+
branch_rows = branches if isinstance(branches, list) else []
|
|
1290
|
+
|
|
1291
|
+
console.print("[bold]Minimality rollout report[/bold]")
|
|
1292
|
+
console.print(
|
|
1293
|
+
f"Current config minimality: [cyan]{report.get('current_config_minimality', 'off')}[/cyan]"
|
|
1294
|
+
)
|
|
1295
|
+
console.print(
|
|
1296
|
+
f"Decision: [bold]{summary.get('decision', 'insufficient_data')}[/bold] "
|
|
1297
|
+
f"(ready_for_phase3={summary.get('ready_for_phase3', False)})"
|
|
1298
|
+
)
|
|
1299
|
+
console.print(
|
|
1300
|
+
"Runs: "
|
|
1301
|
+
f"{summary.get('complete_opt_in_runs', 0)} opt-in complete, "
|
|
1302
|
+
f"{summary.get('complete_off_runs', 0)} off-baseline complete, "
|
|
1303
|
+
f"{summary.get('complete_runs_missing_historical_minimality', 0)} inferred"
|
|
1304
|
+
)
|
|
1305
|
+
console.print(
|
|
1306
|
+
"Averages: "
|
|
1307
|
+
f"retry {float(summary.get('avg_retry_events_opt_in', 0.0)):.2f} opt-in vs "
|
|
1308
|
+
f"{float(summary.get('avg_retry_events_off', 0.0)):.2f} off; "
|
|
1309
|
+
f"guard rework {float(summary.get('avg_guard_rework_opt_in', 0.0)):.2f} opt-in vs "
|
|
1310
|
+
f"{float(summary.get('avg_guard_rework_off', 0.0)):.2f} off; "
|
|
1311
|
+
f"YAGNI reversal {_format_percent(summary.get('user_reversal_rate'))}"
|
|
1312
|
+
)
|
|
1313
|
+
|
|
1314
|
+
reasons = summary.get("reasons")
|
|
1315
|
+
if isinstance(reasons, list) and reasons:
|
|
1316
|
+
console.print()
|
|
1317
|
+
console.print("[bold]Reasons[/bold]")
|
|
1318
|
+
for reason in reasons:
|
|
1319
|
+
console.print(f" - {reason}")
|
|
1320
|
+
|
|
1321
|
+
next_actions = summary.get("next_actions")
|
|
1322
|
+
if isinstance(next_actions, list) and next_actions:
|
|
1323
|
+
console.print()
|
|
1324
|
+
console.print("[bold]Next actions[/bold]")
|
|
1325
|
+
for action in next_actions:
|
|
1326
|
+
console.print(f" - {action}")
|
|
1327
|
+
|
|
1328
|
+
cohort_branches = summary.get("cohort_branches")
|
|
1329
|
+
if isinstance(cohort_branches, Mapping):
|
|
1330
|
+
cohort_rows = (
|
|
1331
|
+
("Off baseline", cohort_branches.get("off_baseline")),
|
|
1332
|
+
("Opt-in", cohort_branches.get("opt_in")),
|
|
1333
|
+
(
|
|
1334
|
+
"Missing historical minimality",
|
|
1335
|
+
cohort_branches.get("missing_historical_minimality"),
|
|
1336
|
+
),
|
|
1337
|
+
)
|
|
1338
|
+
if any(isinstance(branches, list) and branches for _, branches in cohort_rows):
|
|
1339
|
+
console.print()
|
|
1340
|
+
console.print("[bold]Cohort branches[/bold]")
|
|
1341
|
+
for label, branches in cohort_rows:
|
|
1342
|
+
if isinstance(branches, list) and branches:
|
|
1343
|
+
console.print(f" {label}: " + ", ".join(map(str, branches)))
|
|
1344
|
+
|
|
1345
|
+
manual_review_gate = summary.get("manual_review_gate")
|
|
1346
|
+
if (
|
|
1347
|
+
isinstance(manual_review_gate, Mapping)
|
|
1348
|
+
and manual_review_gate.get("required") is True
|
|
1349
|
+
):
|
|
1350
|
+
console.print()
|
|
1351
|
+
console.print("[bold]Manual review gate[/bold]")
|
|
1352
|
+
candidate_branches = manual_review_gate.get("candidate_branches")
|
|
1353
|
+
if isinstance(candidate_branches, list) and candidate_branches:
|
|
1354
|
+
console.print(
|
|
1355
|
+
" Candidate opt-in branches: "
|
|
1356
|
+
+ ", ".join(map(str, candidate_branches))
|
|
1357
|
+
)
|
|
1358
|
+
checklist = manual_review_gate.get("checklist")
|
|
1359
|
+
if isinstance(checklist, list) and checklist:
|
|
1360
|
+
console.print(" Checklist:")
|
|
1361
|
+
for item in checklist:
|
|
1362
|
+
console.print(f" - {item}")
|
|
1363
|
+
|
|
1364
|
+
if branch_rows:
|
|
1365
|
+
table = Table(title="Branch Samples", show_header=True, header_style="bold cyan")
|
|
1366
|
+
table.add_column("Branch")
|
|
1367
|
+
table.add_column("Status")
|
|
1368
|
+
table.add_column("Minimality")
|
|
1369
|
+
table.add_column("Source")
|
|
1370
|
+
table.add_column("Retries", justify="right")
|
|
1371
|
+
table.add_column("Guard", justify="right")
|
|
1372
|
+
table.add_column("YAGNI", justify="right")
|
|
1373
|
+
for row in branch_rows:
|
|
1374
|
+
if not isinstance(row, Mapping):
|
|
1375
|
+
continue
|
|
1376
|
+
table.add_row(
|
|
1377
|
+
str(row.get("branch", "")),
|
|
1378
|
+
str(row.get("terminal_status", "")),
|
|
1379
|
+
str(row.get("minimality", "")),
|
|
1380
|
+
str(row.get("minimality_source", "")),
|
|
1381
|
+
str(row.get("retry_events", 0)),
|
|
1382
|
+
str(row.get("guard_rework_events", 0)),
|
|
1383
|
+
f"{row.get('restored_yagni_count', 0)}/{row.get('total_yagni_recommendations', 0)}",
|
|
1384
|
+
)
|
|
1385
|
+
console.print()
|
|
1386
|
+
console.print(table)
|
|
1387
|
+
|
|
1388
|
+
|
|
1389
|
+
@app.command("minimality-report")
|
|
1390
|
+
def minimality_report(
|
|
1391
|
+
project_path: Path = typer.Option(
|
|
1392
|
+
Path("."),
|
|
1393
|
+
"--path",
|
|
1394
|
+
"-p",
|
|
1395
|
+
help="Project root containing .map/ artifacts",
|
|
1396
|
+
),
|
|
1397
|
+
min_complete_runs: int = typer.Option(
|
|
1398
|
+
3,
|
|
1399
|
+
"--min-runs",
|
|
1400
|
+
min=1,
|
|
1401
|
+
help="Minimum complete runs required per off/opt-in cohort",
|
|
1402
|
+
),
|
|
1403
|
+
json_output: bool = typer.Option(
|
|
1404
|
+
False,
|
|
1405
|
+
"--json",
|
|
1406
|
+
help="Print the machine-readable report as JSON",
|
|
1407
|
+
),
|
|
1408
|
+
) -> None:
|
|
1409
|
+
"""Summarize local minimality telemetry for the Phase 3 default-flip gate."""
|
|
1410
|
+
from mapify_cli.minimality_report import build_minimality_rollout_report
|
|
1411
|
+
|
|
1412
|
+
report = build_minimality_rollout_report(project_path, min_complete_runs)
|
|
1413
|
+
if json_output:
|
|
1414
|
+
console.print_json(data=report)
|
|
1415
|
+
return
|
|
1416
|
+
_render_minimality_report(report)
|
|
1417
|
+
|
|
1418
|
+
|
|
1268
1419
|
def _mapify_install_kind() -> str:
|
|
1269
1420
|
"""Classify how this mapify CLI is installed.
|
|
1270
1421
|
|
|
@@ -1388,6 +1539,113 @@ def upgrade():
|
|
|
1388
1539
|
)
|
|
1389
1540
|
|
|
1390
1541
|
|
|
1542
|
+
# Research localization eval commands
|
|
1543
|
+
|
|
1544
|
+
|
|
1545
|
+
@research_eval_app.command("score")
|
|
1546
|
+
def research_eval_score(
|
|
1547
|
+
output_file: Path = typer.Argument(
|
|
1548
|
+
...,
|
|
1549
|
+
help="ResearchEvidence JSON/text output file to score",
|
|
1550
|
+
),
|
|
1551
|
+
expected_file: Path = typer.Argument(
|
|
1552
|
+
...,
|
|
1553
|
+
help="JSON list, or object with expected_locations, of target file ranges",
|
|
1554
|
+
),
|
|
1555
|
+
repo_root: Optional[Path] = typer.Option(
|
|
1556
|
+
None,
|
|
1557
|
+
"--repo-root",
|
|
1558
|
+
help="Fixture repository root for path and line-range validation",
|
|
1559
|
+
),
|
|
1560
|
+
fail_under_file_f1: float = typer.Option(
|
|
1561
|
+
0.0,
|
|
1562
|
+
"--fail-under-file-f1",
|
|
1563
|
+
min=0.0,
|
|
1564
|
+
max=1.0,
|
|
1565
|
+
help="Exit 1 when file-level F1 is below this threshold",
|
|
1566
|
+
),
|
|
1567
|
+
fail_under_line_f1: float = typer.Option(
|
|
1568
|
+
0.0,
|
|
1569
|
+
"--fail-under-line-f1",
|
|
1570
|
+
min=0.0,
|
|
1571
|
+
max=1.0,
|
|
1572
|
+
help="Exit 1 when line-overlap F1 is below this threshold",
|
|
1573
|
+
),
|
|
1574
|
+
overbroad_line_threshold: int = typer.Option(
|
|
1575
|
+
50,
|
|
1576
|
+
"--overbroad-line-threshold",
|
|
1577
|
+
min=1,
|
|
1578
|
+
help="Count predicted locations above this line span as over-broad",
|
|
1579
|
+
),
|
|
1580
|
+
fail_on_malformed: bool = typer.Option(
|
|
1581
|
+
True,
|
|
1582
|
+
"--fail-on-malformed/--allow-malformed",
|
|
1583
|
+
help="Exit 1 when parsed output contains malformed locations",
|
|
1584
|
+
),
|
|
1585
|
+
) -> None:
|
|
1586
|
+
"""Score research-agent localization against known fixture targets.
|
|
1587
|
+
|
|
1588
|
+
Exit codes:
|
|
1589
|
+
0 - Score meets thresholds
|
|
1590
|
+
1 - Score below threshold or malformed output found
|
|
1591
|
+
2 - Input files are missing or malformed
|
|
1592
|
+
"""
|
|
1593
|
+
import json
|
|
1594
|
+
|
|
1595
|
+
from mapify_cli.research_eval import (
|
|
1596
|
+
load_expected_locations,
|
|
1597
|
+
score_research_output,
|
|
1598
|
+
score_to_dict,
|
|
1599
|
+
)
|
|
1600
|
+
|
|
1601
|
+
try:
|
|
1602
|
+
output = output_file.read_text(encoding="utf-8")
|
|
1603
|
+
except OSError as exc:
|
|
1604
|
+
console.print(f"[bold red]Error:[/bold red] cannot read output file: {exc}")
|
|
1605
|
+
raise typer.Exit(2)
|
|
1606
|
+
|
|
1607
|
+
try:
|
|
1608
|
+
expected = load_expected_locations(expected_file)
|
|
1609
|
+
except (OSError, ValueError) as exc:
|
|
1610
|
+
console.print(f"[bold red]Error:[/bold red] cannot load expected targets: {exc}")
|
|
1611
|
+
raise typer.Exit(2)
|
|
1612
|
+
|
|
1613
|
+
root = repo_root.resolve() if repo_root else Path.cwd()
|
|
1614
|
+
score = score_research_output(
|
|
1615
|
+
output,
|
|
1616
|
+
expected,
|
|
1617
|
+
repo_root=root,
|
|
1618
|
+
overbroad_line_threshold=overbroad_line_threshold,
|
|
1619
|
+
)
|
|
1620
|
+
|
|
1621
|
+
failed_reasons: list[str] = []
|
|
1622
|
+
if score.file_level.f1 < fail_under_file_f1:
|
|
1623
|
+
failed_reasons.append(
|
|
1624
|
+
f"file_level.f1 {score.file_level.f1:.3f} < {fail_under_file_f1:.3f}"
|
|
1625
|
+
)
|
|
1626
|
+
if score.line_level.f1 < fail_under_line_f1:
|
|
1627
|
+
failed_reasons.append(
|
|
1628
|
+
f"line_level.f1 {score.line_level.f1:.3f} < {fail_under_line_f1:.3f}"
|
|
1629
|
+
)
|
|
1630
|
+
if fail_on_malformed and score.malformed_count > 0:
|
|
1631
|
+
failed_reasons.append(f"malformed_count {score.malformed_count} > 0")
|
|
1632
|
+
|
|
1633
|
+
payload = {
|
|
1634
|
+
"passed": not failed_reasons,
|
|
1635
|
+
"failed_reasons": failed_reasons,
|
|
1636
|
+
"thresholds": {
|
|
1637
|
+
"fail_under_file_f1": fail_under_file_f1,
|
|
1638
|
+
"fail_under_line_f1": fail_under_line_f1,
|
|
1639
|
+
"fail_on_malformed": fail_on_malformed,
|
|
1640
|
+
"overbroad_line_threshold": overbroad_line_threshold,
|
|
1641
|
+
},
|
|
1642
|
+
"score": score_to_dict(score),
|
|
1643
|
+
}
|
|
1644
|
+
print(json.dumps(payload, indent=2, sort_keys=True))
|
|
1645
|
+
if failed_reasons:
|
|
1646
|
+
raise typer.Exit(1)
|
|
1647
|
+
|
|
1648
|
+
|
|
1391
1649
|
# Skill-eval commands
|
|
1392
1650
|
|
|
1393
1651
|
|