mapify-cli 3.17.1__tar.gz → 3.18.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.17.1 → mapify_cli-3.18.0}/PKG-INFO +5 -4
- {mapify_cli-3.17.1 → mapify_cli-3.18.0}/README.md +3 -3
- {mapify_cli-3.17.1 → mapify_cli-3.18.0}/pyproject.toml +8 -2
- {mapify_cli-3.17.1 → mapify_cli-3.18.0}/src/mapify_cli/__init__.py +1 -1
- {mapify_cli-3.17.1 → mapify_cli-3.18.0}/src/mapify_cli/config/mcp.py +0 -3
- {mapify_cli-3.17.1 → mapify_cli-3.18.0}/src/mapify_cli/config/project_config.py +48 -5
- {mapify_cli-3.17.1 → mapify_cli-3.18.0}/src/mapify_cli/schemas.py +4 -0
- {mapify_cli-3.17.1 → mapify_cli-3.18.0}/src/mapify_cli/templates/.gitignore +3 -0
- {mapify_cli-3.17.1 → mapify_cli-3.18.0}/src/mapify_cli/templates/agents/actor.md +0 -37
- {mapify_cli-3.17.1 → mapify_cli-3.18.0}/src/mapify_cli/templates/agents/documentation-reviewer.md +4 -2
- {mapify_cli-3.17.1 → mapify_cli-3.18.0}/src/mapify_cli/templates/agents/monitor.md +0 -88
- {mapify_cli-3.17.1 → mapify_cli-3.18.0}/src/mapify_cli/templates/codex/skills/map-efficient/SKILL.md +4 -1
- {mapify_cli-3.17.1 → mapify_cli-3.18.0}/src/mapify_cli/templates/codex/skills/map-efficient/efficient-reference.md +48 -0
- {mapify_cli-3.17.1 → mapify_cli-3.18.0}/src/mapify_cli/templates/codex/skills/map-plan/SKILL.md +22 -3
- {mapify_cli-3.17.1 → mapify_cli-3.18.0}/src/mapify_cli/templates/hooks/post-compact-context.py +28 -0
- {mapify_cli-3.17.1 → mapify_cli-3.18.0}/src/mapify_cli/templates/hooks/pre-compact-save-transcript.py +35 -0
- {mapify_cli-3.17.1 → mapify_cli-3.18.0}/src/mapify_cli/templates/map/scripts/map_orchestrator.py +19 -0
- {mapify_cli-3.17.1 → mapify_cli-3.18.0}/src/mapify_cli/templates/map/scripts/map_step_runner.py +384 -100
- {mapify_cli-3.17.1 → mapify_cli-3.18.0}/src/mapify_cli/templates/skills/map-efficient/SKILL.md +4 -2
- {mapify_cli-3.17.1 → mapify_cli-3.18.0}/src/mapify_cli/templates/skills/map-efficient/efficient-reference.md +83 -0
- {mapify_cli-3.17.1 → mapify_cli-3.18.0}/src/mapify_cli/templates/skills/map-plan/SKILL.md +23 -3
- {mapify_cli-3.17.1 → mapify_cli-3.18.0}/src/mapify_cli/templates/skills/map-plan/plan-reference.md +48 -0
- {mapify_cli-3.17.1 → mapify_cli-3.18.0}/src/mapify_cli/templates_src/.gitignore.jinja +3 -0
- {mapify_cli-3.17.1 → mapify_cli-3.18.0}/src/mapify_cli/templates_src/agents/actor.md.jinja +0 -37
- {mapify_cli-3.17.1 → mapify_cli-3.18.0}/src/mapify_cli/templates_src/agents/documentation-reviewer.md.jinja +4 -2
- {mapify_cli-3.17.1 → mapify_cli-3.18.0}/src/mapify_cli/templates_src/agents/monitor.md.jinja +0 -88
- {mapify_cli-3.17.1 → mapify_cli-3.18.0}/src/mapify_cli/templates_src/codex/skills/map-efficient/SKILL.md.jinja +4 -1
- {mapify_cli-3.17.1 → mapify_cli-3.18.0}/src/mapify_cli/templates_src/codex/skills/map-efficient/efficient-reference.md.jinja +48 -0
- {mapify_cli-3.17.1 → mapify_cli-3.18.0}/src/mapify_cli/templates_src/codex/skills/map-plan/SKILL.md.jinja +22 -3
- {mapify_cli-3.17.1 → mapify_cli-3.18.0}/src/mapify_cli/templates_src/hooks/post-compact-context.py.jinja +28 -0
- {mapify_cli-3.17.1 → mapify_cli-3.18.0}/src/mapify_cli/templates_src/hooks/pre-compact-save-transcript.py.jinja +35 -0
- {mapify_cli-3.17.1 → mapify_cli-3.18.0}/src/mapify_cli/templates_src/map/scripts/map_orchestrator.py.jinja +19 -0
- {mapify_cli-3.17.1 → mapify_cli-3.18.0}/src/mapify_cli/templates_src/map/scripts/map_step_runner.py.jinja +384 -100
- {mapify_cli-3.17.1 → mapify_cli-3.18.0}/src/mapify_cli/templates_src/skills/map-efficient/SKILL.md.jinja +4 -2
- {mapify_cli-3.17.1 → mapify_cli-3.18.0}/src/mapify_cli/templates_src/skills/map-efficient/efficient-reference.md.jinja +83 -0
- {mapify_cli-3.17.1 → mapify_cli-3.18.0}/src/mapify_cli/templates_src/skills/map-plan/SKILL.md.jinja +23 -3
- {mapify_cli-3.17.1 → mapify_cli-3.18.0}/src/mapify_cli/templates_src/skills/map-plan/plan-reference.md.jinja +48 -0
- mapify_cli-3.18.0/src/mapify_cli/tool_output_offload.py +524 -0
- mapify_cli-3.18.0/tests/test_agent_dispatch_audit.py +92 -0
- {mapify_cli-3.17.1 → mapify_cli-3.18.0}/tests/test_artifact_schemas.py +24 -0
- mapify_cli-3.18.0/tests/test_compaction_offload_integration.py +145 -0
- {mapify_cli-3.17.1 → mapify_cli-3.18.0}/tests/test_decomposition.py +18 -3
- {mapify_cli-3.17.1 → mapify_cli-3.18.0}/tests/test_map_step_runner.py +350 -5
- {mapify_cli-3.17.1 → mapify_cli-3.18.0}/tests/test_mapify_cli.py +3 -3
- mapify_cli-3.18.0/tests/test_prompt_layering.py +248 -0
- mapify_cli-3.18.0/tests/test_pyyaml_dep.py +95 -0
- {mapify_cli-3.17.1 → mapify_cli-3.18.0}/tests/test_skills.py +223 -1
- mapify_cli-3.18.0/tests/test_tool_output_offload.py +338 -0
- mapify_cli-3.17.1/src/mapify_cli/templates/agents/debate-arbiter.md +0 -953
- mapify_cli-3.17.1/src/mapify_cli/templates/agents/synthesizer.md +0 -1066
- mapify_cli-3.17.1/src/mapify_cli/templates_src/agents/debate-arbiter.md.jinja +0 -953
- mapify_cli-3.17.1/src/mapify_cli/templates_src/agents/synthesizer.md.jinja +0 -1066
- {mapify_cli-3.17.1 → mapify_cli-3.18.0}/.claude/hooks/README.md +0 -0
- {mapify_cli-3.17.1 → mapify_cli-3.18.0}/.claude/skills/README.md +0 -0
- {mapify_cli-3.17.1 → mapify_cli-3.18.0}/.gitignore +0 -0
- {mapify_cli-3.17.1 → mapify_cli-3.18.0}/LICENSE +0 -0
- {mapify_cli-3.17.1 → mapify_cli-3.18.0}/src/mapify_cli/_locking.py +0 -0
- {mapify_cli-3.17.1 → mapify_cli-3.18.0}/src/mapify_cli/cli_ui.py +0 -0
- {mapify_cli-3.17.1 → mapify_cli-3.18.0}/src/mapify_cli/config/__init__.py +0 -0
- {mapify_cli-3.17.1 → mapify_cli-3.18.0}/src/mapify_cli/config/settings.py +0 -0
- {mapify_cli-3.17.1 → mapify_cli-3.18.0}/src/mapify_cli/delivery/__init__.py +0 -0
- {mapify_cli-3.17.1 → mapify_cli-3.18.0}/src/mapify_cli/delivery/agent_generator.py +0 -0
- {mapify_cli-3.17.1 → mapify_cli-3.18.0}/src/mapify_cli/delivery/codex_copier.py +0 -0
- {mapify_cli-3.17.1 → mapify_cli-3.18.0}/src/mapify_cli/delivery/file_copier.py +0 -0
- {mapify_cli-3.17.1 → mapify_cli-3.18.0}/src/mapify_cli/delivery/managed_file_copier.py +0 -0
- {mapify_cli-3.17.1 → mapify_cli-3.18.0}/src/mapify_cli/delivery/providers.py +0 -0
- {mapify_cli-3.17.1 → mapify_cli-3.18.0}/src/mapify_cli/delivery/template_renderer.py +0 -0
- {mapify_cli-3.17.1 → mapify_cli-3.18.0}/src/mapify_cli/dependency_graph.py +0 -0
- {mapify_cli-3.17.1 → mapify_cli-3.18.0}/src/mapify_cli/intent_detector.py +0 -0
- {mapify_cli-3.17.1 → mapify_cli-3.18.0}/src/mapify_cli/memory/__init__.py +0 -0
- {mapify_cli-3.17.1 → mapify_cli-3.18.0}/src/mapify_cli/memory/capture.py +0 -0
- {mapify_cli-3.17.1 → mapify_cli-3.18.0}/src/mapify_cli/memory/digest_schema.py +0 -0
- {mapify_cli-3.17.1 → mapify_cli-3.18.0}/src/mapify_cli/memory/finalize.py +0 -0
- {mapify_cli-3.17.1 → mapify_cli-3.18.0}/src/mapify_cli/memory/recall.py +0 -0
- {mapify_cli-3.17.1 → mapify_cli-3.18.0}/src/mapify_cli/minimality_report.py +0 -0
- {mapify_cli-3.17.1 → mapify_cli-3.18.0}/src/mapify_cli/ralph_state.py +0 -0
- {mapify_cli-3.17.1 → mapify_cli-3.18.0}/src/mapify_cli/repo_insight.py +0 -0
- {mapify_cli-3.17.1 → mapify_cli-3.18.0}/src/mapify_cli/research_eval.py +0 -0
- {mapify_cli-3.17.1 → mapify_cli-3.18.0}/src/mapify_cli/skill_ir.py +0 -0
- {mapify_cli-3.17.1 → mapify_cli-3.18.0}/src/mapify_cli/skills_eval/__init__.py +0 -0
- {mapify_cli-3.17.1 → mapify_cli-3.18.0}/src/mapify_cli/skills_eval/aggregator.py +0 -0
- {mapify_cli-3.17.1 → mapify_cli-3.18.0}/src/mapify_cli/skills_eval/apply_patcher.py +0 -0
- {mapify_cli-3.17.1 → mapify_cli-3.18.0}/src/mapify_cli/skills_eval/assertions.py +0 -0
- {mapify_cli-3.17.1 → mapify_cli-3.18.0}/src/mapify_cli/skills_eval/description_optimizer.py +0 -0
- {mapify_cli-3.17.1 → mapify_cli-3.18.0}/src/mapify_cli/skills_eval/dispatcher.py +0 -0
- {mapify_cli-3.17.1 → mapify_cli-3.18.0}/src/mapify_cli/skills_eval/eval_schema.py +0 -0
- {mapify_cli-3.17.1 → mapify_cli-3.18.0}/src/mapify_cli/skills_eval/proposer.py +0 -0
- {mapify_cli-3.17.1 → mapify_cli-3.18.0}/src/mapify_cli/skills_eval/runner.py +0 -0
- {mapify_cli-3.17.1 → mapify_cli-3.18.0}/src/mapify_cli/skills_eval/viewer.py +0 -0
- {mapify_cli-3.17.1 → mapify_cli-3.18.0}/src/mapify_cli/templates/CLAUDE.md +0 -0
- {mapify_cli-3.17.1 → mapify_cli-3.18.0}/src/mapify_cli/templates/agents/evaluator.md +0 -0
- {mapify_cli-3.17.1 → mapify_cli-3.18.0}/src/mapify_cli/templates/agents/final-verifier.md +0 -0
- {mapify_cli-3.17.1 → mapify_cli-3.18.0}/src/mapify_cli/templates/agents/predictor.md +0 -0
- {mapify_cli-3.17.1 → mapify_cli-3.18.0}/src/mapify_cli/templates/agents/reflector.md +0 -0
- {mapify_cli-3.17.1 → mapify_cli-3.18.0}/src/mapify_cli/templates/agents/research-agent.md +0 -0
- {mapify_cli-3.17.1 → mapify_cli-3.18.0}/src/mapify_cli/templates/agents/task-decomposer.md +0 -0
- {mapify_cli-3.17.1 → mapify_cli-3.18.0}/src/mapify_cli/templates/codex/AGENTS.md +0 -0
- {mapify_cli-3.17.1 → mapify_cli-3.18.0}/src/mapify_cli/templates/codex/agents/decomposer.toml +0 -0
- {mapify_cli-3.17.1 → mapify_cli-3.18.0}/src/mapify_cli/templates/codex/agents/monitor.toml +0 -0
- {mapify_cli-3.17.1 → mapify_cli-3.18.0}/src/mapify_cli/templates/codex/agents/researcher.toml +0 -0
- {mapify_cli-3.17.1 → mapify_cli-3.18.0}/src/mapify_cli/templates/codex/config.toml +0 -0
- {mapify_cli-3.17.1 → mapify_cli-3.18.0}/src/mapify_cli/templates/codex/hooks/workflow-gate.py +0 -0
- {mapify_cli-3.17.1 → mapify_cli-3.18.0}/src/mapify_cli/templates/codex/hooks.json +0 -0
- {mapify_cli-3.17.1 → mapify_cli-3.18.0}/src/mapify_cli/templates/codex/skills/map-check/SKILL.md +0 -0
- {mapify_cli-3.17.1 → mapify_cli-3.18.0}/src/mapify_cli/templates/codex/skills/map-explain/SKILL.md +0 -0
- {mapify_cli-3.17.1 → mapify_cli-3.18.0}/src/mapify_cli/templates/codex/skills/map-fast/SKILL.md +0 -0
- {mapify_cli-3.17.1 → mapify_cli-3.18.0}/src/mapify_cli/templates/codex/skills/map-understand/SKILL.md +0 -0
- {mapify_cli-3.17.1 → mapify_cli-3.18.0}/src/mapify_cli/templates/hooks/README.md +0 -0
- {mapify_cli-3.17.1 → mapify_cli-3.18.0}/src/mapify_cli/templates/hooks/context-meter.py +0 -0
- {mapify_cli-3.17.1 → mapify_cli-3.18.0}/src/mapify_cli/templates/hooks/detect-clarification-triggers.py +0 -0
- {mapify_cli-3.17.1 → mapify_cli-3.18.0}/src/mapify_cli/templates/hooks/end-of-turn.sh +0 -0
- {mapify_cli-3.17.1 → mapify_cli-3.18.0}/src/mapify_cli/templates/hooks/map-memory-capture.py +0 -0
- {mapify_cli-3.17.1 → mapify_cli-3.18.0}/src/mapify_cli/templates/hooks/map-memory-endmark.py +0 -0
- {mapify_cli-3.17.1 → mapify_cli-3.18.0}/src/mapify_cli/templates/hooks/map-memory-finalize.py +0 -0
- {mapify_cli-3.17.1 → mapify_cli-3.18.0}/src/mapify_cli/templates/hooks/map-memory-recall.py +0 -0
- {mapify_cli-3.17.1 → mapify_cli-3.18.0}/src/mapify_cli/templates/hooks/map-token-meter.py +0 -0
- {mapify_cli-3.17.1 → mapify_cli-3.18.0}/src/mapify_cli/templates/hooks/ralph-context-pruner.py +0 -0
- {mapify_cli-3.17.1 → mapify_cli-3.18.0}/src/mapify_cli/templates/hooks/ralph-iteration-logger.py +0 -0
- {mapify_cli-3.17.1 → mapify_cli-3.18.0}/src/mapify_cli/templates/hooks/safety-guardrails.py +0 -0
- {mapify_cli-3.17.1 → mapify_cli-3.18.0}/src/mapify_cli/templates/hooks/workflow-context-injector.py +0 -0
- {mapify_cli-3.17.1 → mapify_cli-3.18.0}/src/mapify_cli/templates/hooks/workflow-gate.py +0 -0
- {mapify_cli-3.17.1 → mapify_cli-3.18.0}/src/mapify_cli/templates/map/scripts/diagnostics.py +0 -0
- {mapify_cli-3.17.1 → mapify_cli-3.18.0}/src/mapify_cli/templates/map/scripts/map_utils.py +0 -0
- {mapify_cli-3.17.1 → mapify_cli-3.18.0}/src/mapify_cli/templates/map/scripts/sofa_client.py +0 -0
- {mapify_cli-3.17.1 → mapify_cli-3.18.0}/src/mapify_cli/templates/map/scripts/validate_spec_citations.py +0 -0
- {mapify_cli-3.17.1 → mapify_cli-3.18.0}/src/mapify_cli/templates/map/static-analysis/analyze.sh +0 -0
- {mapify_cli-3.17.1 → mapify_cli-3.18.0}/src/mapify_cli/templates/map/static-analysis/handlers/common.sh +0 -0
- {mapify_cli-3.17.1 → mapify_cli-3.18.0}/src/mapify_cli/templates/map/static-analysis/handlers/go.sh +0 -0
- {mapify_cli-3.17.1 → mapify_cli-3.18.0}/src/mapify_cli/templates/map/static-analysis/handlers/python.sh +0 -0
- {mapify_cli-3.17.1 → mapify_cli-3.18.0}/src/mapify_cli/templates/map/static-analysis/handlers/rust.sh +0 -0
- {mapify_cli-3.17.1 → mapify_cli-3.18.0}/src/mapify_cli/templates/map/static-analysis/handlers/typescript.sh +0 -0
- {mapify_cli-3.17.1 → mapify_cli-3.18.0}/src/mapify_cli/templates/ralph-loop-config.json +0 -0
- {mapify_cli-3.17.1 → mapify_cli-3.18.0}/src/mapify_cli/templates/references/bash-guidelines.md +0 -0
- {mapify_cli-3.17.1 → mapify_cli-3.18.0}/src/mapify_cli/templates/references/decomposition-examples.md +0 -0
- {mapify_cli-3.17.1 → mapify_cli-3.18.0}/src/mapify_cli/templates/references/escalation-matrix.md +0 -0
- {mapify_cli-3.17.1 → mapify_cli-3.18.0}/src/mapify_cli/templates/references/hook-patterns.md +0 -0
- {mapify_cli-3.17.1 → mapify_cli-3.18.0}/src/mapify_cli/templates/references/host-paths.md +0 -0
- {mapify_cli-3.17.1 → mapify_cli-3.18.0}/src/mapify_cli/templates/references/map-json-output-contracts.md +0 -0
- {mapify_cli-3.17.1 → mapify_cli-3.18.0}/src/mapify_cli/templates/references/map-output-examples.md +0 -0
- {mapify_cli-3.17.1 → mapify_cli-3.18.0}/src/mapify_cli/templates/references/map-xml-prompt-envelopes.md +0 -0
- {mapify_cli-3.17.1 → mapify_cli-3.18.0}/src/mapify_cli/templates/references/mcp-usage-examples.md +0 -0
- {mapify_cli-3.17.1 → mapify_cli-3.18.0}/src/mapify_cli/templates/references/step-state-schema.md +0 -0
- {mapify_cli-3.17.1 → mapify_cli-3.18.0}/src/mapify_cli/templates/references/workflow-state-schema.md +0 -0
- {mapify_cli-3.17.1 → mapify_cli-3.18.0}/src/mapify_cli/templates/rules/learned/README.md +0 -0
- {mapify_cli-3.17.1 → mapify_cli-3.18.0}/src/mapify_cli/templates/settings.json +0 -0
- {mapify_cli-3.17.1 → mapify_cli-3.18.0}/src/mapify_cli/templates/skills/README.md +0 -0
- {mapify_cli-3.17.1 → mapify_cli-3.18.0}/src/mapify_cli/templates/skills/map-check/SKILL.md +0 -0
- {mapify_cli-3.17.1 → mapify_cli-3.18.0}/src/mapify_cli/templates/skills/map-check/check-reference.md +0 -0
- {mapify_cli-3.17.1 → mapify_cli-3.18.0}/src/mapify_cli/templates/skills/map-debug/SKILL.md +0 -0
- {mapify_cli-3.17.1 → mapify_cli-3.18.0}/src/mapify_cli/templates/skills/map-explain/SKILL.md +0 -0
- {mapify_cli-3.17.1 → mapify_cli-3.18.0}/src/mapify_cli/templates/skills/map-fast/SKILL.md +0 -0
- {mapify_cli-3.17.1 → mapify_cli-3.18.0}/src/mapify_cli/templates/skills/map-learn/SKILL.md +0 -0
- {mapify_cli-3.17.1 → mapify_cli-3.18.0}/src/mapify_cli/templates/skills/map-learn/templates/example-rules.md +0 -0
- {mapify_cli-3.17.1 → mapify_cli-3.18.0}/src/mapify_cli/templates/skills/map-learn/templates/rules-unconditional.md +0 -0
- {mapify_cli-3.17.1 → mapify_cli-3.18.0}/src/mapify_cli/templates/skills/map-learn/templates/rules-with-paths.md +0 -0
- {mapify_cli-3.17.1 → mapify_cli-3.18.0}/src/mapify_cli/templates/skills/map-memory-now/SKILL.md +0 -0
- {mapify_cli-3.17.1 → mapify_cli-3.18.0}/src/mapify_cli/templates/skills/map-release/SKILL.md +0 -0
- {mapify_cli-3.17.1 → mapify_cli-3.18.0}/src/mapify_cli/templates/skills/map-resume/SKILL.md +0 -0
- {mapify_cli-3.17.1 → mapify_cli-3.18.0}/src/mapify_cli/templates/skills/map-resume/resume-reference.md +0 -0
- {mapify_cli-3.17.1 → mapify_cli-3.18.0}/src/mapify_cli/templates/skills/map-review/SKILL.md +0 -0
- {mapify_cli-3.17.1 → mapify_cli-3.18.0}/src/mapify_cli/templates/skills/map-review/review-reference.md +0 -0
- {mapify_cli-3.17.1 → mapify_cli-3.18.0}/src/mapify_cli/templates/skills/map-skill-eval/SKILL.md +0 -0
- {mapify_cli-3.17.1 → mapify_cli-3.18.0}/src/mapify_cli/templates/skills/map-so-search/SKILL.md +0 -0
- {mapify_cli-3.17.1 → mapify_cli-3.18.0}/src/mapify_cli/templates/skills/map-so-search/scripts/sofa_search.py +0 -0
- {mapify_cli-3.17.1 → mapify_cli-3.18.0}/src/mapify_cli/templates/skills/map-state/SKILL.md +0 -0
- {mapify_cli-3.17.1 → mapify_cli-3.18.0}/src/mapify_cli/templates/skills/map-state/scripts/check-complete.sh +0 -0
- {mapify_cli-3.17.1 → mapify_cli-3.18.0}/src/mapify_cli/templates/skills/map-state/scripts/get-plan-path.sh +0 -0
- {mapify_cli-3.17.1 → mapify_cli-3.18.0}/src/mapify_cli/templates/skills/map-state/scripts/init-session.sh +0 -0
- {mapify_cli-3.17.1 → mapify_cli-3.18.0}/src/mapify_cli/templates/skills/map-state/scripts/show-focus.sh +0 -0
- {mapify_cli-3.17.1 → mapify_cli-3.18.0}/src/mapify_cli/templates/skills/map-state/templates/findings.md +0 -0
- {mapify_cli-3.17.1 → mapify_cli-3.18.0}/src/mapify_cli/templates/skills/map-state/templates/iteration_history.md +0 -0
- {mapify_cli-3.17.1 → mapify_cli-3.18.0}/src/mapify_cli/templates/skills/map-state/templates/progress.md +0 -0
- {mapify_cli-3.17.1 → mapify_cli-3.18.0}/src/mapify_cli/templates/skills/map-state/templates/task_plan.md +0 -0
- {mapify_cli-3.17.1 → mapify_cli-3.18.0}/src/mapify_cli/templates/skills/map-task/SKILL.md +0 -0
- {mapify_cli-3.17.1 → mapify_cli-3.18.0}/src/mapify_cli/templates/skills/map-tdd/SKILL.md +0 -0
- {mapify_cli-3.17.1 → mapify_cli-3.18.0}/src/mapify_cli/templates/skills/map-tokenreport/SKILL.md +0 -0
- {mapify_cli-3.17.1 → mapify_cli-3.18.0}/src/mapify_cli/templates/skills/map-understand/SKILL.md +0 -0
- {mapify_cli-3.17.1 → mapify_cli-3.18.0}/src/mapify_cli/templates/skills/skill-rules.json +0 -0
- {mapify_cli-3.17.1 → mapify_cli-3.18.0}/src/mapify_cli/templates/workflow-rules.json +0 -0
- {mapify_cli-3.17.1 → mapify_cli-3.18.0}/src/mapify_cli/templates_src/CLAUDE.md.jinja +0 -0
- {mapify_cli-3.17.1 → mapify_cli-3.18.0}/src/mapify_cli/templates_src/agents/evaluator.md.jinja +0 -0
- {mapify_cli-3.17.1 → mapify_cli-3.18.0}/src/mapify_cli/templates_src/agents/final-verifier.md.jinja +0 -0
- {mapify_cli-3.17.1 → mapify_cli-3.18.0}/src/mapify_cli/templates_src/agents/predictor.md.jinja +0 -0
- {mapify_cli-3.17.1 → mapify_cli-3.18.0}/src/mapify_cli/templates_src/agents/reflector.md.jinja +0 -0
- {mapify_cli-3.17.1 → mapify_cli-3.18.0}/src/mapify_cli/templates_src/agents/research-agent.md.jinja +0 -0
- {mapify_cli-3.17.1 → mapify_cli-3.18.0}/src/mapify_cli/templates_src/agents/task-decomposer.md.jinja +0 -0
- {mapify_cli-3.17.1 → mapify_cli-3.18.0}/src/mapify_cli/templates_src/codex/AGENTS.md.jinja +0 -0
- {mapify_cli-3.17.1 → mapify_cli-3.18.0}/src/mapify_cli/templates_src/codex/agents/decomposer.toml.jinja +0 -0
- {mapify_cli-3.17.1 → mapify_cli-3.18.0}/src/mapify_cli/templates_src/codex/agents/monitor.toml.jinja +0 -0
- {mapify_cli-3.17.1 → mapify_cli-3.18.0}/src/mapify_cli/templates_src/codex/agents/researcher.toml.jinja +0 -0
- {mapify_cli-3.17.1 → mapify_cli-3.18.0}/src/mapify_cli/templates_src/codex/config.toml.jinja +0 -0
- {mapify_cli-3.17.1 → mapify_cli-3.18.0}/src/mapify_cli/templates_src/codex/hooks/workflow-gate.py.jinja +0 -0
- {mapify_cli-3.17.1 → mapify_cli-3.18.0}/src/mapify_cli/templates_src/codex/hooks.json.jinja +0 -0
- {mapify_cli-3.17.1 → mapify_cli-3.18.0}/src/mapify_cli/templates_src/codex/skills/map-check/SKILL.md.jinja +0 -0
- {mapify_cli-3.17.1 → mapify_cli-3.18.0}/src/mapify_cli/templates_src/codex/skills/map-explain/SKILL.md.jinja +0 -0
- {mapify_cli-3.17.1 → mapify_cli-3.18.0}/src/mapify_cli/templates_src/codex/skills/map-fast/SKILL.md.jinja +0 -0
- {mapify_cli-3.17.1 → mapify_cli-3.18.0}/src/mapify_cli/templates_src/codex/skills/map-understand/SKILL.md.jinja +0 -0
- {mapify_cli-3.17.1 → mapify_cli-3.18.0}/src/mapify_cli/templates_src/hooks/README.md.jinja +0 -0
- {mapify_cli-3.17.1 → mapify_cli-3.18.0}/src/mapify_cli/templates_src/hooks/context-meter.py.jinja +0 -0
- {mapify_cli-3.17.1 → mapify_cli-3.18.0}/src/mapify_cli/templates_src/hooks/detect-clarification-triggers.py.jinja +0 -0
- {mapify_cli-3.17.1 → mapify_cli-3.18.0}/src/mapify_cli/templates_src/hooks/end-of-turn.sh.jinja +0 -0
- {mapify_cli-3.17.1 → mapify_cli-3.18.0}/src/mapify_cli/templates_src/hooks/map-memory-capture.py.jinja +0 -0
- {mapify_cli-3.17.1 → mapify_cli-3.18.0}/src/mapify_cli/templates_src/hooks/map-memory-endmark.py.jinja +0 -0
- {mapify_cli-3.17.1 → mapify_cli-3.18.0}/src/mapify_cli/templates_src/hooks/map-memory-finalize.py.jinja +0 -0
- {mapify_cli-3.17.1 → mapify_cli-3.18.0}/src/mapify_cli/templates_src/hooks/map-memory-recall.py.jinja +0 -0
- {mapify_cli-3.17.1 → mapify_cli-3.18.0}/src/mapify_cli/templates_src/hooks/map-token-meter.py.jinja +0 -0
- {mapify_cli-3.17.1 → mapify_cli-3.18.0}/src/mapify_cli/templates_src/hooks/ralph-context-pruner.py.jinja +0 -0
- {mapify_cli-3.17.1 → mapify_cli-3.18.0}/src/mapify_cli/templates_src/hooks/ralph-iteration-logger.py.jinja +0 -0
- {mapify_cli-3.17.1 → mapify_cli-3.18.0}/src/mapify_cli/templates_src/hooks/safety-guardrails.py.jinja +0 -0
- {mapify_cli-3.17.1 → mapify_cli-3.18.0}/src/mapify_cli/templates_src/hooks/workflow-context-injector.py.jinja +0 -0
- {mapify_cli-3.17.1 → mapify_cli-3.18.0}/src/mapify_cli/templates_src/hooks/workflow-gate.py.jinja +0 -0
- {mapify_cli-3.17.1 → mapify_cli-3.18.0}/src/mapify_cli/templates_src/map/scripts/diagnostics.py.jinja +0 -0
- {mapify_cli-3.17.1 → mapify_cli-3.18.0}/src/mapify_cli/templates_src/map/scripts/map_utils.py.jinja +0 -0
- {mapify_cli-3.17.1 → mapify_cli-3.18.0}/src/mapify_cli/templates_src/map/scripts/sofa_client.py.jinja +0 -0
- {mapify_cli-3.17.1 → mapify_cli-3.18.0}/src/mapify_cli/templates_src/map/scripts/validate_spec_citations.py.jinja +0 -0
- {mapify_cli-3.17.1 → mapify_cli-3.18.0}/src/mapify_cli/templates_src/map/static-analysis/analyze.sh.jinja +0 -0
- {mapify_cli-3.17.1 → mapify_cli-3.18.0}/src/mapify_cli/templates_src/map/static-analysis/handlers/common.sh.jinja +0 -0
- {mapify_cli-3.17.1 → mapify_cli-3.18.0}/src/mapify_cli/templates_src/map/static-analysis/handlers/go.sh.jinja +0 -0
- {mapify_cli-3.17.1 → mapify_cli-3.18.0}/src/mapify_cli/templates_src/map/static-analysis/handlers/python.sh.jinja +0 -0
- {mapify_cli-3.17.1 → mapify_cli-3.18.0}/src/mapify_cli/templates_src/map/static-analysis/handlers/rust.sh.jinja +0 -0
- {mapify_cli-3.17.1 → mapify_cli-3.18.0}/src/mapify_cli/templates_src/map/static-analysis/handlers/typescript.sh.jinja +0 -0
- {mapify_cli-3.17.1 → mapify_cli-3.18.0}/src/mapify_cli/templates_src/ralph-loop-config.json.jinja +0 -0
- {mapify_cli-3.17.1 → mapify_cli-3.18.0}/src/mapify_cli/templates_src/references/bash-guidelines.md.jinja +0 -0
- {mapify_cli-3.17.1 → mapify_cli-3.18.0}/src/mapify_cli/templates_src/references/decomposition-examples.md.jinja +0 -0
- {mapify_cli-3.17.1 → mapify_cli-3.18.0}/src/mapify_cli/templates_src/references/escalation-matrix.md.jinja +0 -0
- {mapify_cli-3.17.1 → mapify_cli-3.18.0}/src/mapify_cli/templates_src/references/hook-patterns.md.jinja +0 -0
- {mapify_cli-3.17.1 → mapify_cli-3.18.0}/src/mapify_cli/templates_src/references/host-paths.md.jinja +0 -0
- {mapify_cli-3.17.1 → mapify_cli-3.18.0}/src/mapify_cli/templates_src/references/map-json-output-contracts.md.jinja +0 -0
- {mapify_cli-3.17.1 → mapify_cli-3.18.0}/src/mapify_cli/templates_src/references/map-output-examples.md.jinja +0 -0
- {mapify_cli-3.17.1 → mapify_cli-3.18.0}/src/mapify_cli/templates_src/references/map-xml-prompt-envelopes.md.jinja +0 -0
- {mapify_cli-3.17.1 → mapify_cli-3.18.0}/src/mapify_cli/templates_src/references/mcp-usage-examples.md.jinja +0 -0
- {mapify_cli-3.17.1 → mapify_cli-3.18.0}/src/mapify_cli/templates_src/references/step-state-schema.md.jinja +0 -0
- {mapify_cli-3.17.1 → mapify_cli-3.18.0}/src/mapify_cli/templates_src/references/workflow-state-schema.md.jinja +0 -0
- {mapify_cli-3.17.1 → mapify_cli-3.18.0}/src/mapify_cli/templates_src/rules/learned/README.md.jinja +0 -0
- {mapify_cli-3.17.1 → mapify_cli-3.18.0}/src/mapify_cli/templates_src/settings.json.jinja +0 -0
- {mapify_cli-3.17.1 → mapify_cli-3.18.0}/src/mapify_cli/templates_src/skills/README.md.jinja +0 -0
- {mapify_cli-3.17.1 → mapify_cli-3.18.0}/src/mapify_cli/templates_src/skills/map-check/SKILL.md.jinja +0 -0
- {mapify_cli-3.17.1 → mapify_cli-3.18.0}/src/mapify_cli/templates_src/skills/map-check/check-reference.md.jinja +0 -0
- {mapify_cli-3.17.1 → mapify_cli-3.18.0}/src/mapify_cli/templates_src/skills/map-debug/SKILL.md.jinja +0 -0
- {mapify_cli-3.17.1 → mapify_cli-3.18.0}/src/mapify_cli/templates_src/skills/map-explain/SKILL.md.jinja +0 -0
- {mapify_cli-3.17.1 → mapify_cli-3.18.0}/src/mapify_cli/templates_src/skills/map-fast/SKILL.md.jinja +0 -0
- {mapify_cli-3.17.1 → mapify_cli-3.18.0}/src/mapify_cli/templates_src/skills/map-learn/SKILL.md.jinja +0 -0
- {mapify_cli-3.17.1 → mapify_cli-3.18.0}/src/mapify_cli/templates_src/skills/map-learn/templates/example-rules.md.jinja +0 -0
- {mapify_cli-3.17.1 → mapify_cli-3.18.0}/src/mapify_cli/templates_src/skills/map-learn/templates/rules-unconditional.md.jinja +0 -0
- {mapify_cli-3.17.1 → mapify_cli-3.18.0}/src/mapify_cli/templates_src/skills/map-learn/templates/rules-with-paths.md.jinja +0 -0
- {mapify_cli-3.17.1 → mapify_cli-3.18.0}/src/mapify_cli/templates_src/skills/map-memory-now/SKILL.md.jinja +0 -0
- {mapify_cli-3.17.1 → mapify_cli-3.18.0}/src/mapify_cli/templates_src/skills/map-release/SKILL.md.jinja +0 -0
- {mapify_cli-3.17.1 → mapify_cli-3.18.0}/src/mapify_cli/templates_src/skills/map-resume/SKILL.md.jinja +0 -0
- {mapify_cli-3.17.1 → mapify_cli-3.18.0}/src/mapify_cli/templates_src/skills/map-resume/resume-reference.md.jinja +0 -0
- {mapify_cli-3.17.1 → mapify_cli-3.18.0}/src/mapify_cli/templates_src/skills/map-review/SKILL.md.jinja +0 -0
- {mapify_cli-3.17.1 → mapify_cli-3.18.0}/src/mapify_cli/templates_src/skills/map-review/review-reference.md.jinja +0 -0
- {mapify_cli-3.17.1 → mapify_cli-3.18.0}/src/mapify_cli/templates_src/skills/map-skill-eval/SKILL.md.jinja +0 -0
- {mapify_cli-3.17.1 → mapify_cli-3.18.0}/src/mapify_cli/templates_src/skills/map-so-search/SKILL.md.jinja +0 -0
- {mapify_cli-3.17.1 → mapify_cli-3.18.0}/src/mapify_cli/templates_src/skills/map-so-search/scripts/sofa_search.py.jinja +0 -0
- {mapify_cli-3.17.1 → mapify_cli-3.18.0}/src/mapify_cli/templates_src/skills/map-state/SKILL.md.jinja +0 -0
- {mapify_cli-3.17.1 → mapify_cli-3.18.0}/src/mapify_cli/templates_src/skills/map-state/scripts/check-complete.sh.jinja +0 -0
- {mapify_cli-3.17.1 → mapify_cli-3.18.0}/src/mapify_cli/templates_src/skills/map-state/scripts/get-plan-path.sh.jinja +0 -0
- {mapify_cli-3.17.1 → mapify_cli-3.18.0}/src/mapify_cli/templates_src/skills/map-state/scripts/init-session.sh.jinja +0 -0
- {mapify_cli-3.17.1 → mapify_cli-3.18.0}/src/mapify_cli/templates_src/skills/map-state/scripts/show-focus.sh.jinja +0 -0
- {mapify_cli-3.17.1 → mapify_cli-3.18.0}/src/mapify_cli/templates_src/skills/map-state/templates/findings.md.jinja +0 -0
- {mapify_cli-3.17.1 → mapify_cli-3.18.0}/src/mapify_cli/templates_src/skills/map-state/templates/iteration_history.md.jinja +0 -0
- {mapify_cli-3.17.1 → mapify_cli-3.18.0}/src/mapify_cli/templates_src/skills/map-state/templates/progress.md.jinja +0 -0
- {mapify_cli-3.17.1 → mapify_cli-3.18.0}/src/mapify_cli/templates_src/skills/map-state/templates/task_plan.md.jinja +0 -0
- {mapify_cli-3.17.1 → mapify_cli-3.18.0}/src/mapify_cli/templates_src/skills/map-task/SKILL.md.jinja +0 -0
- {mapify_cli-3.17.1 → mapify_cli-3.18.0}/src/mapify_cli/templates_src/skills/map-tdd/SKILL.md.jinja +0 -0
- {mapify_cli-3.17.1 → mapify_cli-3.18.0}/src/mapify_cli/templates_src/skills/map-tokenreport/SKILL.md.jinja +0 -0
- {mapify_cli-3.17.1 → mapify_cli-3.18.0}/src/mapify_cli/templates_src/skills/map-understand/SKILL.md.jinja +0 -0
- {mapify_cli-3.17.1 → mapify_cli-3.18.0}/src/mapify_cli/templates_src/skills/skill-rules.json.jinja +0 -0
- {mapify_cli-3.17.1 → mapify_cli-3.18.0}/src/mapify_cli/templates_src/workflow-rules.json.jinja +0 -0
- {mapify_cli-3.17.1 → mapify_cli-3.18.0}/src/mapify_cli/token_budget.py +0 -0
- {mapify_cli-3.17.1 → mapify_cli-3.18.0}/src/mapify_cli/tools/__init__.py +0 -0
- {mapify_cli-3.17.1 → mapify_cli-3.18.0}/src/mapify_cli/tools/validate_dependencies.py +0 -0
- {mapify_cli-3.17.1 → mapify_cli-3.18.0}/src/mapify_cli/verification_recorder.py +0 -0
- {mapify_cli-3.17.1 → mapify_cli-3.18.0}/src/mapify_cli/workflow_finalizer.py +0 -0
- {mapify_cli-3.17.1 → mapify_cli-3.18.0}/src/mapify_cli/workflow_logger.py +0 -0
- {mapify_cli-3.17.1 → mapify_cli-3.18.0}/src/mapify_cli/workflow_state.py +0 -0
- {mapify_cli-3.17.1 → mapify_cli-3.18.0}/tests/__init__.py +0 -0
- {mapify_cli-3.17.1 → mapify_cli-3.18.0}/tests/conftest.py +0 -0
- {mapify_cli-3.17.1 → mapify_cli-3.18.0}/tests/fixtures/claude/escalation-matrix.md +0 -0
- {mapify_cli-3.17.1 → mapify_cli-3.18.0}/tests/fixtures/codex/config.toml +0 -0
- {mapify_cli-3.17.1 → mapify_cli-3.18.0}/tests/hooks/test_detect_clarification_triggers.py +0 -0
- {mapify_cli-3.17.1 → mapify_cli-3.18.0}/tests/hooks/test_end_of_turn.py +0 -0
- {mapify_cli-3.17.1 → mapify_cli-3.18.0}/tests/hooks/test_hook_inventory_smoke.py +0 -0
- {mapify_cli-3.17.1 → mapify_cli-3.18.0}/tests/hooks/test_safety_guardrails.py +0 -0
- {mapify_cli-3.17.1 → mapify_cli-3.18.0}/tests/integration/__init__.py +0 -0
- {mapify_cli-3.17.1 → mapify_cli-3.18.0}/tests/integration/fixtures/blueprint.json +0 -0
- {mapify_cli-3.17.1 → mapify_cli-3.18.0}/tests/integration/fixtures/code_review.md +0 -0
- {mapify_cli-3.17.1 → mapify_cli-3.18.0}/tests/integration/fixtures/plan_handoff.json +0 -0
- {mapify_cli-3.17.1 → mapify_cli-3.18.0}/tests/integration/fixtures/spec.md +0 -0
- {mapify_cli-3.17.1 → mapify_cli-3.18.0}/tests/integration/fixtures/step_state_initialized.json +0 -0
- {mapify_cli-3.17.1 → mapify_cli-3.18.0}/tests/integration/fixtures/step_state_plan_complete.json +0 -0
- {mapify_cli-3.17.1 → mapify_cli-3.18.0}/tests/integration/fixtures/task_plan.md +0 -0
- {mapify_cli-3.17.1 → mapify_cli-3.18.0}/tests/integration/fixtures/verification_summary.md +0 -0
- {mapify_cli-3.17.1 → mapify_cli-3.18.0}/tests/integration/test_e2e_artifact_contracts.py +0 -0
- {mapify_cli-3.17.1 → mapify_cli-3.18.0}/tests/integration/test_e2e_claude_sdk.py +0 -0
- {mapify_cli-3.17.1 → mapify_cli-3.18.0}/tests/skills_eval/fixtures/README.md +0 -0
- {mapify_cli-3.17.1 → mapify_cli-3.18.0}/tests/skills_eval/fixtures/map_check_optimize_eval_set.json +0 -0
- {mapify_cli-3.17.1 → mapify_cli-3.18.0}/tests/skills_eval/fixtures/map_debug_eval_set.json +0 -0
- {mapify_cli-3.17.1 → mapify_cli-3.18.0}/tests/skills_eval/fixtures/map_debug_optimize_eval_set.json +0 -0
- {mapify_cli-3.17.1 → mapify_cli-3.18.0}/tests/skills_eval/fixtures/map_efficient_optimize_eval_set.json +0 -0
- {mapify_cli-3.17.1 → mapify_cli-3.18.0}/tests/skills_eval/fixtures/map_explain_optimize_eval_set.json +0 -0
- {mapify_cli-3.17.1 → mapify_cli-3.18.0}/tests/skills_eval/fixtures/map_fast_optimize_eval_set.json +0 -0
- {mapify_cli-3.17.1 → mapify_cli-3.18.0}/tests/skills_eval/fixtures/map_learn_optimize_eval_set.json +0 -0
- {mapify_cli-3.17.1 → mapify_cli-3.18.0}/tests/skills_eval/fixtures/map_memory_now_optimize_eval_set.json +0 -0
- {mapify_cli-3.17.1 → mapify_cli-3.18.0}/tests/skills_eval/fixtures/map_plan_optimize_eval_set.json +0 -0
- {mapify_cli-3.17.1 → mapify_cli-3.18.0}/tests/skills_eval/fixtures/map_release_optimize_eval_set.json +0 -0
- {mapify_cli-3.17.1 → mapify_cli-3.18.0}/tests/skills_eval/fixtures/map_resume_optimize_eval_set.json +0 -0
- {mapify_cli-3.17.1 → mapify_cli-3.18.0}/tests/skills_eval/fixtures/map_review_optimize_eval_set.json +0 -0
- {mapify_cli-3.17.1 → mapify_cli-3.18.0}/tests/skills_eval/fixtures/map_skill_eval_optimize_eval_set.json +0 -0
- {mapify_cli-3.17.1 → mapify_cli-3.18.0}/tests/skills_eval/fixtures/map_state_optimize_eval_set.json +0 -0
- {mapify_cli-3.17.1 → mapify_cli-3.18.0}/tests/skills_eval/fixtures/map_task_optimize_eval_set.json +0 -0
- {mapify_cli-3.17.1 → mapify_cli-3.18.0}/tests/skills_eval/fixtures/map_tdd_optimize_eval_set.json +0 -0
- {mapify_cli-3.17.1 → mapify_cli-3.18.0}/tests/skills_eval/fixtures/map_tokenreport_optimize_eval_set.json +0 -0
- {mapify_cli-3.17.1 → mapify_cli-3.18.0}/tests/skills_eval/fixtures/whole_skill/map_task_blocker/manifest.json +0 -0
- {mapify_cli-3.17.1 → mapify_cli-3.18.0}/tests/skills_eval/fixtures/whole_skill/map_task_blocker/repo/.map/main/blueprint.json +0 -0
- {mapify_cli-3.17.1 → mapify_cli-3.18.0}/tests/skills_eval/fixtures/whole_skill/map_task_blocker/repo/.map/main/task_plan_main.md +0 -0
- {mapify_cli-3.17.1 → mapify_cli-3.18.0}/tests/skills_eval/fixtures/whole_skill/map_task_blocker/repo/src/__init__.py +0 -0
- {mapify_cli-3.17.1 → mapify_cli-3.18.0}/tests/skills_eval/fixtures/whole_skill/map_task_blocker/repo/src/utils.py +0 -0
- {mapify_cli-3.17.1 → mapify_cli-3.18.0}/tests/skills_eval/fixtures/whole_skill/map_task_blocker/repo/tests/test_compute.py +0 -0
- {mapify_cli-3.17.1 → mapify_cli-3.18.0}/tests/skills_eval/fixtures/whole_skill/map_task_calc/hidden/test_calc_full.py +0 -0
- {mapify_cli-3.17.1 → mapify_cli-3.18.0}/tests/skills_eval/fixtures/whole_skill/map_task_calc/manifest.json +0 -0
- {mapify_cli-3.17.1 → mapify_cli-3.18.0}/tests/skills_eval/fixtures/whole_skill/map_task_calc/repo/.map/main/blueprint.json +0 -0
- {mapify_cli-3.17.1 → mapify_cli-3.18.0}/tests/skills_eval/fixtures/whole_skill/map_task_calc/repo/.map/main/task_plan_main.md +0 -0
- {mapify_cli-3.17.1 → mapify_cli-3.18.0}/tests/skills_eval/fixtures/whole_skill/map_task_calc/repo/src/__init__.py +0 -0
- {mapify_cli-3.17.1 → mapify_cli-3.18.0}/tests/skills_eval/fixtures/whole_skill/map_task_calc/repo/src/calc.py +0 -0
- {mapify_cli-3.17.1 → mapify_cli-3.18.0}/tests/skills_eval/fixtures/whole_skill/map_task_calc/repo/tests/test_calc_basic.py +0 -0
- {mapify_cli-3.17.1 → mapify_cli-3.18.0}/tests/skills_eval/fixtures/whole_skill/map_task_calc_vague/hidden/test_calc_full.py +0 -0
- {mapify_cli-3.17.1 → mapify_cli-3.18.0}/tests/skills_eval/fixtures/whole_skill/map_task_calc_vague/manifest.json +0 -0
- {mapify_cli-3.17.1 → mapify_cli-3.18.0}/tests/skills_eval/fixtures/whole_skill/map_task_calc_vague/repo/.map/main/blueprint.json +0 -0
- {mapify_cli-3.17.1 → mapify_cli-3.18.0}/tests/skills_eval/fixtures/whole_skill/map_task_calc_vague/repo/.map/main/task_plan_main.md +0 -0
- {mapify_cli-3.17.1 → mapify_cli-3.18.0}/tests/skills_eval/fixtures/whole_skill/map_task_calc_vague/repo/src/__init__.py +0 -0
- {mapify_cli-3.17.1 → mapify_cli-3.18.0}/tests/skills_eval/fixtures/whole_skill/map_task_calc_vague/repo/src/calc.py +0 -0
- {mapify_cli-3.17.1 → mapify_cli-3.18.0}/tests/skills_eval/fixtures/whole_skill/map_task_calc_vague/repo/tests/test_calc_basic.py +0 -0
- {mapify_cli-3.17.1 → mapify_cli-3.18.0}/tests/skills_eval/fixtures/whole_skill/map_task_scope_pressure/manifest.json +0 -0
- {mapify_cli-3.17.1 → mapify_cli-3.18.0}/tests/skills_eval/fixtures/whole_skill/map_task_scope_pressure/repo/.map/main/blueprint.json +0 -0
- {mapify_cli-3.17.1 → mapify_cli-3.18.0}/tests/skills_eval/fixtures/whole_skill/map_task_scope_pressure/repo/.map/main/task_plan_main.md +0 -0
- {mapify_cli-3.17.1 → mapify_cli-3.18.0}/tests/skills_eval/fixtures/whole_skill/map_task_scope_pressure/repo/src/__init__.py +0 -0
- {mapify_cli-3.17.1 → mapify_cli-3.18.0}/tests/skills_eval/fixtures/whole_skill/map_task_scope_pressure/repo/src/config.py +0 -0
- {mapify_cli-3.17.1 → mapify_cli-3.18.0}/tests/skills_eval/fixtures/whole_skill/map_task_scope_pressure/repo/src/utils.py +0 -0
- {mapify_cli-3.17.1 → mapify_cli-3.18.0}/tests/skills_eval/fixtures/whole_skill/map_task_scope_pressure/repo/tests/test_price.py +0 -0
- {mapify_cli-3.17.1 → mapify_cli-3.18.0}/tests/skills_eval/fixtures/whole_skill/map_task_scope_trap/manifest.json +0 -0
- {mapify_cli-3.17.1 → mapify_cli-3.18.0}/tests/skills_eval/fixtures/whole_skill/map_task_scope_trap/repo/.map/main/blueprint.json +0 -0
- {mapify_cli-3.17.1 → mapify_cli-3.18.0}/tests/skills_eval/fixtures/whole_skill/map_task_scope_trap/repo/.map/main/task_plan_main.md +0 -0
- {mapify_cli-3.17.1 → mapify_cli-3.18.0}/tests/skills_eval/fixtures/whole_skill/map_task_scope_trap/repo/src/__init__.py +0 -0
- {mapify_cli-3.17.1 → mapify_cli-3.18.0}/tests/skills_eval/fixtures/whole_skill/map_task_scope_trap/repo/src/config.py +0 -0
- {mapify_cli-3.17.1 → mapify_cli-3.18.0}/tests/skills_eval/fixtures/whole_skill/map_task_scope_trap/repo/src/utils.py +0 -0
- {mapify_cli-3.17.1 → mapify_cli-3.18.0}/tests/skills_eval/fixtures/whole_skill/map_task_scope_trap/repo/tests/test_utils.py +0 -0
- {mapify_cli-3.17.1 → mapify_cli-3.18.0}/tests/skills_eval/fixtures/whole_skill/map_task_semver/manifest.json +0 -0
- {mapify_cli-3.17.1 → mapify_cli-3.18.0}/tests/skills_eval/fixtures/whole_skill/map_task_semver/repo/.map/main/blueprint.json +0 -0
- {mapify_cli-3.17.1 → mapify_cli-3.18.0}/tests/skills_eval/fixtures/whole_skill/map_task_semver/repo/.map/main/task_plan_main.md +0 -0
- {mapify_cli-3.17.1 → mapify_cli-3.18.0}/tests/skills_eval/fixtures/whole_skill/map_task_semver/repo/src/__init__.py +0 -0
- {mapify_cli-3.17.1 → mapify_cli-3.18.0}/tests/skills_eval/fixtures/whole_skill/map_task_semver/repo/src/semver.py +0 -0
- {mapify_cli-3.17.1 → mapify_cli-3.18.0}/tests/skills_eval/fixtures/whole_skill/map_task_semver/repo/tests/test_semver.py +0 -0
- {mapify_cli-3.17.1 → mapify_cli-3.18.0}/tests/skills_eval/fixtures/whole_skill/map_task_semver_vague/hidden/test_semver_full.py +0 -0
- {mapify_cli-3.17.1 → mapify_cli-3.18.0}/tests/skills_eval/fixtures/whole_skill/map_task_semver_vague/manifest.json +0 -0
- {mapify_cli-3.17.1 → mapify_cli-3.18.0}/tests/skills_eval/fixtures/whole_skill/map_task_semver_vague/repo/.map/main/blueprint.json +0 -0
- {mapify_cli-3.17.1 → mapify_cli-3.18.0}/tests/skills_eval/fixtures/whole_skill/map_task_semver_vague/repo/.map/main/task_plan_main.md +0 -0
- {mapify_cli-3.17.1 → mapify_cli-3.18.0}/tests/skills_eval/fixtures/whole_skill/map_task_semver_vague/repo/src/__init__.py +0 -0
- {mapify_cli-3.17.1 → mapify_cli-3.18.0}/tests/skills_eval/fixtures/whole_skill/map_task_semver_vague/repo/src/semver.py +0 -0
- {mapify_cli-3.17.1 → mapify_cli-3.18.0}/tests/skills_eval/fixtures/whole_skill/map_task_semver_vague/repo/tests/test_semver_basic.py +0 -0
- {mapify_cli-3.17.1 → mapify_cli-3.18.0}/tests/skills_eval/fixtures/whole_skill/map_task_semver_weakgate/hidden/test_semver_full.py +0 -0
- {mapify_cli-3.17.1 → mapify_cli-3.18.0}/tests/skills_eval/fixtures/whole_skill/map_task_semver_weakgate/manifest.json +0 -0
- {mapify_cli-3.17.1 → mapify_cli-3.18.0}/tests/skills_eval/fixtures/whole_skill/map_task_semver_weakgate/repo/.map/main/blueprint.json +0 -0
- {mapify_cli-3.17.1 → mapify_cli-3.18.0}/tests/skills_eval/fixtures/whole_skill/map_task_semver_weakgate/repo/.map/main/task_plan_main.md +0 -0
- {mapify_cli-3.17.1 → mapify_cli-3.18.0}/tests/skills_eval/fixtures/whole_skill/map_task_semver_weakgate/repo/src/__init__.py +0 -0
- {mapify_cli-3.17.1 → mapify_cli-3.18.0}/tests/skills_eval/fixtures/whole_skill/map_task_semver_weakgate/repo/src/semver.py +0 -0
- {mapify_cli-3.17.1 → mapify_cli-3.18.0}/tests/skills_eval/fixtures/whole_skill/map_task_semver_weakgate/repo/tests/test_semver_basic.py +0 -0
- {mapify_cli-3.17.1 → mapify_cli-3.18.0}/tests/skills_eval/whole_skill/spike_runner.py +0 -0
- {mapify_cli-3.17.1 → mapify_cli-3.18.0}/tests/test_agent_cli_correctness.py +0 -0
- {mapify_cli-3.17.1 → mapify_cli-3.18.0}/tests/test_agent_frontmatter.py +0 -0
- {mapify_cli-3.17.1 → mapify_cli-3.18.0}/tests/test_bump_version.py +0 -0
- {mapify_cli-3.17.1 → mapify_cli-3.18.0}/tests/test_dependency_graph.py +0 -0
- {mapify_cli-3.17.1 → mapify_cli-3.18.0}/tests/test_diagnostics.py +0 -0
- {mapify_cli-3.17.1 → mapify_cli-3.18.0}/tests/test_digest_schema.py +0 -0
- {mapify_cli-3.17.1 → mapify_cli-3.18.0}/tests/test_file_copier.py +0 -0
- {mapify_cli-3.17.1 → mapify_cli-3.18.0}/tests/test_hook_patterns.py +0 -0
- {mapify_cli-3.17.1 → mapify_cli-3.18.0}/tests/test_init_import_graph.py +0 -0
- {mapify_cli-3.17.1 → mapify_cli-3.18.0}/tests/test_intent_detector.py +0 -0
- {mapify_cli-3.17.1 → mapify_cli-3.18.0}/tests/test_inv1_no_anthropic_optimize.py +0 -0
- {mapify_cli-3.17.1 → mapify_cli-3.18.0}/tests/test_jinja2_dep.py +0 -0
- {mapify_cli-3.17.1 → mapify_cli-3.18.0}/tests/test_locking.py +0 -0
- {mapify_cli-3.17.1 → mapify_cli-3.18.0}/tests/test_managed_file_copier.py +0 -0
- {mapify_cli-3.17.1 → mapify_cli-3.18.0}/tests/test_map_orchestrator.py +0 -0
- {mapify_cli-3.17.1 → mapify_cli-3.18.0}/tests/test_map_token_meter.py +0 -0
- {mapify_cli-3.17.1 → mapify_cli-3.18.0}/tests/test_map_utils_sanitize.py +0 -0
- {mapify_cli-3.17.1 → mapify_cli-3.18.0}/tests/test_memory_capture.py +0 -0
- {mapify_cli-3.17.1 → mapify_cli-3.18.0}/tests/test_memory_finalize.py +0 -0
- {mapify_cli-3.17.1 → mapify_cli-3.18.0}/tests/test_memory_integration.py +0 -0
- {mapify_cli-3.17.1 → mapify_cli-3.18.0}/tests/test_memory_recall.py +0 -0
- {mapify_cli-3.17.1 → mapify_cli-3.18.0}/tests/test_memory_review_fixes.py +0 -0
- {mapify_cli-3.17.1 → mapify_cli-3.18.0}/tests/test_minimality_report.py +0 -0
- {mapify_cli-3.17.1 → mapify_cli-3.18.0}/tests/test_post_compact_context.py +0 -0
- {mapify_cli-3.17.1 → mapify_cli-3.18.0}/tests/test_ralph_hooks.py +0 -0
- {mapify_cli-3.17.1 → mapify_cli-3.18.0}/tests/test_ralph_state.py +0 -0
- {mapify_cli-3.17.1 → mapify_cli-3.18.0}/tests/test_repo_insight.py +0 -0
- {mapify_cli-3.17.1 → mapify_cli-3.18.0}/tests/test_research_eval.py +0 -0
- {mapify_cli-3.17.1 → mapify_cli-3.18.0}/tests/test_schemas.py +0 -0
- {mapify_cli-3.17.1 → mapify_cli-3.18.0}/tests/test_skill_ir.py +0 -0
- {mapify_cli-3.17.1 → mapify_cli-3.18.0}/tests/test_skills_consistency.py +0 -0
- {mapify_cli-3.17.1 → mapify_cli-3.18.0}/tests/test_skills_eval_aggregator.py +0 -0
- {mapify_cli-3.17.1 → mapify_cli-3.18.0}/tests/test_skills_eval_apply.py +0 -0
- {mapify_cli-3.17.1 → mapify_cli-3.18.0}/tests/test_skills_eval_cli_optimize.py +0 -0
- {mapify_cli-3.17.1 → mapify_cli-3.18.0}/tests/test_skills_eval_dispatcher_env.py +0 -0
- {mapify_cli-3.17.1 → mapify_cli-3.18.0}/tests/test_skills_eval_dispatcher_timeout.py +0 -0
- {mapify_cli-3.17.1 → mapify_cli-3.18.0}/tests/test_skills_eval_fixtures.py +0 -0
- {mapify_cli-3.17.1 → mapify_cli-3.18.0}/tests/test_skills_eval_optimizer.py +0 -0
- {mapify_cli-3.17.1 → mapify_cli-3.18.0}/tests/test_skills_eval_optimizer_isolation.py +0 -0
- {mapify_cli-3.17.1 → mapify_cli-3.18.0}/tests/test_skills_eval_proposer.py +0 -0
- {mapify_cli-3.17.1 → mapify_cli-3.18.0}/tests/test_skills_eval_runner.py +0 -0
- {mapify_cli-3.17.1 → mapify_cli-3.18.0}/tests/test_skills_eval_schema.py +0 -0
- {mapify_cli-3.17.1 → mapify_cli-3.18.0}/tests/test_skills_eval_viewer.py +0 -0
- {mapify_cli-3.17.1 → mapify_cli-3.18.0}/tests/test_sofa_client.py +0 -0
- {mapify_cli-3.17.1 → mapify_cli-3.18.0}/tests/test_sofa_search.py +0 -0
- {mapify_cli-3.17.1 → mapify_cli-3.18.0}/tests/test_template_render.py +0 -0
- {mapify_cli-3.17.1 → mapify_cli-3.18.0}/tests/test_token_budget.py +0 -0
- {mapify_cli-3.17.1 → mapify_cli-3.18.0}/tests/test_validate_dependencies.py +0 -0
- {mapify_cli-3.17.1 → mapify_cli-3.18.0}/tests/test_validate_spec_citations.py +0 -0
- {mapify_cli-3.17.1 → mapify_cli-3.18.0}/tests/test_verification_recorder.py +0 -0
- {mapify_cli-3.17.1 → mapify_cli-3.18.0}/tests/test_workflow_context_injector.py +0 -0
- {mapify_cli-3.17.1 → mapify_cli-3.18.0}/tests/test_workflow_finalizer.py +0 -0
- {mapify_cli-3.17.1 → mapify_cli-3.18.0}/tests/test_workflow_gate.py +0 -0
- {mapify_cli-3.17.1 → mapify_cli-3.18.0}/tests/test_workflow_logger.py +0 -0
- {mapify_cli-3.17.1 → mapify_cli-3.18.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.18.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
|
|
@@ -11,6 +11,7 @@ Requires-Python: >=3.11
|
|
|
11
11
|
Requires-Dist: httpx>=0.25.0
|
|
12
12
|
Requires-Dist: jinja2<4,>=3.1
|
|
13
13
|
Requires-Dist: platformdirs>=4.0.0
|
|
14
|
+
Requires-Dist: pyyaml>=6.0.0
|
|
14
15
|
Requires-Dist: questionary>=2.0.0
|
|
15
16
|
Requires-Dist: readchar>=4.0.0
|
|
16
17
|
Requires-Dist: rich>=13.0.0
|
|
@@ -249,10 +250,10 @@ MAP is inspired by the [MAP cognitive architecture](https://github.com/Shanka123
|
|
|
249
250
|
|
|
250
251
|
```yaml
|
|
251
252
|
# .map/config.yaml
|
|
252
|
-
minimality: lite #
|
|
253
|
+
minimality: lite # default for ALL projects incl. keyless configs (#183); set 'off' to opt out
|
|
253
254
|
```
|
|
254
255
|
|
|
255
|
-
Allowed values: `off`, `lite`, `full`, `ultra`. Phase
|
|
256
|
+
Allowed values: `off`, `lite`, `full`, `ultra`. The global default is `lite` (Phase 3 flip, #183 — keyless configs included; set `off` to opt out). `lite` is conservative: 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 still inspect local rollout telemetry with `mapify minimality-report --json`, which compares complete `off` and opt-in run-health cohorts, reports sample gaps and cohort branch names, lists next telemetry actions, and emits a candidate-only `manual_review_gate` with opt-in branches plus a clarity/underscope checklist.
|
|
256
257
|
|
|
257
258
|
**Context-compression policy** (controls the `/compact` nudge; default `never` — opt-in):
|
|
258
259
|
|
|
@@ -263,7 +264,7 @@ mapify init . --compression aggressive # nudge at 0.4 x threshold
|
|
|
263
264
|
mapify init . --compression-threshold 250000 # Opus 1M / 50+ subtask plans
|
|
264
265
|
```
|
|
265
266
|
|
|
266
|
-
Actor and reviewer prompts always carry the full bundled context — context-block truncation was removed. If the conversation grows beyond your model's window, opt into `/compact` via `--compression auto` or trigger it manually. See [docs/USAGE.md#context-budget-policy](docs/USAGE.md).
|
|
267
|
+
Actor and reviewer prompts always carry the full bundled context — context-block truncation was removed. If the conversation grows beyond your model's window, opt into `/compact` via `--compression auto` or trigger it manually. When a policy other than `never` is active, MAP also offloads large tool outputs (grep/test/file-read results) to `.map/<branch>/compacted/` before `/compact` drops them, so a dropped output is re-read from its sidecar instead of re-running broad discovery (these sidecars can hold secrets — they are `0o600` and self-ignored from git; never push `.map/`). See [docs/USAGE.md#context-budget-policy](docs/USAGE.md).
|
|
267
268
|
|
|
268
269
|
**Stack Overflow for Agents (SOFA)** read-only prior-art search — **off by default**, no network or credentials unless you enable it:
|
|
269
270
|
|
|
@@ -205,10 +205,10 @@ MAP is inspired by the [MAP cognitive architecture](https://github.com/Shanka123
|
|
|
205
205
|
|
|
206
206
|
```yaml
|
|
207
207
|
# .map/config.yaml
|
|
208
|
-
minimality: lite #
|
|
208
|
+
minimality: lite # default for ALL projects incl. keyless configs (#183); set 'off' to opt out
|
|
209
209
|
```
|
|
210
210
|
|
|
211
|
-
Allowed values: `off`, `lite`, `full`, `ultra`. Phase
|
|
211
|
+
Allowed values: `off`, `lite`, `full`, `ultra`. The global default is `lite` (Phase 3 flip, #183 — keyless configs included; set `off` to opt out). `lite` is conservative: 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 still inspect local rollout telemetry with `mapify minimality-report --json`, which compares complete `off` and opt-in run-health cohorts, reports sample gaps and cohort branch names, lists next telemetry actions, and emits a candidate-only `manual_review_gate` with opt-in branches plus a clarity/underscope checklist.
|
|
212
212
|
|
|
213
213
|
**Context-compression policy** (controls the `/compact` nudge; default `never` — opt-in):
|
|
214
214
|
|
|
@@ -219,7 +219,7 @@ mapify init . --compression aggressive # nudge at 0.4 x threshold
|
|
|
219
219
|
mapify init . --compression-threshold 250000 # Opus 1M / 50+ subtask plans
|
|
220
220
|
```
|
|
221
221
|
|
|
222
|
-
Actor and reviewer prompts always carry the full bundled context — context-block truncation was removed. If the conversation grows beyond your model's window, opt into `/compact` via `--compression auto` or trigger it manually. See [docs/USAGE.md#context-budget-policy](docs/USAGE.md).
|
|
222
|
+
Actor and reviewer prompts always carry the full bundled context — context-block truncation was removed. If the conversation grows beyond your model's window, opt into `/compact` via `--compression auto` or trigger it manually. When a policy other than `never` is active, MAP also offloads large tool outputs (grep/test/file-read results) to `.map/<branch>/compacted/` before `/compact` drops them, so a dropped output is re-read from its sidecar instead of re-running broad discovery (these sidecars can hold secrets — they are `0o600` and self-ignored from git; never push `.map/`). See [docs/USAGE.md#context-budget-policy](docs/USAGE.md).
|
|
223
223
|
|
|
224
224
|
**Stack Overflow for Agents (SOFA)** read-only prior-art search — **off by default**, no network or credentials unless you enable it:
|
|
225
225
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
[project]
|
|
2
2
|
name = "mapify-cli"
|
|
3
|
-
version = "3.
|
|
3
|
+
version = "3.18.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"
|
|
@@ -12,7 +12,13 @@ dependencies = [
|
|
|
12
12
|
"jinja2>=3.1,<4",
|
|
13
13
|
"platformdirs>=4.0.0",
|
|
14
14
|
"readchar>=4.0.0",
|
|
15
|
-
"questionary>=2.0.0"
|
|
15
|
+
"questionary>=2.0.0",
|
|
16
|
+
# mapify is a config-driven CLI: project_config.py loads .map/config.yaml via
|
|
17
|
+
# PyYAML on every config-dependent path (minimality-report, init overrides).
|
|
18
|
+
# It MUST be a hard runtime dep — a normal install (uv tool / pipx / pip
|
|
19
|
+
# without dev/test extras) otherwise ships without yaml, hits ImportError,
|
|
20
|
+
# and silently falls back to default config, ignoring the user's settings (#245).
|
|
21
|
+
"pyyaml>=6.0.0"
|
|
16
22
|
]
|
|
17
23
|
|
|
18
24
|
[project.optional-dependencies]
|
|
@@ -23,8 +23,6 @@ def create_mcp_config(project_path: Path, mcp_servers: List[str]) -> None:
|
|
|
23
23
|
"evaluator": [],
|
|
24
24
|
"reflector": [],
|
|
25
25
|
"documentation-reviewer": [],
|
|
26
|
-
"debate-arbiter": [],
|
|
27
|
-
"synthesizer": [],
|
|
28
26
|
"research-agent": [],
|
|
29
27
|
"final-verifier": [],
|
|
30
28
|
},
|
|
@@ -62,7 +60,6 @@ def create_mcp_config(project_path: Path, mcp_servers: List[str]) -> None:
|
|
|
62
60
|
"monitor",
|
|
63
61
|
"evaluator",
|
|
64
62
|
"reflector",
|
|
65
|
-
"debate-arbiter",
|
|
66
63
|
]:
|
|
67
64
|
if agent in config["agent_mcp_mappings"]:
|
|
68
65
|
config["agent_mcp_mappings"][agent].append("sequential-thinking")
|
|
@@ -16,6 +16,7 @@ except ImportError:
|
|
|
16
16
|
logger = logging.getLogger(__name__)
|
|
17
17
|
|
|
18
18
|
VALID_MINIMALITY = frozenset({"off", "lite", "full", "ultra"})
|
|
19
|
+
VALID_PROMPT_LAYERING = frozenset({"docs_first", "stable_first"})
|
|
19
20
|
|
|
20
21
|
|
|
21
22
|
@dataclass
|
|
@@ -79,9 +80,22 @@ class MapConfig:
|
|
|
79
80
|
# Language preference for agent responses
|
|
80
81
|
language: str = ""
|
|
81
82
|
|
|
82
|
-
# Minimality doctrine intensity.
|
|
83
|
-
#
|
|
84
|
-
|
|
83
|
+
# Minimality doctrine intensity. Phase 3 (#183) flipped the global default
|
|
84
|
+
# off -> lite after the promotion gate (`mapify minimality-report`) reached
|
|
85
|
+
# `candidate` and the manual review gate passed: projects with no config key
|
|
86
|
+
# now default to `lite` (advisory complexity-lens; no behavior/verdict gating).
|
|
87
|
+
minimality: str = "lite"
|
|
88
|
+
|
|
89
|
+
# Agent-prompt layering for repeated same-workflow dispatches (#231).
|
|
90
|
+
# "docs_first" (default) = variable <documents> first, stable contract
|
|
91
|
+
# last — optimized for recency / "lost-in-the-middle".
|
|
92
|
+
# "stable_first" = stable contract first, variable <documents> last — a
|
|
93
|
+
# byte-identical prefix across same-role dispatches. Resolved
|
|
94
|
+
# cache-neutral at the Claude Code Task layer (the harness owns
|
|
95
|
+
# cache_control and the seam is mid-block), but NOT a behavior
|
|
96
|
+
# no-op: it changes token order / attention. Kept opt-in; never
|
|
97
|
+
# remapped to docs_first. See docs/ARCHITECTURE.md (#231).
|
|
98
|
+
prompt_layering: str = "docs_first"
|
|
85
99
|
|
|
86
100
|
# Context compression policy (see docs/context-compression-plan.md)
|
|
87
101
|
# "never" = never inject /compact nudge (default — user opts in by
|
|
@@ -167,6 +181,15 @@ def load_map_config(project_path: Path) -> MapConfig:
|
|
|
167
181
|
if isinstance(data, dict) and "sofa.enabled" in data and "sofa_enabled" not in data:
|
|
168
182
|
data["sofa_enabled"] = data.pop("sofa.enabled")
|
|
169
183
|
|
|
184
|
+
# YAML 1.1 parses bare ``off``/``on`` as booleans, so ``minimality: off``
|
|
185
|
+
# — the documented opt-out from the lite default (#183) — arrives as bool
|
|
186
|
+
# ``False``. Coerce it back to the string level before the type-check loop;
|
|
187
|
+
# otherwise the str field rejects the bool and silently falls back to the
|
|
188
|
+
# lite default, breaking opt-out. ``False`` -> ``"off"`` (valid opt-out);
|
|
189
|
+
# ``True`` -> ``"on"`` (not a real level -> rejected -> lite fallback).
|
|
190
|
+
if isinstance(data, dict) and isinstance(data.get("minimality"), bool):
|
|
191
|
+
data["minimality"] = "off" if data["minimality"] is False else "on"
|
|
192
|
+
|
|
170
193
|
# Map YAML keys to MapConfig fields, filtering out unrecognized keys
|
|
171
194
|
# and validating types against dataclass field annotations
|
|
172
195
|
defaults = MapConfig()
|
|
@@ -216,12 +239,22 @@ def load_map_config(project_path: Path) -> MapConfig:
|
|
|
216
239
|
if cfg.minimality not in VALID_MINIMALITY:
|
|
217
240
|
logger.warning(
|
|
218
241
|
"Invalid minimality %r in %s (expected one of %s). "
|
|
219
|
-
"Using default '
|
|
242
|
+
"Using default 'lite'.",
|
|
220
243
|
cfg.minimality,
|
|
221
244
|
config_file,
|
|
222
245
|
", ".join(sorted(VALID_MINIMALITY)),
|
|
223
246
|
)
|
|
224
|
-
cfg.minimality = "
|
|
247
|
+
cfg.minimality = "lite"
|
|
248
|
+
|
|
249
|
+
if cfg.prompt_layering not in VALID_PROMPT_LAYERING:
|
|
250
|
+
logger.warning(
|
|
251
|
+
"Invalid prompt_layering %r in %s (expected one of %s). "
|
|
252
|
+
"Using default 'docs_first'.",
|
|
253
|
+
cfg.prompt_layering,
|
|
254
|
+
config_file,
|
|
255
|
+
", ".join(sorted(VALID_PROMPT_LAYERING)),
|
|
256
|
+
)
|
|
257
|
+
cfg.prompt_layering = "docs_first"
|
|
225
258
|
|
|
226
259
|
return cfg
|
|
227
260
|
|
|
@@ -317,6 +350,16 @@ profile: full
|
|
|
317
350
|
# Allowed: off, lite, full, ultra
|
|
318
351
|
minimality: lite
|
|
319
352
|
|
|
353
|
+
# Agent-prompt layering for repeated same-workflow dispatches (#231).
|
|
354
|
+
# "docs_first" (default) orders the variable <documents> first and the stable
|
|
355
|
+
# task/instructions/expected_output contract last — best for recency/attention.
|
|
356
|
+
# "stable_first" puts the stable contract first (byte-identical prefix across
|
|
357
|
+
# same-role dispatches). Resolved cache-neutral at the Claude Code Task layer
|
|
358
|
+
# (harness owns cache_control; the seam is mid-block) but it still changes token
|
|
359
|
+
# order/attention, so it is kept opt-in — see docs/ARCHITECTURE.md (#231).
|
|
360
|
+
# Allowed: docs_first, stable_first
|
|
361
|
+
# prompt_layering: docs_first
|
|
362
|
+
|
|
320
363
|
# Context compression policy. Default is "never" — the /compact nudge is
|
|
321
364
|
# opt-in. Uncomment and switch to "auto" or "aggressive" if you want the
|
|
322
365
|
# meter to interrupt long workflows and ask Claude to compact.
|
|
@@ -684,6 +684,10 @@ WORKFLOW_FIT_DECISION_SCHEMA = {
|
|
|
684
684
|
"needs_independent_review": {"type": "boolean"},
|
|
685
685
|
"has_clear_acceptance_criteria": {"type": "boolean"},
|
|
686
686
|
"test_first_required": {"type": "boolean"},
|
|
687
|
+
# Optional (not required): pre-existing workflow-fit.json files
|
|
688
|
+
# written before this signal existed must still validate. New
|
|
689
|
+
# writes always emit it (record_workflow_fit defaults it False).
|
|
690
|
+
"depends_on_runtime_state": {"type": "boolean"},
|
|
687
691
|
},
|
|
688
692
|
"required": [
|
|
689
693
|
"expected_diff_size",
|
|
@@ -1,5 +1,8 @@
|
|
|
1
1
|
# Phase E cross-session memory: scratch WAL is transient (never commit)
|
|
2
2
|
.map/*/sessions/scratch/
|
|
3
|
+
# Offloaded tool outputs (#232) may contain secrets — never commit. A
|
|
4
|
+
# self-contained .map/<branch>/compacted/.gitignore enforces this too.
|
|
5
|
+
.map/*/compacted/
|
|
3
6
|
# Digests (.map/*/sessions/*.md) are committed by default. To keep them
|
|
4
7
|
# local, set MAP_MEMORY_COMMIT_DIGESTS=0 and uncomment the next line:
|
|
5
8
|
# .map/*/sessions/
|
|
@@ -74,43 +74,6 @@ You are a Protocol-Driven Code Execution System. Your objective: translate an AA
|
|
|
74
74
|
- `{{variable}}` (lowercase): Pre-filled by MAP framework Orchestrator before you see them
|
|
75
75
|
- `{{variable}}` (in generated code): Preserve exactly for runtime substitution when instructed
|
|
76
76
|
|
|
77
|
-
### Self-MoA Support (Optional)
|
|
78
|
-
|
|
79
|
-
When invoked in Self-MoA mode, Actor generates variants with specific optimization focus.
|
|
80
|
-
|
|
81
|
-
| Field | Type | Description | Values |
|
|
82
|
-
|-------|------|-------------|--------|
|
|
83
|
-
| `approach_focus` | string | Primary optimization constraint | `"security"` \| `"performance"` \| `"simplicity"` |
|
|
84
|
-
| `self_moa_mode` | boolean | Multiple variants indicator | `true` \| `false` |
|
|
85
|
-
| `variant_id` | string | Variant identifier for synthesis | `"v1"`, `"v2"`, `"v3"` |
|
|
86
|
-
|
|
87
|
-
**Behavior per focus:**
|
|
88
|
-
- **security**: Prioritize input validation, OWASP compliance, defensive coding, parameterized queries
|
|
89
|
-
- **performance**: Prioritize algorithm efficiency, caching strategies, async patterns, minimal allocations
|
|
90
|
-
- **simplicity**: Prioritize the smallest sufficient safe change: stdlib/native/existing project patterns before new abstractions, with clarity over cleverness
|
|
91
|
-
|
|
92
|
-
**CRITICAL:** Even with focus, NEVER compromise basic security or correctness. All variants must:
|
|
93
|
-
- Validate input at boundaries
|
|
94
|
-
- Handle errors explicitly (no silent failures)
|
|
95
|
-
- Follow contract constraints (if provided)
|
|
96
|
-
|
|
97
|
-
**Output in Self-MoA Mode:**
|
|
98
|
-
When `self_moa_mode: true`, include additional field in output:
|
|
99
|
-
```json
|
|
100
|
-
{
|
|
101
|
-
"decisions_made": [
|
|
102
|
-
{
|
|
103
|
-
"category": "algorithm|error_handling|structure|security|performance|observability|readability",
|
|
104
|
-
"statement": "Use list comprehension instead of for-loop",
|
|
105
|
-
"rationale": "Better performance for this transformation",
|
|
106
|
-
"priority_class": "correctness|security|maintainability|performance"
|
|
107
|
-
}
|
|
108
|
-
]
|
|
109
|
-
}
|
|
110
|
-
```
|
|
111
|
-
|
|
112
|
-
This enables Synthesizer to extract and resolve decisions across variants.
|
|
113
|
-
|
|
114
77
|
---
|
|
115
78
|
|
|
116
79
|
<Actor_MCP_Protocol>
|
{mapify_cli-3.17.1 → mapify_cli-3.18.0}/src/mapify_cli/templates/agents/documentation-reviewer.md
RENAMED
|
@@ -2,10 +2,12 @@
|
|
|
2
2
|
name: documentation-reviewer
|
|
3
3
|
description: Reviews technical documentation for completeness, external dependencies, and architectural consistency
|
|
4
4
|
model: sonnet
|
|
5
|
-
version: 3.1.
|
|
6
|
-
last_updated:
|
|
5
|
+
version: 3.1.1
|
|
6
|
+
last_updated: 2026-06-19
|
|
7
7
|
---
|
|
8
8
|
|
|
9
|
+
> **Dispatch status:** Optional / user-dispatchable agent — not auto-wired into any shipped MAP skill pipeline (no `subagent_type="documentation-reviewer"` dispatch site exists). Invoke manually via `Task(subagent_type="documentation-reviewer", …)`. Retained per the Agent-Boundary Doctrine in `docs/ARCHITECTURE.md` because it emits a unique, non-relay verdict (docs-vs-source-architecture review).
|
|
10
|
+
|
|
9
11
|
# QUICK REFERENCE (Read First)
|
|
10
12
|
|
|
11
13
|
```
|
|
@@ -1602,7 +1602,6 @@ Do NOT invent issues to justify review effort. Empty `issues` array is valid.
|
|
|
1602
1602
|
"type": "object",
|
|
1603
1603
|
"required": ["valid", "summary", "issues", "passed_checks", "failed_checks", "feedback_for_actor", "estimated_fix_time", "mcp_tools_used"],
|
|
1604
1604
|
"additionalProperties": true,
|
|
1605
|
-
"description_note": "additionalProperties: true allows Self-MoA extension fields (variant_id, decisions_identified, compatibility_features, etc.) - see Self-MoA Output Extension section",
|
|
1606
1605
|
"properties": {
|
|
1607
1606
|
"valid": {
|
|
1608
1607
|
"type": "boolean",
|
|
@@ -1873,93 +1872,6 @@ IF map-state workflow active AND valid === true:
|
|
|
1873
1872
|
- **estimated_fix_time** (string): Realistic estimate
|
|
1874
1873
|
- **mcp_tools_used** (array): Tools used for debugging
|
|
1875
1874
|
|
|
1876
|
-
### Self-MoA Output Extension
|
|
1877
|
-
|
|
1878
|
-
When reviewing code in Self-MoA mode (variant validation), include additional fields to support Synthesizer:
|
|
1879
|
-
|
|
1880
|
-
```json
|
|
1881
|
-
{
|
|
1882
|
-
"variant_id": "v1",
|
|
1883
|
-
"self_moa_mode": true,
|
|
1884
|
-
|
|
1885
|
-
"decisions_identified": [
|
|
1886
|
-
{
|
|
1887
|
-
"id": "dec-001",
|
|
1888
|
-
"category": "performance",
|
|
1889
|
-
"statement": "Use list comprehension for data transformation",
|
|
1890
|
-
"rationale": "Better performance for this use case",
|
|
1891
|
-
"source_variant": "v1",
|
|
1892
|
-
"priority_class": "performance",
|
|
1893
|
-
"conflicts_with": [],
|
|
1894
|
-
"code_location": "process_data:45",
|
|
1895
|
-
"confidence": 0.9
|
|
1896
|
-
},
|
|
1897
|
-
{
|
|
1898
|
-
"id": "dec-002",
|
|
1899
|
-
"category": "error_handling",
|
|
1900
|
-
"statement": "Return Result type for explicit error handling",
|
|
1901
|
-
"rationale": "Makes error cases visible in type system",
|
|
1902
|
-
"source_variant": "v1",
|
|
1903
|
-
"priority_class": "correctness",
|
|
1904
|
-
"conflicts_with": ["dec-003"],
|
|
1905
|
-
"code_location": "process_data:12",
|
|
1906
|
-
"confidence": 0.85
|
|
1907
|
-
}
|
|
1908
|
-
],
|
|
1909
|
-
|
|
1910
|
-
"compatibility_features": {
|
|
1911
|
-
"error_paradigm": "Result",
|
|
1912
|
-
"concurrency_model": "sync",
|
|
1913
|
-
"state_management": "stateless",
|
|
1914
|
-
"type_strictness": "strict",
|
|
1915
|
-
"naming_convention": "snake_case",
|
|
1916
|
-
"imports_used": ["typing", "dataclasses", "logging"]
|
|
1917
|
-
},
|
|
1918
|
-
|
|
1919
|
-
"spec_contract_compliant": true,
|
|
1920
|
-
"spec_contract_violations": [],
|
|
1921
|
-
|
|
1922
|
-
"strengths": [
|
|
1923
|
-
"Excellent input validation",
|
|
1924
|
-
"Clear error messages"
|
|
1925
|
-
],
|
|
1926
|
-
"weaknesses": [
|
|
1927
|
-
"O(n²) algorithm in main loop"
|
|
1928
|
-
],
|
|
1929
|
-
|
|
1930
|
-
"recommended_as_base": true
|
|
1931
|
-
}
|
|
1932
|
-
```
|
|
1933
|
-
|
|
1934
|
-
**Self-MoA Field Descriptions:**
|
|
1935
|
-
|
|
1936
|
-
| Field | Type | Description |
|
|
1937
|
-
|-------|------|-------------|
|
|
1938
|
-
| `variant_id` | string | Identifier matching Actor's variant_id ("v1", "v2", "v3") |
|
|
1939
|
-
| `self_moa_mode` | boolean | Must be `true` when in Self-MoA mode |
|
|
1940
|
-
| `decisions_identified` | array | 3-8 key design decisions extracted from variant code |
|
|
1941
|
-
| `compatibility_features` | object | Features for orchestrator's deterministic compatibility scoring |
|
|
1942
|
-
| `spec_contract_compliant` | boolean | Whether variant follows SpecificationContract (if provided) |
|
|
1943
|
-
| `spec_contract_violations` | array | List of SpecificationContract violations (empty if compliant) |
|
|
1944
|
-
| `strengths` | array | Notable positive aspects of the variant |
|
|
1945
|
-
| `weaknesses` | array | Areas where variant is suboptimal |
|
|
1946
|
-
| `recommended_as_base` | boolean | True if variant has good structure for base_enhance strategy |
|
|
1947
|
-
|
|
1948
|
-
**Decision Extraction Guidelines:**
|
|
1949
|
-
|
|
1950
|
-
1. Extract 3-8 key decisions per variant (not every line of code)
|
|
1951
|
-
2. Focus on architectural and algorithmic choices
|
|
1952
|
-
3. Include explicit `conflicts_with` if decision contradicts common alternatives
|
|
1953
|
-
4. Set `confidence` based on clarity of decision in code (0.0-1.0)
|
|
1954
|
-
5. Use `priority_class` to categorize decision importance
|
|
1955
|
-
|
|
1956
|
-
**Compatibility Features Purpose:**
|
|
1957
|
-
|
|
1958
|
-
Monitor outputs FEATURES, orchestrator computes SCORES. This separation ensures:
|
|
1959
|
-
- Deterministic scoring (no LLM randomness in compatibility calculation)
|
|
1960
|
-
- Auditable decisions (features are inspectable)
|
|
1961
|
-
- Consistent pairwise comparison across variants
|
|
1962
|
-
|
|
1963
1875
|
</Monitor_Output_v2_9>
|
|
1964
1876
|
|
|
1965
1877
|
|
{mapify_cli-3.17.1 → mapify_cli-3.18.0}/src/mapify_cli/templates/codex/skills/map-efficient/SKILL.md
RENAMED
|
@@ -168,7 +168,10 @@ so Actor/Monitor can distinguish planner-wide context from current-subtask
|
|
|
168
168
|
evidence. Use `researcher` when independent exploration is useful: cold-start
|
|
169
169
|
repository exploration, 3+ existing files, high risk, unclear locations, or
|
|
170
170
|
failed direct search. Otherwise research in the current session and save concise
|
|
171
|
-
strict-JSON findings
|
|
171
|
+
strict-JSON findings — exact field table + copy-pasteable skeleton in
|
|
172
|
+
[efficient-reference.md](efficient-reference.md) under "RESEARCH artifact schema"
|
|
173
|
+
(`validate_research` also echoes that skeleton in its `skeleton` field on any
|
|
174
|
+
failure). If the subtask truly needs no Actor/Monitor, use
|
|
172
175
|
`mark_subtask_complete --reason` instead of closing RESEARCH. Validate the
|
|
173
176
|
research contract, then close RESEARCH before Actor work:
|
|
174
177
|
|
|
@@ -104,6 +104,54 @@ Final verification must prove the full plan:
|
|
|
104
104
|
- Confirm Monitor artifacts do not contain unresolved valid=false findings.
|
|
105
105
|
- Write `run_health_report.json` with `write_run_health_report`.
|
|
106
106
|
|
|
107
|
+
## RESEARCH artifact schema (exact contract)
|
|
108
|
+
|
|
109
|
+
`save_research` persists the bytes you pipe verbatim; `validate_research` then
|
|
110
|
+
enforces the machine-checkable contract below before Actor consumes the artifact.
|
|
111
|
+
Hand-author to this exact schema so the FIRST save validates.
|
|
112
|
+
|
|
113
|
+
Top-level object — strict JSON only (no markdown, no ``` code fences, ≤ 64 KiB):
|
|
114
|
+
|
|
115
|
+
| field | type | rule |
|
|
116
|
+
| --- | --- | --- |
|
|
117
|
+
| `status` | string | exactly one of `OK`, `PARTIAL_RESULTS`, `NO_RESULTS`, `SEARCH_FAILED` (upper-case enum — NOT free text like `"complete"`/`"high"`) |
|
|
118
|
+
| `confidence` | number | float in `[0, 1]` (NOT a word like `"high"`) |
|
|
119
|
+
| `search_stats` | object | exactly `files_scanned` (int ≥ 0), `total_matches_found` (int ≥ 0), `results_truncated` (bool) — these exact field names |
|
|
120
|
+
| `relevant_locations` | array | ≤ 5 entries; each is `{path, lines, relevance}` |
|
|
121
|
+
|
|
122
|
+
Each `relevant_locations[]` entry:
|
|
123
|
+
|
|
124
|
+
| field | type | rule |
|
|
125
|
+
| --- | --- | --- |
|
|
126
|
+
| `path` | string | safe relative repo path (no absolute, `~`, `\`, or `..`); must exist unless the entry is marked absent (`"exists": false`, `"absent": true`, or `"status"` ∈ `absent`/`missing`/`new`/`not_found`) |
|
|
127
|
+
| `lines` | array | `[start, end]` — two positive ints, `start ≤ end`, span `end - start + 1 ≤ 200`, `end` within the file's line count (NOT a `"start-end"` string) |
|
|
128
|
+
| `relevance` | string | non-empty; explain why the range matters. Never inline `content`/`file_contents`/`raw_code` |
|
|
129
|
+
|
|
130
|
+
Copy-pasteable skeleton (a valid artifact — swap in your real values):
|
|
131
|
+
|
|
132
|
+
```json
|
|
133
|
+
{
|
|
134
|
+
"status": "OK",
|
|
135
|
+
"confidence": 0.8,
|
|
136
|
+
"search_stats": {
|
|
137
|
+
"files_scanned": 12,
|
|
138
|
+
"total_matches_found": 4,
|
|
139
|
+
"results_truncated": false
|
|
140
|
+
},
|
|
141
|
+
"relevant_locations": [
|
|
142
|
+
{
|
|
143
|
+
"path": "src/example/module.py",
|
|
144
|
+
"lines": [10, 42],
|
|
145
|
+
"relevance": "why this range matters to the current subtask"
|
|
146
|
+
}
|
|
147
|
+
]
|
|
148
|
+
}
|
|
149
|
+
```
|
|
150
|
+
|
|
151
|
+
`validate_research` echoes this exact skeleton in its `skeleton` field on ANY
|
|
152
|
+
failure, so the first reject is self-correcting: copy the `skeleton`, swap your
|
|
153
|
+
values, re-save. Extra fields beyond the contract are allowed and ignored.
|
|
154
|
+
|
|
107
155
|
## Troubleshooting
|
|
108
156
|
|
|
109
157
|
- `resume_from_plan` fails: inspect the returned JSON and fix missing plan,
|
{mapify_cli-3.17.1 → mapify_cli-3.18.0}/src/mapify_cli/templates/codex/skills/map-plan/SKILL.md
RENAMED
|
@@ -58,6 +58,7 @@ Assess whether MAP planning is warranted. Evaluate these signals:
|
|
|
58
58
|
- `needs_independent_review`: risky enough to require review?
|
|
59
59
|
- `has_clear_acceptance_criteria`: can be executed without a planning pass?
|
|
60
60
|
- `test_first_required`: TDD warranted because behavior contract matters?
|
|
61
|
+
- `depends_on_runtime_state`: does correctness depend on **current production/runtime state** (applied migration head, a table/column/index/enum value present in the live DB, current row counts / backfill volume, the actual value of a feature flag or config, runtime capacity/traffic)? Ask the operator when unsure — **if unsure, true.** False for refactors, tests, docs, static-config; "code will run in prod" is not runtime-dependence. When true, Step 0.6 runs.
|
|
61
62
|
|
|
62
63
|
Pick one outcome:
|
|
63
64
|
- `direct-edit` — tiny, isolated, clear acceptance criteria, no new invariants
|
|
@@ -71,9 +72,11 @@ shell_command:
|
|
|
71
72
|
cmd: |
|
|
72
73
|
python3 .map/scripts/map_step_runner.py record_workflow_fit \
|
|
73
74
|
"<direct-edit|map-fast|map-plan>" \
|
|
74
|
-
"<tiny|small|medium|large>" \
|
|
75
|
-
|
|
76
|
-
|
|
75
|
+
--diff-size "<tiny|small|medium|large>" \
|
|
76
|
+
--has-new-invariants <0|1> --needs-independent-review <0|1> \
|
|
77
|
+
--has-clear-acceptance-criteria <0|1> --test-first-required <0|1> \
|
|
78
|
+
--depends-on-runtime-state <0|1> \
|
|
79
|
+
--summary "<one-sentence decision summary>"
|
|
77
80
|
```
|
|
78
81
|
|
|
79
82
|
- Outcome `direct-edit`: print off-ramp explanation and STOP.
|
|
@@ -152,6 +155,22 @@ When unsure whether existing code truly satisfies the request, treat it as parti
|
|
|
152
155
|
|
|
153
156
|
---
|
|
154
157
|
|
|
158
|
+
## Step 0.6: Verify Live/Runtime State Gate (MANDATORY when `depends_on_runtime_state=true`)
|
|
159
|
+
|
|
160
|
+
The runtime analogue of Step 0.5. Step 0.5 stops you re-planning code that already exists; Step 0.6 stops you planning against **runtime facts that have drifted** from the design docs / memory the plan copied them from. Skip only when `depends_on_runtime_state=false`.
|
|
161
|
+
|
|
162
|
+
Static discovery reads only the repo — it cannot see prod row counts, the enum labels actually present in a live DB, a column that already exists, the applied migration head, or a live feature-flag value. **Caution:** code can exist in the repo (Step 0.5 `file:line` proof) while its migration / feature flag is NOT yet applied in prod; verify runtime separately.
|
|
163
|
+
|
|
164
|
+
Signals that arm the gate: a DB migration / data backfill; "measured on prod" / "currently" / "as of" numbers in the source; count-based acceptance criteria referencing current state ("migrate the 10k existing rows"), not a forward target ("1k RPS"); a feature-flag / config cutover; capacity / latency assumptions; "this column/table/enum value already exists".
|
|
165
|
+
|
|
166
|
+
For each assumption the plan's correctness rests on:
|
|
167
|
+
- **Verifiable read-only now** — confirm via an approved read-only source (read replica, dashboard, runbook, `INFORMATION_SCHEMA` / `pg_enum` / migration-head introspection). Record the **fact** + source, not the raw rows.
|
|
168
|
+
- **Prod unreachable / unchecked** — record an `Unverified Runtime Assumption` under spec Open Questions / Risks with the **exact read-only check** + safe source, and mark dependent subtasks `provisional`. Do NOT bake the assumption in as fact.
|
|
169
|
+
|
|
170
|
+
Safety: this skill is a planning-time gate, NOT a runtime tool — it suggests checks, it does not run them (defer to the operator or an authorized sub-agent). Prefer bounded / metadata queries over full scans / `COUNT(*)`; never write, mutate, or flip flags; never paste PII, secrets, or bulky prod output into the spec or `.map/<branch>/` artifacts (they may be committed); no isolation-level / `NOLOCK` hints. Do not hard-stop merely because prod is unreachable — record-the-check is the contract. If a runtime dependency surfaces later during decomposition, loop back and verify-or-record it.
|
|
171
|
+
|
|
172
|
+
---
|
|
173
|
+
|
|
155
174
|
## Step 1: Assess Scope and Decide Interview Depth
|
|
156
175
|
|
|
157
176
|
Read the user's requirements and decide if a deep interview is needed.
|
{mapify_cli-3.17.1 → mapify_cli-3.18.0}/src/mapify_cli/templates/hooks/post-compact-context.py
RENAMED
|
@@ -200,6 +200,28 @@ def build_reprime(branch: str, branch_dir: Path) -> str | None:
|
|
|
200
200
|
return truncate_text("\n".join(lines), REPRIME_LIMIT)
|
|
201
201
|
|
|
202
202
|
|
|
203
|
+
def offloaded_outputs_pointer(branch: str, branch_dir: Path) -> str | None:
|
|
204
|
+
"""Pointer to tool outputs offloaded before compaction, if any (#232).
|
|
205
|
+
|
|
206
|
+
Rebuilds the manifest from the append-only index and returns the recovery
|
|
207
|
+
line. Lazy-imports mapify_cli and degrades to ``None`` (silent) when it is
|
|
208
|
+
unavailable or nothing was offloaded.
|
|
209
|
+
"""
|
|
210
|
+
try:
|
|
211
|
+
sys.path.insert(0, str(PROJECT_DIR / "src"))
|
|
212
|
+
try:
|
|
213
|
+
from mapify_cli.tool_output_offload import (
|
|
214
|
+
build_manifest,
|
|
215
|
+
recovery_pointer_text,
|
|
216
|
+
)
|
|
217
|
+
except ImportError:
|
|
218
|
+
return None
|
|
219
|
+
build_manifest(branch_dir / "compacted")
|
|
220
|
+
return recovery_pointer_text(branch, branch_dir)
|
|
221
|
+
except Exception:
|
|
222
|
+
return None
|
|
223
|
+
|
|
224
|
+
|
|
203
225
|
def main() -> None:
|
|
204
226
|
try:
|
|
205
227
|
json.load(sys.stdin)
|
|
@@ -229,6 +251,12 @@ def main() -> None:
|
|
|
229
251
|
except (IOError, OSError):
|
|
230
252
|
pass
|
|
231
253
|
|
|
254
|
+
# Point at any tool outputs offloaded before compaction (#232) so the agent
|
|
255
|
+
# re-reads a sidecar instead of re-running broad discovery.
|
|
256
|
+
offload_pointer = offloaded_outputs_pointer(branch, branch_dir)
|
|
257
|
+
if offload_pointer:
|
|
258
|
+
parts.append(offload_pointer)
|
|
259
|
+
|
|
232
260
|
# Check for workflow restore point
|
|
233
261
|
restore = branch_dir / "restore_point.json"
|
|
234
262
|
if restore.exists():
|
|
@@ -129,6 +129,37 @@ def parse_transcript(transcript_path: Path) -> str:
|
|
|
129
129
|
return "\n".join(lines)
|
|
130
130
|
|
|
131
131
|
|
|
132
|
+
def maybe_offload_tool_outputs(transcript_path: str, branch_dir: Path) -> None:
|
|
133
|
+
"""Offload large tool-result bodies before compaction drops them (#232).
|
|
134
|
+
|
|
135
|
+
Only runs when ``compression_policy != never`` so a default install never
|
|
136
|
+
creates ``.map/<branch>/compacted/``. Lazy-imports mapify_cli and degrades
|
|
137
|
+
to a silent no-op if it is not importable. Never raises — a PreCompact hook
|
|
138
|
+
must not break compaction.
|
|
139
|
+
"""
|
|
140
|
+
try:
|
|
141
|
+
sys.path.insert(0, str(PROJECT_DIR / "src"))
|
|
142
|
+
try:
|
|
143
|
+
from mapify_cli.config.project_config import load_map_config
|
|
144
|
+
from mapify_cli.tool_output_offload import (
|
|
145
|
+
offload_transcript_tool_outputs,
|
|
146
|
+
)
|
|
147
|
+
except ImportError:
|
|
148
|
+
return
|
|
149
|
+
config = load_map_config(PROJECT_DIR)
|
|
150
|
+
if config.compression_policy == "never":
|
|
151
|
+
return
|
|
152
|
+
summary = offload_transcript_tool_outputs(Path(transcript_path), branch_dir)
|
|
153
|
+
if summary.written:
|
|
154
|
+
print(
|
|
155
|
+
f"[pre-compact-save] Offloaded {summary.written} tool output(s) "
|
|
156
|
+
f"to {branch_dir / 'compacted'}",
|
|
157
|
+
file=sys.stderr,
|
|
158
|
+
)
|
|
159
|
+
except Exception: # never break compaction
|
|
160
|
+
pass
|
|
161
|
+
|
|
162
|
+
|
|
132
163
|
def main() -> None:
|
|
133
164
|
if os.environ.get("MAP_INVOKED_BY"):
|
|
134
165
|
sys.exit(0)
|
|
@@ -190,6 +221,10 @@ def main() -> None:
|
|
|
190
221
|
except (IOError, OSError):
|
|
191
222
|
pass
|
|
192
223
|
|
|
224
|
+
# Offload full-resolution tool-result bodies so dropped outputs stay
|
|
225
|
+
# recoverable instead of forcing a re-run of broad discovery (#232).
|
|
226
|
+
maybe_offload_tool_outputs(transcript_path, branch_dir)
|
|
227
|
+
|
|
193
228
|
print("{}")
|
|
194
229
|
sys.exit(0)
|
|
195
230
|
|
{mapify_cli-3.17.1 → mapify_cli-3.18.0}/src/mapify_cli/templates/map/scripts/map_orchestrator.py
RENAMED
|
@@ -3705,6 +3705,25 @@ def _emit_context_budget_warning(branch: str, transcript_path: Optional[str]) ->
|
|
|
3705
3705
|
threshold=threshold,
|
|
3706
3706
|
focus=_map_config_str(project_dir, "compression_focus", ""),
|
|
3707
3707
|
)
|
|
3708
|
+
|
|
3709
|
+
# Offload large tool-result bodies before the (recommended) compaction drops
|
|
3710
|
+
# them, then point the operator/agent at the sidecars (#232). Provider-
|
|
3711
|
+
# agnostic: reuses the same transcript this warning already read. Lazy import
|
|
3712
|
+
# with graceful fallback — never block the warning on a missing mapify_cli.
|
|
3713
|
+
branch_dir = project_dir / ".map" / branch
|
|
3714
|
+
try:
|
|
3715
|
+
from mapify_cli.tool_output_offload import ( # noqa: PLC0415
|
|
3716
|
+
offload_transcript_tool_outputs,
|
|
3717
|
+
recovery_pointer_text,
|
|
3718
|
+
)
|
|
3719
|
+
|
|
3720
|
+
offload_transcript_tool_outputs(path, branch_dir)
|
|
3721
|
+
pointer = recovery_pointer_text(branch, branch_dir)
|
|
3722
|
+
if pointer:
|
|
3723
|
+
message = f"{message}\n\n{pointer}"
|
|
3724
|
+
except Exception: # noqa: BLE001 — warning must never raise
|
|
3725
|
+
pass
|
|
3726
|
+
|
|
3708
3727
|
# stderr keeps stdout clean for JSON consumers (the orchestrator's
|
|
3709
3728
|
# contract is JSON-on-stdout for every command).
|
|
3710
3729
|
print(message, file=sys.stderr)
|