mapify-cli 3.24.1__tar.gz → 3.25.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.24.1 → mapify_cli-3.25.0}/PKG-INFO +2 -2
- {mapify_cli-3.24.1 → mapify_cli-3.25.0}/pyproject.toml +1 -1
- {mapify_cli-3.24.1 → mapify_cli-3.25.0}/src/mapify_cli/__init__.py +35 -1
- {mapify_cli-3.24.1 → mapify_cli-3.25.0}/src/mapify_cli/config/project_config.py +87 -0
- {mapify_cli-3.24.1 → mapify_cli-3.25.0}/src/mapify_cli/delivery/file_copier.py +92 -0
- {mapify_cli-3.24.1 → mapify_cli-3.25.0}/src/mapify_cli/delivery/governance_report.py +8 -0
- {mapify_cli-3.24.1 → mapify_cli-3.25.0}/src/mapify_cli/delivery/template_renderer.py +5 -2
- {mapify_cli-3.24.1 → mapify_cli-3.25.0}/src/mapify_cli/schemas.py +173 -0
- {mapify_cli-3.24.1/src/mapify_cli/templates → mapify_cli-3.25.0/src/mapify_cli/templates/codex}/hooks/workflow-gate.py +12 -1
- {mapify_cli-3.24.1/src/mapify_cli/templates/codex → mapify_cli-3.25.0/src/mapify_cli/templates}/hooks/workflow-gate.py +12 -1
- {mapify_cli-3.24.1 → mapify_cli-3.25.0}/src/mapify_cli/templates/map/scripts/classify_scope.py +29 -2
- {mapify_cli-3.24.1 → mapify_cli-3.25.0}/src/mapify_cli/templates/map/scripts/map_orchestrator.py +21 -6
- {mapify_cli-3.24.1 → mapify_cli-3.25.0}/src/mapify_cli/templates/map/scripts/map_step_runner.py +1154 -10
- {mapify_cli-3.24.1 → mapify_cli-3.25.0}/src/mapify_cli/templates/map/scripts/wayfind_runner.py +209 -15
- {mapify_cli-3.24.1 → mapify_cli-3.25.0}/src/mapify_cli/templates/settings.json +33 -3
- {mapify_cli-3.24.1 → mapify_cli-3.25.0}/src/mapify_cli/templates/skills/map-release/SKILL.md +1 -1
- {mapify_cli-3.24.1 → mapify_cli-3.25.0}/src/mapify_cli/templates/skills/map-review/SKILL.md +77 -10
- {mapify_cli-3.24.1 → mapify_cli-3.25.0}/src/mapify_cli/templates/skills/map-review/review-reference.md +118 -0
- {mapify_cli-3.24.1 → mapify_cli-3.25.0}/src/mapify_cli/templates/skills/map-wayfind/SKILL.md +5 -5
- {mapify_cli-3.24.1 → mapify_cli-3.25.0}/src/mapify_cli/templates/skills/map-wayfind/wayfind-reference.md +3 -1
- {mapify_cli-3.24.1 → mapify_cli-3.25.0}/src/mapify_cli/templates_src/codex/hooks/workflow-gate.py.jinja +12 -1
- {mapify_cli-3.24.1 → mapify_cli-3.25.0}/src/mapify_cli/templates_src/hooks/workflow-gate.py.jinja +12 -1
- {mapify_cli-3.24.1 → mapify_cli-3.25.0}/src/mapify_cli/templates_src/map/scripts/classify_scope.py.jinja +29 -2
- {mapify_cli-3.24.1 → mapify_cli-3.25.0}/src/mapify_cli/templates_src/map/scripts/map_orchestrator.py.jinja +21 -6
- {mapify_cli-3.24.1 → mapify_cli-3.25.0}/src/mapify_cli/templates_src/map/scripts/map_step_runner.py.jinja +1154 -10
- {mapify_cli-3.24.1 → mapify_cli-3.25.0}/src/mapify_cli/templates_src/map/scripts/wayfind_runner.py.jinja +209 -15
- {mapify_cli-3.24.1 → mapify_cli-3.25.0}/src/mapify_cli/templates_src/settings.json.jinja +33 -3
- {mapify_cli-3.24.1 → mapify_cli-3.25.0}/src/mapify_cli/templates_src/skills/map-release/SKILL.md.jinja +1 -1
- {mapify_cli-3.24.1 → mapify_cli-3.25.0}/src/mapify_cli/templates_src/skills/map-review/SKILL.md.jinja +77 -10
- {mapify_cli-3.24.1 → mapify_cli-3.25.0}/src/mapify_cli/templates_src/skills/map-review/review-reference.md.jinja +118 -0
- {mapify_cli-3.24.1 → mapify_cli-3.25.0}/src/mapify_cli/templates_src/skills/map-wayfind/SKILL.md.jinja +5 -5
- {mapify_cli-3.24.1 → mapify_cli-3.25.0}/src/mapify_cli/templates_src/skills/map-wayfind/wayfind-reference.md.jinja +3 -1
- mapify_cli-3.25.0/tests/test_agent_memory.py +346 -0
- {mapify_cli-3.24.1 → mapify_cli-3.25.0}/tests/test_classify_scope_script.py +58 -0
- {mapify_cli-3.24.1 → mapify_cli-3.25.0}/tests/test_governance_report.py +36 -0
- {mapify_cli-3.24.1 → mapify_cli-3.25.0}/tests/test_map_orchestrator.py +51 -6
- {mapify_cli-3.24.1 → mapify_cli-3.25.0}/tests/test_map_step_runner.py +73 -1
- {mapify_cli-3.24.1 → mapify_cli-3.25.0}/tests/test_project_config.py +55 -0
- mapify_cli-3.25.0/tests/test_review_verdict_ledger.py +1251 -0
- mapify_cli-3.25.0/tests/test_settings_deny_globs.py +333 -0
- {mapify_cli-3.24.1 → mapify_cli-3.25.0}/tests/test_skills.py +10 -1
- {mapify_cli-3.24.1 → mapify_cli-3.25.0}/tests/test_template_render.py +40 -1
- {mapify_cli-3.24.1 → mapify_cli-3.25.0}/tests/test_wayfind_runner.py +226 -1
- {mapify_cli-3.24.1 → mapify_cli-3.25.0}/.claude/hooks/README.md +0 -0
- {mapify_cli-3.24.1 → mapify_cli-3.25.0}/.claude/skills/README.md +0 -0
- {mapify_cli-3.24.1 → mapify_cli-3.25.0}/.gitignore +0 -0
- {mapify_cli-3.24.1 → mapify_cli-3.25.0}/LICENSE +0 -0
- {mapify_cli-3.24.1 → mapify_cli-3.25.0}/README.md +0 -0
- {mapify_cli-3.24.1 → mapify_cli-3.25.0}/src/mapify_cli/_locking.py +0 -0
- {mapify_cli-3.24.1 → mapify_cli-3.25.0}/src/mapify_cli/boundary_quality_report.py +0 -0
- {mapify_cli-3.24.1 → mapify_cli-3.25.0}/src/mapify_cli/cli_ui.py +0 -0
- {mapify_cli-3.24.1 → mapify_cli-3.25.0}/src/mapify_cli/code_map.py +0 -0
- {mapify_cli-3.24.1 → mapify_cli-3.25.0}/src/mapify_cli/config/__init__.py +0 -0
- {mapify_cli-3.24.1 → mapify_cli-3.25.0}/src/mapify_cli/config/mcp.py +0 -0
- {mapify_cli-3.24.1 → mapify_cli-3.25.0}/src/mapify_cli/config/settings.py +0 -0
- {mapify_cli-3.24.1 → mapify_cli-3.25.0}/src/mapify_cli/delivery/__init__.py +0 -0
- {mapify_cli-3.24.1 → mapify_cli-3.25.0}/src/mapify_cli/delivery/agent_generator.py +0 -0
- {mapify_cli-3.24.1 → mapify_cli-3.25.0}/src/mapify_cli/delivery/codex_copier.py +0 -0
- {mapify_cli-3.24.1 → mapify_cli-3.25.0}/src/mapify_cli/delivery/domain_skill.py +0 -0
- {mapify_cli-3.24.1 → mapify_cli-3.25.0}/src/mapify_cli/delivery/managed_file_copier.py +0 -0
- {mapify_cli-3.24.1 → mapify_cli-3.25.0}/src/mapify_cli/delivery/providers.py +0 -0
- {mapify_cli-3.24.1 → mapify_cli-3.25.0}/src/mapify_cli/dependency_graph.py +0 -0
- {mapify_cli-3.24.1 → mapify_cli-3.25.0}/src/mapify_cli/grace_eval/__init__.py +0 -0
- {mapify_cli-3.24.1 → mapify_cli-3.25.0}/src/mapify_cli/grace_eval/schema.py +0 -0
- {mapify_cli-3.24.1 → mapify_cli-3.25.0}/src/mapify_cli/grace_eval/sweep.py +0 -0
- {mapify_cli-3.24.1 → mapify_cli-3.25.0}/src/mapify_cli/install_manifest.py +0 -0
- {mapify_cli-3.24.1 → mapify_cli-3.25.0}/src/mapify_cli/intent_detector.py +0 -0
- {mapify_cli-3.24.1 → mapify_cli-3.25.0}/src/mapify_cli/memory/__init__.py +0 -0
- {mapify_cli-3.24.1 → mapify_cli-3.25.0}/src/mapify_cli/memory/capture.py +0 -0
- {mapify_cli-3.24.1 → mapify_cli-3.25.0}/src/mapify_cli/memory/digest_schema.py +0 -0
- {mapify_cli-3.24.1 → mapify_cli-3.25.0}/src/mapify_cli/memory/finalize.py +0 -0
- {mapify_cli-3.24.1 → mapify_cli-3.25.0}/src/mapify_cli/memory/recall.py +0 -0
- {mapify_cli-3.24.1 → mapify_cli-3.25.0}/src/mapify_cli/minimality_eval.py +0 -0
- {mapify_cli-3.24.1 → mapify_cli-3.25.0}/src/mapify_cli/minimality_report.py +0 -0
- {mapify_cli-3.24.1 → mapify_cli-3.25.0}/src/mapify_cli/parallelism_observability.py +0 -0
- {mapify_cli-3.24.1 → mapify_cli-3.25.0}/src/mapify_cli/ralph_state.py +0 -0
- {mapify_cli-3.24.1 → mapify_cli-3.25.0}/src/mapify_cli/repo_insight.py +0 -0
- {mapify_cli-3.24.1 → mapify_cli-3.25.0}/src/mapify_cli/research_eval.py +0 -0
- {mapify_cli-3.24.1 → mapify_cli-3.25.0}/src/mapify_cli/research_eval_compare.py +0 -0
- {mapify_cli-3.24.1 → mapify_cli-3.25.0}/src/mapify_cli/scope_classifier.py +0 -0
- {mapify_cli-3.24.1 → mapify_cli-3.25.0}/src/mapify_cli/skill_ir.py +0 -0
- {mapify_cli-3.24.1 → mapify_cli-3.25.0}/src/mapify_cli/skills_eval/__init__.py +0 -0
- {mapify_cli-3.24.1 → mapify_cli-3.25.0}/src/mapify_cli/skills_eval/aggregator.py +0 -0
- {mapify_cli-3.24.1 → mapify_cli-3.25.0}/src/mapify_cli/skills_eval/apply_patcher.py +0 -0
- {mapify_cli-3.24.1 → mapify_cli-3.25.0}/src/mapify_cli/skills_eval/assertions.py +0 -0
- {mapify_cli-3.24.1 → mapify_cli-3.25.0}/src/mapify_cli/skills_eval/description_optimizer.py +0 -0
- {mapify_cli-3.24.1 → mapify_cli-3.25.0}/src/mapify_cli/skills_eval/dispatcher.py +0 -0
- {mapify_cli-3.24.1 → mapify_cli-3.25.0}/src/mapify_cli/skills_eval/eval_schema.py +0 -0
- {mapify_cli-3.24.1 → mapify_cli-3.25.0}/src/mapify_cli/skills_eval/proposer.py +0 -0
- {mapify_cli-3.24.1 → mapify_cli-3.25.0}/src/mapify_cli/skills_eval/runner.py +0 -0
- {mapify_cli-3.24.1 → mapify_cli-3.25.0}/src/mapify_cli/skills_eval/trajectory/__init__.py +0 -0
- {mapify_cli-3.24.1 → mapify_cli-3.25.0}/src/mapify_cli/skills_eval/trajectory/bundle.py +0 -0
- {mapify_cli-3.24.1 → mapify_cli-3.25.0}/src/mapify_cli/skills_eval/trajectory/dispatcher.py +0 -0
- {mapify_cli-3.24.1 → mapify_cli-3.25.0}/src/mapify_cli/skills_eval/trajectory/eval_schema.py +0 -0
- {mapify_cli-3.24.1 → mapify_cli-3.25.0}/src/mapify_cli/skills_eval/trajectory/gates.py +0 -0
- {mapify_cli-3.24.1 → mapify_cli-3.25.0}/src/mapify_cli/skills_eval/trajectory/judge.py +0 -0
- {mapify_cli-3.24.1 → mapify_cli-3.25.0}/src/mapify_cli/skills_eval/trajectory/repeated.py +0 -0
- {mapify_cli-3.24.1 → mapify_cli-3.25.0}/src/mapify_cli/skills_eval/trajectory/report.py +0 -0
- {mapify_cli-3.24.1 → mapify_cli-3.25.0}/src/mapify_cli/skills_eval/trajectory/runner.py +0 -0
- {mapify_cli-3.24.1 → mapify_cli-3.25.0}/src/mapify_cli/skills_eval/trajectory/seeding.py +0 -0
- {mapify_cli-3.24.1 → mapify_cli-3.25.0}/src/mapify_cli/skills_eval/viewer.py +0 -0
- {mapify_cli-3.24.1 → mapify_cli-3.25.0}/src/mapify_cli/templates/.gitignore +0 -0
- {mapify_cli-3.24.1 → mapify_cli-3.25.0}/src/mapify_cli/templates/CLAUDE.md +0 -0
- {mapify_cli-3.24.1 → mapify_cli-3.25.0}/src/mapify_cli/templates/agents/actor.md +0 -0
- {mapify_cli-3.24.1 → mapify_cli-3.25.0}/src/mapify_cli/templates/agents/documentation-reviewer.md +0 -0
- {mapify_cli-3.24.1 → mapify_cli-3.25.0}/src/mapify_cli/templates/agents/evaluator.md +0 -0
- {mapify_cli-3.24.1 → mapify_cli-3.25.0}/src/mapify_cli/templates/agents/final-verifier.md +0 -0
- {mapify_cli-3.24.1 → mapify_cli-3.25.0}/src/mapify_cli/templates/agents/monitor.md +0 -0
- {mapify_cli-3.24.1 → mapify_cli-3.25.0}/src/mapify_cli/templates/agents/predictor.md +0 -0
- {mapify_cli-3.24.1 → mapify_cli-3.25.0}/src/mapify_cli/templates/agents/reflector.md +0 -0
- {mapify_cli-3.24.1 → mapify_cli-3.25.0}/src/mapify_cli/templates/agents/research-agent.md +0 -0
- {mapify_cli-3.24.1 → mapify_cli-3.25.0}/src/mapify_cli/templates/agents/task-decomposer.md +0 -0
- {mapify_cli-3.24.1 → mapify_cli-3.25.0}/src/mapify_cli/templates/codex/AGENTS.md +0 -0
- {mapify_cli-3.24.1 → mapify_cli-3.25.0}/src/mapify_cli/templates/codex/agents/decomposer.toml +0 -0
- {mapify_cli-3.24.1 → mapify_cli-3.25.0}/src/mapify_cli/templates/codex/agents/evaluator.toml +0 -0
- {mapify_cli-3.24.1 → mapify_cli-3.25.0}/src/mapify_cli/templates/codex/agents/monitor.toml +0 -0
- {mapify_cli-3.24.1 → mapify_cli-3.25.0}/src/mapify_cli/templates/codex/agents/predictor.toml +0 -0
- {mapify_cli-3.24.1 → mapify_cli-3.25.0}/src/mapify_cli/templates/codex/agents/researcher.toml +0 -0
- {mapify_cli-3.24.1 → mapify_cli-3.25.0}/src/mapify_cli/templates/codex/config.toml +0 -0
- {mapify_cli-3.24.1 → mapify_cli-3.25.0}/src/mapify_cli/templates/codex/hooks.json +0 -0
- {mapify_cli-3.24.1 → mapify_cli-3.25.0}/src/mapify_cli/templates/codex/skills/map-check/SKILL.md +0 -0
- {mapify_cli-3.24.1 → mapify_cli-3.25.0}/src/mapify_cli/templates/codex/skills/map-efficient/SKILL.md +0 -0
- {mapify_cli-3.24.1 → mapify_cli-3.25.0}/src/mapify_cli/templates/codex/skills/map-efficient/efficient-reference.md +0 -0
- {mapify_cli-3.24.1 → mapify_cli-3.25.0}/src/mapify_cli/templates/codex/skills/map-explain/SKILL.md +0 -0
- {mapify_cli-3.24.1 → mapify_cli-3.25.0}/src/mapify_cli/templates/codex/skills/map-fast/SKILL.md +0 -0
- {mapify_cli-3.24.1 → mapify_cli-3.25.0}/src/mapify_cli/templates/codex/skills/map-plan/SKILL.md +0 -0
- {mapify_cli-3.24.1 → mapify_cli-3.25.0}/src/mapify_cli/templates/codex/skills/map-review/SKILL.md +0 -0
- {mapify_cli-3.24.1 → mapify_cli-3.25.0}/src/mapify_cli/templates/codex/skills/map-review/adversarial-reference.md +0 -0
- {mapify_cli-3.24.1 → mapify_cli-3.25.0}/src/mapify_cli/templates/codex/skills/map-review/review-reference.md +0 -0
- {mapify_cli-3.24.1 → mapify_cli-3.25.0}/src/mapify_cli/templates/codex/skills/map-understand/SKILL.md +0 -0
- {mapify_cli-3.24.1 → mapify_cli-3.25.0}/src/mapify_cli/templates/hooks/README.md +0 -0
- {mapify_cli-3.24.1 → mapify_cli-3.25.0}/src/mapify_cli/templates/hooks/context-meter.py +0 -0
- {mapify_cli-3.24.1 → mapify_cli-3.25.0}/src/mapify_cli/templates/hooks/detect-clarification-triggers.py +0 -0
- {mapify_cli-3.24.1 → mapify_cli-3.25.0}/src/mapify_cli/templates/hooks/end-of-turn.sh +0 -0
- {mapify_cli-3.24.1 → mapify_cli-3.25.0}/src/mapify_cli/templates/hooks/map-memory-capture.py +0 -0
- {mapify_cli-3.24.1 → mapify_cli-3.25.0}/src/mapify_cli/templates/hooks/map-memory-endmark.py +0 -0
- {mapify_cli-3.24.1 → mapify_cli-3.25.0}/src/mapify_cli/templates/hooks/map-memory-finalize.py +0 -0
- {mapify_cli-3.24.1 → mapify_cli-3.25.0}/src/mapify_cli/templates/hooks/map-memory-recall.py +0 -0
- {mapify_cli-3.24.1 → mapify_cli-3.25.0}/src/mapify_cli/templates/hooks/map-statusline.py +0 -0
- {mapify_cli-3.24.1 → mapify_cli-3.25.0}/src/mapify_cli/templates/hooks/map-token-meter.py +0 -0
- {mapify_cli-3.24.1 → mapify_cli-3.25.0}/src/mapify_cli/templates/hooks/post-compact-context.py +0 -0
- {mapify_cli-3.24.1 → mapify_cli-3.25.0}/src/mapify_cli/templates/hooks/pre-compact-save-transcript.py +0 -0
- {mapify_cli-3.24.1 → mapify_cli-3.25.0}/src/mapify_cli/templates/hooks/ralph-context-pruner.py +0 -0
- {mapify_cli-3.24.1 → mapify_cli-3.25.0}/src/mapify_cli/templates/hooks/ralph-iteration-logger.py +0 -0
- {mapify_cli-3.24.1 → mapify_cli-3.25.0}/src/mapify_cli/templates/hooks/safety-guardrails.py +0 -0
- {mapify_cli-3.24.1 → mapify_cli-3.25.0}/src/mapify_cli/templates/hooks/scrub-internal-ids.py +0 -0
- {mapify_cli-3.24.1 → mapify_cli-3.25.0}/src/mapify_cli/templates/hooks/workflow-context-injector.py +0 -0
- {mapify_cli-3.24.1 → mapify_cli-3.25.0}/src/mapify_cli/templates/map/scripts/diagnostics.py +0 -0
- {mapify_cli-3.24.1 → mapify_cli-3.25.0}/src/mapify_cli/templates/map/scripts/map_utils.py +0 -0
- {mapify_cli-3.24.1 → mapify_cli-3.25.0}/src/mapify_cli/templates/map/scripts/scrub_internal_ids.py +0 -0
- {mapify_cli-3.24.1 → mapify_cli-3.25.0}/src/mapify_cli/templates/map/scripts/sofa_client.py +0 -0
- {mapify_cli-3.24.1 → mapify_cli-3.25.0}/src/mapify_cli/templates/map/scripts/validate_spec_citations.py +0 -0
- {mapify_cli-3.24.1 → mapify_cli-3.25.0}/src/mapify_cli/templates/map/static-analysis/analyze.sh +0 -0
- {mapify_cli-3.24.1 → mapify_cli-3.25.0}/src/mapify_cli/templates/map/static-analysis/handlers/common.sh +0 -0
- {mapify_cli-3.24.1 → mapify_cli-3.25.0}/src/mapify_cli/templates/map/static-analysis/handlers/go.sh +0 -0
- {mapify_cli-3.24.1 → mapify_cli-3.25.0}/src/mapify_cli/templates/map/static-analysis/handlers/python.sh +0 -0
- {mapify_cli-3.24.1 → mapify_cli-3.25.0}/src/mapify_cli/templates/map/static-analysis/handlers/rust.sh +0 -0
- {mapify_cli-3.24.1 → mapify_cli-3.25.0}/src/mapify_cli/templates/map/static-analysis/handlers/typescript.sh +0 -0
- {mapify_cli-3.24.1 → mapify_cli-3.25.0}/src/mapify_cli/templates/ralph-loop-config.json +0 -0
- {mapify_cli-3.24.1 → mapify_cli-3.25.0}/src/mapify_cli/templates/references/bash-guidelines.md +0 -0
- {mapify_cli-3.24.1 → mapify_cli-3.25.0}/src/mapify_cli/templates/references/decomposition-examples.md +0 -0
- {mapify_cli-3.24.1 → mapify_cli-3.25.0}/src/mapify_cli/templates/references/escalation-matrix.md +0 -0
- {mapify_cli-3.24.1 → mapify_cli-3.25.0}/src/mapify_cli/templates/references/hook-patterns.md +0 -0
- {mapify_cli-3.24.1 → mapify_cli-3.25.0}/src/mapify_cli/templates/references/host-paths.md +0 -0
- {mapify_cli-3.24.1 → mapify_cli-3.25.0}/src/mapify_cli/templates/references/map-json-output-contracts.md +0 -0
- {mapify_cli-3.24.1 → mapify_cli-3.25.0}/src/mapify_cli/templates/references/map-output-examples.md +0 -0
- {mapify_cli-3.24.1 → mapify_cli-3.25.0}/src/mapify_cli/templates/references/map-xml-prompt-envelopes.md +0 -0
- {mapify_cli-3.24.1 → mapify_cli-3.25.0}/src/mapify_cli/templates/references/mcp-usage-examples.md +0 -0
- {mapify_cli-3.24.1 → mapify_cli-3.25.0}/src/mapify_cli/templates/references/step-state-schema.md +0 -0
- {mapify_cli-3.24.1 → mapify_cli-3.25.0}/src/mapify_cli/templates/references/workflow-state-schema.md +0 -0
- {mapify_cli-3.24.1 → mapify_cli-3.25.0}/src/mapify_cli/templates/rules/learned/README.md +0 -0
- {mapify_cli-3.24.1 → mapify_cli-3.25.0}/src/mapify_cli/templates/skills/README.md +0 -0
- {mapify_cli-3.24.1 → mapify_cli-3.25.0}/src/mapify_cli/templates/skills/map-architecture/SKILL.md +0 -0
- {mapify_cli-3.24.1 → mapify_cli-3.25.0}/src/mapify_cli/templates/skills/map-check/SKILL.md +0 -0
- {mapify_cli-3.24.1 → mapify_cli-3.25.0}/src/mapify_cli/templates/skills/map-check/check-reference.md +0 -0
- {mapify_cli-3.24.1 → mapify_cli-3.25.0}/src/mapify_cli/templates/skills/map-debug/SKILL.md +0 -0
- {mapify_cli-3.24.1 → mapify_cli-3.25.0}/src/mapify_cli/templates/skills/map-efficient/SKILL.md +0 -0
- {mapify_cli-3.24.1 → mapify_cli-3.25.0}/src/mapify_cli/templates/skills/map-efficient/efficient-reference.md +0 -0
- {mapify_cli-3.24.1 → mapify_cli-3.25.0}/src/mapify_cli/templates/skills/map-explain/SKILL.md +0 -0
- {mapify_cli-3.24.1 → mapify_cli-3.25.0}/src/mapify_cli/templates/skills/map-fast/SKILL.md +0 -0
- {mapify_cli-3.24.1 → mapify_cli-3.25.0}/src/mapify_cli/templates/skills/map-learn/SKILL.md +0 -0
- {mapify_cli-3.24.1 → mapify_cli-3.25.0}/src/mapify_cli/templates/skills/map-learn/templates/example-rules.md +0 -0
- {mapify_cli-3.24.1 → mapify_cli-3.25.0}/src/mapify_cli/templates/skills/map-learn/templates/rules-unconditional.md +0 -0
- {mapify_cli-3.24.1 → mapify_cli-3.25.0}/src/mapify_cli/templates/skills/map-learn/templates/rules-with-paths.md +0 -0
- {mapify_cli-3.24.1 → mapify_cli-3.25.0}/src/mapify_cli/templates/skills/map-memory-now/SKILL.md +0 -0
- {mapify_cli-3.24.1 → mapify_cli-3.25.0}/src/mapify_cli/templates/skills/map-plan/SKILL.md +0 -0
- {mapify_cli-3.24.1 → mapify_cli-3.25.0}/src/mapify_cli/templates/skills/map-plan/plan-reference.md +0 -0
- {mapify_cli-3.24.1 → mapify_cli-3.25.0}/src/mapify_cli/templates/skills/map-resume/SKILL.md +0 -0
- {mapify_cli-3.24.1 → mapify_cli-3.25.0}/src/mapify_cli/templates/skills/map-resume/resume-reference.md +0 -0
- {mapify_cli-3.24.1 → mapify_cli-3.25.0}/src/mapify_cli/templates/skills/map-review/adversarial-reference.md +0 -0
- {mapify_cli-3.24.1 → mapify_cli-3.25.0}/src/mapify_cli/templates/skills/map-skill-eval/SKILL.md +0 -0
- {mapify_cli-3.24.1 → mapify_cli-3.25.0}/src/mapify_cli/templates/skills/map-so-search/SKILL.md +0 -0
- {mapify_cli-3.24.1 → mapify_cli-3.25.0}/src/mapify_cli/templates/skills/map-so-search/scripts/sofa_search.py +0 -0
- {mapify_cli-3.24.1 → mapify_cli-3.25.0}/src/mapify_cli/templates/skills/map-state/SKILL.md +0 -0
- {mapify_cli-3.24.1 → mapify_cli-3.25.0}/src/mapify_cli/templates/skills/map-state/scripts/check-complete.sh +0 -0
- {mapify_cli-3.24.1 → mapify_cli-3.25.0}/src/mapify_cli/templates/skills/map-state/scripts/get-plan-path.sh +0 -0
- {mapify_cli-3.24.1 → mapify_cli-3.25.0}/src/mapify_cli/templates/skills/map-state/scripts/init-session.sh +0 -0
- {mapify_cli-3.24.1 → mapify_cli-3.25.0}/src/mapify_cli/templates/skills/map-state/scripts/show-focus.sh +0 -0
- {mapify_cli-3.24.1 → mapify_cli-3.25.0}/src/mapify_cli/templates/skills/map-state/templates/findings.md +0 -0
- {mapify_cli-3.24.1 → mapify_cli-3.25.0}/src/mapify_cli/templates/skills/map-state/templates/iteration_history.md +0 -0
- {mapify_cli-3.24.1 → mapify_cli-3.25.0}/src/mapify_cli/templates/skills/map-state/templates/progress.md +0 -0
- {mapify_cli-3.24.1 → mapify_cli-3.25.0}/src/mapify_cli/templates/skills/map-state/templates/task_plan.md +0 -0
- {mapify_cli-3.24.1 → mapify_cli-3.25.0}/src/mapify_cli/templates/skills/map-task/SKILL.md +0 -0
- {mapify_cli-3.24.1 → mapify_cli-3.25.0}/src/mapify_cli/templates/skills/map-tdd/SKILL.md +0 -0
- {mapify_cli-3.24.1 → mapify_cli-3.25.0}/src/mapify_cli/templates/skills/map-tokenreport/SKILL.md +0 -0
- {mapify_cli-3.24.1 → mapify_cli-3.25.0}/src/mapify_cli/templates/skills/map-understand/SKILL.md +0 -0
- {mapify_cli-3.24.1 → mapify_cli-3.25.0}/src/mapify_cli/templates/skills/skill-rules.json +0 -0
- {mapify_cli-3.24.1 → mapify_cli-3.25.0}/src/mapify_cli/templates/workflow-rules.json +0 -0
- {mapify_cli-3.24.1 → mapify_cli-3.25.0}/src/mapify_cli/templates_src/.gitignore.jinja +0 -0
- {mapify_cli-3.24.1 → mapify_cli-3.25.0}/src/mapify_cli/templates_src/CLAUDE.md.jinja +0 -0
- {mapify_cli-3.24.1 → mapify_cli-3.25.0}/src/mapify_cli/templates_src/agents/actor.md.jinja +0 -0
- {mapify_cli-3.24.1 → mapify_cli-3.25.0}/src/mapify_cli/templates_src/agents/documentation-reviewer.md.jinja +0 -0
- {mapify_cli-3.24.1 → mapify_cli-3.25.0}/src/mapify_cli/templates_src/agents/evaluator.md.jinja +0 -0
- {mapify_cli-3.24.1 → mapify_cli-3.25.0}/src/mapify_cli/templates_src/agents/final-verifier.md.jinja +0 -0
- {mapify_cli-3.24.1 → mapify_cli-3.25.0}/src/mapify_cli/templates_src/agents/monitor.md.jinja +0 -0
- {mapify_cli-3.24.1 → mapify_cli-3.25.0}/src/mapify_cli/templates_src/agents/predictor.md.jinja +0 -0
- {mapify_cli-3.24.1 → mapify_cli-3.25.0}/src/mapify_cli/templates_src/agents/reflector.md.jinja +0 -0
- {mapify_cli-3.24.1 → mapify_cli-3.25.0}/src/mapify_cli/templates_src/agents/research-agent.md.jinja +0 -0
- {mapify_cli-3.24.1 → mapify_cli-3.25.0}/src/mapify_cli/templates_src/agents/task-decomposer.md.jinja +0 -0
- {mapify_cli-3.24.1 → mapify_cli-3.25.0}/src/mapify_cli/templates_src/codex/AGENTS.md.jinja +0 -0
- {mapify_cli-3.24.1 → mapify_cli-3.25.0}/src/mapify_cli/templates_src/codex/agents/decomposer.toml.jinja +0 -0
- {mapify_cli-3.24.1 → mapify_cli-3.25.0}/src/mapify_cli/templates_src/codex/agents/evaluator.toml.jinja +0 -0
- {mapify_cli-3.24.1 → mapify_cli-3.25.0}/src/mapify_cli/templates_src/codex/agents/monitor.toml.jinja +0 -0
- {mapify_cli-3.24.1 → mapify_cli-3.25.0}/src/mapify_cli/templates_src/codex/agents/predictor.toml.jinja +0 -0
- {mapify_cli-3.24.1 → mapify_cli-3.25.0}/src/mapify_cli/templates_src/codex/agents/researcher.toml.jinja +0 -0
- {mapify_cli-3.24.1 → mapify_cli-3.25.0}/src/mapify_cli/templates_src/codex/config.toml.jinja +0 -0
- {mapify_cli-3.24.1 → mapify_cli-3.25.0}/src/mapify_cli/templates_src/codex/hooks.json.jinja +0 -0
- {mapify_cli-3.24.1 → mapify_cli-3.25.0}/src/mapify_cli/templates_src/codex/skills/map-check/SKILL.md.jinja +0 -0
- {mapify_cli-3.24.1 → mapify_cli-3.25.0}/src/mapify_cli/templates_src/codex/skills/map-efficient/SKILL.md.jinja +0 -0
- {mapify_cli-3.24.1 → mapify_cli-3.25.0}/src/mapify_cli/templates_src/codex/skills/map-efficient/efficient-reference.md.jinja +0 -0
- {mapify_cli-3.24.1 → mapify_cli-3.25.0}/src/mapify_cli/templates_src/codex/skills/map-explain/SKILL.md.jinja +0 -0
- {mapify_cli-3.24.1 → mapify_cli-3.25.0}/src/mapify_cli/templates_src/codex/skills/map-fast/SKILL.md.jinja +0 -0
- {mapify_cli-3.24.1 → mapify_cli-3.25.0}/src/mapify_cli/templates_src/codex/skills/map-plan/SKILL.md.jinja +0 -0
- {mapify_cli-3.24.1 → mapify_cli-3.25.0}/src/mapify_cli/templates_src/codex/skills/map-review/SKILL.md.jinja +0 -0
- {mapify_cli-3.24.1 → mapify_cli-3.25.0}/src/mapify_cli/templates_src/codex/skills/map-review/adversarial-reference.md.jinja +0 -0
- {mapify_cli-3.24.1 → mapify_cli-3.25.0}/src/mapify_cli/templates_src/codex/skills/map-review/review-reference.md.jinja +0 -0
- {mapify_cli-3.24.1 → mapify_cli-3.25.0}/src/mapify_cli/templates_src/codex/skills/map-understand/SKILL.md.jinja +0 -0
- {mapify_cli-3.24.1 → mapify_cli-3.25.0}/src/mapify_cli/templates_src/hooks/README.md.jinja +0 -0
- {mapify_cli-3.24.1 → mapify_cli-3.25.0}/src/mapify_cli/templates_src/hooks/context-meter.py.jinja +0 -0
- {mapify_cli-3.24.1 → mapify_cli-3.25.0}/src/mapify_cli/templates_src/hooks/detect-clarification-triggers.py.jinja +0 -0
- {mapify_cli-3.24.1 → mapify_cli-3.25.0}/src/mapify_cli/templates_src/hooks/end-of-turn.sh.jinja +0 -0
- {mapify_cli-3.24.1 → mapify_cli-3.25.0}/src/mapify_cli/templates_src/hooks/map-memory-capture.py.jinja +0 -0
- {mapify_cli-3.24.1 → mapify_cli-3.25.0}/src/mapify_cli/templates_src/hooks/map-memory-endmark.py.jinja +0 -0
- {mapify_cli-3.24.1 → mapify_cli-3.25.0}/src/mapify_cli/templates_src/hooks/map-memory-finalize.py.jinja +0 -0
- {mapify_cli-3.24.1 → mapify_cli-3.25.0}/src/mapify_cli/templates_src/hooks/map-memory-recall.py.jinja +0 -0
- {mapify_cli-3.24.1 → mapify_cli-3.25.0}/src/mapify_cli/templates_src/hooks/map-statusline.py.jinja +0 -0
- {mapify_cli-3.24.1 → mapify_cli-3.25.0}/src/mapify_cli/templates_src/hooks/map-token-meter.py.jinja +0 -0
- {mapify_cli-3.24.1 → mapify_cli-3.25.0}/src/mapify_cli/templates_src/hooks/post-compact-context.py.jinja +0 -0
- {mapify_cli-3.24.1 → mapify_cli-3.25.0}/src/mapify_cli/templates_src/hooks/pre-compact-save-transcript.py.jinja +0 -0
- {mapify_cli-3.24.1 → mapify_cli-3.25.0}/src/mapify_cli/templates_src/hooks/ralph-context-pruner.py.jinja +0 -0
- {mapify_cli-3.24.1 → mapify_cli-3.25.0}/src/mapify_cli/templates_src/hooks/ralph-iteration-logger.py.jinja +0 -0
- {mapify_cli-3.24.1 → mapify_cli-3.25.0}/src/mapify_cli/templates_src/hooks/safety-guardrails.py.jinja +0 -0
- {mapify_cli-3.24.1 → mapify_cli-3.25.0}/src/mapify_cli/templates_src/hooks/scrub-internal-ids.py.jinja +0 -0
- {mapify_cli-3.24.1 → mapify_cli-3.25.0}/src/mapify_cli/templates_src/hooks/workflow-context-injector.py.jinja +0 -0
- {mapify_cli-3.24.1 → mapify_cli-3.25.0}/src/mapify_cli/templates_src/map/scripts/diagnostics.py.jinja +0 -0
- {mapify_cli-3.24.1 → mapify_cli-3.25.0}/src/mapify_cli/templates_src/map/scripts/map_utils.py.jinja +0 -0
- {mapify_cli-3.24.1 → mapify_cli-3.25.0}/src/mapify_cli/templates_src/map/scripts/scrub_internal_ids.py.jinja +0 -0
- {mapify_cli-3.24.1 → mapify_cli-3.25.0}/src/mapify_cli/templates_src/map/scripts/sofa_client.py.jinja +0 -0
- {mapify_cli-3.24.1 → mapify_cli-3.25.0}/src/mapify_cli/templates_src/map/scripts/validate_spec_citations.py.jinja +0 -0
- {mapify_cli-3.24.1 → mapify_cli-3.25.0}/src/mapify_cli/templates_src/map/static-analysis/analyze.sh.jinja +0 -0
- {mapify_cli-3.24.1 → mapify_cli-3.25.0}/src/mapify_cli/templates_src/map/static-analysis/handlers/common.sh.jinja +0 -0
- {mapify_cli-3.24.1 → mapify_cli-3.25.0}/src/mapify_cli/templates_src/map/static-analysis/handlers/go.sh.jinja +0 -0
- {mapify_cli-3.24.1 → mapify_cli-3.25.0}/src/mapify_cli/templates_src/map/static-analysis/handlers/python.sh.jinja +0 -0
- {mapify_cli-3.24.1 → mapify_cli-3.25.0}/src/mapify_cli/templates_src/map/static-analysis/handlers/rust.sh.jinja +0 -0
- {mapify_cli-3.24.1 → mapify_cli-3.25.0}/src/mapify_cli/templates_src/map/static-analysis/handlers/typescript.sh.jinja +0 -0
- {mapify_cli-3.24.1 → mapify_cli-3.25.0}/src/mapify_cli/templates_src/ralph-loop-config.json.jinja +0 -0
- {mapify_cli-3.24.1 → mapify_cli-3.25.0}/src/mapify_cli/templates_src/references/bash-guidelines.md.jinja +0 -0
- {mapify_cli-3.24.1 → mapify_cli-3.25.0}/src/mapify_cli/templates_src/references/decomposition-examples.md.jinja +0 -0
- {mapify_cli-3.24.1 → mapify_cli-3.25.0}/src/mapify_cli/templates_src/references/escalation-matrix.md.jinja +0 -0
- {mapify_cli-3.24.1 → mapify_cli-3.25.0}/src/mapify_cli/templates_src/references/hook-patterns.md.jinja +0 -0
- {mapify_cli-3.24.1 → mapify_cli-3.25.0}/src/mapify_cli/templates_src/references/host-paths.md.jinja +0 -0
- {mapify_cli-3.24.1 → mapify_cli-3.25.0}/src/mapify_cli/templates_src/references/map-json-output-contracts.md.jinja +0 -0
- {mapify_cli-3.24.1 → mapify_cli-3.25.0}/src/mapify_cli/templates_src/references/map-output-examples.md.jinja +0 -0
- {mapify_cli-3.24.1 → mapify_cli-3.25.0}/src/mapify_cli/templates_src/references/map-xml-prompt-envelopes.md.jinja +0 -0
- {mapify_cli-3.24.1 → mapify_cli-3.25.0}/src/mapify_cli/templates_src/references/mcp-usage-examples.md.jinja +0 -0
- {mapify_cli-3.24.1 → mapify_cli-3.25.0}/src/mapify_cli/templates_src/references/step-state-schema.md.jinja +0 -0
- {mapify_cli-3.24.1 → mapify_cli-3.25.0}/src/mapify_cli/templates_src/references/workflow-state-schema.md.jinja +0 -0
- {mapify_cli-3.24.1 → mapify_cli-3.25.0}/src/mapify_cli/templates_src/rules/learned/README.md.jinja +0 -0
- {mapify_cli-3.24.1 → mapify_cli-3.25.0}/src/mapify_cli/templates_src/skills/README.md.jinja +0 -0
- {mapify_cli-3.24.1 → mapify_cli-3.25.0}/src/mapify_cli/templates_src/skills/map-architecture/SKILL.md.jinja +0 -0
- {mapify_cli-3.24.1 → mapify_cli-3.25.0}/src/mapify_cli/templates_src/skills/map-check/SKILL.md.jinja +0 -0
- {mapify_cli-3.24.1 → mapify_cli-3.25.0}/src/mapify_cli/templates_src/skills/map-check/check-reference.md.jinja +0 -0
- {mapify_cli-3.24.1 → mapify_cli-3.25.0}/src/mapify_cli/templates_src/skills/map-debug/SKILL.md.jinja +0 -0
- {mapify_cli-3.24.1 → mapify_cli-3.25.0}/src/mapify_cli/templates_src/skills/map-efficient/SKILL.md.jinja +0 -0
- {mapify_cli-3.24.1 → mapify_cli-3.25.0}/src/mapify_cli/templates_src/skills/map-efficient/efficient-reference.md.jinja +0 -0
- {mapify_cli-3.24.1 → mapify_cli-3.25.0}/src/mapify_cli/templates_src/skills/map-explain/SKILL.md.jinja +0 -0
- {mapify_cli-3.24.1 → mapify_cli-3.25.0}/src/mapify_cli/templates_src/skills/map-fast/SKILL.md.jinja +0 -0
- {mapify_cli-3.24.1 → mapify_cli-3.25.0}/src/mapify_cli/templates_src/skills/map-learn/SKILL.md.jinja +0 -0
- {mapify_cli-3.24.1 → mapify_cli-3.25.0}/src/mapify_cli/templates_src/skills/map-learn/templates/example-rules.md.jinja +0 -0
- {mapify_cli-3.24.1 → mapify_cli-3.25.0}/src/mapify_cli/templates_src/skills/map-learn/templates/rules-unconditional.md.jinja +0 -0
- {mapify_cli-3.24.1 → mapify_cli-3.25.0}/src/mapify_cli/templates_src/skills/map-learn/templates/rules-with-paths.md.jinja +0 -0
- {mapify_cli-3.24.1 → mapify_cli-3.25.0}/src/mapify_cli/templates_src/skills/map-memory-now/SKILL.md.jinja +0 -0
- {mapify_cli-3.24.1 → mapify_cli-3.25.0}/src/mapify_cli/templates_src/skills/map-plan/SKILL.md.jinja +0 -0
- {mapify_cli-3.24.1 → mapify_cli-3.25.0}/src/mapify_cli/templates_src/skills/map-plan/plan-reference.md.jinja +0 -0
- {mapify_cli-3.24.1 → mapify_cli-3.25.0}/src/mapify_cli/templates_src/skills/map-resume/SKILL.md.jinja +0 -0
- {mapify_cli-3.24.1 → mapify_cli-3.25.0}/src/mapify_cli/templates_src/skills/map-resume/resume-reference.md.jinja +0 -0
- {mapify_cli-3.24.1 → mapify_cli-3.25.0}/src/mapify_cli/templates_src/skills/map-review/adversarial-reference.md.jinja +0 -0
- {mapify_cli-3.24.1 → mapify_cli-3.25.0}/src/mapify_cli/templates_src/skills/map-skill-eval/SKILL.md.jinja +0 -0
- {mapify_cli-3.24.1 → mapify_cli-3.25.0}/src/mapify_cli/templates_src/skills/map-so-search/SKILL.md.jinja +0 -0
- {mapify_cli-3.24.1 → mapify_cli-3.25.0}/src/mapify_cli/templates_src/skills/map-so-search/scripts/sofa_search.py.jinja +0 -0
- {mapify_cli-3.24.1 → mapify_cli-3.25.0}/src/mapify_cli/templates_src/skills/map-state/SKILL.md.jinja +0 -0
- {mapify_cli-3.24.1 → mapify_cli-3.25.0}/src/mapify_cli/templates_src/skills/map-state/scripts/check-complete.sh.jinja +0 -0
- {mapify_cli-3.24.1 → mapify_cli-3.25.0}/src/mapify_cli/templates_src/skills/map-state/scripts/get-plan-path.sh.jinja +0 -0
- {mapify_cli-3.24.1 → mapify_cli-3.25.0}/src/mapify_cli/templates_src/skills/map-state/scripts/init-session.sh.jinja +0 -0
- {mapify_cli-3.24.1 → mapify_cli-3.25.0}/src/mapify_cli/templates_src/skills/map-state/scripts/show-focus.sh.jinja +0 -0
- {mapify_cli-3.24.1 → mapify_cli-3.25.0}/src/mapify_cli/templates_src/skills/map-state/templates/findings.md.jinja +0 -0
- {mapify_cli-3.24.1 → mapify_cli-3.25.0}/src/mapify_cli/templates_src/skills/map-state/templates/iteration_history.md.jinja +0 -0
- {mapify_cli-3.24.1 → mapify_cli-3.25.0}/src/mapify_cli/templates_src/skills/map-state/templates/progress.md.jinja +0 -0
- {mapify_cli-3.24.1 → mapify_cli-3.25.0}/src/mapify_cli/templates_src/skills/map-state/templates/task_plan.md.jinja +0 -0
- {mapify_cli-3.24.1 → mapify_cli-3.25.0}/src/mapify_cli/templates_src/skills/map-task/SKILL.md.jinja +0 -0
- {mapify_cli-3.24.1 → mapify_cli-3.25.0}/src/mapify_cli/templates_src/skills/map-tdd/SKILL.md.jinja +0 -0
- {mapify_cli-3.24.1 → mapify_cli-3.25.0}/src/mapify_cli/templates_src/skills/map-tokenreport/SKILL.md.jinja +0 -0
- {mapify_cli-3.24.1 → mapify_cli-3.25.0}/src/mapify_cli/templates_src/skills/map-understand/SKILL.md.jinja +0 -0
- {mapify_cli-3.24.1 → mapify_cli-3.25.0}/src/mapify_cli/templates_src/skills/skill-rules.json.jinja +0 -0
- {mapify_cli-3.24.1 → mapify_cli-3.25.0}/src/mapify_cli/templates_src/workflow-rules.json.jinja +0 -0
- {mapify_cli-3.24.1 → mapify_cli-3.25.0}/src/mapify_cli/token_budget.py +0 -0
- {mapify_cli-3.24.1 → mapify_cli-3.25.0}/src/mapify_cli/tool_output_offload.py +0 -0
- {mapify_cli-3.24.1 → mapify_cli-3.25.0}/src/mapify_cli/tools/__init__.py +0 -0
- {mapify_cli-3.24.1 → mapify_cli-3.25.0}/src/mapify_cli/tools/validate_dependencies.py +0 -0
- {mapify_cli-3.24.1 → mapify_cli-3.25.0}/src/mapify_cli/verification_recorder.py +0 -0
- {mapify_cli-3.24.1 → mapify_cli-3.25.0}/src/mapify_cli/workflow_finalizer.py +0 -0
- {mapify_cli-3.24.1 → mapify_cli-3.25.0}/src/mapify_cli/workflow_logger.py +0 -0
- {mapify_cli-3.24.1 → mapify_cli-3.25.0}/src/mapify_cli/workflow_state.py +0 -0
- {mapify_cli-3.24.1 → mapify_cli-3.25.0}/tests/__init__.py +0 -0
- {mapify_cli-3.24.1 → mapify_cli-3.25.0}/tests/_fake_task_tool.py +0 -0
- {mapify_cli-3.24.1 → mapify_cli-3.25.0}/tests/conftest.py +0 -0
- {mapify_cli-3.24.1 → mapify_cli-3.25.0}/tests/fixtures/claude/escalation-matrix.md +0 -0
- {mapify_cli-3.24.1 → mapify_cli-3.25.0}/tests/fixtures/codex/config.toml +0 -0
- {mapify_cli-3.24.1 → mapify_cli-3.25.0}/tests/fixtures/wave_blueprints.py +0 -0
- {mapify_cli-3.24.1 → mapify_cli-3.25.0}/tests/hooks/test_detect_clarification_triggers.py +0 -0
- {mapify_cli-3.24.1 → mapify_cli-3.25.0}/tests/hooks/test_end_of_turn.py +0 -0
- {mapify_cli-3.24.1 → mapify_cli-3.25.0}/tests/hooks/test_hook_inventory_smoke.py +0 -0
- {mapify_cli-3.24.1 → mapify_cli-3.25.0}/tests/hooks/test_safety_guardrails.py +0 -0
- {mapify_cli-3.24.1 → mapify_cli-3.25.0}/tests/hooks/test_scrub_internal_ids_hook.py +0 -0
- {mapify_cli-3.24.1 → mapify_cli-3.25.0}/tests/integration/__init__.py +0 -0
- {mapify_cli-3.24.1 → mapify_cli-3.25.0}/tests/integration/fixtures/blueprint.json +0 -0
- {mapify_cli-3.24.1 → mapify_cli-3.25.0}/tests/integration/fixtures/code_review.md +0 -0
- {mapify_cli-3.24.1 → mapify_cli-3.25.0}/tests/integration/fixtures/plan_handoff.json +0 -0
- {mapify_cli-3.24.1 → mapify_cli-3.25.0}/tests/integration/fixtures/spec.md +0 -0
- {mapify_cli-3.24.1 → mapify_cli-3.25.0}/tests/integration/fixtures/step_state_initialized.json +0 -0
- {mapify_cli-3.24.1 → mapify_cli-3.25.0}/tests/integration/fixtures/step_state_plan_complete.json +0 -0
- {mapify_cli-3.24.1 → mapify_cli-3.25.0}/tests/integration/fixtures/task_plan.md +0 -0
- {mapify_cli-3.24.1 → mapify_cli-3.25.0}/tests/integration/fixtures/verification_summary.md +0 -0
- {mapify_cli-3.24.1 → mapify_cli-3.25.0}/tests/integration/test_e2e_artifact_contracts.py +0 -0
- {mapify_cli-3.24.1 → mapify_cli-3.25.0}/tests/integration/test_e2e_claude_sdk.py +0 -0
- {mapify_cli-3.24.1 → mapify_cli-3.25.0}/tests/skills_eval/fixtures/README.md +0 -0
- {mapify_cli-3.24.1 → mapify_cli-3.25.0}/tests/skills_eval/fixtures/map_check_optimize_eval_set.json +0 -0
- {mapify_cli-3.24.1 → mapify_cli-3.25.0}/tests/skills_eval/fixtures/map_debug_eval_set.json +0 -0
- {mapify_cli-3.24.1 → mapify_cli-3.25.0}/tests/skills_eval/fixtures/map_debug_optimize_eval_set.json +0 -0
- {mapify_cli-3.24.1 → mapify_cli-3.25.0}/tests/skills_eval/fixtures/map_efficient_optimize_eval_set.json +0 -0
- {mapify_cli-3.24.1 → mapify_cli-3.25.0}/tests/skills_eval/fixtures/map_explain_optimize_eval_set.json +0 -0
- {mapify_cli-3.24.1 → mapify_cli-3.25.0}/tests/skills_eval/fixtures/map_fast_optimize_eval_set.json +0 -0
- {mapify_cli-3.24.1 → mapify_cli-3.25.0}/tests/skills_eval/fixtures/map_learn_optimize_eval_set.json +0 -0
- {mapify_cli-3.24.1 → mapify_cli-3.25.0}/tests/skills_eval/fixtures/map_memory_now_optimize_eval_set.json +0 -0
- {mapify_cli-3.24.1 → mapify_cli-3.25.0}/tests/skills_eval/fixtures/map_plan_optimize_eval_set.json +0 -0
- {mapify_cli-3.24.1 → mapify_cli-3.25.0}/tests/skills_eval/fixtures/map_release_optimize_eval_set.json +0 -0
- {mapify_cli-3.24.1 → mapify_cli-3.25.0}/tests/skills_eval/fixtures/map_resume_optimize_eval_set.json +0 -0
- {mapify_cli-3.24.1 → mapify_cli-3.25.0}/tests/skills_eval/fixtures/map_review_optimize_eval_set.json +0 -0
- {mapify_cli-3.24.1 → mapify_cli-3.25.0}/tests/skills_eval/fixtures/map_skill_eval_optimize_eval_set.json +0 -0
- {mapify_cli-3.24.1 → mapify_cli-3.25.0}/tests/skills_eval/fixtures/map_state_optimize_eval_set.json +0 -0
- {mapify_cli-3.24.1 → mapify_cli-3.25.0}/tests/skills_eval/fixtures/map_task_optimize_eval_set.json +0 -0
- {mapify_cli-3.24.1 → mapify_cli-3.25.0}/tests/skills_eval/fixtures/map_tdd_optimize_eval_set.json +0 -0
- {mapify_cli-3.24.1 → mapify_cli-3.25.0}/tests/skills_eval/fixtures/map_tokenreport_optimize_eval_set.json +0 -0
- {mapify_cli-3.24.1 → mapify_cli-3.25.0}/tests/skills_eval/fixtures/whole_skill/map_task_blocker/manifest.json +0 -0
- {mapify_cli-3.24.1 → mapify_cli-3.25.0}/tests/skills_eval/fixtures/whole_skill/map_task_blocker/repo/.map/main/blueprint.json +0 -0
- {mapify_cli-3.24.1 → mapify_cli-3.25.0}/tests/skills_eval/fixtures/whole_skill/map_task_blocker/repo/.map/main/task_plan_main.md +0 -0
- {mapify_cli-3.24.1 → mapify_cli-3.25.0}/tests/skills_eval/fixtures/whole_skill/map_task_blocker/repo/src/__init__.py +0 -0
- {mapify_cli-3.24.1 → mapify_cli-3.25.0}/tests/skills_eval/fixtures/whole_skill/map_task_blocker/repo/src/utils.py +0 -0
- {mapify_cli-3.24.1 → mapify_cli-3.25.0}/tests/skills_eval/fixtures/whole_skill/map_task_blocker/repo/tests/test_compute.py +0 -0
- {mapify_cli-3.24.1 → mapify_cli-3.25.0}/tests/skills_eval/fixtures/whole_skill/map_task_calc/hidden/test_calc_full.py +0 -0
- {mapify_cli-3.24.1 → mapify_cli-3.25.0}/tests/skills_eval/fixtures/whole_skill/map_task_calc/manifest.json +0 -0
- {mapify_cli-3.24.1 → mapify_cli-3.25.0}/tests/skills_eval/fixtures/whole_skill/map_task_calc/repo/.map/main/blueprint.json +0 -0
- {mapify_cli-3.24.1 → mapify_cli-3.25.0}/tests/skills_eval/fixtures/whole_skill/map_task_calc/repo/.map/main/task_plan_main.md +0 -0
- {mapify_cli-3.24.1 → mapify_cli-3.25.0}/tests/skills_eval/fixtures/whole_skill/map_task_calc/repo/src/__init__.py +0 -0
- {mapify_cli-3.24.1 → mapify_cli-3.25.0}/tests/skills_eval/fixtures/whole_skill/map_task_calc/repo/src/calc.py +0 -0
- {mapify_cli-3.24.1 → mapify_cli-3.25.0}/tests/skills_eval/fixtures/whole_skill/map_task_calc/repo/tests/test_calc_basic.py +0 -0
- {mapify_cli-3.24.1 → mapify_cli-3.25.0}/tests/skills_eval/fixtures/whole_skill/map_task_calc_vague/hidden/test_calc_full.py +0 -0
- {mapify_cli-3.24.1 → mapify_cli-3.25.0}/tests/skills_eval/fixtures/whole_skill/map_task_calc_vague/manifest.json +0 -0
- {mapify_cli-3.24.1 → mapify_cli-3.25.0}/tests/skills_eval/fixtures/whole_skill/map_task_calc_vague/repo/.map/main/blueprint.json +0 -0
- {mapify_cli-3.24.1 → mapify_cli-3.25.0}/tests/skills_eval/fixtures/whole_skill/map_task_calc_vague/repo/.map/main/task_plan_main.md +0 -0
- {mapify_cli-3.24.1 → mapify_cli-3.25.0}/tests/skills_eval/fixtures/whole_skill/map_task_calc_vague/repo/src/__init__.py +0 -0
- {mapify_cli-3.24.1 → mapify_cli-3.25.0}/tests/skills_eval/fixtures/whole_skill/map_task_calc_vague/repo/src/calc.py +0 -0
- {mapify_cli-3.24.1 → mapify_cli-3.25.0}/tests/skills_eval/fixtures/whole_skill/map_task_calc_vague/repo/tests/test_calc_basic.py +0 -0
- {mapify_cli-3.24.1 → mapify_cli-3.25.0}/tests/skills_eval/fixtures/whole_skill/map_task_false_success/hidden/test_kvparse_full.py +0 -0
- {mapify_cli-3.24.1 → mapify_cli-3.25.0}/tests/skills_eval/fixtures/whole_skill/map_task_false_success/manifest.json +0 -0
- {mapify_cli-3.24.1 → mapify_cli-3.25.0}/tests/skills_eval/fixtures/whole_skill/map_task_false_success/repo/.map/main/blueprint.json +0 -0
- {mapify_cli-3.24.1 → mapify_cli-3.25.0}/tests/skills_eval/fixtures/whole_skill/map_task_false_success/repo/.map/main/task_plan_main.md +0 -0
- {mapify_cli-3.24.1 → mapify_cli-3.25.0}/tests/skills_eval/fixtures/whole_skill/map_task_false_success/repo/src/__init__.py +0 -0
- {mapify_cli-3.24.1 → mapify_cli-3.25.0}/tests/skills_eval/fixtures/whole_skill/map_task_false_success/repo/src/kvparse.py +0 -0
- {mapify_cli-3.24.1 → mapify_cli-3.25.0}/tests/skills_eval/fixtures/whole_skill/map_task_false_success/repo/tests/test_kvparse_basic.py +0 -0
- {mapify_cli-3.24.1 → mapify_cli-3.25.0}/tests/skills_eval/fixtures/whole_skill/map_task_scope_pressure/manifest.json +0 -0
- {mapify_cli-3.24.1 → mapify_cli-3.25.0}/tests/skills_eval/fixtures/whole_skill/map_task_scope_pressure/repo/.map/main/blueprint.json +0 -0
- {mapify_cli-3.24.1 → mapify_cli-3.25.0}/tests/skills_eval/fixtures/whole_skill/map_task_scope_pressure/repo/.map/main/task_plan_main.md +0 -0
- {mapify_cli-3.24.1 → mapify_cli-3.25.0}/tests/skills_eval/fixtures/whole_skill/map_task_scope_pressure/repo/src/__init__.py +0 -0
- {mapify_cli-3.24.1 → mapify_cli-3.25.0}/tests/skills_eval/fixtures/whole_skill/map_task_scope_pressure/repo/src/config.py +0 -0
- {mapify_cli-3.24.1 → mapify_cli-3.25.0}/tests/skills_eval/fixtures/whole_skill/map_task_scope_pressure/repo/src/utils.py +0 -0
- {mapify_cli-3.24.1 → mapify_cli-3.25.0}/tests/skills_eval/fixtures/whole_skill/map_task_scope_pressure/repo/tests/test_price.py +0 -0
- {mapify_cli-3.24.1 → mapify_cli-3.25.0}/tests/skills_eval/fixtures/whole_skill/map_task_scope_trap/manifest.json +0 -0
- {mapify_cli-3.24.1 → mapify_cli-3.25.0}/tests/skills_eval/fixtures/whole_skill/map_task_scope_trap/repo/.map/main/blueprint.json +0 -0
- {mapify_cli-3.24.1 → mapify_cli-3.25.0}/tests/skills_eval/fixtures/whole_skill/map_task_scope_trap/repo/.map/main/task_plan_main.md +0 -0
- {mapify_cli-3.24.1 → mapify_cli-3.25.0}/tests/skills_eval/fixtures/whole_skill/map_task_scope_trap/repo/src/__init__.py +0 -0
- {mapify_cli-3.24.1 → mapify_cli-3.25.0}/tests/skills_eval/fixtures/whole_skill/map_task_scope_trap/repo/src/config.py +0 -0
- {mapify_cli-3.24.1 → mapify_cli-3.25.0}/tests/skills_eval/fixtures/whole_skill/map_task_scope_trap/repo/src/utils.py +0 -0
- {mapify_cli-3.24.1 → mapify_cli-3.25.0}/tests/skills_eval/fixtures/whole_skill/map_task_scope_trap/repo/tests/test_utils.py +0 -0
- {mapify_cli-3.24.1 → mapify_cli-3.25.0}/tests/skills_eval/fixtures/whole_skill/map_task_semver/manifest.json +0 -0
- {mapify_cli-3.24.1 → mapify_cli-3.25.0}/tests/skills_eval/fixtures/whole_skill/map_task_semver/repo/.map/main/blueprint.json +0 -0
- {mapify_cli-3.24.1 → mapify_cli-3.25.0}/tests/skills_eval/fixtures/whole_skill/map_task_semver/repo/.map/main/task_plan_main.md +0 -0
- {mapify_cli-3.24.1 → mapify_cli-3.25.0}/tests/skills_eval/fixtures/whole_skill/map_task_semver/repo/src/__init__.py +0 -0
- {mapify_cli-3.24.1 → mapify_cli-3.25.0}/tests/skills_eval/fixtures/whole_skill/map_task_semver/repo/src/semver.py +0 -0
- {mapify_cli-3.24.1 → mapify_cli-3.25.0}/tests/skills_eval/fixtures/whole_skill/map_task_semver/repo/tests/test_semver.py +0 -0
- {mapify_cli-3.24.1 → mapify_cli-3.25.0}/tests/skills_eval/fixtures/whole_skill/map_task_semver_vague/hidden/test_semver_full.py +0 -0
- {mapify_cli-3.24.1 → mapify_cli-3.25.0}/tests/skills_eval/fixtures/whole_skill/map_task_semver_vague/manifest.json +0 -0
- {mapify_cli-3.24.1 → mapify_cli-3.25.0}/tests/skills_eval/fixtures/whole_skill/map_task_semver_vague/repo/.map/main/blueprint.json +0 -0
- {mapify_cli-3.24.1 → mapify_cli-3.25.0}/tests/skills_eval/fixtures/whole_skill/map_task_semver_vague/repo/.map/main/task_plan_main.md +0 -0
- {mapify_cli-3.24.1 → mapify_cli-3.25.0}/tests/skills_eval/fixtures/whole_skill/map_task_semver_vague/repo/src/__init__.py +0 -0
- {mapify_cli-3.24.1 → mapify_cli-3.25.0}/tests/skills_eval/fixtures/whole_skill/map_task_semver_vague/repo/src/semver.py +0 -0
- {mapify_cli-3.24.1 → mapify_cli-3.25.0}/tests/skills_eval/fixtures/whole_skill/map_task_semver_vague/repo/tests/test_semver_basic.py +0 -0
- {mapify_cli-3.24.1 → mapify_cli-3.25.0}/tests/skills_eval/fixtures/whole_skill/map_task_semver_weakgate/hidden/test_semver_full.py +0 -0
- {mapify_cli-3.24.1 → mapify_cli-3.25.0}/tests/skills_eval/fixtures/whole_skill/map_task_semver_weakgate/manifest.json +0 -0
- {mapify_cli-3.24.1 → mapify_cli-3.25.0}/tests/skills_eval/fixtures/whole_skill/map_task_semver_weakgate/repo/.map/main/blueprint.json +0 -0
- {mapify_cli-3.24.1 → mapify_cli-3.25.0}/tests/skills_eval/fixtures/whole_skill/map_task_semver_weakgate/repo/.map/main/task_plan_main.md +0 -0
- {mapify_cli-3.24.1 → mapify_cli-3.25.0}/tests/skills_eval/fixtures/whole_skill/map_task_semver_weakgate/repo/src/__init__.py +0 -0
- {mapify_cli-3.24.1 → mapify_cli-3.25.0}/tests/skills_eval/fixtures/whole_skill/map_task_semver_weakgate/repo/src/semver.py +0 -0
- {mapify_cli-3.24.1 → mapify_cli-3.25.0}/tests/skills_eval/fixtures/whole_skill/map_task_semver_weakgate/repo/tests/test_semver_basic.py +0 -0
- {mapify_cli-3.24.1 → mapify_cli-3.25.0}/tests/skills_eval/whole_skill/spike_runner.py +0 -0
- {mapify_cli-3.24.1 → mapify_cli-3.25.0}/tests/test_agent_cli_correctness.py +0 -0
- {mapify_cli-3.24.1 → mapify_cli-3.25.0}/tests/test_agent_dispatch_audit.py +0 -0
- {mapify_cli-3.24.1 → mapify_cli-3.25.0}/tests/test_agent_frontmatter.py +0 -0
- {mapify_cli-3.24.1 → mapify_cli-3.25.0}/tests/test_approval_hold.py +0 -0
- {mapify_cli-3.24.1 → mapify_cli-3.25.0}/tests/test_artifact_schemas.py +0 -0
- {mapify_cli-3.24.1 → mapify_cli-3.25.0}/tests/test_boundary_quality_report.py +0 -0
- {mapify_cli-3.24.1 → mapify_cli-3.25.0}/tests/test_bump_version.py +0 -0
- {mapify_cli-3.24.1 → mapify_cli-3.25.0}/tests/test_code_map.py +0 -0
- {mapify_cli-3.24.1 → mapify_cli-3.25.0}/tests/test_compaction_offload_integration.py +0 -0
- {mapify_cli-3.24.1 → mapify_cli-3.25.0}/tests/test_concurrent_dispatch_harness.py +0 -0
- {mapify_cli-3.24.1 → mapify_cli-3.25.0}/tests/test_context_usefulness.py +0 -0
- {mapify_cli-3.24.1 → mapify_cli-3.25.0}/tests/test_cross_ai_config.py +0 -0
- {mapify_cli-3.24.1 → mapify_cli-3.25.0}/tests/test_decomposition.py +0 -0
- {mapify_cli-3.24.1 → mapify_cli-3.25.0}/tests/test_dependency_graph.py +0 -0
- {mapify_cli-3.24.1 → mapify_cli-3.25.0}/tests/test_diagnostics.py +0 -0
- {mapify_cli-3.24.1 → mapify_cli-3.25.0}/tests/test_digest_schema.py +0 -0
- {mapify_cli-3.24.1 → mapify_cli-3.25.0}/tests/test_domain_skill.py +0 -0
- {mapify_cli-3.24.1 → mapify_cli-3.25.0}/tests/test_file_copier.py +0 -0
- {mapify_cli-3.24.1 → mapify_cli-3.25.0}/tests/test_governance_attack_fixtures.py +0 -0
- {mapify_cli-3.24.1 → mapify_cli-3.25.0}/tests/test_grace_eval_schema.py +0 -0
- {mapify_cli-3.24.1 → mapify_cli-3.25.0}/tests/test_grace_eval_sweep.py +0 -0
- {mapify_cli-3.24.1 → mapify_cli-3.25.0}/tests/test_hook_patterns.py +0 -0
- {mapify_cli-3.24.1 → mapify_cli-3.25.0}/tests/test_init_import_graph.py +0 -0
- {mapify_cli-3.24.1 → mapify_cli-3.25.0}/tests/test_install_manifest.py +0 -0
- {mapify_cli-3.24.1 → mapify_cli-3.25.0}/tests/test_intent_detector.py +0 -0
- {mapify_cli-3.24.1 → mapify_cli-3.25.0}/tests/test_inv1_no_anthropic_optimize.py +0 -0
- {mapify_cli-3.24.1 → mapify_cli-3.25.0}/tests/test_jinja2_dep.py +0 -0
- {mapify_cli-3.24.1 → mapify_cli-3.25.0}/tests/test_locking.py +0 -0
- {mapify_cli-3.24.1 → mapify_cli-3.25.0}/tests/test_managed_file_copier.py +0 -0
- {mapify_cli-3.24.1 → mapify_cli-3.25.0}/tests/test_map_token_meter.py +0 -0
- {mapify_cli-3.24.1 → mapify_cli-3.25.0}/tests/test_map_utils_sanitize.py +0 -0
- {mapify_cli-3.24.1 → mapify_cli-3.25.0}/tests/test_mapify_cli.py +0 -0
- {mapify_cli-3.24.1 → mapify_cli-3.25.0}/tests/test_memory_capture.py +0 -0
- {mapify_cli-3.24.1 → mapify_cli-3.25.0}/tests/test_memory_finalize.py +0 -0
- {mapify_cli-3.24.1 → mapify_cli-3.25.0}/tests/test_memory_integration.py +0 -0
- {mapify_cli-3.24.1 → mapify_cli-3.25.0}/tests/test_memory_recall.py +0 -0
- {mapify_cli-3.24.1 → mapify_cli-3.25.0}/tests/test_memory_review_fixes.py +0 -0
- {mapify_cli-3.24.1 → mapify_cli-3.25.0}/tests/test_minimality_eval.py +0 -0
- {mapify_cli-3.24.1 → mapify_cli-3.25.0}/tests/test_minimality_report.py +0 -0
- {mapify_cli-3.24.1 → mapify_cli-3.25.0}/tests/test_parallelism_observability.py +0 -0
- {mapify_cli-3.24.1 → mapify_cli-3.25.0}/tests/test_post_compact_context.py +0 -0
- {mapify_cli-3.24.1 → mapify_cli-3.25.0}/tests/test_preset_commands.py +0 -0
- {mapify_cli-3.24.1 → mapify_cli-3.25.0}/tests/test_prompt_layering.py +0 -0
- {mapify_cli-3.24.1 → mapify_cli-3.25.0}/tests/test_prompt_profile_commands.py +0 -0
- {mapify_cli-3.24.1 → mapify_cli-3.25.0}/tests/test_pyyaml_dep.py +0 -0
- {mapify_cli-3.24.1 → mapify_cli-3.25.0}/tests/test_ralph_hooks.py +0 -0
- {mapify_cli-3.24.1 → mapify_cli-3.25.0}/tests/test_ralph_state.py +0 -0
- {mapify_cli-3.24.1 → mapify_cli-3.25.0}/tests/test_repo_insight.py +0 -0
- {mapify_cli-3.24.1 → mapify_cli-3.25.0}/tests/test_research_eval.py +0 -0
- {mapify_cli-3.24.1 → mapify_cli-3.25.0}/tests/test_research_eval_compare.py +0 -0
- {mapify_cli-3.24.1 → mapify_cli-3.25.0}/tests/test_schemas.py +0 -0
- {mapify_cli-3.24.1 → mapify_cli-3.25.0}/tests/test_scope_classifier.py +0 -0
- {mapify_cli-3.24.1 → mapify_cli-3.25.0}/tests/test_scrub_internal_ids.py +0 -0
- {mapify_cli-3.24.1 → mapify_cli-3.25.0}/tests/test_skill_ir.py +0 -0
- {mapify_cli-3.24.1 → mapify_cli-3.25.0}/tests/test_skills_consistency.py +0 -0
- {mapify_cli-3.24.1 → mapify_cli-3.25.0}/tests/test_skills_eval_aggregator.py +0 -0
- {mapify_cli-3.24.1 → mapify_cli-3.25.0}/tests/test_skills_eval_apply.py +0 -0
- {mapify_cli-3.24.1 → mapify_cli-3.25.0}/tests/test_skills_eval_cli_optimize.py +0 -0
- {mapify_cli-3.24.1 → mapify_cli-3.25.0}/tests/test_skills_eval_dispatcher_env.py +0 -0
- {mapify_cli-3.24.1 → mapify_cli-3.25.0}/tests/test_skills_eval_dispatcher_timeout.py +0 -0
- {mapify_cli-3.24.1 → mapify_cli-3.25.0}/tests/test_skills_eval_fixtures.py +0 -0
- {mapify_cli-3.24.1 → mapify_cli-3.25.0}/tests/test_skills_eval_optimizer.py +0 -0
- {mapify_cli-3.24.1 → mapify_cli-3.25.0}/tests/test_skills_eval_optimizer_isolation.py +0 -0
- {mapify_cli-3.24.1 → mapify_cli-3.25.0}/tests/test_skills_eval_proposer.py +0 -0
- {mapify_cli-3.24.1 → mapify_cli-3.25.0}/tests/test_skills_eval_runner.py +0 -0
- {mapify_cli-3.24.1 → mapify_cli-3.25.0}/tests/test_skills_eval_schema.py +0 -0
- {mapify_cli-3.24.1 → mapify_cli-3.25.0}/tests/test_skills_eval_trajectory_bundle.py +0 -0
- {mapify_cli-3.24.1 → mapify_cli-3.25.0}/tests/test_skills_eval_trajectory_cli.py +0 -0
- {mapify_cli-3.24.1 → mapify_cli-3.25.0}/tests/test_skills_eval_trajectory_gates.py +0 -0
- {mapify_cli-3.24.1 → mapify_cli-3.25.0}/tests/test_skills_eval_trajectory_judge.py +0 -0
- {mapify_cli-3.24.1 → mapify_cli-3.25.0}/tests/test_skills_eval_trajectory_repeated.py +0 -0
- {mapify_cli-3.24.1 → mapify_cli-3.25.0}/tests/test_skills_eval_trajectory_report.py +0 -0
- {mapify_cli-3.24.1 → mapify_cli-3.25.0}/tests/test_skills_eval_trajectory_runner.py +0 -0
- {mapify_cli-3.24.1 → mapify_cli-3.25.0}/tests/test_skills_eval_trajectory_schema.py +0 -0
- {mapify_cli-3.24.1 → mapify_cli-3.25.0}/tests/test_skills_eval_viewer.py +0 -0
- {mapify_cli-3.24.1 → mapify_cli-3.25.0}/tests/test_slice5b_leak_guards.py +0 -0
- {mapify_cli-3.24.1 → mapify_cli-3.25.0}/tests/test_sofa_client.py +0 -0
- {mapify_cli-3.24.1 → mapify_cli-3.25.0}/tests/test_sofa_search.py +0 -0
- {mapify_cli-3.24.1 → mapify_cli-3.25.0}/tests/test_statusline.py +0 -0
- {mapify_cli-3.24.1 → mapify_cli-3.25.0}/tests/test_token_budget.py +0 -0
- {mapify_cli-3.24.1 → mapify_cli-3.25.0}/tests/test_tool_output_offload.py +0 -0
- {mapify_cli-3.24.1 → mapify_cli-3.25.0}/tests/test_validate_dependencies.py +0 -0
- {mapify_cli-3.24.1 → mapify_cli-3.25.0}/tests/test_validate_spec_citations.py +0 -0
- {mapify_cli-3.24.1 → mapify_cli-3.25.0}/tests/test_verification_recorder.py +0 -0
- {mapify_cli-3.24.1 → mapify_cli-3.25.0}/tests/test_wave_eval_harness.py +0 -0
- {mapify_cli-3.24.1 → mapify_cli-3.25.0}/tests/test_wave_fixtures.py +0 -0
- {mapify_cli-3.24.1 → mapify_cli-3.25.0}/tests/test_wave_parallel_harness.py +0 -0
- {mapify_cli-3.24.1 → mapify_cli-3.25.0}/tests/test_workflow_context_injector.py +0 -0
- {mapify_cli-3.24.1 → mapify_cli-3.25.0}/tests/test_workflow_finalizer.py +0 -0
- {mapify_cli-3.24.1 → mapify_cli-3.25.0}/tests/test_workflow_gate.py +0 -0
- {mapify_cli-3.24.1 → mapify_cli-3.25.0}/tests/test_workflow_logger.py +0 -0
- {mapify_cli-3.24.1 → mapify_cli-3.25.0}/tests/test_workflow_state.py +0 -0
- {mapify_cli-3.24.1 → mapify_cli-3.25.0}/tests/test_worktree_isolation.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
Metadata-Version: 2.
|
|
1
|
+
Metadata-Version: 2.5
|
|
2
2
|
Name: mapify-cli
|
|
3
|
-
Version: 3.
|
|
3
|
+
Version: 3.25.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
|
|
@@ -23,7 +23,7 @@ Or install globally:
|
|
|
23
23
|
mapify check
|
|
24
24
|
"""
|
|
25
25
|
|
|
26
|
-
__version__ = "3.
|
|
26
|
+
__version__ = "3.25.0"
|
|
27
27
|
|
|
28
28
|
import json
|
|
29
29
|
import os
|
|
@@ -770,6 +770,18 @@ def init(
|
|
|
770
770
|
"See docs/USAGE.md."
|
|
771
771
|
),
|
|
772
772
|
),
|
|
773
|
+
agent_memory: str = typer.Option(
|
|
774
|
+
"off",
|
|
775
|
+
"--agent-memory",
|
|
776
|
+
help=(
|
|
777
|
+
"Role-local persistent memory for the reflector learning agent "
|
|
778
|
+
"(opt-in, off by default). Adds a `memory:` frontmatter field to "
|
|
779
|
+
".claude/agents/reflector.md and writes "
|
|
780
|
+
"claude_agents.persistent_memory=<level> to .map/config.yaml. "
|
|
781
|
+
"Allowed: off, local (user-local, NOT committed), "
|
|
782
|
+
"project (project-scoped, committed). See docs/USAGE.md."
|
|
783
|
+
),
|
|
784
|
+
),
|
|
773
785
|
autonomy: bool | None = typer.Option(
|
|
774
786
|
None,
|
|
775
787
|
"--autonomy/--no-autonomy",
|
|
@@ -856,6 +868,14 @@ def init(
|
|
|
856
868
|
)
|
|
857
869
|
raise typer.Exit(1)
|
|
858
870
|
|
|
871
|
+
from mapify_cli.config.project_config import VALID_AGENT_MEMORY_LEVELS
|
|
872
|
+
if agent_memory not in VALID_AGENT_MEMORY_LEVELS:
|
|
873
|
+
console.print(
|
|
874
|
+
f"[red]Error:[/red] Invalid --agent-memory '{agent_memory}'. "
|
|
875
|
+
f"Valid: {', '.join(sorted(VALID_AGENT_MEMORY_LEVELS))}"
|
|
876
|
+
)
|
|
877
|
+
raise typer.Exit(1)
|
|
878
|
+
|
|
859
879
|
# Handle '.' as shorthand for current directory
|
|
860
880
|
use_current_dir = project_name == "."
|
|
861
881
|
|
|
@@ -975,6 +995,7 @@ def init(
|
|
|
975
995
|
tracker.start("map-config")
|
|
976
996
|
try:
|
|
977
997
|
from mapify_cli.config.project_config import (
|
|
998
|
+
apply_agent_memory_overrides,
|
|
978
999
|
apply_compression_overrides,
|
|
979
1000
|
apply_sofa_overrides,
|
|
980
1001
|
write_default_config,
|
|
@@ -994,6 +1015,8 @@ def init(
|
|
|
994
1015
|
from mapify_cli.delivery.file_copier import merge_sofa_gitignore
|
|
995
1016
|
|
|
996
1017
|
merge_sofa_gitignore(project_path)
|
|
1018
|
+
if agent_memory != "off":
|
|
1019
|
+
apply_agent_memory_overrides(config_path, agent_memory)
|
|
997
1020
|
tracker.complete(
|
|
998
1021
|
"map-config", str(config_path.relative_to(project_path))
|
|
999
1022
|
)
|
|
@@ -1029,6 +1052,7 @@ def init(
|
|
|
1029
1052
|
tracker.start("map-config")
|
|
1030
1053
|
try:
|
|
1031
1054
|
from mapify_cli.config.project_config import (
|
|
1055
|
+
apply_agent_memory_overrides,
|
|
1032
1056
|
apply_compression_overrides,
|
|
1033
1057
|
apply_sofa_overrides,
|
|
1034
1058
|
write_default_config,
|
|
@@ -1048,6 +1072,16 @@ def init(
|
|
|
1048
1072
|
from mapify_cli.delivery.file_copier import merge_sofa_gitignore
|
|
1049
1073
|
|
|
1050
1074
|
merge_sofa_gitignore(project_path)
|
|
1075
|
+
if agent_memory != "off":
|
|
1076
|
+
apply_agent_memory_overrides(config_path, agent_memory)
|
|
1077
|
+
from mapify_cli.delivery.file_copier import (
|
|
1078
|
+
apply_reflector_memory_field,
|
|
1079
|
+
merge_agent_memory_gitignore,
|
|
1080
|
+
)
|
|
1081
|
+
|
|
1082
|
+
apply_reflector_memory_field(project_path, agent_memory)
|
|
1083
|
+
if agent_memory == "local":
|
|
1084
|
+
merge_agent_memory_gitignore(project_path)
|
|
1051
1085
|
tracker.complete("map-config", str(config_path.relative_to(project_path)))
|
|
1052
1086
|
except Exception as e: # noqa: BLE001 -- deliberate fallback/resilience boundary, must not propagate
|
|
1053
1087
|
tracker.error("map-config", f"skipped: {e}")
|
|
@@ -19,6 +19,7 @@ VALID_MINIMALITY = frozenset({"off", "lite", "full", "ultra"})
|
|
|
19
19
|
VALID_PROMPT_LAYERING = frozenset({"docs_first", "stable_first"})
|
|
20
20
|
VALID_WORKTREE_ISOLATION = frozenset({"off", "auto", "required"})
|
|
21
21
|
VALID_WAVE_MODE = frozenset({"off", "auto", "on"})
|
|
22
|
+
VALID_AGENT_MEMORY_LEVELS = frozenset({"off", "local", "project"})
|
|
22
23
|
|
|
23
24
|
# Cross-AI peer review (#288): external AI CLI runtimes map-review can dispatch
|
|
24
25
|
# to. Keep in sync with CROSS_AI_RUNTIMES in the rendered step runner
|
|
@@ -130,6 +131,17 @@ class MapConfig:
|
|
|
130
131
|
# .map/config.yaml. When enabled, the map-so-search skill is available.
|
|
131
132
|
sofa_enabled: bool = False
|
|
132
133
|
|
|
134
|
+
# Role-local persistent memory for learning agents (#379). Enables the
|
|
135
|
+
# Claude Code `memory:` frontmatter on the reflector agent so it can retain
|
|
136
|
+
# lessons across sessions. Enum values:
|
|
137
|
+
# "off" — no memory field added (default; behaviour unchanged)
|
|
138
|
+
# "local" — user-local memory: .claude/agent-memory-local/ (not committed)
|
|
139
|
+
# "project" — project-scoped memory: .claude/agent-memory/ (committed)
|
|
140
|
+
# Enable via `mapify init --agent-memory local|project` or set
|
|
141
|
+
# `claude_agents.persistent_memory: local|project` in .map/config.yaml.
|
|
142
|
+
# Dotted YAML key: `claude_agents.persistent_memory` (aliased in load_map_config).
|
|
143
|
+
claude_agents_persistent_memory: str = "off"
|
|
144
|
+
|
|
133
145
|
# Strip MAP-internal workflow IDs (ST-/AC-/VC-/INV-/HC-) from run-changed
|
|
134
146
|
# code at workflow completion (Stop hook `scrub-internal-ids.py`). On by
|
|
135
147
|
# default; set `scrub_internal_ids: false` in .map/config.yaml to opt out
|
|
@@ -373,6 +385,7 @@ def load_map_config(project_path: Path) -> MapConfig:
|
|
|
373
385
|
("scale.thresholds.small.max_lines", "scale_small_max_lines"),
|
|
374
386
|
("scale.thresholds.medium.max_files", "scale_medium_max_files"),
|
|
375
387
|
("scale.thresholds.medium.max_lines", "scale_medium_max_lines"),
|
|
388
|
+
("claude_agents.persistent_memory", "claude_agents_persistent_memory"),
|
|
376
389
|
):
|
|
377
390
|
if dotted in data and field_name not in data:
|
|
378
391
|
data[field_name] = data.pop(dotted)
|
|
@@ -513,6 +526,16 @@ def load_map_config(project_path: Path) -> MapConfig:
|
|
|
513
526
|
)
|
|
514
527
|
cfg.execution_wave_mode = "auto"
|
|
515
528
|
|
|
529
|
+
if cfg.claude_agents_persistent_memory not in VALID_AGENT_MEMORY_LEVELS:
|
|
530
|
+
logger.warning(
|
|
531
|
+
"Invalid claude_agents_persistent_memory %r in %s (expected one of %s). "
|
|
532
|
+
"Using default 'off'.",
|
|
533
|
+
cfg.claude_agents_persistent_memory,
|
|
534
|
+
config_file,
|
|
535
|
+
", ".join(sorted(VALID_AGENT_MEMORY_LEVELS)),
|
|
536
|
+
)
|
|
537
|
+
cfg.claude_agents_persistent_memory = "off"
|
|
538
|
+
|
|
516
539
|
# Clamp max_actors to [1, 8]; non-int/bool → default 4.
|
|
517
540
|
# retry_degraded_once and concurrent_dispatch are plain bools handled by
|
|
518
541
|
# the generic type-check loop.
|
|
@@ -520,6 +543,28 @@ def load_map_config(project_path: Path) -> MapConfig:
|
|
|
520
543
|
# Clamp max_wave_retries to [1, 10]; non-int/bool → default 3.
|
|
521
544
|
cfg.max_wave_retries = clamp_max_wave_retries(cfg.max_wave_retries)
|
|
522
545
|
|
|
546
|
+
# Scale threshold fields must be >= 1; a value <= 0 makes one or more
|
|
547
|
+
# scope brackets unreachable (e.g. estimated_files <= -1 is always False).
|
|
548
|
+
_scale_defaults: dict[str, int] = {
|
|
549
|
+
"scale_trivial_max_files": 3,
|
|
550
|
+
"scale_trivial_max_lines": 50,
|
|
551
|
+
"scale_small_max_files": 10,
|
|
552
|
+
"scale_small_max_lines": 200,
|
|
553
|
+
"scale_medium_max_files": 30,
|
|
554
|
+
"scale_medium_max_lines": 1000,
|
|
555
|
+
}
|
|
556
|
+
for _sf, _default in _scale_defaults.items():
|
|
557
|
+
_val = getattr(cfg, _sf)
|
|
558
|
+
if _val < 1:
|
|
559
|
+
logger.warning(
|
|
560
|
+
"%s must be >= 1 in %s (got %d). Using default %d.",
|
|
561
|
+
_sf,
|
|
562
|
+
config_file,
|
|
563
|
+
_val,
|
|
564
|
+
_default,
|
|
565
|
+
)
|
|
566
|
+
setattr(cfg, _sf, _default)
|
|
567
|
+
|
|
523
568
|
return cfg
|
|
524
569
|
|
|
525
570
|
except yaml.YAMLError as e:
|
|
@@ -649,6 +694,15 @@ minimality: lite
|
|
|
649
694
|
# Enable via `mapify init --sofa` or uncomment the line below.
|
|
650
695
|
# sofa.enabled: false
|
|
651
696
|
|
|
697
|
+
# Role-local persistent memory for learning agents (#379) — opt-in, off by default.
|
|
698
|
+
# Adds the Claude Code `memory:` frontmatter to the reflector agent so it retains
|
|
699
|
+
# lessons across sessions. Enable via `mapify init --agent-memory local|project`
|
|
700
|
+
# or uncomment and set one of the values below.
|
|
701
|
+
# off — no memory (default; behaviour unchanged)
|
|
702
|
+
# local — user-local memory: .claude/agent-memory-local/ (NOT committed)
|
|
703
|
+
# project — project-scoped memory: .claude/agent-memory/ (committed, shared)
|
|
704
|
+
# claude_agents.persistent_memory: off
|
|
705
|
+
|
|
652
706
|
# Cross-AI peer review (#288) — opt-in, OFF by default. When enabled AND you run
|
|
653
707
|
# `map-review --cross-ai <runtime>`, the review is dispatched to an INDEPENDENT
|
|
654
708
|
# external AI CLI (codex/gemini/claude/opencode) for a second opinion. DOUBLE
|
|
@@ -834,6 +888,39 @@ def apply_sofa_overrides(config_path: Path) -> None:
|
|
|
834
888
|
config_path.write_text(text, encoding="utf-8")
|
|
835
889
|
|
|
836
890
|
|
|
891
|
+
def apply_agent_memory_overrides(config_path: Path, level: str) -> None:
|
|
892
|
+
"""Write claude_agents.persistent_memory=<level> into an existing .map/config.yaml.
|
|
893
|
+
|
|
894
|
+
Called by ``mapify init`` when the user passes ``--agent-memory``. Replaces
|
|
895
|
+
the commented placeholder line so the value becomes active without duplicating
|
|
896
|
+
keys. Callers should skip this function when ``level`` is ``"off"``.
|
|
897
|
+
|
|
898
|
+
Args:
|
|
899
|
+
config_path: path to the .map/config.yaml produced by ``write_default_config``.
|
|
900
|
+
level: one of "off", "local", "project" (caller is responsible for validation).
|
|
901
|
+
"""
|
|
902
|
+
if not config_path.is_file():
|
|
903
|
+
return
|
|
904
|
+
|
|
905
|
+
text = config_path.read_text(encoding="utf-8")
|
|
906
|
+
|
|
907
|
+
def _set(key: str, value: str, body: str) -> str:
|
|
908
|
+
import re
|
|
909
|
+
|
|
910
|
+
active_re = re.compile(rf"(?m)^{re.escape(key)}\s*:.*$")
|
|
911
|
+
commented_re = re.compile(rf"(?m)^#\s*{re.escape(key)}\s*:.*$")
|
|
912
|
+
new_line = f"{key}: {value}"
|
|
913
|
+
if active_re.search(body):
|
|
914
|
+
return active_re.sub(new_line, body, count=1)
|
|
915
|
+
if commented_re.search(body):
|
|
916
|
+
return commented_re.sub(new_line, body, count=1)
|
|
917
|
+
sep = "" if body.endswith("\n") else "\n"
|
|
918
|
+
return f"{body}{sep}{new_line}\n"
|
|
919
|
+
|
|
920
|
+
text = _set("claude_agents.persistent_memory", level, text)
|
|
921
|
+
config_path.write_text(text, encoding="utf-8")
|
|
922
|
+
|
|
923
|
+
|
|
837
924
|
def write_default_config(project_path: Path) -> Path:
|
|
838
925
|
"""Write default config.yaml to .map/config.yaml.
|
|
839
926
|
|
|
@@ -498,6 +498,98 @@ def merge_sofa_gitignore(project_path: Path) -> int:
|
|
|
498
498
|
return 1
|
|
499
499
|
|
|
500
500
|
|
|
501
|
+
_AGENT_MEMORY_LOCAL_GITIGNORE_MARKER = "# map:agent-memory-local"
|
|
502
|
+
_AGENT_MEMORY_LOCAL_GITIGNORE_BLOCK = (
|
|
503
|
+
"# map:agent-memory-local — user-local agent memory (opt-in); never commit.\n"
|
|
504
|
+
".claude/agent-memory-local/\n"
|
|
505
|
+
)
|
|
506
|
+
|
|
507
|
+
|
|
508
|
+
def merge_agent_memory_gitignore(project_path: Path) -> int:
|
|
509
|
+
"""Idempotently add .claude/agent-memory-local/ to the repo-root .gitignore.
|
|
510
|
+
|
|
511
|
+
Only called when ``--agent-memory local`` is used. The project-scoped level
|
|
512
|
+
(``--agent-memory project``) writes to ``.claude/agent-memory/`` which IS
|
|
513
|
+
intended to be committed, so no gitignore entry is needed for it.
|
|
514
|
+
|
|
515
|
+
Returns 1 when the file was created or modified, 0 when already up-to-date.
|
|
516
|
+
"""
|
|
517
|
+
gitignore = project_path / ".gitignore"
|
|
518
|
+
|
|
519
|
+
if not gitignore.exists():
|
|
520
|
+
gitignore.write_text(_AGENT_MEMORY_LOCAL_GITIGNORE_BLOCK)
|
|
521
|
+
return 1
|
|
522
|
+
|
|
523
|
+
existing = gitignore.read_text()
|
|
524
|
+
|
|
525
|
+
# OR-not-AND idempotency guard: skip if our marker OR the exact path is
|
|
526
|
+
# already present (prevents duplicates when user already has the line).
|
|
527
|
+
ignored_lines = {line.strip() for line in existing.splitlines()}
|
|
528
|
+
if (
|
|
529
|
+
_AGENT_MEMORY_LOCAL_GITIGNORE_MARKER in existing
|
|
530
|
+
or ".claude/agent-memory-local/" in ignored_lines
|
|
531
|
+
):
|
|
532
|
+
return 0
|
|
533
|
+
|
|
534
|
+
separator = "" if existing.endswith("\n") else "\n"
|
|
535
|
+
gitignore.write_text(existing + separator + _AGENT_MEMORY_LOCAL_GITIGNORE_BLOCK)
|
|
536
|
+
return 1
|
|
537
|
+
|
|
538
|
+
|
|
539
|
+
def apply_reflector_memory_field(project_path: Path, level: str) -> int:
|
|
540
|
+
"""Add or update the ``memory:`` frontmatter field in the installed reflector.md.
|
|
541
|
+
|
|
542
|
+
Called post-install when ``--agent-memory`` is ``"local"`` or ``"project"``.
|
|
543
|
+
Idempotent: if the field already exists with the correct value it is left
|
|
544
|
+
unchanged; if it exists with a different value it is replaced.
|
|
545
|
+
|
|
546
|
+
Args:
|
|
547
|
+
project_path: root of the target project (installed ``.claude/`` lives here).
|
|
548
|
+
level: ``"local"`` or ``"project"`` (caller is responsible for validation;
|
|
549
|
+
``"off"`` callers must not invoke this function).
|
|
550
|
+
|
|
551
|
+
Returns:
|
|
552
|
+
1 if the file was modified, 0 if already up-to-date or not found.
|
|
553
|
+
"""
|
|
554
|
+
import re
|
|
555
|
+
|
|
556
|
+
reflector_path = project_path / ".claude" / "agents" / "reflector.md"
|
|
557
|
+
if not reflector_path.exists():
|
|
558
|
+
return 0
|
|
559
|
+
|
|
560
|
+
text = reflector_path.read_text(encoding="utf-8")
|
|
561
|
+
|
|
562
|
+
# Determine the correct memory field value based on level.
|
|
563
|
+
# "local" → memory: user_local (maps to .claude/agent-memory-local/)
|
|
564
|
+
# "project" → memory: project (maps to .claude/agent-memory/)
|
|
565
|
+
memory_value = "user_local" if level == "local" else "project"
|
|
566
|
+
new_field_line = f"memory: {memory_value}"
|
|
567
|
+
|
|
568
|
+
# If a `memory:` line already exists in the frontmatter, replace it.
|
|
569
|
+
existing_memory_re = re.compile(r"(?m)^memory\s*:.*$")
|
|
570
|
+
if existing_memory_re.search(text):
|
|
571
|
+
updated = existing_memory_re.sub(new_field_line, text, count=1)
|
|
572
|
+
if updated == text:
|
|
573
|
+
return 0 # already up-to-date
|
|
574
|
+
reflector_path.write_text(updated, encoding="utf-8")
|
|
575
|
+
return 1
|
|
576
|
+
|
|
577
|
+
# Inject the `memory:` line into the YAML frontmatter, just before the
|
|
578
|
+
# closing `---` delimiter. This preserves the existing frontmatter structure.
|
|
579
|
+
# Match the opening `---\n ... \n---` block.
|
|
580
|
+
frontmatter_re = re.compile(r"^(---\n.*?\n)(---)", re.DOTALL)
|
|
581
|
+
m = frontmatter_re.match(text)
|
|
582
|
+
if not m:
|
|
583
|
+
# No frontmatter — prepend a minimal one.
|
|
584
|
+
updated = f"---\n{new_field_line}\n---\n{text}"
|
|
585
|
+
else:
|
|
586
|
+
# Insert before the closing `---`.
|
|
587
|
+
updated = text[: m.start(2)] + new_field_line + "\n" + text[m.start(2) :]
|
|
588
|
+
|
|
589
|
+
reflector_path.write_text(updated, encoding="utf-8")
|
|
590
|
+
return 1
|
|
591
|
+
|
|
592
|
+
|
|
501
593
|
def create_commands_dir(project_path: Path) -> None:
|
|
502
594
|
"""Create commands directory with README pointing at skill-backed surfaces."""
|
|
503
595
|
commands_dir = project_path / ".claude" / "commands"
|
|
@@ -189,6 +189,14 @@ _SKILL_META: dict[str, tuple[str, str]] = {
|
|
|
189
189
|
"context",
|
|
190
190
|
"Opt-in read-only prior-art search against Stack Overflow for Agents (SOFA)",
|
|
191
191
|
),
|
|
192
|
+
"map-wayfind": (
|
|
193
|
+
"oversight",
|
|
194
|
+
"Decision-frontier wayfinding: resolve open design decisions on a durable map before /map-plan",
|
|
195
|
+
),
|
|
196
|
+
"map-architecture": (
|
|
197
|
+
"context",
|
|
198
|
+
"Opt-in proactive architecture-deepening report: rank codebase hotspots by design friction",
|
|
199
|
+
),
|
|
192
200
|
}
|
|
193
201
|
|
|
194
202
|
#: Default categories for known references (enforcement = "prompt-only")
|
|
@@ -62,7 +62,6 @@ _STRAY_TOKENS = ("[%", "<%", "[#")
|
|
|
62
62
|
_CLAUDE_SHIPPED_ONLY: frozenset[str] = frozenset(
|
|
63
63
|
{
|
|
64
64
|
"CLAUDE.md",
|
|
65
|
-
"settings.json",
|
|
66
65
|
"workflow-rules.json",
|
|
67
66
|
"ralph-loop-config.json",
|
|
68
67
|
"hooks/README.md",
|
|
@@ -262,9 +261,13 @@ def _build_claude_resolver(
|
|
|
262
261
|
(``map/`` prefix remaps to ``.map/`` in the dev tree)
|
|
263
262
|
|
|
264
263
|
* hooks/README.md, rules/learned/README.md, CLAUDE.md,
|
|
265
|
-
|
|
264
|
+
workflow-rules.json, ralph-loop-config.json
|
|
266
265
|
→ ``src/mapify_cli/templates/<rel>`` ONLY (shipped-only — no dev dest)
|
|
267
266
|
|
|
267
|
+
* settings.json
|
|
268
|
+
→ BOTH ``src/mapify_cli/templates/settings.json`` AND ``.claude/settings.json``
|
|
269
|
+
(dual-dest so ``check-render`` gates both and drift is caught; issue #390)
|
|
270
|
+
|
|
268
271
|
A rendered file mapping to 0 destinations is simply not written live
|
|
269
272
|
(future use; not used for CLAUDE provider currently).
|
|
270
273
|
|
|
@@ -1882,3 +1882,176 @@ CONTEXT_USEFULNESS_SCHEMA: dict[str, Any] = {
|
|
|
1882
1882
|
"required": ["schema_version", "branch", "workflow", "items", "summary"],
|
|
1883
1883
|
"additionalProperties": True,
|
|
1884
1884
|
}
|
|
1885
|
+
|
|
1886
|
+
|
|
1887
|
+
REVIEW_VERDICT_LEDGER_SCHEMA: dict[str, Any] = {
|
|
1888
|
+
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
|
1889
|
+
"$id": "https://mapframework.dev/schemas/review-verdict-ledger.json",
|
|
1890
|
+
"title": "MAP Review Verdict Ledger",
|
|
1891
|
+
"description": (
|
|
1892
|
+
"Durable normalized finding registry and computed verdict for a /map-review run. "
|
|
1893
|
+
"Written before write_stage_gate so the reasoning surface is reproducible from "
|
|
1894
|
+
"a closed decision table, not assigned ad hoc. See issue #406."
|
|
1895
|
+
),
|
|
1896
|
+
"type": "object",
|
|
1897
|
+
"properties": {
|
|
1898
|
+
"schema_version": {"type": "string"},
|
|
1899
|
+
"generated_at": {"type": "string"},
|
|
1900
|
+
"branch": {"type": "string"},
|
|
1901
|
+
"criteria_version": {"type": "string"},
|
|
1902
|
+
"input_classification": {
|
|
1903
|
+
"type": "object",
|
|
1904
|
+
"properties": {
|
|
1905
|
+
"review_mode": {
|
|
1906
|
+
"type": "string",
|
|
1907
|
+
"enum": ["normal", "adversarial", "cross_ai", "compare_orderings", "unknown"],
|
|
1908
|
+
},
|
|
1909
|
+
"destination": {
|
|
1910
|
+
"type": "string",
|
|
1911
|
+
"enum": ["pre_commit", "pr_review", "ci", "unknown"],
|
|
1912
|
+
},
|
|
1913
|
+
"evidence_mode": {
|
|
1914
|
+
"type": "string",
|
|
1915
|
+
"enum": ["structural", "self_executed", "independent_run", "mixed", "unknown"],
|
|
1916
|
+
},
|
|
1917
|
+
"executor_class": {"type": "string"},
|
|
1918
|
+
},
|
|
1919
|
+
"required": ["review_mode"],
|
|
1920
|
+
"additionalProperties": True,
|
|
1921
|
+
},
|
|
1922
|
+
"findings_registry": {
|
|
1923
|
+
"type": "array",
|
|
1924
|
+
"items": {
|
|
1925
|
+
"type": "object",
|
|
1926
|
+
"properties": {
|
|
1927
|
+
"id": {"type": "string"},
|
|
1928
|
+
"source_agent": {
|
|
1929
|
+
"type": "string",
|
|
1930
|
+
"enum": [
|
|
1931
|
+
"monitor", "predictor", "evaluator",
|
|
1932
|
+
"adversarial", "ordering", "operator",
|
|
1933
|
+
],
|
|
1934
|
+
},
|
|
1935
|
+
"category": {
|
|
1936
|
+
"type": "string",
|
|
1937
|
+
"enum": [
|
|
1938
|
+
"correctness", "security", "tests", "performance",
|
|
1939
|
+
"maintainability", "workflow", "unknown",
|
|
1940
|
+
],
|
|
1941
|
+
},
|
|
1942
|
+
"severity": {
|
|
1943
|
+
"type": "string",
|
|
1944
|
+
"enum": ["critical", "important", "minor", "needs_investigation"],
|
|
1945
|
+
},
|
|
1946
|
+
"claim": {"type": "string"},
|
|
1947
|
+
"evidence": {
|
|
1948
|
+
"type": "array",
|
|
1949
|
+
"items": {
|
|
1950
|
+
"type": "object",
|
|
1951
|
+
"properties": {
|
|
1952
|
+
"file_path": {"type": "string"},
|
|
1953
|
+
"line_range": {"type": "string"},
|
|
1954
|
+
"quote": {"type": "string"},
|
|
1955
|
+
},
|
|
1956
|
+
"additionalProperties": True,
|
|
1957
|
+
},
|
|
1958
|
+
},
|
|
1959
|
+
"status": {
|
|
1960
|
+
"type": "string",
|
|
1961
|
+
"enum": ["active", "tombstoned", "downgraded"],
|
|
1962
|
+
},
|
|
1963
|
+
"transition_reason": {
|
|
1964
|
+
"type": ["string", "null"],
|
|
1965
|
+
"enum": [
|
|
1966
|
+
"new_evidence", "quote_absent", "wrong_category",
|
|
1967
|
+
"different_version", "pre_existing_backlog",
|
|
1968
|
+
"human_escalation", "pressure_without_new_fact",
|
|
1969
|
+
"input_integrity", "not_applicable", None,
|
|
1970
|
+
],
|
|
1971
|
+
},
|
|
1972
|
+
"transition_evidence": {"type": ["string", "null"]},
|
|
1973
|
+
"was_present_before_pr": {"type": ["boolean", "null"]},
|
|
1974
|
+
"downgraded_from": {
|
|
1975
|
+
"type": "string",
|
|
1976
|
+
"enum": ["critical", "important", "minor", "needs_investigation"],
|
|
1977
|
+
"description": (
|
|
1978
|
+
"Severity the finding carried before it was downgraded. "
|
|
1979
|
+
"Present only on downgraded rows."
|
|
1980
|
+
),
|
|
1981
|
+
},
|
|
1982
|
+
},
|
|
1983
|
+
"required": ["id", "source_agent", "severity", "claim", "status"],
|
|
1984
|
+
"additionalProperties": True,
|
|
1985
|
+
},
|
|
1986
|
+
},
|
|
1987
|
+
"not_verified": {
|
|
1988
|
+
"type": "array",
|
|
1989
|
+
"items": {"type": "string"},
|
|
1990
|
+
"description": "Concerns that could not be verified against source evidence.",
|
|
1991
|
+
},
|
|
1992
|
+
"evaluator_scores": {
|
|
1993
|
+
"type": ["object", "null"],
|
|
1994
|
+
"description": "Raw Evaluator scores — advisory signal, cannot override active findings.",
|
|
1995
|
+
"additionalProperties": True,
|
|
1996
|
+
},
|
|
1997
|
+
"verdict_table": {"type": "string"},
|
|
1998
|
+
"computed_verdict": {
|
|
1999
|
+
"type": "string",
|
|
2000
|
+
"enum": ["PROCEED", "REVISE", "BLOCK"],
|
|
2001
|
+
},
|
|
2002
|
+
"verdict_basis": {
|
|
2003
|
+
"type": "string",
|
|
2004
|
+
"description": "Human-readable explanation of why the decision table chose this verdict.",
|
|
2005
|
+
},
|
|
2006
|
+
"journal": {
|
|
2007
|
+
"type": "object",
|
|
2008
|
+
"properties": {
|
|
2009
|
+
"previous_verdict": {
|
|
2010
|
+
"type": ["string", "null"],
|
|
2011
|
+
"enum": ["PROCEED", "REVISE", "BLOCK", None],
|
|
2012
|
+
},
|
|
2013
|
+
"current_verdict": {
|
|
2014
|
+
"type": "string",
|
|
2015
|
+
"enum": ["PROCEED", "REVISE", "BLOCK"],
|
|
2016
|
+
},
|
|
2017
|
+
"matches_previous": {"type": ["boolean", "null"]},
|
|
2018
|
+
"repeated_verbatim": {
|
|
2019
|
+
"type": "boolean",
|
|
2020
|
+
"description": (
|
|
2021
|
+
"True when an objection carried no new fact, so the prior "
|
|
2022
|
+
"verdict stands rather than being re-argued."
|
|
2023
|
+
),
|
|
2024
|
+
},
|
|
2025
|
+
"basis": {"type": "string"},
|
|
2026
|
+
},
|
|
2027
|
+
"required": ["current_verdict"],
|
|
2028
|
+
"additionalProperties": True,
|
|
2029
|
+
},
|
|
2030
|
+
"escalation_required": {
|
|
2031
|
+
"type": "boolean",
|
|
2032
|
+
"description": (
|
|
2033
|
+
"True when a human must decide. PROCEED is unavailable while this is set."
|
|
2034
|
+
),
|
|
2035
|
+
},
|
|
2036
|
+
"escalation_reasons": {
|
|
2037
|
+
"type": "array",
|
|
2038
|
+
"items": {"type": "string"},
|
|
2039
|
+
},
|
|
2040
|
+
# active_count counts what the decision table consumed: active AND
|
|
2041
|
+
# downgraded rows. tombstoned_count counts only rows that left the table.
|
|
2042
|
+
"active_count": {"type": "integer", "minimum": 0},
|
|
2043
|
+
"downgraded_count": {"type": "integer", "minimum": 0},
|
|
2044
|
+
"tombstoned_count": {"type": "integer", "minimum": 0},
|
|
2045
|
+
},
|
|
2046
|
+
"required": [
|
|
2047
|
+
"schema_version",
|
|
2048
|
+
"branch",
|
|
2049
|
+
"generated_at",
|
|
2050
|
+
"findings_registry",
|
|
2051
|
+
"not_verified",
|
|
2052
|
+
"computed_verdict",
|
|
2053
|
+
"verdict_table",
|
|
2054
|
+
"journal",
|
|
2055
|
+
],
|
|
2056
|
+
"additionalProperties": True,
|
|
2057
|
+
}
|
|
@@ -190,7 +190,18 @@ def is_exempt_path(file_path: str) -> bool:
|
|
|
190
190
|
# rules written by ``/map-learn``. The exemption is restricted to ``*.md`` files to
|
|
191
191
|
# prevent the directory from quietly broadening into a general bypass for arbitrary
|
|
192
192
|
# file types (executables, configs, secrets-bearing JSON, etc.).
|
|
193
|
-
|
|
193
|
+
if len(parts) >= 4 and parts[:3] == (".claude", "rules", "learned") and parts[-1].endswith(".md"):
|
|
194
|
+
return True
|
|
195
|
+
# POLICY: ``.claude/agent-memory/`` and ``.claude/agent-memory-local/`` are the
|
|
196
|
+
# destinations for role-local persistent memory written by learning agents (e.g.
|
|
197
|
+
# reflector). Exemption is restricted to ``*.md`` files only — the same narrow
|
|
198
|
+
# scope as the ``rules/learned/`` exemption above.
|
|
199
|
+
return (
|
|
200
|
+
len(parts) >= 3
|
|
201
|
+
and parts[0] == ".claude"
|
|
202
|
+
and parts[1] in ("agent-memory", "agent-memory-local")
|
|
203
|
+
and parts[-1].endswith(".md")
|
|
204
|
+
)
|
|
194
205
|
|
|
195
206
|
|
|
196
207
|
def sanitize_branch_name(branch: str) -> str:
|
|
@@ -190,7 +190,18 @@ def is_exempt_path(file_path: str) -> bool:
|
|
|
190
190
|
# rules written by ``/map-learn``. The exemption is restricted to ``*.md`` files to
|
|
191
191
|
# prevent the directory from quietly broadening into a general bypass for arbitrary
|
|
192
192
|
# file types (executables, configs, secrets-bearing JSON, etc.).
|
|
193
|
-
|
|
193
|
+
if len(parts) >= 4 and parts[:3] == (".claude", "rules", "learned") and parts[-1].endswith(".md"):
|
|
194
|
+
return True
|
|
195
|
+
# POLICY: ``.claude/agent-memory/`` and ``.claude/agent-memory-local/`` are the
|
|
196
|
+
# destinations for role-local persistent memory written by learning agents (e.g.
|
|
197
|
+
# reflector). Exemption is restricted to ``*.md`` files only — the same narrow
|
|
198
|
+
# scope as the ``rules/learned/`` exemption above.
|
|
199
|
+
return (
|
|
200
|
+
len(parts) >= 3
|
|
201
|
+
and parts[0] == ".claude"
|
|
202
|
+
and parts[1] in ("agent-memory", "agent-memory-local")
|
|
203
|
+
and parts[-1].endswith(".md")
|
|
204
|
+
)
|
|
194
205
|
|
|
195
206
|
|
|
196
207
|
def sanitize_branch_name(branch: str) -> str:
|
{mapify_cli-3.24.1 → mapify_cli-3.25.0}/src/mapify_cli/templates/map/scripts/classify_scope.py
RENAMED
|
@@ -47,10 +47,23 @@ _DEFAULTS: dict[str, str] = {
|
|
|
47
47
|
}
|
|
48
48
|
|
|
49
49
|
|
|
50
|
+
_SNAKE_ALIASES: dict[str, str] = {
|
|
51
|
+
"scale_auto": "scale.auto",
|
|
52
|
+
"scale_trivial_max_files": "scale.thresholds.trivial.max_files",
|
|
53
|
+
"scale_trivial_max_lines": "scale.thresholds.trivial.max_lines",
|
|
54
|
+
"scale_small_max_files": "scale.thresholds.small.max_files",
|
|
55
|
+
"scale_small_max_lines": "scale.thresholds.small.max_lines",
|
|
56
|
+
"scale_medium_max_files": "scale.thresholds.medium.max_files",
|
|
57
|
+
"scale_medium_max_lines": "scale.thresholds.medium.max_lines",
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
|
|
50
61
|
def _read_config(project_dir: Path) -> dict[str, str]:
|
|
51
62
|
"""Read .map/config.yaml scalar values without external dependencies.
|
|
52
63
|
|
|
53
|
-
Supports the
|
|
64
|
+
Supports both the dotted-key form used in the config template (e.g.
|
|
65
|
+
``scale.thresholds.trivial.max_files``) and the snake_case form that
|
|
66
|
+
``load_map_config()`` aliases (e.g. ``scale_trivial_max_files``).
|
|
54
67
|
"""
|
|
55
68
|
config_path = project_dir / ".map" / "config.yaml"
|
|
56
69
|
if not config_path.is_file():
|
|
@@ -72,6 +85,11 @@ def _read_config(project_dir: Path) -> dict[str, str]:
|
|
|
72
85
|
if len(value) >= 2 and value[0] == value[-1] and value[0] in {'"', "'"}:
|
|
73
86
|
value = value[1:-1]
|
|
74
87
|
values[key] = value
|
|
88
|
+
# Accept snake_case aliases (e.g. scale_trivial_max_files) in addition to
|
|
89
|
+
# the canonical dotted form so both config styles are honoured.
|
|
90
|
+
for snake, dotted in _SNAKE_ALIASES.items():
|
|
91
|
+
if snake in values and dotted not in values:
|
|
92
|
+
values[dotted] = values[snake]
|
|
75
93
|
return values
|
|
76
94
|
|
|
77
95
|
|
|
@@ -84,7 +102,16 @@ def classify(
|
|
|
84
102
|
raw = _read_config(project_dir or Path("."))
|
|
85
103
|
|
|
86
104
|
def _int(key: str) -> int:
|
|
87
|
-
|
|
105
|
+
raw_val = raw.get(key, _DEFAULTS[key])
|
|
106
|
+
try:
|
|
107
|
+
return int(raw_val)
|
|
108
|
+
except ValueError:
|
|
109
|
+
print(
|
|
110
|
+
f"warning: classify_scope: invalid integer {raw_val!r} for config "
|
|
111
|
+
f"key {key!r}; using default {_DEFAULTS[key]}",
|
|
112
|
+
file=sys.stderr,
|
|
113
|
+
)
|
|
114
|
+
return int(_DEFAULTS[key])
|
|
88
115
|
|
|
89
116
|
def _bool(key: str) -> bool:
|
|
90
117
|
return raw.get(key, _DEFAULTS[key]).lower() not in {"false", "0", "no"}
|