invar-tools 1.3.2__tar.gz → 1.4.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.
- {invar_tools-1.3.2 → invar_tools-1.4.0}/.github/workflows/publish.yml +0 -27
- {invar_tools-1.3.2 → invar_tools-1.4.0}/PKG-INFO +14 -9
- {invar_tools-1.3.2 → invar_tools-1.4.0}/README.md +13 -8
- {invar_tools-1.3.2 → invar_tools-1.4.0}/docs/agents.md +1 -1
- {invar_tools-1.3.2 → invar_tools-1.4.0}/docs/design.md +4 -4
- {invar_tools-1.3.2 → invar_tools-1.4.0}/docs/index.html +2 -2
- {invar_tools-1.3.2 → invar_tools-1.4.0}/pyproject.toml +2 -1
- {invar_tools-1.3.2 → invar_tools-1.4.0}/runtime/README.md +1 -1
- {invar_tools-1.3.2 → invar_tools-1.4.0}/src/invar/shell/templates.py +2 -2
- invar_tools-1.4.0/tests/integration/__init__.py +0 -0
- {invar_tools-1.3.2 → invar_tools-1.4.0}/.aider.conf.yml +0 -0
- {invar_tools-1.3.2 → invar_tools-1.4.0}/.claude/commands/audit.md +0 -0
- {invar_tools-1.3.2 → invar_tools-1.4.0}/.claude/commands/guard.md +0 -0
- {invar_tools-1.3.2 → invar_tools-1.4.0}/.claude/skills/develop/SKILL.md +0 -0
- {invar_tools-1.3.2 → invar_tools-1.4.0}/.claude/skills/investigate/SKILL.md +0 -0
- {invar_tools-1.3.2 → invar_tools-1.4.0}/.claude/skills/propose/SKILL.md +0 -0
- {invar_tools-1.3.2 → invar_tools-1.4.0}/.claude/skills/review/SKILL.md +0 -0
- {invar_tools-1.3.2 → invar_tools-1.4.0}/.cursorrules +0 -0
- {invar_tools-1.3.2 → invar_tools-1.4.0}/.github/workflows/ci.yml +0 -0
- {invar_tools-1.3.2 → invar_tools-1.4.0}/.gitignore +0 -0
- {invar_tools-1.3.2 → invar_tools-1.4.0}/.invar/archive/sessions-2025-12.md +0 -0
- {invar_tools-1.3.2 → invar_tools-1.4.0}/.invar/context.md +0 -0
- {invar_tools-1.3.2 → invar_tools-1.4.0}/.invar/examples/README.md +0 -0
- {invar_tools-1.3.2 → invar_tools-1.4.0}/.invar/examples/conftest.py +0 -0
- {invar_tools-1.3.2 → invar_tools-1.4.0}/.invar/examples/contracts.py +0 -0
- {invar_tools-1.3.2 → invar_tools-1.4.0}/.invar/examples/core_shell.py +0 -0
- {invar_tools-1.3.2 → invar_tools-1.4.0}/.invar/examples/workflow.md +0 -0
- {invar_tools-1.3.2 → invar_tools-1.4.0}/.invar/project-additions.md +0 -0
- {invar_tools-1.3.2 → invar_tools-1.4.0}/.invar/proposals/TEMPLATE.md +0 -0
- {invar_tools-1.3.2 → invar_tools-1.4.0}/.mcp.json +0 -0
- {invar_tools-1.3.2 → invar_tools-1.4.0}/.pre-commit-config.yaml +0 -0
- {invar_tools-1.3.2 → invar_tools-1.4.0}/.serena/.gitignore +0 -0
- {invar_tools-1.3.2 → invar_tools-1.4.0}/.serena/project.yml +0 -0
- {invar_tools-1.3.2 → invar_tools-1.4.0}/CLAUDE.md +0 -0
- {invar_tools-1.3.2 → invar_tools-1.4.0}/INVAR.md +0 -0
- {invar_tools-1.3.2 → invar_tools-1.4.0}/LICENSE +0 -0
- {invar_tools-1.3.2 → invar_tools-1.4.0}/LICENSE-GPL +0 -0
- {invar_tools-1.3.2 → invar_tools-1.4.0}/NOTICE +0 -0
- /invar_tools-1.3.2/src/invar/py.typed → /invar_tools-1.4.0/docs/.nojekyll +0 -0
- {invar_tools-1.3.2 → invar_tools-1.4.0}/docs/diagrams.md +0 -0
- {invar_tools-1.3.2 → invar_tools-1.4.0}/docs/guide.md +0 -0
- {invar_tools-1.3.2 → invar_tools-1.4.0}/docs/history/decisions-2024.md +0 -0
- {invar_tools-1.3.2 → invar_tools-1.4.0}/docs/history/feedback/compliance-analysis.md +0 -0
- {invar_tools-1.3.2 → invar_tools-1.4.0}/docs/history/feedback/feedback-memo.md +0 -0
- {invar_tools-1.3.2 → invar_tools-1.4.0}/docs/history/feedback/index.md +0 -0
- {invar_tools-1.3.2 → invar_tools-1.4.0}/docs/history/index.md +0 -0
- {invar_tools-1.3.2 → invar_tools-1.4.0}/docs/history/original-vision.md +0 -0
- {invar_tools-1.3.2 → invar_tools-1.4.0}/docs/history/protocol-evolution.md +0 -0
- {invar_tools-1.3.2 → invar_tools-1.4.0}/docs/history/research/cruxeval-quick-validation.md +0 -0
- {invar_tools-1.3.2 → invar_tools-1.4.0}/docs/logo.svg +0 -0
- {invar_tools-1.3.2 → invar_tools-1.4.0}/docs/proposals/DX-23-entry-point-detection.md +0 -0
- {invar_tools-1.3.2 → invar_tools-1.4.0}/docs/proposals/DX-25-functional-patterns.md +0 -0
- {invar_tools-1.3.2 → invar_tools-1.4.0}/docs/proposals/DX-29-pure-content-detection.md +0 -0
- {invar_tools-1.3.2 → invar_tools-1.4.0}/docs/proposals/DX-37-coverage-integration.md +0 -0
- {invar_tools-1.3.2 → invar_tools-1.4.0}/docs/proposals/DX-38-contract-quality-rules.md +0 -0
- {invar_tools-1.3.2 → invar_tools-1.4.0}/docs/proposals/DX-39-workflow-efficiency.md +0 -0
- {invar_tools-1.3.2 → invar_tools-1.4.0}/docs/proposals/DX-40-smart-tool-redirect-hook.md +0 -0
- {invar_tools-1.3.2 → invar_tools-1.4.0}/docs/proposals/DX-41-automatic-review-orchestration.md +0 -0
- {invar_tools-1.3.2 → invar_tools-1.4.0}/docs/proposals/DX-42-workflow-auto-routing.md +0 -0
- {invar_tools-1.3.2 → invar_tools-1.4.0}/docs/proposals/DX-43-cross-platform-distribution.md +0 -0
- {invar_tools-1.3.2 → invar_tools-1.4.0}/docs/proposals/DX-46-documentation-audit.md +0 -0
- {invar_tools-1.3.2 → invar_tools-1.4.0}/docs/proposals/DX-48-code-structure-reorganization.md +0 -0
- {invar_tools-1.3.2 → invar_tools-1.4.0}/docs/proposals/DX-49-protocol-distribution-unification.md +0 -0
- {invar_tools-1.3.2 → invar_tools-1.4.0}/docs/proposals/DX-50-workflow-enforcement.md +0 -0
- {invar_tools-1.3.2 → invar_tools-1.4.0}/docs/proposals/DX-51-workflow-phase-visibility.md +0 -0
- {invar_tools-1.3.2 → invar_tools-1.4.0}/docs/proposals/DX-52-venv-dependency-injection.md +0 -0
- {invar_tools-1.3.2 → invar_tools-1.4.0}/docs/proposals/DX-53-review-loop-effectiveness.md +0 -0
- {invar_tools-1.3.2 → invar_tools-1.4.0}/docs/proposals/DX-54-agent-native-context-management.md +0 -0
- {invar_tools-1.3.2 → invar_tools-1.4.0}/docs/proposals/DX-55-claude-init-conflict-resolution.md +0 -0
- {invar_tools-1.3.2 → invar_tools-1.4.0}/docs/proposals/DX-56-template-sync-unification.md +0 -0
- {invar_tools-1.3.2 → invar_tools-1.4.0}/docs/proposals/DX-60-structured-rules-ssot.md +0 -0
- {invar_tools-1.3.2 → invar_tools-1.4.0}/docs/proposals/DX-61-functional-pattern-guidance.md +0 -0
- {invar_tools-1.3.2 → invar_tools-1.4.0}/docs/proposals/LX-01-multi-language-feasibility.md +0 -0
- {invar_tools-1.3.2 → invar_tools-1.4.0}/docs/proposals/completed/2024-12-21-guard-enhancements.md +0 -0
- {invar_tools-1.3.2 → invar_tools-1.4.0}/docs/proposals/completed/2024-12-21-language-inspired-enhancements.md +0 -0
- {invar_tools-1.3.2 → invar_tools-1.4.0}/docs/proposals/completed/2024-12-21-test-first-enhancement.md +0 -0
- {invar_tools-1.3.2 → invar_tools-1.4.0}/docs/proposals/completed/2025-12-21-dx-improvements.md +0 -0
- {invar_tools-1.3.2 → invar_tools-1.4.0}/docs/proposals/completed/2025-12-23-dx-20-property-testing-enhancements.md +0 -0
- {invar_tools-1.3.2 → invar_tools-1.4.0}/docs/proposals/completed/2025-12-23-dx-21-package-and-init.md +0 -0
- {invar_tools-1.3.2 → invar_tools-1.4.0}/docs/proposals/completed/AGENT-IMPROVEMENTS.md +0 -0
- {invar_tools-1.3.2 → invar_tools-1.4.0}/docs/proposals/completed/DX-11-documentation-restructure.md +0 -0
- {invar_tools-1.3.2 → invar_tools-1.4.0}/docs/proposals/completed/DX-12-hypothesis-fallback.md +0 -0
- {invar_tools-1.3.2 → invar_tools-1.4.0}/docs/proposals/completed/DX-13-incremental-prove.md +0 -0
- {invar_tools-1.3.2 → invar_tools-1.4.0}/docs/proposals/completed/DX-14-expanded-prove-usage.md +0 -0
- {invar_tools-1.3.2 → invar_tools-1.4.0}/docs/proposals/completed/DX-16-agent-tool-enforcement.md +0 -0
- {invar_tools-1.3.2 → invar_tools-1.4.0}/docs/proposals/completed/DX-17-workflow-enforcement.md +0 -0
- {invar_tools-1.3.2 → invar_tools-1.4.0}/docs/proposals/completed/DX-22-verification-strategy.md +0 -0
- {invar_tools-1.3.2 → invar_tools-1.4.0}/docs/proposals/completed/DX-24-mechanism-documentation.md +0 -0
- {invar_tools-1.3.2 → invar_tools-1.4.0}/docs/proposals/completed/DX-26-guard-simplification.md +0 -0
- {invar_tools-1.3.2 → invar_tools-1.4.0}/docs/proposals/completed/DX-27-system-prompt-protocol.md +0 -0
- {invar_tools-1.3.2 → invar_tools-1.4.0}/docs/proposals/completed/DX-28-semantic-verification.md +0 -0
- {invar_tools-1.3.2 → invar_tools-1.4.0}/docs/proposals/completed/DX-30-visible-workflow.md +0 -0
- {invar_tools-1.3.2 → invar_tools-1.4.0}/docs/proposals/completed/DX-31-adversarial-reviewer.md +0 -0
- {invar_tools-1.3.2 → invar_tools-1.4.0}/docs/proposals/completed/DX-32-workflow-iteration.md +0 -0
- {invar_tools-1.3.2 → invar_tools-1.4.0}/docs/proposals/completed/DX-33-verification-blind-spots.md +0 -0
- {invar_tools-1.3.2 → invar_tools-1.4.0}/docs/proposals/completed/DX-34-review-cycle.md +0 -0
- {invar_tools-1.3.2 → invar_tools-1.4.0}/docs/proposals/completed/DX-35-workflow-phase-separation.md +0 -0
- {invar_tools-1.3.2 → invar_tools-1.4.0}/docs/proposals/completed/DX-36-documentation-restructuring.md +0 -0
- {invar_tools-1.3.2 → invar_tools-1.4.0}/docs/proposals/completed/DX-45-template-consistency.md +0 -0
- {invar_tools-1.3.2 → invar_tools-1.4.0}/docs/proposals/completed/DX-47-command-skill-naming.md +0 -0
- {invar_tools-1.3.2 → invar_tools-1.4.0}/docs/proposals/completed/DX-57-claude-code-hooks.md +0 -0
- {invar_tools-1.3.2 → invar_tools-1.4.0}/docs/proposals/completed/DX-58-document-structure-optimization.md +0 -0
- {invar_tools-1.3.2 → invar_tools-1.4.0}/docs/proposals/index.md +0 -0
- {invar_tools-1.3.2 → invar_tools-1.4.0}/docs/reference/architecture/index.md +0 -0
- {invar_tools-1.3.2 → invar_tools-1.4.0}/docs/reference/contracts/advanced.md +0 -0
- {invar_tools-1.3.2 → invar_tools-1.4.0}/docs/reference/contracts/completeness.md +0 -0
- {invar_tools-1.3.2 → invar_tools-1.4.0}/docs/reference/contracts/doctests.md +0 -0
- {invar_tools-1.3.2 → invar_tools-1.4.0}/docs/reference/contracts/index.md +0 -0
- {invar_tools-1.3.2 → invar_tools-1.4.0}/docs/reference/contracts/pre-post.md +0 -0
- {invar_tools-1.3.2 → invar_tools-1.4.0}/docs/reference/documentation.md +0 -0
- {invar_tools-1.3.2 → invar_tools-1.4.0}/docs/reference/index.md +0 -0
- {invar_tools-1.3.2 → invar_tools-1.4.0}/docs/reference/proposal-workflow.md +0 -0
- {invar_tools-1.3.2 → invar_tools-1.4.0}/docs/reference/rules/index.md +0 -0
- {invar_tools-1.3.2 → invar_tools-1.4.0}/docs/reference/rules/severity.md +0 -0
- {invar_tools-1.3.2 → invar_tools-1.4.0}/docs/reference/verification/crosshair-vs-hypothesis.md +0 -0
- {invar_tools-1.3.2 → invar_tools-1.4.0}/docs/reference/verification/index.md +0 -0
- {invar_tools-1.3.2 → invar_tools-1.4.0}/docs/reference/verification/smart-routing.md +0 -0
- {invar_tools-1.3.2 → invar_tools-1.4.0}/docs/reference/workflow/index.md +0 -0
- {invar_tools-1.3.2 → invar_tools-1.4.0}/docs/reference/workflow/session-start.md +0 -0
- {invar_tools-1.3.2 → invar_tools-1.4.0}/docs/reference/workflow/usbv.md +0 -0
- {invar_tools-1.3.2 → invar_tools-1.4.0}/docs/terminal-gif-guide.md +0 -0
- {invar_tools-1.3.2 → invar_tools-1.4.0}/docs/test-reports/DX-55-test-report.md +0 -0
- {invar_tools-1.3.2 → invar_tools-1.4.0}/docs/test-reports/DX-56-test-report.md +0 -0
- {invar_tools-1.3.2 → invar_tools-1.4.0}/docs/test-reports/DX-58-test-scenario.md +0 -0
- {invar_tools-1.3.2 → invar_tools-1.4.0}/docs/vision.md +0 -0
- {invar_tools-1.3.2 → invar_tools-1.4.0}/runtime/LICENSE +0 -0
- {invar_tools-1.3.2 → invar_tools-1.4.0}/runtime/pyproject.toml +0 -0
- {invar_tools-1.3.2 → invar_tools-1.4.0}/runtime/src/invar_runtime/__init__.py +0 -0
- {invar_tools-1.3.2 → invar_tools-1.4.0}/runtime/src/invar_runtime/contracts.py +0 -0
- {invar_tools-1.3.2 → invar_tools-1.4.0}/runtime/src/invar_runtime/decorators.py +0 -0
- {invar_tools-1.3.2 → invar_tools-1.4.0}/runtime/src/invar_runtime/invariant.py +0 -0
- {invar_tools-1.3.2 → invar_tools-1.4.0}/runtime/src/invar_runtime/relations.py +0 -0
- {invar_tools-1.3.2 → invar_tools-1.4.0}/runtime/src/invar_runtime/resource.py +0 -0
- {invar_tools-1.3.2 → invar_tools-1.4.0}/scripts/smart-guard.sh +0 -0
- {invar_tools-1.3.2 → invar_tools-1.4.0}/src/invar/__init__.py +0 -0
- {invar_tools-1.3.2 → invar_tools-1.4.0}/src/invar/core/__init__.py +0 -0
- {invar_tools-1.3.2 → invar_tools-1.4.0}/src/invar/core/contracts.py +0 -0
- {invar_tools-1.3.2 → invar_tools-1.4.0}/src/invar/core/entry_points.py +0 -0
- {invar_tools-1.3.2 → invar_tools-1.4.0}/src/invar/core/extraction.py +0 -0
- {invar_tools-1.3.2 → invar_tools-1.4.0}/src/invar/core/format_specs.py +0 -0
- {invar_tools-1.3.2 → invar_tools-1.4.0}/src/invar/core/format_strategies.py +0 -0
- {invar_tools-1.3.2 → invar_tools-1.4.0}/src/invar/core/formatter.py +0 -0
- {invar_tools-1.3.2 → invar_tools-1.4.0}/src/invar/core/hypothesis_strategies.py +0 -0
- {invar_tools-1.3.2 → invar_tools-1.4.0}/src/invar/core/inspect.py +0 -0
- {invar_tools-1.3.2 → invar_tools-1.4.0}/src/invar/core/lambda_helpers.py +0 -0
- {invar_tools-1.3.2 → invar_tools-1.4.0}/src/invar/core/models.py +0 -0
- {invar_tools-1.3.2 → invar_tools-1.4.0}/src/invar/core/must_use.py +0 -0
- {invar_tools-1.3.2 → invar_tools-1.4.0}/src/invar/core/parser.py +0 -0
- {invar_tools-1.3.2 → invar_tools-1.4.0}/src/invar/core/postcondition_scope.py +0 -0
- {invar_tools-1.3.2 → invar_tools-1.4.0}/src/invar/core/property_gen.py +0 -0
- {invar_tools-1.3.2 → invar_tools-1.4.0}/src/invar/core/purity.py +0 -0
- {invar_tools-1.3.2 → invar_tools-1.4.0}/src/invar/core/purity_heuristics.py +0 -0
- {invar_tools-1.3.2 → invar_tools-1.4.0}/src/invar/core/references.py +0 -0
- {invar_tools-1.3.2 → invar_tools-1.4.0}/src/invar/core/review_trigger.py +0 -0
- {invar_tools-1.3.2 → invar_tools-1.4.0}/src/invar/core/rule_meta.py +0 -0
- {invar_tools-1.3.2 → invar_tools-1.4.0}/src/invar/core/rules.py +0 -0
- {invar_tools-1.3.2 → invar_tools-1.4.0}/src/invar/core/shell_analysis.py +0 -0
- {invar_tools-1.3.2 → invar_tools-1.4.0}/src/invar/core/shell_architecture.py +0 -0
- {invar_tools-1.3.2 → invar_tools-1.4.0}/src/invar/core/strategies.py +0 -0
- {invar_tools-1.3.2 → invar_tools-1.4.0}/src/invar/core/suggestions.py +0 -0
- {invar_tools-1.3.2 → invar_tools-1.4.0}/src/invar/core/sync_helpers.py +0 -0
- {invar_tools-1.3.2 → invar_tools-1.4.0}/src/invar/core/tautology.py +0 -0
- {invar_tools-1.3.2 → invar_tools-1.4.0}/src/invar/core/template_parser.py +0 -0
- {invar_tools-1.3.2 → invar_tools-1.4.0}/src/invar/core/timeout_inference.py +0 -0
- {invar_tools-1.3.2 → invar_tools-1.4.0}/src/invar/core/utils.py +0 -0
- {invar_tools-1.3.2 → invar_tools-1.4.0}/src/invar/core/verification_routing.py +0 -0
- {invar_tools-1.3.2 → invar_tools-1.4.0}/src/invar/mcp/__init__.py +0 -0
- {invar_tools-1.3.2 → invar_tools-1.4.0}/src/invar/mcp/__main__.py +0 -0
- {invar_tools-1.3.2 → invar_tools-1.4.0}/src/invar/mcp/server.py +0 -0
- /invar_tools-1.3.2/tests/integration/__init__.py → /invar_tools-1.4.0/src/invar/py.typed +0 -0
- {invar_tools-1.3.2 → invar_tools-1.4.0}/src/invar/shell/__init__.py +0 -0
- {invar_tools-1.3.2 → invar_tools-1.4.0}/src/invar/shell/claude_hooks.py +0 -0
- {invar_tools-1.3.2 → invar_tools-1.4.0}/src/invar/shell/commands/__init__.py +0 -0
- {invar_tools-1.3.2 → invar_tools-1.4.0}/src/invar/shell/commands/guard.py +0 -0
- {invar_tools-1.3.2 → invar_tools-1.4.0}/src/invar/shell/commands/hooks.py +0 -0
- {invar_tools-1.3.2 → invar_tools-1.4.0}/src/invar/shell/commands/init.py +0 -0
- {invar_tools-1.3.2 → invar_tools-1.4.0}/src/invar/shell/commands/merge.py +0 -0
- {invar_tools-1.3.2 → invar_tools-1.4.0}/src/invar/shell/commands/mutate.py +0 -0
- {invar_tools-1.3.2 → invar_tools-1.4.0}/src/invar/shell/commands/perception.py +0 -0
- {invar_tools-1.3.2 → invar_tools-1.4.0}/src/invar/shell/commands/sync_self.py +0 -0
- {invar_tools-1.3.2 → invar_tools-1.4.0}/src/invar/shell/commands/template_sync.py +0 -0
- {invar_tools-1.3.2 → invar_tools-1.4.0}/src/invar/shell/commands/test.py +0 -0
- {invar_tools-1.3.2 → invar_tools-1.4.0}/src/invar/shell/commands/update.py +0 -0
- {invar_tools-1.3.2 → invar_tools-1.4.0}/src/invar/shell/config.py +0 -0
- {invar_tools-1.3.2 → invar_tools-1.4.0}/src/invar/shell/coverage.py +0 -0
- {invar_tools-1.3.2 → invar_tools-1.4.0}/src/invar/shell/fs.py +0 -0
- {invar_tools-1.3.2 → invar_tools-1.4.0}/src/invar/shell/git.py +0 -0
- {invar_tools-1.3.2 → invar_tools-1.4.0}/src/invar/shell/guard_helpers.py +0 -0
- {invar_tools-1.3.2 → invar_tools-1.4.0}/src/invar/shell/guard_output.py +0 -0
- {invar_tools-1.3.2 → invar_tools-1.4.0}/src/invar/shell/mcp_config.py +0 -0
- {invar_tools-1.3.2 → invar_tools-1.4.0}/src/invar/shell/mutation.py +0 -0
- {invar_tools-1.3.2 → invar_tools-1.4.0}/src/invar/shell/property_tests.py +0 -0
- {invar_tools-1.3.2 → invar_tools-1.4.0}/src/invar/shell/prove/__init__.py +0 -0
- {invar_tools-1.3.2 → invar_tools-1.4.0}/src/invar/shell/prove/accept.py +0 -0
- {invar_tools-1.3.2 → invar_tools-1.4.0}/src/invar/shell/prove/cache.py +0 -0
- {invar_tools-1.3.2 → invar_tools-1.4.0}/src/invar/shell/prove/crosshair.py +0 -0
- {invar_tools-1.3.2 → invar_tools-1.4.0}/src/invar/shell/prove/hypothesis.py +0 -0
- {invar_tools-1.3.2 → invar_tools-1.4.0}/src/invar/shell/subprocess_env.py +0 -0
- {invar_tools-1.3.2 → invar_tools-1.4.0}/src/invar/shell/template_engine.py +0 -0
- {invar_tools-1.3.2 → invar_tools-1.4.0}/src/invar/shell/testing.py +0 -0
- {invar_tools-1.3.2 → invar_tools-1.4.0}/src/invar/templates/CLAUDE.md.template +0 -0
- {invar_tools-1.3.2 → invar_tools-1.4.0}/src/invar/templates/__init__.py +0 -0
- {invar_tools-1.3.2 → invar_tools-1.4.0}/src/invar/templates/aider.conf.yml.template +0 -0
- {invar_tools-1.3.2 → invar_tools-1.4.0}/src/invar/templates/commands/audit.md +0 -0
- {invar_tools-1.3.2 → invar_tools-1.4.0}/src/invar/templates/commands/guard.md +0 -0
- {invar_tools-1.3.2 → invar_tools-1.4.0}/src/invar/templates/config/CLAUDE.md.jinja +0 -0
- {invar_tools-1.3.2 → invar_tools-1.4.0}/src/invar/templates/config/context.md.jinja +0 -0
- {invar_tools-1.3.2 → invar_tools-1.4.0}/src/invar/templates/config/pre-commit.yaml.jinja +0 -0
- {invar_tools-1.3.2 → invar_tools-1.4.0}/src/invar/templates/context.md.template +0 -0
- {invar_tools-1.3.2 → invar_tools-1.4.0}/src/invar/templates/cursorrules.template +0 -0
- {invar_tools-1.3.2 → invar_tools-1.4.0}/src/invar/templates/examples/README.md +0 -0
- {invar_tools-1.3.2 → invar_tools-1.4.0}/src/invar/templates/examples/conftest.py +0 -0
- {invar_tools-1.3.2 → invar_tools-1.4.0}/src/invar/templates/examples/contracts.py +0 -0
- {invar_tools-1.3.2 → invar_tools-1.4.0}/src/invar/templates/examples/core_shell.py +0 -0
- {invar_tools-1.3.2 → invar_tools-1.4.0}/src/invar/templates/examples/workflow.md +0 -0
- {invar_tools-1.3.2 → invar_tools-1.4.0}/src/invar/templates/hooks/PostToolUse.sh.jinja +0 -0
- {invar_tools-1.3.2 → invar_tools-1.4.0}/src/invar/templates/hooks/PreToolUse.sh.jinja +0 -0
- {invar_tools-1.3.2 → invar_tools-1.4.0}/src/invar/templates/hooks/Stop.sh.jinja +0 -0
- {invar_tools-1.3.2 → invar_tools-1.4.0}/src/invar/templates/hooks/UserPromptSubmit.sh.jinja +0 -0
- {invar_tools-1.3.2 → invar_tools-1.4.0}/src/invar/templates/hooks/__init__.py +0 -0
- {invar_tools-1.3.2 → invar_tools-1.4.0}/src/invar/templates/manifest.toml +0 -0
- {invar_tools-1.3.2 → invar_tools-1.4.0}/src/invar/templates/pre-commit-config.yaml.template +0 -0
- {invar_tools-1.3.2 → invar_tools-1.4.0}/src/invar/templates/proposal.md.template +0 -0
- {invar_tools-1.3.2 → invar_tools-1.4.0}/src/invar/templates/protocol/INVAR.md +0 -0
- {invar_tools-1.3.2 → invar_tools-1.4.0}/src/invar/templates/skills/develop/SKILL.md.jinja +0 -0
- {invar_tools-1.3.2 → invar_tools-1.4.0}/src/invar/templates/skills/investigate/SKILL.md.jinja +0 -0
- {invar_tools-1.3.2 → invar_tools-1.4.0}/src/invar/templates/skills/propose/SKILL.md.jinja +0 -0
- {invar_tools-1.3.2 → invar_tools-1.4.0}/src/invar/templates/skills/review/SKILL.md.jinja +0 -0
- {invar_tools-1.3.2 → invar_tools-1.4.0}/tests/__init__.py +0 -0
- {invar_tools-1.3.2 → invar_tools-1.4.0}/tests/conftest.py +0 -0
- {invar_tools-1.3.2 → invar_tools-1.4.0}/tests/integration/test_cli_flags.py +0 -0
- {invar_tools-1.3.2 → invar_tools-1.4.0}/tests/integration/test_dx55_regression.py +0 -0
- {invar_tools-1.3.2 → invar_tools-1.4.0}/tests/integration/test_dx56_sync.py +0 -0
- {invar_tools-1.3.2 → invar_tools-1.4.0}/tests/test_subprocess_env.py +0 -0
- {invar_tools-1.3.2 → invar_tools-1.4.0}/uv.lock +0 -0
|
@@ -59,30 +59,3 @@ jobs:
|
|
|
59
59
|
skip-existing: true
|
|
60
60
|
# Uses trusted publishing - configure at pypi.org/manage/project/invar-tools/settings/publishing/
|
|
61
61
|
|
|
62
|
-
publish-deprecated:
|
|
63
|
-
name: Publish python-invar (deprecated)
|
|
64
|
-
runs-on: ubuntu-latest
|
|
65
|
-
needs: publish-tools # Deprecated package depends on invar-tools
|
|
66
|
-
permissions:
|
|
67
|
-
id-token: write # Required for trusted publishing
|
|
68
|
-
|
|
69
|
-
steps:
|
|
70
|
-
- uses: actions/checkout@v4
|
|
71
|
-
|
|
72
|
-
- name: Set up Python
|
|
73
|
-
uses: actions/setup-python@v5
|
|
74
|
-
with:
|
|
75
|
-
python-version: "3.11"
|
|
76
|
-
|
|
77
|
-
- name: Install build tools
|
|
78
|
-
run: pip install build
|
|
79
|
-
|
|
80
|
-
- name: Build python-invar package
|
|
81
|
-
run: python -m build deprecated/python-invar/
|
|
82
|
-
|
|
83
|
-
- name: Publish python-invar to PyPI
|
|
84
|
-
uses: pypa/gh-action-pypi-publish@release/v1
|
|
85
|
-
with:
|
|
86
|
-
packages-dir: deprecated/python-invar/dist/
|
|
87
|
-
skip-existing: true
|
|
88
|
-
# Uses trusted publishing - configure at pypi.org/manage/project/python-invar/settings/publishing/
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: invar-tools
|
|
3
|
-
Version: 1.
|
|
3
|
+
Version: 1.4.0
|
|
4
4
|
Summary: AI-native software engineering tools with design-by-contract verification
|
|
5
5
|
Project-URL: Homepage, https://github.com/tefx/invar
|
|
6
6
|
Project-URL: Documentation, https://github.com/tefx/invar#readme
|
|
@@ -114,38 +114,43 @@ Guard passed.
|
|
|
114
114
|
│ │ └── dependencies = ["invar-runtime"] ← Ships with code │
|
|
115
115
|
│ │ │
|
|
116
116
|
│ └── Development (never enters production) │
|
|
117
|
-
│ └── uvx
|
|
117
|
+
│ └── uvx invar-tools guard ← Guides agents │
|
|
118
118
|
└───────────────────────────────────────────────────────────────────┘
|
|
119
119
|
```
|
|
120
120
|
|
|
121
121
|
| Package | Purpose | Install |
|
|
122
122
|
|---------|---------|---------|
|
|
123
123
|
| **invar-runtime** | Runtime contracts. Add to your project dependencies. | `pip install invar-runtime` |
|
|
124
|
-
| **invar-tools** | Development tools. Guides agents during development. | `uvx
|
|
124
|
+
| **invar-tools** | Development tools. Guides agents during development. | `uvx invar-tools <cmd>` |
|
|
125
125
|
|
|
126
126
|
**Why uvx?** Always uses latest version, doesn't pollute project dependencies, auto-detects your project's venv.
|
|
127
127
|
|
|
128
128
|
### 🆕 New Project
|
|
129
129
|
|
|
130
130
|
```bash
|
|
131
|
-
# 1.
|
|
132
|
-
|
|
131
|
+
# 1. Enter your project directory
|
|
132
|
+
cd your-project
|
|
133
133
|
|
|
134
|
-
# 2.
|
|
134
|
+
# 2. Initialize with Claude Code (full experience)
|
|
135
|
+
uvx invar-tools init --claude
|
|
136
|
+
|
|
137
|
+
# 3. Add runtime contracts to your project
|
|
135
138
|
pip install invar-runtime
|
|
136
139
|
# Or add to pyproject.toml: dependencies = ["invar-runtime"]
|
|
137
140
|
|
|
138
|
-
#
|
|
141
|
+
# 4. Start coding with AI
|
|
139
142
|
```
|
|
140
143
|
|
|
141
144
|
### 📁 Existing Project
|
|
142
145
|
|
|
143
146
|
```bash
|
|
147
|
+
cd your-project
|
|
148
|
+
|
|
144
149
|
# Update managed files, preserve your customizations
|
|
145
|
-
uvx
|
|
150
|
+
uvx invar-tools init --claude
|
|
146
151
|
|
|
147
152
|
# Or without Claude Code integration
|
|
148
|
-
uvx
|
|
153
|
+
uvx invar-tools init
|
|
149
154
|
```
|
|
150
155
|
|
|
151
156
|
Invar's init is idempotent—safe to run multiple times. It detects existing configuration and updates only managed regions.
|
|
@@ -73,38 +73,43 @@ Guard passed.
|
|
|
73
73
|
│ │ └── dependencies = ["invar-runtime"] ← Ships with code │
|
|
74
74
|
│ │ │
|
|
75
75
|
│ └── Development (never enters production) │
|
|
76
|
-
│ └── uvx
|
|
76
|
+
│ └── uvx invar-tools guard ← Guides agents │
|
|
77
77
|
└───────────────────────────────────────────────────────────────────┘
|
|
78
78
|
```
|
|
79
79
|
|
|
80
80
|
| Package | Purpose | Install |
|
|
81
81
|
|---------|---------|---------|
|
|
82
82
|
| **invar-runtime** | Runtime contracts. Add to your project dependencies. | `pip install invar-runtime` |
|
|
83
|
-
| **invar-tools** | Development tools. Guides agents during development. | `uvx
|
|
83
|
+
| **invar-tools** | Development tools. Guides agents during development. | `uvx invar-tools <cmd>` |
|
|
84
84
|
|
|
85
85
|
**Why uvx?** Always uses latest version, doesn't pollute project dependencies, auto-detects your project's venv.
|
|
86
86
|
|
|
87
87
|
### 🆕 New Project
|
|
88
88
|
|
|
89
89
|
```bash
|
|
90
|
-
# 1.
|
|
91
|
-
|
|
90
|
+
# 1. Enter your project directory
|
|
91
|
+
cd your-project
|
|
92
92
|
|
|
93
|
-
# 2.
|
|
93
|
+
# 2. Initialize with Claude Code (full experience)
|
|
94
|
+
uvx invar-tools init --claude
|
|
95
|
+
|
|
96
|
+
# 3. Add runtime contracts to your project
|
|
94
97
|
pip install invar-runtime
|
|
95
98
|
# Or add to pyproject.toml: dependencies = ["invar-runtime"]
|
|
96
99
|
|
|
97
|
-
#
|
|
100
|
+
# 4. Start coding with AI
|
|
98
101
|
```
|
|
99
102
|
|
|
100
103
|
### 📁 Existing Project
|
|
101
104
|
|
|
102
105
|
```bash
|
|
106
|
+
cd your-project
|
|
107
|
+
|
|
103
108
|
# Update managed files, preserve your customizations
|
|
104
|
-
uvx
|
|
109
|
+
uvx invar-tools init --claude
|
|
105
110
|
|
|
106
111
|
# Or without Claude Code integration
|
|
107
|
-
uvx
|
|
112
|
+
uvx invar-tools init
|
|
108
113
|
```
|
|
109
114
|
|
|
110
115
|
Invar's init is idempotent—safe to run multiple times. It detects existing configuration and updates only managed regions.
|
|
@@ -345,7 +345,7 @@ Invar provides MCP (Model Context Protocol) tools for deeper integration with Cl
|
|
|
345
345
|
### Setup
|
|
346
346
|
|
|
347
347
|
```bash
|
|
348
|
-
uvx
|
|
348
|
+
uvx invar-tools init # Auto-creates .mcp.json at project root
|
|
349
349
|
# or: invar init (if installed globally)
|
|
350
350
|
```
|
|
351
351
|
|
|
@@ -351,7 +351,7 @@ jobs:
|
|
|
351
351
|
# --strict: treat warnings as errors
|
|
352
352
|
```
|
|
353
353
|
|
|
354
|
-
> **Tip:** Use `uvx
|
|
354
|
+
> **Tip:** Use `uvx invar-tools guard` locally to run without installing.
|
|
355
355
|
|
|
356
356
|
---
|
|
357
357
|
|
|
@@ -1012,8 +1012,8 @@ invar-tools (PyPI)
|
|
|
1012
1012
|
|
|
1013
1013
|
```bash
|
|
1014
1014
|
# Recommended: use without installing (always latest)
|
|
1015
|
-
uvx
|
|
1016
|
-
uvx
|
|
1015
|
+
uvx invar-tools guard
|
|
1016
|
+
uvx invar-tools init --claude
|
|
1017
1017
|
|
|
1018
1018
|
# Or install globally
|
|
1019
1019
|
pip install invar-tools
|
|
@@ -1025,7 +1025,7 @@ pip install invar-runtime
|
|
|
1025
1025
|
### `invar init` Behavior
|
|
1026
1026
|
|
|
1027
1027
|
```bash
|
|
1028
|
-
$ uvx
|
|
1028
|
+
$ uvx invar-tools init --claude
|
|
1029
1029
|
|
|
1030
1030
|
✓ Added [tool.invar.guard] to pyproject.toml
|
|
1031
1031
|
✓ Created INVAR.md (Invar Protocol)
|
|
@@ -664,11 +664,11 @@
|
|
|
664
664
|
<p class="subtitle">One command to set up your project</p>
|
|
665
665
|
|
|
666
666
|
<div class="install-command">
|
|
667
|
-
<code>uvx
|
|
667
|
+
<code>cd your-project && uvx invar-tools init --claude</code>
|
|
668
668
|
</div>
|
|
669
669
|
|
|
670
670
|
<p class="install-note">
|
|
671
|
-
|
|
671
|
+
Enter your project directory first. <code>uvx</code> runs tools in an isolated environment.
|
|
672
672
|
Add <code>pip install invar-runtime</code> for runtime contracts.
|
|
673
673
|
</p>
|
|
674
674
|
|
|
@@ -10,7 +10,7 @@ packages = ["src/invar"]
|
|
|
10
10
|
|
|
11
11
|
[project]
|
|
12
12
|
name = "invar-tools"
|
|
13
|
-
version = "1.
|
|
13
|
+
version = "1.4.0"
|
|
14
14
|
description = "AI-native software engineering tools with design-by-contract verification"
|
|
15
15
|
readme = "README.md"
|
|
16
16
|
license = "GPL-3.0-or-later"
|
|
@@ -60,6 +60,7 @@ dev = [
|
|
|
60
60
|
|
|
61
61
|
[project.scripts]
|
|
62
62
|
invar = "invar.shell.commands.guard:app"
|
|
63
|
+
invar-tools = "invar.shell.commands.guard:app"
|
|
63
64
|
|
|
64
65
|
[project.urls]
|
|
65
66
|
Homepage = "https://github.com/tefx/invar"
|
|
@@ -434,7 +434,7 @@ Find your Python path: `python -c "import sys; print(sys.executable)"`
|
|
|
434
434
|
|
|
435
435
|
```bash
|
|
436
436
|
# Recommended: use uvx (no installation needed)
|
|
437
|
-
uvx
|
|
437
|
+
uvx invar-tools guard
|
|
438
438
|
|
|
439
439
|
# Or install globally
|
|
440
440
|
pip install invar-tools
|
|
@@ -449,7 +449,7 @@ Run the MCP server directly:
|
|
|
449
449
|
|
|
450
450
|
```bash
|
|
451
451
|
# Using uvx
|
|
452
|
-
uvx
|
|
452
|
+
uvx invar-tools mcp
|
|
453
453
|
|
|
454
454
|
# Or if installed
|
|
455
455
|
invar mcp
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{invar_tools-1.3.2 → invar_tools-1.4.0}/docs/proposals/DX-41-automatic-review-orchestration.md
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{invar_tools-1.3.2 → invar_tools-1.4.0}/docs/proposals/DX-48-code-structure-reorganization.md
RENAMED
|
File without changes
|
{invar_tools-1.3.2 → invar_tools-1.4.0}/docs/proposals/DX-49-protocol-distribution-unification.md
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{invar_tools-1.3.2 → invar_tools-1.4.0}/docs/proposals/DX-54-agent-native-context-management.md
RENAMED
|
File without changes
|
{invar_tools-1.3.2 → invar_tools-1.4.0}/docs/proposals/DX-55-claude-init-conflict-resolution.md
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{invar_tools-1.3.2 → invar_tools-1.4.0}/docs/proposals/completed/2024-12-21-guard-enhancements.md
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{invar_tools-1.3.2 → invar_tools-1.4.0}/docs/proposals/completed/2025-12-21-dx-improvements.md
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{invar_tools-1.3.2 → invar_tools-1.4.0}/docs/proposals/completed/DX-11-documentation-restructure.md
RENAMED
|
File without changes
|
{invar_tools-1.3.2 → invar_tools-1.4.0}/docs/proposals/completed/DX-12-hypothesis-fallback.md
RENAMED
|
File without changes
|
|
File without changes
|
{invar_tools-1.3.2 → invar_tools-1.4.0}/docs/proposals/completed/DX-14-expanded-prove-usage.md
RENAMED
|
File without changes
|
{invar_tools-1.3.2 → invar_tools-1.4.0}/docs/proposals/completed/DX-16-agent-tool-enforcement.md
RENAMED
|
File without changes
|
{invar_tools-1.3.2 → invar_tools-1.4.0}/docs/proposals/completed/DX-17-workflow-enforcement.md
RENAMED
|
File without changes
|
{invar_tools-1.3.2 → invar_tools-1.4.0}/docs/proposals/completed/DX-22-verification-strategy.md
RENAMED
|
File without changes
|
{invar_tools-1.3.2 → invar_tools-1.4.0}/docs/proposals/completed/DX-24-mechanism-documentation.md
RENAMED
|
File without changes
|
{invar_tools-1.3.2 → invar_tools-1.4.0}/docs/proposals/completed/DX-26-guard-simplification.md
RENAMED
|
File without changes
|
{invar_tools-1.3.2 → invar_tools-1.4.0}/docs/proposals/completed/DX-27-system-prompt-protocol.md
RENAMED
|
File without changes
|
{invar_tools-1.3.2 → invar_tools-1.4.0}/docs/proposals/completed/DX-28-semantic-verification.md
RENAMED
|
File without changes
|
|
File without changes
|
{invar_tools-1.3.2 → invar_tools-1.4.0}/docs/proposals/completed/DX-31-adversarial-reviewer.md
RENAMED
|
File without changes
|
{invar_tools-1.3.2 → invar_tools-1.4.0}/docs/proposals/completed/DX-32-workflow-iteration.md
RENAMED
|
File without changes
|
{invar_tools-1.3.2 → invar_tools-1.4.0}/docs/proposals/completed/DX-33-verification-blind-spots.md
RENAMED
|
File without changes
|
|
File without changes
|
{invar_tools-1.3.2 → invar_tools-1.4.0}/docs/proposals/completed/DX-35-workflow-phase-separation.md
RENAMED
|
File without changes
|
|
File without changes
|
{invar_tools-1.3.2 → invar_tools-1.4.0}/docs/proposals/completed/DX-45-template-consistency.md
RENAMED
|
File without changes
|
{invar_tools-1.3.2 → invar_tools-1.4.0}/docs/proposals/completed/DX-47-command-skill-naming.md
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{invar_tools-1.3.2 → invar_tools-1.4.0}/docs/reference/verification/crosshair-vs-hypothesis.md
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{invar_tools-1.3.2 → invar_tools-1.4.0}/src/invar/templates/skills/investigate/SKILL.md.jinja
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|