Skip to content

Releases: screenleon/pm-dispatch

v0.7.1 — Release toolchain + hygiene cleanup

Choose a tag to compare

@screenleon screenleon released this 30 Jun 08:27
99910c8

Highlights

Two parallel tracks: (1) complete the /pre-release Layer 2 semantic diff coverage, upgrading the audit report from tracking-hygiene checks to requirement-vs-implementation traceability; (2) clear accumulated P3 guard / test / ops debt from v0.4.0–v0.7.0.

Added

  • /pre-release Layer 2 — semantic diff coverage (CC-430, PR#339). Per-ticket Requirement section (read from BACKLOG.md) is compared against the PR diff via gh api. Outputs a coverage table (Covered / Partial / Gap / N/A) with Confidence and Flag columns. No sub-job dispatch; no GO/NO-GO verdict — judgement stays with the user.

  • pm-write-guard hook: three new allow rules with cross-rule symlink escape prevention (CC-258, PR#342). Added /tmp/<slug>/*.md, docs/spikes/{CC-NNN*,*-scope,*-rfc}.md, and symlink-normalized memory double-canonicalization allow rules. Added ~15 regression tests for cross-rule symlink escape edge cases. Total test count reaches 193.

  • doctor.shinstall-hooks.sh hook-profile parity test (CC-224, PR#341). Added scripts/test-hook-profile.sh asserting that the minimal hook sets listed in both files match exactly, preventing silent drift when a new hook is added to one file but not the other.

  • Shared adapter lib: scripts/lib/model-aliases.sh (CC-420, PR#345). Extracted the model-alias TSV parser shared by the claude, codex, and opencode adapters (~30 duplicate lines eliminated).

  • Shared adapter lib: scripts/lib/timeout-resolve.sh (CC-421, PR#346). Extracted the timeout-precedence resolution logic (brief > adapter default > system default) shared by three adapters and dispatch-post-verify.sh (~15 lines × 4 eliminated).

  • Shared adapter lib: scripts/lib/dispatch-common.sh (CC-422, PR#347). Extracted five shared adapter init helpers (require_brief_file, require_working_dir, load_model_aliases, resolve_timeout, init_run_dir) into a single sourced lib. All three adapters now share one init sequence.

Fixed

  • uninstall.sh blast-radius guard: exact managed-root path rejection (CC-210, PR#340). Added a precise path check to prevent the managed root itself from being deleted during uninstall. Added regression test.

  • test-portable.sh lock contention: FIFO-gated IPC replaces fixed sleep 1.2 (CC-240, PR#344). case_mkdir_lock_contention now uses a FIFO release signal for cross-process synchronization, eliminating CI flakiness on slow runners.

  • Archiver safe-drop: terminal row preserved when body is absent everywhere (CC-285, PR#343). When a terminal row's body section is absent from both BACKLOG.md and BACKLOG-ARCHIVE.md, the archiver now preserves the row and emits a warning instead of silently dropping it. Added regression fixture.


Full changelog: CHANGELOG.md

v0.7.0 — Retrieval-first context + memory substrate

Choose a tag to compare

@screenleon screenleon released this 29 Jun 02:52
6382679

Added

  • pmctl context query --source memory — memory cards are now searchable alongside repo content; context index covers both planes
  • pmctl memory doctor — validates memory card frontmatter, detects stale/superseded/archived cards, reports shard counts
  • pmctl memory shard + pmctl memory rebuild-summary — episode archiving and monthly summary rebuild
  • /mem-recall step 2b — pmctl context query --source memory retrieves related past episodes before reply
  • /mem-distill step 2b — triggers rebuild-summary + shard on distillation
  • pmctl artifacts list — lists dispatch run artifacts with metadata
  • pmctl pre-release audit <milestone-id> — structural pre-release audit: PR refs, CHANGELOG coverage, body residuals, index/body status (Layer 1 + Layer 3 blind-spot declaration)
  • scripts/release-verify.sh Phase 3c — v0.7.0 feature smoke (memory-source · doctor · artifacts · pre-release)

Changed

  • MEMORY.md injection now uses usage-based frecency ranking (Firefox bucket + W-TinyLFU + keyword tier); priority: always pins to top
  • Lifecycle validity gate: stale/superseded memory cards are deprioritised in injection ranking; priority: always bypasses gate
  • Episode summaries use newest-first ordering via pmctl memory rebuild-summary

Fixed

  • install.sh now passes PM_DISPATCH_REPO="$REPO_ROOT" per-call to install-guards.sh, preventing ambient env override from breaking spaced-path and MSYS symlink installs

Full details: CHANGELOG.md § 0.7.0

v0.6.0 — Runtime decoupling, dispatch lifecycle & new skills

Choose a tag to compare

@screenleon screenleon released this 19 Jun 08:08
8f76638

Added

  • /spike — structured feasibility investigations: planner angles → executor fan-out → committed decision file at docs/spikes/<id>.md
  • /research — imports external knowledge as a filtered feasibility list anchored to your project's actual constraints
  • pmctl dispatch run --lifecycle detached + pmctl dispatch wait — dispatch returns immediately; poll for completion separately
  • pmctl gate run persistent overrides — accepted-risk statements persist across gate cycles in .gate-overrides.md
  • pmctl gate verify — verify a gate result independently from outside the gate run
  • docs/sandbox-limitations.md — codex sandbox friction patterns and their workarounds

Changed

  • Executor routing is now data-driven from adapter manifests — runner_kind in adapter.yaml drives router, guard, and install wiring
  • pmctl gate run dispatches an independent subprocess instead of running in the main thread
  • Write-guards consolidated from per-executor scripts into one manifest-driven hook

Removed

  • claude-executor and codex-executor agent files retired — pmctl dispatch run is the sole dispatch path
  • codex danger-full-access mode removed — workspace-write sandbox is the floor

Full details: CHANGELOG.md § 0.6.0

v0.5.0 — local context substrate + memory loop

Choose a tag to compare

@screenleon screenleon released this 13 Jun 14:12
1cc4147

Added

  • pmctl context index/update/query — SQLite-backed repo index for file and symbol retrieval before dispatch
  • pmctl context pack / reuse-scan — assemble context hits into a pack or scan for prior art before writing a brief
  • pmctl task claim/dispatch/status/review — full task lifecycle FSM with durable state records
  • pmctl safe bash — runs a bash command only after it passes the guard check
  • pmctl validate — validates a handover brief from the CLI
  • /discover — scans backlog + milestones, ranks opportunities by (impact × timeliness) / size
  • mem-distill reads the anomaly slice of the event log (failed runs, denied writes) to find recurring patterns worth recording

Changed

  • Brief authoring now requires a pmctl context reuse-scan prior-art pass before writing
  • Executor agents now do fail-fast brief validation as their very first action

Removed

  • Routing-log and tool-trace hooks retired — events.jsonl trace store is the single sink
  • pmctl guard check --profile deprecated alias removed (use --role + --runtime)
  • codex-dispatch.sh compatibility wrapper removed

Full details: CHANGELOG.md § 0.5.0

v0.4.0 — State-first foundation + Review Model

Choose a tag to compare

@screenleon screenleon released this 08 Jun 07:13
93aa8ee

Added

  • pmctl is now the sole writer of Run/Event records — one consistent audit trail
  • pmctl task create/show/list/update — create and manage task state from the CLI
  • pmctl trace tail — query the event log with filters by kind, task, and date range
  • pmctl decision add — record architectural decisions with slug-based projection files
  • scripts/brief-validate.sh — enforces quality rules before dispatch (architecture_impact, self_verify, vague acceptance phrasing)
  • architecture-reviewer reads the conceptual map first, then selectively checks diff for disagreement
  • /pre-impl upgraded to a six-section contract: Intention / Non-goals / Bounded Context / Conceptual Map / Acceptance Metrics / Verification Plan
  • docs/review-model.md — formalizes the four-layer review model ("Relocating Rigor")
  • PM dispatch routing is size-first: Tiny → inline, Small → model:light, Medium/Large → default
  • State store gets bounded-growth rotation with crash-safe staging

Fixed

  • Reviewer write-guard now works cross-project (was bound to the install checkout)
  • Fresh installs no longer silently permission-block reviewer subagents

Full details: CHANGELOG.md § 0.4.0

v0.3.0 — PM runtime spine

Choose a tag to compare

@screenleon screenleon released this 03 Jun 11:14
42772c0

Added

  • pmctl dispatch run — single command to send any brief to any executor
  • install.sh now puts pmctl on PATH; fresh installs no longer fail with "command not found"
  • Claude adapter — codex-as-PM can drive claude-as-executor
  • Reviewer write-guard — restricts reviewer agents to .gate-results/ only (prompt-injection defense)
  • pr-gate --allow-dirty — gate now fails explicitly on dirty worktrees (was silently proceeding)
  • Layer-boundary test suite — core/ must stay declarative; adapters must stay thin
  • Config resolver — pmctl dispatch run owns timeout/model config; adapters receive env vars

Changed

  • Executor routing switched from hardcoded paths to adapter convention (adapters/<name>/dispatch.sh)
  • Concurrent dispatch race fixed: post-verify uses per-run artifact paths instead of overwritable latest.* symlinks

Removed

  • /caveman and /caveman-commit — text compression causes information loss in design discussions

Full details: CHANGELOG.md § 0.3.0

v0.2.0 — Cross-platform ops

Choose a tag to compare

@screenleon screenleon released this 22 May 13:54
2c55650

Added

  • doctor.sh — verifies auth, hooks, paths; prints a remediation step for each failure
  • uninstall.sh — manifest-driven removal of only what install.sh put in place
  • run-all-tests.sh — single command to run all suites and get a pass/fail summary
  • serialize_with_lock() — portable file locking that works on Windows Git Bash (no flock)
  • DECISIONS.md — architecture decision log with ID cross-reference validation
  • pm-schema v1.1/v1.2 — adds Priority, Epic, design/spike enum values to the BACKLOG index

Changed

  • Hook scripts rewritten from Python to pure bash+jq — python3 no longer required
  • lint-frontmatter.sh expanded to full YAML flow-collection validation

Fixed

  • Log row-loss on Windows: flock replaced with cross-platform serialize_with_lock()
  • install.sh copy-mode now diffs src vs dst directly instead of stale manifest hash

Full details: CHANGELOG.md § 0.2.0

v0.1.0 — first public release

Choose a tag to compare

@screenleon screenleon released this 17 May 13:09
72a9405

Added

  • /pr-gate supports --executor codex|claude|auto; reviewers run in parallel with --parallel
  • claude-executor — second executor path that works without the Codex CLI
  • install.sh --profile minimal|full — auto-detects whether to wire codex guard hooks
  • Cross-platform shim library (realpath, mkdir_lock, detect_platform) for Linux / macOS / Windows Git Bash
  • docs/executor-contract.md — abstract interface every executor must satisfy
  • docs/GETTING_STARTED.md + docs/CONCEPTS.md — onboarding docs for new readers
  • Routing-log hook auto-appends one JSONL row per dispatch decision to project history
  • qa-tester now enumerates every new behavioral unit before auditing coverage

Changed

  • Hardcoded install paths replaced with ${PM_DISPATCH_REPO} derived at install time
  • codex-pr-gate.shpr-gate.sh; codex and claude gate paths unified into one command

Full details: CHANGELOG.md § 0.1.0