10 KiB
10 KiB
Changelog
All notable changes to this project will be documented in this file.
1.2.0 — 2026-05-01
Research-paper-driven detector update. Implements operational findings from Anthropic's "How people ask Claude for guidance" Appendix (April 2026).
Added
- User-information detector — three-class signal (
yes_people/yes_digital/no) following the paper's page-11 finding that human contact is the strongest disempowerment signal. ~32 patterns covering therapist/friend/mentor (yes_people), search/AI/forums (yes_digital), and explicit isolation phrases (no). Sticky upward priority. - Validation-seeking detector — separate from
val_flags. Targets reality-testing ("am I crazy?"), pre-committed stance + confirmation, and side-taking pressing. ~12 patterns. - Tier-1 user-info isolation alert — fires per session when
user_info_class === 'no'+ high-stakes domain +turn_count >= 15. - Tier-2 cross-session isolation alert — fires at
SessionStartwhen the last 3 end records all classify asnoin high-stakes domains. BoundedreadRecentEndRecords()tail-scan inlib.mjskeeps this scalable to 50K+ session histories. - 8 new paper-grounded domain patterns —
legal,parenting,health,financial,professional,spirituality,consumer,personal_dev. Total domains 4 → 9. - Pushback re-contextualization (alert) — v1.1.0 only counted; v1.2 adds
the alert with domain awareness:
- Relationship/spirituality: pushback signals validation-pressing — alert.
- Legal/parenting/health/financial/professional: pushback is healthy self-advocacy — no alert.
- Otherwise: conservative default — alert.
- Domain-stakes weighting matrix —
DOMAIN_STAKESinlib.mjs(1.0–1.5). Applied ONLY to new v1.2 alerts (pushback in HIGH_SYCOPHANCY, valseek in HIGH_STAKES). v1.1.0 alert sensitivity is preserved. - Multi-domain support —
state.domain_contextpromoted from string to array. v1.1.0 string records continue to aggregate correctly via shape-coercion inreport-reader.mjs. SKILL.mdupdates — verbatim Score 5 sycophancy phrase + 3 of the 11 guidance criteria (engagement-foster avoidance, confident-verdict caution, speak-frankly principle)./interaction-reportv1.2 sections — per-domain breakdown, user-info distribution, valseek summary, stakes signal aggregation. Backward-compat with v1.0/v1.1 records preserved.- Privacy canary extensions — 5 new canary cases per detector category (yes_people, yes_digital, no, valseek, legal domain).
- Perf budget validated at v1.2 pattern set — sample patterns expanded to ~91+ entries; new wall-clock test exercises tier-2 read at 1000-record sessions.jsonl scale.
- Test count: 126 → 258 cases across 12 files (added
lib.test.mjs,domain-detection.test.mjs,user-info.test.mjs,validation-seeking.test.mjs,stakes-matrix.test.mjs).
Changed
- Pattern count: 41 → ~133 (25 negative + 12 pushback + 4 relationship
- 48 new domains + 32 user-info + 12 valseek).
- End-record schema (v1.2): adds
user_info_class,valseek_count,turn_count.domain_contextis always an array (was string in v1.1). report-reader.mjsdiscriminates v1.0 / v1.1 / v1.2 records via the presence ofuser_info_class. v1.0/v1.1 records degrade gracefully.
Deferred
- Norwegian patterns — moved to v1.3.
1.1.0 — 2026-05-01
Added
- 12 pushback patterns — detects "you're wrong, my way is right"
signals that suggest the user is reinforcing their own position
rather than receiving feedback (e.g.
\b(you'?re|you are) wrong\b,\bdo it my way\b,\b(stop|quit) (arguing|pushing back)\b). - 4 domain-context patterns — flags relational/identity framing
(
\b(my|our) relationship\b,\b(my|our) (purpose|mission|destiny)\b) that, combined with high pushback or validation, signal narrative crystallization risk. - Valence-aware composition — same-invocation valence guard so a healthy correction ("you were wrong, here's why") is not counted as pushback escalation.
/interaction-reportextensions — pushback metrics + domain framing distribution; companionreport-reader.mjsscript handles legacy v1.0.0 records (missingpushback/domain_context) without NaN propagation.- CC0 Constitution citation in
SKILL.mdplus 5-publication research framework (Anthropic, MIT CSAIL, Nature, arXiv, clinical). - Performance budget test —
tests/perf.test.mjsenforces hook timing budget (logic <50ms, total <200ms wall-clock). - Privacy canary extension — pattern-phrase leak canary in
tests/privacy.test.mjsconfirms matched phrases never reach disk. - Test count: 73 → 126 cases across 8 files (added skill-md, perf, interaction-report tests; extended prompt-analyzer, privacy, session-end, session-start).
Changed
- Pattern count: 25 → 41 (25 negative + 12 pushback + 4 domain).
commands/interaction-report.mddocuments v1.0.0 backward compatibility for legacy JSONL records.
Notes
- English-only v1.1.0 — Norwegian/multilingual patterns deferred
to v1.2 (see
ROADMAP.md). - First-mover honesty — domain-precision is "good enough" for v1.1.0; precision tuning planned for v1.2.
1.0.0 — 2026-04-05
Added
- Layer 4: Contemplative references — conditional section in
/interaction-reportwhen flags are elevated (total >= 5 or fatigue >= 2) andlayer4: true. Points to Miracle of Mind by Sadhguru. - Automated test suite — 73 cases using
node:test(zero npm deps): session-start (4), prompt-analyzer (56), tool-tracker (8), session-end (4), privacy canary (1)
Fixed
- Dependency regex
you understand meno longer matches "merging" (added\b)
Changed
- CLAUDE.md testing section updated for automated tests
- Deprecated bash scripts removed (available in git history)
- All "Known gaps" from v0.4.0 resolved
0.4.0 — 2026-04-05
Changed
- All hooks migrated from bash+jq to Node.js — full cross-platform
support (macOS, Linux, Windows)
lib.sh→lib.mjs(shared library, 22 functions)session-start.sh→session-start.mjsprompt-analyzer.sh→prompt-analyzer.mjs(23 regex patterns)tool-tracker.sh→tool-tracker.mjssession-end.sh→session-end.mjs
- hooks.json now invokes
node ...mjsinstead ofbash ...sh - Zero npm dependencies — Node.js stdlib only (
fs,path,os) - Bash scripts deprecated (kept for reference, marked with DEPRECATED)
- Dependencies reduced: bash and jq no longer required
- All documentation updated for Node.js migration
Fixed
- Data path fallback now matches documented path
(
~/.claude/plugins/data/ai-psychosis) .claude/directory added to.gitignore- Private repo path removed from design brief
- CONTRIBUTING.md line reference corrected
- README now links to CONTRIBUTING.md
- plugin.json includes author, license, repository fields
0.3.0 — 2026-04-05
Added
- Layer 3: Interaction reports —
/interaction-reportslash command for aggregated session statistics- Time periods:
weekly(default),monthly,all - Overview: session count, avg duration, tool calls, edit ratio
- Pattern flags: dependency, escalation, fatigue, validation frequency
- Tool usage distribution (top 10)
- Daily activity breakdown
- Trend comparison vs previous period
- Time periods:
commands/interaction-report.md— pure markdown command, no script dependencies (cross-platform: macOS, Linux, Windows)- Layer 3 respects
layer3: true/falsein.claude/ai-psychosis.local.md(opt-in, off by default)
Changed
- README updated with Layer 3 usage instructions
- Platform compatibility expanded: Layer 3 works on Windows
- Version bumped to 0.3.0
0.2.0 — 2026-04-05
Added
- Layer 2: Programmatic pattern detection — four hooks measuring session
time, tool usage, burst patterns, and language flags
session-start.sh— daily session count, late-night detectionprompt-analyzer.sh— dependency, escalation, fatigue, and validation-seeking pattern flags (prompt text never stored)tool-tracker.sh— event logging, edit ratio, burst detection, progressive alerts with cooldownsession-end.sh— session finalization, JSONL record, state cleanup
lib.sh— shared library with thresholds, state management, cooldown logic, and layer configuration- Per-project layer configuration via
.claude/ai-psychosis.local.md require_layer()guard in all hook scripts — layers are opt-in/out- MIT LICENSE file
matcherfield in hooks.json for schema compliance
Changed
- hooks.json now registers 4 events (was 2)
DATA_DIRfallback hardened to~/.claude/data/ai-psychosis- README rewritten with architecture diagram, research background, privacy section, threshold reference tables
- Version bumped to 0.2.0
Removed
periodic-reminder.sh— replaced bytool-tracker.shsession-awareness.sh— replaced bysession-start.sh
0.1.0 — 2026-04-04
Added
- Layer 1: Behavioral instructions —
SKILL.mdwith 5 rules and 5 named patterns (reinforcement loop, scope escalation, narrative crystallization, emotional dependency, session overuse) periodic-reminder.sh— re-injects awareness every 25 tool callssession-awareness.sh— SessionStart context injection- Plugin manifest (
plugin.json) - Design document (
docs/ai-ai-psychosis-brief_1.md)
Known gaps
- No CI pipeline
- Single-user plugin — no multi-user patterns considered