Repository navigation
Releases: wandercom/pact
Releases · wandercom/pact
Release list
Pact v1.3.0
Boundary register: never assume an identifier
- Boundary register (
boundary_register.yaml, formatboundary-register/1, shared with the factory and Constrain) plus per-contractboundary_identifiers. Every cross-boundary identifier (service name, audience, credential, principal, grant/role, table/column, metric type, log field, env/config key, header, claim) must cite file or observation records bound by SHA-256. Verification is mechanical: exactequalvalues with near-miss hints,absentisolation proofs, whole-token matching, stale-digest detection, placeholder refusal, project-root path confinement. pact boundary verify [project]verifies the register and exits non-zero on any error, naming entry, side and reason.pact boundary cite --kind file|observation --path <rel> --value <literal> [--line N] [--command "<cmd>"]produces a verified record as JSON and refuses when the literal is not where the record would claim. Records are produced, never typed.- Contract gate:
validate_all_contracts(used bypact validate, the decomposer and MCP) fails when a contract uses an unregistered boundary (external:names,network_call,database_*/http_*/external_*data-access side effects) or any register entry fails verification. Projects with no cross-boundary usage are unaffected. pact validatenow exits non-zero when the gate fails.- Interview, shaper and contract-author prompts require citing a record or raising an open question; implementer handoffs render the registered literals.
Pact v1.2.0
Pact v1.2.0
Added
- Constrained
pact agent spec-authorandpact agent repaircommands. - Dry-run by default;
--applywrites at most one validated file in v1.2.0. - Agent reports include proposed/applied paths, schema-violation status, and estimated spend fields.
Changed
pact certifynow fails closed when emission compliance tests are missing.PACT_AGENT_ALLOWED_CONTEXTis a bounded reference-only schema.- Forbidden write classes are built in; deprecated
PACT_AGENT_FORBIDDEN_WRITESextras are enforced as denied path prefixes during migration. pact init --specvalidates specs before initializing a project.
Validation
Pact v1.1.0
What changed
- Added typed readiness profiles so operational maturity, security, privacy, compliance, gating, testing, and monitoring are decided before decomposition.
- Added AI-editable
build_spec.yamlsupport throughpact init --spec,pact spec apply, andpact spec show. - Added optional production-readiness artifact packs through
pact production init,pact production status,pact production fingerprint, andpact production validate. - Updated package metadata, README, docs, and
pact.toolslinks for the new canonical site.
Behavior
- Pact remains plan-first by default.
pact runstill stops after decomposition, contracts, and tests unless--implementis explicitly supplied.
v1.0.0 — Codex-native plan-first Pact
Breaking change
pact runandpact daemonare plan-first by default. Existing automation that expects Pact-managed implementation must add--implement.
Highlights
- Native Codex assessment, implementation, integration, structured-output, and shared-session support while preserving Claude Code workflows.
- New
pact reviewgate combining Advocate implementation review with Pact-packaged Simulacrum claim review. - Pact now ships the MIT-licensed Simulacrum runtime and annotated corpus;
pact-simprovides direct access without user-specific home-directory state. - Cross-agent
pact-engineerandsimulacrumskills plus Claude plugin metadata. - Contract reconciliation, clearer coding-agent setup failures, quoted tmux launch boundaries, and collision-resistant project session IDs.
- README, capabilities, Claude guidance, and GitHub Pages documentation updated for v1.
Verification
- 2,194 tests passed; 2 expected skips.
- Ruff static-error checks and both skill package validations passed.
- Clean-room wheel and sdist build/install verified with
pact,pact review, packaged Sim corpus, andpact-sim. - Live Codex structured-output and packaged Sim review smoke tests passed.
v0.14.1 — Fix CI test failures
Fixes
- CI: Skip Gemini backend tests when
google-genaiis not installed (pytest.importorskip) - Tests: Update
test_idempotentto correctly reflect archive-then-rewrite behavior introduced in v0.11.0 (re-runningpact initarchives existing artifacts, not skip-if-exists)
v0.14.0 — Architectural Assessment + Refactors
What's New
pact assess — Architectural Assessment Command
New CLI command that performs mechanical analysis of any Python codebase for structural friction. No LLM required, no project setup needed.
pact assess src/myproject/ # Markdown report
pact assess src/myproject/ --json # Machine-readable outputDetects five categories:
- Hub dependencies — modules with high fan-in (many dependents)
- Shallow modules — interface complexity rivals implementation
- Tight coupling — mutual imports, circular dependency clusters (Tarjan's SCC)
- Scattered logic — same intra-project import in many files
- Test coverage gaps — source modules without test files
Architecture Refactors
- Health policy extraction —
health_policy()consolidates 7 scattered health check sites into a single decision function - Test harness consolidation —
_run_test_subprocess()eliminates 4x duplicated subprocess boilerplate across Python/TS/Rust runners - ResolvedConfig —
resolve_all()pre-computes all config resolution at startup
Documentation
- CAPABILITIES.md — AI-friendly capability inventory with quick selector, decision guide, and per-command details
- README, CLAUDE.md, and docs site updated
Stats
- 2073 tests (48 net new)
- +1767 lines, -169 lines across 16 files
v0.13.1 — Adopt resilience
- Catch Anthropic 500/APIStatusError — skip module, continue
- Catch BudgetExceeded gracefully — save progress, exit cleanly
- Re-run to resume from where you left off
v0.13.0 — TypeScript/Effect-TS Support
Summary
- TypeScript/Effect-TS extraction:
pact adoptnow understands Effect.gen, pipe, Layer, Context.Tag, Data.TaggedError, Schema, plus standard TS functions/classes/interfaces/types --include/--excludeCLI flags: Scope adopt to subdirectories, file lists, or stdin pipes- Resumable adopt: Re-running picks up where it left off — skips modules with existing contracts+tests
- API stall resilience: Stalled modules are skipped instead of crashing the entire run
- Vitest smoke tests: TypeScript projects get Vitest-based smoke test generation
- 42 new tests, 2025+ total passing
Breaking Changes
None.
Install
pip install pact-agents==0.13.0v0.12.0: Kindex Integration
What's New
Optional kindex integration — cross-session context enrichment via the kindex knowledge graph. Degrades gracefully when kindex is not installed.
Features
- First-run prompt: offers to index the codebase during
pact init, saves preference to.kin/config - Context fetch: loads kindex graph context during project initialization
- Artifact publishing: publishes tasks, decomposition trees, decisions, and contracts to kindex after
pact run/pact daemoncompletes - Graceful degradation: all kindex functions are silent no-ops when kindex is unavailable
.kin/config support
auto_index: true # or false to skip
name: my-project # used for context search topicFull Changelog
v0.11.0: Artifact Archival
What's New
Artifact archival — previous project artifacts are automatically preserved when reinitializing.
Features
pact initarchives existing artifacts into.pact/archive/<slug>/before writing fresh templates- Slug derived from file content (task title, YAML name keys)
ProjectManager.load_previous_context()returns most recent archived session's artifactsProjectManager.archive_existing()available for programmatic use- CLI shows archive info and lists previous sessions during init
Changed
init()always writes fresh templates (previously skipped if files existed)- Archives: task.md, sops.md, pact.yaml, design.md, plus generated metadata (tasks.json, TASKS.md, etc.)