v0.6.0: Capture-time guardrails
Scoped constraint injection
New hooks/scope_guard.py (PostToolUse on Edit|Write|NotebookEdit): the moment the agent edits a file covered by a constraint's scope, that constraint is injected into context via additionalContext. Session-start injection briefs the rules once at turn one; this enforces them at the exact moment they are about to matter. Each constraint fires at most once per session (state in .context/scope_guard_state.json). Constraints scoped global never fire here.
Similar-entry surfacing at record time
record_* now compares the new entry against all active entries (word-set Jaccard, threshold configurable via similar_threshold, default 0.30) and returns similar_entries + resolution guidance when existing entries overlap heavily -- catching restatements and contradictions at capture instead of relying on MMR to mitigate duplicates at retrieval. Advisory only: the write always proceeds, and related_to-linked entries are exempt. CLAUDE.md documents the resolution protocol (deprecate restatements, supersede contradictions, link the genuinely distinct).
112 tests passing (9 new, including subprocess tests that exercise the hook end to end).