Skip to content

release: v4.0.0 - #31

Merged
StressTestor merged 1 commit into
mainfrom
release/v4.0.0
Jul 30, 2026
Merged

release: v4.0.0#31
StressTestor merged 1 commit into
mainfrom
release/v4.0.0

Conversation

@StressTestor

Copy link
Copy Markdown
Owner

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 holds
raw vectors that the new formula would read as confidently wrong similarities. search() throws
with an actionable message rather than answering. two ways out:

prism re-embed          # re-embeds and stamps the new geometry

or call backfillVectorGeometry() to normalise in place without re-embedding, which is fast and
does 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:

  • 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

Full 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.

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.
@StressTestor
StressTestor merged commit 12c8ef1 into main Jul 30, 2026
2 checks passed
@StressTestor
StressTestor deleted the release/v4.0.0 branch July 30, 2026 18:10

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 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".

Comment thread CHANGELOG.md
Comment on lines +28 to +33
- `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

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 Badge 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 👍 / 👎.

Comment thread CHANGELOG.md
Comment on lines +56 to +58
- 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

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 Badge 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 👍 / 👎.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant