239 lines
10 KiB
Markdown
239 lines
10 KiB
Markdown
# 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 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_STAKES` in `lib.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_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.2.0]: https://git.fromaitochitta.com/open/ai-psychosis/compare/v1.1.0...v1.2.0
|
||
|
||
## [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 test** — `tests/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.sh` → `lib.mjs` (shared library, 22 functions)
|
||
- `session-start.sh` → `session-start.mjs`
|
||
- `prompt-analyzer.sh` → `prompt-analyzer.mjs` (23 regex patterns)
|
||
- `tool-tracker.sh` → `tool-tracker.mjs`
|
||
- `session-end.sh` → `session-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 instructions** — `SKILL.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
|
||
|
||
[1.1.0]: https://git.fromaitochitta.com/open/ai-psychosis/compare/v1.0.0...v1.1.0
|
||
[1.0.0]: https://git.fromaitochitta.com/open/ai-psychosis/compare/v0.4.0...v1.0.0
|
||
[0.4.0]: https://git.fromaitochitta.com/open/ai-psychosis/compare/v0.3.0...v0.4.0
|
||
[0.3.0]: https://git.fromaitochitta.com/open/ai-psychosis/compare/v0.2.0...v0.3.0
|
||
[0.2.0]: https://git.fromaitochitta.com/open/ai-psychosis/compare/v0.1.0...v0.2.0
|
||
[0.1.0]: https://git.fromaitochitta.com/open/ai-psychosis/releases/tag/v0.1.0
|