mapify-cli 3.27.0__tar.gz → 3.28.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.27.0 → mapify_cli-3.28.0}/PKG-INFO +1 -3
- {mapify_cli-3.27.0 → mapify_cli-3.28.0}/README.md +0 -2
- {mapify_cli-3.27.0 → mapify_cli-3.28.0}/pyproject.toml +1 -1
- {mapify_cli-3.27.0 → mapify_cli-3.28.0}/src/mapify_cli/__init__.py +1 -1
- {mapify_cli-3.27.0 → mapify_cli-3.28.0}/src/mapify_cli/schemas.py +11 -2
- {mapify_cli-3.27.0 → mapify_cli-3.28.0}/src/mapify_cli/templates/codex/skills/map-review/SKILL.md +34 -8
- {mapify_cli-3.27.0 → mapify_cli-3.28.0}/src/mapify_cli/templates/codex/skills/map-review/adversarial-reference.md +53 -21
- {mapify_cli-3.27.0 → mapify_cli-3.28.0}/src/mapify_cli/templates/codex/skills/map-review/review-reference.md +95 -6
- mapify_cli-3.28.0/src/mapify_cli/templates/hooks/end-of-turn.sh +355 -0
- {mapify_cli-3.27.0 → mapify_cli-3.28.0}/src/mapify_cli/templates/map/scripts/map_step_runner.py +751 -100
- {mapify_cli-3.27.0 → mapify_cli-3.28.0}/src/mapify_cli/templates/references/host-paths.md +1 -1
- {mapify_cli-3.27.0 → mapify_cli-3.28.0}/src/mapify_cli/templates/skills/map-review/SKILL.md +64 -21
- {mapify_cli-3.27.0 → mapify_cli-3.28.0}/src/mapify_cli/templates/skills/map-review/adversarial-reference.md +50 -17
- {mapify_cli-3.27.0 → mapify_cli-3.28.0}/src/mapify_cli/templates/skills/map-review/review-reference.md +109 -8
- {mapify_cli-3.27.0 → mapify_cli-3.28.0}/src/mapify_cli/templates_src/codex/skills/map-review/SKILL.md.jinja +34 -8
- {mapify_cli-3.27.0 → mapify_cli-3.28.0}/src/mapify_cli/templates_src/codex/skills/map-review/adversarial-reference.md.jinja +53 -21
- {mapify_cli-3.27.0 → mapify_cli-3.28.0}/src/mapify_cli/templates_src/codex/skills/map-review/review-reference.md.jinja +95 -6
- mapify_cli-3.28.0/src/mapify_cli/templates_src/hooks/end-of-turn.sh.jinja +355 -0
- {mapify_cli-3.27.0 → mapify_cli-3.28.0}/src/mapify_cli/templates_src/map/scripts/map_step_runner.py.jinja +751 -100
- {mapify_cli-3.27.0 → mapify_cli-3.28.0}/src/mapify_cli/templates_src/references/host-paths.md.jinja +1 -1
- {mapify_cli-3.27.0 → mapify_cli-3.28.0}/src/mapify_cli/templates_src/skills/map-review/SKILL.md.jinja +64 -21
- {mapify_cli-3.27.0 → mapify_cli-3.28.0}/src/mapify_cli/templates_src/skills/map-review/adversarial-reference.md.jinja +50 -17
- {mapify_cli-3.27.0 → mapify_cli-3.28.0}/src/mapify_cli/templates_src/skills/map-review/review-reference.md.jinja +109 -8
- mapify_cli-3.28.0/tests/hooks/test_end_of_turn.py +665 -0
- {mapify_cli-3.27.0 → mapify_cli-3.28.0}/tests/test_map_step_runner.py +226 -5
- {mapify_cli-3.27.0 → mapify_cli-3.28.0}/tests/test_review_verdict_ledger.py +434 -0
- {mapify_cli-3.27.0 → mapify_cli-3.28.0}/tests/test_skills.py +31 -8
- {mapify_cli-3.27.0 → mapify_cli-3.28.0}/tests/test_sofa_client.py +2 -2
- mapify_cli-3.27.0/src/mapify_cli/templates/hooks/end-of-turn.sh +0 -196
- mapify_cli-3.27.0/src/mapify_cli/templates_src/hooks/end-of-turn.sh.jinja +0 -196
- mapify_cli-3.27.0/tests/hooks/test_end_of_turn.py +0 -348
- {mapify_cli-3.27.0 → mapify_cli-3.28.0}/.claude/hooks/README.md +0 -0
- {mapify_cli-3.27.0 → mapify_cli-3.28.0}/.claude/skills/README.md +0 -0
- {mapify_cli-3.27.0 → mapify_cli-3.28.0}/.gitignore +0 -0
- {mapify_cli-3.27.0 → mapify_cli-3.28.0}/LICENSE +0 -0
- {mapify_cli-3.27.0 → mapify_cli-3.28.0}/src/mapify_cli/_locking.py +0 -0
- {mapify_cli-3.27.0 → mapify_cli-3.28.0}/src/mapify_cli/auto_update.py +0 -0
- {mapify_cli-3.27.0 → mapify_cli-3.28.0}/src/mapify_cli/boundary_quality_report.py +0 -0
- {mapify_cli-3.27.0 → mapify_cli-3.28.0}/src/mapify_cli/cli_ui.py +0 -0
- {mapify_cli-3.27.0 → mapify_cli-3.28.0}/src/mapify_cli/code_map.py +0 -0
- {mapify_cli-3.27.0 → mapify_cli-3.28.0}/src/mapify_cli/config/__init__.py +0 -0
- {mapify_cli-3.27.0 → mapify_cli-3.28.0}/src/mapify_cli/config/mcp.py +0 -0
- {mapify_cli-3.27.0 → mapify_cli-3.28.0}/src/mapify_cli/config/project_config.py +0 -0
- {mapify_cli-3.27.0 → mapify_cli-3.28.0}/src/mapify_cli/config/settings.py +0 -0
- {mapify_cli-3.27.0 → mapify_cli-3.28.0}/src/mapify_cli/delivery/__init__.py +0 -0
- {mapify_cli-3.27.0 → mapify_cli-3.28.0}/src/mapify_cli/delivery/agent_generator.py +0 -0
- {mapify_cli-3.27.0 → mapify_cli-3.28.0}/src/mapify_cli/delivery/codex_copier.py +0 -0
- {mapify_cli-3.27.0 → mapify_cli-3.28.0}/src/mapify_cli/delivery/domain_skill.py +0 -0
- {mapify_cli-3.27.0 → mapify_cli-3.28.0}/src/mapify_cli/delivery/file_copier.py +0 -0
- {mapify_cli-3.27.0 → mapify_cli-3.28.0}/src/mapify_cli/delivery/governance_report.py +0 -0
- {mapify_cli-3.27.0 → mapify_cli-3.28.0}/src/mapify_cli/delivery/managed_file_copier.py +0 -0
- {mapify_cli-3.27.0 → mapify_cli-3.28.0}/src/mapify_cli/delivery/providers.py +0 -0
- {mapify_cli-3.27.0 → mapify_cli-3.28.0}/src/mapify_cli/delivery/template_renderer.py +0 -0
- {mapify_cli-3.27.0 → mapify_cli-3.28.0}/src/mapify_cli/dependency_graph.py +0 -0
- {mapify_cli-3.27.0 → mapify_cli-3.28.0}/src/mapify_cli/grace_eval/__init__.py +0 -0
- {mapify_cli-3.27.0 → mapify_cli-3.28.0}/src/mapify_cli/grace_eval/schema.py +0 -0
- {mapify_cli-3.27.0 → mapify_cli-3.28.0}/src/mapify_cli/grace_eval/sweep.py +0 -0
- {mapify_cli-3.27.0 → mapify_cli-3.28.0}/src/mapify_cli/install_manifest.py +0 -0
- {mapify_cli-3.27.0 → mapify_cli-3.28.0}/src/mapify_cli/intent_detector.py +0 -0
- {mapify_cli-3.27.0 → mapify_cli-3.28.0}/src/mapify_cli/memory/__init__.py +0 -0
- {mapify_cli-3.27.0 → mapify_cli-3.28.0}/src/mapify_cli/memory/capture.py +0 -0
- {mapify_cli-3.27.0 → mapify_cli-3.28.0}/src/mapify_cli/memory/digest_schema.py +0 -0
- {mapify_cli-3.27.0 → mapify_cli-3.28.0}/src/mapify_cli/memory/finalize.py +0 -0
- {mapify_cli-3.27.0 → mapify_cli-3.28.0}/src/mapify_cli/memory/recall.py +0 -0
- {mapify_cli-3.27.0 → mapify_cli-3.28.0}/src/mapify_cli/minimality_eval.py +0 -0
- {mapify_cli-3.27.0 → mapify_cli-3.28.0}/src/mapify_cli/minimality_report.py +0 -0
- {mapify_cli-3.27.0 → mapify_cli-3.28.0}/src/mapify_cli/parallelism_observability.py +0 -0
- {mapify_cli-3.27.0 → mapify_cli-3.28.0}/src/mapify_cli/ralph_state.py +0 -0
- {mapify_cli-3.27.0 → mapify_cli-3.28.0}/src/mapify_cli/repo_insight.py +0 -0
- {mapify_cli-3.27.0 → mapify_cli-3.28.0}/src/mapify_cli/research_eval.py +0 -0
- {mapify_cli-3.27.0 → mapify_cli-3.28.0}/src/mapify_cli/research_eval_compare.py +0 -0
- {mapify_cli-3.27.0 → mapify_cli-3.28.0}/src/mapify_cli/scope_classifier.py +0 -0
- {mapify_cli-3.27.0 → mapify_cli-3.28.0}/src/mapify_cli/skill_ir.py +0 -0
- {mapify_cli-3.27.0 → mapify_cli-3.28.0}/src/mapify_cli/skills_eval/__init__.py +0 -0
- {mapify_cli-3.27.0 → mapify_cli-3.28.0}/src/mapify_cli/skills_eval/aggregator.py +0 -0
- {mapify_cli-3.27.0 → mapify_cli-3.28.0}/src/mapify_cli/skills_eval/apply_patcher.py +0 -0
- {mapify_cli-3.27.0 → mapify_cli-3.28.0}/src/mapify_cli/skills_eval/assertions.py +0 -0
- {mapify_cli-3.27.0 → mapify_cli-3.28.0}/src/mapify_cli/skills_eval/description_optimizer.py +0 -0
- {mapify_cli-3.27.0 → mapify_cli-3.28.0}/src/mapify_cli/skills_eval/dispatcher.py +0 -0
- {mapify_cli-3.27.0 → mapify_cli-3.28.0}/src/mapify_cli/skills_eval/eval_schema.py +0 -0
- {mapify_cli-3.27.0 → mapify_cli-3.28.0}/src/mapify_cli/skills_eval/proposer.py +0 -0
- {mapify_cli-3.27.0 → mapify_cli-3.28.0}/src/mapify_cli/skills_eval/runner.py +0 -0
- {mapify_cli-3.27.0 → mapify_cli-3.28.0}/src/mapify_cli/skills_eval/trajectory/__init__.py +0 -0
- {mapify_cli-3.27.0 → mapify_cli-3.28.0}/src/mapify_cli/skills_eval/trajectory/bundle.py +0 -0
- {mapify_cli-3.27.0 → mapify_cli-3.28.0}/src/mapify_cli/skills_eval/trajectory/dispatcher.py +0 -0
- {mapify_cli-3.27.0 → mapify_cli-3.28.0}/src/mapify_cli/skills_eval/trajectory/eval_schema.py +0 -0
- {mapify_cli-3.27.0 → mapify_cli-3.28.0}/src/mapify_cli/skills_eval/trajectory/gates.py +0 -0
- {mapify_cli-3.27.0 → mapify_cli-3.28.0}/src/mapify_cli/skills_eval/trajectory/judge.py +0 -0
- {mapify_cli-3.27.0 → mapify_cli-3.28.0}/src/mapify_cli/skills_eval/trajectory/repeated.py +0 -0
- {mapify_cli-3.27.0 → mapify_cli-3.28.0}/src/mapify_cli/skills_eval/trajectory/report.py +0 -0
- {mapify_cli-3.27.0 → mapify_cli-3.28.0}/src/mapify_cli/skills_eval/trajectory/runner.py +0 -0
- {mapify_cli-3.27.0 → mapify_cli-3.28.0}/src/mapify_cli/skills_eval/trajectory/seeding.py +0 -0
- {mapify_cli-3.27.0 → mapify_cli-3.28.0}/src/mapify_cli/skills_eval/viewer.py +0 -0
- {mapify_cli-3.27.0 → mapify_cli-3.28.0}/src/mapify_cli/templates/.gitignore +0 -0
- {mapify_cli-3.27.0 → mapify_cli-3.28.0}/src/mapify_cli/templates/CLAUDE.md +0 -0
- {mapify_cli-3.27.0 → mapify_cli-3.28.0}/src/mapify_cli/templates/agents/actor.md +0 -0
- {mapify_cli-3.27.0 → mapify_cli-3.28.0}/src/mapify_cli/templates/agents/documentation-reviewer.md +0 -0
- {mapify_cli-3.27.0 → mapify_cli-3.28.0}/src/mapify_cli/templates/agents/evaluator.md +0 -0
- {mapify_cli-3.27.0 → mapify_cli-3.28.0}/src/mapify_cli/templates/agents/final-verifier.md +0 -0
- {mapify_cli-3.27.0 → mapify_cli-3.28.0}/src/mapify_cli/templates/agents/monitor.md +0 -0
- {mapify_cli-3.27.0 → mapify_cli-3.28.0}/src/mapify_cli/templates/agents/predictor.md +0 -0
- {mapify_cli-3.27.0 → mapify_cli-3.28.0}/src/mapify_cli/templates/agents/reflector.md +0 -0
- {mapify_cli-3.27.0 → mapify_cli-3.28.0}/src/mapify_cli/templates/agents/research-agent.md +0 -0
- {mapify_cli-3.27.0 → mapify_cli-3.28.0}/src/mapify_cli/templates/agents/task-decomposer.md +0 -0
- {mapify_cli-3.27.0 → mapify_cli-3.28.0}/src/mapify_cli/templates/codex/AGENTS.md +0 -0
- {mapify_cli-3.27.0 → mapify_cli-3.28.0}/src/mapify_cli/templates/codex/agents/decomposer.toml +0 -0
- {mapify_cli-3.27.0 → mapify_cli-3.28.0}/src/mapify_cli/templates/codex/agents/evaluator.toml +0 -0
- {mapify_cli-3.27.0 → mapify_cli-3.28.0}/src/mapify_cli/templates/codex/agents/monitor.toml +0 -0
- {mapify_cli-3.27.0 → mapify_cli-3.28.0}/src/mapify_cli/templates/codex/agents/predictor.toml +0 -0
- {mapify_cli-3.27.0 → mapify_cli-3.28.0}/src/mapify_cli/templates/codex/agents/researcher.toml +0 -0
- {mapify_cli-3.27.0 → mapify_cli-3.28.0}/src/mapify_cli/templates/codex/config.toml +0 -0
- {mapify_cli-3.27.0 → mapify_cli-3.28.0}/src/mapify_cli/templates/codex/hooks/workflow-gate.py +0 -0
- {mapify_cli-3.27.0 → mapify_cli-3.28.0}/src/mapify_cli/templates/codex/hooks.json +0 -0
- {mapify_cli-3.27.0 → mapify_cli-3.28.0}/src/mapify_cli/templates/codex/skills/map-check/SKILL.md +0 -0
- {mapify_cli-3.27.0 → mapify_cli-3.28.0}/src/mapify_cli/templates/codex/skills/map-efficient/SKILL.md +0 -0
- {mapify_cli-3.27.0 → mapify_cli-3.28.0}/src/mapify_cli/templates/codex/skills/map-efficient/efficient-reference.md +0 -0
- {mapify_cli-3.27.0 → mapify_cli-3.28.0}/src/mapify_cli/templates/codex/skills/map-explain/SKILL.md +0 -0
- {mapify_cli-3.27.0 → mapify_cli-3.28.0}/src/mapify_cli/templates/codex/skills/map-fast/SKILL.md +0 -0
- {mapify_cli-3.27.0 → mapify_cli-3.28.0}/src/mapify_cli/templates/codex/skills/map-plan/SKILL.md +0 -0
- {mapify_cli-3.27.0 → mapify_cli-3.28.0}/src/mapify_cli/templates/codex/skills/map-understand/SKILL.md +0 -0
- {mapify_cli-3.27.0 → mapify_cli-3.28.0}/src/mapify_cli/templates/codex/skills/map-upgrade/SKILL.md +0 -0
- {mapify_cli-3.27.0 → mapify_cli-3.28.0}/src/mapify_cli/templates/hooks/README.md +0 -0
- {mapify_cli-3.27.0 → mapify_cli-3.28.0}/src/mapify_cli/templates/hooks/context-meter.py +0 -0
- {mapify_cli-3.27.0 → mapify_cli-3.28.0}/src/mapify_cli/templates/hooks/detect-clarification-triggers.py +0 -0
- {mapify_cli-3.27.0 → mapify_cli-3.28.0}/src/mapify_cli/templates/hooks/map-memory-capture.py +0 -0
- {mapify_cli-3.27.0 → mapify_cli-3.28.0}/src/mapify_cli/templates/hooks/map-memory-endmark.py +0 -0
- {mapify_cli-3.27.0 → mapify_cli-3.28.0}/src/mapify_cli/templates/hooks/map-memory-finalize.py +0 -0
- {mapify_cli-3.27.0 → mapify_cli-3.28.0}/src/mapify_cli/templates/hooks/map-memory-recall.py +0 -0
- {mapify_cli-3.27.0 → mapify_cli-3.28.0}/src/mapify_cli/templates/hooks/map-statusline.py +0 -0
- {mapify_cli-3.27.0 → mapify_cli-3.28.0}/src/mapify_cli/templates/hooks/map-token-meter.py +0 -0
- {mapify_cli-3.27.0 → mapify_cli-3.28.0}/src/mapify_cli/templates/hooks/post-compact-context.py +0 -0
- {mapify_cli-3.27.0 → mapify_cli-3.28.0}/src/mapify_cli/templates/hooks/pre-compact-save-transcript.py +0 -0
- {mapify_cli-3.27.0 → mapify_cli-3.28.0}/src/mapify_cli/templates/hooks/ralph-context-pruner.py +0 -0
- {mapify_cli-3.27.0 → mapify_cli-3.28.0}/src/mapify_cli/templates/hooks/ralph-iteration-logger.py +0 -0
- {mapify_cli-3.27.0 → mapify_cli-3.28.0}/src/mapify_cli/templates/hooks/safety-guardrails.py +0 -0
- {mapify_cli-3.27.0 → mapify_cli-3.28.0}/src/mapify_cli/templates/hooks/scrub-internal-ids.py +0 -0
- {mapify_cli-3.27.0 → mapify_cli-3.28.0}/src/mapify_cli/templates/hooks/workflow-context-injector.py +0 -0
- {mapify_cli-3.27.0 → mapify_cli-3.28.0}/src/mapify_cli/templates/hooks/workflow-gate.py +0 -0
- {mapify_cli-3.27.0 → mapify_cli-3.28.0}/src/mapify_cli/templates/map/scripts/classify_scope.py +0 -0
- {mapify_cli-3.27.0 → mapify_cli-3.28.0}/src/mapify_cli/templates/map/scripts/diagnostics.py +0 -0
- {mapify_cli-3.27.0 → mapify_cli-3.28.0}/src/mapify_cli/templates/map/scripts/map_orchestrator.py +0 -0
- {mapify_cli-3.27.0 → mapify_cli-3.28.0}/src/mapify_cli/templates/map/scripts/map_utils.py +0 -0
- {mapify_cli-3.27.0 → mapify_cli-3.28.0}/src/mapify_cli/templates/map/scripts/scrub_internal_ids.py +0 -0
- {mapify_cli-3.27.0 → mapify_cli-3.28.0}/src/mapify_cli/templates/map/scripts/sofa_client.py +0 -0
- {mapify_cli-3.27.0 → mapify_cli-3.28.0}/src/mapify_cli/templates/map/scripts/validate_spec_citations.py +0 -0
- {mapify_cli-3.27.0 → mapify_cli-3.28.0}/src/mapify_cli/templates/map/scripts/wayfind_runner.py +0 -0
- {mapify_cli-3.27.0 → mapify_cli-3.28.0}/src/mapify_cli/templates/map/static-analysis/analyze.sh +0 -0
- {mapify_cli-3.27.0 → mapify_cli-3.28.0}/src/mapify_cli/templates/map/static-analysis/handlers/common.sh +0 -0
- {mapify_cli-3.27.0 → mapify_cli-3.28.0}/src/mapify_cli/templates/map/static-analysis/handlers/go.sh +0 -0
- {mapify_cli-3.27.0 → mapify_cli-3.28.0}/src/mapify_cli/templates/map/static-analysis/handlers/python.sh +0 -0
- {mapify_cli-3.27.0 → mapify_cli-3.28.0}/src/mapify_cli/templates/map/static-analysis/handlers/rust.sh +0 -0
- {mapify_cli-3.27.0 → mapify_cli-3.28.0}/src/mapify_cli/templates/map/static-analysis/handlers/typescript.sh +0 -0
- {mapify_cli-3.27.0 → mapify_cli-3.28.0}/src/mapify_cli/templates/ralph-loop-config.json +0 -0
- {mapify_cli-3.27.0 → mapify_cli-3.28.0}/src/mapify_cli/templates/references/bash-guidelines.md +0 -0
- {mapify_cli-3.27.0 → mapify_cli-3.28.0}/src/mapify_cli/templates/references/decomposition-examples.md +0 -0
- {mapify_cli-3.27.0 → mapify_cli-3.28.0}/src/mapify_cli/templates/references/escalation-matrix.md +0 -0
- {mapify_cli-3.27.0 → mapify_cli-3.28.0}/src/mapify_cli/templates/references/hook-patterns.md +0 -0
- {mapify_cli-3.27.0 → mapify_cli-3.28.0}/src/mapify_cli/templates/references/map-json-output-contracts.md +0 -0
- {mapify_cli-3.27.0 → mapify_cli-3.28.0}/src/mapify_cli/templates/references/map-output-examples.md +0 -0
- {mapify_cli-3.27.0 → mapify_cli-3.28.0}/src/mapify_cli/templates/references/map-xml-prompt-envelopes.md +0 -0
- {mapify_cli-3.27.0 → mapify_cli-3.28.0}/src/mapify_cli/templates/references/mcp-usage-examples.md +0 -0
- {mapify_cli-3.27.0 → mapify_cli-3.28.0}/src/mapify_cli/templates/references/step-state-schema.md +0 -0
- {mapify_cli-3.27.0 → mapify_cli-3.28.0}/src/mapify_cli/templates/references/workflow-state-schema.md +0 -0
- {mapify_cli-3.27.0 → mapify_cli-3.28.0}/src/mapify_cli/templates/rules/learned/README.md +0 -0
- {mapify_cli-3.27.0 → mapify_cli-3.28.0}/src/mapify_cli/templates/settings.json +0 -0
- {mapify_cli-3.27.0 → mapify_cli-3.28.0}/src/mapify_cli/templates/skills/README.md +0 -0
- {mapify_cli-3.27.0 → mapify_cli-3.28.0}/src/mapify_cli/templates/skills/map-architecture/SKILL.md +0 -0
- {mapify_cli-3.27.0 → mapify_cli-3.28.0}/src/mapify_cli/templates/skills/map-auto/SKILL.md +0 -0
- {mapify_cli-3.27.0 → mapify_cli-3.28.0}/src/mapify_cli/templates/skills/map-auto/auto-reference.md +0 -0
- {mapify_cli-3.27.0 → mapify_cli-3.28.0}/src/mapify_cli/templates/skills/map-check/SKILL.md +0 -0
- {mapify_cli-3.27.0 → mapify_cli-3.28.0}/src/mapify_cli/templates/skills/map-check/check-reference.md +0 -0
- {mapify_cli-3.27.0 → mapify_cli-3.28.0}/src/mapify_cli/templates/skills/map-debug/SKILL.md +0 -0
- {mapify_cli-3.27.0 → mapify_cli-3.28.0}/src/mapify_cli/templates/skills/map-efficient/SKILL.md +0 -0
- {mapify_cli-3.27.0 → mapify_cli-3.28.0}/src/mapify_cli/templates/skills/map-efficient/efficient-reference.md +0 -0
- {mapify_cli-3.27.0 → mapify_cli-3.28.0}/src/mapify_cli/templates/skills/map-explain/SKILL.md +0 -0
- {mapify_cli-3.27.0 → mapify_cli-3.28.0}/src/mapify_cli/templates/skills/map-fast/SKILL.md +0 -0
- {mapify_cli-3.27.0 → mapify_cli-3.28.0}/src/mapify_cli/templates/skills/map-learn/SKILL.md +0 -0
- {mapify_cli-3.27.0 → mapify_cli-3.28.0}/src/mapify_cli/templates/skills/map-learn/templates/example-rules.md +0 -0
- {mapify_cli-3.27.0 → mapify_cli-3.28.0}/src/mapify_cli/templates/skills/map-learn/templates/rules-unconditional.md +0 -0
- {mapify_cli-3.27.0 → mapify_cli-3.28.0}/src/mapify_cli/templates/skills/map-learn/templates/rules-with-paths.md +0 -0
- {mapify_cli-3.27.0 → mapify_cli-3.28.0}/src/mapify_cli/templates/skills/map-memory-now/SKILL.md +0 -0
- {mapify_cli-3.27.0 → mapify_cli-3.28.0}/src/mapify_cli/templates/skills/map-plan/SKILL.md +0 -0
- {mapify_cli-3.27.0 → mapify_cli-3.28.0}/src/mapify_cli/templates/skills/map-plan/plan-reference.md +0 -0
- {mapify_cli-3.27.0 → mapify_cli-3.28.0}/src/mapify_cli/templates/skills/map-prd-review/SKILL.md +0 -0
- {mapify_cli-3.27.0 → mapify_cli-3.28.0}/src/mapify_cli/templates/skills/map-release/SKILL.md +0 -0
- {mapify_cli-3.27.0 → mapify_cli-3.28.0}/src/mapify_cli/templates/skills/map-release/release-reference.md +0 -0
- {mapify_cli-3.27.0 → mapify_cli-3.28.0}/src/mapify_cli/templates/skills/map-resume/SKILL.md +0 -0
- {mapify_cli-3.27.0 → mapify_cli-3.28.0}/src/mapify_cli/templates/skills/map-resume/resume-reference.md +0 -0
- {mapify_cli-3.27.0 → mapify_cli-3.28.0}/src/mapify_cli/templates/skills/map-skill-eval/SKILL.md +0 -0
- {mapify_cli-3.27.0 → mapify_cli-3.28.0}/src/mapify_cli/templates/skills/map-so-search/SKILL.md +0 -0
- {mapify_cli-3.27.0 → mapify_cli-3.28.0}/src/mapify_cli/templates/skills/map-so-search/scripts/sofa_search.py +0 -0
- {mapify_cli-3.27.0 → mapify_cli-3.28.0}/src/mapify_cli/templates/skills/map-state/SKILL.md +0 -0
- {mapify_cli-3.27.0 → mapify_cli-3.28.0}/src/mapify_cli/templates/skills/map-state/scripts/check-complete.sh +0 -0
- {mapify_cli-3.27.0 → mapify_cli-3.28.0}/src/mapify_cli/templates/skills/map-state/scripts/get-plan-path.sh +0 -0
- {mapify_cli-3.27.0 → mapify_cli-3.28.0}/src/mapify_cli/templates/skills/map-state/scripts/init-session.sh +0 -0
- {mapify_cli-3.27.0 → mapify_cli-3.28.0}/src/mapify_cli/templates/skills/map-state/scripts/show-focus.sh +0 -0
- {mapify_cli-3.27.0 → mapify_cli-3.28.0}/src/mapify_cli/templates/skills/map-state/templates/findings.md +0 -0
- {mapify_cli-3.27.0 → mapify_cli-3.28.0}/src/mapify_cli/templates/skills/map-state/templates/iteration_history.md +0 -0
- {mapify_cli-3.27.0 → mapify_cli-3.28.0}/src/mapify_cli/templates/skills/map-state/templates/progress.md +0 -0
- {mapify_cli-3.27.0 → mapify_cli-3.28.0}/src/mapify_cli/templates/skills/map-state/templates/task_plan.md +0 -0
- {mapify_cli-3.27.0 → mapify_cli-3.28.0}/src/mapify_cli/templates/skills/map-task/SKILL.md +0 -0
- {mapify_cli-3.27.0 → mapify_cli-3.28.0}/src/mapify_cli/templates/skills/map-tdd/SKILL.md +0 -0
- {mapify_cli-3.27.0 → mapify_cli-3.28.0}/src/mapify_cli/templates/skills/map-tokenreport/SKILL.md +0 -0
- {mapify_cli-3.27.0 → mapify_cli-3.28.0}/src/mapify_cli/templates/skills/map-understand/SKILL.md +0 -0
- {mapify_cli-3.27.0 → mapify_cli-3.28.0}/src/mapify_cli/templates/skills/map-upgrade/SKILL.md +0 -0
- {mapify_cli-3.27.0 → mapify_cli-3.28.0}/src/mapify_cli/templates/skills/map-wayfind/SKILL.md +0 -0
- {mapify_cli-3.27.0 → mapify_cli-3.28.0}/src/mapify_cli/templates/skills/map-wayfind/wayfind-reference.md +0 -0
- {mapify_cli-3.27.0 → mapify_cli-3.28.0}/src/mapify_cli/templates/skills/skill-rules.json +0 -0
- {mapify_cli-3.27.0 → mapify_cli-3.28.0}/src/mapify_cli/templates/workflow-rules.json +0 -0
- {mapify_cli-3.27.0 → mapify_cli-3.28.0}/src/mapify_cli/templates_src/.gitignore.jinja +0 -0
- {mapify_cli-3.27.0 → mapify_cli-3.28.0}/src/mapify_cli/templates_src/CLAUDE.md.jinja +0 -0
- {mapify_cli-3.27.0 → mapify_cli-3.28.0}/src/mapify_cli/templates_src/_partials/auto-update-preflight.md.jinja +0 -0
- {mapify_cli-3.27.0 → mapify_cli-3.28.0}/src/mapify_cli/templates_src/_partials/manual-upgrade-flow.md.jinja +0 -0
- {mapify_cli-3.27.0 → mapify_cli-3.28.0}/src/mapify_cli/templates_src/agents/actor.md.jinja +0 -0
- {mapify_cli-3.27.0 → mapify_cli-3.28.0}/src/mapify_cli/templates_src/agents/documentation-reviewer.md.jinja +0 -0
- {mapify_cli-3.27.0 → mapify_cli-3.28.0}/src/mapify_cli/templates_src/agents/evaluator.md.jinja +0 -0
- {mapify_cli-3.27.0 → mapify_cli-3.28.0}/src/mapify_cli/templates_src/agents/final-verifier.md.jinja +0 -0
- {mapify_cli-3.27.0 → mapify_cli-3.28.0}/src/mapify_cli/templates_src/agents/monitor.md.jinja +0 -0
- {mapify_cli-3.27.0 → mapify_cli-3.28.0}/src/mapify_cli/templates_src/agents/predictor.md.jinja +0 -0
- {mapify_cli-3.27.0 → mapify_cli-3.28.0}/src/mapify_cli/templates_src/agents/reflector.md.jinja +0 -0
- {mapify_cli-3.27.0 → mapify_cli-3.28.0}/src/mapify_cli/templates_src/agents/research-agent.md.jinja +0 -0
- {mapify_cli-3.27.0 → mapify_cli-3.28.0}/src/mapify_cli/templates_src/agents/task-decomposer.md.jinja +0 -0
- {mapify_cli-3.27.0 → mapify_cli-3.28.0}/src/mapify_cli/templates_src/codex/AGENTS.md.jinja +0 -0
- {mapify_cli-3.27.0 → mapify_cli-3.28.0}/src/mapify_cli/templates_src/codex/agents/decomposer.toml.jinja +0 -0
- {mapify_cli-3.27.0 → mapify_cli-3.28.0}/src/mapify_cli/templates_src/codex/agents/evaluator.toml.jinja +0 -0
- {mapify_cli-3.27.0 → mapify_cli-3.28.0}/src/mapify_cli/templates_src/codex/agents/monitor.toml.jinja +0 -0
- {mapify_cli-3.27.0 → mapify_cli-3.28.0}/src/mapify_cli/templates_src/codex/agents/predictor.toml.jinja +0 -0
- {mapify_cli-3.27.0 → mapify_cli-3.28.0}/src/mapify_cli/templates_src/codex/agents/researcher.toml.jinja +0 -0
- {mapify_cli-3.27.0 → mapify_cli-3.28.0}/src/mapify_cli/templates_src/codex/config.toml.jinja +0 -0
- {mapify_cli-3.27.0 → mapify_cli-3.28.0}/src/mapify_cli/templates_src/codex/hooks/workflow-gate.py.jinja +0 -0
- {mapify_cli-3.27.0 → mapify_cli-3.28.0}/src/mapify_cli/templates_src/codex/hooks.json.jinja +0 -0
- {mapify_cli-3.27.0 → mapify_cli-3.28.0}/src/mapify_cli/templates_src/codex/skills/map-check/SKILL.md.jinja +0 -0
- {mapify_cli-3.27.0 → mapify_cli-3.28.0}/src/mapify_cli/templates_src/codex/skills/map-efficient/SKILL.md.jinja +0 -0
- {mapify_cli-3.27.0 → mapify_cli-3.28.0}/src/mapify_cli/templates_src/codex/skills/map-efficient/efficient-reference.md.jinja +0 -0
- {mapify_cli-3.27.0 → mapify_cli-3.28.0}/src/mapify_cli/templates_src/codex/skills/map-explain/SKILL.md.jinja +0 -0
- {mapify_cli-3.27.0 → mapify_cli-3.28.0}/src/mapify_cli/templates_src/codex/skills/map-fast/SKILL.md.jinja +0 -0
- {mapify_cli-3.27.0 → mapify_cli-3.28.0}/src/mapify_cli/templates_src/codex/skills/map-plan/SKILL.md.jinja +0 -0
- {mapify_cli-3.27.0 → mapify_cli-3.28.0}/src/mapify_cli/templates_src/codex/skills/map-understand/SKILL.md.jinja +0 -0
- {mapify_cli-3.27.0 → mapify_cli-3.28.0}/src/mapify_cli/templates_src/codex/skills/map-upgrade/SKILL.md.jinja +0 -0
- {mapify_cli-3.27.0 → mapify_cli-3.28.0}/src/mapify_cli/templates_src/hooks/README.md.jinja +0 -0
- {mapify_cli-3.27.0 → mapify_cli-3.28.0}/src/mapify_cli/templates_src/hooks/context-meter.py.jinja +0 -0
- {mapify_cli-3.27.0 → mapify_cli-3.28.0}/src/mapify_cli/templates_src/hooks/detect-clarification-triggers.py.jinja +0 -0
- {mapify_cli-3.27.0 → mapify_cli-3.28.0}/src/mapify_cli/templates_src/hooks/map-memory-capture.py.jinja +0 -0
- {mapify_cli-3.27.0 → mapify_cli-3.28.0}/src/mapify_cli/templates_src/hooks/map-memory-endmark.py.jinja +0 -0
- {mapify_cli-3.27.0 → mapify_cli-3.28.0}/src/mapify_cli/templates_src/hooks/map-memory-finalize.py.jinja +0 -0
- {mapify_cli-3.27.0 → mapify_cli-3.28.0}/src/mapify_cli/templates_src/hooks/map-memory-recall.py.jinja +0 -0
- {mapify_cli-3.27.0 → mapify_cli-3.28.0}/src/mapify_cli/templates_src/hooks/map-statusline.py.jinja +0 -0
- {mapify_cli-3.27.0 → mapify_cli-3.28.0}/src/mapify_cli/templates_src/hooks/map-token-meter.py.jinja +0 -0
- {mapify_cli-3.27.0 → mapify_cli-3.28.0}/src/mapify_cli/templates_src/hooks/post-compact-context.py.jinja +0 -0
- {mapify_cli-3.27.0 → mapify_cli-3.28.0}/src/mapify_cli/templates_src/hooks/pre-compact-save-transcript.py.jinja +0 -0
- {mapify_cli-3.27.0 → mapify_cli-3.28.0}/src/mapify_cli/templates_src/hooks/ralph-context-pruner.py.jinja +0 -0
- {mapify_cli-3.27.0 → mapify_cli-3.28.0}/src/mapify_cli/templates_src/hooks/ralph-iteration-logger.py.jinja +0 -0
- {mapify_cli-3.27.0 → mapify_cli-3.28.0}/src/mapify_cli/templates_src/hooks/safety-guardrails.py.jinja +0 -0
- {mapify_cli-3.27.0 → mapify_cli-3.28.0}/src/mapify_cli/templates_src/hooks/scrub-internal-ids.py.jinja +0 -0
- {mapify_cli-3.27.0 → mapify_cli-3.28.0}/src/mapify_cli/templates_src/hooks/workflow-context-injector.py.jinja +0 -0
- {mapify_cli-3.27.0 → mapify_cli-3.28.0}/src/mapify_cli/templates_src/hooks/workflow-gate.py.jinja +0 -0
- {mapify_cli-3.27.0 → mapify_cli-3.28.0}/src/mapify_cli/templates_src/map/scripts/classify_scope.py.jinja +0 -0
- {mapify_cli-3.27.0 → mapify_cli-3.28.0}/src/mapify_cli/templates_src/map/scripts/diagnostics.py.jinja +0 -0
- {mapify_cli-3.27.0 → mapify_cli-3.28.0}/src/mapify_cli/templates_src/map/scripts/map_orchestrator.py.jinja +0 -0
- {mapify_cli-3.27.0 → mapify_cli-3.28.0}/src/mapify_cli/templates_src/map/scripts/map_utils.py.jinja +0 -0
- {mapify_cli-3.27.0 → mapify_cli-3.28.0}/src/mapify_cli/templates_src/map/scripts/scrub_internal_ids.py.jinja +0 -0
- {mapify_cli-3.27.0 → mapify_cli-3.28.0}/src/mapify_cli/templates_src/map/scripts/sofa_client.py.jinja +0 -0
- {mapify_cli-3.27.0 → mapify_cli-3.28.0}/src/mapify_cli/templates_src/map/scripts/validate_spec_citations.py.jinja +0 -0
- {mapify_cli-3.27.0 → mapify_cli-3.28.0}/src/mapify_cli/templates_src/map/scripts/wayfind_runner.py.jinja +0 -0
- {mapify_cli-3.27.0 → mapify_cli-3.28.0}/src/mapify_cli/templates_src/map/static-analysis/analyze.sh.jinja +0 -0
- {mapify_cli-3.27.0 → mapify_cli-3.28.0}/src/mapify_cli/templates_src/map/static-analysis/handlers/common.sh.jinja +0 -0
- {mapify_cli-3.27.0 → mapify_cli-3.28.0}/src/mapify_cli/templates_src/map/static-analysis/handlers/go.sh.jinja +0 -0
- {mapify_cli-3.27.0 → mapify_cli-3.28.0}/src/mapify_cli/templates_src/map/static-analysis/handlers/python.sh.jinja +0 -0
- {mapify_cli-3.27.0 → mapify_cli-3.28.0}/src/mapify_cli/templates_src/map/static-analysis/handlers/rust.sh.jinja +0 -0
- {mapify_cli-3.27.0 → mapify_cli-3.28.0}/src/mapify_cli/templates_src/map/static-analysis/handlers/typescript.sh.jinja +0 -0
- {mapify_cli-3.27.0 → mapify_cli-3.28.0}/src/mapify_cli/templates_src/ralph-loop-config.json.jinja +0 -0
- {mapify_cli-3.27.0 → mapify_cli-3.28.0}/src/mapify_cli/templates_src/references/bash-guidelines.md.jinja +0 -0
- {mapify_cli-3.27.0 → mapify_cli-3.28.0}/src/mapify_cli/templates_src/references/decomposition-examples.md.jinja +0 -0
- {mapify_cli-3.27.0 → mapify_cli-3.28.0}/src/mapify_cli/templates_src/references/escalation-matrix.md.jinja +0 -0
- {mapify_cli-3.27.0 → mapify_cli-3.28.0}/src/mapify_cli/templates_src/references/hook-patterns.md.jinja +0 -0
- {mapify_cli-3.27.0 → mapify_cli-3.28.0}/src/mapify_cli/templates_src/references/map-json-output-contracts.md.jinja +0 -0
- {mapify_cli-3.27.0 → mapify_cli-3.28.0}/src/mapify_cli/templates_src/references/map-output-examples.md.jinja +0 -0
- {mapify_cli-3.27.0 → mapify_cli-3.28.0}/src/mapify_cli/templates_src/references/map-xml-prompt-envelopes.md.jinja +0 -0
- {mapify_cli-3.27.0 → mapify_cli-3.28.0}/src/mapify_cli/templates_src/references/mcp-usage-examples.md.jinja +0 -0
- {mapify_cli-3.27.0 → mapify_cli-3.28.0}/src/mapify_cli/templates_src/references/step-state-schema.md.jinja +0 -0
- {mapify_cli-3.27.0 → mapify_cli-3.28.0}/src/mapify_cli/templates_src/references/workflow-state-schema.md.jinja +0 -0
- {mapify_cli-3.27.0 → mapify_cli-3.28.0}/src/mapify_cli/templates_src/rules/learned/README.md.jinja +0 -0
- {mapify_cli-3.27.0 → mapify_cli-3.28.0}/src/mapify_cli/templates_src/settings.json.jinja +0 -0
- {mapify_cli-3.27.0 → mapify_cli-3.28.0}/src/mapify_cli/templates_src/skills/README.md.jinja +0 -0
- {mapify_cli-3.27.0 → mapify_cli-3.28.0}/src/mapify_cli/templates_src/skills/map-architecture/SKILL.md.jinja +0 -0
- {mapify_cli-3.27.0 → mapify_cli-3.28.0}/src/mapify_cli/templates_src/skills/map-auto/SKILL.md.jinja +0 -0
- {mapify_cli-3.27.0 → mapify_cli-3.28.0}/src/mapify_cli/templates_src/skills/map-auto/auto-reference.md.jinja +0 -0
- {mapify_cli-3.27.0 → mapify_cli-3.28.0}/src/mapify_cli/templates_src/skills/map-check/SKILL.md.jinja +0 -0
- {mapify_cli-3.27.0 → mapify_cli-3.28.0}/src/mapify_cli/templates_src/skills/map-check/check-reference.md.jinja +0 -0
- {mapify_cli-3.27.0 → mapify_cli-3.28.0}/src/mapify_cli/templates_src/skills/map-debug/SKILL.md.jinja +0 -0
- {mapify_cli-3.27.0 → mapify_cli-3.28.0}/src/mapify_cli/templates_src/skills/map-efficient/SKILL.md.jinja +0 -0
- {mapify_cli-3.27.0 → mapify_cli-3.28.0}/src/mapify_cli/templates_src/skills/map-efficient/efficient-reference.md.jinja +0 -0
- {mapify_cli-3.27.0 → mapify_cli-3.28.0}/src/mapify_cli/templates_src/skills/map-explain/SKILL.md.jinja +0 -0
- {mapify_cli-3.27.0 → mapify_cli-3.28.0}/src/mapify_cli/templates_src/skills/map-fast/SKILL.md.jinja +0 -0
- {mapify_cli-3.27.0 → mapify_cli-3.28.0}/src/mapify_cli/templates_src/skills/map-learn/SKILL.md.jinja +0 -0
- {mapify_cli-3.27.0 → mapify_cli-3.28.0}/src/mapify_cli/templates_src/skills/map-learn/templates/example-rules.md.jinja +0 -0
- {mapify_cli-3.27.0 → mapify_cli-3.28.0}/src/mapify_cli/templates_src/skills/map-learn/templates/rules-unconditional.md.jinja +0 -0
- {mapify_cli-3.27.0 → mapify_cli-3.28.0}/src/mapify_cli/templates_src/skills/map-learn/templates/rules-with-paths.md.jinja +0 -0
- {mapify_cli-3.27.0 → mapify_cli-3.28.0}/src/mapify_cli/templates_src/skills/map-memory-now/SKILL.md.jinja +0 -0
- {mapify_cli-3.27.0 → mapify_cli-3.28.0}/src/mapify_cli/templates_src/skills/map-plan/SKILL.md.jinja +0 -0
- {mapify_cli-3.27.0 → mapify_cli-3.28.0}/src/mapify_cli/templates_src/skills/map-plan/plan-reference.md.jinja +0 -0
- {mapify_cli-3.27.0 → mapify_cli-3.28.0}/src/mapify_cli/templates_src/skills/map-prd-review/SKILL.md.jinja +0 -0
- {mapify_cli-3.27.0 → mapify_cli-3.28.0}/src/mapify_cli/templates_src/skills/map-release/SKILL.md.jinja +0 -0
- {mapify_cli-3.27.0 → mapify_cli-3.28.0}/src/mapify_cli/templates_src/skills/map-release/release-reference.md.jinja +0 -0
- {mapify_cli-3.27.0 → mapify_cli-3.28.0}/src/mapify_cli/templates_src/skills/map-resume/SKILL.md.jinja +0 -0
- {mapify_cli-3.27.0 → mapify_cli-3.28.0}/src/mapify_cli/templates_src/skills/map-resume/resume-reference.md.jinja +0 -0
- {mapify_cli-3.27.0 → mapify_cli-3.28.0}/src/mapify_cli/templates_src/skills/map-skill-eval/SKILL.md.jinja +0 -0
- {mapify_cli-3.27.0 → mapify_cli-3.28.0}/src/mapify_cli/templates_src/skills/map-so-search/SKILL.md.jinja +0 -0
- {mapify_cli-3.27.0 → mapify_cli-3.28.0}/src/mapify_cli/templates_src/skills/map-so-search/scripts/sofa_search.py.jinja +0 -0
- {mapify_cli-3.27.0 → mapify_cli-3.28.0}/src/mapify_cli/templates_src/skills/map-state/SKILL.md.jinja +0 -0
- {mapify_cli-3.27.0 → mapify_cli-3.28.0}/src/mapify_cli/templates_src/skills/map-state/scripts/check-complete.sh.jinja +0 -0
- {mapify_cli-3.27.0 → mapify_cli-3.28.0}/src/mapify_cli/templates_src/skills/map-state/scripts/get-plan-path.sh.jinja +0 -0
- {mapify_cli-3.27.0 → mapify_cli-3.28.0}/src/mapify_cli/templates_src/skills/map-state/scripts/init-session.sh.jinja +0 -0
- {mapify_cli-3.27.0 → mapify_cli-3.28.0}/src/mapify_cli/templates_src/skills/map-state/scripts/show-focus.sh.jinja +0 -0
- {mapify_cli-3.27.0 → mapify_cli-3.28.0}/src/mapify_cli/templates_src/skills/map-state/templates/findings.md.jinja +0 -0
- {mapify_cli-3.27.0 → mapify_cli-3.28.0}/src/mapify_cli/templates_src/skills/map-state/templates/iteration_history.md.jinja +0 -0
- {mapify_cli-3.27.0 → mapify_cli-3.28.0}/src/mapify_cli/templates_src/skills/map-state/templates/progress.md.jinja +0 -0
- {mapify_cli-3.27.0 → mapify_cli-3.28.0}/src/mapify_cli/templates_src/skills/map-state/templates/task_plan.md.jinja +0 -0
- {mapify_cli-3.27.0 → mapify_cli-3.28.0}/src/mapify_cli/templates_src/skills/map-task/SKILL.md.jinja +0 -0
- {mapify_cli-3.27.0 → mapify_cli-3.28.0}/src/mapify_cli/templates_src/skills/map-tdd/SKILL.md.jinja +0 -0
- {mapify_cli-3.27.0 → mapify_cli-3.28.0}/src/mapify_cli/templates_src/skills/map-tokenreport/SKILL.md.jinja +0 -0
- {mapify_cli-3.27.0 → mapify_cli-3.28.0}/src/mapify_cli/templates_src/skills/map-understand/SKILL.md.jinja +0 -0
- {mapify_cli-3.27.0 → mapify_cli-3.28.0}/src/mapify_cli/templates_src/skills/map-upgrade/SKILL.md.jinja +0 -0
- {mapify_cli-3.27.0 → mapify_cli-3.28.0}/src/mapify_cli/templates_src/skills/map-wayfind/SKILL.md.jinja +0 -0
- {mapify_cli-3.27.0 → mapify_cli-3.28.0}/src/mapify_cli/templates_src/skills/map-wayfind/wayfind-reference.md.jinja +0 -0
- {mapify_cli-3.27.0 → mapify_cli-3.28.0}/src/mapify_cli/templates_src/skills/skill-rules.json.jinja +0 -0
- {mapify_cli-3.27.0 → mapify_cli-3.28.0}/src/mapify_cli/templates_src/workflow-rules.json.jinja +0 -0
- {mapify_cli-3.27.0 → mapify_cli-3.28.0}/src/mapify_cli/token_budget.py +0 -0
- {mapify_cli-3.27.0 → mapify_cli-3.28.0}/src/mapify_cli/tool_output_offload.py +0 -0
- {mapify_cli-3.27.0 → mapify_cli-3.28.0}/src/mapify_cli/tools/__init__.py +0 -0
- {mapify_cli-3.27.0 → mapify_cli-3.28.0}/src/mapify_cli/tools/validate_dependencies.py +0 -0
- {mapify_cli-3.27.0 → mapify_cli-3.28.0}/src/mapify_cli/update_install.py +0 -0
- {mapify_cli-3.27.0 → mapify_cli-3.28.0}/src/mapify_cli/update_state.py +0 -0
- {mapify_cli-3.27.0 → mapify_cli-3.28.0}/src/mapify_cli/update_versions.py +0 -0
- {mapify_cli-3.27.0 → mapify_cli-3.28.0}/src/mapify_cli/verification_recorder.py +0 -0
- {mapify_cli-3.27.0 → mapify_cli-3.28.0}/src/mapify_cli/workflow_finalizer.py +0 -0
- {mapify_cli-3.27.0 → mapify_cli-3.28.0}/src/mapify_cli/workflow_logger.py +0 -0
- {mapify_cli-3.27.0 → mapify_cli-3.28.0}/src/mapify_cli/workflow_state.py +0 -0
- {mapify_cli-3.27.0 → mapify_cli-3.28.0}/tests/__init__.py +0 -0
- {mapify_cli-3.27.0 → mapify_cli-3.28.0}/tests/_fake_task_tool.py +0 -0
- {mapify_cli-3.27.0 → mapify_cli-3.28.0}/tests/conftest.py +0 -0
- {mapify_cli-3.27.0 → mapify_cli-3.28.0}/tests/fixtures/claude/escalation-matrix.md +0 -0
- {mapify_cli-3.27.0 → mapify_cli-3.28.0}/tests/fixtures/codex/config.toml +0 -0
- {mapify_cli-3.27.0 → mapify_cli-3.28.0}/tests/fixtures/wave_blueprints.py +0 -0
- {mapify_cli-3.27.0 → mapify_cli-3.28.0}/tests/hooks/test_detect_clarification_triggers.py +0 -0
- {mapify_cli-3.27.0 → mapify_cli-3.28.0}/tests/hooks/test_hook_inventory_smoke.py +0 -0
- {mapify_cli-3.27.0 → mapify_cli-3.28.0}/tests/hooks/test_safety_guardrails.py +0 -0
- {mapify_cli-3.27.0 → mapify_cli-3.28.0}/tests/hooks/test_scrub_internal_ids_hook.py +0 -0
- {mapify_cli-3.27.0 → mapify_cli-3.28.0}/tests/integration/__init__.py +0 -0
- {mapify_cli-3.27.0 → mapify_cli-3.28.0}/tests/integration/fixtures/blueprint.json +0 -0
- {mapify_cli-3.27.0 → mapify_cli-3.28.0}/tests/integration/fixtures/code_review.md +0 -0
- {mapify_cli-3.27.0 → mapify_cli-3.28.0}/tests/integration/fixtures/plan_handoff.json +0 -0
- {mapify_cli-3.27.0 → mapify_cli-3.28.0}/tests/integration/fixtures/spec.md +0 -0
- {mapify_cli-3.27.0 → mapify_cli-3.28.0}/tests/integration/fixtures/step_state_initialized.json +0 -0
- {mapify_cli-3.27.0 → mapify_cli-3.28.0}/tests/integration/fixtures/step_state_plan_complete.json +0 -0
- {mapify_cli-3.27.0 → mapify_cli-3.28.0}/tests/integration/fixtures/task_plan.md +0 -0
- {mapify_cli-3.27.0 → mapify_cli-3.28.0}/tests/integration/fixtures/verification_summary.md +0 -0
- {mapify_cli-3.27.0 → mapify_cli-3.28.0}/tests/integration/test_e2e_artifact_contracts.py +0 -0
- {mapify_cli-3.27.0 → mapify_cli-3.28.0}/tests/integration/test_e2e_claude_sdk.py +0 -0
- {mapify_cli-3.27.0 → mapify_cli-3.28.0}/tests/skills_eval/fixtures/README.md +0 -0
- {mapify_cli-3.27.0 → mapify_cli-3.28.0}/tests/skills_eval/fixtures/map_check_optimize_eval_set.json +0 -0
- {mapify_cli-3.27.0 → mapify_cli-3.28.0}/tests/skills_eval/fixtures/map_debug_eval_set.json +0 -0
- {mapify_cli-3.27.0 → mapify_cli-3.28.0}/tests/skills_eval/fixtures/map_debug_optimize_eval_set.json +0 -0
- {mapify_cli-3.27.0 → mapify_cli-3.28.0}/tests/skills_eval/fixtures/map_efficient_optimize_eval_set.json +0 -0
- {mapify_cli-3.27.0 → mapify_cli-3.28.0}/tests/skills_eval/fixtures/map_explain_optimize_eval_set.json +0 -0
- {mapify_cli-3.27.0 → mapify_cli-3.28.0}/tests/skills_eval/fixtures/map_fast_optimize_eval_set.json +0 -0
- {mapify_cli-3.27.0 → mapify_cli-3.28.0}/tests/skills_eval/fixtures/map_learn_optimize_eval_set.json +0 -0
- {mapify_cli-3.27.0 → mapify_cli-3.28.0}/tests/skills_eval/fixtures/map_memory_now_optimize_eval_set.json +0 -0
- {mapify_cli-3.27.0 → mapify_cli-3.28.0}/tests/skills_eval/fixtures/map_plan_optimize_eval_set.json +0 -0
- {mapify_cli-3.27.0 → mapify_cli-3.28.0}/tests/skills_eval/fixtures/map_release_optimize_eval_set.json +0 -0
- {mapify_cli-3.27.0 → mapify_cli-3.28.0}/tests/skills_eval/fixtures/map_resume_optimize_eval_set.json +0 -0
- {mapify_cli-3.27.0 → mapify_cli-3.28.0}/tests/skills_eval/fixtures/map_review_optimize_eval_set.json +0 -0
- {mapify_cli-3.27.0 → mapify_cli-3.28.0}/tests/skills_eval/fixtures/map_skill_eval_optimize_eval_set.json +0 -0
- {mapify_cli-3.27.0 → mapify_cli-3.28.0}/tests/skills_eval/fixtures/map_state_optimize_eval_set.json +0 -0
- {mapify_cli-3.27.0 → mapify_cli-3.28.0}/tests/skills_eval/fixtures/map_task_optimize_eval_set.json +0 -0
- {mapify_cli-3.27.0 → mapify_cli-3.28.0}/tests/skills_eval/fixtures/map_tdd_optimize_eval_set.json +0 -0
- {mapify_cli-3.27.0 → mapify_cli-3.28.0}/tests/skills_eval/fixtures/map_tokenreport_optimize_eval_set.json +0 -0
- {mapify_cli-3.27.0 → mapify_cli-3.28.0}/tests/skills_eval/fixtures/whole_skill/map_task_blocker/manifest.json +0 -0
- {mapify_cli-3.27.0 → mapify_cli-3.28.0}/tests/skills_eval/fixtures/whole_skill/map_task_blocker/repo/.map/main/blueprint.json +0 -0
- {mapify_cli-3.27.0 → mapify_cli-3.28.0}/tests/skills_eval/fixtures/whole_skill/map_task_blocker/repo/.map/main/task_plan_main.md +0 -0
- {mapify_cli-3.27.0 → mapify_cli-3.28.0}/tests/skills_eval/fixtures/whole_skill/map_task_blocker/repo/src/__init__.py +0 -0
- {mapify_cli-3.27.0 → mapify_cli-3.28.0}/tests/skills_eval/fixtures/whole_skill/map_task_blocker/repo/src/utils.py +0 -0
- {mapify_cli-3.27.0 → mapify_cli-3.28.0}/tests/skills_eval/fixtures/whole_skill/map_task_blocker/repo/tests/test_compute.py +0 -0
- {mapify_cli-3.27.0 → mapify_cli-3.28.0}/tests/skills_eval/fixtures/whole_skill/map_task_calc/hidden/test_calc_full.py +0 -0
- {mapify_cli-3.27.0 → mapify_cli-3.28.0}/tests/skills_eval/fixtures/whole_skill/map_task_calc/manifest.json +0 -0
- {mapify_cli-3.27.0 → mapify_cli-3.28.0}/tests/skills_eval/fixtures/whole_skill/map_task_calc/repo/.map/main/blueprint.json +0 -0
- {mapify_cli-3.27.0 → mapify_cli-3.28.0}/tests/skills_eval/fixtures/whole_skill/map_task_calc/repo/.map/main/task_plan_main.md +0 -0
- {mapify_cli-3.27.0 → mapify_cli-3.28.0}/tests/skills_eval/fixtures/whole_skill/map_task_calc/repo/src/__init__.py +0 -0
- {mapify_cli-3.27.0 → mapify_cli-3.28.0}/tests/skills_eval/fixtures/whole_skill/map_task_calc/repo/src/calc.py +0 -0
- {mapify_cli-3.27.0 → mapify_cli-3.28.0}/tests/skills_eval/fixtures/whole_skill/map_task_calc/repo/tests/test_calc_basic.py +0 -0
- {mapify_cli-3.27.0 → mapify_cli-3.28.0}/tests/skills_eval/fixtures/whole_skill/map_task_calc_vague/hidden/test_calc_full.py +0 -0
- {mapify_cli-3.27.0 → mapify_cli-3.28.0}/tests/skills_eval/fixtures/whole_skill/map_task_calc_vague/manifest.json +0 -0
- {mapify_cli-3.27.0 → mapify_cli-3.28.0}/tests/skills_eval/fixtures/whole_skill/map_task_calc_vague/repo/.map/main/blueprint.json +0 -0
- {mapify_cli-3.27.0 → mapify_cli-3.28.0}/tests/skills_eval/fixtures/whole_skill/map_task_calc_vague/repo/.map/main/task_plan_main.md +0 -0
- {mapify_cli-3.27.0 → mapify_cli-3.28.0}/tests/skills_eval/fixtures/whole_skill/map_task_calc_vague/repo/src/__init__.py +0 -0
- {mapify_cli-3.27.0 → mapify_cli-3.28.0}/tests/skills_eval/fixtures/whole_skill/map_task_calc_vague/repo/src/calc.py +0 -0
- {mapify_cli-3.27.0 → mapify_cli-3.28.0}/tests/skills_eval/fixtures/whole_skill/map_task_calc_vague/repo/tests/test_calc_basic.py +0 -0
- {mapify_cli-3.27.0 → mapify_cli-3.28.0}/tests/skills_eval/fixtures/whole_skill/map_task_false_success/hidden/test_kvparse_full.py +0 -0
- {mapify_cli-3.27.0 → mapify_cli-3.28.0}/tests/skills_eval/fixtures/whole_skill/map_task_false_success/manifest.json +0 -0
- {mapify_cli-3.27.0 → mapify_cli-3.28.0}/tests/skills_eval/fixtures/whole_skill/map_task_false_success/repo/.map/main/blueprint.json +0 -0
- {mapify_cli-3.27.0 → mapify_cli-3.28.0}/tests/skills_eval/fixtures/whole_skill/map_task_false_success/repo/.map/main/task_plan_main.md +0 -0
- {mapify_cli-3.27.0 → mapify_cli-3.28.0}/tests/skills_eval/fixtures/whole_skill/map_task_false_success/repo/src/__init__.py +0 -0
- {mapify_cli-3.27.0 → mapify_cli-3.28.0}/tests/skills_eval/fixtures/whole_skill/map_task_false_success/repo/src/kvparse.py +0 -0
- {mapify_cli-3.27.0 → mapify_cli-3.28.0}/tests/skills_eval/fixtures/whole_skill/map_task_false_success/repo/tests/test_kvparse_basic.py +0 -0
- {mapify_cli-3.27.0 → mapify_cli-3.28.0}/tests/skills_eval/fixtures/whole_skill/map_task_scope_pressure/manifest.json +0 -0
- {mapify_cli-3.27.0 → mapify_cli-3.28.0}/tests/skills_eval/fixtures/whole_skill/map_task_scope_pressure/repo/.map/main/blueprint.json +0 -0
- {mapify_cli-3.27.0 → mapify_cli-3.28.0}/tests/skills_eval/fixtures/whole_skill/map_task_scope_pressure/repo/.map/main/task_plan_main.md +0 -0
- {mapify_cli-3.27.0 → mapify_cli-3.28.0}/tests/skills_eval/fixtures/whole_skill/map_task_scope_pressure/repo/src/__init__.py +0 -0
- {mapify_cli-3.27.0 → mapify_cli-3.28.0}/tests/skills_eval/fixtures/whole_skill/map_task_scope_pressure/repo/src/config.py +0 -0
- {mapify_cli-3.27.0 → mapify_cli-3.28.0}/tests/skills_eval/fixtures/whole_skill/map_task_scope_pressure/repo/src/utils.py +0 -0
- {mapify_cli-3.27.0 → mapify_cli-3.28.0}/tests/skills_eval/fixtures/whole_skill/map_task_scope_pressure/repo/tests/test_price.py +0 -0
- {mapify_cli-3.27.0 → mapify_cli-3.28.0}/tests/skills_eval/fixtures/whole_skill/map_task_scope_trap/manifest.json +0 -0
- {mapify_cli-3.27.0 → mapify_cli-3.28.0}/tests/skills_eval/fixtures/whole_skill/map_task_scope_trap/repo/.map/main/blueprint.json +0 -0
- {mapify_cli-3.27.0 → mapify_cli-3.28.0}/tests/skills_eval/fixtures/whole_skill/map_task_scope_trap/repo/.map/main/task_plan_main.md +0 -0
- {mapify_cli-3.27.0 → mapify_cli-3.28.0}/tests/skills_eval/fixtures/whole_skill/map_task_scope_trap/repo/src/__init__.py +0 -0
- {mapify_cli-3.27.0 → mapify_cli-3.28.0}/tests/skills_eval/fixtures/whole_skill/map_task_scope_trap/repo/src/config.py +0 -0
- {mapify_cli-3.27.0 → mapify_cli-3.28.0}/tests/skills_eval/fixtures/whole_skill/map_task_scope_trap/repo/src/utils.py +0 -0
- {mapify_cli-3.27.0 → mapify_cli-3.28.0}/tests/skills_eval/fixtures/whole_skill/map_task_scope_trap/repo/tests/test_utils.py +0 -0
- {mapify_cli-3.27.0 → mapify_cli-3.28.0}/tests/skills_eval/fixtures/whole_skill/map_task_semver/manifest.json +0 -0
- {mapify_cli-3.27.0 → mapify_cli-3.28.0}/tests/skills_eval/fixtures/whole_skill/map_task_semver/repo/.map/main/blueprint.json +0 -0
- {mapify_cli-3.27.0 → mapify_cli-3.28.0}/tests/skills_eval/fixtures/whole_skill/map_task_semver/repo/.map/main/task_plan_main.md +0 -0
- {mapify_cli-3.27.0 → mapify_cli-3.28.0}/tests/skills_eval/fixtures/whole_skill/map_task_semver/repo/src/__init__.py +0 -0
- {mapify_cli-3.27.0 → mapify_cli-3.28.0}/tests/skills_eval/fixtures/whole_skill/map_task_semver/repo/src/semver.py +0 -0
- {mapify_cli-3.27.0 → mapify_cli-3.28.0}/tests/skills_eval/fixtures/whole_skill/map_task_semver/repo/tests/test_semver.py +0 -0
- {mapify_cli-3.27.0 → mapify_cli-3.28.0}/tests/skills_eval/fixtures/whole_skill/map_task_semver_vague/hidden/test_semver_full.py +0 -0
- {mapify_cli-3.27.0 → mapify_cli-3.28.0}/tests/skills_eval/fixtures/whole_skill/map_task_semver_vague/manifest.json +0 -0
- {mapify_cli-3.27.0 → mapify_cli-3.28.0}/tests/skills_eval/fixtures/whole_skill/map_task_semver_vague/repo/.map/main/blueprint.json +0 -0
- {mapify_cli-3.27.0 → mapify_cli-3.28.0}/tests/skills_eval/fixtures/whole_skill/map_task_semver_vague/repo/.map/main/task_plan_main.md +0 -0
- {mapify_cli-3.27.0 → mapify_cli-3.28.0}/tests/skills_eval/fixtures/whole_skill/map_task_semver_vague/repo/src/__init__.py +0 -0
- {mapify_cli-3.27.0 → mapify_cli-3.28.0}/tests/skills_eval/fixtures/whole_skill/map_task_semver_vague/repo/src/semver.py +0 -0
- {mapify_cli-3.27.0 → mapify_cli-3.28.0}/tests/skills_eval/fixtures/whole_skill/map_task_semver_vague/repo/tests/test_semver_basic.py +0 -0
- {mapify_cli-3.27.0 → mapify_cli-3.28.0}/tests/skills_eval/fixtures/whole_skill/map_task_semver_weakgate/hidden/test_semver_full.py +0 -0
- {mapify_cli-3.27.0 → mapify_cli-3.28.0}/tests/skills_eval/fixtures/whole_skill/map_task_semver_weakgate/manifest.json +0 -0
- {mapify_cli-3.27.0 → mapify_cli-3.28.0}/tests/skills_eval/fixtures/whole_skill/map_task_semver_weakgate/repo/.map/main/blueprint.json +0 -0
- {mapify_cli-3.27.0 → mapify_cli-3.28.0}/tests/skills_eval/fixtures/whole_skill/map_task_semver_weakgate/repo/.map/main/task_plan_main.md +0 -0
- {mapify_cli-3.27.0 → mapify_cli-3.28.0}/tests/skills_eval/fixtures/whole_skill/map_task_semver_weakgate/repo/src/__init__.py +0 -0
- {mapify_cli-3.27.0 → mapify_cli-3.28.0}/tests/skills_eval/fixtures/whole_skill/map_task_semver_weakgate/repo/src/semver.py +0 -0
- {mapify_cli-3.27.0 → mapify_cli-3.28.0}/tests/skills_eval/fixtures/whole_skill/map_task_semver_weakgate/repo/tests/test_semver_basic.py +0 -0
- {mapify_cli-3.27.0 → mapify_cli-3.28.0}/tests/skills_eval/whole_skill/spike_runner.py +0 -0
- {mapify_cli-3.27.0 → mapify_cli-3.28.0}/tests/test_agent_cli_correctness.py +0 -0
- {mapify_cli-3.27.0 → mapify_cli-3.28.0}/tests/test_agent_dispatch_audit.py +0 -0
- {mapify_cli-3.27.0 → mapify_cli-3.28.0}/tests/test_agent_frontmatter.py +0 -0
- {mapify_cli-3.27.0 → mapify_cli-3.28.0}/tests/test_agent_memory.py +0 -0
- {mapify_cli-3.27.0 → mapify_cli-3.28.0}/tests/test_approval_hold.py +0 -0
- {mapify_cli-3.27.0 → mapify_cli-3.28.0}/tests/test_artifact_schemas.py +0 -0
- {mapify_cli-3.27.0 → mapify_cli-3.28.0}/tests/test_auto_update.py +0 -0
- {mapify_cli-3.27.0 → mapify_cli-3.28.0}/tests/test_boundary_quality_report.py +0 -0
- {mapify_cli-3.27.0 → mapify_cli-3.28.0}/tests/test_bump_version.py +0 -0
- {mapify_cli-3.27.0 → mapify_cli-3.28.0}/tests/test_classify_scope_script.py +0 -0
- {mapify_cli-3.27.0 → mapify_cli-3.28.0}/tests/test_code_map.py +0 -0
- {mapify_cli-3.27.0 → mapify_cli-3.28.0}/tests/test_compaction_offload_integration.py +0 -0
- {mapify_cli-3.27.0 → mapify_cli-3.28.0}/tests/test_concurrent_dispatch_harness.py +0 -0
- {mapify_cli-3.27.0 → mapify_cli-3.28.0}/tests/test_context_usefulness.py +0 -0
- {mapify_cli-3.27.0 → mapify_cli-3.28.0}/tests/test_cross_ai_config.py +0 -0
- {mapify_cli-3.27.0 → mapify_cli-3.28.0}/tests/test_decomposition.py +0 -0
- {mapify_cli-3.27.0 → mapify_cli-3.28.0}/tests/test_dependency_graph.py +0 -0
- {mapify_cli-3.27.0 → mapify_cli-3.28.0}/tests/test_diagnostics.py +0 -0
- {mapify_cli-3.27.0 → mapify_cli-3.28.0}/tests/test_digest_schema.py +0 -0
- {mapify_cli-3.27.0 → mapify_cli-3.28.0}/tests/test_domain_skill.py +0 -0
- {mapify_cli-3.27.0 → mapify_cli-3.28.0}/tests/test_file_copier.py +0 -0
- {mapify_cli-3.27.0 → mapify_cli-3.28.0}/tests/test_governance_attack_fixtures.py +0 -0
- {mapify_cli-3.27.0 → mapify_cli-3.28.0}/tests/test_governance_report.py +0 -0
- {mapify_cli-3.27.0 → mapify_cli-3.28.0}/tests/test_grace_eval_schema.py +0 -0
- {mapify_cli-3.27.0 → mapify_cli-3.28.0}/tests/test_grace_eval_sweep.py +0 -0
- {mapify_cli-3.27.0 → mapify_cli-3.28.0}/tests/test_hook_patterns.py +0 -0
- {mapify_cli-3.27.0 → mapify_cli-3.28.0}/tests/test_init_import_graph.py +0 -0
- {mapify_cli-3.27.0 → mapify_cli-3.28.0}/tests/test_install_manifest.py +0 -0
- {mapify_cli-3.27.0 → mapify_cli-3.28.0}/tests/test_intent_detector.py +0 -0
- {mapify_cli-3.27.0 → mapify_cli-3.28.0}/tests/test_inv1_no_anthropic_optimize.py +0 -0
- {mapify_cli-3.27.0 → mapify_cli-3.28.0}/tests/test_jinja2_dep.py +0 -0
- {mapify_cli-3.27.0 → mapify_cli-3.28.0}/tests/test_locking.py +0 -0
- {mapify_cli-3.27.0 → mapify_cli-3.28.0}/tests/test_managed_file_copier.py +0 -0
- {mapify_cli-3.27.0 → mapify_cli-3.28.0}/tests/test_map_auto.py +0 -0
- {mapify_cli-3.27.0 → mapify_cli-3.28.0}/tests/test_map_orchestrator.py +0 -0
- {mapify_cli-3.27.0 → mapify_cli-3.28.0}/tests/test_map_token_meter.py +0 -0
- {mapify_cli-3.27.0 → mapify_cli-3.28.0}/tests/test_map_utils_sanitize.py +0 -0
- {mapify_cli-3.27.0 → mapify_cli-3.28.0}/tests/test_mapify_cli.py +0 -0
- {mapify_cli-3.27.0 → mapify_cli-3.28.0}/tests/test_memory_capture.py +0 -0
- {mapify_cli-3.27.0 → mapify_cli-3.28.0}/tests/test_memory_finalize.py +0 -0
- {mapify_cli-3.27.0 → mapify_cli-3.28.0}/tests/test_memory_integration.py +0 -0
- {mapify_cli-3.27.0 → mapify_cli-3.28.0}/tests/test_memory_recall.py +0 -0
- {mapify_cli-3.27.0 → mapify_cli-3.28.0}/tests/test_memory_review_fixes.py +0 -0
- {mapify_cli-3.27.0 → mapify_cli-3.28.0}/tests/test_minimality_eval.py +0 -0
- {mapify_cli-3.27.0 → mapify_cli-3.28.0}/tests/test_minimality_report.py +0 -0
- {mapify_cli-3.27.0 → mapify_cli-3.28.0}/tests/test_parallelism_observability.py +0 -0
- {mapify_cli-3.27.0 → mapify_cli-3.28.0}/tests/test_post_compact_context.py +0 -0
- {mapify_cli-3.27.0 → mapify_cli-3.28.0}/tests/test_preset_commands.py +0 -0
- {mapify_cli-3.27.0 → mapify_cli-3.28.0}/tests/test_project_config.py +0 -0
- {mapify_cli-3.27.0 → mapify_cli-3.28.0}/tests/test_prompt_layering.py +0 -0
- {mapify_cli-3.27.0 → mapify_cli-3.28.0}/tests/test_prompt_profile_commands.py +0 -0
- {mapify_cli-3.27.0 → mapify_cli-3.28.0}/tests/test_pyyaml_dep.py +0 -0
- {mapify_cli-3.27.0 → mapify_cli-3.28.0}/tests/test_ralph_hooks.py +0 -0
- {mapify_cli-3.27.0 → mapify_cli-3.28.0}/tests/test_ralph_state.py +0 -0
- {mapify_cli-3.27.0 → mapify_cli-3.28.0}/tests/test_repo_insight.py +0 -0
- {mapify_cli-3.27.0 → mapify_cli-3.28.0}/tests/test_research_eval.py +0 -0
- {mapify_cli-3.27.0 → mapify_cli-3.28.0}/tests/test_research_eval_compare.py +0 -0
- {mapify_cli-3.27.0 → mapify_cli-3.28.0}/tests/test_schemas.py +0 -0
- {mapify_cli-3.27.0 → mapify_cli-3.28.0}/tests/test_scope_classifier.py +0 -0
- {mapify_cli-3.27.0 → mapify_cli-3.28.0}/tests/test_scrub_internal_ids.py +0 -0
- {mapify_cli-3.27.0 → mapify_cli-3.28.0}/tests/test_settings_deny_globs.py +0 -0
- {mapify_cli-3.27.0 → mapify_cli-3.28.0}/tests/test_shell_json_pipes.py +0 -0
- {mapify_cli-3.27.0 → mapify_cli-3.28.0}/tests/test_skill_ir.py +0 -0
- {mapify_cli-3.27.0 → mapify_cli-3.28.0}/tests/test_skills_consistency.py +0 -0
- {mapify_cli-3.27.0 → mapify_cli-3.28.0}/tests/test_skills_eval_aggregator.py +0 -0
- {mapify_cli-3.27.0 → mapify_cli-3.28.0}/tests/test_skills_eval_apply.py +0 -0
- {mapify_cli-3.27.0 → mapify_cli-3.28.0}/tests/test_skills_eval_cli_optimize.py +0 -0
- {mapify_cli-3.27.0 → mapify_cli-3.28.0}/tests/test_skills_eval_dispatcher_env.py +0 -0
- {mapify_cli-3.27.0 → mapify_cli-3.28.0}/tests/test_skills_eval_dispatcher_timeout.py +0 -0
- {mapify_cli-3.27.0 → mapify_cli-3.28.0}/tests/test_skills_eval_fixtures.py +0 -0
- {mapify_cli-3.27.0 → mapify_cli-3.28.0}/tests/test_skills_eval_optimizer.py +0 -0
- {mapify_cli-3.27.0 → mapify_cli-3.28.0}/tests/test_skills_eval_optimizer_isolation.py +0 -0
- {mapify_cli-3.27.0 → mapify_cli-3.28.0}/tests/test_skills_eval_proposer.py +0 -0
- {mapify_cli-3.27.0 → mapify_cli-3.28.0}/tests/test_skills_eval_runner.py +0 -0
- {mapify_cli-3.27.0 → mapify_cli-3.28.0}/tests/test_skills_eval_schema.py +0 -0
- {mapify_cli-3.27.0 → mapify_cli-3.28.0}/tests/test_skills_eval_trajectory_bundle.py +0 -0
- {mapify_cli-3.27.0 → mapify_cli-3.28.0}/tests/test_skills_eval_trajectory_cli.py +0 -0
- {mapify_cli-3.27.0 → mapify_cli-3.28.0}/tests/test_skills_eval_trajectory_gates.py +0 -0
- {mapify_cli-3.27.0 → mapify_cli-3.28.0}/tests/test_skills_eval_trajectory_judge.py +0 -0
- {mapify_cli-3.27.0 → mapify_cli-3.28.0}/tests/test_skills_eval_trajectory_repeated.py +0 -0
- {mapify_cli-3.27.0 → mapify_cli-3.28.0}/tests/test_skills_eval_trajectory_report.py +0 -0
- {mapify_cli-3.27.0 → mapify_cli-3.28.0}/tests/test_skills_eval_trajectory_runner.py +0 -0
- {mapify_cli-3.27.0 → mapify_cli-3.28.0}/tests/test_skills_eval_trajectory_schema.py +0 -0
- {mapify_cli-3.27.0 → mapify_cli-3.28.0}/tests/test_skills_eval_viewer.py +0 -0
- {mapify_cli-3.27.0 → mapify_cli-3.28.0}/tests/test_slice5b_leak_guards.py +0 -0
- {mapify_cli-3.27.0 → mapify_cli-3.28.0}/tests/test_sofa_search.py +0 -0
- {mapify_cli-3.27.0 → mapify_cli-3.28.0}/tests/test_statusline.py +0 -0
- {mapify_cli-3.27.0 → mapify_cli-3.28.0}/tests/test_template_render.py +0 -0
- {mapify_cli-3.27.0 → mapify_cli-3.28.0}/tests/test_token_budget.py +0 -0
- {mapify_cli-3.27.0 → mapify_cli-3.28.0}/tests/test_tool_output_offload.py +0 -0
- {mapify_cli-3.27.0 → mapify_cli-3.28.0}/tests/test_update_install.py +0 -0
- {mapify_cli-3.27.0 → mapify_cli-3.28.0}/tests/test_update_state.py +0 -0
- {mapify_cli-3.27.0 → mapify_cli-3.28.0}/tests/test_update_versions.py +0 -0
- {mapify_cli-3.27.0 → mapify_cli-3.28.0}/tests/test_validate_dependencies.py +0 -0
- {mapify_cli-3.27.0 → mapify_cli-3.28.0}/tests/test_validate_spec_citations.py +0 -0
- {mapify_cli-3.27.0 → mapify_cli-3.28.0}/tests/test_verification_recorder.py +0 -0
- {mapify_cli-3.27.0 → mapify_cli-3.28.0}/tests/test_wave_eval_harness.py +0 -0
- {mapify_cli-3.27.0 → mapify_cli-3.28.0}/tests/test_wave_fixtures.py +0 -0
- {mapify_cli-3.27.0 → mapify_cli-3.28.0}/tests/test_wave_parallel_harness.py +0 -0
- {mapify_cli-3.27.0 → mapify_cli-3.28.0}/tests/test_wayfind_runner.py +0 -0
- {mapify_cli-3.27.0 → mapify_cli-3.28.0}/tests/test_workflow_context_injector.py +0 -0
- {mapify_cli-3.27.0 → mapify_cli-3.28.0}/tests/test_workflow_finalizer.py +0 -0
- {mapify_cli-3.27.0 → mapify_cli-3.28.0}/tests/test_workflow_gate.py +0 -0
- {mapify_cli-3.27.0 → mapify_cli-3.28.0}/tests/test_workflow_logger.py +0 -0
- {mapify_cli-3.27.0 → mapify_cli-3.28.0}/tests/test_workflow_state.py +0 -0
- {mapify_cli-3.27.0 → mapify_cli-3.28.0}/tests/test_worktree_isolation.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.5
|
|
2
2
|
Name: mapify-cli
|
|
3
|
-
Version: 3.
|
|
3
|
+
Version: 3.28.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
|
|
@@ -43,8 +43,6 @@ Requires-Dist: pytest>=7.0.0; extra == 'test'
|
|
|
43
43
|
Requires-Dist: pyyaml>=6.0.0; extra == 'test'
|
|
44
44
|
Description-Content-Type: text/markdown
|
|
45
45
|
|
|
46
|
-
# MAP Framework
|
|
47
|
-
|
|
48
46
|
<p align="center">
|
|
49
47
|
<img src="./assets/readme/hero.svg" width="100%" alt="MAP Framework — Plan-then-build AI coding. You approve the plan before the model writes a line of code.">
|
|
50
48
|
</p>
|
|
@@ -1942,9 +1942,15 @@ REVIEW_VERDICT_LEDGER_SCHEMA: dict[str, Any] = {
|
|
|
1942
1942
|
"id": {"type": "string"},
|
|
1943
1943
|
"source_agent": {
|
|
1944
1944
|
"type": "string",
|
|
1945
|
+
# Keep in sync with _LEDGER_SOURCE_AGENTS in
|
|
1946
|
+
# map_step_runner.py — the runner maps every
|
|
1947
|
+
# caller-supplied source through that frozenset, so a
|
|
1948
|
+
# value it accepts must be declared here or the ledger
|
|
1949
|
+
# fails its own schema. "role" covers the
|
|
1950
|
+
# user_experience / maintainer reviewers.
|
|
1945
1951
|
"enum": [
|
|
1946
1952
|
"monitor", "predictor", "evaluator",
|
|
1947
|
-
"adversarial", "ordering", "operator",
|
|
1953
|
+
"adversarial", "ordering", "operator", "role",
|
|
1948
1954
|
],
|
|
1949
1955
|
},
|
|
1950
1956
|
"category": {
|
|
@@ -1981,7 +1987,10 @@ REVIEW_VERDICT_LEDGER_SCHEMA: dict[str, Any] = {
|
|
|
1981
1987
|
"new_evidence", "quote_absent", "wrong_category",
|
|
1982
1988
|
"different_version", "pre_existing_backlog",
|
|
1983
1989
|
"human_escalation", "pressure_without_new_fact",
|
|
1984
|
-
"input_integrity", "not_applicable",
|
|
1990
|
+
"input_integrity", "not_applicable",
|
|
1991
|
+
# A role finding that did not fill all five output
|
|
1992
|
+
# contract parts: tombstoned, never counted.
|
|
1993
|
+
"contract_incomplete", None,
|
|
1985
1994
|
],
|
|
1986
1995
|
},
|
|
1987
1996
|
"transition_evidence": {"type": ["string", "null"]},
|
{mapify_cli-3.27.0 → mapify_cli-3.28.0}/src/mapify_cli/templates/codex/skills/map-review/SKILL.md
RENAMED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: map-review
|
|
3
|
-
description: "Interactive 4-section code review using monitor, predictor, and evaluator agents on current changes. Use when reviewing a diff, PR, or staged work before merge. Do NOT use to plan or implement; use map-plan or map-efficient."
|
|
3
|
+
description: "Interactive 4-section code review using monitor, predictor, and evaluator agents plus the user and maintainer role reviewers on current changes. Use when reviewing a diff, PR, or staged work before merge. Do NOT use to plan or implement; use map-plan or map-efficient."
|
|
4
4
|
---
|
|
5
5
|
## MAP update preflight
|
|
6
6
|
|
|
@@ -12,7 +12,9 @@ For `updated`, re-read this invoked skill's installed `SKILL.md`, skip its alrea
|
|
|
12
12
|
# $map-review - MAP Review Workflow
|
|
13
13
|
|
|
14
14
|
Interactive, structured code review of current changes using monitor,
|
|
15
|
-
predictor, and evaluator agents
|
|
15
|
+
predictor, and evaluator agents, plus two role reviewers — `user_experience`
|
|
16
|
+
(did the already-shipped path get worse?) and `maintainer` (what rot survives
|
|
17
|
+
the merge?). This skill is the Codex counterpart to
|
|
16
18
|
Claude `/map-review`: it uses Codex-native dispatch (`spawn_agent`) for
|
|
17
19
|
independent reviewer passes, and the current Codex session drives bundle
|
|
18
20
|
setup, verification gates, and presentation.
|
|
@@ -66,8 +68,9 @@ These constraints apply before any write-capable step:
|
|
|
66
68
|
4. Build the review bundle before launching reviewer agents.
|
|
67
69
|
5. Build bounded review prompts before launching reviewer agents.
|
|
68
70
|
6. Launch each reviewer agent once per fan-out (full mode: monitor +
|
|
69
|
-
predictor + evaluator
|
|
70
|
-
|
|
71
|
+
predictor + evaluator + the `user_experience` and `maintainer` role
|
|
72
|
+
reviewers; lightweight mode: monitor only) — the single truncation
|
|
73
|
+
retry in Step A.2b is the only exception.
|
|
71
74
|
7. Monitor `valid=false` requires verification, not immediate publication —
|
|
72
75
|
every finding needs evidence and must be introduced by this change
|
|
73
76
|
before it reaches presentation.
|
|
@@ -162,7 +165,7 @@ Extract each role's prompt from `REVIEW_PROMPTS_JSON`, then dispatch with
|
|
|
162
165
|
`spawn_agent(agent_type=...)` — see
|
|
163
166
|
[review-reference.md](review-reference.md#dispatch) for the exact prompt
|
|
164
167
|
extraction shell one-liners. Full mode runs monitor + predictor +
|
|
165
|
-
evaluator; lightweight mode runs monitor only. When
|
|
168
|
+
evaluator + both role reviewers; lightweight mode runs monitor only. When
|
|
166
169
|
`COMPLEXITY_LENS_ENABLED=true` (i.e. `.map/config.yaml` sets `minimality`
|
|
167
170
|
to `lite`/`full`/`ultra`), also dispatch the complexity lens using the
|
|
168
171
|
`evaluator` agent type with the `complexity_lens` prompt.
|
|
@@ -182,6 +185,18 @@ spawn_agent(
|
|
|
182
185
|
agent_type="evaluator",
|
|
183
186
|
message=EVALUATOR_PROMPT
|
|
184
187
|
)
|
|
188
|
+
# Full mode only — role reviewers run with isolated context (diff + bundle).
|
|
189
|
+
# They reuse the `evaluator` agent type the same way the complexity lens does:
|
|
190
|
+
# the configured Codex agents are decomposer/monitor/researcher/predictor/
|
|
191
|
+
# evaluator, and what the pass does is defined by its prompt, not by the type.
|
|
192
|
+
spawn_agent(
|
|
193
|
+
agent_type="evaluator",
|
|
194
|
+
message=USER_EXPERIENCE_PROMPT
|
|
195
|
+
)
|
|
196
|
+
spawn_agent(
|
|
197
|
+
agent_type="evaluator",
|
|
198
|
+
message=MAINTAINER_PROMPT
|
|
199
|
+
)
|
|
185
200
|
# When COMPLEXITY_LENS_ENABLED=true only:
|
|
186
201
|
spawn_agent(
|
|
187
202
|
agent_type="evaluator",
|
|
@@ -189,6 +204,16 @@ spawn_agent(
|
|
|
189
204
|
)
|
|
190
205
|
```
|
|
191
206
|
|
|
207
|
+
The role reviewers read the repository (including `git show
|
|
208
|
+
<default-branch>:<file>` for the pre-change surface) and answer to the
|
|
209
|
+
five-part output contract — `problem`, `current_code`, `proposed_code`,
|
|
210
|
+
`why_better`, `cost`. A finding missing any part never gates the change and
|
|
211
|
+
never disappears: on the normal fan-out the ledger tombstones it as
|
|
212
|
+
`contract_incomplete` and names it in `not_verified`, and above `minor` it
|
|
213
|
+
also sets `escalation_required` so PROCEED is unavailable; under
|
|
214
|
+
`--adversarial` the aggregator drops it before the ledger and lists it under
|
|
215
|
+
`contract_incomplete` in the report.
|
|
216
|
+
|
|
192
217
|
When enabled, the complexity lens is advisory only. It lists
|
|
193
218
|
over-engineering as `delete:`, `stdlib:`, `native:`, `yagni:`, or `shrink:`
|
|
194
219
|
findings, ends with `net: -<N> lines possible.` or `Lean already. Ship.`,
|
|
@@ -205,7 +230,8 @@ printf '%s' "$MONITOR_RESPONSE" | \
|
|
|
205
230
|
python3 .map/scripts/map_step_runner.py detect_truncated_agent_output --agent review-monitor
|
|
206
231
|
```
|
|
207
232
|
|
|
208
|
-
Use `--agent predictor` / `--agent evaluator`
|
|
233
|
+
Use `--agent predictor` / `--agent evaluator` / `--agent user_experience` /
|
|
234
|
+
`--agent maintainer` for the other roles. On
|
|
209
235
|
truncation, log the failure and re-invoke that reviewer once using the
|
|
210
236
|
retry prompt built from the same stdin-piped pattern; if still malformed,
|
|
211
237
|
stop with CLARIFICATION_NEEDED. See
|
|
@@ -375,5 +401,5 @@ detached, shuffle, and compare-ordering examples.
|
|
|
375
401
|
## Troubleshooting
|
|
376
402
|
|
|
377
403
|
See [review-reference.md](review-reference.md#troubleshooting) for
|
|
378
|
-
unavailable detached worktrees, missing review bundles,
|
|
379
|
-
|
|
404
|
+
unavailable detached worktrees, missing review bundles, oversized reviewer
|
|
405
|
+
prompts, and ordering drift.
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
Detailed workflow for `$map-review --adversarial`. See [SKILL.md](SKILL.md)
|
|
4
4
|
for context and integration points. This is the Codex counterpart to Claude
|
|
5
|
-
`--adversarial`: the same
|
|
5
|
+
`--adversarial`: the same five-reviewer contract, run as SEQUENTIAL
|
|
6
6
|
IN-SESSION passes by the current Codex session instead of a parallel agent
|
|
7
7
|
fan-out.
|
|
8
8
|
|
|
@@ -19,7 +19,7 @@ registered Codex agent types.
|
|
|
19
19
|
(one outside the five above) is an UNVERIFIED ASSUMPTION carried over from
|
|
20
20
|
discovery, not a proven platform limitation.** This file deliberately does
|
|
21
21
|
NOT resolve that assumption — it picks the simpler, verifiably-correct
|
|
22
|
-
option instead: run the
|
|
22
|
+
option instead: run the five reviewer passes sequentially in the current
|
|
23
23
|
Codex session, with the session itself switching context/persona between
|
|
24
24
|
passes, rather than betting on an unconfirmed dispatch capability.
|
|
25
25
|
|
|
@@ -40,7 +40,7 @@ works today.
|
|
|
40
40
|
|
|
41
41
|
## Overview
|
|
42
42
|
|
|
43
|
-
|
|
43
|
+
Five reviewer passes, each with only its permitted inputs, run ONE AFTER
|
|
44
44
|
ANOTHER in the current session (never in parallel, never via a new
|
|
45
45
|
agent-dispatch primitive):
|
|
46
46
|
|
|
@@ -49,12 +49,22 @@ agent-dispatch primitive):
|
|
|
49
49
|
| **Blind Hunter** | diff only | Typos, dead code, logic errors visible in isolation |
|
|
50
50
|
| **Edge Case Hunter** | diff + repo read access | Null handling, boundary conditions, error paths, codebase consistency |
|
|
51
51
|
| **Acceptance Auditor** | diff + spec + plan + artifacts | Missed requirements, spec violations, AC gaps, extra/unplanned work |
|
|
52
|
+
| **User (`user_experience`)** | diff + repo read access | Regressions in the already-shipped path: extra mandatory steps, confusable flags, an explicit value silently overridden |
|
|
53
|
+
| **Maintainer (`maintainer`)** | diff + repo read access | Branch-scoped litter in comments, implementation leaking into user-facing text, copy-paste, split sources of truth, version predicates by number, embedded foreign-language code |
|
|
52
54
|
|
|
53
|
-
With `--quick`: skip the Edge Case Hunter pass (Blind + Acceptance
|
|
55
|
+
With `--quick`: skip the Edge Case Hunter pass (Blind + Acceptance + both
|
|
56
|
+
role passes).
|
|
57
|
+
|
|
58
|
+
The two role passes answer to the five-part output contract (`problem`,
|
|
59
|
+
`current_code`, `proposed_code`, `why_better`, `cost`); a finding that
|
|
60
|
+
cannot fill all five is dropped into `contract_incomplete` by the
|
|
61
|
+
aggregator — reported, never counted. See
|
|
62
|
+
[review-reference.md](review-reference.md#role-reviewers) for what each role
|
|
63
|
+
checks.
|
|
54
64
|
|
|
55
65
|
Between passes, deliberately narrow the session's working context to match
|
|
56
66
|
the pass's permitted inputs (e.g. do not consult the spec while running the
|
|
57
|
-
Blind Hunter pass) so the
|
|
67
|
+
Blind Hunter pass) so the passes stay as independent as a sequential,
|
|
58
68
|
single-session execution allows.
|
|
59
69
|
|
|
60
70
|
## Step B.adversarial.0: Build adversarial review prompts
|
|
@@ -75,25 +85,31 @@ EDGE_DESC=$(printf '%s' "$ADV_PROMPTS_JSON" | python3 -c 'import json,sys; d=jso
|
|
|
75
85
|
|
|
76
86
|
ACCEPTANCE_PROMPT=$(printf '%s' "$ADV_PROMPTS_JSON" | python3 -c 'import json,sys; d=json.load(sys.stdin); print(d.get("prompts",{}).get("acceptance",{}).get("prompt",""))')
|
|
77
87
|
ACCEPTANCE_DESC=$(printf '%s' "$ADV_PROMPTS_JSON" | python3 -c 'import json,sys; d=json.load(sys.stdin); print(d.get("prompts",{}).get("acceptance",{}).get("description",""))')
|
|
88
|
+
|
|
89
|
+
USER_EXPERIENCE_PROMPT=$(printf '%s' "$ADV_PROMPTS_JSON" | python3 -c 'import json,sys; d=json.load(sys.stdin); print(d.get("prompts",{}).get("user_experience",{}).get("prompt",""))')
|
|
90
|
+
MAINTAINER_PROMPT=$(printf '%s' "$ADV_PROMPTS_JSON" | python3 -c 'import json,sys; d=json.load(sys.stdin); print(d.get("prompts",{}).get("maintainer",{}).get("prompt",""))')
|
|
78
91
|
```
|
|
79
92
|
|
|
80
93
|
`build_adversarial_review_prompts` is the exact same CLI verb the Claude
|
|
81
94
|
port calls — payload flows out via stdout JSON only, never via argv, per
|
|
82
95
|
the stdin-safe piping convention used throughout this skill.
|
|
83
96
|
|
|
84
|
-
## Step B.adversarial.1: Run all
|
|
97
|
+
## Step B.adversarial.1: Run all five passes sequentially, in-session
|
|
85
98
|
|
|
86
99
|
```text
|
|
87
|
-
# Run the
|
|
100
|
+
# Run the five adversarial reviewer passes ONE AFTER ANOTHER in the
|
|
88
101
|
# current Codex session. Do NOT call spawn_agent() for these passes and do
|
|
89
102
|
# NOT invent a new agent-dispatch primitive — see "Design note" above for
|
|
90
103
|
# why. Each pass consumes only its permitted context (BLIND_PROMPT /
|
|
91
|
-
# EDGE_PROMPT / ACCEPTANCE_PROMPT
|
|
92
|
-
# report before the
|
|
104
|
+
# EDGE_PROMPT / ACCEPTANCE_PROMPT / USER_EXPERIENCE_PROMPT /
|
|
105
|
+
# MAINTAINER_PROMPT) and produces its own JSON finding report before the
|
|
106
|
+
# next pass begins.
|
|
93
107
|
|
|
94
108
|
Pass 1 (Blind Hunter): execute BLIND_PROMPT in-session -> BLIND_OUTPUT
|
|
95
109
|
Pass 2 (Edge Case Hunter): execute EDGE_PROMPT in-session -> EDGE_OUTPUT (skip if --quick)
|
|
96
110
|
Pass 3 (Acceptance Auditor): execute ACCEPTANCE_PROMPT in-session -> ACCEPTANCE_OUTPUT
|
|
111
|
+
Pass 4 (User): execute USER_EXPERIENCE_PROMPT in-session -> USER_EXPERIENCE_OUTPUT
|
|
112
|
+
Pass 5 (Maintainer): execute MAINTAINER_PROMPT in-session -> MAINTAINER_OUTPUT
|
|
97
113
|
```
|
|
98
114
|
|
|
99
115
|
## Step B.adversarial.2: Validate reviewer outputs
|
|
@@ -119,24 +135,39 @@ Write each pass's raw JSON output to a temp file, then aggregate:
|
|
|
119
135
|
|
|
120
136
|
```bash
|
|
121
137
|
printf '%s' "$BLIND_OUTPUT" > .map/$BRANCH/adversarial-blind.json
|
|
122
|
-
printf '%s' "$EDGE_OUTPUT" > .map/$BRANCH/adversarial-edge.json
|
|
123
138
|
printf '%s' "$ACCEPTANCE_OUTPUT" > .map/$BRANCH/adversarial-acceptance.json
|
|
139
|
+
printf '%s' "$USER_EXPERIENCE_OUTPUT" > .map/$BRANCH/adversarial-user-experience.json
|
|
140
|
+
printf '%s' "$MAINTAINER_OUTPUT" > .map/$BRANCH/adversarial-maintainer.json
|
|
141
|
+
|
|
142
|
+
# The Edge Case Hunter pass did not run under --quick. Writing its file
|
|
143
|
+
# anyway would leave an EMPTY payload (or a stale one from an earlier full
|
|
144
|
+
# run) that the `-f` test below happily forwards; the aggregator then
|
|
145
|
+
# reports edge_case as parse_error, or folds in findings from another
|
|
146
|
+
# review. Remove it, then write it only when the pass actually ran.
|
|
147
|
+
rm -f .map/$BRANCH/adversarial-edge.json
|
|
148
|
+
if [ "$QUICK_FLAG" != "true" ]; then
|
|
149
|
+
printf '%s' "$EDGE_OUTPUT" > .map/$BRANCH/adversarial-edge.json
|
|
150
|
+
fi
|
|
124
151
|
|
|
125
|
-
|
|
126
|
-
EDGE_ARG=""
|
|
127
|
-
ACCEPTANCE_ARG=""
|
|
152
|
+
ADV_ARGS=""
|
|
128
153
|
if [ -f .map/$BRANCH/adversarial-blind.json ]; then
|
|
129
|
-
|
|
154
|
+
ADV_ARGS="$ADV_ARGS --blind .map/$BRANCH/adversarial-blind.json"
|
|
130
155
|
fi
|
|
131
156
|
if [ -f .map/$BRANCH/adversarial-edge.json ]; then
|
|
132
|
-
|
|
157
|
+
ADV_ARGS="$ADV_ARGS --edge-case .map/$BRANCH/adversarial-edge.json"
|
|
133
158
|
fi
|
|
134
159
|
if [ -f .map/$BRANCH/adversarial-acceptance.json ]; then
|
|
135
|
-
|
|
160
|
+
ADV_ARGS="$ADV_ARGS --acceptance .map/$BRANCH/adversarial-acceptance.json"
|
|
161
|
+
fi
|
|
162
|
+
if [ -f .map/$BRANCH/adversarial-user-experience.json ]; then
|
|
163
|
+
ADV_ARGS="$ADV_ARGS --user-experience .map/$BRANCH/adversarial-user-experience.json"
|
|
164
|
+
fi
|
|
165
|
+
if [ -f .map/$BRANCH/adversarial-maintainer.json ]; then
|
|
166
|
+
ADV_ARGS="$ADV_ARGS --maintainer .map/$BRANCH/adversarial-maintainer.json"
|
|
136
167
|
fi
|
|
137
168
|
|
|
138
169
|
ADV_AGGREGATED=$(python3 .map/scripts/map_step_runner.py aggregate_adversarial_findings \
|
|
139
|
-
$
|
|
170
|
+
$ADV_ARGS)
|
|
140
171
|
```
|
|
141
172
|
|
|
142
173
|
`aggregate_adversarial_findings` is the exact same CLI verb the Claude port
|
|
@@ -153,8 +184,9 @@ Parse the aggregated JSON and present the report in this structure:
|
|
|
153
184
|
## Summary
|
|
154
185
|
- Total findings: N (C CRITICAL, I IMPORTANT, M MINOR)
|
|
155
186
|
- Corroborated (found by 2+ passes): K — highest confidence
|
|
156
|
-
- Per-pass: Blind: B, Edge Case: E, Acceptance: A
|
|
187
|
+
- Per-pass: Blind: B, Edge Case: E, Acceptance: A, User: U, Maintainer: M
|
|
157
188
|
- All-clear: [passes that reported all_clear=true]
|
|
189
|
+
- Dropped for an incomplete output contract: [contract_incomplete entries]
|
|
158
190
|
|
|
159
191
|
## CRITICAL
|
|
160
192
|
[per finding: severity, category, file:line, failure_mode, evidence, reported_by, corroborated flag]
|
|
@@ -190,8 +222,8 @@ Artifacts.
|
|
|
190
222
|
## Flow summary for adversarial
|
|
191
223
|
|
|
192
224
|
When `ADVERSARIAL_FLAG=true`, the workflow is:
|
|
193
|
-
Phase A (all steps) → Phase B: Adversarial Review (
|
|
194
|
-
passes) → Final Verdict → Handoff Artifacts. Do NOT run the normal
|
|
225
|
+
Phase A (all steps) → Phase B: Adversarial Review (5 sequential in-session
|
|
226
|
+
passes, 4 with `--quick`) → Final Verdict → Handoff Artifacts. Do NOT run the normal
|
|
195
227
|
Monitor/Predictor/Evaluator fan-out or the 4-section walkthrough.
|
|
196
228
|
|
|
197
229
|
## Examples
|
|
@@ -205,7 +237,7 @@ See [review-reference.md](review-reference.md#examples) for adversarial examples
|
|
|
205
237
|
Re-run that specific pass ONCE. If still invalid, record `parse_error` and
|
|
206
238
|
continue — two valid passes are better than zero.
|
|
207
239
|
|
|
208
|
-
### All
|
|
240
|
+
### All passes fail
|
|
209
241
|
|
|
210
242
|
Stop with CLARIFICATION_NEEDED. The diff may be too large or the context
|
|
211
243
|
too complex for adversarial review.
|
|
@@ -32,7 +32,9 @@ with open(f".map/{branch}/review-mode.json", "w") as f:
|
|
|
32
32
|
```
|
|
33
33
|
|
|
34
34
|
Mode semantics:
|
|
35
|
-
- **`full`** (default):
|
|
35
|
+
- **`full`** (default): five-reviewer fan-out in total — monitor, predictor,
|
|
36
|
+
evaluator + the two role passes (`user_experience`, `maintainer`), all four
|
|
37
|
+
sections. The complexity lens is advisory and extra.
|
|
36
38
|
- **`lightweight`**: monitor only, diff-only, two sections (Code Quality +
|
|
37
39
|
Tests), every finding must carry `reach_evidence`. Bundle is empty so
|
|
38
40
|
reviewers have nothing to synthesize from — staying minimal prevents
|
|
@@ -105,6 +107,8 @@ PREDICTOR_PROMPT=$(printf '%s' "$REVIEW_PROMPTS_JSON" | python3 -c 'import json,
|
|
|
105
107
|
EVALUATOR_PROMPT=$(printf '%s' "$REVIEW_PROMPTS_JSON" | python3 -c 'import json,sys; print(json.load(sys.stdin)["prompts"]["evaluator"]["prompt"])')
|
|
106
108
|
COMPLEXITY_LENS_PROMPT=$(printf '%s' "$REVIEW_PROMPTS_JSON" | python3 -c 'import json,sys; data=json.load(sys.stdin); print(data.get("prompts",{}).get("complexity_lens",{}).get("prompt", ""))')
|
|
107
109
|
COMPLEXITY_LENS_ENABLED=$(printf '%s' "$REVIEW_PROMPTS_JSON" | python3 -c 'import json,sys; data=json.load(sys.stdin); print("true" if data.get("prompts",{}).get("complexity_lens") else "false")')
|
|
110
|
+
USER_EXPERIENCE_PROMPT=$(printf '%s' "$REVIEW_PROMPTS_JSON" | python3 -c 'import json,sys; print(json.load(sys.stdin)["prompts"]["user_experience"]["prompt"])')
|
|
111
|
+
MAINTAINER_PROMPT=$(printf '%s' "$REVIEW_PROMPTS_JSON" | python3 -c 'import json,sys; print(json.load(sys.stdin)["prompts"]["maintainer"]["prompt"])')
|
|
108
112
|
```
|
|
109
113
|
|
|
110
114
|
```text
|
|
@@ -113,12 +117,20 @@ spawn_agent(agent_type="monitor", message=MONITOR_PROMPT)
|
|
|
113
117
|
spawn_agent(agent_type="predictor", message=PREDICTOR_PROMPT)
|
|
114
118
|
# Full mode only — skip in lightweight mode (monitor-only):
|
|
115
119
|
spawn_agent(agent_type="evaluator", message=EVALUATOR_PROMPT)
|
|
120
|
+
# Full mode only — role reviewers. Isolated means: no other reviewer's
|
|
121
|
+
# output. They DO get read-only repo access on top of diff + bundle —
|
|
122
|
+
# both roles must run `git show <default-branch>:<file>` and grep the base.
|
|
123
|
+
spawn_agent(agent_type="evaluator", message=USER_EXPERIENCE_PROMPT)
|
|
124
|
+
spawn_agent(agent_type="evaluator", message=MAINTAINER_PROMPT)
|
|
116
125
|
# When COMPLEXITY_LENS_ENABLED=true only:
|
|
117
126
|
spawn_agent(agent_type="evaluator", message=COMPLEXITY_LENS_PROMPT)
|
|
118
127
|
```
|
|
119
128
|
|
|
120
|
-
Full mode runs monitor + predictor + evaluator
|
|
121
|
-
monitor only.
|
|
129
|
+
Full mode runs monitor + predictor + evaluator + both role reviewers;
|
|
130
|
+
lightweight mode runs monitor only. The role reviewers reuse the
|
|
131
|
+
`evaluator` agent type exactly as the complexity lens does — the
|
|
132
|
+
configured Codex agents are decomposer/monitor/researcher/predictor/
|
|
133
|
+
evaluator, and what a pass does is defined by its prompt, not by the type. Reviewer prompts reference `review-bundle.json`,
|
|
122
134
|
`review-bundle.md`, the raw diff as secondary context, and the expected
|
|
123
135
|
output schema (Monitor evidence/valid/verdict/issues,
|
|
124
136
|
Predictor evidence/risk_assessment/landmine_evidence, Evaluator
|
|
@@ -140,6 +152,10 @@ printf '%s' "$PREDICTOR_RESPONSE" | \
|
|
|
140
152
|
python3 .map/scripts/map_step_runner.py detect_truncated_agent_output --agent predictor
|
|
141
153
|
printf '%s' "$EVALUATOR_RESPONSE" | \
|
|
142
154
|
python3 .map/scripts/map_step_runner.py detect_truncated_agent_output --agent evaluator
|
|
155
|
+
printf '%s' "$USER_EXPERIENCE_RESPONSE" | \
|
|
156
|
+
python3 .map/scripts/map_step_runner.py detect_truncated_agent_output --agent user_experience
|
|
157
|
+
printf '%s' "$MAINTAINER_RESPONSE" | \
|
|
158
|
+
python3 .map/scripts/map_step_runner.py detect_truncated_agent_output --agent maintainer
|
|
143
159
|
```
|
|
144
160
|
|
|
145
161
|
On truncation: log via
|
|
@@ -169,6 +185,12 @@ walkthrough item:
|
|
|
169
185
|
the twin.
|
|
170
186
|
4. **Precheck duplication check.** If the finding matches a precheck error
|
|
171
187
|
line, cite the precheck and stop — do NOT raise a second instance.
|
|
188
|
+
4b. **Role contract check.** A `user_experience` / `maintainer` finding is
|
|
189
|
+
published only with all five contract parts filled (`problem`,
|
|
190
|
+
`current_code`, `proposed_code`, `why_better`, `cost`). An incomplete
|
|
191
|
+
one is not softened into an advisory: the ledger tombstones it as
|
|
192
|
+
`contract_incomplete` and names it in `not_verified` — and above `minor`
|
|
193
|
+
it escalates, so PROCEED is unavailable until a human rules on it.
|
|
172
194
|
5. **Reachability check** (defensive branches): guard-branch patterns
|
|
173
195
|
usually exist by convention and their absence of tests is not a
|
|
174
196
|
"missing test" finding unless the surrounding logic actually depends
|
|
@@ -261,6 +283,72 @@ When `--compare-orderings` is set, collect one run with
|
|
|
261
283
|
aggregate with `compare-review-runs`, then persist with
|
|
262
284
|
`record-review-ordering`. Treat verdict drift as review evidence.
|
|
263
285
|
|
|
286
|
+
## Role Reviewers
|
|
287
|
+
|
|
288
|
+
Two perspective roles run in BOTH review paths — the normal fan-out and
|
|
289
|
+
`--adversarial`. They answer questions nobody else in the fan-out is asked.
|
|
290
|
+
|
|
291
|
+
**`user_experience` — the person or script that CALLS this.** One question:
|
|
292
|
+
did the change make the ALREADY SHIPPED functionality harder or less
|
|
293
|
+
convenient?
|
|
294
|
+
|
|
295
|
+
- Convenience regression: do the pre-diff scenarios still take the same
|
|
296
|
+
number of steps? Did the old path gain a mandatory flag or ordering rule?
|
|
297
|
+
- Distinguishability: two confusable flags/options/fields (`--release` vs
|
|
298
|
+
`--from-release`)? Does the name alone say what it does?
|
|
299
|
+
- Explicit input beats a default: an explicitly supplied value that is
|
|
300
|
+
incompatible with the new mode must be REJECTED with a clear error, never
|
|
301
|
+
silently overridden.
|
|
302
|
+
- The current flag set is not a given — propose the ideal one when it confuses.
|
|
303
|
+
- Judged from two sub-roles: a human in a terminal, and a CI script.
|
|
304
|
+
|
|
305
|
+
**`maintainer` — the person extending this a quarter from now.** Checks:
|
|
306
|
+
|
|
307
|
+
| Class | What it hunts |
|
|
308
|
+
|---|---|
|
|
309
|
+
| A1 | Branch-scoped litter in comments (plan/tracker IDs, `.map/` paths, "step N") |
|
|
310
|
+
| A2 | Implementation vocabulary leaking into help/error/log/doc text |
|
|
311
|
+
| B | Copy-paste: near-identical logic in 2+ places that must change in sync |
|
|
312
|
+
| C | Single source of truth: one decision computed in more than one place |
|
|
313
|
+
| D | Overcomplication: twisted booleans, deep nesting, mixed responsibilities |
|
|
314
|
+
| E | Order of logic: validation / defaults / execution readable top to bottom |
|
|
315
|
+
| F | Dead or idle work: built-but-unused structures, duplicated guards |
|
|
316
|
+
| G | Extensibility: how many places the next similar case touches — exact N |
|
|
317
|
+
| H | Version/capability predicates: one module, named by capability not number, one comparison style — found by whole-base grep, not in the diff |
|
|
318
|
+
| I | Embedded shell/YAML/SQL/HCL inside string literals — unreviewable, untestable |
|
|
319
|
+
|
|
320
|
+
For B, C and H one site is not a finding: the finding is the number of sites
|
|
321
|
+
and the point where they collapse.
|
|
322
|
+
|
|
323
|
+
### The output contract
|
|
324
|
+
|
|
325
|
+
Every role finding carries five parts, or it is not reported:
|
|
326
|
+
|
|
327
|
+
| Part | Requirement |
|
|
328
|
+
|---|---|
|
|
329
|
+
| `problem` | one line + exact `file:line` |
|
|
330
|
+
| `current_code` | the lines as they are, copied verbatim |
|
|
331
|
+
| `proposed_code` | applicable as a patch — the helper itself, not "extract a helper" |
|
|
332
|
+
| `why_better` | measurable delta ("3 edit sites -> 1", "-1 responsibility"); bare "cleaner" is rejected |
|
|
333
|
+
| `cost` | the downside of the fix, or `none` |
|
|
334
|
+
|
|
335
|
+
A finding missing any part is NOT softened into an advisory, but where it
|
|
336
|
+
lands depends on the path that ran: on the normal fan-out the ledger
|
|
337
|
+
tombstones it with `transition_reason: contract_incomplete` — at ANY
|
|
338
|
+
severity, and when that severity is above `minor` it also sets
|
|
339
|
+
`escalation_required`, so a CRITICAL dropped for a missing `cost` costs the
|
|
340
|
+
run its PROCEED instead of vanishing; under `--adversarial` the aggregator
|
|
341
|
+
removes it first, so it appears only under `contract_incomplete` in the
|
|
342
|
+
report and the ledger never sees it. Either way it cannot gate the change,
|
|
343
|
+
and it cannot disappear either.
|
|
344
|
+
|
|
345
|
+
Standalone prompt build (the normal fan-out builds these automatically):
|
|
346
|
+
|
|
347
|
+
```bash
|
|
348
|
+
python3 .map/scripts/map_step_runner.py build_role_review_prompts \
|
|
349
|
+
[--roles user_experience,maintainer]
|
|
350
|
+
```
|
|
351
|
+
|
|
264
352
|
## Cross-AI
|
|
265
353
|
|
|
266
354
|
See the "Phase B: Cross-AI Peer Review" section in [SKILL.md](SKILL.md) for
|
|
@@ -361,7 +449,8 @@ $map-review --compare-orderings
|
|
|
361
449
|
- Detached prep unavailable: continue from the in-place review bundle; do
|
|
362
450
|
not mutate the source branch.
|
|
363
451
|
- Missing bundle: rerun `create_review_bundle` before agents.
|
|
364
|
-
-
|
|
365
|
-
|
|
366
|
-
|
|
452
|
+
- Oversized reviewer prompt: nothing is clipped and no `token_budget.json`
|
|
453
|
+
entry is written for review — `MAP_REVIEW_PROMPT_BUDGET_TOKENS` is
|
|
454
|
+
reported, not enforced. Reduce the input yourself (compact the session,
|
|
455
|
+
or split the change); raising the variable changes nothing.
|
|
367
456
|
- Monitor invalid: treat as hard stop and record `REVISE` or `BLOCK`.
|