mapify-cli 3.35.2__tar.gz → 3.36.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.35.2 → mapify_cli-3.36.0}/PKG-INFO +1 -1
- {mapify_cli-3.35.2 → mapify_cli-3.36.0}/pyproject.toml +1 -1
- {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/__init__.py +1 -1
- {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/delivery/file_copier.py +137 -16
- {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/templates/agents/monitor.md +8 -1
- {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/templates/agents/task-decomposer.md +1 -0
- {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/templates/codex/agents/decomposer.toml +1 -0
- {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/templates/codex/agents/monitor.toml +6 -0
- {mapify_cli-3.35.2/src/mapify_cli/templates → mapify_cli-3.36.0/src/mapify_cli/templates/codex}/hooks/post-compact-context.py +21 -0
- {mapify_cli-3.35.2/src/mapify_cli/templates → mapify_cli-3.36.0/src/mapify_cli/templates/codex}/hooks/workflow-context-injector.py +32 -4
- {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/templates/codex/skills/map-review/SKILL.md +12 -12
- {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/templates/codex/skills/map-review/review-reference.md +75 -5
- {mapify_cli-3.35.2/src/mapify_cli/templates/codex → mapify_cli-3.36.0/src/mapify_cli/templates}/hooks/post-compact-context.py +20 -1
- {mapify_cli-3.35.2/src/mapify_cli/templates/codex → mapify_cli-3.36.0/src/mapify_cli/templates}/hooks/workflow-context-injector.py +31 -5
- {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/templates/map/scripts/codex_review_runner.py +55 -47
- {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/templates/map/scripts/map_step_runner.py +1334 -94
- {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/templates/map/scripts/sofa_client.py +6 -6
- {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/templates/skills/map-efficient/efficient-reference.md +5 -1
- {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/templates/skills/map-review/SKILL.md +16 -16
- {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/templates/skills/map-review/adversarial-reference.md +2 -2
- {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/templates/skills/map-review/review-reference.md +75 -5
- {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/templates_src/agents/monitor.md.jinja +8 -1
- {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/templates_src/agents/task-decomposer.md.jinja +1 -0
- {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/templates_src/codex/agents/decomposer.toml.jinja +1 -0
- {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/templates_src/codex/agents/monitor.toml.jinja +6 -0
- {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/templates_src/hooks/post-compact-context.py.jinja +20 -0
- {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/templates_src/hooks/workflow-context-injector.py.jinja +31 -4
- {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/templates_src/map/scripts/codex_review_runner.py.jinja +54 -46
- {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/templates_src/map/scripts/map_step_runner.py.jinja +1334 -94
- {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/templates_src/map/scripts/sofa_client.py.jinja +6 -6
- {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/templates_src/skills/map-efficient/efficient-reference.md.jinja +5 -1
- {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/templates_src/skills/map-review/SKILL.md.jinja +16 -16
- {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/templates_src/skills/map-review/adversarial-reference.md.jinja +2 -2
- {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/templates_src/skills/map-review/review-reference.md.jinja +75 -5
- {mapify_cli-3.35.2 → mapify_cli-3.36.0}/tests/review_context_helpers.py +23 -7
- {mapify_cli-3.35.2 → mapify_cli-3.36.0}/tests/test_codex_review_host.py +95 -3
- {mapify_cli-3.35.2 → mapify_cli-3.36.0}/tests/test_post_compact_context.py +30 -0
- {mapify_cli-3.35.2 → mapify_cli-3.36.0}/tests/test_review_attribution_receipts.py +16 -6
- mapify_cli-3.36.0/tests/test_review_changed_scope.py +1437 -0
- {mapify_cli-3.35.2 → mapify_cli-3.36.0}/tests/test_review_check_timeouts.py +27 -0
- {mapify_cli-3.35.2 → mapify_cli-3.36.0}/tests/test_review_context_transport.py +14 -5
- {mapify_cli-3.35.2 → mapify_cli-3.36.0}/tests/test_review_explicit_base.py +2 -2
- {mapify_cli-3.35.2 → mapify_cli-3.36.0}/tests/test_review_explicit_base_stale_readers.py +2 -2
- mapify_cli-3.36.0/tests/test_review_mapify_managed.py +223 -0
- {mapify_cli-3.35.2 → mapify_cli-3.36.0}/tests/test_review_pending_collection.py +1 -1
- mapify_cli-3.36.0/tests/test_review_shard_docs.py +21 -0
- {mapify_cli-3.35.2 → mapify_cli-3.36.0}/tests/test_review_verdict_ledger.py +3 -2
- mapify_cli-3.36.0/tests/test_runtime_info_exclude.py +188 -0
- {mapify_cli-3.35.2 → mapify_cli-3.36.0}/tests/test_runtime_privacy_ignores.py +2 -1
- {mapify_cli-3.35.2 → mapify_cli-3.36.0}/tests/test_skills.py +3 -2
- {mapify_cli-3.35.2 → mapify_cli-3.36.0}/tests/test_sofa_client.py +2 -2
- mapify_cli-3.36.0/tests/test_unrun_verification_contract.py +27 -0
- {mapify_cli-3.35.2 → mapify_cli-3.36.0}/tests/test_wave_abort_preservation.py +135 -0
- {mapify_cli-3.35.2 → mapify_cli-3.36.0}/tests/test_wave_parallel_harness.py +3 -3
- {mapify_cli-3.35.2 → mapify_cli-3.36.0}/tests/test_workflow_context_injector.py +33 -0
- {mapify_cli-3.35.2 → mapify_cli-3.36.0}/tests/test_worktree_isolation.py +23 -2
- mapify_cli-3.35.2/tests/test_review_changed_scope.py +0 -251
- {mapify_cli-3.35.2 → mapify_cli-3.36.0}/.claude/hooks/README.md +0 -0
- {mapify_cli-3.35.2 → mapify_cli-3.36.0}/.claude/skills/README.md +0 -0
- {mapify_cli-3.35.2 → mapify_cli-3.36.0}/.gitignore +0 -0
- {mapify_cli-3.35.2 → mapify_cli-3.36.0}/LICENSE +0 -0
- {mapify_cli-3.35.2 → mapify_cli-3.36.0}/README.md +0 -0
- {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/__main__.py +0 -0
- {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/_locking.py +0 -0
- {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/_python_guard.py +0 -0
- {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/auto_update.py +0 -0
- {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/boundary_quality_report.py +0 -0
- {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/cli_ui.py +0 -0
- {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/code_map.py +0 -0
- {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/codex_exec.py +0 -0
- {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/config/__init__.py +0 -0
- {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/config/mcp.py +0 -0
- {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/config/project_config.py +0 -0
- {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/config/settings.py +0 -0
- {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/delivery/__init__.py +0 -0
- {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/delivery/agent_generator.py +0 -0
- {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/delivery/codex_copier.py +0 -0
- {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/delivery/domain_skill.py +0 -0
- {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/delivery/governance_report.py +0 -0
- {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/delivery/managed_file_copier.py +0 -0
- {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/delivery/providers.py +0 -0
- {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/delivery/template_renderer.py +0 -0
- {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/dependency_graph.py +0 -0
- {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/grace_eval/__init__.py +0 -0
- {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/grace_eval/schema.py +0 -0
- {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/grace_eval/sweep.py +0 -0
- {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/install_manifest.py +0 -0
- {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/intent_detector.py +0 -0
- {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/memory/__init__.py +0 -0
- {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/memory/capture.py +0 -0
- {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/memory/digest_schema.py +0 -0
- {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/memory/evidence.py +0 -0
- {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/memory/finalize.py +0 -0
- {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/memory/recall.py +0 -0
- {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/minimality_eval.py +0 -0
- {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/minimality_report.py +0 -0
- {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/parallelism_observability.py +0 -0
- {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/provider_registry.py +0 -0
- {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/python_runtime.py +0 -0
- {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/ralph_state.py +0 -0
- {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/repo_insight.py +0 -0
- {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/research_eval.py +0 -0
- {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/research_eval_compare.py +0 -0
- {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/schemas.py +0 -0
- {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/scope_classifier.py +0 -0
- {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/skill_ir.py +0 -0
- {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/skills_eval/__init__.py +0 -0
- {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/skills_eval/aggregator.py +0 -0
- {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/skills_eval/apply_patcher.py +0 -0
- {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/skills_eval/assertions.py +0 -0
- {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/skills_eval/description_optimizer.py +0 -0
- {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/skills_eval/dispatcher.py +0 -0
- {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/skills_eval/eval_schema.py +0 -0
- {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/skills_eval/proposer.py +0 -0
- {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/skills_eval/review_corpus.py +0 -0
- {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/skills_eval/review_pilot.py +0 -0
- {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/skills_eval/runner.py +0 -0
- {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/skills_eval/trajectory/__init__.py +0 -0
- {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/skills_eval/trajectory/bundle.py +0 -0
- {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/skills_eval/trajectory/dispatcher.py +0 -0
- {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/skills_eval/trajectory/eval_schema.py +0 -0
- {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/skills_eval/trajectory/gates.py +0 -0
- {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/skills_eval/trajectory/judge.py +0 -0
- {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/skills_eval/trajectory/repeated.py +0 -0
- {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/skills_eval/trajectory/report.py +0 -0
- {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/skills_eval/trajectory/runner.py +0 -0
- {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/skills_eval/trajectory/seeding.py +0 -0
- {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/skills_eval/viewer.py +0 -0
- {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/templates/.gitignore +0 -0
- {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/templates/CLAUDE.md +0 -0
- {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/templates/agents/actor.md +0 -0
- {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/templates/agents/documentation-reviewer.md +0 -0
- {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/templates/agents/evaluator.md +0 -0
- {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/templates/agents/final-verifier.md +0 -0
- {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/templates/agents/predictor.md +0 -0
- {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/templates/agents/reflector.md +0 -0
- {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/templates/agents/research-agent.md +0 -0
- {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/templates/agents/review-reader.md +0 -0
- {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/templates/codex/AGENTS.md +0 -0
- {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/templates/codex/agents/actor.toml +0 -0
- {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/templates/codex/agents/documentation-reviewer.toml +0 -0
- {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/templates/codex/agents/evaluator.toml +0 -0
- {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/templates/codex/agents/final-verifier.toml +0 -0
- {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/templates/codex/agents/predictor.toml +0 -0
- {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/templates/codex/agents/reflector.toml +0 -0
- {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/templates/codex/agents/researcher.toml +0 -0
- {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/templates/codex/agents/review-reader.toml +0 -0
- {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/templates/codex/config.toml +0 -0
- {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/templates/codex/hooks/context-meter.py +0 -0
- {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/templates/codex/hooks/detect-clarification-triggers.py +0 -0
- {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/templates/codex/hooks/end-of-turn.sh +0 -0
- {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/templates/codex/hooks/map-memory-capture.py +0 -0
- {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/templates/codex/hooks/map-memory-endmark.py +0 -0
- {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/templates/codex/hooks/map-memory-recall.py +0 -0
- {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/templates/codex/hooks/map-memory-session.py +0 -0
- {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/templates/codex/hooks/map-stop.py +0 -0
- {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/templates/codex/hooks/map-token-meter.py +0 -0
- {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/templates/codex/hooks/pre-compact-save-transcript.py +0 -0
- {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/templates/codex/hooks/ralph-context-pruner.py +0 -0
- {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/templates/codex/hooks/ralph-iteration-logger.py +0 -0
- {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/templates/codex/hooks/safety-guardrails.py +0 -0
- {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/templates/codex/hooks/scrub-internal-ids.py +0 -0
- {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/templates/codex/hooks/workflow-gate.py +0 -0
- {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/templates/codex/hooks.json +0 -0
- {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/templates/codex/references/map-json-output-contracts.md +0 -0
- {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/templates/codex/references/map-output-examples.md +0 -0
- {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/templates/codex/references/map-xml-prompt-envelopes.md +0 -0
- {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/templates/codex/skills/map-architecture/SKILL.md +0 -0
- {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/templates/codex/skills/map-auto/SKILL.md +0 -0
- {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/templates/codex/skills/map-auto/auto-reference.md +0 -0
- {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/templates/codex/skills/map-check/SKILL.md +0 -0
- {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/templates/codex/skills/map-check/check-reference.md +0 -0
- {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/templates/codex/skills/map-debug/SKILL.md +0 -0
- {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/templates/codex/skills/map-efficient/SKILL.md +0 -0
- {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/templates/codex/skills/map-efficient/efficient-reference.md +0 -0
- {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/templates/codex/skills/map-explain/SKILL.md +0 -0
- {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/templates/codex/skills/map-fast/SKILL.md +0 -0
- {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/templates/codex/skills/map-learn/SKILL.md +0 -0
- {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/templates/codex/skills/map-learn/templates/example-rules.md +0 -0
- {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/templates/codex/skills/map-learn/templates/rules-unconditional.md +0 -0
- {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/templates/codex/skills/map-learn/templates/rules-with-paths.md +0 -0
- {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/templates/codex/skills/map-memory-now/SKILL.md +0 -0
- {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/templates/codex/skills/map-plan/SKILL.md +0 -0
- {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/templates/codex/skills/map-plan/plan-reference.md +0 -0
- {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/templates/codex/skills/map-prd-review/SKILL.md +0 -0
- {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/templates/codex/skills/map-release/SKILL.md +0 -0
- {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/templates/codex/skills/map-release/release-reference.md +0 -0
- {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/templates/codex/skills/map-resume/SKILL.md +0 -0
- {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/templates/codex/skills/map-resume/resume-reference.md +0 -0
- {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/templates/codex/skills/map-review/adversarial-reference.md +0 -0
- {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/templates/codex/skills/map-skill-eval/SKILL.md +0 -0
- {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/templates/codex/skills/map-so-search/SKILL.md +0 -0
- {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/templates/codex/skills/map-so-search/scripts/sofa_search.py +0 -0
- {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/templates/codex/skills/map-state/SKILL.md +0 -0
- {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/templates/codex/skills/map-state/scripts/check-complete.sh +0 -0
- {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/templates/codex/skills/map-state/scripts/get-plan-path.sh +0 -0
- {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/templates/codex/skills/map-state/scripts/init-session.sh +0 -0
- {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/templates/codex/skills/map-state/scripts/show-focus.sh +0 -0
- {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/templates/codex/skills/map-state/templates/findings.md +0 -0
- {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/templates/codex/skills/map-state/templates/iteration_history.md +0 -0
- {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/templates/codex/skills/map-state/templates/progress.md +0 -0
- {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/templates/codex/skills/map-state/templates/task_plan.md +0 -0
- {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/templates/codex/skills/map-task/SKILL.md +0 -0
- {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/templates/codex/skills/map-tdd/SKILL.md +0 -0
- {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/templates/codex/skills/map-tokenreport/SKILL.md +0 -0
- {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/templates/codex/skills/map-understand/SKILL.md +0 -0
- {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/templates/codex/skills/map-upgrade/SKILL.md +0 -0
- {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/templates/codex/skills/map-wayfind/SKILL.md +0 -0
- {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/templates/codex/skills/map-wayfind/wayfind-reference.md +0 -0
- {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/templates/hooks/README.md +0 -0
- {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/templates/hooks/context-meter.py +0 -0
- {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/templates/hooks/detect-clarification-triggers.py +0 -0
- {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/templates/hooks/end-of-turn.sh +0 -0
- {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/templates/hooks/map-memory-capture.py +0 -0
- {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/templates/hooks/map-memory-endmark.py +0 -0
- {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/templates/hooks/map-memory-finalize.py +0 -0
- {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/templates/hooks/map-memory-recall.py +0 -0
- {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/templates/hooks/map-statusline.py +0 -0
- {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/templates/hooks/map-token-meter.py +0 -0
- {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/templates/hooks/pre-compact-save-transcript.py +0 -0
- {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/templates/hooks/ralph-context-pruner.py +0 -0
- {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/templates/hooks/ralph-iteration-logger.py +0 -0
- {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/templates/hooks/safety-guardrails.py +0 -0
- {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/templates/hooks/scrub-internal-ids.py +0 -0
- {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/templates/hooks/workflow-gate.py +0 -0
- {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/templates/map/scripts/classify_scope.py +0 -0
- {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/templates/map/scripts/codex_review_host.py +0 -0
- {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/templates/map/scripts/diagnostics.py +0 -0
- {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/templates/map/scripts/map_interruption.py +0 -0
- {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/templates/map/scripts/map_orchestrator.py +0 -0
- {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/templates/map/scripts/map_utils.py +0 -0
- {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/templates/map/scripts/review_check_supervisor.py +0 -0
- {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/templates/map/scripts/scrub_internal_ids.py +0 -0
- {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/templates/map/scripts/validate_spec_citations.py +0 -0
- {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/templates/map/scripts/wayfind_runner.py +0 -0
- {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/templates/map/static-analysis/analyze.sh +0 -0
- {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/templates/map/static-analysis/handlers/common.sh +0 -0
- {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/templates/map/static-analysis/handlers/go.sh +0 -0
- {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/templates/map/static-analysis/handlers/python.sh +0 -0
- {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/templates/map/static-analysis/handlers/rust.sh +0 -0
- {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/templates/map/static-analysis/handlers/typescript.sh +0 -0
- {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/templates/ralph-loop-config.json +0 -0
- {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/templates/references/bash-guidelines.md +0 -0
- {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/templates/references/decomposition-examples.md +0 -0
- {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/templates/references/escalation-matrix.md +0 -0
- {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/templates/references/hook-patterns.md +0 -0
- {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/templates/references/host-paths.md +0 -0
- {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/templates/references/map-json-output-contracts.md +0 -0
- {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/templates/references/map-output-examples.md +0 -0
- {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/templates/references/map-xml-prompt-envelopes.md +0 -0
- {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/templates/references/mcp-usage-examples.md +0 -0
- {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/templates/references/step-state-schema.md +0 -0
- {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/templates/references/workflow-state-schema.md +0 -0
- {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/templates/rules/learned/README.md +0 -0
- {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/templates/settings.json +0 -0
- {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/templates/skills/README.md +0 -0
- {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/templates/skills/map-architecture/SKILL.md +0 -0
- {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/templates/skills/map-auto/SKILL.md +0 -0
- {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/templates/skills/map-auto/auto-reference.md +0 -0
- {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/templates/skills/map-check/SKILL.md +0 -0
- {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/templates/skills/map-check/check-reference.md +0 -0
- {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/templates/skills/map-debug/SKILL.md +0 -0
- {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/templates/skills/map-efficient/SKILL.md +0 -0
- {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/templates/skills/map-explain/SKILL.md +0 -0
- {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/templates/skills/map-fast/SKILL.md +0 -0
- {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/templates/skills/map-learn/SKILL.md +0 -0
- {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/templates/skills/map-learn/templates/example-rules.md +0 -0
- {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/templates/skills/map-learn/templates/rules-unconditional.md +0 -0
- {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/templates/skills/map-learn/templates/rules-with-paths.md +0 -0
- {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/templates/skills/map-memory-now/SKILL.md +0 -0
- {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/templates/skills/map-plan/SKILL.md +0 -0
- {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/templates/skills/map-plan/plan-reference.md +0 -0
- {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/templates/skills/map-prd-review/SKILL.md +0 -0
- {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/templates/skills/map-release/SKILL.md +0 -0
- {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/templates/skills/map-release/release-reference.md +0 -0
- {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/templates/skills/map-resume/SKILL.md +0 -0
- {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/templates/skills/map-resume/resume-reference.md +0 -0
- {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/templates/skills/map-skill-eval/SKILL.md +0 -0
- {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/templates/skills/map-so-search/SKILL.md +0 -0
- {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/templates/skills/map-so-search/scripts/sofa_search.py +0 -0
- {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/templates/skills/map-state/SKILL.md +0 -0
- {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/templates/skills/map-state/scripts/check-complete.sh +0 -0
- {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/templates/skills/map-state/scripts/get-plan-path.sh +0 -0
- {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/templates/skills/map-state/scripts/init-session.sh +0 -0
- {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/templates/skills/map-state/scripts/show-focus.sh +0 -0
- {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/templates/skills/map-state/templates/findings.md +0 -0
- {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/templates/skills/map-state/templates/iteration_history.md +0 -0
- {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/templates/skills/map-state/templates/progress.md +0 -0
- {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/templates/skills/map-state/templates/task_plan.md +0 -0
- {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/templates/skills/map-task/SKILL.md +0 -0
- {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/templates/skills/map-tdd/SKILL.md +0 -0
- {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/templates/skills/map-tokenreport/SKILL.md +0 -0
- {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/templates/skills/map-understand/SKILL.md +0 -0
- {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/templates/skills/map-upgrade/SKILL.md +0 -0
- {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/templates/skills/map-wayfind/SKILL.md +0 -0
- {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/templates/skills/map-wayfind/wayfind-reference.md +0 -0
- {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/templates/skills/skill-rules.json +0 -0
- {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/templates/workflow-rules.json +0 -0
- {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/templates_src/.gitignore.jinja +0 -0
- {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/templates_src/CLAUDE.md.jinja +0 -0
- {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/templates_src/_partials/acceptance-runtime.py.jinja +0 -0
- {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/templates_src/_partials/apply-patch-paths.py.jinja +0 -0
- {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/templates_src/_partials/auto-update-preflight.md.jinja +0 -0
- {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/templates_src/_partials/codex-memory-hook-wrapper.py.jinja +0 -0
- {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/templates_src/_partials/manual-upgrade-flow.md.jinja +0 -0
- {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/templates_src/_partials/monitor-review-context.md.jinja +0 -0
- {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/templates_src/_partials/python-version-guard.py.jinja +0 -0
- {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/templates_src/_partials/serial-blocker-repair.md.jinja +0 -0
- {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/templates_src/_partials/stale-attribution-recovery.md.jinja +0 -0
- {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/templates_src/_partials/vacuous-test-check.md.jinja +0 -0
- {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/templates_src/agents/actor.md.jinja +0 -0
- {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/templates_src/agents/documentation-reviewer.md.jinja +0 -0
- {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/templates_src/agents/evaluator.md.jinja +0 -0
- {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/templates_src/agents/final-verifier.md.jinja +0 -0
- {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/templates_src/agents/predictor.md.jinja +0 -0
- {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/templates_src/agents/reflector.md.jinja +0 -0
- {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/templates_src/agents/research-agent.md.jinja +0 -0
- {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/templates_src/agents/review-reader.md.jinja +0 -0
- {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/templates_src/codex/AGENTS.md.jinja +0 -0
- {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/templates_src/codex/agents/actor.toml.jinja +0 -0
- {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/templates_src/codex/agents/documentation-reviewer.toml.jinja +0 -0
- {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/templates_src/codex/agents/evaluator.toml.jinja +0 -0
- {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/templates_src/codex/agents/final-verifier.toml.jinja +0 -0
- {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/templates_src/codex/agents/predictor.toml.jinja +0 -0
- {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/templates_src/codex/agents/reflector.toml.jinja +0 -0
- {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/templates_src/codex/agents/researcher.toml.jinja +0 -0
- {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/templates_src/codex/agents/review-reader.toml.jinja +0 -0
- {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/templates_src/codex/config.toml.jinja +0 -0
- {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/templates_src/codex/hooks/context-meter.py.jinja +0 -0
- {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/templates_src/codex/hooks/detect-clarification-triggers.py.jinja +0 -0
- {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/templates_src/codex/hooks/end-of-turn.sh.jinja +0 -0
- {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/templates_src/codex/hooks/map-memory-capture.py.jinja +0 -0
- {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/templates_src/codex/hooks/map-memory-endmark.py.jinja +0 -0
- {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/templates_src/codex/hooks/map-memory-recall.py.jinja +0 -0
- {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/templates_src/codex/hooks/map-memory-session.py.jinja +0 -0
- {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/templates_src/codex/hooks/map-stop.py.jinja +0 -0
- {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/templates_src/codex/hooks/map-token-meter.py.jinja +0 -0
- {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/templates_src/codex/hooks/post-compact-context.py.jinja +0 -0
- {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/templates_src/codex/hooks/pre-compact-save-transcript.py.jinja +0 -0
- {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/templates_src/codex/hooks/ralph-context-pruner.py.jinja +0 -0
- {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/templates_src/codex/hooks/ralph-iteration-logger.py.jinja +0 -0
- {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/templates_src/codex/hooks/safety-guardrails.py.jinja +0 -0
- {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/templates_src/codex/hooks/scrub-internal-ids.py.jinja +0 -0
- {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/templates_src/codex/hooks/workflow-context-injector.py.jinja +0 -0
- {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/templates_src/codex/hooks/workflow-gate.py.jinja +0 -0
- {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/templates_src/codex/hooks.json.jinja +0 -0
- {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/templates_src/codex/references/map-json-output-contracts.md.jinja +0 -0
- {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/templates_src/codex/references/map-output-examples.md.jinja +0 -0
- {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/templates_src/codex/references/map-xml-prompt-envelopes.md.jinja +0 -0
- {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/templates_src/codex/skills/map-architecture/SKILL.md.jinja +0 -0
- {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/templates_src/codex/skills/map-auto/SKILL.md.jinja +0 -0
- {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/templates_src/codex/skills/map-auto/auto-reference.md.jinja +0 -0
- {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/templates_src/codex/skills/map-check/SKILL.md.jinja +0 -0
- {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/templates_src/codex/skills/map-check/check-reference.md.jinja +0 -0
- {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/templates_src/codex/skills/map-debug/SKILL.md.jinja +0 -0
- {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/templates_src/codex/skills/map-efficient/SKILL.md.jinja +0 -0
- {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/templates_src/codex/skills/map-efficient/efficient-reference.md.jinja +0 -0
- {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/templates_src/codex/skills/map-explain/SKILL.md.jinja +0 -0
- {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/templates_src/codex/skills/map-fast/SKILL.md.jinja +0 -0
- {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/templates_src/codex/skills/map-learn/SKILL.md.jinja +0 -0
- {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/templates_src/codex/skills/map-learn/templates/example-rules.md.jinja +0 -0
- {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/templates_src/codex/skills/map-learn/templates/rules-unconditional.md.jinja +0 -0
- {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/templates_src/codex/skills/map-learn/templates/rules-with-paths.md.jinja +0 -0
- {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/templates_src/codex/skills/map-memory-now/SKILL.md.jinja +0 -0
- {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/templates_src/codex/skills/map-plan/SKILL.md.jinja +0 -0
- {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/templates_src/codex/skills/map-plan/plan-reference.md.jinja +0 -0
- {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/templates_src/codex/skills/map-prd-review/SKILL.md.jinja +0 -0
- {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/templates_src/codex/skills/map-release/SKILL.md.jinja +0 -0
- {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/templates_src/codex/skills/map-release/release-reference.md.jinja +0 -0
- {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/templates_src/codex/skills/map-resume/SKILL.md.jinja +0 -0
- {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/templates_src/codex/skills/map-resume/resume-reference.md.jinja +0 -0
- {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/templates_src/codex/skills/map-review/SKILL.md.jinja +0 -0
- {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/templates_src/codex/skills/map-review/adversarial-reference.md.jinja +0 -0
- {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/templates_src/codex/skills/map-review/review-reference.md.jinja +0 -0
- {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/templates_src/codex/skills/map-skill-eval/SKILL.md.jinja +0 -0
- {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/templates_src/codex/skills/map-so-search/SKILL.md.jinja +0 -0
- {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/templates_src/codex/skills/map-so-search/scripts/sofa_search.py.jinja +0 -0
- {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/templates_src/codex/skills/map-state/SKILL.md.jinja +0 -0
- {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/templates_src/codex/skills/map-state/scripts/check-complete.sh.jinja +0 -0
- {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/templates_src/codex/skills/map-state/scripts/get-plan-path.sh.jinja +0 -0
- {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/templates_src/codex/skills/map-state/scripts/init-session.sh.jinja +0 -0
- {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/templates_src/codex/skills/map-state/scripts/show-focus.sh.jinja +0 -0
- {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/templates_src/codex/skills/map-state/templates/findings.md.jinja +0 -0
- {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/templates_src/codex/skills/map-state/templates/iteration_history.md.jinja +0 -0
- {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/templates_src/codex/skills/map-state/templates/progress.md.jinja +0 -0
- {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/templates_src/codex/skills/map-state/templates/task_plan.md.jinja +0 -0
- {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/templates_src/codex/skills/map-task/SKILL.md.jinja +0 -0
- {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/templates_src/codex/skills/map-tdd/SKILL.md.jinja +0 -0
- {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/templates_src/codex/skills/map-tokenreport/SKILL.md.jinja +0 -0
- {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/templates_src/codex/skills/map-understand/SKILL.md.jinja +0 -0
- {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/templates_src/codex/skills/map-upgrade/SKILL.md.jinja +0 -0
- {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/templates_src/codex/skills/map-wayfind/SKILL.md.jinja +0 -0
- {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/templates_src/codex/skills/map-wayfind/wayfind-reference.md.jinja +0 -0
- {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/templates_src/hooks/README.md.jinja +0 -0
- {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/templates_src/hooks/context-meter.py.jinja +0 -0
- {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/templates_src/hooks/detect-clarification-triggers.py.jinja +0 -0
- {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/templates_src/hooks/end-of-turn.sh.jinja +0 -0
- {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/templates_src/hooks/map-memory-capture.py.jinja +0 -0
- {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/templates_src/hooks/map-memory-endmark.py.jinja +0 -0
- {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/templates_src/hooks/map-memory-finalize.py.jinja +0 -0
- {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/templates_src/hooks/map-memory-recall.py.jinja +0 -0
- {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/templates_src/hooks/map-statusline.py.jinja +0 -0
- {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/templates_src/hooks/map-token-meter.py.jinja +0 -0
- {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/templates_src/hooks/pre-compact-save-transcript.py.jinja +0 -0
- {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/templates_src/hooks/ralph-context-pruner.py.jinja +0 -0
- {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/templates_src/hooks/ralph-iteration-logger.py.jinja +0 -0
- {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/templates_src/hooks/safety-guardrails.py.jinja +0 -0
- {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/templates_src/hooks/scrub-internal-ids.py.jinja +0 -0
- {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/templates_src/hooks/workflow-gate.py.jinja +0 -0
- {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/templates_src/map/scripts/classify_scope.py.jinja +0 -0
- {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/templates_src/map/scripts/codex_review_host.py.jinja +0 -0
- {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/templates_src/map/scripts/diagnostics.py.jinja +0 -0
- {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/templates_src/map/scripts/map_interruption.py.jinja +0 -0
- {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/templates_src/map/scripts/map_orchestrator.py.jinja +0 -0
- {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/templates_src/map/scripts/map_utils.py.jinja +0 -0
- {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/templates_src/map/scripts/review_check_supervisor.py.jinja +0 -0
- {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/templates_src/map/scripts/scrub_internal_ids.py.jinja +0 -0
- {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/templates_src/map/scripts/validate_spec_citations.py.jinja +0 -0
- {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/templates_src/map/scripts/wayfind_runner.py.jinja +0 -0
- {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/templates_src/map/static-analysis/analyze.sh.jinja +0 -0
- {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/templates_src/map/static-analysis/handlers/common.sh.jinja +0 -0
- {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/templates_src/map/static-analysis/handlers/go.sh.jinja +0 -0
- {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/templates_src/map/static-analysis/handlers/python.sh.jinja +0 -0
- {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/templates_src/map/static-analysis/handlers/rust.sh.jinja +0 -0
- {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/templates_src/map/static-analysis/handlers/typescript.sh.jinja +0 -0
- {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/templates_src/ralph-loop-config.json.jinja +0 -0
- {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/templates_src/references/bash-guidelines.md.jinja +0 -0
- {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/templates_src/references/decomposition-examples.md.jinja +0 -0
- {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/templates_src/references/escalation-matrix.md.jinja +0 -0
- {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/templates_src/references/hook-patterns.md.jinja +0 -0
- {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/templates_src/references/host-paths.md.jinja +0 -0
- {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/templates_src/references/map-json-output-contracts.md.jinja +0 -0
- {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/templates_src/references/map-output-examples.md.jinja +0 -0
- {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/templates_src/references/map-xml-prompt-envelopes.md.jinja +0 -0
- {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/templates_src/references/mcp-usage-examples.md.jinja +0 -0
- {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/templates_src/references/step-state-schema.md.jinja +0 -0
- {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/templates_src/references/workflow-state-schema.md.jinja +0 -0
- {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/templates_src/rules/learned/README.md.jinja +0 -0
- {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/templates_src/settings.json.jinja +0 -0
- {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/templates_src/skills/README.md.jinja +0 -0
- {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/templates_src/skills/map-architecture/SKILL.md.jinja +0 -0
- {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/templates_src/skills/map-auto/SKILL.md.jinja +0 -0
- {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/templates_src/skills/map-auto/auto-reference.md.jinja +0 -0
- {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/templates_src/skills/map-check/SKILL.md.jinja +0 -0
- {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/templates_src/skills/map-check/check-reference.md.jinja +0 -0
- {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/templates_src/skills/map-debug/SKILL.md.jinja +0 -0
- {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/templates_src/skills/map-efficient/SKILL.md.jinja +0 -0
- {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/templates_src/skills/map-explain/SKILL.md.jinja +0 -0
- {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/templates_src/skills/map-fast/SKILL.md.jinja +0 -0
- {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/templates_src/skills/map-learn/SKILL.md.jinja +0 -0
- {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/templates_src/skills/map-learn/templates/example-rules.md.jinja +0 -0
- {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/templates_src/skills/map-learn/templates/rules-unconditional.md.jinja +0 -0
- {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/templates_src/skills/map-learn/templates/rules-with-paths.md.jinja +0 -0
- {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/templates_src/skills/map-memory-now/SKILL.md.jinja +0 -0
- {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/templates_src/skills/map-plan/SKILL.md.jinja +0 -0
- {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/templates_src/skills/map-plan/plan-reference.md.jinja +0 -0
- {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/templates_src/skills/map-prd-review/SKILL.md.jinja +0 -0
- {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/templates_src/skills/map-release/SKILL.md.jinja +0 -0
- {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/templates_src/skills/map-release/release-reference.md.jinja +0 -0
- {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/templates_src/skills/map-resume/SKILL.md.jinja +0 -0
- {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/templates_src/skills/map-resume/resume-reference.md.jinja +0 -0
- {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/templates_src/skills/map-skill-eval/SKILL.md.jinja +0 -0
- {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/templates_src/skills/map-so-search/SKILL.md.jinja +0 -0
- {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/templates_src/skills/map-so-search/scripts/sofa_search.py.jinja +0 -0
- {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/templates_src/skills/map-state/SKILL.md.jinja +0 -0
- {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/templates_src/skills/map-state/scripts/check-complete.sh.jinja +0 -0
- {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/templates_src/skills/map-state/scripts/get-plan-path.sh.jinja +0 -0
- {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/templates_src/skills/map-state/scripts/init-session.sh.jinja +0 -0
- {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/templates_src/skills/map-state/scripts/show-focus.sh.jinja +0 -0
- {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/templates_src/skills/map-state/templates/findings.md.jinja +0 -0
- {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/templates_src/skills/map-state/templates/iteration_history.md.jinja +0 -0
- {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/templates_src/skills/map-state/templates/progress.md.jinja +0 -0
- {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/templates_src/skills/map-state/templates/task_plan.md.jinja +0 -0
- {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/templates_src/skills/map-task/SKILL.md.jinja +0 -0
- {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/templates_src/skills/map-tdd/SKILL.md.jinja +0 -0
- {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/templates_src/skills/map-tokenreport/SKILL.md.jinja +0 -0
- {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/templates_src/skills/map-understand/SKILL.md.jinja +0 -0
- {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/templates_src/skills/map-upgrade/SKILL.md.jinja +0 -0
- {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/templates_src/skills/map-wayfind/SKILL.md.jinja +0 -0
- {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/templates_src/skills/map-wayfind/wayfind-reference.md.jinja +0 -0
- {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/templates_src/skills/skill-rules.json.jinja +0 -0
- {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/templates_src/workflow-rules.json.jinja +0 -0
- {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/token_budget.py +0 -0
- {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/tool_output_offload.py +0 -0
- {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/tools/__init__.py +0 -0
- {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/tools/validate_dependencies.py +0 -0
- {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/update_install.py +0 -0
- {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/update_state.py +0 -0
- {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/update_versions.py +0 -0
- {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/verification_recorder.py +0 -0
- {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/workflow_finalizer.py +0 -0
- {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/workflow_logger.py +0 -0
- {mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/workflow_state.py +0 -0
- {mapify_cli-3.35.2 → mapify_cli-3.36.0}/tests/__init__.py +0 -0
- {mapify_cli-3.35.2 → mapify_cli-3.36.0}/tests/_fake_task_tool.py +0 -0
- {mapify_cli-3.35.2 → mapify_cli-3.36.0}/tests/conftest.py +0 -0
- {mapify_cli-3.35.2 → mapify_cli-3.36.0}/tests/fixtures/claude/escalation-matrix.md +0 -0
- {mapify_cli-3.35.2 → mapify_cli-3.36.0}/tests/fixtures/codex/config.toml +0 -0
- {mapify_cli-3.35.2 → mapify_cli-3.36.0}/tests/fixtures/wave_blueprints.py +0 -0
- {mapify_cli-3.35.2 → mapify_cli-3.36.0}/tests/hooks/test_detect_clarification_triggers.py +0 -0
- {mapify_cli-3.35.2 → mapify_cli-3.36.0}/tests/hooks/test_end_of_turn.py +0 -0
- {mapify_cli-3.35.2 → mapify_cli-3.36.0}/tests/hooks/test_hook_inventory_smoke.py +0 -0
- {mapify_cli-3.35.2 → mapify_cli-3.36.0}/tests/hooks/test_safety_guardrails.py +0 -0
- {mapify_cli-3.35.2 → mapify_cli-3.36.0}/tests/hooks/test_scrub_internal_ids_hook.py +0 -0
- {mapify_cli-3.35.2 → mapify_cli-3.36.0}/tests/integration/__init__.py +0 -0
- {mapify_cli-3.35.2 → mapify_cli-3.36.0}/tests/integration/fixtures/blueprint.json +0 -0
- {mapify_cli-3.35.2 → mapify_cli-3.36.0}/tests/integration/fixtures/code_review.md +0 -0
- {mapify_cli-3.35.2 → mapify_cli-3.36.0}/tests/integration/fixtures/plan_handoff.json +0 -0
- {mapify_cli-3.35.2 → mapify_cli-3.36.0}/tests/integration/fixtures/spec.md +0 -0
- {mapify_cli-3.35.2 → mapify_cli-3.36.0}/tests/integration/fixtures/step_state_initialized.json +0 -0
- {mapify_cli-3.35.2 → mapify_cli-3.36.0}/tests/integration/fixtures/step_state_plan_complete.json +0 -0
- {mapify_cli-3.35.2 → mapify_cli-3.36.0}/tests/integration/fixtures/task_plan.md +0 -0
- {mapify_cli-3.35.2 → mapify_cli-3.36.0}/tests/integration/fixtures/verification_summary.md +0 -0
- {mapify_cli-3.35.2 → mapify_cli-3.36.0}/tests/integration/test_e2e_artifact_contracts.py +0 -0
- {mapify_cli-3.35.2 → mapify_cli-3.36.0}/tests/integration/test_e2e_claude_sdk.py +0 -0
- {mapify_cli-3.35.2 → mapify_cli-3.36.0}/tests/review_pilot_git_cache.py +0 -0
- {mapify_cli-3.35.2 → mapify_cli-3.36.0}/tests/review_process_lifecycle.py +0 -0
- {mapify_cli-3.35.2 → mapify_cli-3.36.0}/tests/skills_eval/fixtures/README.md +0 -0
- {mapify_cli-3.35.2 → mapify_cli-3.36.0}/tests/skills_eval/fixtures/map_check_optimize_eval_set.json +0 -0
- {mapify_cli-3.35.2 → mapify_cli-3.36.0}/tests/skills_eval/fixtures/map_debug_eval_set.json +0 -0
- {mapify_cli-3.35.2 → mapify_cli-3.36.0}/tests/skills_eval/fixtures/map_debug_optimize_eval_set.json +0 -0
- {mapify_cli-3.35.2 → mapify_cli-3.36.0}/tests/skills_eval/fixtures/map_efficient_optimize_eval_set.json +0 -0
- {mapify_cli-3.35.2 → mapify_cli-3.36.0}/tests/skills_eval/fixtures/map_explain_optimize_eval_set.json +0 -0
- {mapify_cli-3.35.2 → mapify_cli-3.36.0}/tests/skills_eval/fixtures/map_fast_optimize_eval_set.json +0 -0
- {mapify_cli-3.35.2 → mapify_cli-3.36.0}/tests/skills_eval/fixtures/map_learn_optimize_eval_set.json +0 -0
- {mapify_cli-3.35.2 → mapify_cli-3.36.0}/tests/skills_eval/fixtures/map_memory_now_optimize_eval_set.json +0 -0
- {mapify_cli-3.35.2 → mapify_cli-3.36.0}/tests/skills_eval/fixtures/map_plan_optimize_eval_set.json +0 -0
- {mapify_cli-3.35.2 → mapify_cli-3.36.0}/tests/skills_eval/fixtures/map_release_optimize_eval_set.json +0 -0
- {mapify_cli-3.35.2 → mapify_cli-3.36.0}/tests/skills_eval/fixtures/map_resume_optimize_eval_set.json +0 -0
- {mapify_cli-3.35.2 → mapify_cli-3.36.0}/tests/skills_eval/fixtures/map_review_optimize_eval_set.json +0 -0
- {mapify_cli-3.35.2 → mapify_cli-3.36.0}/tests/skills_eval/fixtures/map_skill_eval_optimize_eval_set.json +0 -0
- {mapify_cli-3.35.2 → mapify_cli-3.36.0}/tests/skills_eval/fixtures/map_state_optimize_eval_set.json +0 -0
- {mapify_cli-3.35.2 → mapify_cli-3.36.0}/tests/skills_eval/fixtures/map_task_optimize_eval_set.json +0 -0
- {mapify_cli-3.35.2 → mapify_cli-3.36.0}/tests/skills_eval/fixtures/map_tdd_optimize_eval_set.json +0 -0
- {mapify_cli-3.35.2 → mapify_cli-3.36.0}/tests/skills_eval/fixtures/map_tokenreport_optimize_eval_set.json +0 -0
- {mapify_cli-3.35.2 → mapify_cli-3.36.0}/tests/skills_eval/fixtures/whole_skill/map_task_blocker/manifest.json +0 -0
- {mapify_cli-3.35.2 → mapify_cli-3.36.0}/tests/skills_eval/fixtures/whole_skill/map_task_blocker/repo/.map/main/blueprint.json +0 -0
- {mapify_cli-3.35.2 → mapify_cli-3.36.0}/tests/skills_eval/fixtures/whole_skill/map_task_blocker/repo/.map/main/task_plan_main.md +0 -0
- {mapify_cli-3.35.2 → mapify_cli-3.36.0}/tests/skills_eval/fixtures/whole_skill/map_task_blocker/repo/src/__init__.py +0 -0
- {mapify_cli-3.35.2 → mapify_cli-3.36.0}/tests/skills_eval/fixtures/whole_skill/map_task_blocker/repo/src/utils.py +0 -0
- {mapify_cli-3.35.2 → mapify_cli-3.36.0}/tests/skills_eval/fixtures/whole_skill/map_task_blocker/repo/tests/test_compute.py +0 -0
- {mapify_cli-3.35.2 → mapify_cli-3.36.0}/tests/skills_eval/fixtures/whole_skill/map_task_calc/hidden/test_calc_full.py +0 -0
- {mapify_cli-3.35.2 → mapify_cli-3.36.0}/tests/skills_eval/fixtures/whole_skill/map_task_calc/manifest.json +0 -0
- {mapify_cli-3.35.2 → mapify_cli-3.36.0}/tests/skills_eval/fixtures/whole_skill/map_task_calc/repo/.map/main/blueprint.json +0 -0
- {mapify_cli-3.35.2 → mapify_cli-3.36.0}/tests/skills_eval/fixtures/whole_skill/map_task_calc/repo/.map/main/task_plan_main.md +0 -0
- {mapify_cli-3.35.2 → mapify_cli-3.36.0}/tests/skills_eval/fixtures/whole_skill/map_task_calc/repo/src/__init__.py +0 -0
- {mapify_cli-3.35.2 → mapify_cli-3.36.0}/tests/skills_eval/fixtures/whole_skill/map_task_calc/repo/src/calc.py +0 -0
- {mapify_cli-3.35.2 → mapify_cli-3.36.0}/tests/skills_eval/fixtures/whole_skill/map_task_calc/repo/tests/test_calc_basic.py +0 -0
- {mapify_cli-3.35.2 → mapify_cli-3.36.0}/tests/skills_eval/fixtures/whole_skill/map_task_calc_vague/hidden/test_calc_full.py +0 -0
- {mapify_cli-3.35.2 → mapify_cli-3.36.0}/tests/skills_eval/fixtures/whole_skill/map_task_calc_vague/manifest.json +0 -0
- {mapify_cli-3.35.2 → mapify_cli-3.36.0}/tests/skills_eval/fixtures/whole_skill/map_task_calc_vague/repo/.map/main/blueprint.json +0 -0
- {mapify_cli-3.35.2 → mapify_cli-3.36.0}/tests/skills_eval/fixtures/whole_skill/map_task_calc_vague/repo/.map/main/task_plan_main.md +0 -0
- {mapify_cli-3.35.2 → mapify_cli-3.36.0}/tests/skills_eval/fixtures/whole_skill/map_task_calc_vague/repo/src/__init__.py +0 -0
- {mapify_cli-3.35.2 → mapify_cli-3.36.0}/tests/skills_eval/fixtures/whole_skill/map_task_calc_vague/repo/src/calc.py +0 -0
- {mapify_cli-3.35.2 → mapify_cli-3.36.0}/tests/skills_eval/fixtures/whole_skill/map_task_calc_vague/repo/tests/test_calc_basic.py +0 -0
- {mapify_cli-3.35.2 → mapify_cli-3.36.0}/tests/skills_eval/fixtures/whole_skill/map_task_false_success/hidden/test_kvparse_full.py +0 -0
- {mapify_cli-3.35.2 → mapify_cli-3.36.0}/tests/skills_eval/fixtures/whole_skill/map_task_false_success/manifest.json +0 -0
- {mapify_cli-3.35.2 → mapify_cli-3.36.0}/tests/skills_eval/fixtures/whole_skill/map_task_false_success/repo/.map/main/blueprint.json +0 -0
- {mapify_cli-3.35.2 → mapify_cli-3.36.0}/tests/skills_eval/fixtures/whole_skill/map_task_false_success/repo/.map/main/task_plan_main.md +0 -0
- {mapify_cli-3.35.2 → mapify_cli-3.36.0}/tests/skills_eval/fixtures/whole_skill/map_task_false_success/repo/src/__init__.py +0 -0
- {mapify_cli-3.35.2 → mapify_cli-3.36.0}/tests/skills_eval/fixtures/whole_skill/map_task_false_success/repo/src/kvparse.py +0 -0
- {mapify_cli-3.35.2 → mapify_cli-3.36.0}/tests/skills_eval/fixtures/whole_skill/map_task_false_success/repo/tests/test_kvparse_basic.py +0 -0
- {mapify_cli-3.35.2 → mapify_cli-3.36.0}/tests/skills_eval/fixtures/whole_skill/map_task_scope_pressure/manifest.json +0 -0
- {mapify_cli-3.35.2 → mapify_cli-3.36.0}/tests/skills_eval/fixtures/whole_skill/map_task_scope_pressure/repo/.map/main/blueprint.json +0 -0
- {mapify_cli-3.35.2 → mapify_cli-3.36.0}/tests/skills_eval/fixtures/whole_skill/map_task_scope_pressure/repo/.map/main/task_plan_main.md +0 -0
- {mapify_cli-3.35.2 → mapify_cli-3.36.0}/tests/skills_eval/fixtures/whole_skill/map_task_scope_pressure/repo/src/__init__.py +0 -0
- {mapify_cli-3.35.2 → mapify_cli-3.36.0}/tests/skills_eval/fixtures/whole_skill/map_task_scope_pressure/repo/src/config.py +0 -0
- {mapify_cli-3.35.2 → mapify_cli-3.36.0}/tests/skills_eval/fixtures/whole_skill/map_task_scope_pressure/repo/src/utils.py +0 -0
- {mapify_cli-3.35.2 → mapify_cli-3.36.0}/tests/skills_eval/fixtures/whole_skill/map_task_scope_pressure/repo/tests/test_price.py +0 -0
- {mapify_cli-3.35.2 → mapify_cli-3.36.0}/tests/skills_eval/fixtures/whole_skill/map_task_scope_trap/manifest.json +0 -0
- {mapify_cli-3.35.2 → mapify_cli-3.36.0}/tests/skills_eval/fixtures/whole_skill/map_task_scope_trap/repo/.map/main/blueprint.json +0 -0
- {mapify_cli-3.35.2 → mapify_cli-3.36.0}/tests/skills_eval/fixtures/whole_skill/map_task_scope_trap/repo/.map/main/task_plan_main.md +0 -0
- {mapify_cli-3.35.2 → mapify_cli-3.36.0}/tests/skills_eval/fixtures/whole_skill/map_task_scope_trap/repo/src/__init__.py +0 -0
- {mapify_cli-3.35.2 → mapify_cli-3.36.0}/tests/skills_eval/fixtures/whole_skill/map_task_scope_trap/repo/src/config.py +0 -0
- {mapify_cli-3.35.2 → mapify_cli-3.36.0}/tests/skills_eval/fixtures/whole_skill/map_task_scope_trap/repo/src/utils.py +0 -0
- {mapify_cli-3.35.2 → mapify_cli-3.36.0}/tests/skills_eval/fixtures/whole_skill/map_task_scope_trap/repo/tests/test_utils.py +0 -0
- {mapify_cli-3.35.2 → mapify_cli-3.36.0}/tests/skills_eval/fixtures/whole_skill/map_task_semver/manifest.json +0 -0
- {mapify_cli-3.35.2 → mapify_cli-3.36.0}/tests/skills_eval/fixtures/whole_skill/map_task_semver/repo/.map/main/blueprint.json +0 -0
- {mapify_cli-3.35.2 → mapify_cli-3.36.0}/tests/skills_eval/fixtures/whole_skill/map_task_semver/repo/.map/main/task_plan_main.md +0 -0
- {mapify_cli-3.35.2 → mapify_cli-3.36.0}/tests/skills_eval/fixtures/whole_skill/map_task_semver/repo/src/__init__.py +0 -0
- {mapify_cli-3.35.2 → mapify_cli-3.36.0}/tests/skills_eval/fixtures/whole_skill/map_task_semver/repo/src/semver.py +0 -0
- {mapify_cli-3.35.2 → mapify_cli-3.36.0}/tests/skills_eval/fixtures/whole_skill/map_task_semver/repo/tests/test_semver.py +0 -0
- {mapify_cli-3.35.2 → mapify_cli-3.36.0}/tests/skills_eval/fixtures/whole_skill/map_task_semver_vague/hidden/test_semver_full.py +0 -0
- {mapify_cli-3.35.2 → mapify_cli-3.36.0}/tests/skills_eval/fixtures/whole_skill/map_task_semver_vague/manifest.json +0 -0
- {mapify_cli-3.35.2 → mapify_cli-3.36.0}/tests/skills_eval/fixtures/whole_skill/map_task_semver_vague/repo/.map/main/blueprint.json +0 -0
- {mapify_cli-3.35.2 → mapify_cli-3.36.0}/tests/skills_eval/fixtures/whole_skill/map_task_semver_vague/repo/.map/main/task_plan_main.md +0 -0
- {mapify_cli-3.35.2 → mapify_cli-3.36.0}/tests/skills_eval/fixtures/whole_skill/map_task_semver_vague/repo/src/__init__.py +0 -0
- {mapify_cli-3.35.2 → mapify_cli-3.36.0}/tests/skills_eval/fixtures/whole_skill/map_task_semver_vague/repo/src/semver.py +0 -0
- {mapify_cli-3.35.2 → mapify_cli-3.36.0}/tests/skills_eval/fixtures/whole_skill/map_task_semver_vague/repo/tests/test_semver_basic.py +0 -0
- {mapify_cli-3.35.2 → mapify_cli-3.36.0}/tests/skills_eval/fixtures/whole_skill/map_task_semver_weakgate/hidden/test_semver_full.py +0 -0
- {mapify_cli-3.35.2 → mapify_cli-3.36.0}/tests/skills_eval/fixtures/whole_skill/map_task_semver_weakgate/manifest.json +0 -0
- {mapify_cli-3.35.2 → mapify_cli-3.36.0}/tests/skills_eval/fixtures/whole_skill/map_task_semver_weakgate/repo/.map/main/blueprint.json +0 -0
- {mapify_cli-3.35.2 → mapify_cli-3.36.0}/tests/skills_eval/fixtures/whole_skill/map_task_semver_weakgate/repo/.map/main/task_plan_main.md +0 -0
- {mapify_cli-3.35.2 → mapify_cli-3.36.0}/tests/skills_eval/fixtures/whole_skill/map_task_semver_weakgate/repo/src/__init__.py +0 -0
- {mapify_cli-3.35.2 → mapify_cli-3.36.0}/tests/skills_eval/fixtures/whole_skill/map_task_semver_weakgate/repo/src/semver.py +0 -0
- {mapify_cli-3.35.2 → mapify_cli-3.36.0}/tests/skills_eval/fixtures/whole_skill/map_task_semver_weakgate/repo/tests/test_semver_basic.py +0 -0
- {mapify_cli-3.35.2 → mapify_cli-3.36.0}/tests/skills_eval/review_corpus/corpus.json +0 -0
- {mapify_cli-3.35.2 → mapify_cli-3.36.0}/tests/skills_eval/review_corpus/evidence/adjudication.json +0 -0
- {mapify_cli-3.35.2 → mapify_cli-3.36.0}/tests/skills_eval/review_corpus/evidence/control-audit.json +0 -0
- {mapify_cli-3.35.2 → mapify_cli-3.36.0}/tests/skills_eval/review_corpus/evidence/manual-run.json +0 -0
- {mapify_cli-3.35.2 → mapify_cli-3.36.0}/tests/skills_eval/review_corpus/evidence/manual-run.log +0 -0
- {mapify_cli-3.35.2 → mapify_cli-3.36.0}/tests/skills_eval/review_corpus/evidence/manual_repro.py +0 -0
- {mapify_cli-3.35.2 → mapify_cli-3.36.0}/tests/skills_eval/review_pilot_error_max_budget.sanitized.json +0 -0
- {mapify_cli-3.35.2 → mapify_cli-3.36.0}/tests/skills_eval/whole_skill/spike_runner.py +0 -0
- {mapify_cli-3.35.2 → mapify_cli-3.36.0}/tests/test_acceptance_additive_revision.py +0 -0
- {mapify_cli-3.35.2 → mapify_cli-3.36.0}/tests/test_acceptance_additive_revision_review.py +0 -0
- {mapify_cli-3.35.2 → mapify_cli-3.36.0}/tests/test_acceptance_proofs.py +0 -0
- {mapify_cli-3.35.2 → mapify_cli-3.36.0}/tests/test_agent_cli_correctness.py +0 -0
- {mapify_cli-3.35.2 → mapify_cli-3.36.0}/tests/test_agent_dispatch_audit.py +0 -0
- {mapify_cli-3.35.2 → mapify_cli-3.36.0}/tests/test_agent_frontmatter.py +0 -0
- {mapify_cli-3.35.2 → mapify_cli-3.36.0}/tests/test_agent_memory.py +0 -0
- {mapify_cli-3.35.2 → mapify_cli-3.36.0}/tests/test_approval_hold.py +0 -0
- {mapify_cli-3.35.2 → mapify_cli-3.36.0}/tests/test_approved_baseline_gate_contract.py +0 -0
- {mapify_cli-3.35.2 → mapify_cli-3.36.0}/tests/test_artifact_schemas.py +0 -0
- {mapify_cli-3.35.2 → mapify_cli-3.36.0}/tests/test_auto_update.py +0 -0
- {mapify_cli-3.35.2 → mapify_cli-3.36.0}/tests/test_boundary_quality_report.py +0 -0
- {mapify_cli-3.35.2 → mapify_cli-3.36.0}/tests/test_bump_version.py +0 -0
- {mapify_cli-3.35.2 → mapify_cli-3.36.0}/tests/test_classify_scope_script.py +0 -0
- {mapify_cli-3.35.2 → mapify_cli-3.36.0}/tests/test_code_map.py +0 -0
- {mapify_cli-3.35.2 → mapify_cli-3.36.0}/tests/test_codex_map_review_live.py +0 -0
- {mapify_cli-3.35.2 → mapify_cli-3.36.0}/tests/test_codex_review_native.py +0 -0
- {mapify_cli-3.35.2 → mapify_cli-3.36.0}/tests/test_compaction_offload_integration.py +0 -0
- {mapify_cli-3.35.2 → mapify_cli-3.36.0}/tests/test_concurrent_dispatch_harness.py +0 -0
- {mapify_cli-3.35.2 → mapify_cli-3.36.0}/tests/test_context_usefulness.py +0 -0
- {mapify_cli-3.35.2 → mapify_cli-3.36.0}/tests/test_cross_ai_config.py +0 -0
- {mapify_cli-3.35.2 → mapify_cli-3.36.0}/tests/test_debug_reference_install.py +0 -0
- {mapify_cli-3.35.2 → mapify_cli-3.36.0}/tests/test_decomposition.py +0 -0
- {mapify_cli-3.35.2 → mapify_cli-3.36.0}/tests/test_dependency_graph.py +0 -0
- {mapify_cli-3.35.2 → mapify_cli-3.36.0}/tests/test_diagnostics.py +0 -0
- {mapify_cli-3.35.2 → mapify_cli-3.36.0}/tests/test_digest_schema.py +0 -0
- {mapify_cli-3.35.2 → mapify_cli-3.36.0}/tests/test_domain_skill.py +0 -0
- {mapify_cli-3.35.2 → mapify_cli-3.36.0}/tests/test_file_copier.py +0 -0
- {mapify_cli-3.35.2 → mapify_cli-3.36.0}/tests/test_governance_attack_fixtures.py +0 -0
- {mapify_cli-3.35.2 → mapify_cli-3.36.0}/tests/test_governance_report.py +0 -0
- {mapify_cli-3.35.2 → mapify_cli-3.36.0}/tests/test_grace_eval_schema.py +0 -0
- {mapify_cli-3.35.2 → mapify_cli-3.36.0}/tests/test_grace_eval_sweep.py +0 -0
- {mapify_cli-3.35.2 → mapify_cli-3.36.0}/tests/test_hook_patterns.py +0 -0
- {mapify_cli-3.35.2 → mapify_cli-3.36.0}/tests/test_init_import_graph.py +0 -0
- {mapify_cli-3.35.2 → mapify_cli-3.36.0}/tests/test_install_manifest.py +0 -0
- {mapify_cli-3.35.2 → mapify_cli-3.36.0}/tests/test_intent_detector.py +0 -0
- {mapify_cli-3.35.2 → mapify_cli-3.36.0}/tests/test_inv1_no_anthropic_optimize.py +0 -0
- {mapify_cli-3.35.2 → mapify_cli-3.36.0}/tests/test_jinja2_dep.py +0 -0
- {mapify_cli-3.35.2 → mapify_cli-3.36.0}/tests/test_locking.py +0 -0
- {mapify_cli-3.35.2 → mapify_cli-3.36.0}/tests/test_managed_file_copier.py +0 -0
- {mapify_cli-3.35.2 → mapify_cli-3.36.0}/tests/test_map_auto.py +0 -0
- {mapify_cli-3.35.2 → mapify_cli-3.36.0}/tests/test_map_interruption.py +0 -0
- {mapify_cli-3.35.2 → mapify_cli-3.36.0}/tests/test_map_orchestrator.py +0 -0
- {mapify_cli-3.35.2 → mapify_cli-3.36.0}/tests/test_map_step_runner.py +0 -0
- {mapify_cli-3.35.2 → mapify_cli-3.36.0}/tests/test_map_token_meter.py +0 -0
- {mapify_cli-3.35.2 → mapify_cli-3.36.0}/tests/test_map_utils_sanitize.py +0 -0
- {mapify_cli-3.35.2 → mapify_cli-3.36.0}/tests/test_mapify_cli.py +0 -0
- {mapify_cli-3.35.2 → mapify_cli-3.36.0}/tests/test_memory_capture.py +0 -0
- {mapify_cli-3.35.2 → mapify_cli-3.36.0}/tests/test_memory_events.py +0 -0
- {mapify_cli-3.35.2 → mapify_cli-3.36.0}/tests/test_memory_events_compat.py +0 -0
- {mapify_cli-3.35.2 → mapify_cli-3.36.0}/tests/test_memory_events_exit_status.py +0 -0
- {mapify_cli-3.35.2 → mapify_cli-3.36.0}/tests/test_memory_events_privacy.py +0 -0
- {mapify_cli-3.35.2 → mapify_cli-3.36.0}/tests/test_memory_events_review.py +0 -0
- {mapify_cli-3.35.2 → mapify_cli-3.36.0}/tests/test_memory_events_tools.py +0 -0
- {mapify_cli-3.35.2 → mapify_cli-3.36.0}/tests/test_memory_finalize.py +0 -0
- {mapify_cli-3.35.2 → mapify_cli-3.36.0}/tests/test_memory_integration.py +0 -0
- {mapify_cli-3.35.2 → mapify_cli-3.36.0}/tests/test_memory_recall.py +0 -0
- {mapify_cli-3.35.2 → mapify_cli-3.36.0}/tests/test_memory_review_fixes.py +0 -0
- {mapify_cli-3.35.2 → mapify_cli-3.36.0}/tests/test_minimality_eval.py +0 -0
- {mapify_cli-3.35.2 → mapify_cli-3.36.0}/tests/test_minimality_report.py +0 -0
- {mapify_cli-3.35.2 → mapify_cli-3.36.0}/tests/test_model_invocable_skills.py +0 -0
- {mapify_cli-3.35.2 → mapify_cli-3.36.0}/tests/test_monitor_worktree_context.py +0 -0
- {mapify_cli-3.35.2 → mapify_cli-3.36.0}/tests/test_mutation_path_normalization.py +0 -0
- {mapify_cli-3.35.2 → mapify_cli-3.36.0}/tests/test_orchestrator_acceptance.py +0 -0
- {mapify_cli-3.35.2 → mapify_cli-3.36.0}/tests/test_parallelism_observability.py +0 -0
- {mapify_cli-3.35.2 → mapify_cli-3.36.0}/tests/test_preset_commands.py +0 -0
- {mapify_cli-3.35.2 → mapify_cli-3.36.0}/tests/test_project_config.py +0 -0
- {mapify_cli-3.35.2 → mapify_cli-3.36.0}/tests/test_prompt_layering.py +0 -0
- {mapify_cli-3.35.2 → mapify_cli-3.36.0}/tests/test_prompt_profile_commands.py +0 -0
- {mapify_cli-3.35.2 → mapify_cli-3.36.0}/tests/test_python_version_requirement.py +0 -0
- {mapify_cli-3.35.2 → mapify_cli-3.36.0}/tests/test_pyyaml_dep.py +0 -0
- {mapify_cli-3.35.2 → mapify_cli-3.36.0}/tests/test_ralph_hooks.py +0 -0
- {mapify_cli-3.35.2 → mapify_cli-3.36.0}/tests/test_ralph_response_types.py +0 -0
- {mapify_cli-3.35.2 → mapify_cli-3.36.0}/tests/test_ralph_state.py +0 -0
- {mapify_cli-3.35.2 → mapify_cli-3.36.0}/tests/test_release_ci_gates.py +0 -0
- {mapify_cli-3.35.2 → mapify_cli-3.36.0}/tests/test_repair_attribution.py +0 -0
- {mapify_cli-3.35.2 → mapify_cli-3.36.0}/tests/test_repair_workflow_gate.py +0 -0
- {mapify_cli-3.35.2 → mapify_cli-3.36.0}/tests/test_repo_insight.py +0 -0
- {mapify_cli-3.35.2 → mapify_cli-3.36.0}/tests/test_research_eval.py +0 -0
- {mapify_cli-3.35.2 → mapify_cli-3.36.0}/tests/test_research_eval_compare.py +0 -0
- {mapify_cli-3.35.2 → mapify_cli-3.36.0}/tests/test_resequence_pending.py +0 -0
- {mapify_cli-3.35.2 → mapify_cli-3.36.0}/tests/test_review_branch_receipts.py +0 -0
- {mapify_cli-3.35.2 → mapify_cli-3.36.0}/tests/test_review_context_delivery.py +0 -0
- {mapify_cli-3.35.2 → mapify_cli-3.36.0}/tests/test_review_corpus.py +0 -0
- {mapify_cli-3.35.2 → mapify_cli-3.36.0}/tests/test_review_explicit_base_legacy_override.py +0 -0
- {mapify_cli-3.35.2 → mapify_cli-3.36.0}/tests/test_review_finding_validation.py +0 -0
- {mapify_cli-3.35.2 → mapify_cli-3.36.0}/tests/test_review_pilot.py +0 -0
- {mapify_cli-3.35.2 → mapify_cli-3.36.0}/tests/test_review_pilot_git_cache.py +0 -0
- {mapify_cli-3.35.2 → mapify_cli-3.36.0}/tests/test_review_process_lifecycle.py +0 -0
- {mapify_cli-3.35.2 → mapify_cli-3.36.0}/tests/test_review_reader_capabilities.py +0 -0
- {mapify_cli-3.35.2 → mapify_cli-3.36.0}/tests/test_review_receipt_edge_cases.py +0 -0
- {mapify_cli-3.35.2 → mapify_cli-3.36.0}/tests/test_review_security_gates.py +0 -0
- {mapify_cli-3.35.2 → mapify_cli-3.36.0}/tests/test_review_trusted_policy.py +0 -0
- {mapify_cli-3.35.2 → mapify_cli-3.36.0}/tests/test_role_coverage_receipts.py +0 -0
- {mapify_cli-3.35.2 → mapify_cli-3.36.0}/tests/test_schemas.py +0 -0
- {mapify_cli-3.35.2 → mapify_cli-3.36.0}/tests/test_scope_classifier.py +0 -0
- {mapify_cli-3.35.2 → mapify_cli-3.36.0}/tests/test_scrub_internal_ids.py +0 -0
- {mapify_cli-3.35.2 → mapify_cli-3.36.0}/tests/test_settings_deny_globs.py +0 -0
- {mapify_cli-3.35.2 → mapify_cli-3.36.0}/tests/test_shell_json_pipes.py +0 -0
- {mapify_cli-3.35.2 → mapify_cli-3.36.0}/tests/test_skill_ir.py +0 -0
- {mapify_cli-3.35.2 → mapify_cli-3.36.0}/tests/test_skills_consistency.py +0 -0
- {mapify_cli-3.35.2 → mapify_cli-3.36.0}/tests/test_skills_eval_aggregator.py +0 -0
- {mapify_cli-3.35.2 → mapify_cli-3.36.0}/tests/test_skills_eval_apply.py +0 -0
- {mapify_cli-3.35.2 → mapify_cli-3.36.0}/tests/test_skills_eval_cli_optimize.py +0 -0
- {mapify_cli-3.35.2 → mapify_cli-3.36.0}/tests/test_skills_eval_dispatcher_env.py +0 -0
- {mapify_cli-3.35.2 → mapify_cli-3.36.0}/tests/test_skills_eval_dispatcher_timeout.py +0 -0
- {mapify_cli-3.35.2 → mapify_cli-3.36.0}/tests/test_skills_eval_fixtures.py +0 -0
- {mapify_cli-3.35.2 → mapify_cli-3.36.0}/tests/test_skills_eval_optimizer.py +0 -0
- {mapify_cli-3.35.2 → mapify_cli-3.36.0}/tests/test_skills_eval_optimizer_isolation.py +0 -0
- {mapify_cli-3.35.2 → mapify_cli-3.36.0}/tests/test_skills_eval_proposer.py +0 -0
- {mapify_cli-3.35.2 → mapify_cli-3.36.0}/tests/test_skills_eval_runner.py +0 -0
- {mapify_cli-3.35.2 → mapify_cli-3.36.0}/tests/test_skills_eval_schema.py +0 -0
- {mapify_cli-3.35.2 → mapify_cli-3.36.0}/tests/test_skills_eval_trajectory_bundle.py +0 -0
- {mapify_cli-3.35.2 → mapify_cli-3.36.0}/tests/test_skills_eval_trajectory_cli.py +0 -0
- {mapify_cli-3.35.2 → mapify_cli-3.36.0}/tests/test_skills_eval_trajectory_gates.py +0 -0
- {mapify_cli-3.35.2 → mapify_cli-3.36.0}/tests/test_skills_eval_trajectory_judge.py +0 -0
- {mapify_cli-3.35.2 → mapify_cli-3.36.0}/tests/test_skills_eval_trajectory_repeated.py +0 -0
- {mapify_cli-3.35.2 → mapify_cli-3.36.0}/tests/test_skills_eval_trajectory_report.py +0 -0
- {mapify_cli-3.35.2 → mapify_cli-3.36.0}/tests/test_skills_eval_trajectory_runner.py +0 -0
- {mapify_cli-3.35.2 → mapify_cli-3.36.0}/tests/test_skills_eval_trajectory_schema.py +0 -0
- {mapify_cli-3.35.2 → mapify_cli-3.36.0}/tests/test_skills_eval_viewer.py +0 -0
- {mapify_cli-3.35.2 → mapify_cli-3.36.0}/tests/test_slice5b_leak_guards.py +0 -0
- {mapify_cli-3.35.2 → mapify_cli-3.36.0}/tests/test_sofa_search.py +0 -0
- {mapify_cli-3.35.2 → mapify_cli-3.36.0}/tests/test_static_analysis_bash.py +0 -0
- {mapify_cli-3.35.2 → mapify_cli-3.36.0}/tests/test_statusline.py +0 -0
- {mapify_cli-3.35.2 → mapify_cli-3.36.0}/tests/test_template_render.py +0 -0
- {mapify_cli-3.35.2 → mapify_cli-3.36.0}/tests/test_token_budget.py +0 -0
- {mapify_cli-3.35.2 → mapify_cli-3.36.0}/tests/test_tool_output_offload.py +0 -0
- {mapify_cli-3.35.2 → mapify_cli-3.36.0}/tests/test_unborn_branch_scope.py +0 -0
- {mapify_cli-3.35.2 → mapify_cli-3.36.0}/tests/test_update_install.py +0 -0
- {mapify_cli-3.35.2 → mapify_cli-3.36.0}/tests/test_update_state.py +0 -0
- {mapify_cli-3.35.2 → mapify_cli-3.36.0}/tests/test_update_versions.py +0 -0
- {mapify_cli-3.35.2 → mapify_cli-3.36.0}/tests/test_vacuous_test_check.py +0 -0
- {mapify_cli-3.35.2 → mapify_cli-3.36.0}/tests/test_validate_dependencies.py +0 -0
- {mapify_cli-3.35.2 → mapify_cli-3.36.0}/tests/test_validate_spec_citations.py +0 -0
- {mapify_cli-3.35.2 → mapify_cli-3.36.0}/tests/test_verification_recorder.py +0 -0
- {mapify_cli-3.35.2 → mapify_cli-3.36.0}/tests/test_wave_eval_harness.py +0 -0
- {mapify_cli-3.35.2 → mapify_cli-3.36.0}/tests/test_wave_fixtures.py +0 -0
- {mapify_cli-3.35.2 → mapify_cli-3.36.0}/tests/test_wayfind_install.py +0 -0
- {mapify_cli-3.35.2 → mapify_cli-3.36.0}/tests/test_wayfind_research.py +0 -0
- {mapify_cli-3.35.2 → mapify_cli-3.36.0}/tests/test_wayfind_runner.py +0 -0
- {mapify_cli-3.35.2 → mapify_cli-3.36.0}/tests/test_workflow_finalizer.py +0 -0
- {mapify_cli-3.35.2 → mapify_cli-3.36.0}/tests/test_workflow_gate.py +0 -0
- {mapify_cli-3.35.2 → mapify_cli-3.36.0}/tests/test_workflow_logger.py +0 -0
- {mapify_cli-3.35.2 → mapify_cli-3.36.0}/tests/test_workflow_state.py +0 -0
- {mapify_cli-3.35.2 → mapify_cli-3.36.0}/tests/test_worktree_commit_hooks.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.5
|
|
2
2
|
Name: mapify-cli
|
|
3
|
-
Version: 3.
|
|
3
|
+
Version: 3.36.0
|
|
4
4
|
Summary: MAP Framework installer - Modular Agentic Planner for Claude Code
|
|
5
5
|
Project-URL: Homepage, https://github.com/azalio/map-framework
|
|
6
6
|
Project-URL: Repository, https://github.com/azalio/map-framework.git
|
|
@@ -23,7 +23,7 @@ Or install globally:
|
|
|
23
23
|
mapify check
|
|
24
24
|
"""
|
|
25
25
|
|
|
26
|
-
__version__ = "3.
|
|
26
|
+
__version__ = "3.36.0"
|
|
27
27
|
|
|
28
28
|
# MUST stay the first import: it turns "this interpreter is older than 3.11" into
|
|
29
29
|
# a message that says so, instead of the ImportError raised by `from datetime
|
|
@@ -13,9 +13,10 @@ import os
|
|
|
13
13
|
import secrets
|
|
14
14
|
import shutil
|
|
15
15
|
import stat
|
|
16
|
+
import subprocess
|
|
16
17
|
import tempfile
|
|
17
18
|
import time
|
|
18
|
-
from collections.abc import
|
|
19
|
+
from collections.abc import Generator
|
|
19
20
|
from dataclasses import dataclass
|
|
20
21
|
from fnmatch import fnmatchcase
|
|
21
22
|
from pathlib import Path
|
|
@@ -608,7 +609,7 @@ def _windows_gitignore_mutex_name(project_stat: os.stat_result) -> str:
|
|
|
608
609
|
@contextlib.contextmanager
|
|
609
610
|
def _windows_project_gitignore_mutex(
|
|
610
611
|
project_stat: os.stat_result,
|
|
611
|
-
) ->
|
|
612
|
+
) -> Generator[None, None, None]:
|
|
612
613
|
"""Acquire a process-shared Windows mutex without a filesystem artifact."""
|
|
613
614
|
ctypes: Any = importlib.import_module("ctypes")
|
|
614
615
|
wintypes: Any = importlib.import_module("ctypes.wintypes")
|
|
@@ -672,7 +673,7 @@ def _windows_project_gitignore_mutex(
|
|
|
672
673
|
def _windows_pinned_project_root(
|
|
673
674
|
project_root: Path,
|
|
674
675
|
project_original: os.stat_result,
|
|
675
|
-
) ->
|
|
676
|
+
) -> Generator[None, None, None]:
|
|
676
677
|
"""Prevent replacement of a Windows project directory during mutation."""
|
|
677
678
|
ctypes: Any = importlib.import_module("ctypes")
|
|
678
679
|
wintypes: Any = importlib.import_module("ctypes.wintypes")
|
|
@@ -726,7 +727,7 @@ def _windows_pinned_project_root(
|
|
|
726
727
|
def _pinned_project_root(
|
|
727
728
|
project_root: Path,
|
|
728
729
|
project_original: os.stat_result,
|
|
729
|
-
) ->
|
|
730
|
+
) -> Generator[int | None, None, None]:
|
|
730
731
|
"""Pin the project identity used by every relative .gitignore operation."""
|
|
731
732
|
if os.name == "nt":
|
|
732
733
|
with _windows_pinned_project_root(project_root, project_original):
|
|
@@ -765,14 +766,6 @@ def _pinned_project_root(
|
|
|
765
766
|
os.close(descriptor)
|
|
766
767
|
|
|
767
768
|
|
|
768
|
-
def _gitignore_lock_path(project_root: Path) -> Path:
|
|
769
|
-
"""Resolve the shared lock from stable filesystem identity, not spelling."""
|
|
770
|
-
return _gitignore_lock_path_for_stat(
|
|
771
|
-
project_root,
|
|
772
|
-
_validated_project_root_stat(project_root),
|
|
773
|
-
)
|
|
774
|
-
|
|
775
|
-
|
|
776
769
|
def _unsafe_gitignore_lock(lock_path: Path, reason: str) -> NoReturn:
|
|
777
770
|
raise UpdateRuntimeGitignoreSecurityError(
|
|
778
771
|
f"unsafe MAP .gitignore lock at {lock_path}: {reason}"
|
|
@@ -900,7 +893,7 @@ def _unlock_descriptor(descriptor: int) -> None:
|
|
|
900
893
|
@contextlib.contextmanager
|
|
901
894
|
def _project_gitignore_lock(
|
|
902
895
|
project_root: Path,
|
|
903
|
-
) ->
|
|
896
|
+
) -> Generator[tuple[int | None, os.stat_result], None, None]:
|
|
904
897
|
"""Serialize a complete MAP-owned root .gitignore transaction."""
|
|
905
898
|
project_original = _validated_project_root_stat(project_root)
|
|
906
899
|
with _pinned_project_root(project_root, project_original) as directory_fd:
|
|
@@ -1220,11 +1213,106 @@ def _has_effective_gitignore_path(lines: list[bytes], required_path: str) -> boo
|
|
|
1220
1213
|
)
|
|
1221
1214
|
|
|
1222
1215
|
|
|
1216
|
+
def _git_info_exclude_path(project_root: Path) -> Path | None:
|
|
1217
|
+
"""Return ``<git-common-dir>/info/exclude`` for a repo rooted at *project_root*.
|
|
1218
|
+
|
|
1219
|
+
``info/exclude`` patterns anchor at the repository top level, so a project
|
|
1220
|
+
root that is merely a subdirectory of a repo (or not a repo at all, or git
|
|
1221
|
+
is unavailable) returns None and the caller keeps the tracked ``.gitignore``.
|
|
1222
|
+
Linked worktrees share the common dir, hence one exclude file per clone.
|
|
1223
|
+
"""
|
|
1224
|
+
try:
|
|
1225
|
+
proc = subprocess.run(
|
|
1226
|
+
["git", "rev-parse", "--show-toplevel", "--git-common-dir"],
|
|
1227
|
+
cwd=project_root,
|
|
1228
|
+
capture_output=True,
|
|
1229
|
+
text=True,
|
|
1230
|
+
timeout=10,
|
|
1231
|
+
check=False,
|
|
1232
|
+
)
|
|
1233
|
+
except (OSError, subprocess.SubprocessError):
|
|
1234
|
+
return None
|
|
1235
|
+
lines = proc.stdout.splitlines()
|
|
1236
|
+
if proc.returncode != 0 or len(lines) != 2:
|
|
1237
|
+
return None
|
|
1238
|
+
toplevel, common = Path(lines[0]), Path(lines[1])
|
|
1239
|
+
try:
|
|
1240
|
+
if toplevel.resolve() != project_root.resolve():
|
|
1241
|
+
return None
|
|
1242
|
+
except OSError:
|
|
1243
|
+
return None
|
|
1244
|
+
if not common.is_absolute():
|
|
1245
|
+
common = project_root / common
|
|
1246
|
+
return common / "info" / "exclude"
|
|
1247
|
+
|
|
1248
|
+
|
|
1249
|
+
def _prepare_info_exclude_directory(exclude: Path) -> None:
|
|
1250
|
+
"""Create ``info/`` when missing and require it to be a direct directory."""
|
|
1251
|
+
try:
|
|
1252
|
+
exclude.parent.mkdir(parents=True, exist_ok=True)
|
|
1253
|
+
current = os.lstat(exclude.parent)
|
|
1254
|
+
except OSError as exc:
|
|
1255
|
+
_unsafe_project_gitignore(
|
|
1256
|
+
exclude, f"could not prepare {exclude.parent} ({exc})"
|
|
1257
|
+
)
|
|
1258
|
+
if stat.S_ISLNK(current.st_mode) or not stat.S_ISDIR(current.st_mode):
|
|
1259
|
+
_unsafe_project_gitignore(
|
|
1260
|
+
exclude, "the info directory must be a direct directory"
|
|
1261
|
+
)
|
|
1262
|
+
|
|
1263
|
+
|
|
1223
1264
|
def _has_gitignore_marker(lines: list[bytes], marker: str) -> bool:
|
|
1224
1265
|
encoded = marker.encode()
|
|
1225
1266
|
return any(line == encoded or line.startswith(encoded + b" ") for line in lines)
|
|
1226
1267
|
|
|
1227
1268
|
|
|
1269
|
+
def _merge_runtime_exclude(
|
|
1270
|
+
exclude: Path,
|
|
1271
|
+
gitignore_lines: list[bytes],
|
|
1272
|
+
project_root: Path,
|
|
1273
|
+
project_original: os.stat_result,
|
|
1274
|
+
) -> bool | None:
|
|
1275
|
+
"""Append missing runtime paths to the git exclude file.
|
|
1276
|
+
|
|
1277
|
+
Presence in either file counts (OR). Returns True when the exclude file
|
|
1278
|
+
was rewritten, False when nothing was needed, and None when a ``.gitignore``
|
|
1279
|
+
negation (which outranks ``info/exclude``) defeats an exclude entry, so the
|
|
1280
|
+
caller must repair the tracked ``.gitignore`` instead.
|
|
1281
|
+
"""
|
|
1282
|
+
existing, original = _read_safe_gitignore(exclude, None)
|
|
1283
|
+
exclude_lines = existing.splitlines()
|
|
1284
|
+
# .gitignore outranks info/exclude: evaluate exclude rules first.
|
|
1285
|
+
combined = exclude_lines + gitignore_lines
|
|
1286
|
+
missing = [
|
|
1287
|
+
path
|
|
1288
|
+
for path in _UPDATE_RUNTIME_GITIGNORE_PATHS
|
|
1289
|
+
if not _has_effective_gitignore_path(combined, path)
|
|
1290
|
+
]
|
|
1291
|
+
if not missing:
|
|
1292
|
+
return False
|
|
1293
|
+
if any(
|
|
1294
|
+
line.startswith(b"!") and _negation_targets_path(line, path.encode())
|
|
1295
|
+
for path in missing
|
|
1296
|
+
for line in gitignore_lines
|
|
1297
|
+
):
|
|
1298
|
+
return None
|
|
1299
|
+
_prepare_info_exclude_directory(exclude)
|
|
1300
|
+
block: list[bytes] = []
|
|
1301
|
+
if not _has_gitignore_marker(exclude_lines, _UPDATE_RUNTIME_GITIGNORE_MARKER):
|
|
1302
|
+
block.append(_UPDATE_RUNTIME_GITIGNORE_MARKER.encode())
|
|
1303
|
+
block.extend(path.encode() for path in missing)
|
|
1304
|
+
separator = b"" if not existing or existing.endswith(b"\n") else b"\n"
|
|
1305
|
+
_atomic_replace_gitignore(
|
|
1306
|
+
exclude,
|
|
1307
|
+
existing + separator + b"\n".join(block) + b"\n",
|
|
1308
|
+
original,
|
|
1309
|
+
None,
|
|
1310
|
+
project_root,
|
|
1311
|
+
project_original,
|
|
1312
|
+
)
|
|
1313
|
+
return True
|
|
1314
|
+
|
|
1315
|
+
|
|
1228
1316
|
def _merge_project_gitignore_locked(
|
|
1229
1317
|
project_root: Path,
|
|
1230
1318
|
directory_fd: int | None,
|
|
@@ -1234,20 +1322,39 @@ def _merge_project_gitignore_locked(
|
|
|
1234
1322
|
include_sofa: bool = False,
|
|
1235
1323
|
include_agent_memory_local: bool = False,
|
|
1236
1324
|
include_settings_local: bool = False,
|
|
1325
|
+
runtime_exclude: Path | None = None,
|
|
1237
1326
|
) -> int:
|
|
1238
|
-
"""Append selected MAP-owned blocks while the shared lock is held.
|
|
1327
|
+
"""Append selected MAP-owned blocks while the shared lock is held.
|
|
1328
|
+
|
|
1329
|
+
With ``runtime_exclude`` set, the runtime block goes to that git exclude
|
|
1330
|
+
file instead of the tracked ``.gitignore``; privacy blocks always stay in
|
|
1331
|
+
``.gitignore``.
|
|
1332
|
+
"""
|
|
1239
1333
|
gitignore = project_root / ".gitignore"
|
|
1240
1334
|
existing, original = _read_safe_gitignore(gitignore, directory_fd)
|
|
1241
1335
|
_validate_project_root_unchanged(project_root, project_original)
|
|
1242
1336
|
existing_lines = existing.splitlines()
|
|
1243
1337
|
|
|
1244
1338
|
additions: list[bytes] = []
|
|
1339
|
+
exclude_changed = False
|
|
1245
1340
|
if include_runtime:
|
|
1246
1341
|
missing_runtime_paths = [
|
|
1247
1342
|
path
|
|
1248
1343
|
for path in _UPDATE_RUNTIME_GITIGNORE_PATHS
|
|
1249
1344
|
if not _has_effective_gitignore_path(existing_lines, path)
|
|
1250
1345
|
]
|
|
1346
|
+
if runtime_exclude is not None:
|
|
1347
|
+
outcome = _merge_runtime_exclude(
|
|
1348
|
+
runtime_exclude,
|
|
1349
|
+
existing_lines,
|
|
1350
|
+
project_root,
|
|
1351
|
+
project_original,
|
|
1352
|
+
)
|
|
1353
|
+
# None: a .gitignore negation outranks info/exclude, so the
|
|
1354
|
+
# tracked-file repair below still applies.
|
|
1355
|
+
if outcome is not None:
|
|
1356
|
+
exclude_changed = outcome
|
|
1357
|
+
missing_runtime_paths = []
|
|
1251
1358
|
if missing_runtime_paths:
|
|
1252
1359
|
runtime_lines: list[bytes] = []
|
|
1253
1360
|
marker = _UPDATE_RUNTIME_GITIGNORE_MARKER.encode()
|
|
@@ -1291,7 +1398,7 @@ def _merge_project_gitignore_locked(
|
|
|
1291
1398
|
|
|
1292
1399
|
if not additions:
|
|
1293
1400
|
_validate_gitignore_unchanged(gitignore, original, directory_fd)
|
|
1294
|
-
return 0
|
|
1401
|
+
return 1 if exclude_changed else 0
|
|
1295
1402
|
separator = b"" if not existing or existing.endswith(b"\n") else b"\n"
|
|
1296
1403
|
replacement = existing + separator + b"".join(additions)
|
|
1297
1404
|
_atomic_replace_gitignore(
|
|
@@ -1312,11 +1419,17 @@ def _merge_project_gitignore(
|
|
|
1312
1419
|
include_sofa: bool = False,
|
|
1313
1420
|
include_agent_memory_local: bool = False,
|
|
1314
1421
|
include_settings_local: bool = False,
|
|
1422
|
+
runtime_to_git_exclude: bool = False,
|
|
1315
1423
|
) -> int:
|
|
1316
1424
|
"""Safely, atomically, and serially append MAP-owned ignore blocks."""
|
|
1317
1425
|
project_root = project_path.resolve(strict=True)
|
|
1318
1426
|
if not project_root.is_dir():
|
|
1319
1427
|
raise NotADirectoryError(f"MAP project root is not a directory: {project_root}")
|
|
1428
|
+
runtime_exclude = (
|
|
1429
|
+
_git_info_exclude_path(project_root)
|
|
1430
|
+
if include_runtime and runtime_to_git_exclude
|
|
1431
|
+
else None
|
|
1432
|
+
)
|
|
1320
1433
|
with _project_gitignore_lock(project_root) as (directory_fd, project_original):
|
|
1321
1434
|
return _merge_project_gitignore_locked(
|
|
1322
1435
|
project_root,
|
|
@@ -1326,6 +1439,7 @@ def _merge_project_gitignore(
|
|
|
1326
1439
|
include_sofa=include_sofa,
|
|
1327
1440
|
include_agent_memory_local=include_agent_memory_local,
|
|
1328
1441
|
include_settings_local=include_settings_local,
|
|
1442
|
+
runtime_exclude=runtime_exclude,
|
|
1329
1443
|
)
|
|
1330
1444
|
|
|
1331
1445
|
|
|
@@ -1336,10 +1450,17 @@ def merge_update_runtime_gitignore(
|
|
|
1336
1450
|
agent_memory_local: bool = False,
|
|
1337
1451
|
settings_local: bool = False,
|
|
1338
1452
|
) -> int:
|
|
1339
|
-
"""Atomically establish runtime and requested privacy ignore entries.
|
|
1453
|
+
"""Atomically establish runtime and requested privacy ignore entries.
|
|
1454
|
+
|
|
1455
|
+
The runtime block is local state, so in a git repo rooted at *project_path*
|
|
1456
|
+
it goes to ``<git-common-dir>/info/exclude`` and leaves the tracked
|
|
1457
|
+
``.gitignore`` clean; elsewhere it falls back to ``.gitignore``. Privacy
|
|
1458
|
+
blocks are repo policy and always go to ``.gitignore``.
|
|
1459
|
+
"""
|
|
1340
1460
|
return _merge_project_gitignore(
|
|
1341
1461
|
project_path,
|
|
1342
1462
|
include_runtime=True,
|
|
1463
|
+
runtime_to_git_exclude=True,
|
|
1343
1464
|
include_sofa=sofa,
|
|
1344
1465
|
include_agent_memory_local=agent_memory_local,
|
|
1345
1466
|
include_settings_local=settings_local,
|
|
@@ -136,6 +136,10 @@ state-changing orchestration continues in its original checkout. A standalone
|
|
|
136
136
|
Only a diagnostic satisfying every condition in “Explicitly approved
|
|
137
137
|
baseline gate failures” may be excluded from the scoped verdict; keep
|
|
138
138
|
the full build gate failed and continue the other checks.
|
|
139
|
+
**VERIFICATION EXECUTION GATE (MANDATORY — same weight as BUILD GATE):** an applicable check (the lint/type/test target the repo's CI or Makefile runs for the touched code) that could NOT execute — tool missing, check skipped, a Makefile target that prints "skipped" and exits 0 — is NOT a pass.
|
|
140
|
+
- Set `valid: false` with issue `verification not executed: <tool> (<reason>)`.
|
|
141
|
+
- List the tool in `tools_run` with status `unavailable` or `skipped`; never omit it.
|
|
142
|
+
- Allowed remedies: install the tool or run the repo's tools target, then re-run; or explicit user deferral recorded in the conversation.
|
|
139
143
|
3. Verify Goal is achieved — trace code path to confirm the stated outcome
|
|
140
144
|
4. Verify Action is implemented — check that the specified method/operation exists
|
|
141
145
|
5. **Verify mutation boundary (MANDATORY):** Run
|
|
@@ -329,7 +333,7 @@ All language handlers produce a standardized JSON format:
|
|
|
329
333
|
"findings": [
|
|
330
334
|
{ "tool": "ruff", "file": "src/main.py", "line": 42, "severity": "error", "code": "F821", "message": "Undefined name" }
|
|
331
335
|
],
|
|
332
|
-
"tools_run": ["ruff", "mypy"]
|
|
336
|
+
"tools_run": ["ruff", "mypy", {"tool": "golangci-lint", "status": "unavailable"}]
|
|
333
337
|
}
|
|
334
338
|
```
|
|
335
339
|
|
|
@@ -1741,6 +1745,9 @@ GOOD: "suggestion": "Use path\\to\\file"
|
|
|
1741
1745
|
Before returning JSON, verify:
|
|
1742
1746
|
|
|
1743
1747
|
```
|
|
1748
|
+
□ 0. VERIFICATION EXECUTION GATE: every applicable lint/type/test check actually ran;
|
|
1749
|
+
any that could not run is an issue (`verification not executed: <tool> (<reason>)`) → valid=false
|
|
1750
|
+
|
|
1744
1751
|
□ 1. All required fields present:
|
|
1745
1752
|
valid, summary, issues, passed_checks, failed_checks,
|
|
1746
1753
|
feedback_for_actor, estimated_fix_time, mcp_tools_used
|
|
@@ -342,6 +342,7 @@ Return **ONLY** valid JSON in this exact structure:
|
|
|
342
342
|
- Example: "Use existing RateLimiter middleware, configure for /api/* routes"
|
|
343
343
|
**subtasks[].test_strategy**: Required object with unit/integration/e2e keys plus `scenario_dimensions`. Use "N/A" for levels not applicable.
|
|
344
344
|
- **scenario_dimensions** (required): Object with four keys — `happy_path`, `error`, `edge_case`, `security`. Each describes at least one planned test covering that dimension. Use "N/A" for dimensions not relevant to the subtask. Testing-heavy subtasks must cover at minimum 4 dimensions.
|
|
345
|
+
- **Repo lint/type gate (MANDATORY for code subtasks)**: when the repo has a lint/type target (Makefile `lint`/`check`, CI lint or type-check step), the subtask's verification MUST include the repo's lint/type target for the touched code, not only build/vet. If the tool may be absent locally, name the install/tools target in the verification step.
|
|
345
346
|
- MUST map `validation_criteria` → tests:
|
|
346
347
|
- For each `VCn:` criterion, include at least one planned test name that covers it.
|
|
347
348
|
- Recommended naming: include `vc<n>` in the test name (e.g., `test_vc1_*`, `TestVC1*`) for deterministic grep-ability.
|
{mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/templates/codex/agents/decomposer.toml
RENAMED
|
@@ -307,6 +307,7 @@ Return **ONLY** valid JSON in this exact structure:
|
|
|
307
307
|
- Example: "Use existing RateLimiter middleware, configure for /api/* routes"
|
|
308
308
|
**subtasks[].test_strategy**: Required object with unit/integration/e2e keys plus `scenario_dimensions`. Use "N/A" for levels not applicable.
|
|
309
309
|
- **scenario_dimensions** (required): Object with four keys — `happy_path`, `error`, `edge_case`, `security`. Each describes at least one planned test covering that dimension. Use "N/A" for dimensions not relevant to the subtask. Testing-heavy subtasks must cover at minimum 4 dimensions.
|
|
310
|
+
- **Repo lint/type gate (MANDATORY for code subtasks)**: when the repo has a lint/type target (Makefile `lint`/`check`, CI lint or type-check step), the subtask's verification MUST include the repo's lint/type target for the touched code, not only build/vet. If the tool may be absent locally, name the install/tools target in the verification step.
|
|
310
311
|
- MUST map `validation_criteria` → tests:
|
|
311
312
|
- For each `VCn:` criterion, include at least one planned test name that covers it.
|
|
312
313
|
- Recommended naming: include `vc<n>` in the test name (e.g., `test_vc1_*`, `TestVC1*`) for deterministic grep-ability.
|
|
@@ -127,6 +127,11 @@ Verification sequence (execute in order):
|
|
|
127
127
|
If build/compile fails -> valid: false immediately with compilation errors.
|
|
128
128
|
Do NOT proceed to other checks.
|
|
129
129
|
|
|
130
|
+
VERIFICATION EXECUTION GATE (MANDATORY -- same weight as BUILD GATE): an applicable check (the lint/type/test target the repo's CI or Makefile runs for the touched code) that could NOT execute -- tool missing, check skipped, a Makefile target that prints "skipped" and exits 0 -- is NOT a pass.
|
|
131
|
+
- Set valid: false with issue `verification not executed: <tool> (<reason>)`.
|
|
132
|
+
- List the tool in tools_run with status `unavailable` or `skipped`; never omit it.
|
|
133
|
+
- Allowed remedies: install the tool or run the repo's tools target, then re-run; or explicit user deferral recorded in the conversation.
|
|
134
|
+
|
|
130
135
|
3. Verify Goal is achieved -- trace code path to confirm the stated outcome
|
|
131
136
|
4. Verify Action is implemented -- check that the specified method/operation exists
|
|
132
137
|
5. Verify mutation boundary (MANDATORY): Run
|
|
@@ -1260,6 +1265,7 @@ Expected output:
|
|
|
1260
1265
|
|
|
1261
1266
|
Before returning your review JSON:
|
|
1262
1267
|
1. Did I run the BUILD GATE (build/compile command)?
|
|
1268
|
+
1a. Did I run the VERIFICATION EXECUTION GATE (every applicable lint/type/test check executed, none unavailable/skipped)?
|
|
1263
1269
|
2. Did I check all 11 validation dimensions systematically?
|
|
1264
1270
|
3. Did I verify documentation against source of truth (if applicable)?
|
|
1265
1271
|
4. Are all issues specific with location and actionable suggestions?
|
|
@@ -110,6 +110,19 @@ def state_string(state: dict, key: str, default: str = "") -> str:
|
|
|
110
110
|
return default
|
|
111
111
|
|
|
112
112
|
|
|
113
|
+
def active_wave_bits(state: dict) -> list[str]:
|
|
114
|
+
"""Return ``wave=i/n`` and ``phases=...`` bits when the wave loop is engaged."""
|
|
115
|
+
waves = state.get("execution_waves")
|
|
116
|
+
phases = state.get("subtask_phases")
|
|
117
|
+
wave_idx = state.get("current_wave_index", 0)
|
|
118
|
+
if not (isinstance(waves, list) and waves and isinstance(phases, dict) and phases):
|
|
119
|
+
return []
|
|
120
|
+
if not isinstance(wave_idx, int) or isinstance(wave_idx, bool):
|
|
121
|
+
return []
|
|
122
|
+
per_subtask = " ".join(f"{sid}:{phase}" for sid, phase in phases.items())
|
|
123
|
+
return [f"wave={wave_idx + 1}/{len(waves)}", f"phases=[{per_subtask}]"]
|
|
124
|
+
|
|
125
|
+
|
|
113
126
|
def load_json(path: Path) -> dict | None:
|
|
114
127
|
try:
|
|
115
128
|
data = json.loads(path.read_text(encoding="utf-8"))
|
|
@@ -209,10 +222,17 @@ def build_reprime(branch: str, branch_dir: Path) -> str | None:
|
|
|
209
222
|
step_id = state_string(state, "current_step_id")
|
|
210
223
|
subtask_id = state_string(state, "current_subtask_id")
|
|
211
224
|
|
|
225
|
+
wave_bits = active_wave_bits(state)
|
|
226
|
+
if wave_bits:
|
|
227
|
+
# Wave loop engaged: current_step_*/current_subtask_id are stale
|
|
228
|
+
# sequential leftovers; subtask_phases is the live progress record.
|
|
229
|
+
phase = step_id = subtask_id = ""
|
|
230
|
+
|
|
212
231
|
lines = ["MAP RE-PRIME after compaction:"]
|
|
213
232
|
state_bits = []
|
|
214
233
|
if workflow:
|
|
215
234
|
state_bits.append(f"workflow={workflow}")
|
|
235
|
+
state_bits.extend(wave_bits)
|
|
216
236
|
if step_id:
|
|
217
237
|
state_bits.append(f"step={step_id}")
|
|
218
238
|
if phase:
|
|
@@ -335,3 +355,4 @@ def main() -> None:
|
|
|
335
355
|
|
|
336
356
|
if __name__ == "__main__":
|
|
337
357
|
main()
|
|
358
|
+
|
|
@@ -501,6 +501,24 @@ def state_string(state: dict, key: str, default: str = "") -> str:
|
|
|
501
501
|
return default
|
|
502
502
|
|
|
503
503
|
|
|
504
|
+
def active_wave_label(state: dict) -> str | None:
|
|
505
|
+
"""Return ``WAVE i/n [ST-x:phase ...]`` when the wave loop is engaged.
|
|
506
|
+
|
|
507
|
+
Waves track progress only in ``subtask_phases``; ``current_step_*`` is a
|
|
508
|
+
stale sequential leftover (advance_wave resets it to 2.2/RESEARCH), so it
|
|
509
|
+
must not drive the banner while the wave loop is active.
|
|
510
|
+
"""
|
|
511
|
+
waves = state.get("execution_waves")
|
|
512
|
+
phases = state.get("subtask_phases")
|
|
513
|
+
wave_idx = state.get("current_wave_index", 0)
|
|
514
|
+
if not (isinstance(waves, list) and waves and isinstance(phases, dict) and phases):
|
|
515
|
+
return None
|
|
516
|
+
if not isinstance(wave_idx, int) or isinstance(wave_idx, bool):
|
|
517
|
+
return None
|
|
518
|
+
per_subtask = " ".join(f"{sid}:{phase}" for sid, phase in phases.items())
|
|
519
|
+
return f"WAVE {wave_idx + 1}/{len(waves)} [{per_subtask}]"
|
|
520
|
+
|
|
521
|
+
|
|
504
522
|
def required_action_for_step(step_id: str, step_phase: str) -> str | None:
|
|
505
523
|
"""Return a short required-next-action hint for common steps."""
|
|
506
524
|
if step_id == "1.55":
|
|
@@ -713,6 +731,15 @@ def format_reminder(
|
|
|
713
731
|
mode = "batch:parallel"
|
|
714
732
|
|
|
715
733
|
required = required_action_for_step(step_id, step_phase)
|
|
734
|
+
step_label = f"{step_id} {step_phase}"
|
|
735
|
+
wave_label = active_wave_label(state)
|
|
736
|
+
if wave_label:
|
|
737
|
+
# Wave loop engaged: current_step_*/current_subtask_id are stale
|
|
738
|
+
# sequential leftovers, so show per-subtask phases instead.
|
|
739
|
+
step_label = wave_label
|
|
740
|
+
wave_hint = ""
|
|
741
|
+
subtask_id = "-"
|
|
742
|
+
required = None
|
|
716
743
|
|
|
717
744
|
diag_hint = ""
|
|
718
745
|
diag_file = (
|
|
@@ -738,7 +765,7 @@ def format_reminder(
|
|
|
738
765
|
if len(current_files) > 5:
|
|
739
766
|
files_hint += f" +{len(current_files) - 5}"
|
|
740
767
|
|
|
741
|
-
if not step_id and not step_phase:
|
|
768
|
+
if not step_id and not step_phase and not wave_label:
|
|
742
769
|
return None
|
|
743
770
|
|
|
744
771
|
# Context-aware: add goal and subtask title
|
|
@@ -772,15 +799,15 @@ def format_reminder(
|
|
|
772
799
|
except OSError:
|
|
773
800
|
pass
|
|
774
801
|
ts_hint = f" @ {now_utc.strftime('%H:%M:%S.%f')[:-3]}Z (state {state_age_str})"
|
|
775
|
-
base = f"[MAP]{ts_hint} {
|
|
802
|
+
base = f"[MAP]{ts_hint} {step_label}{goal_hint} | ST: {subtask_id}{title_hint} ({progress}) | plan:{plan_ok} mode:{mode}{wave_hint}{diag_hint}{files_hint}{hard_hint}{tag_hint}{authority_hint}"
|
|
776
803
|
|
|
777
804
|
# Enforce limit: trim goal first, then constraint detail, then word-boundary truncate.
|
|
778
805
|
if len(base) > REMINDER_LIMIT:
|
|
779
806
|
goal_hint = ""
|
|
780
|
-
base = f"[MAP]{ts_hint} {
|
|
807
|
+
base = f"[MAP]{ts_hint} {step_label} | ST: {subtask_id}{title_hint} ({progress}) | plan:{plan_ok} mode:{mode}{wave_hint}{diag_hint}{files_hint}{hard_hint}{tag_hint}{authority_hint}"
|
|
781
808
|
if len(base) > REMINDER_LIMIT:
|
|
782
809
|
hard_hint = ""
|
|
783
|
-
base = f"[MAP]{ts_hint} {
|
|
810
|
+
base = f"[MAP]{ts_hint} {step_label} | ST: {subtask_id}{title_hint} ({progress}) | plan:{plan_ok} mode:{mode}{wave_hint}{diag_hint}{files_hint}{tag_hint}{authority_hint}"
|
|
784
811
|
if len(base) > REMINDER_LIMIT:
|
|
785
812
|
base = _truncate_at_word(base, REMINDER_LIMIT)
|
|
786
813
|
|
|
@@ -1126,3 +1153,4 @@ def main() -> None:
|
|
|
1126
1153
|
|
|
1127
1154
|
if __name__ == "__main__":
|
|
1128
1155
|
main()
|
|
1156
|
+
|
{mapify_cli-3.35.2 → mapify_cli-3.36.0}/src/mapify_cli/templates/codex/skills/map-review/SKILL.md
RENAMED
|
@@ -218,26 +218,24 @@ contradict a clean precheck require evidence stronger than narrative
|
|
|
218
218
|
```bash
|
|
219
219
|
BRANCH=$(python3 .map/scripts/map_utils.py branch)
|
|
220
220
|
BRANCH_DIR=".map/$BRANCH"
|
|
221
|
-
|
|
221
|
+
WORKFLOW_MODE="full" # --mode, echoed as `mode`; `review_mode` (normal/adversarial/...) is separate
|
|
222
222
|
# Empty / placeholder review-bundle.md ⇒ lightweight.
|
|
223
223
|
if [ -f ".map/$BRANCH/review-bundle.md" ] && \
|
|
224
224
|
grep -qE 'MISSING|^- $|^—$' ".map/$BRANCH/review-bundle.md" && \
|
|
225
225
|
! grep -qE '^\s*##' ".map/$BRANCH/review-bundle.md"; then
|
|
226
|
-
|
|
226
|
+
WORKFLOW_MODE="lightweight"
|
|
227
227
|
fi
|
|
228
228
|
# "twin of X", "sibling controller", "mirror of Y" in commit or PR body
|
|
229
229
|
# ⇒ sibling-aware (operator probably wants comparison, not synthesis).
|
|
230
230
|
SIBLING_HINT=""
|
|
231
231
|
if git log -1 --format=%B | grep -iE 'twin of |sibling |mirror of |port of ' >/dev/null; then
|
|
232
|
-
|
|
232
|
+
WORKFLOW_MODE="sibling-aware"
|
|
233
233
|
SIBLING_HINT=$(git log -1 --format=%B | grep -oiE '(twin of|sibling|mirror of|port of)[^.]*' | sed -n '1p')
|
|
234
234
|
fi
|
|
235
|
-
#
|
|
236
|
-
# Record absent automation as a limitation in the review summary; use {} if no checks exist.
|
|
235
|
+
# Only documented project checks as {"<id>":[argv...]}; no placeholder passes; {} if none (state the limitation).
|
|
237
236
|
: "${CHECK_SPECS_JSON:?Set CHECK_SPECS_JSON to documented project check argv specifications}"
|
|
238
|
-
#
|
|
239
|
-
|
|
240
|
-
python3 - "$CHECK_SPECS_JSON" "$REVIEW_MODE" "$ARGUMENTS" "$SIBLING_HINT" "$CHECK_TIMEOUTS_JSON" <<'PY'
|
|
237
|
+
if [ -z "${CHECK_TIMEOUTS_JSON:-}" ]; then CHECK_TIMEOUTS_JSON='{}'; fi # optional seconds per check; default 300
|
|
238
|
+
python3 - "$CHECK_SPECS_JSON" "$WORKFLOW_MODE" "$ARGUMENTS" "$SIBLING_HINT" "$CHECK_TIMEOUTS_JSON" <<'PY'
|
|
241
239
|
import json
|
|
242
240
|
import subprocess
|
|
243
241
|
import sys
|
|
@@ -269,19 +267,21 @@ print(admission.stdout, end="")
|
|
|
269
267
|
if json.loads(admission.stdout).get("completed"):
|
|
270
268
|
raise SystemExit("Review already completed; do not dispatch reviewers")
|
|
271
269
|
for check_id in specs:
|
|
272
|
-
subprocess.run(runner + ["run_test_gate", "--check-id", check_id],
|
|
270
|
+
gate = subprocess.run(runner + ["run_test_gate", "--check-id", check_id], capture_output=True, text=True)
|
|
271
|
+
print("CHECK", check_id, *(f"{k}={json.loads(gate.stdout or '{}').get(k)}" for k in ("passed", "exit_code", "output_artifact")))
|
|
272
|
+
if gate.returncode: raise SystemExit(f"Check {check_id} failed; read $BRANCH_DIR/<artifact> before any fix")
|
|
273
273
|
PY
|
|
274
274
|
[ "$?" -eq 0 ] || exit 1
|
|
275
275
|
```
|
|
276
276
|
|
|
277
|
-
Start before any capture or fan-out. Abort on a start error; in particular
|
|
277
|
+
Start before any capture or fan-out. Stdout is a compact summary (full rows stay in the ledger); for `human_consent` `enforcement` see [review-reference.md](review-reference.md#sensitive-and-unknown-review-gates). Abort on a start error; in particular
|
|
278
278
|
`reconsider_approach` means STOP and request reconsideration, never approval or a
|
|
279
279
|
fourth automatic round. A round is a review/fix iteration, not a reviewer/tool
|
|
280
280
|
retry or an ordering collection. Pending admission restores its identity and inferred mode; all other inputs must still match.
|
|
281
281
|
Completed rounds are immutable. Use `--round-id <stored-id>` for an explicit retry.
|
|
282
|
-
Do not dispatch reviewers when admission reports `completed: true`. For a stale pending round,
|
|
282
|
+
Do not dispatch reviewers when admission reports `completed: true`. For a stale pending round or one whose reviewers could not run,
|
|
283
283
|
explicitly run `abandon_review_round <round-id> --reason "<why>"` through the runner before new admission;
|
|
284
|
-
abandonment preserves audit/findings and consumes an unsuccessful attempt, never resets the cap.
|
|
284
|
+
abandonment preserves audit/findings and consumes an unsuccessful attempt, never resets the cap (out-of-harness review: see reference).
|
|
285
285
|
After the initial full review, verified baseline/static impact enables incremental
|
|
286
286
|
prioritization of delta + affected dependencies + unresolved findings, not exemption
|
|
287
287
|
from admitted required_files coverage. Unknown impact retains full-scope fallback.
|
|
@@ -10,6 +10,12 @@ Human consent is a separate snapshot/policy/action-bound `review_consent` hold i
|
|
|
10
10
|
|
|
11
11
|
Shadow consent-store errors are reported in admission output and persisted in the review ledger when writable; they do not deny admission or ready. Never reset a corrupt hold store: existing generic hold blockers remain enforced. Strict consent-store errors still fail closed. Gate configuration is read from the pinned trusted revision independently of `REVIEW.md` content validation; invalid root/area policy cannot downgrade a strict configuration.
|
|
12
12
|
|
|
13
|
+
Admission reports the hold as `human_consent: {status, hold_id, reason, enforcement}`. `enforcement: "shadow"` is informational: it blocks nothing and there is nothing to resolve yet. `enforcement: "strict"` stops at review-ready until verified human consent exists (#523). `status: "not_required"` means the change is not sensitive.
|
|
14
|
+
|
|
15
|
+
Admission and `run_test_gate` stdout are compact: the target omits trusted-policy file contents and lists `context_files_count` instead of the repository inventory, and a check reports `target_unchanged` instead of full `before`/`after` targets. Full rows stay in `review-verdict-ledger.json`.
|
|
16
|
+
|
|
17
|
+
If reviewers could not run for an admitted round, `abandon_review_round` it. A review then done outside the harness is reported as such in the summary; it never produces a ledger verdict or approval.
|
|
18
|
+
|
|
13
19
|
## Section Rubrics
|
|
14
20
|
|
|
15
21
|
- Architecture: boundaries, lifecycle, coupling, public API behavior, stage consumption.
|
|
@@ -21,9 +27,72 @@ Shadow consent-store errors are reported in admission output and persisted in th
|
|
|
21
27
|
|
|
22
28
|
Required coverage is the admitted `required_files`: changed paths against the selected base,
|
|
23
29
|
including staged/unstaged/untracked inputs, deletions and both rename sides. The full
|
|
24
|
-
`context_files` inventory remains snapshot-bound
|
|
30
|
+
`context_files` inventory remains snapshot-bound; unchanged files are fetched lazily as
|
|
31
|
+
resource `repo:<path>` (frozen on first fetch) and are never listed in the manifest.
|
|
25
32
|
Unread or explicitly skipped optional context does not make review incomplete.
|
|
26
33
|
|
|
34
|
+
Generated files are excluded from `required_files` and recorded in `row.coverage_skips`
|
|
35
|
+
(`snapshot.coverage_skips`, ledger `completeness.skipped_scope`) only when matched by a file
|
|
36
|
+
name pattern (`*.pb.go`, `*.pb.cc`, `*.pb.h`, `*_pb2.py`, `*_pb2_grpc.py`, `zz_generated*`), a
|
|
37
|
+
trusted `review.generated_patterns` entry (gitattributes-style: a pattern with a leading or inner slash is
|
|
38
|
+
anchored to the repository root, one without a slash matches the base name at any depth, `*` and `?` never cross
|
|
39
|
+
`/`, and `**/`, `/**`, `/**/` span directories), or `linguist-generated` in the root `.gitattributes`
|
|
40
|
+
of the trusted default revision. A `Code generated` header never skips a file, lockfiles stay
|
|
41
|
+
required, and strict `review.security_gates` disables every skip. Their diff hunks appear as
|
|
42
|
+
one-line stubs. `review.exclude_generated: false` turns skipping off.
|
|
43
|
+
|
|
44
|
+
Unmodified installed MAP files are skipped too (`rule: mapify-managed`, listed in `skipped_scope`):
|
|
45
|
+
a file whose embedded `MAP-MANAGED` header has a `template_hash` equal to the hash of its own payload
|
|
46
|
+
(fully managed files, and fenced files whose fence is intact with no user tail). Edited payloads,
|
|
47
|
+
user tails, missing or malformed headers and files whose JSON was reformatted stay required.
|
|
48
|
+
**Trust trade-off:** the header is self-attested. A PR author can add a self-consistent header to
|
|
49
|
+
any file and it is skipped (visibly, in `skipped_scope`). Use strict `review.security_gates` when PR
|
|
50
|
+
authors are untrusted; it disables this skip. `review.exclude_mapify_managed: false` opts out.
|
|
51
|
+
|
|
52
|
+
## Sharded Rounds
|
|
53
|
+
|
|
54
|
+
When the required scope does not fit one reviewer's budget, admission plans `row.shards`
|
|
55
|
+
(deterministic, directory-aware, disjoint; at most `review.max_shards`, default 8) and returns
|
|
56
|
+
`shard_ids`. A single file above the per-shard capacity or more than `max_shards` shards fails
|
|
57
|
+
admission with `review_context_budget_exceeded` (`reason: file_too_large | too_many_shards`).
|
|
58
|
+
Unsharded rounds never see any of this.
|
|
59
|
+
|
|
60
|
+
- Every scheduled role reviews every shard; there is no per-role coverage exemption. Loop
|
|
61
|
+
ordering, then shard, then role. `--adversarial` and `--compare-orderings` work unchanged
|
|
62
|
+
per shard (orderings x shards x roles).
|
|
63
|
+
- Build with `--shard <id>` (`build_review_prompts`, `build_role_review_prompts`,
|
|
64
|
+
`build_adversarial_review_prompts`). Without it a sharded round returns
|
|
65
|
+
`{status: "sharded", shard_ids}`. A shard context carries only that shard's source resources and
|
|
66
|
+
diff; other shards' files are optional `repo:<path>` context. Delivery, finalization token and
|
|
67
|
+
`context_receipt` are per shard (`ordering:reviewer#sNN`); bind/serve/ack are unchanged.
|
|
68
|
+
- Capture with `capture_review_output --shard <id>`. Shard captures are stored under
|
|
69
|
+
`review-shards/` (outside the `review-agent-*` namespace). Once every shard of an
|
|
70
|
+
(ordering, reviewer) is captured the runner writes the canonical `review-agent-<reviewer>.json`:
|
|
71
|
+
worst-of verdict fields (`verdict`, `risk_assessment`, `recommendation`, minimum scores and
|
|
72
|
+
confidence), concatenated findings/issues (reviewer finding IDs kept unique; the ledger still
|
|
73
|
+
keys findings by fingerprint, never by shard), unioned receipts and `context_receipts` per
|
|
74
|
+
shard. Adversarial aggregates are re-aggregated from the merged per-reviewer outputs. A partial
|
|
75
|
+
set of shards leaves the round INCOMPLETE.
|
|
76
|
+
- Completeness checks each shard capture's hash, delivery proof and own-file coverage, so a
|
|
77
|
+
reviewer claiming other shards' files cannot hide an unread shard. The complexity lens is
|
|
78
|
+
advisory and runs per shard; report its per-shard lines together.
|
|
79
|
+
|
|
80
|
+
## Context Budget
|
|
81
|
+
|
|
82
|
+
Admission sizes each path the way its resource is serialized (ASCII-escaped JSON or base64 for sources,
|
|
83
|
+
raw text for the diff, plus the manifest entry), so non-ASCII changes are sharded at admission instead of
|
|
84
|
+
failing at prompt build; the plan and budget check run for every new round, not only the first. Execution-check
|
|
85
|
+
logs longer than 16 Ki characters are shortened in the prompt; the full log is the optional resource
|
|
86
|
+
`check:<id>` (fetched like `repo:<path>`). A changed generated file fetched through `repo:<path>` is served
|
|
87
|
+
with its real base and current content (`status: changed_generated_skipped`).
|
|
88
|
+
|
|
89
|
+
Each reviewer's required context (manifest, prompt, `diff`, inventory, sources, artifacts) must
|
|
90
|
+
fit `review.context_budget_bytes` (trusted config; env `MAP_REVIEW_CONTEXT_BUDGET_BYTES`; default
|
|
91
|
+
384 KiB). `begin_review_run` estimates it before consent and returns
|
|
92
|
+
`stop_reason: review_context_budget_exceeded` with `total`, `budget`, `top_paths` and `hints`
|
|
93
|
+
without consuming a round; the prompt builders recheck exact bytes and return no partial prompts.
|
|
94
|
+
Split the change, exclude generated files or raise the budget.
|
|
95
|
+
|
|
27
96
|
## Compare Orderings
|
|
28
97
|
|
|
29
98
|
For supported Codex reviews, `codex_review_runner.py` performs binding, delivery,
|
|
@@ -152,7 +221,7 @@ Either way it cannot gate the change, and it cannot disappear either.
|
|
|
152
221
|
Standalone prompt build (the normal fan-out builds these automatically):
|
|
153
222
|
|
|
154
223
|
```bash
|
|
155
|
-
python3 .map/scripts/map_step_runner.py build_role_review_prompts \
|
|
224
|
+
python3 .map/scripts/map_step_runner.py build_role_review_prompts ${SHARD:+--shard "$SHARD"} \
|
|
156
225
|
[--roles user_experience,maintainer]
|
|
157
226
|
```
|
|
158
227
|
|
|
@@ -297,8 +366,9 @@ retries, both ordering collections and the advisory complexity lens:
|
|
|
297
366
|
For an early final response, retain no final capture: create the same request
|
|
298
367
|
shape from the status's next `remaining` resource/offset and continue delivery.
|
|
299
368
|
Required resources include the manifest, full original prompt (unless initially
|
|
300
|
-
inline), inventory and source resources marked `required`. Unchanged
|
|
301
|
-
are optional
|
|
369
|
+
inline), the `diff` resource, inventory and source resources marked `required`. Unchanged
|
|
370
|
+
repository files are optional: fetch `repo:<path>` only when needed. Blind stays diff-only
|
|
371
|
+
(prompt and `diff` only).
|
|
302
372
|
2. Store the exact returned chunk JSON in a session-specific pending file under
|
|
303
373
|
`.map/<branch>/review-context-delivery/<session-id>/`, then pass that JSON
|
|
304
374
|
verbatim to the **same agent**:
|
|
@@ -356,7 +426,7 @@ BRANCH=$(python3 .map/scripts/map_utils.py branch)
|
|
|
356
426
|
BRANCH_DIR=".map/$BRANCH"
|
|
357
427
|
REVIEW_ROUND_ID=$(python3 -c 'import json,sys; print(json.load(open(sys.argv[1]))["round_id"])' "$BRANCH_DIR/review-mode.json")
|
|
358
428
|
python3 .map/scripts/map_step_runner.py capture_review_output --reviewer monitor \
|
|
359
|
-
--round-id "$REVIEW_ROUND_ID" --ordering "${ORDERING_LABEL:-}" <<'MONITOR_EOF'
|
|
429
|
+
--round-id "$REVIEW_ROUND_ID" --ordering "${ORDERING_LABEL:-}" ${SHARD:+--shard "$SHARD"} <<'MONITOR_EOF'
|
|
360
430
|
<paste the Monitor JSON envelope verbatim>
|
|
361
431
|
MONITOR_EOF
|
|
362
432
|
```
|