chore: release v2.1.0 — Reliability + Zero-Friction Install#16
Merged
Conversation
First release in the v2.1 / v2.2 / v3.0 elevation trilogy. Ships: - engram update / doctor / setup — zero-friction install + self-upgrade - engram init --with-hook — one-command init + hook install - First-run hint on stderr (throttled, \$CI-safe, opt-out env) - Bash PostTool parser for auto-reindex (issue #14 half, opt-in via ENGRAM_AUTO_REINDEX=1 until PR #13's --auto-reindex flag becomes authoritative) - Fix issue #11 — AST grammar detection in flattened bundles (@ttessarolo) + LSP socket candidate sync - ESM require() runtime bug fix across doctor/setup (would have silently failed in production; caught by in-process audit, not by CI because vitest provides CommonJS interop) - Windows cross-platform test fix for bash-postool (platform-native path.resolve in expected values, not hard-coded POSIX) See CHANGELOG.md [2.1.0] for full detail + contributor credits. Release artifacts: - package.json version 2.0.2 → 2.1.0 - package-lock.json synced - CHANGELOG [Unreleased] entries rehomed under [2.1.0] — 2026-04-21 Post-merge steps (not in this commit): git tag -a v2.1.0 -m "v2.1.0 Reliability + Zero-Friction Install" git push --tags npm publish gh release create v2.1.0 --generate-notes Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
NickCirv
added a commit
that referenced
this pull request
May 18, 2026
…ject fallback Two coupled changes — the landmine modernization (Task #16) surfaced a real production reliability bug along the way. (1) handleEditOrWrite landmine block now renders the bi-temporal v9 fields when present. Previously every entry was single-line `- <label>` regardless of mistake source, with a footer that incorrectly attributed all mistakes to "bug:/fix: lines in your CLAUDE.md" — which was only true for the legacy session miner, not for git-revert / AST / explicit learn captures. Format when v9 fields are populated: - <appliesTo pattern> then you believed: <original belief> found false: <YYYY-MM-DD> truth now: <fix or revert reference> Legacy single-line format preserved when v9 fields are absent — v3.x mistakes continue to render unchanged. Footer rewritten to accurately list all miner sources: "git-revert pairs, AST mining, agent self-corrections, and explicit `engram learn`". (2) isInsideProject() (src/intercept/context.ts) symlink-aware fallback for non-existent files. When realpathSync(filePath) throws (file doesn't exist yet — common when the Write tool creates a new file, or after a `git revert` deleted the original), the previous fallback `resolve(filePath)` did NOT resolve symlinks. Result: realRoot = '/private/var/folders/...' (symlink resolved) realFile = '/var/folders/...' (symlink unresolved) → prefix mismatch → outside-project → hook silently no-ops This affected production Claude Code sessions on macOS (where /var is a symlink to /private/var) any time the Write tool created a brand-new file in a tempdir. The new fallback realpaths the PARENT directory (which exists for new files) and reattaches the basename, keeping symlink resolution consistent on both sides of the comparison. End-to-end verified — full intercept output now renders BOTH bi-temporal blocks (mistake-guard pre-mortem + engram landmines) for an auto-captured revert mistake. Caught originally during the Phase 1H stress test when git revert HEAD deleted src.ts — the failure mode that surfaced the bug is the same one users hit on fresh Writes. Tests: 1025/1025 still pass. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Release PR — v2.1.0
Bumps engramx from 2.0.2 to 2.1.0. No code changes beyond the version bump,
package-lock.jsonsync, and CHANGELOG header rehoming.Everything else has already landed on main via:
Post-merge checklist (irreversible actions — your hands)
What ships
See CHANGELOG.md §2.1.0 for the full notes. Highlights:
engram setupdrops first-value from 4 commands to 1engram updatewith passive notify, zero telemetryengram doctorwraps component probes + remediation hintsnpm install -guser)Not in this release
🤖 Generated with Claude Code