✨ Added
- Added Implementation Concern Map terminology and work-package traceability
across planning artifacts, generated task prompts, validation checks, docs,
ADRs, glossary context, and agent snapshots. - Added tracked Op record storage under
kitty-ops/, including
ops-index.jsonl,lifecycle.jsonl, propagation-error records, best-effort
op(...)auto-commit support, andspec-kitty doctor opsorphan reporting. - Added DocFX publishing polish, all-contributors normalization, and updated
CLI/reference documentation for the 3.2 release candidate line.
🔧 Improved
- Moved Op record storage from gitignored
.kittify/events/profile-invocations/to git-trackedkitty-ops/,
includingops-index.jsonl,lifecycle.jsonl, and propagation errors.
Pre-existing records under.kittify/events/profile-invocations/are
abandoned and not migrated. - Consolidated software-dev template source resolution and rejected stale
template-root environment overrides so runtime fixtures and package defaults
cannot silently diverge. - Tightened release workflow ownership around downstream consumer validation,
release metadata, path filters, and GitHub Pages publishing support.
🐛 Fixed
-
Merge done-marking surface divergence (
merge.py,coordination/surface_resolver.py):
Afterspec-kitty merge, WPs that wereapprovedwould show asCompleted: 0 (80.0%)
instead ofCompleted: 1 (100%)when the mission carried acoordination_branchin
meta.json. Root cause:_mark_wp_merged_donewrote done events to the coordination
branch surface viaBookkeepingTransaction(coord-branch-aware), while
_assert_merged_wps_reached_doneread back from the primary checkout via
resolve_feature_dir_for_mission(topology-unaware). The two functions resolved to
different filesytem paths — write never landed where read looked. Fix: introduced
coordination.surface_resolver.resolve_status_surface(repo_root, mission_slug)as the
single canonical surface resolver;_assert_merged_wps_reached_donenow calls it instead
of the topology-unaware resolver, eliminating the divergence. A full merge-path audit
(inline comment inmerge.py) confirms no other DIVERGENT sites. Parity ratchet added
(four regression tests). Class recurrence of issue
#1589 facet 3.
Closes #1726.
(#1672 parity ratchet) -
Completed Op records are now best-effort auto-committed with
op(...)
commit messages, andspec-kitty doctor opsreports started-only orphan
records. -
spec-kitty merge(without--push) no longer checks or requires origin
sync before performing local lane integration. A local target branch that
is ahead of, behind, or diverged from its remote tracking branch does not
block a local-only merge. This resolves issue #1706 where users with
accumulated orchestration commits on localmaincould not run
spec-kitty mergeuntil they pushed to origin first. -
Push-safety checks now fire only when
--pushis requested. The
"behind"and"diverged"states block before local merge mutation with
remediation guidance, while"ahead"remains push-safe. -
MergeStatenow persistspush_requestedfor correct resume semantics:
a resumed merge respects the original invocation's push intent without
requiring re-specification of--push. -
spec-kitty nextnow preserves query startup latency behavior while runtime
template-source cleanup is in effect.