PactKit

Format follows Keep a Changelog.

2.25.2 — 2026-09-02

Fixed

  • commit-gate counts survive repo addopts interference — the gate parsed pass/fail counts from pytest's terminal summary line, but a repo's addopts = "-q" stacks with the gate's own -q into -qq, where pytest 9 prints no final summary at all: every run parsed as all-zero, and a genuinely red run was misreported as "no tests collected". Counts now come from a --junitxml side channel that verbosity cannot suppress, with the terminal parse as fallback; repo addopts are otherwise fully honored (required flags such as --asyncio-mode=auto keep applying), and a repo that disables the junitxml plugin degrades to terminal parsing instead of locking commits. Failure messages now report the exit code's actual meaning (no tests ran for exit 5, usage error for exit 4, counts unparseable with an addopts hint otherwise), and FAILED/ERROR short-summary lines reach the block message.

2.25.1 — 2026-09-01

Fixed

  • pactkit gate authorize <scope> — the form every gate block message documents — now works (the parser previously accepted only the bare positional pactkit gate <scope>; both forms are valid now).
  • Gate hooks evaluate cd <other-repo> && git push against the target repository's enforcement config instead of the session directory's.
  • commit-gate no longer misfires on docs/meta-only commits.gitignore/.claude/**/.codex/** count as doc-only (repo/agent metadata carries no runtime code and no longer disqualifies the change set from the skip path); the full-suite target falls back from tests/unit/ to tests/ when only a flat layout exists; a zero-collected run reports "no tests collected" instead of implying failures (still RED — the TDD contract is unchanged); No module named pytest from a venv-less fallback interpreter degrades to WARN + allow, matching the missing-binary path (R3 self-lock protection).

2.25.0 — 2026-08-30

Added

  • Protected-branch push gategit push to a protected branch (default main/master) is intercepted across all three channels (PreToolUse, codex hooks.json, git pre-push) and blocked with the sanctioned path, the human bypass (PACTKIT_ALLOW_DIRECT_PUSH=1), and the repo-owner config. Direct commits on protected branches block by default; --no-verify is no longer a free bypass. Audited under push_gate.
  • Tamper guard — agent modification of enforcement artifacts (.git/hooks/**, .pactkit/enforcement/**, .codex/hooks.json, gate registrations in settings.json) is blocked.
  • L1 Hard-Rule Override Protocol — core rules now state that L1 rules are never waivable in conversation; a conflicting user instruction is refused, and editing rules/hooks/config to comply is itself L1 tampering.
  • Stack-aware commit-gate — the gate runs the detected stack's real suite (npm test / go test ./... / mvn|gradle test) instead of forcing pytest onto non-Python repos; doctor probes are stack-aware.
  • Session context hookspactkit gate --hook session-start injects regenerated .pactkit/context.md at session start and after compaction; --hook pre-compact refreshes state as a side effect and never blocks compaction.
  • Spec tampering guard — editing a spec with an active preflight receipt is blocked during Act ("Spec is Law", L1); Plan-phase spec writing is unaffected.
  • Authorization gate — external-effect commands (PR/release/publish/repo operations) block until the user confirms; pactkit gate <scope> opens a short-TTL audited window.
  • Secrets gate — literal credential material in commands blocks by default; env-var indirection (password=$DB_PASS) is exempt.
  • Gate telemetry — gate blocks, authorizations, and Skill invocations feed the run-event stream; pactkit stats reports per-gate block counts, per-command invocation counts, and authorization pairs at project scope.
  • enforcement config section — protected_branches / allow_direct_push / tamper_guard / spec_guard / auth_gate / secrets_gate / auth_ttl_minutes, with safe defaults.

Fixed

  • Git hooks no longer lock out machines without pactkit (PATH probe + WARN instead of exit 127).
  • Audit records no longer persist credentials — command-derived text is redacted before any persistence; pactkit clean scrubs legacy records once.

Changed

  • Direct commits on main/master now block by default (previously: full suite only) — opt out via enforcement.allow_direct_push.

2.24.2 — 2026-08-27

Fixed

  • --format all installs the codex hooks channel (was: only explicit --format codex).

2.24.1 — 2026-08-27

Fixed

  • Enforcement probes resolve the project venv's pytest (pipx-installed CLIs no longer report gates unavailable).

2.24.0 — 2026-08-27

Added

  • Run event streams (append-only, crash-tolerant); pactkit stats friction metrics; gate enforcement completeness reporting (full/degraded/unavailable + pactkit doctor --json enforcement section); Codex native hooks thin registration; authorization audit trail (asked/granted/denied events + pactkit continuation deny); outcome_unknown crash recovery (attempt fences with pid); command manifest v2 reference digests.

2.23.0 — 2026-08-27

Replaces the withdrawn 2.21.0/2.22.0 — both were pulled from PyPI shortly after publication due to serious defects.

Added

  • Spec preflight + native sessions/project-act Phase 0.7 deterministically inlines the Spec's referenced implementation inputs and constraints (with receipts) before any source edit.
  • Progressive PDCA rule loading — the 16 on-demand rules load on trigger instead of always; every rule states its specific trigger and evidence.
  • Unified deployment ownership safety — the manifest-hash ownership proof now covers skills, command prompts, agents, CLAUDE.md and rollback: user-modified files are preserved as .pactkit-new candidates, deletions require manifest proof.
  • Machine-checked prompt-to-CLI consistency — prompts referencing unregistered CLI subcommands now fail CI instead of failing an AI mid-session.
  • Legacy-engine usage counterpactkit doctor surfaces the invocation count that gates the frozen legacy package's deletion.

Fixed

  • Gates fail closed — pip-audit verdicts, coverage blocks, and commit-gate collection failures no longer masquerade as pass.
  • No bricked runs — vanished artifacts fail recoverably (artifact_vanished), corrupt unrelated run files are skipped safely, Windows engine mutations fixed.
  • pactkit.yaml multi-copy sync — syncs from the copy readers actually load; writes are atomic.
  • Prompts off the legacy surface — Act/Plan prompts no longer invoke the deprecated continuation/checkpoint commands.

Removed / Deprecated

  • Preflight guard hook removed (near-zero enforcement value, session noise); the preflight loader stays in full.
  • Legacy workflow engine frozen in pactkit.legacy — deletion candidate, gated on one release cycle of zero explicit invocations.

2.22.0 — 2026-08-24

Added

  • Unified WorkUnit scope derivation for non-standard directory layouts — WorkUnit read/write scope is no longer a hardcoded src/**/tests/** whitelist. A resolve_scope SSoT unions each unit's frozen template floor with project-declared write_scope roots (source_roots/test_roots/docs_roots) and the Spec's Touches, so projects with frontend/src/, backend/, directus-extensions/ layouts no longer block project-act/project-hotfix. Union (not intersection): the Spec (Tier-1) is never clipped by mutable config.

Fixed

  • Completed runs survive legitimate cross-workflow projection evolution — after Plan → Act, project-check/project-done start and pactkit work-unit status <plan-run> no longer crash with invalid_workflow_state. Predecessor lookups scan sibling journals leniently, and finalize-workflow regenerates context.md to the post-completion canonical. Execution reads stay strict, so tampering is still detected.

2.21.0 — 2026-08-24

Added

  • Complete Core-owned lifecycle — all 12 project-* commands now execute as bounded, versioned WorkUnits. Core validates evidence, owns scheduling and journaled completion, and never treats an agent's final response as workflow completion.
  • Resumable Codex integration — the official App Server bridge persists one thread per run, resumes it across processes, constrains model output with schemas, and converts malformed output or lease failures into durable retries.

Changed

  • Act closes the real Story — RED → GREEN, regression, lint, and coverage gates are followed by a crash-recoverable Core transaction that completes canonical Story tasks and regenerates the Sprint Board.
  • Side effects require explicit authorization — commits, pushes, pull requests, tags, publishing, releases, and Sprint orchestration pause before execution until approved.
  • Distributed IDspactkit generate-id replaces the removed sequential next-id command.

Fixed

  • Premature workflow stops — finish guards, persisted attempts, idempotent finalizers, and cross-process thread resume keep interrupted Codex workflows recoverable.
  • Honest host capability reporting — Doctor reports verified Codex resumable capability without hiding weaker hosts; per-host guarantees remain visible.

2.20.0 — 2026-08-22

Added

  • Verified resumable Act checkpoints — Story-scoped continuation records validate Spec, Board, focused tests, regression, and lint evidence across process restarts.

Fixed

  • Adapter-safe rendering and deployment gates — command rendering preserves CLI semantics across hosts and blocks incompatible Core/adapter combinations.

2.19.0 — 2026-08-17

Added

  • Spec Dependency Surface (STORY-slim-143) — every scaffolded Spec now carries a machine-readable ## Dependency Surface table (Depends on / Provides / Touches / Conflict risk). Story ordering and file-level conflict surface become data, not tribal knowledge.
  • pactkit spec-graph (STORY-slim-143) — deterministic story dependency DAG: topological execution waves (same-wave stories are parallelizable), a file-overlap conflict matrix, cycle detection, and Mermaid output. Stdlib only, zero new dependencies.
  • Sprint Wave Mode (STORY-slim-144) — /project-sprint with no arguments scans the backlog, consumes spec-graph --json, and runs conflict-free same-wave stories as parallel worktree subagents (cap sprint.max_parallel, default 3). Conflicted or under-declared stories serialize safe-by-default; wave N+1 waits for wave N fully merged green. Single-story mode unchanged.
  • Linter rules E010/W011 (STORY-slim-143) — dangling Depends on references block Act; missing Dependency Surface warns.

2.18.0 — 2026-08-17

Added

  • Deployment manifest content hashes (STORY-slim-141) — deploys now record per-file sha256 in .pactkit-deployed.json; pactkit doctor parity check drops to content level, so "version stamp says new, files are old" drift becomes an explicit report. User-editable files (CLAUDE.md, configs) are structurally excluded — zero false positives on your own additions.
  • Adapter version skew warning (STORY-slim-142) — doctor warns when an installed adapter package (e.g. pactkit-opencode) lags behind core, with a pipx inject upgrade hint.

Fixed

  • Preview/test deploys no longer clobber live adapters (STORY-slim-142) — deploy(format="all", target=...) used to invoke adapter deployers with their real home targets, silently overwriting ~/.config/opencode & co. Adapters are now skipped with a notice when -t is given.
  • CI template actions bumped to checkout@v7 / setup-python@v7 — regenerating workflows no longer reverts dependabot updates.

2.17.0 — 2026-08-13

Added

  • pactkit done-verify (STORY-slim-136) — Mechanical archive-honesty gate for /project-done: requirement→test evidence chains, checkbox↔case consistency, zero-caller detection, and Spec/Board/archive status consistency. FAIL blocks archiving.
  • pactkit commit-gate (STORY-slim-138/140) — Pre-commit test gate with skip≠pass transparency. Claude Code PreToolUse hook auto-installs via init/update; non-Claude formats get a git pre-commit fallback automatically. Self-lock protection built in.
  • pactkit deps (STORY-slim-137) — External dependency registry (node/codegraph/gh) with deps check and guided deps install. /project-init Phase 1.5 asks before installing; CLI init only reports.
  • pactkit schema config (STORY-slim-135) — Every pactkit.yaml key with default, effective value, and source.
  • Deployment parity in pactkit doctor (STORY-slim-139) — Deploys write .pactkit-deployed.json; doctor reports cross-format drift explicitly.

Changed

  • Schema-driven pactkit.yaml (STORY-slim-135) — CONFIG_SCHEMA single source; fresh init writes minimal yaml (stack + developer); multi-copy sync with drift detection.
  • Skill deployment manifest (STORY-slim-139) — codex/copilot adapters consume the core manifest; silently dropped skills (garden/audit/report) restored.

Fixed

  • Codex adapter config.toml policy — never modifies an existing file (create-if-absent only) after two wipe incidents.
  • OpenCode global instructions — merged constitution no longer stripped from the always-load layer.

2.16.1 — 2026-07-23

Fixed

  • Bedrock VS Code plugin model compatibility (STORY-slim-134) — Removed model: field from all /project-* command frontmatter. Claude Code was resolving model: sonnet/opus to Anthropic's latest model ID, bypassing ANTHROPIC_DEFAULT_SONNET_MODEL in VS Code plugin environments. Commands now inherit the session default model set by the user's provider env vars.

2.16.0 — 2026-07-13

Added

  • /project-debug command (STORY-slim-133) — Hypothesis-driven troubleshooting skill. Structured loop: Symptom → Hypothesize (≤3) → Verify (executable commands) → Narrow → Root Cause. Enforces evidence-gated file access (no aimless reading) and convergence guarantees (escalates to /project-plan if stuck after 3 iterations). Uses sonnet model with structured protocol.

2.15.2 — 2026-07-02

Changed

  • Codegraph commands decoupled from prompts (STORY-slim-132) — Replaced hardcoded codegraph CLI command lists with runtime codegraph --help discovery. PactKit no longer needs updates when codegraph changes its command signatures.

Fixed

  • Act Phase 0.6 board move command (HOTFIX-slim-132) — Added explicit board.py move_story command template to prevent AI from guessing wrong syntax.
  • Prompt deployer (HOTFIX-slim-131) — Insert @ references after YAML frontmatter so model: field is parsed.
  • Skill frontmatter (HOTFIX-slim-130) — Move @ references below YAML frontmatter in project-* skills.

Refactored

  • Moved large rules from @inject to on-demand Read to reduce initial context size.

2.15.1 — 2026-06-10

Added

  • Engineering Concerns guide system (STORY-slim-128) — On-demand NFR guide loading via trigger index. Plan Phase scans requirement keywords and includes NFR decisions in Spec; Act Phase loads matched guides (1-3 max). 13 initial concerns covering concurrency, async, database, caching, API integration, events, resilience, memory, observability, configuration, module design, code-review-first, and component-reuse.
  • 6 additional engineering guides (STORY-slim-129) — error-recovery, data-consistency, backwards-compatibility, performance-antipatterns, graceful-shutdown, testing-strategy. Total: 19 guides.
  • lint optional dependency grouppip install pactkit[lint] includes ruff.

Fixed

  • Spec linter accepts heading format for Security Scope entries.
  • CI tree-sitter tests skip gracefully when not installed.

2.14.2 — 2026-06-01

Added

  • Managed-block update for project CLAUDE.md (STORY-slim-127) — pactkit update now uses <!-- pactkit:start --> / <!-- pactkit:end --> markers. User content outside the managed block is preserved across updates.
  • Codegraph sync enforcement via code (STORY-slim-126) — pactkit visualize --lazy and pactkit sync now run codegraph sync automatically when .codegraph/ exists.
  • Codegraph priority in generated CLAUDE.md — Projects with .codegraph/ get a "Code Intelligence" section instructing AI to prefer codegraph over grep/find.

Changed

  • MCP strategy trimmed to Context7 + Memory — Removed Playwright, Chrome DevTools, Draw.io, and shadcn from MCP recommendations. Less noise, same value.
  • Config backfill removedpactkit update no longer writes default sections back into pactkit.yaml. Absent keys = accept default.

Fixed

  • Stale rule warnings — Removed obsolete rule names from .opencode/pactkit.yaml.

2.14.0 — 2026-05-26

Added

  • Codegraph integration (STORY-slim-124) — pactkit query now reads from .codegraph/codegraph.db (generated by @colbymchenry/codegraph) when visualize.graph_provider: codegraph is configured. Provides 2.6x more edges than pactkit's own suffix-match resolution, with qualified names, line numbers, and type-aware resolution.
  • Auto-init codegraph — When graph_provider: codegraph is set and .codegraph/codegraph.db is missing, pactkit query auto-runs codegraph init -i if the CLI is on PATH.
  • Graph Query Protocol dual-mode — PDCA commands now support Codegraph Mode (pactkit query + codegraph CLI) and Grep Mode (fallback on .mmd files).
  • Model frontmatter on all PDCA skills (STORY-slim-125) — All 11 command/skill prompts had explicit model: frontmatter added. (Reverted in 2.16.1 — see STORY-slim-134)

Removed

  • _write_sqlite_db() — Pactkit no longer generates its own call_graph.db. The upstream codegraph tool produces a superior graph with tree-sitter + import-aware resolution.
  • visualize.sqlite_output config — Replaced by visualize.graph_provider: codegraph.

Changed

  • pactkit query — Now reads .codegraph/codegraph.db (codegraph schema with hash IDs, JOIN edges+nodes) instead of pactkit's own call_graph.db.
  • PDCA prompts updated — All references to call_graph.db / "SQLite Mode" removed from Plan, Act, Check, Done, Hotfix, and Trace skills.

2.13.0 — 2026-05-07

Added

  • pactkit interface-summary CLI — AST-based interface extraction that physically outputs only signatures, types, and docstrings. Enforces "Code Enforces, Prompt Instructs" for Act Phase 1 layered loading — AI receives truncated content by design.
  • Journey Sync in Act Phase 4 — Conditional step that updates docs/e2e/journey.md when a Story modifies journey-relevant steps. Closes the create→consume→update lifecycle gap.
  • Journey Segment in Plan Phase 3.2a — Conditional Spec annotation that links Stories to journey steps, enabling Act Phase 4 auto-detection.

2.12.0 — 2026-05-06

Changed

  • Rules architecture refactor — Merged 6 global core rules into single pactkit.md; on-demand rules renumbered 01-06 and moved to ~/.claude/skills/_rules/. Reduces context window usage by ~60% per conversation.
  • Auto-deploy on version mismatch — After pipx upgrade pactkit, the next CLI command auto-syncs deployed files without requiring explicit pactkit init.

Fixed

  • Hardcoded paths in deployer_build_command_rules_header() now uses FormatProfile.rules_dir / skills_dir instead of hardcoded ~/.claude/ paths.
  • Stale filename references — Updated cross-references in visualize.py, commands.py, lazy_visualize.py, and test files to match new rule filenames.

2.11.0 — 2026-04-25

Added

  • Lateral Scan — Plan Phase 1 now scans for duplicate patterns before writing Specs. If overlap > 30% with existing implementations, Spec must include R0: Extract shared abstraction or declare tech debt accepted.
  • DEFERRED comment mechanism — When skipping a SHOULD requirement, code must include # DEFERRED(SHOULD): R{N} — reason comment. Coverage table output added to Check phase for tracking deferred items.

Fixed

  • Residual pactkit.yaml version operations — Removed update_version() function and CLI subcommand from board.py, plus all stale references in prompts, agents, and skills docs. Version is now exclusively managed in pyproject.toml + __init__.py with deploy marker at ~/.claude/.pactkit-version.
  • CI tree-sitter deps — Install tree-sitter optional dependencies separately in CI workflow.

2.10.6 — 2026-04-22

Fixed

  • L3 SHOULD semantics — Signal Strength Convention L3 Recommended changed from "Violation = warning, non-blocking" to "Default required — skip only with stated reason" (RFC 2119). Prevents AI from systematically deferring SHOULD tasks.

2.10.5 — 2026-04-21

Added

  • Solution Design Protocol — New rule 12-solution-design.md requires capability delta assessment (framework native + project existing) before implementation. Prevents framework blindness, project blindness, and hardcoded coupling. Includes Implementation Constraints (no magic values, OCP, SRP, dependency direction). Integrated into Plan Phase 1 and Act Phase 1.

Changed

  • Global version tracking — Version tracking moved from project-level pactkit.yaml to global ~/.claude/.pactkit-version marker. Eliminates cross-project desync when PactKit is upgraded via pipx. pactkit update --if-needed now checks the global marker instead of project yaml.

2.10.4 — 2026-04-20

Added

  • Hotfix Impact Check/project-hotfix now includes Phase 0.5 that reads existing .mmd call graph files before fixing. Warns when target function has 3+ callers. Advisory (L3), non-blocking, gracefully skips when no graphs exist.

2.10.3 — 2026-04-20

Fixed

  • Protected parent dirs in pactkit cleanrglob("dist") was matching node_modules/*/dist, destroying npm dependency internals. Added _inside_protected() guard for node_modules/ and .git/; explicit path patterns now use direct matching instead of rglob.
  • CI tree-sitter tests — CI workflow now installs [visualize] extras so Java/TS analyzer tests pass in GitHub Actions.

2.10.2 — 2026-04-20

Added

  • PDCA Nudge Protocol — AI proactively recommends PDCA commands when free conversation yields actionable conclusions. Trigger matrix maps signals to commands; suppression rules prevent noise.
  • Dual-dimension Harness Audit — Audit now scores two dimensions: Config (project + global config, 50pts) and Code (tests, lint, complexity, git hygiene, 50pts). JSON output includes dimensions breakdown field.
  • Unified HTML Report Dashboard — Single report.html with tab switching, D3 force-directed graph, harness score ring, layer bars, and hotspot panel.

Fixed

  • Shared Protocols Context.md reference — Added missing Act Phase 4 to the Context.md Canonical Format "Referenced by" line. Ensures context.md reflects Act progress for session continuity.
  • Semantic version comparison — Version mismatch warning now uses tuple comparison instead of string equality, giving correct upgrade/downgrade direction.
  • Focus call graph empty output — Fixed focus resolution to use LANG_PROFILES[stack].source_dirs instead of hardcoded src/ prefix.

2.9.13 — 2026-04-15

Fixed

  • Slim core dependencies — Moved adapter packages (pactkit-opencode, pactkit-codex) and tree-sitter bindings to [project.optional-dependencies]. Core pip install pactkit now only requires pyyaml. Install extras with pactkit[all], pactkit[visualize], pactkit[opencode], or pactkit[codex].
  • Spec-lint CLI fallback — Playbooks now include python3 -m pactkit spec-lint fallback for environments where pactkit is not on $PATH.
  • Board add_story signature — Plan playbook Phase 3.3 now shows complete add_story invocation with all required arguments.

2.9.12 — 2026-04-02

Added

  • Copilot deployer adapterpactkit-copilot adapter package registered via entry_points. pactkit update --format copilot deploys skills, commands, agents, and copilot-instructions.md to .github/.
  • OCP-compliant rules header dispatch_build_command_rules_header() dispatches on profile.rules_import_style instead of hardcoded profile name checks.
  • Multi-stack auto-detectionpactkit init auto-detects multiple stacks and writes stack: [python, typescript] list syntax to pactkit.yaml.
  • Two-tier module graphvisualize --mode module generates dimension-based subgraphs.
  • Prompt template sync — Canonical prompt templates rendered consistently across all deployer formats.

Fixed

  • OpenCode rules_import_style — Corrected from "instructions" to "inline" to match actual behavior.

2.9.11 — 2026-04-01

Fixed

  • Rules template variables_deploy_rules() now renders {PROJECT_CONFIG_DIR} and other template variables via _render_prompt(). Previously rules were deployed with raw template strings in Codex/OpenCode.
  • Copilot agent YAML corruption — Agent tools: field was iterated char-by-char ([R, e, a, d, ...][Read, Write, ...]).
  • Copilot double annotation(terminal only) (terminal only) reduced to single annotation.
  • Skill CLI refs — All SKILL.md files now pass through _replace_slash_commands().

2.9.10 — 2026-04-01

Fixed

  • Skill script __future__ importload_script() now hoists from __future__ import annotations above _SHARED_HEADER, fixing SyntaxError in deployed spec_linter.py.
  • Lessons table auto-repairappend_lesson() now calls _repair_table_structure() before appending, fixing: missing header, wrong header format, data rows before header.

2.9.9 — 2026-04-01

Added

  • GitHub Copilot adapter support — New copilot FormatProfile. pactkit init --format copilot deploys to project .github/ directory.
  • Dynamic --format CLI choicesinit, update, upgrade commands derive choices from VALID_FORMATS instead of hardcoded list.

Fixed

  • Excluded command strippingstrip_excluded_command_references() strips /project-sprint references from all rendered prompts for formats that exclude it.

2.9.4 — 2026-03-31

Fixed

  • Init playbook DIP violation — Eliminated DETECTED_ENV runtime IDE detection; all hardcoded paths replaced with template variables.
  • Full DIP audit — Fixed hardcoded IDE paths in doctor skill, core-protocol rule, and done command.
  • tree-sitter promoted to core dependency — No longer optional; CI install updated.
  • --focus scan optimization_scan_files now scans only the focused subdirectory, not the full project root.
  • SCAN_EXCLUDES expanded — From 13 to 30+ entries covering Go, Java, Node, IDE, and VCS directories.

2.9.3 — 2026-03-31

Added

  • Multi-language call chain fix (STORY-slim-069) — Dispatch hint comment parsing (pactkit-trace: dispatches_to) and inheritance edge linking extended from Python-only to Go (struct embedding), Java (extends/implements), and TypeScript (class extends) tree-sitter analyzers.
  • CLI visualize args exposed (HOTFIX-slim-070) — --entry, --focus, --reverse, --depth, --max-nodes now reachable from pactkit visualize CLI.

Fixed

  • 4 call chain断链 (STORY-slim-068) — dict.update scan collision, dynamic dispatch hints, abstract method orphan nodes, cross-package stub edges.
  • Nested subgraph call graph (STORY-slim-067) — Fan-in/fan-out analysis with subgraph grouping.
  • Edge dedup + cycle fix (HOTFIX-slim-069) — ×N labels for duplicate edges, false positive cycle detection eliminated.

2.9.2 — 2026-03-30

Fixed

  • FormatProfile.excluded_commandsproject-sprint excluded for OpenCode/Codex (requires subagent team, Claude Code only). Doctor check_config_drift now respects format-level exclusions.
  • Redundant pactkit.yaml component lists — Removed explicit agents/commands/skills/rules lists from .opencode/pactkit.yaml (absence = deploy all).
  • Orphaned spec cleanup — Removed 7 pre-developer-prefix spec files that were already archived.

2.9.1 — 2026-03-30

Added

  • Topology-aware trace — ApiCallParser (tree-sitter-typescript) and AgentParser (LangGraph/YAML/MCP) for multi-topology code tracing. Plan/Act phases now include topology gate.

Fixed

  • Monorepo subdirectory detection — TopologyParser.detect() now scans immediate subdirectories, fixing false negatives for monorepo layouts.
  • Doctor false drift warningscheck_config_drift() now searches global deploy directories instead of only project-local paths.
  • Canonical lessons.md header — Init enforces | Date | Lesson | Context | table header, preventing AI-invented column names.

2.9.0 — 2026-03-28

Added

  • pactkit init deploys all IDEs by default--format all is now the CLI default, deploying Claude Code + OpenCode + Codex configs in one shot. No need to specify --format per IDE.

Fixed

  • Entry_point deployer circular import — Lazy-load entry_point deployers to fix ValueError when running pactkit init via pipx.

2.8.0 — 2026-03-27

Added

  • 3-IDE Default Installpip install pactkit now installs all three IDE adapters (Claude Code + OpenCode + Codex) out of the box.

Fixed

  • OpenCode Command Architecture — Reverted OpenCode from skills-only back to commands/ + skills/ dual architecture. OpenCode auto-discovers commands from commands/*.md, while embedded skills in skills/ are loaded by AI agent on demand.
  • Spec Version Confusion/project-plan no longer reads version from pactkit.yaml (toolkit version). Now explicitly reads from project manifest (pyproject.toml, package.json).

Changed

  • Cross-IDE Command Architecture:
    • Claude Code: skills-only (skills/project-*/SKILL.md), prefix /
    • OpenCode: commands + skills (commands/project-*.md + skills/pactkit-*/SKILL.md), prefix /
    • Codex: skills-only (skills/project-*/SKILL.md), prefix $

2.7.0 — 2026-03-27

Added

  • Commands → Skills Migration (STORY-slim-063) — 11 PDCA commands now deploy as skills/{name}/SKILL.md subdirectories for Claude Code format. VALID_SKILLS expanded from 10 to 21 entries.
  • Legacy Command Cleanup — Auto-removes old project-*.md from commands/ on upgrade.
  • Codex FormatProfile (STORY-slim-060) — Re-added codex profile to core for thin adapter pattern. pactkit-codex published to PyPI.
  • 3-Package Coordinated Release — First simultaneous release across pactkit, pactkit-opencode, and pactkit-codex.

Fixed

  • board.py update_task (HOTFIX-slim-061) — Recognizes bullet-format Done entries.
  • visualize --lazy focus (HOTFIX-slim-062) — Removed hardcoded focus refresh; added stem matching.

Changed

  • Unified deploy summary shows Skills (embedded + commands) count.
  • Cross-format isolation: OpenCode and Codex unaffected by skills migration.

2.6.0 — 2026-03-26

Added

  • DeployerProtocol & DeployerBase (STORY-slim-057) — Extracted deployer interface and shared base class with registry pattern for adapter-based plugin architecture.
  • pactkit-opencode Adapter Package (STORY-slim-058) — Extracted all 8 OpenCode-specific functions into standalone package with entry_points-based auto-registration.
  • Entry Point Auto-Discovery — Scans pactkit.deployers entry_point group at import time for zero-config adapter registration.

Removed

  • Codex Profile (STORY-slim-059) — Removed dead codex FormatProfile and all references. VALID_FORMATS auto-shrinks via FORMAT_PROFILES.keys().
  • OpenCode Functions from Core — 8 functions (~300 lines) moved to pactkit-opencode adapter. deployer.py reduced -17%.

Changed

  • deploy() dispatches via registry instead of if/elif chain. New formats only need register_deployer().

2.5.0 — 2026-03-26

Added

  • E2E CLI Coverage 100% — 60 subprocess-based E2E tests covering all 25 CLI subcommands
  • python -m pactkit — Package now supports module invocation as alternative entry point

Fixed

  • Mermaid Quote Injection — File/function names containing " no longer break .mmd graph rendering
  • O(N×E) Callee Resolution_resolve_callee() uses pre-built suffix index for O(1) lookup
  • Module Index Collision — Same-name files in different directories no longer cause silent node loss
  • Focus Substring False Positives--focus auth.py no longer matches oauth.py
  • BFS O(N²) Pop — All BFS sites now use deque.popleft() instead of list.pop(0)
  • Non-Atomic Writespactkit.yaml, .mmd files, and atomic_write() all use tmp+rename pattern
  • Deployer Encoding — 3 bare read_text() calls now specify encoding='utf-8'
  • Large File OOMMAX_FILE_BYTES=1MB guard prevents OOM on auto-generated mega-files
  • Sprint Redundant Operations — Eliminated duplicate visualize/clean/context runs

2.4.1 — 2026-03-26

Fixed

  • CI Template Overridepactkit update no longer reverts custom ci.install_cmd in pactkit.yaml
  • Board ID Validation — Now supports developer-prefixed IDs (HOTFIX-slim-052, STORY-alice-001)

Added

  • Board move_story Command — Move stories between board sections via CLI
  • Automated PyPI Publish — Tag-triggered CI publishes to PyPI via trusted publisher (OIDC)

Changed

  • Closed-Source Migration — Source repo now private; public entry point at pactkit-public

2.4.0 — 2026-03-25

Added

  • Multi-Architecture Topology Analysispactkit visualize now understands 3 project topologies beyond code structure:
    • PDCA topology — Plan→Act→Check→Done sequence edges in workflow graphs
    • Service topology — Parses docker-compose.yml, openapi.yaml, *.proto for service dependency graphs
    • Frontend topology — Parses Next.js (App/Pages Router), Vue Router for page→component→hook→store chains
    • Cross-topology impact — Regression analysis works across all topology types
    • Unified layered graph — Merges code + topology dimensions into a single visualization

Fixed

  • Topology auto-detection reliability improvements
  • CI dependency configuration for multilang test coverage
  • Spec/PRD cross-reference consistency (4 issues)

2.3.0 — 2026-03-22

Added

  • 25 Deterministic CLI Subcommands — Core operations now run as Python code, not prompts: clean, regression, context, lint, test-map, coverage-gate, doctor, spec-lint, spec-status, and more
  • Coverage Gatepactkit coverage-gate enforces 3-tier thresholds (≥80% PASS, 50-79% WARN, <50% BLOCK)
  • Auto Version Syncpactkit update --if-needed skips redeploy when already current
  • E2E Testing Framework — Config-driven E2E strategy in pactkit.yaml
  • Spec Linter Enhancements — W007 Req-AC coverage, W008 placeholder detection, E007 per-subsection validation

Fixed

  • Plan phase stall on large Spec generation (split into sub-steps)
  • Explore subagent unbounded search (bounded delegation pattern)
  • 25+ cross-flow integrity gaps across CLI and prompt references

2.2.0 — 2026-03-20

Added

  • Context-Aware Rule Loading — Each command loads only the rules it needs, reducing token usage by 20-83%
  • Stack-Aware CI Pipeline — Supports Python, Node.js, Go, and Java with correct setup and test runners
  • GitHub Enterprise (GHE) Supportci.github_host and ci.actions_ref configuration

2.1.0 — 2026-03-17

Added

  • Multi-Format Deployment — Adding a new AI tool format requires only one registry entry; all downstream code auto-adapts
  • Template Variables — 48 hardcoded paths replaced with named placeholders resolved at deploy time
  • Document Schema Registrypactkit schema [type] CLI for document structure rule discovery
  • Lazy Rule Loading — Per-turn system prompt overhead reduced by 62%

Fixed

  • /project-init environment detection improvements
  • Config merge preserves user entries (no more overwrites)

Earlier Releases

  • 1.5.0 — PDCA Quality Gates, Impact-Based Regression, Done/Release/PR command split, Community Standards
  • 1.4.0 — Spec Linter (14 rules), Active Clarify Gate, Pre-Act Consistency Check, Auto-PR
  • 1.3.0 — CI/CD Pipeline Generation, Issue Tracker Integration, Hook Templates, Doctor Diagnostics
  • 1.0.0 — Initial public release. 9 agents, 13 commands, 3 skills, 6 constitution rules

On this page