release: v4.0.0 - #31
Conversation
Rewrites the accumulated [unreleased] entries as one coherent 4.0.0 entry, led by an upgrading section rather than a feature list. The headline for anyone already running pr-prism is not incident-aware ranking, it is that their database refuses to search until it is converted. Corrects text that went stale while the entries accumulated: an entry pointing at "the vector-geometry fix below" when it sits above, star-map PR #11 described as still needing to land after it merged, server/triage.ts described as still hand-rolling metadata after #29 fixed it, and incident-closed PRs described as ranking "as open" after #30 moved them between open and closed. #19 and #27 are both closed. ARCHITECTURE described similarity.ts as "ANN pre-filtering, matryoshka truncation". It contains neither, only cosineSimilarity and isZeroVector. That was already wrong and the ANN path no longer exists at all. Not corrected, deliberately: the README's "594 duplicate clusters on 6K+ items" predates the candidate-limited path (added in v0.8), so it was measured under exact comparison and is accurate again now. The matryoshka benchmark ran on 2000 items, below the old threshold, so it never took the broken path either.
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: ef17034502
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
| - `RepoConfig` gains required `incidents` and `cluster` | ||
| - `WeeklyDigestConfig` loses `similarityThreshold` and `autoClose` (the first is now read per | ||
| repo, the second had no reader) | ||
| - `itemMetadata()` returns a named `ItemMetadata` type instead of `Record<string, unknown>` | ||
| - `VectorStore`'s fourth constructor argument is an options object | ||
| - `statePriority()` ranks four tiers instead of three |
There was a problem hiding this comment.
Correct the purported public API break list
For consumers using the supported npm entry points, most of this list does not describe API changes: package.json exports only . and ./cli, while src/index.ts does not expose RepoConfig, WeeklyDigestConfig, itemMetadata(), or statePriority() (which remains private). itemMetadata() was also newly introduced after 3.1, and adding an optional fourth argument to the previously three-argument VectorStore constructor is backward-compatible. Label these as internal changes and document the actual exported break instead, otherwise library users receive incorrect migration guidance.
Useful? React with 👍 / 👎.
| - one unusable `config.json` no longer aborts the whole installation loop. a repo whose config | ||
| cannot be honoured is skipped loudly and by name; the repos after it in the list still get | ||
| scanned |
There was a problem hiding this comment.
Limit the config-isolation claim to parseable files
This promise does not hold when config.json is malformed or unreadable: loadRepoConfig() catches JSON/read failures and silently returns DEFAULT_REPO_CONFIG, so loadRepoConfigIsolated() only skips loudly for validation errors thrown after a successful parse. In that common failure mode the repo still runs with defaults, potentially ignoring its incident and clustering settings; either narrow this release note to readable-but-invalid configurations or make the loader enforce the stated behavior.
Useful? React with 👍 / 👎.
upgrading
your existing database will refuse to search until you convert it. vectors are now
normalised on write and similarity is derived as
1 - d^2/2, so a store written by 3.x holdsraw vectors that the new formula would read as confidently wrong similarities.
search()throwswith an actionable message rather than answering. two ways out:
or call
backfillVectorGeometry()to normalise in place without re-embedding, which is fast anddoes not touch your provider.
cluster counts change enormously. on a 5285-item corpus at the same 0.85 threshold, 26
clusters became 501. that is the bug below being fixed, not a threshold change. anything
consuming the JSON, or acting on the counts, will see roughly 20x more clusters from the same
input. any cluster count you recorded from 3.x on a corpus of 5000+ items is not comparable.
breaking API changes for anyone importing the library rather than using the CLI:
RepoConfiggains requiredincidentsandclusterWeeklyDigestConfiglosessimilarityThresholdandautoClose(the first is now read perrepo, the second had no reader)
itemMetadata()returns a namedItemMetadatatype instead ofRecord<string, unknown>VectorStore's fourth constructor argument is an options objectstatePriority()ranks four tiers instead of threeFull entry in CHANGELOG.md. Cuts v4.0.0 from v3.1.0: 10 commits, #23 #24 #26 #28 #29 #30 plus the identity-canonical fix and starmap createdAt.
Major rather than minor because an existing install breaks on upgrade until its database is converted, cluster output changes about 20x on the same input, and the exported types moved.
545 tests, lint, typecheck and build clean.