Skip to content

release: prepare 0.48.1 maintenance patch - #2597

Merged
kunickiaj merged 17 commits into
release/0.48from
release-prep/0.48.1-maintenance
Nov 7, 2026
Merged

kunickiaj merged 17 commits into
release/0.48from
release-prep/0.48.1-maintenance

Conversation

@kunickiaj

@kunickiaj kunickiaj commented Nov 7, 2026 •

Copy link
Copy Markdown
Owner

Description

Prepare 0.48.1 on the 0.48 maintenance line using merged main through #2596. Align all 15 managed package versions and plugin/MCP pins to 0.48.1 so patch support can proceed separately from 0.49 development.

The patch includes durable local/redaction vector repair intent, source checks for vector writes, stale-row exclusion during pending repair, bootstrap queue preservation, capture retry improvements and conflict diagnostics, and the merged sync/device-status fixes.

The unsubmitted vector-job replacement change is excluded from this release candidate.

Type of Change

  • 🚀 Feature (new functionality)
  • 🐛 Bug fix (fixes an issue)
  • 📚 Documentation (docs-only change)
  • 🔧 Maintenance (refactor, chore, CI, etc.)
  • 🧪 Testing (test-only changes)

Testing

  • pnpm run release:version -- check: versions aligned at 0.48.1.

  • pnpm run test:release: 179 tests passed.

  • pnpm run tsc and pnpm run build: passed, including Worker bundle checks.

  • CI=1 pnpm run test:ci: 33,684 tests passed across 1,004 files. The coordinator proof file ran separately with one worker as configured.

  • pnpm --filter codemem test:packed-artifact: passed capture inspection and Team recovery smoke tests.

  • Lint delta and diff checks passed. Pre-commit formatting and ratchet passed.

  • Relevant checks pass locally (pnpm run tsc, pnpm run lint, pnpm run test)

  • Added/updated tests for changes

  • Manually verified changes work as expected

Checklist

  • Code follows project style (pnpm run lint passes for touched files)
  • Self-review completed
  • Documentation updated (if needed)
  • No new warnings introduced

## Description
Reuse failed raw-event flush ranges when new events arrive so retries keep their batch identity and attempt budget. Recheck the preferred range inside SQLite admission to prevent a stale plan from bypassing an existing retry.

Preserve live event ceilings and batch-size limits. Periodic background recovery can retry older oversized ranges intact. Retention-purged ranges do not block later events, and legacy ranges spanning host generations use generation-separated processing without rewriting the old batch row.

## Type of Change
- [ ] 🚀 Feature (new functionality)
- [x] 🐛 Bug fix (fixes an issue)
- [ ] 📚 Documentation (docs-only change)
- [ ] 🔧 Maintenance (refactor, chore, CI, etc.)
- [ ] 🧪 Testing (test-only changes)

## Testing
Node 24.22.2:
- Baseline regressions reproduced range growth resetting attempts and allowing a sixth observer call past the original five-attempt budget.
- 164 tests passed across retry, overlap, completion, outcomes, sweeper, auth recovery, and CLI batching coverage.
- Root TypeScript checks, scoped Biome, lint delta, and diff checks passed.
- Tests cover retention, concurrent admission, expiry, auth refunds, legacy mixed-generation progress, and hard live limits.

- [x] Relevant checks pass locally (`pnpm run tsc`, `pnpm run lint`, `pnpm run test`)
- [x] Added/updated tests for changes
- [ ] Manually verified changes work as expected

## Checklist
- [x] Code follows project style (`pnpm run lint` passes for touched files)
- [x] Self-review completed
- [x] Documentation updated (if needed)
- [x] No new warnings introduced
## Description
Add internal storage APIs for retaining rejected raw-event spool entries with their exact bytes and listing safe metadata. Retained entries stay outside active drain selection and count toward the existing capacity limit.

Publish and sync the retained name before removing the active name. Preserve conflicting copies and the only copy on transition failure. Check duplicate identity before capacity rejection. Keep normal capture compatibility with symlinked spool locations while the new retention/listing APIs require real directories.

Delivery does not call these APIs yet. Operator inspection and explicit recovery will precede automatic rejection classification and queue advancement.

## Type of Change
- [x] 🚀 Feature (new functionality)
- [ ] 🐛 Bug fix (fixes an issue)
- [ ] 📚 Documentation (docs-only change)
- [ ] 🔧 Maintenance (refactor, chore, CI, etc.)
- [ ] 🧪 Testing (test-only changes)

## Testing
- Node 24.22.2: 49 targeted tests passed across retained storage, publish races, delivery, and existing CLI spool tests.
- Full workspace build and packed-artifact smoke passed. Packed smoke passed again after the compatibility correction.
- Scoped Biome, syntax, lint delta, and diff checks passed.
- Bun 1.4.2 on macOS: module import, UTF-8 validation, FileHandle methods, and symlink rejection probe passed.
- Failure injection covers hardlink publication, directory sync, active removal, exact-byte collisions, quotas, duplicates, malformed entries, and symlink compatibility.
- Real process termination, concurrent inode replacement, older Bun versions, and Windows were not exercised locally.

## Checklist
- [x] Relevant checks pass locally
- [x] Added/updated tests for changes
- [x] Code follows project style
- [x] Self-review completed
- [x] Documentation updated
- [x] No new warnings introduced
…ent (#2583)

## Description
Add read-only capture commands for retained OpenCode rejections:
- `capture list-rejected` lists metadata without reading payloads.
- `capture show-rejected <receipt>` validates one selected file and shows metadata.
- Explicit `--raw` returns original text as escaped JSON. Reads are capped at 16 MiB, including files that grow during inspection.

Reject unsafe receipts, symlinks, nonregular files, identity mismatches, and changed files without exposing paths or private content. Bundle the shared source helper into the CLI so installed commands work without the plugin package or source checkout.

These commands do not contact Viewer, open SQLite, modify files, or retry delivery. Explicit recovery will be a separate change.

## Type of Change
- [x] 🚀 Feature (new functionality)
- [ ] 🐛 Bug fix (fixes an issue)
- [ ] 📚 Documentation (docs-only change)
- [ ] 🔧 Maintenance (refactor, chore, CI, etc.)
- [ ] 🧪 Testing (test-only changes)

## Testing
Node 24.22.2:
- 95 targeted tests passed across inspection, retained storage, command registration, and enqueue coverage.
- Root TypeScript checks, full workspace build, lint delta, and diff checks passed.
- Installed-package smoke passed with the plugin package absent and HTTP/SQLite access blocked. It covers metadata, human output, escaped raw output, fixed errors, and unchanged files.
- Tests simulate missing no-follow flags, replacement before reading, same-size edits, file growth, and the read cap. Actual Windows execution was not performed.

- [x] Relevant checks pass locally (`pnpm run tsc`, `pnpm run lint`, `pnpm run test`)
- [x] Added/updated tests for changes
- [ ] Manually verified changes work as expected

## Checklist
- [x] Code follows project style (`pnpm run lint` passes for touched files)
- [x] Self-review completed
- [x] Documentation updated (if needed)
- [x] No new warnings introduced
## Description

Record the actual Direct or Relay transport for sync attempts and expose the latest successful connection through peer sync health. This gives the Devices page connection history without inferring transport from configured addresses.

The history covers syncs started from the local device. Older attempts retain an unknown transport, and a newer successful attempt with unknown transport does not reuse an older known route. An additive compatibility check supports existing databases.

## Type of Change

- [x] 🚀 Feature (new functionality)
- [ ] 🐛 Bug fix (fixes an issue)
- [ ] 📚 Documentation (docs-only change)
- [ ] 🔧 Maintenance (refactor, chore, CI, etc.)
- [ ] 🧪 Testing (test-only changes)

## Testing

- [x] Relevant checks pass locally (`pnpm run tsc`, `pnpm run lint`, `pnpm run test`)
- [x] Added/updated tests for changes
- [ ] Manually verified changes work as expected

336 focused sync and schema tests passed. Coverage includes existing database compatibility, direct and relay recording, unknown transport, failures after success, and timestamp ordering. Workspace typechecks and the scoped Biome ratchet passed.

## Checklist

- [x] Code follows project style (`pnpm run lint` passes for touched files)
- [x] Self-review completed
- [ ] Documentation updated (if needed)
- [x] No new warnings introduced
## Description

Make device sync results easier to scan by showing send and receive status before activity counts. Show the last successful Direct or Relay connection and distinguish a failed latest attempt from earlier successful exchanges.

Move definitions into tooltips that open after 700 ms on hover or immediately on keyboard focus or tap. Remove the explanation block and the unmeasured queue field from Sync details. Keep zero activity distinct from missing data and failed transfers.

## Type of Change

- [ ] 🚀 Feature (new functionality)
- [x] 🐛 Bug fix (fixes an issue)
- [ ] 📚 Documentation (docs-only change)
- [ ] 🔧 Maintenance (refactor, chore, CI, etc.)
- [ ] 🧪 Testing (test-only changes)

## Testing

- [x] Relevant checks pass locally (`pnpm run tsc`, `pnpm run lint`, `pnpm run test`)
- [x] Added/updated tests for changes
- [x] Manually verified changes work as expected

64 focused component and tooltip tests passed. The full UI suite passed independently on this PR with 2,803 tests. UI typechecking and the scoped Biome ratchet passed. The UI production build also passed.

Reviewed synthetic previews in cmux at desktop, 390 px, and 320 px widths. Checked tooltip activation, keyboard focus, and Escape dismissal. The preview does not use live device data.

## Checklist

- [x] Code follows project style (`pnpm run lint` passes for touched files)
- [x] Self-review completed
- [ ] Documentation updated (if needed)
- [x] No new warnings introduced
## Description

Replace the count-only coordinator warning with an action that loads affected devices or Team invitations, recorded reasons, and next steps. Show device names only when an issue reference matches one inventory entry. Keep technical codes and reference IDs in a disclosure.

Name the remote device in manual pairing instructions and explain that pairing requires access to both devices. Hide Identity reassignment controls when no alternative active Identity is available. Name the device serving the viewer so sync results have a clear local reference, and separate the Devices heading from its count with a middle dot.

Update the relay guidance with connection-history semantics, setup issue details, and the current limitation around identifying infrastructure probes.

## Type of Change

- [ ] 🚀 Feature (new functionality)
- [x] 🐛 Bug fix (fixes an issue)
- [ ] 📚 Documentation (docs-only change)
- [ ] 🔧 Maintenance (refactor, chore, CI, etc.)
- [ ] 🧪 Testing (test-only changes)

## Testing

- [x] Relevant checks pass locally (`pnpm run tsc`, `pnpm run lint`, `pnpm run test`)
- [x] Added/updated tests for changes
- [x] Manually verified changes work as expected

211 focused device and setup issue tests passed. The full UI suite also passed with 2,854 tests. Workspace typechecks, the UI production build, and the scoped Biome ratchet passed.

Reviewed the setup issue list, pairing instructions, heading count, and responsive layout in cmux using synthetic data.

## Checklist

- [x] Code follows project style (`pnpm run lint` passes for touched files)
- [x] Self-review completed
- [x] Documentation updated (if needed)
- [x] No new warnings introduced
## Description
Extract the existing persisted vector-work queue into a database-only helper. Preserve its maintenance-job format, revision merging, cleanup metadata, and incremental-sync wrapper and wake behavior.

The shared helper supports local enqueue without clearing failed or cancelled migration diagnostics. Failed jobs retain baseline automatic retry. Cancelled migrations can drain local repairs without resuming full cutover, and sync starts fresh incremental work using the existing cancellation behavior.

## Type of Change
- [ ] 🚀 Feature (new functionality)
- [ ] 🐛 Bug fix (fixes an issue)
- [ ] 📚 Documentation (docs-only change)
- [x] 🔧 Maintenance (refactor, chore, CI, etc.)
- [ ] 🧪 Testing (test-only changes)

## Testing
Node 24.22.2:
- Queue foundation validated independently before applying local integration: 323 tests across six files passed.
- Root typechecks, lint delta, and diff checks passed on current main.
- Full-unit validation passed 593 tests and the workspace build. Integration against updated main passed 646 tests across 15 files.
- Regressions cover transaction rollback, queue metadata compatibility, automatic failed-job retry, cancellation, and sync resumption.

- [x] Relevant checks pass locally (`pnpm run tsc`, `pnpm run lint`, `pnpm run test`)
- [x] Added/updated tests for changes
- [ ] Manually verified changes work as expected

## Checklist
- [x] Code follows project style (`pnpm run lint` passes for touched files)
- [x] Self-review completed
- [ ] Documentation updated (if needed)
- [x] No new warnings introduced
## Description
Record vector repair intent in the same transaction as new memories, ownership-recovery copies, and active imports. Failed embeddings and process shutdown can no longer remove the only record of pending repair. Queue-write errors roll back the content transaction.

Keep immediate post-commit inference and collectors. Persist repair intent when embeddings are disabled, and let the existing maintenance worker drain it after restart or re-enablement. Rollbacks, deduplication, dry runs, inactive imports, and recovery receipt replay avoid unintended queue work.

Pending IDs use the existing per-ID queue representation and accumulate during prolonged disabled mode. A compact representation is tracked separately.

## Type of Change
- [ ] 🚀 Feature (new functionality)
- [x] 🐛 Bug fix (fixes an issue)
- [ ] 📚 Documentation (docs-only change)
- [ ] 🔧 Maintenance (refactor, chore, CI, etc.)
- [ ] 🧪 Testing (test-only changes)

## Testing
Node 24.22.2:
- Baseline tests reproduced a committed memory surviving restart with no durable repair job.
- 646 tests across 15 files passed after integration with current main, including store, import/recovery, ingestion, sync, migration/cutover, raw-event retry, and CLI batching.
- Root typechecks, lint delta, and diff checks passed. Full workspace build passed during unit validation.
- Tests cover restart, disabled/failed inference, nested and savepoint rollbacks, fatal queue-write failure, cancellation, automatic retry, and 5,000 queued IDs.

- [x] Relevant checks pass locally (`pnpm run tsc`, `pnpm run lint`, `pnpm run test`)
- [x] Added/updated tests for changes
- [ ] Manually verified changes work as expected

## Checklist
- [x] Code follows project style (`pnpm run lint` passes for touched files)
- [x] Self-review completed
- [x] Documentation updated (if needed)
- [x] No new warnings introduced
…es (#2589)

## Description
Prevent failed direct-address probes from replacing the last completed sync result while address selection or relay fallback is still running. Completed failures remain visible, including relay pulls that return an unsuccessful result without throwing.

- Make the Viewer’s manual sync action reuse the background daemon’s relay resolver, signing context, and cancellation signals.
- Keep recently observed stable pre-0.48 peers on direct sync unless they explicitly advertise relay support. Expire that observation after 24 hours and keep unknown-version peers eligible.
- Preserve apply errors, access rejections, and independent inbound evidence.
- Avoid recording an overlapping manual retry as a failed exchange.

## Type of Change
- [ ] 🚀 Feature (new functionality)
- [x] 🐛 Bug fix (fixes an issue)
- [ ] 📚 Documentation (docs-only change)
- [ ] 🔧 Maintenance (refactor, chore, CI, etc.)
- [ ] 🧪 Testing (test-only changes)

## Testing
- `pnpm run tsc` passed.
- `pnpm run lint:delta -- --base main --head HEAD` passed for this PR.
- 455 targeted tests passed across 11 files, covering sync, health presentation, manual retry, CLI wiring, and channel failure handling.
- Regression tests cover pending fallback, final pull failures, preserved scoped errors, legacy-peer eligibility, invalid relay configuration, and concurrent retries.
- The full workspace test suite and live two-device verification were not run.

- [x] Relevant checks pass locally (listed above)
- [x] Added/updated tests for changes
- [ ] Manually verified changes work as expected

## Checklist
- [x] Code follows project style (`pnpm run lint` passes for touched files)
- [x] Self-review completed
- [x] Documentation updated (if needed)
- [x] No new warnings introduced
## Description
Persist receiving-side relay failure diagnostics so a sender’s generic `relay_aborted` result can be compared with the receiving device’s failure stage and HTTP error code.

Record only allowlisted admission, handshake, and HTTP stages, relay reason codes, and optional HTTP codes. Store entries in existing local attempt history without a peer identifier, so an independent inbound failure does not replace a device’s outgoing sync health. Persistence is best-effort and diagnostic callback failures cannot interrupt cleanup.

Read the transport’s original error before route-removal cancellation replaces it. This preserves a real HTTP framing error through cleanup. The original trigger of the reported live relay abort remains unconfirmed.

## Type of Change
- [ ] 🚀 Feature (new functionality)
- [x] 🐛 Bug fix (fixes an issue)
- [ ] 📚 Documentation (docs-only change)
- [ ] 🔧 Maintenance (refactor, chore, CI, etc.)
- [ ] 🧪 Testing (test-only changes)

## Testing
- `pnpm run tsc` passed.
- `pnpm run lint:delta -- --base main --head HEAD` passed for the combined changes.
- 573 targeted tests passed across 17 files for the combined changes, including relay client, transport, fault, target, and health tests.
- Real relay fixtures cover admission, handshake, and HTTP failures, sanitized persistence, unchanged peer health, throwing callbacks, and cleanup. A malformed HTTP request reproduces and verifies preservation of `http=framing`.
- The full workspace test suite and live two-device verification were not run.

- [x] Relevant checks pass locally (listed above)
- [x] Added/updated tests for changes
- [ ] Manually verified changes work as expected

## Checklist
- [x] Code follows project style (`pnpm run lint` passes for touched files)
- [x] Self-review completed
- [x] Documentation updated (if needed)
- [x] No new warnings introduced
)

## Description

Add storage primitives for explicit recovery of retained rejected events. Recovery holds a per-event lock, passes the original serialized bytes to a delivery callback, and removes the retained copy only after a strict acknowledgement and an unchanged snapshot check.

Delivery, cleanup, and lock-release outcomes are reported separately so a release failure cannot hide a durable success or replace the original exception. The plugin reference documents lock repair and durability limits.

These primitives are not yet connected to HTTP retry or automatic queue advancement.

## Type of Change

- [x] 🚀 Feature (new functionality)
- [ ] 🐛 Bug fix (fixes an issue)
- [ ] 📚 Documentation (docs-only change)
- [ ] 🔧 Maintenance (refactor, chore, CI, etc.)
- [ ] 🧪 Testing (test-only changes)

## Testing

- After restacking onto main: `pnpm run tsc`, 147 tests across six recovery/delivery/inspection files, and `pnpm lint:delta -- --base main --json` passed.
- Before restacking: full workspace build, packed-artifact smoke, and nine legacy spool tests passed.
- Recovery tests cover competing processes, crashes, acknowledgement rejection, snapshot changes, and filesystem failures.

- [ ] Relevant checks pass locally (`pnpm run tsc`, `pnpm run lint`, `pnpm run test`)
- [x] Added/updated tests for changes
- [x] Manually verified changes work as expected

## Checklist

- [x] Code follows project style (`pnpm run lint` passes for touched files)
- [x] Self-review completed
- [x] Documentation updated (if needed)
- [x] No new warnings introduced
## Description

Reject inline and backfill vector results when the memory source changed during inference. Capture identity before asynchronous client setup and recheck identity plus the current chunk hash at its original index inside the write transaction. Valid peers in a mixed batch still persist.

Metadata-only changes to revision or update time also discard in-flight results. Pending repair work retries until coverage is complete. A replacement copying every persisted identity field remains indistinguishable without a generation marker.

## Type of Change

- [ ] 🚀 Feature (new functionality)
- [x] 🐛 Bug fix (fixes an issue)
- [ ] 📚 Documentation (docs-only change)
- [ ] 🔧 Maintenance (refactor, chore, CI, etc.)
- [ ] 🧪 Testing (test-only changes)

## Testing

- Standalone parent: 187 tests across four vector files passed on Node 24.22.2.
- Integrated change: root typechecks and 338 tests across nine files passed.
- 58 new cases cover legacy/V1 layouts, multi-chunk edits and reordering, deleted/reused IDs, soft deletion, delayed client setup, and late completion after repair.
- Scoped formatting, lint delta and diff checks passed. Independent review found no blocking defects.

- [ ] Relevant checks pass locally (`pnpm run tsc`, `pnpm run lint`, `pnpm run test`)
- [x] Added/updated tests for changes
- [x] Manually verified changes work as expected

## Checklist

- [x] Code follows project style (`pnpm run lint` passes for touched files)
- [x] Self-review completed
- [ ] Documentation updated (if needed)
- [x] No new warnings introduced
## Description

Persist vector repair intent in the same per-memory transaction as title/body redaction and derived-reference updates. A queue failure rolls back that row and its references. Metadata-only changes, dry runs and stale writes do not enqueue repair.

The existing durable queue works without loading a vector extension or inference runtime. Architecture documentation describes redaction intent and source checks for vector writes. Filtering existing stale rows while repair is pending remains separate work.

## Type of Change

- [ ] 🚀 Feature (new functionality)
- [x] 🐛 Bug fix (fixes an issue)
- [ ] 📚 Documentation (docs-only change)
- [ ] 🔧 Maintenance (refactor, chore, CI, etc.)
- [ ] 🧪 Testing (test-only changes)

## Testing

- Root typechecks and 338 tests across nine files passed on Node 24.22.2.
- 11 new redaction cases cover restart durability, refs, queue insert/update failure rollback, stale writes, dry runs, metadata-only changes and operation without inference or vector SQL.
- Scoped formatting, lint delta and diff checks passed. Independent review found no blocking defects.

- [ ] Relevant checks pass locally (`pnpm run tsc`, `pnpm run lint`, `pnpm run test`)
- [x] Added/updated tests for changes
- [x] Manually verified changes work as expected

## Checklist

- [x] Code follows project style (`pnpm run lint` passes for touched files)
- [x] Self-review completed
- [x] Documentation updated (if needed)
- [x] No new warnings introduced
## Description

Add content-free diagnostics for raw-event spool conflicts after delivery failures. Logs identify the comparison branch, reason, and changed field or container names from a fixed allowlist. Unknown differences produce only `other=true`.

The logging boundary independently sanitizes error annotations. Field values, arbitrary payload keys, event IDs, filenames and hashes are omitted. This adds evidence for diagnosing same-ID envelope mismatches. It does not fix the unknown mismatch or change collision protection, stored bytes or retry behavior.

## Type of Change

- [ ] 🚀 Feature (new functionality)
- [x] 🐛 Bug fix (fixes an issue)
- [ ] 📚 Documentation (docs-only change)
- [ ] 🔧 Maintenance (refactor, chore, CI, etc.)
- [ ] 🧪 Testing (test-only changes)

## Testing

- After integration onto current main, Node 24.22.2 root typechecks and 183 tests across six plugin files passed.
- 60 diagnostic tests cover active/rejected/publication conflicts, malformed entries, container changes, hostile annotations, privacy, retained bytes and cached retries.
- Scoped formatting, lint delta and diff checks passed. Initial and delta privacy reviews passed.

- [ ] Relevant checks pass locally (`pnpm run tsc`, `pnpm run lint`, `pnpm run test`)
- [x] Added/updated tests for changes
- [x] Manually verified changes work as expected

## Checklist

- [x] Code follows project style (`pnpm run lint` passes for touched files)
- [x] Self-review completed
- [x] Documentation updated (if needed)
- [x] No new warnings introduced
## Description

Preserve pending vector upsert/delete IDs and their queue revision when sync bootstrap resets migration progress. Read the existing intent and schedule the replacement job in one IMMEDIATE transaction. Fresh bootstrap state does not copy obsolete model, cleanup or error fields.

An older in-flight drain can still overwrite a newly scheduled bootstrap job. That pre-existing replacement race is tracked separately for a job-generation fence.

## Type of Change

- [ ] 🚀 Feature (new functionality)
- [x] 🐛 Bug fix (fixes an issue)
- [ ] 📚 Documentation (docs-only change)
- [ ] 🔧 Maintenance (refactor, chore, CI, etc.)
- [ ] 🧪 Testing (test-only changes)

## Testing

- 19 new tests cover restart persistence, repeated bootstrap, terminal states, totals, transaction rollback, runner coverage/deletion and provider failure.
- Root validation before integration: typechecks and 191 targeted tests passed. After adding runner cases: 83 tests across four migration files passed.
- Integrated stack on current main: root typechecks and 420 tests across 17 files passed.
- Scoped formatting, lint delta and diff checks passed. Independent review passed.

- [ ] Relevant checks pass locally (`pnpm run tsc`, `pnpm run lint`, `pnpm run test`)
- [x] Added/updated tests for changes
- [x] Manually verified changes work as expected

## Checklist

- [x] Code follows project style (`pnpm run lint` passes for touched files)
- [x] Self-review completed
- [x] Documentation updated (if needed)
- [x] No new warnings introduced
## Description

Exclude stale vector rows for memories with pending repair intent before semantic distance calculation. Inline and worker ranking compare current chunk indexes and hashes while retaining fresh matching rows. The source-text lookup reads only authorized pending memories within the ranking snapshot.

An indexed list of current chunk keys is built once per query. Malformed queue metadata returns no semantic candidates. Existing fixtures now use genuine chunk text and hashes. EXPLAIN checks identify the vector cursor without confusing it with JSON table columns, preserving authorization, model and post-LIMIT payload requirements.

## Type of Change

- [ ] 🚀 Feature (new functionality)
- [x] 🐛 Bug fix (fixes an issue)
- [ ] 📚 Documentation (docs-only change)
- [ ] 🔧 Maintenance (refactor, chore, CI, etc.)
- [ ] 🧪 Testing (test-only changes)

## Testing

- 120 new cases cover legacy/V1 layouts, inline/native/scalar/real-worker ranking, stale/current distances, chunk indexes, restart, redaction, malformed metadata and authorization before text reads.
- After the CI fixture correction: the full core suite passed 610 files and 25,469 tests on Node 24.22.2. Root typechecks, lint delta and diff checks passed. The topical pack fixture now hashes its persisted text instead of using a placeholder.
- After integration onto current main: root typechecks and 420 tests across 17 files passed.
- Before integration: 425 tests across 16 files passed. Independent review ran 161 tests and passed.
- Scoped formatting, lint delta and diff checks passed. Numerical vectors, reference SQL and expected ranking scores remain intact in corrected fixtures.

- [ ] Relevant checks pass locally (`pnpm run tsc`, `pnpm run lint`, `pnpm run test`)
- [x] Added/updated tests for changes
- [x] Manually verified changes work as expected

## Checklist

- [x] Code follows project style (`pnpm run lint` passes for touched files)
- [x] Self-review completed
- [x] Documentation updated (if needed)
- [x] No new warnings introduced
@chatgpt-codex-connector

chatgpt-codex-connector Bot commented Nov 7, 2026 •

Copy link
Copy Markdown
Codex Review Summary: ✅ Completed

This comment shows the latest Codex review activity on this pull request.

Review Status Commit Review trigger
📝 Code Review ✅ Completed 2026-11-07T19:54:02.566073Z d799b26 PR opened
ℹ️ 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" or "@codex security review".

Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings.

Copy link
Copy Markdown
Owner Author

This stack of pull requests is managed by Graphite. Learn more about stacking.

@kunickiaj
kunickiaj merged commit 15839be into release/0.48 Nov 7, 2026
15 checks passed
@kunickiaj
kunickiaj deleted the release-prep/0.48.1-maintenance branch November 7, 2026 20:17
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