ktg-plugin-marketplace/plugins/ai-psychosis/CHANGELOG.md
2026-05-01 21:59:40 +02:00

10 KiB
Raw Permalink Blame History

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 SessionStart when the last 3 end records all classify as no in high-stakes domains. Bounded readRecentEndRecords() tail-scan in lib.mjs keeps this scalable to 50K+ session histories.
  • 8 new paper-grounded domain patternslegal, 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 matrixDOMAIN_STAKES in lib.mjs (1.01.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 supportstate.domain_context promoted from string to array. v1.1.0 string records continue to aggregate correctly via shape-coercion in report-reader.mjs.
  • SKILL.md updates — verbatim Score 5 sycophancy phrase + 3 of the 11 guidance criteria (engagement-foster avoidance, confident-verdict caution, speak-frankly principle).
  • /interaction-report v1.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_context is always an array (was string in v1.1).
  • report-reader.mjs discriminates v1.0 / v1.1 / v1.2 records via the presence of user_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-report extensions — pushback metrics + domain framing distribution; companion report-reader.mjs script handles legacy v1.0.0 records (missing pushback/domain_context) without NaN propagation.
  • CC0 Constitution citation in SKILL.md plus 5-publication research framework (Anthropic, MIT CSAIL, Nature, arXiv, clinical).
  • Performance budget testtests/perf.test.mjs enforces hook timing budget (logic <50ms, total <200ms wall-clock).
  • Privacy canary extension — pattern-phrase leak canary in tests/privacy.test.mjs confirms 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.md documents 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-report when flags are elevated (total >= 5 or fatigue >= 2) and layer4: 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 me no 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.shlib.mjs (shared library, 22 functions)
    • session-start.shsession-start.mjs
    • prompt-analyzer.shprompt-analyzer.mjs (23 regex patterns)
    • tool-tracker.shtool-tracker.mjs
    • session-end.shsession-end.mjs
  • hooks.json now invokes node ...mjs instead of bash ...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-report slash 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
  • commands/interaction-report.md — pure markdown command, no script dependencies (cross-platform: macOS, Linux, Windows)
  • Layer 3 respects layer3: true/false in .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 detection
    • prompt-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 cooldown
    • session-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
  • matcher field in hooks.json for schema compliance

Changed

  • hooks.json now registers 4 events (was 2)
  • DATA_DIR fallback 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 by tool-tracker.sh
  • session-awareness.sh — replaced by session-start.sh

0.1.0 — 2026-04-04

Added

  • Layer 1: Behavioral instructionsSKILL.md with 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 calls
  • session-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