✨ Added
- Added
session_presencepackage withSessionPresenceManager,InstallResult,
ClaudeCodeWriter,MarkdownRulesWriter,ClaudeCodeHookRegistrar,UpgradeChecker,
SessionPresenceContent, and supporting writer/hook infrastructure. - Added
spec-kitty session-startCLI command (invoked by the Claude CodeSessionStart
hook) that emits an orientation block to stdout when run inside a spec-kitty project.
The command always exits 0 and never blocks a Claude Code session start. spec-kitty initnow callsSessionPresenceManager.install()after saving agent
configuration, writing the orientation block and registering theSessionStarthook for
Claude Code projects automatically.- Added Phase 1 upgrade migration (
3_3_0_session_presence_claude_code) that detects
existing Claude Code projects missing the orientation section orSessionStarthook and
backfills both artefacts onspec-kitty upgrade.
🐛 Fixed
- Work packages can now declare
scope: codebase-wideso cross-cutting/refactor
WPs are exempt fromowned_filesoverlap validation, end-to-end through
finalize-tasks(#1753). Two coupled defects were fixed: (1) the strict
(extra="forbid")WPMetadataparser rejected thescopekey at parse time,
and (2)OwnershipManifest.from_frontmatterhard-codedscope = Noneon its
WPMetadatabranch — the exact pathfinalize-tasksuses — silently dropping
the exemption even when the key parsed. The adapter now propagatesscope, and
acceptance tests assert that narrow WPs claiming the same files still fail
regardless of lane/dependency structure, while a codebase-wide WP is exempt.
Also removed redundant@overloadstubs onfrom_frontmatterthat tripped
strict mypy (overload-cannot-match).
📝 Docs
- AGENTS.md: added "Use Canonical Sources, Never Improvise" guidance and a
ruff/mypy-clean (no disabled checks) code-style rule. tasks-finalizedoctrine prompt: documented ownership-overlap handling for
domain/refactor missions (linearize shared surfaces; declare codebase-wide).